1、学生学籍信息管理系统设计高级语言程序设计课程设计说明书 设计题目:学生学籍信息管理系统设计 1、需求分析:学生基本信息、学生成绩基本信息要存入文件当中,因而要提供文件的输入输出操作;查询功能要求提供查找和显示操作; 排序功能要求实现排序操 作;另外还应该提供键盘式选择菜单以实现功能选择。 2、总体设计:整个系统可以设计为数据录入模块、数据查询模块、数据排序模块。 3、详细设计参考第二题 目录1、设计任务 12、正文2.1、需求分析 32.2、系统模块图 32.3、模块说明 32.4、用户使用说明 42.5、测试结果 43、设计小结 44、参考文献 55、源程序 5 学生学籍信息管理系统1、 需
2、求分析:学生基本信息、学生成绩基本信息要存入文件当中,因而要提供文件的输入输出操作;查询功能要求提供查找和显示操作; 删除功能要求实现删除操作; 排序功能要求实现排序操 作;另外还应该提供键盘式选择菜单以实现功能选择。 2、系统模块图 3、实验模块:输入模块、浏览模块、查找模块、排序模块、退出系统4、用户使用说明本程序是用来对学生的一些基本信息进行分析与储存的,在使用的时候,用户首先应该进入第一个模块来输入学生的基本信息,将所有的信息都输入完毕后即可对其进行分析,可以对其进行浏览、查找、排序等。可根据信息对输入的学生进行成绩排序,只需输入所进行作用的对象即可。当进行完所有的操作,可按0键退出系
3、统。5、测试结果所谓程序调试是指对程序的查错与排错。在编写完一个源程序之后,不要立即进行编译,而应对程序进行全面的人工检查一遍,检查无误后,可以开始进行程序调试。由编译系统进行检查、发现错误,根据编译系统提示的错误类型和警告及出现的位置,我们可以定位到错误地点进行修改,然后再编译,如此反复进行,直至不再出现错误位置,最后才进行程序的连接于运行。调试完以后,下一步就是对程序进行测试,运行程序,向程序中输入数据,根据输出结果是否正确(是否符合自己的想法)来判断程序是否正确,如果不正确或不符合自己的目的,就需要对程序进行修改。然后再调试,再测试,直至结果无误或符合要求后,测试才算结束,此时,程序才算
4、是满足题目要求的正确程序。运行结果界面如下设计小结:通过完成这个综合的设计实例,从中我熟悉了Visual C+开发环境,熟练掌握了在Visual C+软件环境下编写和调试程序。通过对程序的调试,我从学到了许多知识,根据编译时系统提供的错误提示,我能很快地找到错误并排除这些错误,是程序能正确运行。通过这个环节的不断练习,我积累了丰富的经验,为以后编程和调试程序奠定了基础。通过运行程序,对程序不断改动,仔细观察和分析所出现的情况,锻炼了我对立思考的能力,而且增强了我对C语言应用这门课程的兴趣。参考文献1谭浩强.C程序设计(第二版).北京:清华大学出版社,19992秦友淑、曹化工。C语言程序设计教程
5、。华中科技大学出版社。3汪晓平。C语言高级实例解析。清华大学出版社。源程序#include /*头文件*/#include#include#define N 100#define M 3typedef struct student /*定义学生结构体*/ char num11; char name20; char sex3; int scoreM; float ave; int Max_course;STU;STU stuN,stu_ChineseN,stu_MathN,stu_EnglishN;int MaxM;float ave_Chinese;float ave_Math;float a
6、ve_English;int n;/*实际存储的学生个数*/void no_input(int i,int n)/*i表示第i个的学生信息,n表示比较到第n个学生*/ int j,k,w1; do w1=0; printf(NO.:); scanf(%s,&stui.num); for(j=0;stui.numj!=0;j+)/*学号输入函数,作了严格规定*/ if(stui.numj9)/*判断学号是否为数字*/ puts(Input error! Only be made up of (0-9).Please reinput!n); w1=1; break; if(w1!=1) for(k
7、=0;kn;k+)/*比较到第n个学生*/ if(k!=i&strcmp(stuk.num,stui.num)=0) puts(This record is exist.Please reinput!n); w1=1; break; while(w1=1);void input(int i)/*输入一个记录函数*/ int j,sum; no_input(i,i);/*调用学号输入函数*/ printf(name:); scanf(%s,&stui.name); printf(sex:); scanf(%s,&stui.sex); for(j=0;jM;j+) printf(score %d:
8、,j+1); scanf(%d,&stui.scorej); for(sum=0,j=0;jM;j+) sum+=stui.scorej; stui.ave=sum*1.0/M;/*每一行的平均值,即每位同学的三门课总的平均分*/void menu();/*函数声明*/void enter()/*输入模块*/ int i,j,f; system(CLS);/*清屏*/ printf(How many students(0-%d)?:,N);/*要输入的记录个数*/ scanf(%d,&n); printf(nEnter data nownn); for(i=0;in;i+) printf(nI
9、nput %dth student record.n,i+1); input(i);/*调用输入函数*/ for(i=0;in;i+)/*求每一行的最大值,即求每一位学生的三门课中的最高分*/ stui.Max_course=stui.score0; for(j=1;jM;j+) if(stui.Max_coursestui.scorej) stui.Max_course=stui.scorej; for(i=0;in;i+)/*把输入的信息分别复制到stu_ChineseN,stu_MathN,stu_EnglishN中*/ stu_Chinesei=stui; stu_Mathi=stui
10、; stu_Englishi=stui; printf(返回主菜单请按数字0n); do scanf(%d,&f); if(f=0) menu(); break; else printf(输入有误,请重新输入:); while(f!=0);void printf_one(int i)/*显示一个记录函数*/ int j; printf(%3s :%3s,stui.num,stui.name); for(j=0;jM;j+) printf(%10d,stui.scorej); printf(%10.2f,stui.ave); printf(%9dn,stui.Max_course);void b
11、rowse() /*浏览模块*/ int i,j,f,k=0; system(CLS);/*清屏*/ for(i=0;in;i+)/*求第一列的平均值,即求语文平均成绩*/ k=k+stui.score0; ave_Chinese=(k*1.0)/n; k=0; for(i=0;in;i+)/*求第二列的平均值,即求数学平均成绩*/ k=k+stui.score1; ave_Math=(k*1.0)/n; k=0; for(i=0;in;i+)/*求第三列的平均值,即求英语平均成绩*/ k=k+stui.score2; ave_English=(k*1.0)/n; Max0=stu0.scor
12、e0;/*第一列的最大值,即语文成绩最高分*/ for(i=1;in;i+) if(Max0stui.score0) Max0=stui.score0; Max1=stu0.score1;/*第二列的最大值,即数学成绩最高分*/ for(i=1;in;i+) if(Max1stui.score1) Max1=stui.score1; Max2=stu0.score2;/*第三列的最大值,即英语成绩最高分*/ for(i=1;in;i+) if(Max2stui.score2) Max2=stui.score2; puts(n-); printf(n NO : name Chinese Math
13、 English average Max_coursen); for(i=0;in;i+) if(i!=0)&(i%10=0)/*目的是分屏显示*/ printf(nnPass any key to continue.); getchar(); puts(nn); printf_one(i);/*调用显示一个记录函数*/ puts(n-); printf( ave_Chinese ave_Math ave_Englishn); printf(%10.2f%10.2f%10.2fn,ave_Chinese,ave_Math,ave_English);/*显示语文、数学、英语平均成绩*/ puts(n-
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1