1、福建师范大学人民武装学院 C语言程序设计报告书设计名称:学生成绩管理系统专业:软件工程指导老师:陈琳姓名: 黄强 学号: 6 2013-415 一、实验目的1.在编辑应用程序过程中,逐步加深对C语言编程的理解;2.加强实践的能力,动手能力,同时进一步对所学的知识进行巩固; 3.培养初步编程的能力,为以后的学习奠定基础。二、实验内容运用所学的C语言知识编辑一个应用程序:学习成绩管理系统三系统软件环境:本程序主要运行在: Visual C+ 6.0 Turbo C/C+ 3.0四课程设计题目:学生成绩管理系统程序说明:有N个学生,每个学生的数据包含学号(不重复)姓名,性别,课程号,课程名,学分和课
2、程的三种得分。试设计一学生成绩 管理系统,使之能提供以下功能:(1)主菜单学生成绩管理系统1. 录入2. 查询3. 删除4. 排序5. 保存退出6. 退出(2)各菜单项功能录入:输入学生的学号、姓名性别,课程号,课程名,学分和课程的三种得分 成绩查询:A.基本信息查询*按学号查询学生记录。*按名字查询学生纪录。B.成绩查询*按学号查询学生记录。*按名字查询学生纪录。纪录删除*按输入的学号删除排序A. 综合成绩升序。B. 综合成绩降序。C. 学分降序。D. 学分升序。由主函数登陆五数据结构设计描述:菜单函数Input函数 select函数 del函数 paixu函数 保存函数 退出系统 六结构体
3、的定义和作用struct student /定义学生信息 int no; / 学号 char name20; /姓名 char sex4; /性别 int num; /课程号 char scn20; /课程名 int score; /学分 float score1; /成绩1 float score2; /成绩2 float score3; /成绩3 float ave; /实得学分 float sum; /总分七系统各函数的功能,、相互调用关系1.函数实现功能说明:(1)menu函数是定义一个菜单函数,其功能在于输出菜单界面供使用者选择。(2)input函数是定义用于输入学生信息。(3)se
4、lect 函数是定义用于查询学生信息。包括学号、姓名及各科成绩。(4)del函数按输入的学号删除(5) paixu函数设置新菜单,并调用四个不同排序输出函数。(6) 保存函数 保存信息。八心得体会 C语言是一种较为基础和普遍的编程语言,应用相当广泛,这次课程设计的要求与C语言的广泛应用相比较还有很大的差距。我们对于C语言的理解和使用还处在一个初级的阶段,我们要想掌握它,要学习的还很多,同时要懂得创新,许多的编程方法都是人们一步一步总结出来的,我想我们也要努力拓展自己的思维,努力去寻求新的方法,以创造出更为完善的应用程序。 九程序:#include #include /*清屏*/ #includ
5、e /*显示目录*/ #include #define n 10void zhjx();void menu();void input();void check();void fun();void fun2();void fun3();void fun4();void del();void paixu();void zhsx();void zhjx();void xfjx();void xfsx();void save();struct student /定义学生信息 int no; / 学号 char name20; /姓名 char sex4; /性别 int num; /课程号 char
6、scn20; /课程名 int score; /学分 float score1; /成绩1 float score2; /成绩2 float score3; /成绩3 float ave; /实得学分 float sum; /总分; struct student stun,*p,t;int now=0,i,j,k,l; char ch;void main() int h,flag1,flag2; char name20=hq,password10=111; char person20,password110;printf (tt * 欢迎进入学生成绩管理系统!*nn);printf (ttt
7、用 户 登 录nn); for(h=0;h!=5;) printf(tttt 用户名:); gets(person); flag1=strcmp(person,name); printf(tttt 密码:); gets(password1); flag2=strcmp(password,password1); if(flag1=0 & flag2=0) printf(tttt 登陆成功!nn); menu(); break; else printf (ttt 用户名或密码错误!nn);printf (ttt 请注意:您还剩%d次机会!nn,4-h); h+;if (h=5) printf (对
8、不起,您输入的用户名或密码有误,已被强制退出。n); void menu() int as; char ch; do printf(nnnntt*&*&*&*&*&*&*&*&*&*); start: printf(nnnnttt 欢迎使用学生成绩管理系统n); printf(nnnntt*按任意键继续*); ch=getch(); while(!ch); system(cls); /*以下为功能选择模块*/ doprintf(学生管理系统n);printf(tt);printf(1-学生成绩录入ntt);printf(2-查询ntt);printf(3-删除学生记录ntt);printf(4
9、-排序ntt);printf(5-保存退出ntt);printf(6-退出ntt);printf(tttt选择功能选项(输入所选功能前的数字):); scanf(%d,&as); switch(as) case 1:input();break;case 2:check();break;case 3:del();break;case 4:paixu();break;case 5:save();break;case 6:system(exit);exit(0);break; default:system(cls); goto start; while(1); void input() /*学生信息
10、录入模块*/ int i=0; char ch; do printf(tttt1.录入学生信息n输入第%d个学生的信息n,i+1); printf(n输入8位的学生学号:); scanf(%u,&stui.no); fflush(stdin); printf(n输入学生姓名:); fflush(stdin); gets(stui.name); printf(n输入学生性别:); fflush(stdin); gets(stui.sex); fflush(stdin); printf(n输入学生课程号:); scanf(%d,&stui.num); fflush(stdin); printf(n
11、输入学生课程名:); gets(stul.scn); ;fflush(stdin); printf(n输入课程学分:); scanf(%d,&stui.score); printf(n输入学生平时成绩:); fflush(stdin); scanf(%f,&stui.score1); printf(n输入学生实验成绩:); fflush(stdin); scanf(%f,&stui.score2); printf(n输入学生卷面成绩:); fflush(stdin); scanf(%f,&stui.score3); printf(nn); if(stui.score20) stui.sum=s
12、tui.score1*0.15+stui.score2*0.15+stui.score3*0.7; else stui.sum=stui.score1*0.3+stui.score3*0.7; k=stui.sum/10; switch(k) case 10:(float)stui.ave=(float)stui.score;break; case 9:(float)stui.ave=(float)stui.score;break; case 8:(float)stui.ave=(float)stui.score*0.8;break;case 7:(float)stui.ave=(float)
13、stui.score*0.7;break;case 6:(float)stui.ave=(float)stui.score*0.6;break;default:(float)stui.ave=0.0;i+; now=i; printf(是否继续输入?(Y/N); fflush(stdin); ch=getch(); system(cls); while(ch!=n&ch!=N); system(cls); void check() /查询printf(查 询n);printf(tt*学生基本信息查询*n);printf(tt);printf(1-按学号查询ntt);printf(2-按姓名查询
14、ntt);printf(*学生成绩查询*n);printf(tt);printf(3-按学号查询ntt);printf(4-按姓名查询ntt);printf(0-返回主菜单ntt);printf(请选择:);scanf(%d,&i);switch(i)case 0:menu();break; /调用主菜单函数,表示返回主菜单case 1:fun();break; /调用函数fun1,表示按学号查询学生基本信息case 2:fun2();break; /调用函数fun2,表示按姓名查询学生基本信息case 3:fun3();break; /调用函数fun3,表示按学号查询学生成绩case 4:f
15、un4();break; /调用函数fun4,表示按姓名查询学生成绩;void fun() /按学号查询1int i,j;printf(请输入要查询同学的学号:);scanf(%d,&j);for(i=0;inow;i+) /从第一名学生开始if(stui.no=j) /查找与输入学号相同的学号并输出printf(学号:%dn,stui.no);printf(姓名:%sn,stui.name);printf(性别:%sn,stui.sex); check(); ;void fun2() /按姓名查询1char name20;printf(请输入要查询同学的姓名:);scanf(%s,&name
16、);for(i=0;inow;i+)if(strcmp(stui.name,name)=0)printf(学号:%dn,stui.no);printf(姓名:%sn,stui.name);printf(性别:%sn,stui.sex); ;void fun3() /按学号查询2int i;printf(请输入要查询同学的学号:);scanf(%d,&j);for(i=0;inow;i+)if(stui.no=j) printf(平时成绩%fn,stui.score1); printf(实验成绩:%fn,stui.score2); printf(卷面成绩:%fn,stui.score3); pr
17、intf(总分:%fn,stui.sum);printf(学分:%fn,stui.ave); check();void fun4()/按姓名查询2int i;char name20;printf(请输入要查询同学的姓名:);scanf(%s,&name);for(i=0;inow;i+)if(strcmp(stui.name,name)=0) printf(平时成绩%fn,stui.score1); printf(实验成绩:%fn,stui.score2); printf(卷面成绩:%fn,stui.score3); printf(总分:%fn,stui.sum);printf(学分:%fn,
18、stui.ave); check();void del() /*删除数据函数*/ unsigned long inum; int i; printf(输入要删除学生的学号:); fflush(stdin); scanf(%u,&inum); for(i=0;inow;i+) if(stui.no=inum) if(i=now)now-=1; else stui=stunow-1; now-=1; break; system(cls); menu();void paixu() /排序 int i;printf(排 序n);printf(tt);printf(1-按综合成绩升序ntt);print
19、f(2-按综合成绩降序ntt);printf(3-按实得学分升序ntt);printf(4-按实得学分降序ntt);printf(0-返回主菜单ntt);printf(请选择:);scanf(%d,&i);switch(i)case 0:menu();break;case 1:zhsx();break;case 2:zhjx();break;case 3:xfsx();break;case 4:xfjx();break;void zhsx()/综合成绩升序 int i,j;for(i=0;ii;j-) if(stuj.sumstuj-1.sum) t=stuj;stuj=stuj-1;stuj
20、-1=t; for(i=0;inow;i+)printf(学号:%d,stui.no);printf(姓名:%s,stui.name);printf(性别:%s,stui.sex); printf(平时成绩%f,stui.score1); printf(实验成绩:%f,stui.score2); printf(卷面成绩:%f,stui.score3); printf(总分:%fn,stui.sum);paixu();void zhjx()/综合成绩降序 int i,j;for(i=0;ii;j-) if(stuj.sumstuj-1.sum) t=stuj;stuj=stuj-1;stuj-1
21、=t; for(i=0;inow;i+)printf(学号:%d,stui.no);printf(姓名:%s,stui.name);printf(性别:%s,stui.sex); printf(平时成绩%f,stui.score1); printf(实验成绩:%f,stui.score2); printf(卷面成绩:%f,stui.score3); printf(总分:%fn,stui.sum);paixu();void xfjx()/学分降序 int i,j;for(i=0;ii;j-) if(stuj.avestuj-1.ave) t=stuj;stuj=stuj-1;stuj-1=t;
22、for(i=0;inow;i+)printf(学号:%dn,stui.no);printf(姓名:%s,stui.name);printf(性别:%s,stui.sex); printf(平时成绩%f,stui.score1); printf(实验成绩:%f,stui.score2); printf(卷面成绩:%f,stui.score3); printf(总分:%fn,stui.sum);paixu();void xfsx()/学分升序 int i,j;for(i=0;ii;j-) if(stuj.avestuj-1.ave) t=stuj;stuj=stuj-1;stuj-1=t; for
23、(i=0;inow;i+)printf(学号:%dn,stui.no);printf(姓名:%s,stui.name);printf(性别:%s,stui.sex); printf(平时成绩%f,stui.score1); printf(实验成绩:%f,stui.score2); printf(卷面成绩:%f,stui.score3); printf(总分:%fn,stui.sum);paixu();void save() /*保存数据函数*/ FILE *fp; int i; char filepath20; printf(输入要保存的文件路径:); fflush(stdin); gets(
24、filepath); if(fp=fopen(filepath,w)=NULL) printf(n保存失败!); exit(0); for(i=0;inow;i+) fprintf(fp,t%u%st%st%ut%st%ut%.2ft%.2ft%.2ft%.2ft%.2fn, stui.no,stui.name,stui.sex,stui.num,stui.scn,stui.score,stui.score1,stui.score2, stui.score3,stui.ave,stui.sum); fclose(fp); printf(学生信息已保存在%s中!n,filepath); system(pause); system(cls); 透过完成上述工作,使我认识到一个称职的管理人员应当具有良好的语言表达潜力、流畅的文字写作潜力、较强的组织领导潜力、灵活的处理问题潜力、有效的对外联系潜力、大型活动的策划及筹备潜力。