收藏 分销(赏)

学生成绩信息综合管理系统.doc

上传人:快乐****生活 文档编号:2827780 上传时间:2024-06-06 格式:DOC 页数:43 大小:416.54KB
下载 相关 举报
学生成绩信息综合管理系统.doc_第1页
第1页 / 共43页
学生成绩信息综合管理系统.doc_第2页
第2页 / 共43页
学生成绩信息综合管理系统.doc_第3页
第3页 / 共43页
学生成绩信息综合管理系统.doc_第4页
第4页 / 共43页
学生成绩信息综合管理系统.doc_第5页
第5页 / 共43页
点击查看更多>>
资源描述

1、学生成绩信息管理系统1 引 言1.1 设计目标和要求1.2设计内容2系统需求和功效分析2.1 系统需求分析2.2系统功效分析3总体结构设计3.1系统结构设计3.2系统管理步骤图4 系统具体设计和系统实现5 系统测试6 结束语参考文件附录1:链表结构化设计源程序清单附录2:次序表结构化设计源程序清单. . .261 引 言1.1 设计目标和要求该学生信息管理系统采取C+语言开发研制,针对学生成绩及其数据特点,能够全方面实现对学生成绩插入、查询、修改、删除和输出等功效计算机管理。它能使学生信息数据工作人员从繁重工作中解脱出来,大大减轻了工作量,降低人为工作失误,全方面提升学生信息管理效率,从而使学

2、校对于学生成绩管理水平和技术水平跃上一个新台阶。(1) 程序要添加合适注释,程序书写要采取缩进格式。(2) 程序要具在一定健壮性,即当输入数据非法时,程序也能合适地做出反应,如插入删除时指定位置不对等等。(3) 程序要做到界面友好,在程序运行时用户能够依据对应提醒信息进行操作。(4) 依据试验汇报模板具体书写试验汇报,在试验汇报中给出链表依据姓名进行查找算法和插入算法步骤图。1.2设计内容定义一个包含学生信息(学号,姓名,成绩)次序表和链表,使其含有以下功效: (1) 依据指定学生个数,逐一输入学生信息;(2) 逐一显示学生表中全部学生相关信息;(3) 依据姓名进行查找,返回此学生学号和成绩;

3、(4) 依据指定位置可返回对应学生信息(学号,姓名,成绩); (5) 给定一个学生信息,插入到表中指定位置; (6) 删除指定位置学生统计;(7) 统计表中学生个数。2系统需求和功效分析2.1 系统需求分析 (1) 能完成学生信息插入、查询、修改、删除、输出等功效;(2)采取单链表和次序表存放结构实现;(3) 全部数据以外部文件方法保留。2.2系统功效分析(1)要设计一个学生成绩管理系统,其功效包含:插入函数Add():将学生成绩信息插入到链表中;查询函数Search():分别能够按学号和按姓名进行学生成绩查询;删除函数Delete():当需要删除学号和姓名一致时则删除对应学生统计;修改函数M

4、odify():修改指定学生成绩信息;输出函数Show():输出全部学生成绩信息;菜单函数Menu():为程序菜单函数为实现多种功效提供便捷;读取数据函数Read():从外部文件读取学生成绩信息;保留数据函数Save():将数据保留到外部文件中。3总体结构设计3.1系统结构设计经过对学生信息管理系统功效分析,能够定义出系统总体结构模块图,图3.1所表示。学生成绩管理系统 学生信息插入学生信息查询学生信息删除学生信息修改学生信息输出学生信息读取学生信息保留图3.1学生管理系统总体结构设计3.2系统管理步骤图 前面分析中已经定义了系统各个模块,属于静态建模范围。在系统运行时刻动态模型应该由系统步骤

5、决定。当用户运行该系统后能够来进行学生信息插入管理、学生信息查询管理、学生信息删除管理、学生信息修改管理及学生信息输出等操作,具体步骤图3.2所表示。进入系统数据读入查询修改删除输出数据保留退出系统不保留YN图3.2系统步骤图主模块应负责应用程序主界面,由它调用其它模块.所以主模块应含有操作性好、界面清楚特点,使用户能够很方便地找到所需功效。依据功效需求结果分析,主界面应该由学生信息插入管理,学生信息查询管理、学生信息修改管理、学生信息删除管理和学生信息输出管理组成,能够经过输入对应数字进入对应功效模块。4 链表学生信息管理系统具体设计和系统实现系统总体设计完成后,就能够依据需求对各个模块来进

