已阅读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人历年真题汇编带答案解析
- 2025广西百色市食品药品检验所编外聘用人员招聘1人笔试备考试卷附答案解析
- 2025江苏宿迁宿城区人民医院招聘事业编制工作人员57人备考题库附答案解析
- 2026内蒙古锡林郭勒盟西乌珠穆沁旗招聘中小学教师29人备考公基题库附答案解析
- 2025四川天府银行社会招聘(绵阳)参考题库带答案解析
- 2026云南玉溪宸才人力资源咨询管理有限公司招聘森林草原火灾预防专业队队员笔试备考试卷附答案解析
- 2025云南玉溪峨山彝族自治县林业和草原局招聘短期综合应急救援队员20人参考题库附答案解析
- 2025中国科学院新疆天文台特别研究助理、博士后招聘历年真题汇编带答案解析
- 2025内蒙古锡林郭勒盟西乌旗巴音乌拉医院招聘参考题库附答案解析
- BIM大赛考试基本知识题库题
- 孤独症的音乐治疗
- 部编版四年级下册语文分层作业设计单
- JB/T 20013-2017双锥回转式真空干燥机
- GB/T 16507.4-2013水管锅炉第4部分:受压元件强度计算
- GB/T 13006-2013离心泵、混流泵和轴流泵汽蚀余量
- 2022年11月2022中水珠江规划勘测设计有限公司(原水利部珠江水利委员会设计研究院)招聘考前冲刺卷Ⅰ【3套】附带答案详解
- 中医药学概论绪论课件
- 矿山规模划分标准2019
- 电子秤课程设计
- 管道工程安全文明施工专项方案
评论
0/150
提交评论