




已阅读5页,还剩11页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
此文档收集于网络,如有侵权,请联系网站删除C+课程设计报告书题目:学生成绩管理系统 专 业:信息与计算科学 班 级:0208403 学 号: 姓 名: 任课老师: 学生成绩管理系统课程设计报告摘要:本系统主要用于对学生的成绩进行管理。通过本系统,可以将各个学生的成绩记录输入到系统中,保存到文件,便于查阅和相关管理。此外,该系统还能实现对学生成绩记录的显示,查询以及插入或删除学生的成绩记录等功能。一、 问题描述编写一个简单的学生成绩管理系统。学生成绩管理系统有若干学生成绩记录组成,每个记录由学号、姓名、性别和成绩四部分组成,学号不超过11个字符,姓名不超过21个字符,性别为m(male)或f(female),成绩为double型数据。该系统具有以下功能:(1) 程序开始执行时显示如下版权信息和主菜单: *学生成绩管理系统*l *1.添加学生成绩记录 l *2.显示学生成绩记录 l *3.查找学生成绩记录l * 4.删除学生成绩记录 l * 5.保存学生成绩记录l * 6.加载学生成绩记录l * 7.退出学生成绩管理系统 *请输入(17): (2) 通过键盘输入数字17后,程序能够执行相应的功能,执行完后回到上述主菜单继续等待用户输入,输入数字7后退出程序。(3) 选择“添加学生成绩记录”后,输入要插入记录的位置。按程序提示依次输入学号,姓名,性别,成绩,插入记录成功。(4) 选择“显示学生成绩记录”,显示学生成绩表中已有的学生记录的个数,并显示出各个学生记录的相关信息。(5) 选择“查找学生成绩记录”,按提示输入要查找的学生的学号,输入学号,若该学号存在,则输出相应的学生记录,如该学号不存在,则按任意键返回主菜单。(6) 选择“删除学生成绩记录”,按提示输入要删除的学生的学号,输入学号,若改学号存在,则删除相应的学生记录,如果该学号不存在,则按任意键返回主菜单。(7) 选择“保存学生成绩记录”,系统会将已有的学生记录保存在默认的文件名为fname.txt的文件中。(8) 选择“加载学生成绩记录”,系统会提示输入文件名,输入默认的文件名为fname.txt,则可将文件中的相关信息导出。(9) 选择“退出学生成绩管理系统”,按任意键退出系统。二、 解决方案这是一个很实际的编程实例。编程要求很详细,内容也比较多,有一定难度。首先,学生成绩记录是一个复杂的数据结构,至少应包括学号,姓名,性别和成绩。所以,必须建立一个类student,用来记录学号,姓名,性别和成绩。此外还得建立一个类stuscore,用来记录多个学生的成绩记录。1、 建立类学生类student,它至少包括学号number,姓名name,性别sex,成绩chengji。具体如下: class studentpublic:char name21; /姓名char number11; /学号char sex; /性别double chengji; /成绩student *next; /类指针,用来指向下一个记录 student();void init(string &Name,string &Number,char Sex,double Chengji); /输入学生成绩记录virtual student();函数init(string &Name,string &Number,char Sex,double Chengji)用于输入学生记录,相当于一个注册。其具体实现如下:void student:init(string &Name,string &Number,char Sex,double Chengji)int len;len=Name.length();if(len20)len=20; Name.copy(name,len,0); namelen=0;len=Number.length();if(len10)len=10;Number.copy(number,len,0);numberlen=0;sex=(sex=m)?m:f);chengji=Chengji;2、 建立学生成绩记录类stuscore,该类是学生成绩记录的集合。其成员函数则是问题中要求的添加、显示、查找、删除、保存、导出等各种操作。改类具体如下: class stuscore student* head;public:bool add_record();/添加学生成绩记录void display_record();/显示学生成绩记录int length();/学生成绩记录个数bool delete_record();/删除学生成绩记录void save_record();/保存学生成绩记录void load_record();/加载学生成绩记录bool find_record();/查找学生成绩记录stuscore();virtual stuscore();现在就要编写各个功能的函数实体了: 添加学生成绩记录add_record(),建立一个链表:bool stuscore:add_record()int i;int j=1;string Name; string Number;char Sex;double Chengji;student *newnode,*current,*previous;current=previous=head;couti; if(ilength()+1)cout输入的位置不正确!; return false;coutNumber;coutName; coutSex;coutChengji;newnode=new student(); newnode-init(Name,Number,Sex,Chengji); newnode-next=null; if(!newnode)coutnext=head;head=newnode;return true; elsewhile(current&jnext; j+;newnode-next=current;previous-next=newnode;return true; 显示学生成绩记录display_record(),具体实现如下:void stuscore:display_record()student*current;current=head;cout表中有length()条记录!n;if(length()coutsetiosflags(ios:left)setw(15)学号setw(15)姓名setw(12)性别setw(5)成绩endl; while(current) coutnext; 另外,对运算符进行了重载,这样就可以直接用cout输出学生成绩记录,函数重载如下:ostream&operator(ostream&output,const student *addr)outputsetiosflags(ios:left)setw(15)numbersetw(15)namesetw(12)sexsetw(5)chengjiendl;return output; 查找学生成绩记录find_record(),具体实现如下:bool stuscore:find_record()student *current,*previous;string Number;coutNumber;current=previous=head;while(current)if(current-number=Number)coutsetiosflags(ios:left)setw(15)学号setw(15)姓名setw(12)性别setw(5)成绩endl;coutnext;if(!current)cout没有找到该学生!;return false;return true; 删除学生记录delete_record(),具体实现如下:bool stuscore:delete_record()string s;student*current,*previous;current=previous=head;cout成绩表中有length()个学生成绩记录endl;if(!length()cout学生成绩表已空!n;return false;else couts;while(current)if(current-number=s)if(current=head)head=head-next;delete current;coutnext=current-next; delete current;coutnext;if(!current)cout没有找到该学号所对应的学生记录!; return false; return true; 保存学生成绩记录save_record(),具体实现如下:void stuscore:save_record()ofstream file;student*current=head;file.open(./fname.txt,ios:out);if(!file)coutnext;cout保存完成!;file.close(); 加载学生成绩记录load_record(),具体实现如下:void stuscore:load_record()ifstream file;char fname20;student *n;n=new student();coutfname;file.open(fname,ios:in); if(!file) cout文件打开失败!;cin.get();elsecoutsetiosflags(ios:left)setw(21)姓名setw(11)学号setw(5)性别setw(5)成绩endl;while(file&file.peek()!=EOF)file.read(char*)n,sizeof(*n);coutnnext;j+;return j;三、 程序运行结果: 主菜单界面 : 添加学生成绩记录: 显示学生成绩记录: 按照所示再添加几个学生成绩记录,显示结果为: 查找学生成绩记录: 删除学生成绩记录:删除记录后再显示学生成绩记录: 保存学生成绩记录: 加载学生成绩记录: 退出学生成绩系统:四、 课程设计总结这是一个综合性较强,很实际的一个编程实例。刚学C+时候,感觉类和对象还挺有意思的,刚接触到这个题目时,觉得应该没什么大问题吧,因为,我自认为一些基本知识点都已经掌握了。可是,真的当我动手编程的时候,才发现并没有想象中的那么简单。单个知识点是弄清了,但是,将所有的知识点综合起来运用时,就碰到了各种各样的问题了。有时候,一个错误得找好久,才能发现。本系统的重点就是要会建立两个类。一个是学生类student,用来存放一个学生的成绩记录,相当于一个结构体的功能吧。另一个类是学生成绩记录系统类stuscore,该类用来存放多个学生的成绩记录。难点就是stuscore类里的各个功能的实现。总的来说,添加,显示,查找,这三个功能比较容易,但是,删除,保存,加载这三个功能就需要花点心思了,可能是平时用的比较少吧,生疏了。可见只
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年小区防盗试题及答案
- 煤矿标准化考试试题及答案
- 教师招聘之《小学教师招聘》练习题及参考答案详解(预热题)
- 2025年教师招聘之《小学教师招聘》题库综合试卷及参考答案详解【考试直接用】
- 青马工程具体实践方案(3篇)
- 酒店工程部-方案(3篇)
- 2025置换补偿房的个人买卖合同
- 2025年教师招聘之《小学教师招聘》通关题库(预热题)附答案详解
- 2025年教师招聘之《小学教师招聘》综合提升练习题含完整答案详解【名师系列】
- 2025私人运输协议
- 2025年教师节感恩教师主题班会课件
- 2025沈阳各区县(市)工会公开招聘工会社会工作者数量考试参考试题及答案解析
- 2025年中国DDX58抗体行业市场全景分析及前景机遇研判报告
- (2025秋新版)苏教版小学数学二年级上册全册教案
- 《大学美育》第1章
- 城里来了大恐龙
- 门诊发药交待注意事项
- 中小学心理健康教育指导纲要考试试题及答案(整理)
- GA/T 115-2020道路交通拥堵度评价方法
- 食品试验设计与统计分析
- 公安民警心理压力应对Baidu课件
评论
0/150
提交评论