《C++学生成绩管理系统课程设计报告24928.pdf》由会员分享,可在线阅读,更多相关《C++学生成绩管理系统课程设计报告24928.pdf(21页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精品文档 好文档 枣 庄 学 院 信息科学与工程学院 课程设计任务书 题目:组 员:崔浩、孙睿、韩丰壮 专 业:网络工程 课 程:C+语言程序设计 指导教师:马怀志 职称:助 教 完成时间:2013 年 5 月-2013 年 6 月 枣庄学院信息科学与工程学院制 精品文档 好文档 年 月 日 课程设计任务书及成绩评定 课程设计的任务和具体要求(学生根据实际情况填写)编写一个简单的学生成绩管理系统。学生成绩管理系统有若干学生成绩记录组成,每个记录由学号、姓名、性别和成绩四部分组成,学号不超过 11 个字符,姓名不超过 21 个字符,性别为m(male)或f(female),成绩为double型数
2、据;系统具有添加、显示 查找、记录、删除、保存、加载学生成绩记录,退出学生成绩管理系统的功能 指导教师评语 成绩:指导教师签字:日期:精品文档 好文档 课程设计所需软件、硬件等 一台电脑配备 Visual c+6.0软件,课程设计进度计划 起止日期 工作内容 备注 6-6至 6-8 小组收集资料 6-9 组内商量整体规划课程设计 6-10至 6-11 组内分工做各自负责的工作 6-12至 6-13.组内汇总各自所做的成果 6-14至 6-15 小组用visualc+6.0调试 6-16 撰写任务书 参考文献、资料索引 序号 文献资料名称 编著者 出版单位 1 C+语言程序设计 温秀梅、丁学钧、
3、李建华 清华大学出版社 2 C+程序设计教程(第二版)罗建军等 高等教育出版社 3 百度文库 未知 未知 精品文档 好文档 目 录 一、摘要.二、问题描述 精品文档 好文档 1.摘要 本系统主要用于对学生的成绩进行管理。通过本系统,可以将各个学生的成绩记录输入到系统中,保存到文件,便于查阅和相关管理。此外,该系统还能实现对学生成绩记录的显示,查询以及插入或删除学生的成绩记录等功能。2.问题描述 编写一个简单的学生成绩管理系统。学生成绩管理系统有若干学生成绩记录组成,每个记录由学号、姓名、性别和成绩四部分组成,学号不超过 11 个字符,姓名不超过 21 个字符,性别为m(male)或f(fema
4、le),成绩为 double 型数据。该系统具有以下功能:程序开始执行时显示如下版权信息和主菜单:*学生成绩管理系统*1.添加学生成绩记录 *2.显示学生成绩记录 *3.查找学生成绩记录 *4.删除学生成绩记录 *5.保存学生成绩记录 *6.加载学生成绩记录 *7.退出学生成绩管理系统 *请输入(17):通过键盘输入数字 17 后,程序能够执行相应的功能,执行完后回到上述主菜单继续等待用户输入,输入数字 7 后退出程序。选择“添加学生成绩记录”后,输入要插入记录的位置。按程序提示依次输入学号,姓名,性别,成绩,插入记录成功。选择“显示学生成绩记录”,显示学生成绩表中已有的学生记录的个数,并显示
5、出各个学生记录的相关信息。选择“查找学生成绩记录”,按提示输入要查找的学生的学号,输入学号,若该学号存在,则输出相应的学生记录,如该学号不存在,则按任意键返回主菜单。选择“删除学生成绩记录”,按提示输入要删除的学生的学号,输入学号,若改学号存在,精品文档 好文档 则删除相应的学生记录,如果该学号不存在,则按任意键返回主菜单。选择“保存学生成绩记录”,系统会将已有的学生记录保存在默认的文件名为 fname.txt 的文件中。选择“加载学生成绩记录”,系统会提示输入文件名,输入默认的文件名为 fname.txt,则可将文件中的相关信息导出。选择“退出学生成绩管理系统”,按任意键退出系统。3.解决方
6、案 这是一个很实际的编程实例。编程要求很详细,内容也比较多,有一定难度。首先,学生成绩记录是一个复杂的数据结构,至少应包括学号,姓名,性别和成绩。所以,必须建立一个类 student,用来记录学号,姓名,性别和成绩。此外还得建立一个类 stuscore,用来记录多个学生的成绩记录。3.1建立类学生类 student 它至少包括学号 number,姓名 name,性别 sex,成绩 chengji。具体如下:class student public:char name21;/姓名 char number11;/学号 char sex;/性别 double chengji;/成绩 student*
7、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.leng
8、th();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;3.2建立学生成绩记录类 stuscore 该类是学生成绩记录的集合。其成员函数则是问题中要求的添加、显示、查找、删除、保存、导出等各种操作。改类具体如下:class stuscore student*head;public:bool add_record();/添加学生成绩记录
9、 void display_record();/显示学生成绩记录 int length();/学生成绩记录个数 bool delete_record();/删除学生成绩记录 void save_record();/保存学生成绩记录 void load_record();/加载学生成绩记录 bool find_record();/查找学生成绩记录 stuscore();virtual stuscore();精品文档 好文档 ;3.3编写各个功能的函数实体 3.3.1添加学生成绩记录 add_record()建立一个链表:bool stuscore:add_record()int i;int j=
10、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
11、;head=newnode;return true;Else while(current&jnext;j+;newnode-next=current;previous-next=newnode;return true;精品文档 好文档 3.3.2显示学生成绩记录 display_record()具体实现如下:void stuscore:display_record()student*current;current=head;cout表中有length()条记录!n;if(length()coutsetiosflags(ios:left)setw(15)学 号 setw(15)姓 名 setw(
12、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;3.3.3查找学生成绩记录 find_record()具体实现如下:bool stuscore:find_record()stude
13、nt*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;3.3.4删除学生记录 delete_record()具体实现如下:精品文档 好文档 bool stuscore
14、: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没有找到该学
15、号所对应的学生记录!;return false;return true 3.3.5保存学生成绩记录 save_record()具体实现如下:void stuscore:save_record()ofstream file;student*current=head;file.open(./fname.txt,ios:out);if(!file)coutnext;cout保存完成!;file.close();3.3.6加载学生成绩记录 load_record()具体实现如下:void stuscore:load_record()ifstream file;char fname20;student*
16、n;n=new student();coutfname;file.open(fname,ios:in);if(!file)cout文件打开失败!;cin.get();else 精品文档 好文档 coutsetiosflags(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;四.程序运行结果 4.1 主菜单界面 精品文档 好文档 4.2添加学生成绩记录 4.3显示学生成绩记录 精品文档
17、 好文档 4.4再添加几个学生成绩记录 显示结果为:4.5查找学生成绩记录 精品文档 好文档 4.6删除学生成绩记录 4.7删除记录后再显示学生成绩记录 精品文档 好文档 4.8保存学生成绩记录 4.9加载学生成绩记录 精品文档 好文档 4.10退出学生成绩系统 五.课程设计总结 精品文档 好文档 这是一个综合性较强,很实际的一个编程实例。刚学 C+时候,感觉类和对象还挺有意思的,刚接触到这个题目时,觉得应该没什么大问题吧,因为,我自认为一些基本知识点都已经掌握了。可是,真的当我动手编程的时候,才发现并没有想象中的那么简单。单个知识点是弄清了,但是,将所有的知识点综合起来运用时,就碰到了各种各
18、样的问题了。有时候,一个错误得找好久,才能发现。本系统的重点就是要会建立两个类。一个是学生类 student,用来存放一个学生的成绩记录,相当于一个结构体的功能吧。另一个类是学生成绩记录系统类 stuscore,该类用来存放多个学生的成绩记录。难点就是 stuscore 类里的各个功能的实现。总的来说,添加,显示,查找,这三个功能比较容易,但是,删除,保存,加载这三个功能就需要花点心思了,可能是平时用的比较少吧,生疏了。可见只有通过平时多加练习,才能有助于自己巩固知识点。最后想说的是,调试程序真的很关键。调试程序需要较大的耐心。可能调试程序的时间比自己编写整个程序的时间还要长,下的工夫还要深,但这是一个程序员必须了解,也必须接受的事实。有好几次,几个错误让我很是头疼啊,很想删了,重新来过,可是最后发现,还是得有耐心去调试程序。通过这个实验的练习,我也学到了很多东西,特别是加深了对类和对象理解和应用方面,也很谢谢老师给我的帮助。参考文献:C+程序设计教程(第二版),罗建军等编著,高等教育出版社