学生成绩信息管理系统学生成绩信息管理系统1 引言............................................................................................................... 11.1 设计目的与要求 ................................................................................... 11.2设计内容 .................................................................................................. 12系统需求与功能分析 .................................................................................... 12.1 系统需求分析........................................................................................ 22.2系统功能分析......................................................................................... 23总体结构设计 .................................................................................................. 33.1系统的结构设计 .................................................................................... 33.2系统管理流程图 .................................................................................... 34 系统详细设计和系统实现.......................................................................... 45 系统测试 ..................................................................................................... 106 结束语.......................................................................................................... 15参考文献.......................................................................................................... 15附录1:链表结构化设计源程序清单.................................................... 16附录2:顺序表结构化设计源程序清单............... ... . (26)1 引言1.1 设计目的与要求该学生信息管理系统采用C++语言开发研制,针对学生成绩及其数据特点,可以全面实现对学生成绩的插入、查询、修改、删除和输出等功能的计算机管理。
它能使学生信息数据的工作人员从繁重的工作中解脱出来,大大减轻了工作量,减少人为的工作失误,全面提高学生信息管理的效率,从而使学校对于学生成绩的管理水平和技术水平跃上一个新的台阶。
(1) 程序要添加适当的注释,程序的书写要采用缩进格式。
(2) 程序要具在一定的健壮性,即当输入数据非法时,程序也能适当地做出反应,如插入删除时指定的位置不对等等。
(3) 程序要做到界面友好,在程序运行时用户可以根据相应的提示信息进行操作。
(4) 根据实验报告模板详细书写实验报告,在实验报告中给出链表根据姓名进行查找的算法和插入算法的流程图。
1.2设计内容定义一个包含学生信息(学号,姓名,成绩)的的顺序表和链表,使其具有如下功能:(1) 根据指定学生个数,逐个输入学生信息;(2) 逐个显示学生表中所有学生的相关信息;(3) 根据姓名进行查找,返回此学生的学号和成绩;(4) 根据指定的位置可返回相应的学生信息(学号,姓名,成绩);(5) 给定一个学生信息,插入到表中指定的位置;(6) 删除指定位置的学生记录;(7) 统计表中学生个数。
2系统需求与功能分析2.1 系统需求分析(1) 能完成学生信息的插入、查询、修改、删除、输出等功能;(2)采用单链表与顺序表存储结构实现;(3) 所有数据以外部文件方式保存。
2.2系统功能分析(1)要设计一个学生成绩管理系统,其功能包括:①插入函数Add():将学生成绩信息插入到链表中;②查询函数Search():分别可以按学号和按姓名进行学生成绩查询;③删除函数Delete():当需要删除的学号和姓名一致时则删除对应的学生记录;④修改函数Modify():修改指定的学生成绩信息;⑤输出函数Show():输出全部学生成绩信息;⑥菜单函数Menu():为程序的菜单函数为实现各种功能提供便捷;⑦读取数据函数Read():从外部文件读取学生成绩信息;⑧保存数据函数Save():将数据保存到外部文件中。
3总体结构设计3.1系统的结构设计通过对学生信息管理系统的功能分析,可以定义出系统的总体结构模块图,如图3.1所示。
图3.1学生管理系统总体结构设计3.2系统管理流程图前面的分析中已经定义了系统各个模块,属于静态建模的范围。
在系统运行时刻的动态模型应该由系统的流程决定。
当用户运行该系统后可以来进行学生信息插入管理、学生信息查询管理、学生信息删除管理、学生信息修改管理及学生信息输出等操作,具体的流程如图3.2所示。
图3.2系统流程图主模块应负责应用程序的主界面,由它调用其他模块.因此主模块应具有操作性好、界面清晰的特点,使用户能够很方便地找到所需功能。
根据功能需求的结果分析,主界面应该由学生信息插入管理,学生信息查询管理、学生信息修改管理、学生信息删除管理和学生信息输出管理组成,可以通过输入相应的数字进入相应的功能模块。
4 链表学生信息管理系统详细设计和系统实现系统总体设计完成后,就可以根据需求对各个模块来进行实现了。
在本系统中需要编码实现的主要有学生信息插入、学生信息查询、学生信息修改、学生信息删除和学生信息输出等5个模块。
(1)学生信息插入模块添加的信息包括学号(不允许重复)、姓名(不允许重复)、分数。
流程图如下图4.1所示。
开始插入数据输入学生信息调用类成员函数采用单链表保存数据结束图4.1插入模块流程图本程序采用的是尾插法,就是每次将新申请的结点插在终端结点的后面,其执行过程如图4.2所示。
图4.2尾插法建立单链表操作示意图(2)学生信息查询模块按姓名和学号查找学生信息的流程图分别如下图4.3所示。
图4.3按姓名查找学生信息流程图在单链表中,即使知道被访问结点的位置i,也不能像顺序表那样直接按序号访问,而只能从头指针出发,设置一个工作指针p,顺next域逐个结点往下搜索。
当p指向某个结点时判断是否为第i 个结点,若是则查找成功;否则,将工作指针p后移,即将p指向原来所指结点的后继结点。
直到p为NULL时查找失败。
单链表查找过程如图4.4所示。
图4.4单链表查找过程的示意图按学号查询学生信息同按姓名查找学生信息,此处不再详细列出。
结束输入要查找姓名判断抱歉没有该学生输出该学生的信息按姓名查找开始NY(3)学生信息修改模块首先要查找与要修改数据相匹配的信息,若没有则返回失败。
否则把相应的信息输出,然后再重新输入新的数据并保存到单链表。
(4)学生信息删除模块当选择删除功能时,首先输入要删除的同学的姓名,然后输入要删除的同学的学号,如果该同学存在并且姓名与学号匹配的上,则进行删除操作,否则返回失败。
其流程图4.5如下:图4.5删除学生信息模块流程图删除操作定义为将单链表的第i 个结点删去。
因为在单链表中结点a i 存储地址在其前驱结点a i-1的指针域,所以必须首先找到a i-1的存储地址p ,然后令p 的next 域指向a i 的后继结点,即把结点a i 从链上摘下来,最后释放结点a i 的存储空间,如图4.6所示。
N图4.6在单链表中删除结点指针的变化情况(5)学生信息输出模块从单链表表头遍历整个单链表,将所有数据输出。
其部分代码如下:void Function::Show(){ char choose;Student *temp;system("cls");temp=Student_First->Next;if(!temp){ cout<<"文件无数据\n\n "<<endl;cout<<"1.返回主菜单"<<endl;cin>>choose;while(choose!='1'){ cout<<"1.返回主菜单"<<endl;cin>>choose;}Menu();}else{ cout<<"姓名\t学号\t语文成绩\t数学成绩\t英语成绩\n";while(temp!=NULL){ temp->Out();temp=temp->Next;}}cout<<"1.返回主菜单"<<endl;cin>>choose;while(choose!='1'){ cout<<"1.返回主菜单"<<endl;cin>>choose;}Menu();}5 系统测试在完成了系统各方面的设计后,并不是可以运行就完成的,为了保证系统性能的稳定性跟安全性等,就要对系统做测试。
测试环境如下:●硬件:P4C 2.4GHz,80GB硬盘,512M内存;●软件:Windows XP Personal SP2,分辨率1024*768,MicrosoftVisual C++ 6.0。