版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C+面向对象程序设计课程设计报告(2012 2013 学年 第 3 学期)题 目: 学校人员信息管理系统专 业: 计算机科学与技术班 级: 计算机科学与技姓名学号:DEBUG指导教师:成绩:计算机科学与技术系2012 年6月 21日一、设计目的课程设计是学习C+在学习理论知识并在实验中进行了一系列基本训练的基础上 C+ 。0 以后,通过使用Visual C+ 6.0合应用C+知识能力的要求。二、设计内容建立人员信息数据。包括学号(教工号)、姓名、性别、专)、 PAGE PAGE 17出生时间、年龄.其中,3门课的成绩Chines, Englis, Mathematic成绩为int/讲师(如14
2、350型数据。310(教师)信息。PeopleStudentTeacher数据基本功能::AddData()函数。DeleteDat(),删除该人员的记录。修改数据: 3对教师,根据教工号,能够修改“职称”和“工资查找功能:1)SearchData()函数.要求能够根据“学号(教工号2)FindMaxData()函数。对学生,查找“English课程成绩最高的学生记录并打印;对教师,查找“工资”最高的教师记录并打印。要求:采用函数模板实现。(教工号)升序打印。重载功能:(教工(6)能够从文件中读入数据。外部文件为Student_ext。dat, Teacher_ext.dat。Student。
3、dat, dat。(7)参考系统界面如示:1增加一位人员(教师、学生)记录2删除一个人员记录3修改一个人员记录4-根据“学号(教工号5-根据人员类别(学生、教师)高工资的教师6显示全部人员记录7-从外部文件追加数据8-将所有数据保存到磁盘文件9-退出系统。三、总体设计1、系统类的层次关系class people/基class student:virtual public people /学生派生类class teacher:virtual public people /老师派生类2、类的主要框架描述class people / 基 类public:int num;char name30; ch
4、ar char major_or_department50; char date30;int age;void setpeople(int z)i(z=1)coutelsecoutcoutname;coutcin sex; i(z=)coutelsecoutdate;coutage;class student:virtual public /public:int score_chinese; int score_english;int score_mathematices; char xuanxiu50;int score_xuanxiu; void setstudent(int &z)set
5、peopl(;coutscore_chines; coutcicoutscore_mathematices;coutxuanxiu; score_xuanxiu;stud10;class teacher:virtual public /public:char job5; double salary; char void setteacher(int z)setpeople(z);cout 职称”;cin job; coutsalary; cout 课程;cinlesson;teacher1100;四、系统测试用例1、增加数据和修改数据和删除数据功能通过学号或工号,姓名,和性别查找老师或学生的信
6、息学生选课输出英语成绩最高的学生和工资最高的老师显示所有数据学生数学平均成绩保存数据到磁盘再次运行时,从磁盘中读取数据五、错误记录及原因分析1、类的类型这样才能轻易的读取最好选择用二进制的保存方法这样可以对整个类型的对象 使读取更方便简单。2、排序功能有错误错误原因分析:排序功能函数只有一个循环,当没有按顺序输入教工号或学号时,不能输出 排序我是拿后面的和前面的交换,但我忘记了判断只有一个学生或老师时不用排序和判断这时 判断后交换反而是会错的,这样就会出错。于是我加了一个判断人数为一的时候是不用判断的。3让名字可以接收空格也是错误百出,首先是要对缓存清理,然后书上的cin才fflus(stdi
7、std:ci同学提到的,就解决了名字输入空格的问题。六、源程序#includeinclude #includestdlib.hincludewindows。husing namespace std;static int S=0;/储存学生的人数static int T=0;/储存老师的人数static int temp=0;/用来判断一段代码是否有运行过int main();classpeople/public:int num;char char sex15;char major_or_department50; char date30;int age;void setpeople(int z
8、)if(z=1)cout”学号:;elsecout”工号:; cin num; fflush(stdin);std:cin.sync();cout性别 cinse; i(z=1)cout专业elsecout部门:;cout出生年月日:;cindate;coutage;class student:virtual public people/public:int score_chinese; int score_english;int char xuanxi5;int score_xuanxiu; void setstudent(int &z)setpeople(z);cou 语文;cin sco
9、re_chinese; cout”英语;coutscore_mathematices; cout选修:;cinxuanxiu;cout 选修成绩:;cinscore_xuanxiu;stud100;class teacher:virtual public people/public:char job50; double salary; char lesson50;void setteacher(int z)setpeople(z);coutjo; cou;cinsalary; coutcinteacher1100;void/int i=1;loop1:while(i)syste(cls;cou
10、t1 学生endl; cout2 老师endl; coutz; switch(z)case 1:system(”cls);int g=S+1;for(int i=S;ig;i+) stu。setstudent(;: S+;for(int j=0;jS-1;j+)if(studj.num=studi1.num)S-;cout学号输入一样重新添加end;getcha();getchar);goto loopcout”增加成功getchar;getcha(;break;case 2:system(”cls);int g=T+1;for(int i=T;ig;i+)teacher。setteache(
11、z;::T+;for(int j=0;jT1;j+)if(teacher1j.num=teacher1i-1。num)T-;cout”工号输入一样重新添加” endl;getchar();getchar();goto loop1;try/处理教师工资合法性if (teacher1i1.salary0)throw teacher1。salar;catch(double )cout工资输入有误,请重新输入endl;getchar();getchar();T-;goto loop1;cout”增加成功 getcha(;getcha();break;case3:system(”cls)i=0break
12、;main();void DeleteData()/删除功能函数system(”cls); cout1 学生”endl; cout2 老师”endl;cout”3 键退出z; system(”cls); if(z=1)coutn;for(int i=0;iS;i+)if(stud.num= for(;iS;i+) stu=stui+;”删除成功endl;temp=12;/temp 有没运行12if(temp!=12)cout”没有该记录endl; temp=0;if(z=2) coutm;for(int i=0;iT;i+)if(teacher1i.num=m) for(;iT;i+) tea
13、cheri=teacher1i+;cout”删除成功endl;T-;temp=12;/temp 用来判断删除记录有没运行,有运行就赋值为 12i(tem!=12cout temp=0;getcha(;getchar; main();void UpdateDate()/修改数据记录函数cout1 endl; cout2 老师cout3 endl; int z;cin z; if(z=1)system(cls);cout输入学号; int n;cin n;for(int i=0;iS;i+)i(stui.num=cout:endl;stui( cout”修改成功n;for(int i=0;iT;i
14、+)if(teacher。num=n) coutendteacher.setteacher(z);cout修改成功endl;temp=12;/temp 用来判断修改记录有没运行,有运行就赋值为 12if(temp!=12)cout”没有该数据记录endl; temp=0; if(z=3)main(); getchar; getchar(); main();void SearchData()/查找函数int n;coutn;char nam_s30; coutsex_s;for(int i=0;iT;i+)if(teacher1i.num=n&strcmp(,nam_
15、s)=0&strcmp(teacher1i.sex,sex_s)=0)cout 老师:endl;teacher1i.sexteacheri.major_or_departmen;teacher1ijo工资 teachersalary”课程teacher。 lesson;coutendl;temp=12;for(int j=0;jS;j+)if(studj。num=n&strcmp(,nam_s)=0&strcmp(studj.sex,sex_s)=0)cou end;coustudjnu studnamestudj.sex 专业:”studj.major_or_depart
16、ment;coutstud。date年龄stu。age语studj.score_chinesstudj.score_englis stud.score_mathematices选修stud.xuanxiu”选修成绩: studj.score_xuanxiu;cout endl; temp=12;if(temp!=1cou 没有这个人的信息 getchar();getchar(); main();void FindLesson()/选课的函数char couta;for(int i=0;iT;i+) if(strcmp(teacher1i.lesson,a)=0|strcmp(teacher1i
17、.name,a)=0)coucout工号” 性 别 :teacher1i.sex 部 门 :”teacher1i 。 major_or_department; cout”出生年月日:teacher1i。dat 年龄”teacher1。ageteacherjobteacher1i.salaryteacher1i。lesson;cout endl;temp=12;if(temp!=12coutendl;temp=0;getchargetcha(main; cout输入你的学号x;for(int j=0;jS;j+)if(studj.num=x)strcp
18、y(studj。xuanxiu,teacher1i-1.lesson);coutstudj.score_xuanxiu; cout输出选课成功endl;getchar(); getchar(); main();templatedouble Max(Q j)double max=0; if(teacher1j1.salaryteacher1j.salary)max=teacher1j.salary;return max;void FindMaxDataT()/查找最高英语分数的学生和最高工资的教师double max=teacher10.salary; for(int j=1;jT;j+)max
19、=Max(j);cout工资最高的教师endl; for(int i=0;iT;i+)i(teacher。salary=max)teacher1i.sex部门:”teacher1i。major_or_department;cout:teacher1idat:teacher1age职称teacher1joteacheri.salary:teacher1ilesso;coutendl;templatetypename Qdouble SMax(Qdouble max=0;if(studj-1.score_englishstudj.sco
20、re_english)max=studj.score_english;return max;void FindMaxDataS()int max=stud。 for(int i=1;iS;i+)max=SMax(i);cou for(int j=0;jS;j+) if(studj。score_english=max)coustu。nu姓名性别:stu。se:stud.major_or_department;coutstudatestu.agestu。score_chinese”英语:studj。score_englis数学:stud.score_mathematices”选修
21、stuj。xuanxi选修成绩studj score_xuanxiu;coutendl;getchar(); getchar(); mai(;void DisplayData()/显示所有的学生和教师的信息for(int x=0;xS;x+)if(S=1)break; for(int if(study.numstudy+1.num)student tem; tem=study; stuy=stuy+; study+1=tem;for(int j=0;jS;j+)cout j+1coustuj.nu姓名studnamstudj。se 专业”stud。major_or_departmen;cou
22、生日:stu.dat stud.ag stud.score_chinese英语: stu。score_englis数学”stud.score_mathematices”选修 stuj.xuanxiu”选修成绩 studj.score_xuanxiu;coutendl;for(int g=0;gteacher1y+1.num)teacher tem=teacher; teacher1y=teacher1y+1; teacher1y+1=tem;for(int i=0;iT;i+)cout教师i+1endl;cou 工号 teacheri。num姓名”teacher1。se
23、x部门teacher1.major_or_department;cou teacheridate”年龄teacher。 ageteacherjob:teacher1isalaryteacher1i.lesson;coutendl;getchar(); getcha(; main();void Ssave()/对学生类对象的保存功能函数ofstream ( for(int i=0;iS;i+)out.writ( cha)&stud,sizeo(studen) out。close();coutend;void Tsave()/对教师类对象的保存功能函数ofstream outt(c:teacher
24、。dat,ios: out); for(int i=0;iT;i+)outt。write( char)teacher1i,sizeof(teacher1)); outt.close();cout”老师成功保存记录!endl;void save()int i=1; while(i)cout1 学生endl; cout2 老师”endl; cout 3 退出”choice; system(cls); switch(choice)caseSsave();break; case Tsav(brea; case i=0;break; default:cout”输入有误,请重新输入!endl;main()
25、;void Sload()/对学生类对象的读取功能函数ifstream i(”c:ou; for(int i=S;i+)i。read(cha)&stu,sizeof(stui) ; i(stu。num=)break;coustunumstunam: stud。 sexstudi.major_or_department;cou”出生年月日:studi。datestu.age studi.score_chinesestui.score_englis数学”stud。S+;coutendl;in.close;stud.xuanxiustuscore_xuanxi;cout”学生成功读取记录!endl;
26、void Tload()/对教师类对象的读取功能函数ifstream in(”c:teacher。dat”,ios:out); for(int i=T;i+)in。if(teacher1i。num=0)break;cout工号:teacher1i.num”姓名:teacher1.se部门 teacher。major_or_departmen;cou 出生年月日”teacher。dat teacher。 agteacheri。jo 工资teacher1。salary teacher1i.lesson;coutendl; T+;in.clos(; coutvoid lo
27、ad()/读取功能函数int i=1; while(i) int choice;cout 1 学生”endl; cout2 老师endl; cout”3 退出”endl; cin choice; switch(choice)case 1:case 2: case ;Sloa(brea; d (break;i=0;break;default:cout 输入有误,请重新输入!”endl;main();void AverageMath()double total=0; for(int i=0;iS;i+)total+=stud。score_mathematice;cout”学生的数学平均成绩是tot
28、al/S getchar();getchar();main();void DeleteT()for(int j=0;j T;j+) for(int i=j+1;iT;i+)if(teacher1j.num=teacher1i.num)for(int a=i;aT;a+)teacher1a=teacher1a+1;i-;T-;cout”重复删除成功endl; getchar();getchar(); main();void DeleteSame()int j,i,a; for(j=0;jS;j+) for(i=j+1;iS;i+)if(stu。num=stud.nu)for(a=i;aS;a+)
29、studa=studa+1;i-; S-;DeleteT();int main()system(”cls) cout ”11111111111111111111111111111111111111111111111111111111111111111”endl;cout1欢迎进入学生成绩管理系统1”endl;cout”1111111111111111111111111111111111111111111 1111111111111111111111”endl;cout11增加一位人员记录tcout”12-删除一个人员记录t1endl;cou13修改一个人员记录tendl;cout”14根据“学
30、号(教工号)姓名、性别查找记tcout”15-根据“教师或“课程”进行选课t1 endl;cout16查找“English课程成绩最高的学生和最高工资的教t cout”17-显示全部人员记录t1”endl;cout”18从外部文件追加数据t1”endl;cout19-将所有数据保存到磁盘t1”endl;cout110求学生数学平均成绩t1endl;cout11把相同的数据删除tend;cout”112其他键退出系统1cout”11111111111111111111111111111111111111111111111111111111111111111endl;cout1选择111数字进行操作1i; s
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- Windows Server网络管理项目教程(Windows Server 2022)(微课版)3.7 DHCP 拓展案例(一)DHCP中继代理的配置
- 高中语文第4课词语万花筒第3节每年一部“新词典”-新词语课件新人教版选修语言文字应用
- 信息技术(第2版)(拓展模块)教案 拓展模块5 5.3常用核心技术3
- 2024年江西省中考英语试题含解析
- 校园展美 课件 2024-2025学年人美版(2024)初中美术七年级上册
- 高中物理第一章运动的描述2时间和位移课件新人教版必修
- 【中考考点基础练】第10章 温度与物态变化 2025年物理中考总复习(福建)(含答案)
- 2024至2030年中国圆柱石英晶体谐振器数据监测研究报告
- 2024至2030年中国发音板数据监测研究报告
- 2024至2030年中国八爪鱼数据监测研究报告
- 高中语文表现手法之烘托、渲染、衬托、对比的明显区别
- 泰达时代中心楼顶发光字施工方案
- LED灯具规格书中英文
- 固定资产与无形资产管理制度
- 液压泵站使用说明
- 论我国农村集体土地所有制度的完善-
- SPC八大控制图自动生成表
- 国家电网公司用电信息采集系统运行维护管理办法
- 人民大学大众汽车案例-4组
- 惠州市金山湖公园修建性详细规划
- 旅行社行政岗位职责
评论
0/150
提交评论