《C语言课程设计学生成绩管理系统报告书 .doc》由会员分享,可在线阅读,更多相关《C语言课程设计学生成绩管理系统报告书 .doc(21页珍藏版)》请在三一办公上搜索。
1、目录一 课题意义31.1 成绩管理系统的背景分析31.2学生成绩管理系统设计的目标的分析5二 算法分析62.1学生成绩管理系统模块图62.2学生成绩管理功能介绍7三 学生成绩管理系统设计功能的实现83.1 成绩管理系统的登录页面83.2 学生成绩管理系统的录入103.3 学生成绩管理系统的显示123.4 学生成绩管理系统的删除133.5 学生成绩管理系统的查询163.6学生成绩管理系统的保存17四 程序测试20五 总结21六 参考文献22 一 课题意义1.1 成绩管理系统的背景分析 当今时代是飞速发展的信息时代,在各行各业中离不开信息处理,这正是计算机被广泛应用于信息管理系统的环境。计算机的最
2、大好处在于利用它能够进行信息管理。使用计算机进行信息控制,不仅提高了工作效率,而且大大的提高了其安全性。尤其对于复杂的信息管理,计算机能够充分发挥它的优越性。 管理信息系统是进行信息的采集、存储、加工、维护和使用的系统,它是随着管理科学和技术科学的发展而形成的。学生成绩管理系统是一个教育单位不可缺少的部分,它的内容对于学校的决策者和管理者来说都至关重要,所以学生成绩管理系统应该能够为用户提供充足的信息和快捷的查询手段,对学生来说可以轻松的查阅自己在校的成绩以及信息等。但是一直以来人们都是靠传统人工的方式管理学生成绩,这种管理方式存在着许多缺点,如:效率低、保密性差,另外时间一长,将产生大量的文
3、件和数据,这对于查找、更新和维护都带来了不少的困难。 随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。作为计算机应用的一部分,使用计算机对学生成绩信息进行管理,有着手工管理所无法比拟的优点.例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高学生成绩管理的效率,也是企业的科学化、正规化管理,与世界接轨的重要条件。因此,开发这样的一套成绩管理系统成为很有必要的事情。 学生成绩管理系统提供了强大的学生成绩管理管理功能,方便系统管理员对学生成绩等信息的添加、修改、删除、查询等操作
4、,同时一样的方面学生对自己各科成绩查询,学习。1.2学生成绩管理系统设计的目标的分析学生成绩管理系统采用结构化程序设计,各函数模块功能单一,结构清晰,较好的利用了指针、结构体数组等数据类型以及不同的使用方法,主要语句都加了详细的注释,将难以理解的指针、结构体数组等数据类型、函数调用以及文件操作等内容较好的融合到该系统中。 该系统能够实现对整个学生信息的添加、修改、删除、查询,保存等操作。在设计的过程中,建立了清晰的结构体层次,能进行简单的界面设计,能够实现友好的人机交互。有清晰的程序流程图和数据结构定义。当中主要是用了一些简单的C语言的语法,算法以及函数,文件跟数组。在保存学生信息中用到了结构
5、体数组和指针文件。 二 系统模块的设计2.1学生成绩管理系统模块图学生成绩管理系统中分为六个功能:一是系统管理登录页面、二是系统管理录入、三是系统管理显示、四是系统管理删除、五是系统管理查询、六是系统管理保存。模块图如下:2.2学生成绩管理功能介绍各主要模块功能说明如下: 登录:各功能的选择界面,实现人机交互;录入:录入学生成绩或者添加学生记录在信息表末尾,并且在必要时可以返回上层保存信息;显示:显示全部已经排好序的学生记录,方便用户查看;删除:按学号删除一条或者多条学生记录,同时返回上层保存记录;查询:按学号查询学生记录,并显示出该学生所有信息;保存:把录入、删除、添加、并且排好序的学生信息
6、保存在文件当中,方便下次查询或录入学生信息,文件名需要用户自己输入;(注:该系统中不要乱输入字母,最好一切都要提示进行,否则可能会出现死循环或界面无法返回等) 三 学生成绩管理系统设计功能的实现3.1 成绩管理系统的登录页面流程图如下:代码如下:void welcome()/*欢迎界面*/printf(nnnnnn);printf(tt 成绩管理系统n);printf(tt .欢迎进入航天技术学院. tn);printf(tt *Enter 进入* tn);printf(tt nttttt); getchar(); void menu() system(cls);printf(nnnnn);p
7、rintf(tt成绩管理系统n);printf(tt tn);printf(tt 1. 录入学员信息 tn);printf(tt 2. 显示学员信息 tn);printf(tt 3. 成绩排序信息 tn);printf(tt 4. 添加学员信息 tn);printf(tt 5. 删除学员信息 tn); printf(tt 6. 修改学员信息 tn);printf(tt 7. 查询学员信息 tn);printf(tt 8. 从文件读入学员信息 tn);printf(tt 9. 删除文件中学员信息 tn); printf(tt 10. 保存学员信息 tn);printf(tt 11. 退出 tn)
8、;printf(ttn); printf(tt 1选择菜单选项(1-11):Enter进入n); /*为下一功能选择模块*/运行效果图如下:3.2 学生成绩管理系统的录入流程图如下:代码如下:void input()/*原始数据录入模块*/ int i=0; char ch; do printf(tttt1.录入学员信息n输入第%d个学员的信息n,i+1); printf(n输入学生学号:); scanf(%d,&stui.no); fflush(stdin);/*清除前面信息*/ printf(n输入学员姓名:); fflush(stdin); gets(stui.name); printf
9、(n输入学员性别:); fflush(stdin); gets(stui.sex); printf(n输入学员成绩1:); fflush(stdin); scanf(%d,&stui.score1); printf(n输入学员成绩2:); fflush(stdin); scanf(%d,&stui.score2); printf(n输入学员成绩3:); fflush(stdin); scanf(%d,&stui.score3); printf(nn); i+; now_no=i; printf(是否继续输入?(Y/N); fflush(stdin); ch=getch(); system(cl
10、s);/*系统清屏*/ while(ch!=n&ch!=N); if(ch=N|ch=n) menu();运行效果图3.3 学生成绩管理系统的显示流程图如下:代码如下:void display()/*显示数据函数*/ int i; char as; average(); do printf(ttt班级学员信息列表n); printf(t学号t姓名t性别t成绩1t成绩2t成绩3t平均值n); for(i=0;inow_no&stui.name0;i+)printf(t%dt%st%st%.2dt%.2dt%.2dt%.2dn,stui.no,stui.name,stui.sex,stui.sco
11、re1,stui.score2,stui.score3,stui.ave); printf(tt按任意键返回主菜单.); fflush(stdin); as=getch(); while(!as); menu();运行效果图3.4 学生成绩管理系统的删除流程图如下:代码如下:void del()/*删除数据函数*/ int c,i,j; char ch; printf(输入要删除学员的学号:); scanf(%d,&c); printf(你确定要删除学号为%d的信息吗!(Y/N)n,c); ch=getch(); if(ch=y|ch=Y) for(i=0;inow_no;i+) if(stu
12、i.no=c) if(i=now_no)now_no-=1; else for(j=c;jnow_no;j+) stuj=stuj+1; now_no-=1; printf(你已成功删除学号为%d的信息n,c); printf(继续(Y/N)ttn); fflush(stdin); ch=getchar(); if(ch=y|ch=Y) sort(); else system(cls); menu(); else printf(没有学号为%d的信息n,c); printf(继续(Y/N)ttn); fflush(stdin); ch=getchar(); if(ch=y|ch=Y) sort(
13、); else system(cls); menu();运行效果图3.5 学生成绩管理系统的查询流程图如下:代码如下:void find()/*查询函数*/ int i; int a; char as,ch; do printf(输入要查询的学生学号:); fflush(stdin); scanf(%d,&a); for(i=0;inow_no;i+) if(a=stui.no) printf(t学号t姓名t性别t成绩1t成绩2t成绩3t平均值n); printf(t%dt%st%st%.2dt%.2dt%.2dt%.2dn,stui.no,stui.name,stui.sex,stui.sc
14、ore1,stui.score2,stui.score3,stui.ave); printf(tt继续(y/Y)n); printf(tt按任意键返回主菜单.n); ch=getch(); if(ch=y|ch=Y) find(); fflush(stdin); as=getch(); menu(); while(!as);运行效果图3.6学生成绩管理系统的保存流程图如下:代码如下:void save()/*保存数据函数*/ FILE *fp; int i; char filepath20; printf(输入要保存的文件路径:); fflush(stdin); gets(filepath);
15、 if(fp=fopen(filepath,w)=NULL) printf(n保存失败!); exit(0); for(i=0;inow_no;i+) stui.sum=stui.score1+stui.score2+stui.score3; stui.ave=stui.sum/3; fprintf(fp,t%dt%st%st%dt%dt%dt%dn,stui.no,stui.name,stui.sex,stui.score1,stui.score2,stui.score3,stui.ave); fclose(fp); printf(学生信息已保存在%s中!n,filepath); syste
16、m(pause); system(cls); menu();运行效果图四 程序测试虽然采取了许多防止出错的方法,特别是对于输入错误数据的防范措施,但系统测试仍然是发现程序存在的错误并及时予以纠正的必要环节。我采用了各种不同的数据(如正常数据、错误数据等)对语法和逻辑上可能产生的错误进行了大量的测试,测试中发现该系统在运行中有太多的不稳定,同时跟设计要求有太大的出入,但后来我在老师的帮助下对其进行了一系列的改正、修复、以及重新编写某些函数,并且对程序中的每一个块、一条语句和逻辑思路都进行了反复测试,运行结果基本符合设计要求。五 总结 通过本次课程设计使我对C语言有了更深一步的了解,加深了对C语言
17、的印象。让我了解更多的如何调试程序、处理错误的方法。使自己对C语言的使用得到了进一步的提高,同时书本上的知识得到了进一步的巩固,加深了我对程序的深层理解,清楚的知道了程序中每一步的功能,在编写中是多么重要的,一个好的结构只能在程序中才能表现出它本身的价值,结构设计的合理性决定了这个程序的命运。知道了一些函数的位置如何排放,在今后的学习中我会更加注意这些方面,争取让自己能有进一步的提高。从这里我也体会到了,做一个程序,或者开发一个软件,应该着重从它的后台制作入手,不能做出一个中看不中用的程序或者软件。相信这次的课程设计为我今后的学习,工作会带来不一样的精彩。非常感谢老师对我各个方面的指教。六 参考文献1.王萍. C+面向对象程序设计. 北京:清华大学出版社,2002 2.徐孝凯. 面向对象程序设计实验. 北京:中央广播电视大学出版社,2003 3.邵维忠,杨芙清. 面向对象的系统分析. 北京:清华大学出版社,1998 4.郑人杰,殷人昆等. 实用软件工程. 北京:清华大学出版社,1997 5.谭浩强. C程序设计(第二版). 北京:清华大学出版社,1999 6.谭浩强. C语言程序设计教程(第二版). 北京:高等教育出版社,1997 7.杨路明等. C/C+程序设计教程. 湖南:湖南科技出版社,2001