C语言 简单的学生成绩管理系统

问题

1. 问题描述
每当考试结束后,老师的一个重要任务就是对学生的成绩进行输入和统计。如果每学期的课程固定,简单的成绩管理系统的开发应该难度不大,但是如果每学期的课程都要变动,每次都要修改源程序是比较麻烦的。
2. 基本功能
(1)实现一个简单的成绩管理系统,主要功能包括,学生成绩的增加、删除、修改、按学号排列显示和按学号查询。
(2)学生成绩主要包含学号、姓名、语文、数学、和英语等字段。
3.扩展功能
(1)增加对学生成绩汇总功能,能实现按总分对学生成绩排序(同分不处理)。能实现学生成绩的存储,将学生成绩保持在外部文件中以方便下次读入和处理。
(2)能实现学生课程的自定义输入,老师只要开始时输入本学期的课程就可实现对各学期不同课程的成绩管理。

源码

#include<stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 100
#define M 10
int k;
int q;
struct student 
{
   
	int num;
	char name[20];
	char sub[M][20];
	int scroe[M];
	int sum; 
	int status;
};

void menu();
int input (struct student stu[],char kc[M][20]);
int add (struct student stu[]);
int delet(struct student stu[]);
int delet1(struct student stu[],int i);
int revise(struct student stu[]);
void menurevise0(); 
void menurevise();
void numrevise(struct student stu[],int t);
void namerevise(struct student stu[]);
void chineserevise(struct student stu[N]);
void mathrevise(struct student stu[N]);
void englishrevise(struct student stu[N]);
int rank(struct student stu[]); 
void menurank();
void xuehaorank(struct student stu[]);
void sumrank(struct student stu[]); 
int find(struct student stu[]);
void menufind(); 
int findnum(struct student stu[]);
int findname(struct student stu[]);

int main(void)
{
   
	FILE *fp;
	if((fp=fopen("0313.txt","w+"))==NULL){
   
		printf("File open error!\n");
		exit(1);
	}
	while (!feof(fp))
	{
   
		int x,k,t,h;
		int m,g,i;
		struct student stu[N];
		struct student *p;
		char kc[M][20];
		printf("=============成绩管理系统================\n");
		fprintf(fp,"=============成绩管理系统=============\n");
		printf("请输入要录入成绩的科目数量:(<10)\n");
		scanf("%d",&m);
		q=m;
		getchar();
		for(h=0;h<m;h++)
		{
   
			printf("请输入第%d门课的名称:\n",h+1);
			gets(kc[h]);
		}
		for(i=0;i<N;i++)
		{
   
			for(h=0;h<q;h++)
			{
   
				strcpy(stu[i].sub[h],kc[h]);
			}
		}
		menu();
		while(1)
		{
   
			scanf("%d",&x);
			switch(x)
			{
   
				case 1:	input(stu,kc);
					menu();					
					break;
				case 2:k=add(stu);	
					menu();
					break;
				case 3:delet(stu);
					menu();
					break;
				case 4:revise(stu);
					menu();
					break;
				case 
  • 6
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值