1、C语言实验报告之成绩管理实验报告成绩管理一、实验内容:实验名称:成绩管理实验目的:设计一个学生成绩管理程序,有插入、删除、显示和统计等功能。实验要求:(1) 设计友好的中文交互界面。(2) 输入一个班的学生多门成绩,存储在文件中。(3) 添加或删除一个学生的成绩。(4) 统计学生的最高成绩,最低成绩,平均分和其它统计信息,并将统计结果写入文件。二、算法说明: S1:宏定义参数N的大小取决于想要储存资料的学生人数,可由编程者修改,此次程序暂定为50.S2:定义一个包含学号、姓名、3门成绩和平均成绩的结构体S3:定义主菜单函数S4:定义实现显示学生信息功能的子函数S5:定义实现冒泡排序功能的子函数
2、S6:定义实现插入学生功能的子函数S7:定义实现删除学生功能的子函数S8:定义实现按学号查询功能的子函数S9:开始主函数,设计一个友好的中文界面S10:调用各个先前定义的子函数来实现各功能三、程序清单;#include#include#include#define N 50struct studentint num; /学号char name15; /姓名double score3; /3门成绩double ave; /平均成绩;void menu(); /显示主菜单struct student input(); /输入函数void display(struct student s,int t
3、otal); /显示学生信息void sort(struct student s,int total); /冒泡排序void insert(struct student s,int total); /插入学生(自动排序)int del(struct student s,int total); /删除学生void searchNum(struct student s,int total); /按学号查询void main()struct student stuN;char ch;int total=0,select; /total为学生总数,select为选择dosystem(cls);menu
4、();printf(请输入你的选择: );fflush(stdin);scanf(%d,&select);system(cls);switch(select)case 1:dosystem(cls);stutotal=input();total+; /人数+1printf(是否继续(Y/N): );fflush(stdin);ch=getchar();while(ch=Y|ch=y);printf(n);break;case 2:display(stu,total); /显示printf(n);break;case 3:sort(stu,total); /排序display(stu,total
5、); /显示break;case 4:searchNum(stu,total);break;case 5:dosystem(cls);display(stu,total); /显示insert(stu,total); /插入total+; /人数+1system(cls);display(stu,total); /显示printf(是否继续插入学员(Y/N): );fflush(stdin);ch=getchar();printf(n);while(ch=Y|ch=y);break;case 6:dosystem(cls);display(stu,total); /显示if(del(stu,t
6、otal) /删除total-; /人数-1system(cls);display(stu,total); /显示elseprintf(该学号不存在n);system(pause);system(cls);display(stu,total);printf(是否继续删除学员(Y/N): );fflush(stdin);ch=getchar();printf(n);while(ch=Y|ch=y);break;case 7:printf(此操作将删除所有记录,是否继续(Y/N):);fflush(stdin);ch=getchar();if(ch=Y|ch=y)total=0;break;def
7、ault:printf(真的要退出吗(Y/N): );fflush(stdin);ch=getchar();printf(nntt);if(ch=y|ch=Y)exit(0);break;system(pause);while(1);struct student input() /输入函数int i;double sum=0;struct student temp;printf(n请输入学号: );scanf(%d,&temp.num);printf(n请输入姓名: );fflush(stdin);gets(temp.name);printf(n请输入数学成绩: );scanf(%lf,&te
8、mp.score0);printf(n请输入语文成绩: );scanf(%lf,&temp.score1);printf(n请输入英语成绩: );scanf(%lf,&temp.score2);for(i=0;i3;i+)sum+=temp.scorei;temp.ave=sum/3;return temp;void display(struct student s,int total) /输出函数int i;printf( 学号 姓名 语文 数学 英语 平均nn);for(i=0;itotal;i+)printf( %d %s %.2f %.2f %.2f %.2f n,si.num,si.
9、name,si.score0,si.score1,si.score2,si.ave);void sort(struct student s,int total) /排序int i,j;struct student temp;for(i=0;itotal-1;i+)for(j=0;jtotal-1-i;j+)if(sj.avesj+1.ave)temp=sj;sj=sj+1;sj+1=temp;void insert(struct student s,int total) /插入struct student temp;int i,k;temp=input();for(i=0;isi.ave)br
10、eak;k=i;for(i=total;ik;i-)si=si-1;sk=temp;int del(struct student s,int total) /删除int temp,i,j;printf(请输入要删除的学号: );scanf(%d,&temp);for(i=0;itotal;i+)if(temp=si.num)break;if(itotal)for(j=i;jtotal;j+)sj=sj+1;return 1;elsereturn 0;void menu()printf( 学生管理系统n);printf( 1.输入学生信息n);printf( 2.显示学生信息n);printf(
11、 3.排序学生信息n);printf( 4.查询学生信息n);printf( 5.插入学生信息n);printf( 6.删除学生信息n);printf( 7.清除记录n);printf( 8.退出n);void searchNum(struct student s,int total) /查询int num,i;printf(请输入要查询的学号:n);scanf(%d,&num);printf(n);for(i=0;itotal;i+)if(num=si.num)break;if(itotal)printf( 学号 姓名 语文 数学 英语 平均nn);printf( %d %s %.2f %.
12、2f %.2f %.2fnn,si.num,si.name,si.score0,si.score1,si.score2,si.ave);elseprintf(t该学号不存在n);四、运行结果:原始界面: 学生管理系统1.输入学生信息2.显示学生信息3排序学生信息4.查询学生信息5.插入学生信息6.删除学生信息7.清除记录8.退出请输入你的选择:输入:1回车,输出 请输入学号: 请输入姓名: 请输入数学成绩: 请输入语文成绩: 请输入英语成绩: 是否继续(Y/N): 若输入Y,则进行下一个学生的记录,输入N,按任意键返回主菜单2回车,输出 学号 姓名 语文 数学 英语 平均 (下面分别是输入的学
13、生的学生信息的显示) 按任意键返回主菜单3回车,输出 学号 姓名 语文 数学 英语 平均 (下面分别是输入的学生的学生信息的排序) 按任意键返回主菜单4回车,输出 请输入要查询的学号: 输入正确学号显示该学生信息,若输入的学号不在第一步输入的学生信息中,则显示“该学号不存在” 按任意键返回主菜单5回车,输出 学号 姓名 语文 数学 英语 平均 请输入学号: 请输入姓名: 请输入数学成绩: 请输入语文成绩: 请输入英语成绩: 学号 姓名 语文 数学 英语 平均 (下面是插入的学生的学生信息的显示) 是否继续插入学员(Y/N): 若输入Y,则进行下一个学生信息的插入,输入N,按任意键返回主菜单6回
14、车,输出 学号 姓名 语文 数学 英语 平均 (下面是所有输入的学生的学生信息的显示) 请输入要删除的学号: 学号 姓名 语文 数学 英语 平均 (输入要删除的学号后,该学号的学生信息将不在此列表显示) 是否继续删除学员(Y/N): 若输入Y,则进行下一个学生信息的删除,输入N,按任意键返回主菜单7回车,输出 此操作将删除所有记录,是否继续(Y/N): 若输入Y,则删除所有学生信息的记录,并按任意键返回主菜单,输入N,按任意键返回主菜单8回车,输出 真的要退出吗(Y/N): 若输入Y,按任意键退出主菜单,输入N,按任意键返回主菜单五、分析与思考:这个程序的设计参考了大量的网上资料并结合自己所学的知识修改完善,多次调试后基本上完成了题目所要求的功能,因自己有关文件方面知识的不足,故学生信息的储存选择为逐项输入。希望下次可以在这方面得到提高。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1