C++学生成绩管理系统课程设计报告.pdf
《C++学生成绩管理系统课程设计报告.pdf》由会员分享,可在线阅读,更多相关《C++学生成绩管理系统课程设计报告.pdf(33页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、C+面向对象程序设计课程设计 设计题目:成绩管理系统 专 业:计算机科学与技术 班 级:0314401 学 号:031440122 姓 名:贺超 日 期:2015 年 10 月 25 日2015 年 12 月 25 日 成 绩:目录 一、选题背景 3 二、方案论证 3 1。系统主控平台 3 2。增加学生成绩信息 3 3.显示学生信息 3 4。查询学生信息 3 5 修改学生信息 4 6。删除学生信息 4 7。学生信息按总分排序 4 8.保存数据到文件与将文件数据装入学生数组 4 三、过程论述 5 1。系统学生信息类设计:5 2。添加学生信息模块:7 3。删除信息模块:13 4。修改信息模块 15
2、 5。查找学生信息 17 6。显示学生信息模块 19 7。学生信息排序模块 21 8。保存信息模块 26 9.读取信息模块 27 四、结果分析 29 1.系统主函数 29 2.添加学生信息 29 3。删除学生信息 30 4.修改学生信息 30 5。查找学生信息 31 6.显示学生信息 31 7。学生信息排序 32 8.学生信息排序 32 五、课程设计总结 33 参考文献 33 一、选题背景 学生成绩管理系统是对学生信息及成绩的管理。开发工具Visual C+.主要用于对学生的学号、姓名等基本信息以及各个学科成绩进行增加、删除、修改、查询以及保存到文件等操作。系统给用户提供一个人机界面,使用户可
3、以根据提示输入操作项,调用系统提供的管理功能。二、方案论证 本系统采用 c+控制台程序来实现程序所需的所有要求,具体实现如下:1.系统主控平台 通过主菜单允许用户选择想要的操作。包括输入学生信息、显示学生信息、查询学生信息、修改学生信息、删除学生信息、显示所有学生信息、统计各个分数段学生信息、学生按总分排序输出。通过输入相应的序号选择相应的操作。2.增加学生成绩信息 用户根据提示输入学生的学号、姓名、性别、4 门课程的成绩(课程名称自定)。输入完一条学生记录,保存在学生数组中,可选择继续输入下条学生记录还是退回到主菜单.3.显示学生信息 将保存在学生数组中的学生记录逐行显示出来。若数据很多,应
4、该每显示若干行后暂停,按回车后继续显示后续内容。4。查询学生信息 先询问按学号、姓名、成绩做查询,若按学号查询,则输入要查找的学号,然后在学生数组中找到该学号的学生记录,显示出该学生的信息。若找不到该学号信息,则显示无此学号。若按姓名查询,则输入要查找的姓名,然后在学生数组中找到该姓名的学生记录,显示出该学生的信息。若找不到该姓名信息,则显示无此姓名。若按成绩查询,则输入要查找的科目及成绩范围,然后在学生数组中找到该成绩范围的学生记录(可以有多个学生),显示出相关学生的信息。若找不到信息,则显示无此成绩。每次查询完,询问是否继续查询,是则继续下轮查询,否则退回主菜单。5 修改学生信息 先提示输
5、入要修改的学生的学号,在学生数组中找出该学生记录,若找到,则重新输入学生的姓名、性别、4 门课程的成绩等。然后保存到学生数组的该学生记录中.若找不到,则显示无此学号。6。删除学生信息 先提示输入要删除的学生的学号,在学生数组中找出该学生记录,若找到,则在学生数组中删除该学生记录。若找不到,则显示无此学号。7。学生信息按总分排序 在本模块中,系统自动遍历信息链表并排序来对链表中所有的信息进行排序,并在排序后显示排序后的所有信息。8。保存数据到文件与将文件数据装入学生数组 在系统退出前,先将学生数组的学生信息保存的文件中.然后结束系统。每次进入系统时,先将文件中的学生数据装入学生链表中,然后才进入
6、系统的主菜单.本系统的数据存储利用类对象链表,定义学生信息类,将学生信息定义为类的成员变量,并定义初始化信息、修改信息、显示信息、计算总分、计算平均分这几个类成员函数,方便数据的增加与修改.系统中录入学生数据前会在系统类对象链表中检测是否存在与输入的学号相同的信息,如果存在并继续输入了信息,则会出现信息的重复和搜索不到的情况,因此,设置数据检查环节可以避免数据的重复录入,当出现输入了重复的数据时,会有系统提示,提示输入的信息已存在并提供重新输入的机会;另在输入学号查找和删除部分,如果系统在检测类对象链表的时候未发现系统中包含输入的学号,则输出提示,输入的信息在系统中不存在;系统在学生信息查询部
7、分,有根据学生成绩查询所有符合条件的学生信息,这部分存在输入分数的上下限问题,必须存在上限大于等于下限,并且上下限必须都在分数的范围内,因此每次输入一个分数都设置一个判断语句来判断是否符合条件,如果不符合提示重新输入。本系统开发环境:VC+6.0 使用开发语言:C+三、过程论述 详细设计:学生成绩管理系统添加学生信息删除学生信息修改学生信息查询学生信息显示学生信息成绩信息排序退出读取成绩信息保存到文件中 图 1 系统模块图 如图 1,本系统分为添加学生信息模块、删除学生信息模块、修改学生信息模块、查找学生信息模块、显示学生信息模块、学生信息排序、统计学生信息七个主要实现功能的模块,每个模块分别
8、有个主函数,用来实现这个模块的信息。1。系统学生信息类设计:class Menu public:int TheMenu();void Work();void Save();void Read();int ReadOnePart(int nPass,char cOneLine,int n,char cC,int m);int nEnd;int nChoose;Menu();Menu();protected:void Insert();void Revise();void Delete();void Search();void Show();;Menu::Menu()nEnd=1;nChoose=
9、0;Menu:Menu()class Worker:public Menu public:int TheMenu();void Work();protected:void Insert();void Revise();void Delete();void Search();void OrderInChinese();void OrderInEnglish();void OrderInMath();void OrderInSum();void Show();class Information /数据:public:char cNum12;/学号 char cName12;/姓名 char cSe
10、x12;/性别 int nChinese;int nMath;int nEnglish;int nSum;Information*pSNext;2.添加学生信息模块:输入学号比较是否存在存在与否将添加的信息添加到链表输出学号已存在不存在存在 图 2 添加学生信息流程图 添加信息的时候会检测系统中是否含有同样学号的学生信息,如果不存在才可以添加,如果已经存在,需要输出提示。添加学生信息函数:void Worker::Insert()int nCheck=0;/用于判断是否存在 int nScore1;int nScore2;int nScore3;float nSum;cout ”*endl;c
11、out ”请输入学号:*cNum;pSSearch=pSHead;/遍历指针指向头指针,开始遍历链表 while(pSSearch!=NULL)if(strcmp(pSSearch-cNum,cNum)=0)/如果等于 0 表示两边字符数组相等,即存在 cout ”*”endl;cout 输入的学号已存在!*endl;cout *”pSNext;/令遍历指针指向下一个节点 /查找不存在再插入信息,因此 nCkeck 为 0 if(nCheck=0)/向链表中插入值 cout ”请输入姓名:”cName;cout *请输入性别:*”cSex;cout ”*请输入语文成绩:endl;cin nCh
12、inese;cout nMath;cout ”*请输入英语成绩:”nEnglish;nSum=nChinese+nMath+nEnglish;pSSearch=pSHead;/遍历指针指向头指针 pSFormer=pSHead;/最开始初始化为指向头指针 if(pSSearch=NULL)/如果头指针为空的话,直接把数据插入链表 pToThis=(Information*)malloc(nSize);/开辟一个节点大小的内存区 pSHead=pToThis;/令头指针指向第一个节点 pToThis-pSNext=NULL;/此时链表内只存在一个节点,因此该节点的指针不指向任何节点 for(in
13、t i=0;i nChinese=nChinese;pToThis-nMath=nMath;pToThis-nEnglish=nEnglish;pToThisnSum=nSum;else /当头指针不是空的时候,即链表内存在节点,需要遍历节点,我们插入默认按照学号由小到大排序 while(pSSearch!=NULL)if(strcmp(pSSearch-cNum,cNum)0)/表示新节点的编号大于正遍历的节点,要插在这个节点之前 /插入条件符合,缓存信息小于正在搜索的信息,则插入消息 if(pSSearch=pSHead)/如果查找的指针等于头指针 pToThis=(Information
14、)malloc(nSize);pSHead=pToThis;pToThis-pSNext=pSSearch;/令新节点的指针指向刚才正在遍历的节点,让新的节点连入链表 for(int i=0;i nSum=nSum;break;else /当搜索的节点并非首节点 pToThis=(Information*)malloc(nSize);pToThis-pSNext=pSSearch;pSFormerpSNext=pToThis;for(int i=0;i 12;i+)/字符数组一位一位的赋值进去,不可以直接赋值 /缓存区数据存入节点中 pToThiscNumi=cNumi;pToThis-cNa
15、me i=cNamei;pToThiscSexi=cSexi;pToThisnChinese=nChinese;pToThisnMath=nMath;pToThisnEnglish=nEnglish;pToThisnSum=nSum;break;pSFormer=pSSearch;/指向前一个节点的指针指向当前节点 pSSearch=pSSearchpSNext;/当搜寻的尾节点仍然没有打到插入要求 if(pSSearch=NULL)pToThis=(Information*)malloc(nSize);pSFormer-pSNext=pToThis;pToThis-pSNext=NULL;f
16、or(int i=0;i cNumi=cNumi;pToThis-cNamei =cNamei;pToThiscSexi=cSexi;pToThis-nChinese=nChinese;pToThis-nMath=nMath;pToThis-nEnglish=nEnglish;pToThis-nSum=nSum;break;cout ”*”endl;cout ”信息添加成功!endl;cout *endl;cout ”*”endl;3。删除信息模块:输入需要删除的学号比较是否存在存在与否删除该节点数据输出该学号信息不存在存在不存在结束 图 3 删除信息流程图 在删除信息模块中,首先输入需要删除
17、的学生学号,在信息链表中查询,如果存在,则删除需要删除的信息,如果不存在,则提示所需要删除的信息不存在。删除信息函数代码:void Worker::Delete()cout *endl;cout 请输入需要删除的学号:”cNum;pSSearch=pSHead;pSFormer=pSHead;while(pSSearch!=NULL)if(strcmp(pSSearchcNum,cNum)=0)if(pSFormer=pSHead)/如果被查到的节点是第一个节点,pFormer是头指针 pSHead=pSSearchpSNext;else pSFormer-pSNext=pSSearchpSN
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 学生 成绩管理系统 课程设计 报告
限制150内