6、行实现了。在本系统中需要编码实现关键有学生信息插入、学生信息查询、学生信息修改、学生信息删除和学生信息输出等5个模块。(1)学生信息插入模块添加信息包含学号(不许可反复)、姓名(不许可反复)、分数。步骤图以下图4.1所表示。开始插入数据输入学生信息调用类组员函数采取单链表保留数据结束图4.1插入模块步骤图本程序采取是尾插法,就是每次将新申请结点插在终端结点后面,其实施过程图4.2所表示。图4.2尾插法建立单链表操作示意图(2)学生信息查询模块按姓名和学号查找学生信息步骤图分别以下图4.3所表示。结束输入要查找姓名判定抱歉没有该学生输出该学生信息按姓名查找开始NY图4.3按姓名查找学生信息步骤图

7、在单链表中,即使知道被访问结点位置i,也不能像次序表那样直接按序号访问,而只能从头指针出发,设置一个工作指针p,顺next域逐一结点往下搜索。当p指向某个结点时判定是否为第i个结点,若是则查找成功;不然,将工作指针p后移,立即p指向原来所指结点后继结点。直到p为NULL时查找失败。单链表查找过程图4.4所表示。图4.4单链表查找过程示意图按学号查询学生信息同按姓名查找学生信息,此处不再具体列出。(3)学生信息修改模块首先要查找和要修改数据相匹配信息,若没有则返回失败。不然把对应信息输出,然后再重新输入新数据并保留到单链表。(4)学生信息删除模块当选择删除功效时,首先输入要删除同学姓名,然后输入

8、要删除同学学号,假如该同学存在而且姓名和学号匹配上,则进行删除操作,不然返回失败。其步骤图4.5以下:开始删除操作输入姓名输入学号姓名学号一致实施删除功效返回主菜单NY图4.5删除学生信息模块步骤图删除操作定义为将单链表第i个结点删去。因为在单链表中结点ai存放地址在其前驱结点ai-1指针域,所以必需首先找到ai-1存放地址p,然后令pnext域指向ai 后继结点,即把结点ai 从链上摘下来,最终释放结点ai存放空间,图4.6所表示。 图4.6在单链表中删除结点指针改变情况(5)学生信息输出模块从单链表表头遍历整个单链表,将全部数据输出。其部分代码以下: void Function:Show(

9、) char choose;Student *temp;system(cls);temp=Student_First-Next; if(!temp) cout文件无数据nn endl;cout1.返回主菜单choose; while(choose!=1) cout1.返回主菜单choose; Menu(); elsecoutOut(); temp=temp-Next; cout1.返回主菜单choose;while(choose!=1)cout1.返回主菜单choose;Menu(); 5 系统测试在完成了系统各方面设计后,并不是能够运行就完成,为了确保系统性能稳定性跟安全性等,就要对系统做测

10、试。测试环境以下:l 硬件:P4C 2.4GHz,80GB硬盘,512M内存;l 软件:Windows XP Personal SP2,分辨率1024*768,Microsoft Visual C+ 6.0。1.这是链表主界面2.这是次序表主界面图5.1运行主界面我就以次序表为例介绍一下我学生信息管理系统吧 选择1清空学生信息功效时,图5.2所表示。图5.2插入学生成绩信息实现返回主菜单后选择3插入学生成绩信息,4删除学生信息,运行结果按由姓名特定位置删除和按学号删除两种分别图5.3和图5.4所表示。图5.3按学生学号查找相关信息实现图5.4按学号查找相关信息实现当在主菜单中选择4时,则进行删

