




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C+ 课程设计报告书题目:学生成绩管理系统专业:信息与计算科学班级:0208403学号:020840306姓名:张亚炬任课老师: 文 军学生成绩管理系统课程设计报告摘要: 本系统主要用于对学生的成绩进行管理。通过本系统,可以将各个学生的成绩记录 输入到系统中,保存到文件,便于查阅和相关管理。此外,该系统还能实现对学生成绩 记录的显示,查询以及插入或删除学生的成绩记录等功能。一、 问题描述编写一个简单的学生成绩管理系统。 学生成绩管理系统有若干学生成绩记录组成, 每个记录由学号、姓名、性别和成绩四部分组成,学号不超过 11 个字符,姓名不超过 21个字符,性别为m '(male)或
2、9;'(female),成绩为double型数据。该系统具有以下功 能:(1) 程序开始执行时显示如下版权信息和主菜单:*学生成绩管理系统*1.添加学生成绩记录*2. 显示学生成绩记录*3.查找学生成绩记录* 4. 删除学生成绩记录* 5. 保存学生成绩记录* 6. 加载学生成绩记录* 7. 退出学生成绩管理系统*请输入 (17):2) 通过键盘输入数字 17 后,程序能够执行相应的功能,执行完后回到上述 主菜单继续等待用户输入,输入数字 7 后退出程序。3) 选择“添加学生成绩记录”后,输入要插入记录的位置。按程序提示依次 输入学号,姓名,性别,成绩,插入记录成功。选择“显示学生成绩
3、记录” ,显示学生成绩表中已有的学生记录的个数,绩记录( 5) 选择“查找学生成绩记录” ,按提示输入要查找的学生的学号,输入学号, 若该学号存在,则输出相应的学生记录,如该学号不存在,则按任意键返 回主菜单。( 6) 选择“删除学生成绩记录” ,按提示输入要删除的学生的学号,输入学号, 若改学号存在,则删除相应的学生记录,如果该学号不存在,则按任意键 返回主菜单。( 7) 选择“保存学生成绩记录” ,系统会将已有的学生记录保存在默认的文件 名为 fname.txt 的文件中。( 8) 选择“加载学生成绩记录” ,系统会提示输入文件名,输入默认的文件名为 fname.txt ,则可将文件中的相
4、关信息导出。( 9) 选择“退出学生成绩管理系统” ,按任意键退出系统。解决方案这是一个很实际的编程实例。 编程要求很详细, 内容也比较多, 有一定难度。 首先,学生成绩记录是一个复杂的数据结构,至少应包括学号,姓名,性别和成 绩。所以,必须建立一个类stude nt,用来记录学号,姓名,性别和成绩。此外还得建立一个类stuscore,用来记录多个学生的成绩记录。1、建立类学生类 student,它至少包括学号number,姓名name,性别sex,成绩chengji。具体如下:class studentpublic:char name21;/姓名char number11;/学号char s
5、ex; / 性别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 &a
6、mp;Number,char Sex,double Chengji)int len;len=Name.length(); if(len>20)len=20;Name.copy(name,len,0); namelen=0;len=Number.length(); if(len>10)len=10;Number.copy(number,len,0); numberlen=0;sex=(sex='m')?'m':'f'); chengji=Chengji;2、建立学生成绩记录类 stuscore,该类是学生成绩记录的集合。其成员函数则是问
7、题中要求的添加、显示、查找、删除、保存、导出等各种操作。改 类具体如下:class stuscorestudent* 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
8、();现在就要编写各个功能的函数实体了: 添加学生成绩记录 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;cout<<" 请输入插入的位置 :"cin>>i;if(i<=0|i>length()+1)cout<<" 输入的位置
9、不正确 !" return false;cout<<" 请输入学号 :" cin>>Number;cout<<" 请输入姓名 :"cin>>Name;cout<<" 请输入性别 :"cin>>Sex;cout<<" 请输入成绩 :"cin>>Chengji;newnode=new student();newnode->init(Name,Number,Sex,Chengji);newnode->ne
10、xt=null;if(!newnode)cout<<" 内存已满 !"return false;if(i=1)newnode->next=head;head=newnode;return true;elsewhile(current&&j<i)previous=current; current=current->next; j+;newnode->next=current;previous->next=newnode;return true; 显示学生成绩记录 display_record() ,具体实现如下:voi
11、d stuscore:display_record()student*current;current=head;cout<<" 表中有 "<<length()<<" 条记录 !n"if(length()cout<<setiosflags(ios:left)<<setw(15)<<" 学号 "<<setw(15)<<" 姓名 "<<setw(12)<<" 性别 "<<
12、setw(5)<<" 成绩 "<<endl;while(current)cout<<current;current=current->next;另外,对 <<运算符进行了重载,这样就可以直接用cout 输出学生成绩记录,函数重载如下:ostream&operator<<(ostream&output,const student *addr) output<<setiosflags(ios:left)<<setw(15)<<addr->number<
13、;<setw(15)<<addr->name<<setw(12)<<addr->sex<<setw(5)<<addr->chengji<<endl;return output; 查找学生成绩记录 find_record() ,具体实现如下:bool stuscore:find_record() student *current,*previous;string Number;cout<<" 请输入要查找的学生的学号 :"cin>>Number;curren
14、t=previous=head;while(current)if(current->number=Number)cout<<setiosflags(ios:left)<<setw(15)<<" 学号 "<<setw(15)<<"姓名 "<<setw(12)<<" 性别 "<<setw(5)<<" 成绩 "<<endl;cout<<current;return true;elsep
15、revious=current;current=current->next;if(!current)cout<<" 没有找到该学生 !"return false;return true; 删除学生记录 delete_record() ,具体实现如下:bool stuscore:delete_record()string s;student*current,*previous;current=previous=head;"<<endl;cout<<" 成绩表中有 "<<length()<
16、<" 个学生成绩记录if(!length()cout<<" 学生成绩表已空 !n"return false;elsecout<<" 请输入要删除的学生记录的学号 :"cin>>s;while(current)if(current->number=s)if(current=head)head=head->next;delete current;cout<<" 删除成功 !"return true;elseprevious->next=current->
17、;next;delete current;cout<<" 删除成功 !"return true;elseprevious=current;current=current->next;if(!current)cout<<" 没有找到该学号所对应的学生记录 !"return false;return true; 保存学生成绩记录 save_record() ,具体实现如下: void stuscore:save_record()ofstream file;student*current=head;file.open("
18、./fname.txt",ios:out);if(!file)cout<<" 打开文件失败 !"cin.get();elsewhile(current)if(file&&!file.eof()file.write(char*)current,sizeof(*current);current=current->next;cout<<" 保存完成 !"file.close(); 加载学生成绩记录 load_record() ,具体实现如下:void stuscore:load_record()ifstr
19、eam file;char fname20;student *n;n=new student();cout<<" 请输入要打开的文件名 (fname.txt):"cin>>fname;file.open(fname,ios:in);if(!file)cout<<" 文件打开失败 !"cin.get();else姓名 成绩 "<<endl;cout<<setiosflags(ios:left)<<setw(21)<<""<<setw
20、(11)<<" 学号 "<<setw(5)<<" 性别 "<<setw(5)<<" while(file&&file.peek()!=EOF)file.read(char*)n,sizeof(*n);cout<<n<<endl;file.close(); 计算学生成绩记录的个数 length() ,具体实现如下:int stuscore:length()int j=0;student*current;current=head;while(current)current=current->next;j+;return j;程序运行结果:王采单界面添加学生成绩记录:0-亚炬 DJ2OS4 D30 K + DebiiR 5tudent see res. ei e号£盘爰 -3插罕姓性冼邑 遥 ZKXA入XX住 2请憊备於12TH 显示学生成绩记录: 按照所示再添加几个学生成绩记录,显示结果为:查找学生成绩记录:删除学生成绩记录:O *"a寻功1删除记录后再显示学生成绩记录:保存学生成绩记录:J ifc-S-性:了IF
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 湖南省长沙市望城区长郡斑马湖中学2024-2025学年高二上学期开学考试语文试题(原卷版)
- 奇幻小镇美术课件
- 解密CFA考试的特点和优势试题及答案
- 2025届河北省秦皇岛市昌黎县高三下学期第一次模拟考试地理试卷(解析版)
- 【地理】广东省两校2024-2025学年高三上学期1月第一次模拟考试试题(解析版)
- 2024年特许金融分析师考试分析工具试题及答案
- 理论与实践结合的特许金融分析师试题及答案
- 精确识别CFA试题及答案
- 心理教育的探索与实践
- CFA课程结构与安排试题及答案
- 2025届江苏省七市高三第二次调研测试物理+答案
- 阳光心理 健康人生-2025年春季学期初中生心理健康教育主题班会课件
- 人教部编版小学语文一年级下册第一次月考达标检测卷第一、二单元试卷含答案
- 2025年衢州职业技术学院单招职业倾向性测试题库完美版
- 2025年特种工塔吊考试题及答案
- 玉盘二部合唱正谱
- 《观照自然》课件2024-2025学年人美版(2024)初中美术七年级下册
- 西宁市城北区2025年招考编制外工作人员高频重点模拟试卷提升(共500题附带答案详解)
- 来访人员安全入场教育
- 《数据安全法》参考试题库150题(带答案)
- 青龙山经营性公墓项目融资策划分析报告
评论
0/150
提交评论