1、 课程名称:软件工程设计设计题目: 学生成绩信息管理系统设计 院 系: 计算机与通信工程系 专 业: 铁道信号 年 级: 级 姓 名: 指导教师: 西南交通大学峨眉校区20 年 月 日课 程 设 计 任 务 书专 业 铁道信号 姓 名 学 号 开题日期: 年 月 日 完成日期: 年 月 日题 目 学生成绩信息管理系统设计 一、初始条件:理论:学完计算机基础知识,掌握C+语言编程基础和VC开发平台的使用。实践:计算机科学系实验中心提供计算机及软件开发环境。二、要求完成的主要任务: (1)系统需求分析,得到系统的数据需求和功能需求,分析结果用表格记录。 (2)系统设计,包括内存数据结构设计、数据文
2、件设计、代码设计、输入/输出设计、用户界面设计、处理过程设计。要求内存数据用链表组织,数据文件用文本文件,用户界面用字符界面。至少实现数据记录的增加、修改、删除、查询(查询应能按不同数据项进行)。(2)编制好程序后,设计若干测试用例,上机测试所设计的程序。(4)设计报告按格式要求书写。设计报告正文的内容应包括:1)系统描述:包括问题说明、数据需求和功能需求。2)系统设计:包括内存数据结构设计、数据文件设计、代码设计、输入/输出设计、用户界面设计、处理过程设计。3)系统测试:包括测试用例的描述、测试方法和测试结果。4)设计的特点、不足、收获和体会。1. 系统需求分析学生成绩信息管理数据分析表编号
3、数据项数据类型数据长度描述1学生成绩信息字符串未知一个学生全部成绩信息2状态器整形32表示此时输入状态3链表节点NodeLink未知学生全部成绩信息学生成绩信息管理功能分析表编号功能描述1列出功能列表通过功能列表知道你可以进行哪些操作2查询学生成绩此项可以通过学号或姓名查询学生成绩信息3增加学生成绩信息此项可以增加未保存的学生的成绩信息4删除学生成绩信息此项可以通过学号或姓名删除已储存的学生成绩信息5修改学生成绩信息此项可以通过学号或姓名来修改已储存的学生成绩信息6 退出程序退出本程序并保存相关修改到文件中2. 系统描述 通过建立各种函数来实现学生成绩的查询,基本功能是:通过系统的提示进行学生
4、成绩的各种查询。就是通过输入学生的学号就可以进行:查询,增加,删除,修改。 所用到的数据结构有:typedef struct NodeLinkstring person;NodeLink *next;*L; 这个数据结构用来储存各个学生的成绩信息,这些信息都存储在一个string类型中void search_score(); /通过学号查找学生成绩信息void search_score2(); /通过姓名查找学生成绩信息int add_person(); /增加未保存的学生成绩信息void dele_person(); /通过学号删除学生成绩信息void dele_person2(); /通过
5、姓名删除学生成绩信息void amend_person(); /通过学号修改学生成绩信息void amend_person2(); /通过姓名修改学生成绩信息void in_put(); /文本文件的内容输入到一个链表个void out_put(); /把链表中的内容输出到文本中3系统设计下面是数据文件设计的一个截图:分别表示为:学号 姓名 高数 大学英语 数据结构 数字逻辑 体育。下面为程序源代码:#include#include#include#includeusing namespace std;typedef ifstream in_file;typedef ofstream out_
6、file;typedef istringstream in_s;typedef struct NodeLinkstring person;NodeLink *next;*L;void in_put(NodeLink *&L) /文件yjx.txt的输入string score_person;NodeLink *p,*q;in_file in_p(yjx.txt);if(!in_p)cout文件打开失败next=p;q=p;p-person=score_person;p-next=0;cout读入文件成功endl;in_p.close();void out_put(NodeLink *&L) /
7、结果输出到yjx.txt中NodeLink *p=L;ofstream out_s;out_s.open(yjx.txt);if(!out_s)cout文件打开失败!endl;while(p)out_spersonnext;out_s.close();void search_score(NodeLink *&L) /通过学号学生信息查询string score_person,score_person2;NodeLink *p;p=L;coutscore_person;while(p)in_s str(p-person);strscore_person2;if(score_person=scor
8、e_person2)cout您要查询学生成绩信息如下:endl 学号 姓名 高数 大学英语 数据结构 数字逻辑 体育endlpersonnext;if(p=NULL)cout查无此学号,请确认后再输入。endl;void search_score2(NodeLink *&L) /通过姓名学生信息查询string score_person,score_person2;NodeLink *p;p=L;coutscore_person;while(p)in_s str(p-person);strscore_person2;strscore_person2;if(score_person=score_
9、person2)cout您要查询学生成绩信息如下:endl 学号 姓名 高数 大学英语 数据结构 数字逻辑 体育endlpersonnext;if(p=NULL)cout查无此名字,请确认后再输入。endl;int add_person(NodeLink *&L) /学生信息增加 string name_person,name_person2;string i,j,k,l,m,n,o;NodeLink *p=L;NodeLink *q;NodeLink *a=L; cout请输入要增加的学生成绩信息:endl学号 姓名 高数 大学英语 数据结构 数字逻辑 体育ijklmno;while(a)i
10、n_s str(a-person);strname_person2;if(i=name_person2)cout学号:i已存在请重新输入next;name_person=i+ +j+ +k+ +l+ +m+ +n+ +o;q=new NodeLink;q-person=name_person;q-next=0;while(p-next)p=p-next;p-next=q;p=p-next;p=0;cout加入成功!endl;return 0;void dele_person(NodeLink *&L) /通过学号学生信息删除string score_person,score_person2;N
11、odeLink *p=L;NodeLink *q;coutscore_person;while(p)in_s str(p-person);strscore_person2;if(score_person=score_person2)cout此学生的成绩信息如下:endl 学号 姓名 高数 大学英语 数据结构 数字逻辑 体育endlpersonnext;elseq-next=p-next;p=q;cout该学生成绩信息已删除next;if(p=NULL) cout查无此学号,请确认后再输入。endl;void dele_person2(NodeLink *&L) /通过姓名学生信息删除strin
12、g score_person,score_person2;NodeLink *p=L;NodeLink *q;coutscore_person;while(p)in_s str(p-person);strscore_person2;strscore_person2;if(score_person=score_person2)cout此学生的成绩信息如下:endl 学号 姓名 高数 大学英语 数据结构 数字逻辑 体育endlpersonnext;elseq-next=p-next;p=q;cout该学生成绩信息已删除next;if(p=NULL) cout查无此学号,请确认后再输入。endl;v
13、oid amend_person(NodeLink *&L) /通过学号学生信息修改string score_person,score_person2,score_person3,name_person2;string h,i,j,k,l,m,n,o;NodeLink *p=L;NodeLink *q=0;NodeLink *a=L;coutscore_person;while(p)in_s str(p-person);strscore_person2;if(score_person=score_person2)cout此学号的成绩信息如下:endl 学号 姓名 高数 大学英语 数据结构 数字
14、逻辑 体育endl personendl 请输入要修改的信息:endl 学号 姓名 高数 大学英语 数据结构 数字逻辑 体育endlscore_person2jklmno; score_person3=i+ +j+ +k+ +l+ +m+ +n+ +o;p-person=score_person3;cout修改已成功next;if(p=NULL) cout查无此学号,请确认后再输入。endl;void amend_person2(NodeLink *&L) /通过姓名学生信息修改string score_person,score_person2,score_person3,name_perso
15、n2;string h,i,j,k,l,m,n,o;NodeLink *p=L;NodeLink *q=0;NodeLink *a=L;coutscore_person;while(p)in_s str(p-person);strscore_person2;strscore_person2;if(score_person=score_person2)cout此学生的成绩信息如下:endl 学号 姓名 高数 大学英语 数据结构 数字逻辑 体育endl personendl 请输入要修改的信息:endl 学号 姓名 高数 大学英语 数据结构 数字逻辑 体育endl score_person2ikl
16、mno; score_person3=i+ +j+ +k+ +l+ +m+ +n+ +o;p-person=score_person3;cout修改已成功next;if(p=NULL) cout查无此学号,请确认后再输入。endl;int main() /主函数string s;NodeLink *L=0; /链表建立in_put(L);int i;docoutendl请选择所需操作:endl1.查询学生成绩信息:endl2.增加学生成绩信息:endl3.删除学生成绩信息:endl4.修改学生成绩信息:endl5.退出程序i;switch(i) case 1:int b;cout1.通过学号查
17、询:endl2.通过姓名查询:b;if(b=1) search_score(L);if(b=2)search_score2(L);break; case 2: add_person(L);break; case 3:int c;cout1.通过学号删除:endl2.通过姓名删除:c;if(c=1) dele_person(L);if(c=2) dele_person2(L);break; case 4:int d;cout1.通过学号修改:endl2.通过姓名修改:d;if(d=1)amend_person(L);if(d=2)amend_person2(L);break; if(i!=1&i
18、!=2&i!=3&i!=4&i!=5&i!=8)cout输入有误,请确认后再输入endl;while(i!=5); /是否重新操作out_put(L); /输出到文件123.txt中cout文件修改已保存endl;return 0;4系统调试运行程序代码运行之后,对任务书所要求的功能进行测试:1. 通过学号进行学生信息查询,结果如下图:2. 通过姓名进行学生信息查询,结果如下图:3. 增加学生信息,结果如下图所示:4. 通过学号删除学生信息,结果如下图所示:5. 通过姓名删除学生信息,结果如下图:6. 通过学号修改学生信息,结果如下图:7. 通过姓名修改学生信息。结果如下图:8. 经过上述操作
19、之后,文件数据为:5心得体会 经过这次基础强化训练的设计,我更加深刻的体会到了:要想设计好一个可靠的系统,不仅仅是要完成系统设计的基本要求,还要深入理解这个系统,这个系统应该具备什么功能,怎样才能更加让使用者用得得心应手,这个才应该是设计系统的初衷。在设计这个系统的时候,首先就应该设想好,需要运用什么样的数据结构以及何种算法才能使系统最优化,使自己设计的系统能够以最高的效率进行运行。还有,在这个系统设计的过程中,我也更加深刻地体会到数据结构等相关课程的学习对我们所给予的巨大帮助,运用书上所介绍的数据结构,算法再结合自己对系统的体会,综合运用所学的知识,设计出系统来就不会是那么困难的一件事情了。总的来说,这次基础强化课程设计让我受益匪浅,对所学知识的认识不再是只停留在课本和做题考试上面,而是运用到确确实实的编程当中,我因此也对相关的知识有了更深层次的认识。而后面,等待我学的东西还有很多,我要做的便是再接再厉,一步一步坚持的走下去!6.参考文献C+程序设计教程 闵联营 何克右主编 武汉理工大学出版社 2005.7数据结构 严蔚敏 吴伟民主编 清华大学出版社 199616