printf(\学生成绩管理系统**********\\n\\n\ printf(\设计者:乐骏彦**********\\n\\n\ printf(\指导老师:彭春华*******\\n\\n\ printf(\通信工程0902班********\\n\\n\ printf(\年6月30日*******\\n\\n\ printf(\ printf(\
printf(\请输入系统启动口令\\n\启动口令*/ scanf(\ if(a!=1) {
printf(\口令错误!系统即将关闭!\\n\ exit(0); } for (;;) {
system(\
printf(\请从主菜单选择您所需要的操作\\n\\n\系统主菜单*/ printf(\首次输入学生信息请按\\n\printf(\查找学生信息\\n\printf(\修改学生信息\\n\printf(\删除学生信息\\n\printf(\插入学生信息\\n\printf(\优秀学生信息\\n\printf(\不及格学生信息\\n\printf(\课程成绩统计\\n\printf(\退出\\n\scanf(\
switch(c)/*利用switch语句集成各个功能函数*/ {
case 1 : Getinformation();break;/*获得学生信息*/ case 2 : Seekinformation();break;/*查找学生信息*/ case 3 : Modifyinformation();break;/*修改学生信息*/ case 4 : Deleteinformation();break;/*删除学生信息*/ case 5 : Insertinformaton();break;/*插入学生信息*/ case 6 : Stu_p();break;/*显示优秀学生信息*/
case 7 : Showthefail();break;/*显示不及格学生信息*/ case 8 : Chengjitongji();break;/*课程成绩的统计*/ case 0 : exit(0);/*退出*/ default: break; } } }
第 31 页 共 37 页
八、调试分析
调试程序比编写程序还要困难,花的时间也最多,对于整个程序的分析在程序设计思想一节里已经讨论过了,这里就不在赘述。而调试的过程比较繁琐对于很多小错误也没有留心去记录,这里只举出一个我映像较深的例子来说明调试的过程。例如下面这段代码(按学号查找学生信息的函数)
int Searchbynum (int no) /*按学号查找*/ {for (j=0;j<1000;j++) {if (student[j].num==no) { return j;}} return -1;}
我在刚开始时吧return -1;这句代码写到了for循环内部,编译时并没有错误,只有一条警告 “ warning C4715: 'Searchbynum' : not all control paths return a value ”,当时也没在意,然而当运行到学生信息查询模块时,只能查询第一个学生的数据,从第二个数据开始就无法查询到了。后来经过仔细检查才发现了这个错误。 通过这个例子,我明白了编程中出现语法错误机器会帮你找出,而出现逻辑错误想靠机器帮你找出的是不太可能的!所以在以后的编程中要尽量避免出现逻辑错误。
第 32 页 共 37 页
九、测试数据
如果把每一个功能的测试的结果都截图放到报告中来,将会占用很大的篇幅,所以这里只贴出在设计题目要求中着重提到的几个功能(优秀学生和不及格学生的信息输出、每门课程的平均成绩以及高等数学按学生成绩的排序)的测试的数据。此次测试输入了5名学生的成绩进行测试,其中有两人为优秀学生,有两人有不及格的记录。测试截图如下:
第 33 页 共 37 页
各科平均成绩:
高等数学成绩排名:
第 34 页 共 37 页
十、用户使用手册
此学生成绩管理系统为中文界面,提示清楚,界面友好,只要输入学生信息及成绩,即可自动生成优秀学生信息、不及格学生信息、各科成绩平均分、以及各科成绩排名。还可以查找、修改、插入、删除学生信息与成绩,是一个较全面的成绩管理系统。
输入学生信息及成绩时请注意以下几点:
1、输入学生姓名和班级名称时不要过长(超过50个字符),否则系统会判定为恶意输入;
2、输入学号时请不要超过10位数字,否则也会被判定为恶意输入;
3、学生成绩分为平时成绩与考试成绩,输入时请看清楚,不要混淆;
4、输入学生成绩时请出入0到100之间的数,成绩不能小于0也不能大于100;
5、本管理系统最多可存储1000个学生的信息。
第 35 页 共 37 页