1、目 录1设计目的32 设计题目及要求33设计算法分析3 3。1 模块调用层次图3 3。2 核心算法描述4 3。3 系统特点64程序代码65调试情况86结论11学生信息管理1。设计目的本课程设计的目的就是要通过一次集中的强化训练,使学生能及时巩固已学的知识,补充未学的但又必要的内容.进行课程设计目的在于加深对程序设计基础中基础理论和基本知识的理解,促进理论与实践的结合,进一步提高程序设计的能力。具体目的如下:1使学生更深入地理解和掌握该课程中的有关基本概念,程序设计思想和方法。2培养学生综合运用所学知识独立完成课题的能力。3培养学生勇于探索、严谨推理、实事求是、有错必改,用实践来检验理论,全方位
2、考虑问题等科学技术人员应具有的素质。4提高学生对工作认真负责、一丝不苟,对同学团结友爱,协作攻关的基本素质。5培养学生从资料文献、科学实验中获得知识的能力,提高学生从别人经验中找到解决问题的新途径的悟性,初步培养工程意识和创新能力.6对学生掌握知识的深度、运用理论去处理问题的能力、实验能力、课程设计能力、书面及口头表达能力进行考核.2。设计题目及要求【1】设计题目 【2】要求实现如下功能:(1)建立学生信息的结构体(2)学生信息的初始化(可以从文件获取)(3)学生信息的添加、修改、删除、查找(4)学生信息的输出(5)对学生信息按学号、成绩排序(6)计算一门课的平均分和总分(7)将学生信息保存为
3、文件综合应用数组、指针、结构体、文件等,对该设计题目进行设计和实现。课程设计完成后,提交课程设计报告。3.设计算法分析 3.1 模块调用层次图【1】变量描述定义形式/名称含义/作用数组char name20定义姓名数组结构体struct student stu50声明一个结构数组全局变量int input=0;float ave,sum; FILE fp; 全局变量标记当前录入学生个数文件stu_list2。doc保存学生信息函数SaveInputStuDelStuModifyStuFindStuInsertStuSortStuListStu保存 录入 删除 修改 查找 插入 排序 显示学生信
4、息【2】系统模块调用层次图MainListStuSortStuInsertStuFindStuModifyStuDelStuInputStuSave3。2核心算法描述1.总体模块流程图: 开始 !(scanf(%d,&in1)=1 N T 学生信息 保存 排序 删除 插入 查询 修改 结束2。修改模块: for(i=0;i=15;i+) for(i=0;iinput;i+) stui。num=id T(flag!=0) F(flag!=0) 输出修改后学生信息 printf(”nnnull”) 3。查询模块: for(i=0;i=15;i+) for(i=0;iinput;i+) (stui。
5、num=id) T (flag=0) F (flag!=0) 输出查询后学生信息 printf(nnnull”) (stui.classid=id) T (flag=0) F(flag!=0) 输出查询后学生信息 printf(”nnnull”) T (flag=0) (!strcmp(stui。name,name) F(flag!=0) 输出查询后学生信息 无找到有关信息4。插入模块:for(i=0;iinput;i+) stui。num=id T(flag=0)F(flag!=0) 学号信息已经存在 输入要插入学生信息 5。删除模块:ask != nT Fi=0;iinput;i+stui
6、.num = delnum T (flag=0) F(flag!=0) for(j=i;jinput;j+) 删除成功且 显示删除后数据 删除指定学生的信息 没有要删除的学生6。排序模块:chose=1T F(chose=2)for(i=0;iinput-1;i+)for(i=0;iinput1;i+)for(j=i+1;jinput;j+)for(j=i+1;jinput;j+)stui。numstuj。numstui。avestuj。ave T F T Ftemp=stuitemp=stuistui=stujstui=stujstuj=tempstuj=temp3。3 系统特点【1】特点:
7、这个学生信息管理系统建立了学生信息的结构体,实现了学生信息的录入、添加、修改、删除、查找等功能,并能计算学生的平均分和总分,对学生进行排序.4。程序代码【1】程序代码 void Help(); void Save(struct student stu); void InputStu(struct student stu); void DelStu(struct student stu); void ModifyStu(struct student stu); void FindStu(struct student stu); void InsertStu(struct student stu)
8、; void SortStu(struct student stu); void ListStu(struct student stu); void main() struct student stu50; struct student *p; int in;int in1; char ch; void InputStu(struct student stu) pp=stu; system(”cls); int i; printf(”Number of students you want to enter information:); scanf(d,input);if(fp=fopen(in
9、putdata.sys,”wb+)=NULL) printf(Cannot open file strike any key exit!); getch();exit(1); void ModifyStu(struct student stu)system(cls”);pp=stu;int id,i,flag=1; if((fp=fopen(”modifydata.sys”,wb+”)=NULL) printf(”Cannot open file strike any key exit!”);getch();exit(1); void FindStu(struct student stu) s
10、ystem(cls”);int i=0,id,flag=1,chose; printf(”nPlease select query: 1。No。 inquiries by school;2.Query by class;3.Query by namen”);scanf(”d”,chose);switch(chose)case 1:printf(Please enter your query No。 students:”);scanf(”%d”,id);for(i=0;iinput;i+)if (stui。num=id) flag=0;stui。sum=stui。score1+stui.scor
11、e2+stui.score3;stui。ave=stui。sum/3;printf(”nNo. Studies Name No. classes The first subjec The second subject The third subjectAverage Totaln”);void InsertStu(struct student stu) system(”cls);int flag=1; pp=stu;int i,id;if(fp=fopen(insertdata。sys”,”wb+))=NULL) printf(”Cannot open file strike any key
12、exit!);getch();exit(1); void ListStu(struct student stu) int i=0;for(i=0;iinput;i+)stui。sum=stui。score1+stui。score2+stui。score3;stui。ave=stui。sum/3;printf(”nNo。 Studies Name No。 classes The first subjec The second subject The third subjectAverage Totaln”);for(i=0;iinput;i+)printf(n d s %d td t%d td
13、td %d”,stui。num,stui。name,stui。classid,stui。score1,stui。score2,stui。score3,stui。ave, stui。sum); getch();void DelStu(struct student stu) system(”cls);pp=stu;int delnum,flag=1; char ask;int i,j;if(fp=fopen(”Deldata。sys”,wb+))=NULL) printf(”Cannot open file strike any key exit!”);getch();exit(1);void S
14、ortStu(struct student stu) system(”cls”);int i,j,chose; struct student temp;printf(”To sort the data before:n”);printf(”nNo. Studies Name No. classes The first subjec The second subject The third subjectAverage Totaln”);for(i=0;iinput;i+)printf(”n %d s d dt dt %dt %dt dn,stui。num,stui.name,stui。clas
15、sid,stui.score1,stui.score2,stui。score3,stui.ave,stui。sum); printf(n1.Sort by Student IDt2。By the average score (high low) Sortn”);void Save(struct student stu) int i,j;pp=stu; system(cls”);printf(”nnnntttSaving”);if((fp=fopen(”stu_list2.doc”,wb+”))=NULL) printf(”Cannot open file strike any key exit
16、!”);getch();exit(1); 【2】程序执行结果【3】结果的讨论:系统最后将修改过后的学生信息保存了下来5。调试情况三科成绩、平均分、总分不能用float定义应改为int定义应在函数的最前端文件未定义这是建立学生信息文件添加学生信息并计算平均分和总分找不到要删除的学生信息删除了学号为12的学生信息修改学生信息新学生信息记录保存信息后退出程序6.结论(1)能够通过编译时出现的出错提示信息,进行初步的纠错.(2)完成一个程序的一般步骤为设计,录入 ,编译 ,如果出错,则修改,然后再编译,编译成功后,看看结果是否正确,如果结果不正确,则再重复以上步骤.(3)从这次编程序的过程中,我学到了编程所必须具备的专业技能,更领会编译程序所需要的细心和耐心。