11、除功效。其运行结果图5.5所表示。图5.5 删除学生信息功效实现当在主菜单中选择6时,则进行显示目前信息功效。其运行结果图5.7所表示。图5.7输出学生信息功效实现6 结束语经过这次数据结构课程设计试验,在处理问题过程中,充足体会到了数据结构这门课程对于软件设计关键性,也体会到了数据结构+算法=程序这句话真正含义,一个实际问题处理第一步就是要依靠于良好抽象思维,将实际问题转化为对应数据结构,只有这一步做好了,才能采取对应算法和优化方法处理问题和处理好问题。参考文件1 钱新贤,杨猛,程兆炜,张少东Visual C+编程疑难详解M 北京:人民邮电出版社, 2 王红梅,胡明,王涛数据结构(C+)M

12、北京:清华大学出版社, 3 程学先数据库原理和技术M北京:中国水利水电出版社, 4 Alex Kriegel & Boris M.TrukhnovSQL BibleM北京:电子工业出版社,5 郑章,程刚,张勇Visual C+6.0数据开发技术M北京:机械工业出版社,1999.96F.Brokken and K.Kubat. C+ Annotations. Version 4.4.0m,ICCE,University of Groningen,Netherlands,1990. 250280附录1:链表结构化设计源程序清单/ 程序名称:Student.CPP / 程序功效:采取链表和文件实现一

13、个简单学生成绩管理系统。 #include #include #include#include#include using namespace std;struct Class int Chinese; int Math; int English;class Studentpublic: Student(); void Ofile(ofstream &of); void Infile(ifstream &f); void Out(); void Set(char *name,int no,Class score); char *GetName(); int GetNo(); Student *

14、Next; protected:char Name20; int No;Class Score ;Student:Student():Next(0) char *Student:GetName()return Name; int Student:GetNo()return No;void Student:Set(char *name,int no,Class score)strcpy(Name,name);No=no; Score=score;void Student:Infile(ifstream &f)fNameNoScore.ChineseScore.MathScore.English;

15、 /将数据输入到文件 void Student:Ofile(ofstream &of)of Name No Score.Chinese Score.Math Score.English; /从文件中提取数据void Student:Out() coutNametNotScore.ChinesettScore.MathttScore.EnglishtNext;while(f1-Next)f1=f1-Next; do p=new Student;cout请输入您要添加学生成绩信息:endl;coutname;while(f2)if(strcmp(f2-GetName(),name)=0)cout该

16、学生已存在,请确定姓名!nn;coutname;break;f2=f2-Next; coutno; coutscore.Chinese; coutscore.Math; coutscore.English; p-Set(name,no,score);f1-Next=p; p-Next=NULL;f1=f1-Next;cout是否继续输入信息?(YN) choose;while(choose=y|choose=Y);Save();cout1.返回主菜单choose;while(choose!=1)cout1.返回主菜单choose;Menu();void Function:Delete() /删

17、除信息函数 char name20; int no;char choose;Student *temp,*p;system(cls);p=temp=Student_First-Next; coutname;coutno;while(temp) if(strcmp(temp-GetName(),name)=0&temp-GetNo()=no) /判定该学生信息是否存在 coutOut(); coutchoose; if(choose=y|choose=Y)p-Next=temp-Next;delete temp;coutNext; Save(); cout1.返回主菜单n2.继续删除choose

18、; while(choose!=1&choose!=2)cout1.返回主菜单n2.继续删除choose;if(choose=1)Menu(); else if(choose=2)Delete(); void Function:Modify() /修改学生信息函数char choose,name20; Student *temp,*p; int no;Class score;system(cls);temp=p=Student_First;coutname;while(temp)if(strcmp(temp-GetName(),name)=0) coutOut(); coutname; cou

19、tno; coutscore.Chinese; coutscore.Math; coutscore.English; temp-Set(name,no,score);break;temp=temp-Next; Save();cout修改成功!endl;cout1.返回主菜单n2.继续修改choose;while(choose!=1&choose!=2) cout1.返回主菜单n2.继续修改choose;if(choose=1)Menu();else if(choose=2)Modify();void Function:Read() /读取信息函数Student *p,*p2; p=Studen

