《学生信息管理系统C++设计报告.doc》由会员分享,可在线阅读,更多相关《学生信息管理系统C++设计报告.doc(24页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、课程名称:C+语言程序设计设计题目: 学生成绩信息管理系统 院 系: 计算机与通信工程系 专 业: 年 级: 姓 名: 指导教师: 课 程 设 计 任 务 书专业 姓名 学号 开题日期: 年 月 日 完成日期: 年 月 日题 目 学生成绩信息管理系统 一、设计的目的使用C+语言编写一个基于控制台的简单程序,使学生掌握简单的程序设计技巧。同时设计一个简单的学生成绩信息管理系统,可以实现管理学生成绩的基本功能,比如学分管理、绩点管理、排名管理等。适合班级统计成绩使用,能够减少统计工作量,节约统计时间,是一款实用的小型程序。二、设计的内容及要求 本程序是学生成绩信息管理系统,能够实现一些基本的学生成
2、绩信息管理功能,比如信息录入、学分管理、绩点管理、排名管理、以及信息输出等等。本程序界面简洁、一目了然,功能基本齐全,设计合理,充分考虑到了各种在录入信息时可能出现的问题,编写了修正录入信息的语句,是一款实用的小程序,适合班级统计学生成绩信息实用,减少统计工作量,节约统计时间。 三、指导教师评语 四、成 绩 指导教师 (签章) 年 月 日摘 要4第1章 软件设计内容511软件达到的目的512 软件功能说明51.2.1 功能分析说明图51.2.2 各项功能说明613软件功能的验收标准62.1 设计环境与模块的划分72.1.1 软件设计环境72.1.2 软件模块的划分72.2 软件设计主要原理82
3、.2.1 采用的主要数据结构类型82.2.2 各个模块之间的调用关系和数据储存格式说明82.2.3 主要流程图8第3章 软件的设计过程113.1 各软件模块之间的调用方式113.2 软件中实现各项功能的函数与程序代码12第4章 设计结果与分析2041软件使用结果20总 结24摘 要本论文分别对软件的需求进行分析,对软件的概要设计和软件的详细设计进行阐述,以及对软件的组装及测试的详细叙述,并附加了软件的使用说明书(操作手册)。程序设计一般由两部分组成:算法和数据结构,合理选择和实现一个数据结构与处理这些数据结构具有同样的重要性。以将每个功能分别编译实现,再通过函数包含,调用等方法实现各项功能间的
4、连接为设计思想,并采用将学生当作一个整体,整体类型为结构体,结构体中的域表示学生的属性的这种定义结构作为数据结构。软件将各个模块的功能分为列菜单、表明结构体、录入、排序、查询、插入及读取等来组成整个程序,实现对学生成绩的系统管理。该程序界面友好,易于操作,使操作者和使用者应用更加方便。关键词:课程设计; 成绩管理;第1章 软件设计内容11软件达到的目的该软件主要是实现对学生成绩进行系统化的管理,首先可以对学生基本信息进行输入和存取,其次可以读取显示学生的相关信息,然后可以删除和插入学生的相关信息,还有就是可按学号或姓名查询此学号的学生的相关信息,并按照总成绩算出的平均分和绩点的高低进行排序。由
5、此来系统化管理学生成绩,并达到简易操作的目的。12 软件功能说明1.2.1 功能分析说明图该软件功能分析说明图如1-2-1所示:退出系统学生成绩排名学生信息查找追加信息信息删除按平均分按绩点按姓名按学号学生 基本信息录入与保存读取学生信息学生成绩信息管理系统 图:1-2-11.2.2 各项功能说明(1)学生基本信息的录入和保存:这部分的功能主要包括信息的录入和保存和平均分、平均分的计算,首先按程序提示输入所要输入的学生人数,接着是分别输入有关学生的相关信息包括学号、姓名、性别以及学生各科学分以及分数等。在录入数据的同时,系统将对信息的合法性进行检验(学号范围为、姓名在7个字节之内、性别只能输入
6、m(男male)或f(女fmale)、各科成绩均限定在0100之间),若用户录入了不合法的数据系统将会作出提示,并且要求重新输入。如果合法性成立则录入完毕后系统将显示全部学生相关信息,信息中已包含对学生成绩平均分的计算和其平均分以及绩点的计算结果。最后输出学生的信息表,与是否保存提示,选择存盘后,系统则自动将学生信息存入(list.dat)电脑。(2)提取全部信息: 此功能是将原录入并保存的的学生信息读出,并在屏幕上显示出来。(3)删除学生信息: 进入该项功能界面后,用户可以通过学生的姓名对某个学生的信息进行删除。(4)增加学生信息:进入插入界面,系统将提示输入新学生的相关信息,程序则会将新的
7、信息插入原学生信息清单中,并将新的学生信息列表输出,以方便用户的确认。(5)按学号查找学生信息: 此项功能可以根据用户输入的学生学号查出该学生的所有信息。(6)按姓名查找学生信息: 此项功能可以根据用户输入的学生姓名查出该学生的所有信息。(7)按平均分排名 选择次项功能后,系统将自动在屏幕上显示出所有学生按照平均分的高低排序后的清单。(8)按绩点排名 选择此项功能后,系统将自动在屏幕上显示出所有学生按照绩点的高低排序后的清单。(9)退出系统,结束任务。13软件功能的验收标准一、有较为美观简洁大方的菜单,能保证用户方便、直观、快捷的熟悉并使用软件的各项功能。二、有严密正确的数据验证功能和数据处理
8、功能,能够求和、求平均成绩,对总成绩进行排序,对数据进行保存和读取,能按学号查找学生信息,以及插入和删除学生信息。三、系统要有一定的可靠性。第2章 软件设计环境与原理2.1 设计环境与模块的划分2.1.1 软件设计环境 Microsoft Visual C+ 6.02.1.2 软件模块的划分该软件主要组成模块和各个模块之间的调用关系如图2-1:退出程序成绩排序查找学生信息增加学生信息删除学生信息提取学生信息学生基本信息录入主函数(包括以下所有函数)主菜单学生成绩信息管理系统其中学生基本信息的录入和保存里已经包含了平均分、平均分和绩点的计算、按学号排序输出的处理。2.2 软件设计主要原理2.2.
9、1 采用的主要数据结构类型该程序采用的是结构体类型来处理学生的所有基本信息,如下所述。包含的库函数有:#includecstring #includeiostream #includestdlib.h#includeiomanip 包含的函数有:Main()Cout_all_information() 提取所有学生的信息Rank_() 按绩点排名输出函数Rank_score() 按平均分排名输出函数Search_name() 按姓名查找信息函数Search_number() 按学号查找信息函数Add_student() 增加学生信息函数Free() 删除内存空间,并退出Get_rank() 输
10、出班级排名函数包含的类: class Student() 包含的结构体 struct STU()2.2.2 各个模块之间的调用关系和数据储存格式说明各函数模块之间的调用关系主要是主函数调用所有其它功能函数和菜单函数,并利用循环使各个功能函数运行完毕后都会回到菜单。该程序的数据以二进制储存。2.2.3 主要流程图开始一、主函数是否创建信息(y/n)选择功能创建学生信息yn安全退出增加学生信息按学号查找按姓名查找按平均分排名按绩点排名提取全部信息结束图2-2 主函数流程图结束提示保存输出学生信息输入学生人数及信息开始二、函数的输入和保存 三、提取学生信息 四、数据的删除开始开始五、根据平均分排序六
11、、根据绩点排序选择操作然后进行相应操作选择操作然后进京相应操作输出排序后的学生信息将输入的学生信息按照绩点高低排序选择操作2选择操作3输出排序后的学生信息将输入的学生信息按照平均分高低排序七、查找学生信息函数结束选择操作输出相应学生信息按提示输入姓名或学号选择操作4或操作5开始八、退出函数 九、学生信息追加结束选择操作输出追加后的学生信息进行追加数据处理输入要追加的学生人数及信息选择相应操作开始结束退出程序选择相应操作开始第3章 软件的设计过程3.1 各软件模块之间的调用方式程序中各个模块之间的调用方式主要是通过文件的包含和函数的调用实现的,用文件的形式把各个函数分开,再用头文件把它们包含进来
12、,使用主函数进行调用。3.2 软件中实现各项功能的函数与程序代码一、一个包含学生基本信息的类class Studentprotected:char sex;/M or Fint grade;/年级int score20;/各科分数int learn20;/存放学分public:char name10;/姓名unsigned long double Number;/学号float all_score;/各科总学数float learn_score;/总学分float base_score;/总绩点public:Student();/构造函数Student();/析构函数void Set_info
13、rmation();/设置学生信息void Get_information();/提取学生信息void Set_grade( );/设置年级void Get_grade(); /提取年级函数void Set_Name(); /设置姓名函数void Get_Name(); /提取姓名函数void Set_Number();/设置学号函数void Get_Number(); /提取学号函数void Set_sex();/设置性别void Get_sex();/提取性别void Set_score();/设置各科分数void Get_score();/输出成绩void Get_all_score()
14、;/总成绩void Get_base_score();/总绩点double Return_base(int score);/绩点获得;二、输入学生信息函数STREC * creat(int n,int count)/创建n个结点 STREC *h,*p,*q; int i=1,temp_count=count+1; h=p=(STREC*)malloc(sizeof(STREC); p-count=temp_count+; cout请输入第1个学生的信息:student.Set_information();/输出第一个学生信息p-frt=NULL; while(icount=temp_coun
15、t+;cout请输入第i+1个学生的信息:student.Set_information();/输出第学生信息i+; p-next=q; q-frt=p;p=q; last_count=p-count;/记录最后一个学生是第几个 p-next=0; return h;三、提取学生信息函数void Student:Get_information()/提取学生信息cout*此学生信息输出如下.*endl;Get_Name(); /设置姓名函数Get_Number();/设置学号函数Get_sex();/设置性别Get_grade( );/设置年级coutendl;cout各科成绩如下.endl;c
16、outendl;Get_score();/输出成绩coutendl;cout总成绩是:all_scoreendl;cout总绩点是:base_scoreendl;cout*此学生信息输出完毕.*student.Get_information();/提取学生信息coutendl;coutnext;q=p;cout*学生信息提取完毕.*endlstudent.base_score;p=p-next;count=i;p=h;for(i=0;i100;i+) for(j=i;j100;j+)if(rankirankj)temp_score=ranki;ranki=rankj;rankj=temp_sc
17、ore;for(i=0;istudent.base_score=ranki)break;elseq=q-next;cout第 i+1 名是:student.Get_information();coutendlendl;q=h;for(j=i;jstudent.base_score=rankj+1)break;elseq=q-next; cout第 i+1 名是:student.Get_information();coutendlstudent.base_score=ranki)break;elseq=q-next;cout第 i+1 名是:student.Get_information();c
18、outendlstudent.all_score;p=p-next;count=i;p=h;for(i=0;i100;i+)for(j=i;j100;j+)if(rankirankj)temp_score=ranki;ranki=rankj;rankj=temp_score;for(i=0;istudent.all_score=ranki)break;elseq=q-next;cout第 i+1 名是:student.Get_information();coutendlendl;q=h;for(j=i;jstudent.all_score=rankj+1)break;elseq=q-next;
19、cout第 i+1 名是:student.Get_information();coutendlstudent.all_score=ranki)break;elseq=q-next;cout第 i+1 名是:student.Get_information();coutendlendl;q=h;七、按姓名查找学生信息void Search_name(STREC *h)/按姓名查找void Get_rank(STREC *h);/输出班级排名char temp_name10;STREC *p;int i,j=0;/j用于标记是否找到该学生cout请输入要查询的学生的姓名.next)for(i=0;i
20、student.namei!=temp_namei)break;if(i=strlen(temp_name)p-student.Get_information();Get_rank(p);j=1;break;if(j=0)cout对不起,没有找到此学生信息,请检查后再查询.endl;八、按学号查询学生信息void Search_number(STREC *h)/按学号查找void Get_rank(STREC *h);/输出班级排名STREC *p;int i=0,temp_number;/j用于标记是否找到该学生cout请输入要查询的学生的学号.temp_number;p=h;for(;p;
21、p=p-next)if(p-student.Number=temp_number)p-student.Get_information();Get_rank(p);i=1;break;if(i=0)cout对不起,没有找到此学生信息,请检查后再查询.endl;九、增加学生信息函数void Add_student(STREC *h)/增加学生信息int n;/增加的学生人数STREC *p=h;cout请输入要增加的学生人数.n;while(p-next)p=p-next;p-next=creat(n,last_count);十、删除学生信息STREC * Free_student(STREC *
22、h)/按学号删除学生信息char mmm;/标记是否删除最后一个学生STREC *p=h;unsigned long double temp_number;cout请输入要删除的学生的学号.temp_number;while(1)while(p)if(p-student.Number=temp_number)break;p=p-next;if(p=NULL)cout对不起找不到此学生信息,请检查后重新输入.temp_number;else break;if(p-next=NULL)if(p-frt=NULL)cout这是最后一个学生的信息了,确定删除(y/n)mmm;if(mmm=y)exit
23、(0);elseif(mmm=n)goto loop;elsep-frt-next=NULL;elseif(p=h)h-next-frt=NULL;h=h-next;elsep-frt-next=p-next;p-next-frt=p-frt;cout此学生的信息已经成功删除.next;while(q)free(p);p=q;q=q-next;exit(0);第4章 设计结果与分析41软件使用结果在此,我们将把软件使用过程写出,并对此程序的一些细节和具体的操作方法加以说明,说明如下:1、 将软件进行初始化。2、 进入程序,界面如图4-1-1:(1) 首先输入“y”,创建学生信息;(2) 输入学
24、生人数,然后逐个输入学生基本信息。注:必须遵循录入信息的合法性,详细见程序提示。学生信息录入之后,进入菜单页面,键入相应数字即可选择相应功能:总的功能有:提取全部信息。按绩点排名。按平均分排名。按姓名查找按学号查找。 增加学生信息。安全退出。按学号删除信息。(1) 提取全部信息,按1,则会逐个输出学生信息:(2) 键入2,选择按绩点排名,则将逐个输出排名信息(3) 键入3,则将会根据平均分排名逐个显示学生信息;(4) 键入4,则将会根据姓名查找学生信息然后显示;(5) 键入5,则将会根据学号查找学生信息并显示;(6) 键入6,则将会出现如下提示:输入想要增加的学生人数,然后逐个输入学生信息。(
25、7) 键入8,按学号删除信息;(8) 键入7则将会安全退出菜单界面:用户完即成当前操作,结束程序运行。总 结半个多月的C+课程设计结束了。我们这个小组选择的是学生成绩信息管理系统这个程序,一个非常简单实用的小程序。经过两个学期的编程语言学习,编写这么一个小程序,对我们来说,其实不应该算是一件很困难的事情,但是在我们小组编写的过程中,我们也的确遇到了很多难题,但是都通过查阅资料,小组讨论以及请教老师解决了。这次基本编写成功的这个学生成绩信息管理系统,总的对我们小组成员来说,是非常高兴和值得自己肯定的一件事的,它基本满足了界面友好,易于操作的要求,因此更利于用户操作方便,运行简易,从而达到对学生成绩更加有效系统的管理,并且速度更快内容更直接地达到用户所想要的效果。在该软件中我们实现了对学生信息的输入和存取、读取,对学生相关信息的删除和插入,并且可以按学号查询学生的相关信息,以及按平均分的高低对学生成绩进行排序等的功能。虽然这不是一个很出色的程序,但是确实是我们亲自编写的。当然,程序中还是存在或大或小的问题,比如,程序运行界面不是十分简洁清晰,不能做到让人一目了然,还有就是程序功能还不是十分完善等等。但是我相信,我们下一次的任务一定会完成的更好,毕竟,只有通过不断地修改错误,才能不断地进步!在此,我们小组三位成员在此衷心感谢在这次课程设计中对我们不吝指导的老师和各位同学。
限制150内