《C语言学生成绩管理系统设计》由会员分享,可在线阅读,更多相关《C语言学生成绩管理系统设计(10页珍藏版)》请在金锄头文库上搜索。
1、2009年C语言程序设计探究式自主设计报告系 部:电子电气工程系专 业: 电气自动化班 级:姓 名:课题名称:学生成绩管理体统指导老师:*2009年12月12日-i -说明1、设计的目的1)复习巩固C语言的基础知识,进一步加深对 C语言编程的理解和掌握;2)利用所学知识,理论和实际结合,利用资源,采用模块化的结构,使用模仿 修改自主设计相结合的方法,锻炼学生综合分析解决实际问题的编程能力;3)培养学生在项目开发中团队合作精神、创新意识及实战能力。2、设计的任务根据学生的实际情况,进行分组选题。 主要的课程设计题目如下 (学生也可自主 选题):1 、图书管理系统2、学生信息管理系统3、学生成绩管
2、理系统4、学生通讯录管理系统5、职工信息管理系统6、设计简单的计算器课程设计采用学生自主设计和指导老师辅导相结合的方式。3、设计要求与设计报告设计要求:1、任选上述题目之一,或自选题目。 2、模块化的程序设计3、锯齿形的程序书写格式。 4、必须通过编译连接运行 设计报告:1 、设计目的和任务2、总体设计:包括程序设计组成框图、流程图。3、详细设计:包括模块功能说明:函数功能、入口及出口参数说明,函数调用 关系描述等。4、调试与测试:包括调试方法,测试结果分析与讨论,测试过程中遇到的主要 问题及采取的解决措施。5、源程序清单和执行结果:清单中应有足够的注释。- # -设计目的和任务(主要介绍设计
3、的任务,为什么要设计,设计要达到什么样的目的。 )设计目的:( 1)基本掌握面向过程程序设计的基本思路和方法;( 2 )达到熟练掌握 C 语言的基本知识和技能;(3)能够利用所学的基本知识和技能,解决简单的程序设计问题程序功能:( 1). 学生基本信息及成绩所选科目成绩的录入。(2). 基本信息的查询(分系、班级;分科目)与修改。(3). 对每系或每班各科成绩进行分析(即求单科平均成绩、及格率和优秀率);(4). 对所开课程的成绩分析 (求其平均成绩, 最高分和最低分) ;(5). 对学生考试成绩进行排名;目录一、 总体设计 -4 -二、 详纟田设计 -4 -三、 调试与测试 -4 -四、 源
4、程序清单和执行结果 -4 -五、 建议和体会 -4 -六、 参考文献 -5 -:总体设计设计流程图如下:(输入兴士信息77编辑信息查询信息)71k保存信息否是7f创建文件退出二、详细设计1、输入初始的学生信息:其中包括学生的姓名、学号和性别以及学生的语文、数学、英语和计算机等相关信息;可用函数cin(stu *p1)来实现此操作。2、 查询模块:可用 stu *lookdata(stu *p1)来实现。找到就输出此学生全部信息 包括学生的语文、数学、英语和计算机等的成绩。3、插入模块:可用in sert()函数来实现。其中通过学号的大小来比较的,并且以 此来排序。4、输出学生的信息以及成绩:通
5、过学生的姓名来查看学生的语文、数学、英语和计算机等相关成绩,同时也可以分别通过caverage() 、 maverage() 、eaverage()和comaverage()来输出语文、数学、英语和计算机等成绩的平均分数、最高和最低分数。5、退出系统:可用一个函数 exit ()来实现,首先将信息保存到文件中,释放动 态创建的内存空间,再退出此程序。六、参考文献指导教师的评语及评分考核小组意见及评分综合评分三:调试与测试问题一、学生初始信息模块:其中包括学生的姓名、学号和性别以及学生的语文、数学、英语和计算机等相关信息; 可用函数cin(stu *p1)来实现此操作。当正确输入存在的学生学号,
6、系统进行判断时,提示 不存在此学生。解决办法及步骤:1、一个个输出所有的学生的学号,检查文件中是否有此学生,发现有。2、既然有此学生,那么检查循环判断是否有此学生的语句发现没有错3、输出用于循环检查语句中的学生信息,发现乱码4、仔细分析乱码的原因,最后发现是变量的类型错误,错将学生类型的结构体指 针变量定义为了其他类型的指针变量。问题二、查询模块:可用stu *lookdata(stu *p1)来实现。找到就输出此学生全部信息包括学生的语文、数学、英语和计算机等的成绩。当正确输入查找信息时,系统却不能够得到所要查找的学生信 息以及学生的语文、数学、英语和计算机的成绩。解决办法及步骤:1、检查所
7、编写的程序代码是否完全正确,若不是,则改之,然后再继续正确输入 查找信息看能否得到所要查找的学生信息以及学生的语文、数学、英语和计算机的成绩。2、检查当我们在输入查找信息时,看是否我们输入的信息有误,若是这样的话, 我们应当仔细输入查找信息。四:源程序清单和执行结果源程序如下:#include stdio.h#include math.h#define N 30struct studentlong int num; char name10; char sex3;int Chinese,Math,English,total,average; stuN=4001,lks,m,100,100,100
8、,4002,lyt,w,99,63,89,4003,asd,w,60,70, 80,4004,fgh,m,41,100,98, 4005,asd,m,74,74,87,4006,yt,m,85,58,78,4007,qwe,w,74,100,87,4008,d cs,w,74,85,96, 4009,qfg,m,74,78,36,4010,gft,m,45,85,98,4011,mn,m,60,77,17,4012,yer ,w,78,78,100,4013,lsd,m,100,89,85,s;int M=13;void modify(struct student stu)int t;long
9、 num;char z; t=search(stu)-400; printf(input num:); scanf(%ld, &stut.num); printf(input name:); scanf(%s,stut.name); printf(input sex:):scanf(%s,stut.sex); printf(input score of Chinese:); scanf(%d, &stut.Chinese); printf(input score of Math:); scanf(%d, &stut.Math); printf(input score of English:);
10、 scanf(%d, &stut.English); stut.average=(stut.English+stut.Math+stut.Chinese)/3; stut.total=stut.English+stut.Math+stut.Chinese;printf(tNUMtNAMEtSEXtCHINESEtMATHtENGLISHtTOTALtAVERAGEn); printf(t%4ldt,stut.num); printf( %st,stut.name); printf(%st,stut.sex);printf(%4dt%4dt%4dt%4d%8dn,stut.Chinese,stu
11、t.Math,stut.English,stut.tot al,stut.average);printf(Next?y/n?); scanf(%s, &z); if(z=y) modify(stu); void output(struct student stu) inti;printf(tNUMtNAMEtSEXtCHINESEtMATHtENGLISHtTOTALtAVERAGEn);for(i=0;ivM;i+) printf(t%4ldt,stui.num); printf( %st,stui.name); printf(%st,stui.sex); printf(%4dt%4dt%4
12、dt%4d%8dn,stui.Chinese,stui.Math,stui.English,stui.total,s tui.average); void sort(struct student stu)int i,j,t;printf(1.an yingyu chengcheji paixun2.an yuwen chengji paixun3.an shuxue chengji paixun4.an pingjue chengji paixun5.an zongfen paixun);scanf(%d, &t);switch(t) case 1: for(i=0;iM-1;i+) for(
13、j=0;jvM-i-1;j+) if(stuj.Englishstuj+1.English)s=stuj; stuj=stuj+1; stuj+1=s; output(stu); getch(); break;case 2:for(i=0;ivM-1;i+) for(j=0;jvM-i-1;j+) if(stuj.Chinesevstuj+1.Chinese) s=stuj; stuj=stuj+1; stuj+1=s; output(stu); getch(); break;case 3:for(i=0;ivM-1;i+) for(j=0;jM-i-1;j+) if(stuj.Mathvst
14、uj+1.Math) s=stuj; stuj=stuj+1; stuj+1=s; output(stu); getch(); break; case 4:for(i=0;ivM-1;i+) for(j=0;jvM-i-1;j+) if(stuj.averagevstuj+1.average) s=stuj;stuj=stuj+1; stuj+1=s; output(stu); getch(); break;case 5:for(i=0;ivM-1;i+) for(j=0;jvM-i-1;j+) if(stuj.totalvstuj+1.total) s=stuj; stuj=stuj+1; stuj+1=s; output(stu); getch(); break; 丄int search(struct