20、t_First; long t; ifstream is(Student.txt,ios:in); if(!is) ofstream os(Student.txt,ios:out); os.close(); return ; while(!is.eof() p2=new Student; p2-Infile(is); p-Next=p2; p2-Next=NULL; p=p-Next;void Function:Save() /保留学生成绩信息函数ofstream of(Student.txt,ios:out); Student *p=Student_First-Next; while(p)p

21、-Ofile(of); p=p-Next; of.close();void Function:Search() int flag(0); char choose; char t120;int t2;system(cls);Student *temp=Student_First-Next; do coutchoose;if(choose=1)coutt1;while(temp)if(strcmp(t1,temp-GetName()=0) flag=1;break;temp=temp-Next; if(flag=0)coutn无该学生信息nendl;elsecoutOut();break;else

22、 if(choose=2)coutt2;while(temp)if(t2=temp-GetNo() flag=1; break;temp=temp-Next; if(flag=0)coutn无该学生信息nendl;elsecoutOut(); break;while(choose!=1|choose!=2); coutn1.返回主菜单n2.继续查询choose;while(choose!=1&choose!=2)cout1.返回主菜单n2.继续查询choose;if(choose=1)Menu(); else if(choose=2) Search(); void Function:Show(

23、) char choose;Student *temp;system(cls);temp=Student_First-Next; if(!temp) cout文件无数据nn endl;cout1.返回主菜单choose; while(choose!=1) cout1.返回主菜单choose; Menu(); elsecoutOut(); temp=temp-Next; cout1.返回主菜单choose;while(choose!=1)cout1.返回主菜单choose;Menu(); void Function:Menu() time_t t; time(&t);char choose; s

24、ystem(cls);cout -版权全部:李卉-endl; coutendl; cout*endl; cout 平顶山学院欢迎你 endlendl; cout 学生成绩信息管理系统 endlendl; cout 显示系统时间和日期: ctime(&t)endl; cout*endlendl;cout请选择您需要操作,选择相关操作请输入相正确括号里阿拉伯数字!endl; coutn; cout 1 录入学生成绩信息:nendl;cout 2 查询学生成绩信息:nendl; cout 3 删除学生成绩信息:nendl;cout 4 修改学生成绩信息:nendl;cout 5 显示全部学生成绩信息

25、:nendl; cout 6 退出系统endl;coutchoose;switch(choose)case 1: Add();break; case 2: Search();break; case 3: Delete();break;case 4: Modify();break;case 5: Show();break; case 6: exit(1);break;default:cout请按要求输入选择项!endl;Menu();void main()Function function; /定义功效接口function.Menu(); /调用主菜单附录2:链表结构化设计源程序清单#defin

26、e LIST_INIT_SIZE 10 /确定分配空间大小#include #include #include #include /getch()#include typedef struct student /学生信息结构体类型 char No100; char name7; float score;typedef struct /定义次序类型sqlist student *stu; /指向数据元素基地址int length; /线性表目前长度int listsize;sqlist;/下面是函数原型申明int Initlist(sqlist &sl); /次序表初始化int creat(sq

27、list &sl);/次序表建立int insertlist(sqlist &sl,student elem,int pos);/次序表插入操作int search(sqlist sl,int pos);/按指定位置删除int dele_elem1(sqlist &sl,int pos,student &elem);/次序表按位置删除操作int dele_elem2(sqlist &sl,char *num,student &elem);/次序表按学号删除int out_list(sqlist sl);/次序表输出操作/主函数/void main() coutnn欢迎使用学生信息查询系统,请按

28、提醒使用!nnn; sqlist sl; Initlist(sl); student s; char number9; int pos; while(1) cout n 以下程序是使用次序表实现:n;cout n 0126程正炉请您选择您要实施操作:n;coutendlendl; cout 1、清空次序表 2、创建次序表 3、插入信息 4、删除信息 5、查找信息 6、显示目前信息 0、退出系统n; coutn; if(n=0)/退出 coutn谢谢您使用,该系统是11电商一班程正炉设计,多谢你使用!n; break; else if(n=1)/清空 cout此操作将清空次序表,您是否继续?输入n表示你要退出,输入其它任意键继续你需要工作n;

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 教育专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服