您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 人事档案/员工关系 > 学生成绩管理程序及链表管理程序
程序设计课程设计[2009级][09专升本汉班]内蒙古师范大学1《程序设计基础》课程设计题目:1.学生成绩管理程序2.链表信息管理姓名_________________班次_________________学号_______________指导教师___________________成绩__________________计算机与信息工程学院2009年10月20日题目1:学生成绩管理程序[问题描述]设计一个实用的小型学生成绩管理程序,它要求不用链表,而用数组来设计这个程序。它有查询和检索等功能,并且能够对指定文件操作,也可将多个文件组成一个文件。[基本要求]1.功能要求(包括输入、输出、精度等方面的要求)设计要求实现的功能较多,所以将它们分为几个部分叙述。1.建立文件(1)可以使用默认文件名或指定文件名将记录存储到文件;(2)文件保存成功返回0,失败返回-1;(3)设置保存标志savedTag作为是否已对记录进行存储操作的信息;(4)写同名文件将覆盖原来文件的内容;2.增加学生记录(1)可在已有记录后面追加新的记录;(2)可以随时用它增加新的记录,它们仅保存在结构数组中;(3)可以将一个文件读入,追加在已有记录之后;(4)如果已经采取用文件追加的方式,在没有保存到文件之前,将继续保持文件追加状态,以便实现连续文件追加操作方式;(5)如果没有记录存在,给出提示信息。3.新建学生信息文件(1)用来重新建立学生信息记录;(2)如果已经有记录存在,可以覆盖原记录或者在原记录后面追加,也可以将原有记录信息保存到一个指定文件,然后重新建立记录;(3)给出相应的提示信息。4.显示记录程序设计课程设计[2009级][09专升本汉班]内蒙古师范大学2(1)如果没有记录可供显示,给出提示信息;(2)可以随时显示内存中的记录;(3)显示表头。5.文件存储(1)可以按默认名字或指定名字存储记录文件;(2)存储成功返回0,否则返回-1;(3)更新存储标志。6.读取文件(1)可以按默认名字或指定名字将记录文件读入内存;(2)读取成功返回0,否则返回-1;(3)可以将指定或默认文件追加到现有记录的尾部;(4)可以将文件连续追加到现有记录并更新记录的名次。(5)更新存储标志。7.删除记录(1)可以按“学号”、“姓名”或“名次”方式删除记录;(2)给出将被删除记录的信息,经确认后再删除;(3)如果已经是空表,删除时应给出提示信息并返回主菜单;(4)如果没有要删除的信息,输出没有找到的信息;(5)应该更新其他记录的名次;(6)删除操作仅限于内存,只有执行存记录时,才能覆盖原记录;(7)更新存储标志。8.修改记录(1)可以按“学号”、“姓名”或“名次”方式修改记录内容;(2)给出将被修改记录的信息,经确认后进行修改;(3)如果已经是空表,应给出提示信息并返回主菜单;(4)如果没有找到需要修改的信息,输出提示信息;程序设计课程设计[2009级][09专升本汉班]内蒙古师范大学3(5)应该同时更新其他记录的名次;(6)修改操作仅限于内存,只有进行存储操作时,才能覆盖原记录;(7)更新存储标志。9.查询记录(1)可以按“学号”、“姓名”或“名次”方式查询记录;(2)能给出查询记录的信息;(3)如果查询的信息不存在,输出提示信息。10.对记录进行排序(1)可以按学号进行升序或降序排序;(2)可以按名称进行升序和降序排序;(3)可以按名次进行升序和降序排序;(4)如果属于选择错误,可以立即退出排序;(5)更新存储标志。11.头文件(1)使用条件编译定义头文件;(2)函数原型声明;(3)数据结构及包含文件;12.测试程序(1)应列出测试大纲对程序进行测试;(2)应保证测试用例测试到程序的各种边缘情况是基本要求,希望通过对本章设计的理解,重新考虑如何改进设计。2.运行环境要求devc++[系统分析]1.程序系统结构分析程序设计课程设计[2009级][09专升本汉班]内蒙古师范大学4程序(系统)结构主程序名称子程序名称调用关系说明主函数(main)insert(Students[],intn)输入“1”时调用show(Students[],intn)输入“2”时调用sort(Students[],intn)输入“3”时调用search(Students[],intn)输入“4”时调用save(Students[],intn)输入“5”时调用del(Students[],intn)输入“6”时调用2.子程序分析程序描述子程序名称参数名称类型含义子程序功能说明insert(Students[],intn)s[]Student学生信息表地址添加学生信息nint学生人数show(Students[],intn)s[]Student学生信息表地址显示学生信息nint学生人数sort(Students[],intn)s[]Student学生信息表地址按要求对信息排序nint学生人数search(Students[],intn)s[]Student学生信息表地址按需要查找信息nint学生人数程序设计课程设计[2009级][09专升本汉班]内蒙古师范大学5save(Students[],intn)s[]Student学生信息表地址保存信息nint学生人数del(Students[],intn)s[]Student学生信息表地址按要求删除信息nint学生人数3.算法分析主函数流程:YN添加学生信息:YN开始根据需求调用子函数结束并返回是否继续调用开始输入学生信息返回继续输入程序设计课程设计[2009级][09专升本汉班]内蒙古师范大学6对记录排序修改:YN查询记录流程:YYNN输入选择菜单:1.按学号排序2.按姓名排序3.按成绩排序开始返回是否有重新排序对应记录进行修改相应排序方式选择查询方式:1.按学号2.按姓名3.按成绩开始返回是否有重新排序相应显示记录是否有记录程序设计课程设计[2009级][09专升本汉班]内蒙古师范大学7是否删除记录?删除记录,修改相应信息删除记录流程:NYNY输出学生信息流程:选择删除方式:1.按学号2.按姓名3.按成绩4.按名次开始结束返回是否有对应记录输出删除对应记录信息输入删除记录的对应信息开始输出学生信息返回程序设计课程设计[2009级][09专升本汉班]内蒙古师范大学8保存记录流程:YNYYN[测试数据]1.功能测试数据及结果2.正常值、边界值及异常值测试数据及结果a)在主菜单选择功能时,调用子函数,若输入的数不是1-6则程序忽略这次输入,进入下一次调用,进行输入。b)选择功能数为2时,若输入成员代号不存在,则程序给出提示信息。3.调试记录调试记录序号程序名称调试记录解决方法结束返回in关闭文件,并赋值savedTag=0;n++文件是否打开读取记录保存到文件中开始定义输出文件流程序设计课程设计[2009级][09专升本汉班]内蒙古师范大学91save()学生信息最后一条记录显示不正确值保存记录时,最后一条记录不用保存换行符,不然读取记录时,换行符独占一行,导致数据显示错误2del()出现二义性修改错误[课程设计小结]通过对程序三的编写,进一步加深学习了while循环、for循环等循环语句。学会了通过函数间的返回值控制程序运行,使程序实现了菜单选择功能。在修改程序时通过对错误的修改和完善,使思路更加谨慎和完善。锻炼了思路,完善了编程习惯。[源代码]#includeiostream#includefstream#includeiomanipusingnamespacestd;structStudent//定义结构体{stringnum;//学号stringname;//姓名floatscore;//成绩shortintmingci;//名次};Students[100];//结构体数组变量intinsert(Students[],intn)//输入学生信息{boolsf;inti=0;stringsr;程序设计课程设计[2009级][09专升本汉班]内蒙古师范大学10while(sr!=n||sr!=N){cout请输入学生学号:endl;cins[n+i].num;cout请输入学生的姓名:endl;cins[n+i].name;cout请输入学生的成绩:endl;cins[n+i].score;cout是否继续输入记录?(Y/N)endl;cinsr;i++;}return(n+i);}intshow(Students[],intn)//显示{inti;coutsetw(7)学号setw(10)姓名setw(10)成绩setw(10)名次endl;coutendl;for(i=0;in;i++){coutsetw(6)s[i].numsetw(10)s[i].namesetw(10)s[i].scoresetw(10)s[i].mingciendl;}}voidsort(Students[],intn)//排序{Studentp;inti,j;intm,w,t;程序设计课程设计[2009级][09专升本汉班]内蒙古师范大学11cout请选择排序方式:endl;cout1.按学号排序:endl;cout2.按姓名排序:endl;cout3.按成绩排序:endl;cinm;switch(m){case1:for(i=0;in;i++)for(j=i;jn;j++)if(s[i].nums[j].num){p=s[i];s[i]=s[j];s[j]=p;}gotopx;case2:for(i=0;in;i++)for(j=i;jn;j++)if(s[i].names[j].name){p=s[i];s[i]=s[j];s[j]=p;}gotopx;case3:for(i=0;in;i++)for(j=i;jn;j++)if(s[i].scores[j].score){p=s[i];s[i]=s[j];s[j]=p;}程序设计课程设计[2009级][09专升本汉班]内蒙古师范大学12px:cout请选择输出方式:1:升序,0:降序endl;cint;coutendl;if(t==1){for(i=0;in;i++){s[i].mingci=i+1;cout学号姓名成绩名次endl;couts[i].nums[i].names[i].scores[i].mingciendl;}coutendl;}else{for(i=n-1;i-1;i--){s[i].mingci=n-i;cout学号姓名成绩名次endl;couts[i].nums[i].names[i].scores[i].mingciendl;}coutendl;}break;}}intdelnum(Students[],intn)//按学号删除程序设计课程设计[2009级][09专升本汉班]内蒙古师范大学13{inti,j;stringa;charsr;cout请输入该学生学号:endl;cina;for(i=0;in;i++){if(s[i].num==a){cout是否保存删除记录?(Y/N)endl;cinsr;if(sr=='y'||sr=='Y'){for(j=i;jn;j++){s[j]=s[j+1];}cout信息删除成功!endl;returnn-1;}else{returnn;}}}cout无法找到该信息!endl;return(n);}intdelname(Students[],intn)//按姓名删除{inti,j;stringa;charsr;cout请输入该学生姓名:endl;程序设计课程设计[2009级][09专升
本文标题:学生成绩管理程序及链表管理程序
链接地址:https://www.777doc.com/doc-1063356 .html