ImageVerifierCode 换一换
格式:DOCX , 页数:36 ,大小:110.90KB ,
资源ID:23109146      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/23109146.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(厦门理工学院+学校人员信息管理系统.docx)为本站会员(b****1)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

厦门理工学院+学校人员信息管理系统.docx

1、厦门理工学院+学校人员信息管理系统C+面向对象程序设计课程设计报告(2012 2013学年 第 3学期)题 目: 学校人员信息管理系统 专 业: 计算机科学与技术 班 级: 计算机科学与技术 姓名学号: DEBUG 指导教师: 成 绩: 计算机科学与技术系2012年6月21日一、设计目的课程设计是学习C+程序设计的一个重要环节。通过课程设计的综合训练,可以使学生在学习理论知识并在实验中进行了一系列基本训练的基础上,进一步加强学生对实际问题分析、编程和动手能力的提高,强化综合应用能力,扩充知识,开阔视野。学生在熟练运用Visual C+ 6.0以后,通过使用Visual C+ 6.0的训练,扩展

2、程序设计的知识面,提高综合应用C+知识能力的要求。二、设计容设计一个学校人员信息管理系统,可以实现对学校人事的信息管理。基本功能要求如下: (1)建立人员信息数据。包括学号(教工号)、姓名、性别、专业(工作系别部门)、出生时间、年龄。其中, 1)对学生,还包括3门课的成绩(Chinese, English, Mathematics)。三门课的成绩为int型数据。 2)对教师,还包括职称(如教授/副教授/讲师),工资(如1432.50)。工资为double型数据。(2)使用继承的方法构造3个类,对相应的对象放置10个学生(教师)信息。 People类虚基类 Student类派生类 Teacher

3、类派生类(3)数据基本功能: 增加数据:AddData()函数。 删除数据:DeleteData()函数。根据学号(教工号),删除该人员的记录。 修改数据: UpdateData()函数。对学生,根据学号,能够修改3门课的成绩;对教师,根据教工号,能够修改“职称”和“工资”。 查找功能:1)SearchData()函数。要求能够根据“学号(教工号)”、“姓名”、“性别”三项实现查询,并能在屏幕上显示满足条件的数据记录。2)FindMaxData()函数。对学生,查找“English”课程成绩最高的学生记录并打印;对教师,查找“工资”最高的教师记录并打印。要求:采用函数模板实现。 显示功能:Di

4、splayData()函数。在屏幕上打印所有的数据记录;打印时,先打印学生的记录,后打印教师的记录。并且按学生(教工号)升序打印。(4)重载功能: 要求对“”和“”运算符进行重载。考虑到输人学生(教工)姓名时,名字中可能引入空格,所以重载“”运算符时,需要满足这个要求。(5)异常处理功能: 设置异常处理,对教师工资为负数的情况给出提示。(6)文件的输入输出功能: 能够从文件中读入数据。外部文件为Student_ext.dat, Teacher_ext.dat。 能够将数据保存到相应目录的文件中。保存数据时,分两个文件分别保存Student.dat, Teacher.dat。(7)参考系统界面如

5、示: 1-增加一位人员(教师、学生)记录 2-删除一个人员记录 3-修改一个人员记录 4-根据“学号(教工号)”、“姓名”、“性别”查找记录 5-根据人员类别(学生、教师)查找“English”课程成绩最高的学生,或最高工资的教师 6-显示全部人员记录 7-从外部文件追加数据 8-将所有数据保存到磁盘文件 9-退出系统。三、总体设计1、系统类的层次关系class people /基类class student:virtual public people /学生派生类class teacher:virtual public people /老师派生类2、类的主要框架描述class people

6、/基类 public: int num; char name30; char sex15; char major_or_department50; char date30; int age;void setpeople(int &z) if(z=1)cout学号; elsecoutnum; coutname; coutsex; if(z=1)cout专业; elsecoutmajor_or_department; coutdate; coutage; ;class student:virtual public people /学生派生类 public: int score_chinese; i

7、nt score_english; int score_mathematices; char xuanxiu50; int score_xuanxiu; void setstudent(int &z) setpeople(z);coutscore_chinese;coutscore_english;coutscore_mathematices;coutxuanxiu;coutscore_xuanxiu; stud100;class teacher:virtual public people /老师派生类public: char job50; double salary; char lesson

8、50;void setteacher(int &z) setpeople(z); coutjob; coutsalary; coutlesson;teacher1100;四、系统测试用例 1、增加数据和修改数据和删除数据功能 通过学号或工号,姓名,和性别查找老师或学生的信息学生选课输出英语成绩最高的学生和工资最高的老师显示所有数据学生数学平均成绩保存数据到磁盘再次运行时,从磁盘中读取数据五、错误记录及原因分析1、错误的记录主要在保存和读取数据的时候运到的,由于要求先保存数据再读取数据,这样就让我忽视了一点就是当你要读取数据到相应的类里面的是时候,你保存的数据也要是该类的类型,这样才能轻易的读取

9、,最好选择用二进制的保存方法这样可以对整个类型的对象进行保存读取的时候也可以直接将数据赋值给对象,使读取更方便简单。2、排序功能有错误错误原因分析:排序功能函数只有一个循环,当没有按顺序输入教工号或学号时,不能输出排序。要在循环外再加一个循环进行控制。由于是升序排序,当后面一个小于前面一个时候,我是拿后面的和前面的交换,但我忘记了判断只有一个学生或老师时不用排序和判断,这时判断后交换反而是会错的,这样就会出错。于是我加了一个判断人数为一的时候是不用判断的。3让名字可以接收空格也是错误百出,首先是要对缓存清理,然后书上的cin.getchar()才派上用场,不然你下次输入时肯定会出错,缓存清理要

10、用到fflush(stdin);std:cin.sync();同学提到的,就解决了名字输入空格的问题。六、源程序#include#include#include#include#includeusing namespace std;static int S=0;/储存学生的人数static int T=0;/储存老师的人数static int temp=0;/用来判断一段代码是否有运行过int main();class people /基类 public: int num; char name30; char sex15; char major_or_department50; char da

11、te30; int age;void setpeople(int &z) if(z=1)cout学号:; elsecoutnum; fflush(stdin); std:cin.sync(); cout名字:;cin.getline(name,30,n); coutsex; if(z=1)cout专业:; elsecoutmajor_or_department; coutdate; coutage; ;class student:virtual public people /学生派生类 public: int score_chinese; int score_english; int scor

12、e_mathematices; char xuanxiu50; int score_xuanxiu; void setstudent(int &z) setpeople(z);coutscore_chinese;coutscore_english;coutscore_mathematices;coutxuanxiu;coutscore_xuanxiu; stud100;class teacher:virtual public people /老师派生类public: char job50; double salary; char lesson50;void setteacher(int &z)

13、 setpeople(z); coutjob; coutsalary; coutlesson;teacher1100;void AddDate() /增加一条数据的函数 int i=1;loop1: while(i) system(cls); cout1学生endl; cout2老师endl; cout3键退出z; switch(z) case 1:system(cls); int g=S+1; for(int i=S;ig;i+) studi.setstudent(z); :S+; for(int j=0;jS-1;j+) if(studj.num=studi-1.num)S-;cout学号

14、输入一样重新添加endl;getchar();getchar();goto loop1; cout增加成功endl; getchar();getchar(); break; case 2:system(cls); int g=T+1; for(int i=T;ig;i+) teacher1i.setteacher(z); :T+; for(int j=0;jT-1;j+) if(teacher1j.num=teacher1i-1.num)T-;cout工号输入一样重新添加endl;getchar();getchar();goto loop1; try /处理教师工资合法性 if (teache

15、r1i-1.salary0) throw teacher1i-1.salary; catch(double ) cout工资输入有误,请重新输入endl;getchar();getchar(); T-; goto loop1; cout增加成功endl; getchar();getchar(); break; case 3:system(cls);i=0; break; main();void DeleteData()/删除功能函数 system(cls); cout1学生endl; cout2老师endl; cout3键退出z; system(cls); if(z=1) coutn; for

16、(int i=0;iS;i+) if(studi.num=n) for(;iS;i+) studi=studi+1; S-;cout删除成功endl;temp=12;/temp用来判断删除记录有没运行,有运行就赋值为12 if(temp!=12)cout没有该记录endl; temp=0; if(z=2) coutm; for(int i=0;iT;i+) if(teacher1i.num=m) for(;iT;i+) teacher1i=teacher1i+1; cout删除成功endl;T-;temp=12;/temp用来判断删除记录有没运行,有运行就赋值为12 if(temp!=12)c

17、out没有该记录endl; temp=0; if(z=3)main();getchar();getchar(); main();void UpdateDate()/修改数据记录函数 cout1学生endl; cout2老师endl; cout3键退出z; if(z=1) system(cls); coutn; for(int i=0;iS;i+) if(studi.num=n) cout修改为:endl;studi.setstudent(z);cout修改成功endl;temp=12;/temp用来判断修改记录有没运行,有运行就赋值为12 if(temp!=12)cout没有该数据记录endl

18、; temp=0; if(z=2) system(cls); coutn; for(int i=0;iT;i+) if(teacher1i.num=n) cout修改为:endl;teacher1i.setteacher(z);cout修改成功endl;temp=12;/temp用来判断修改记录有没运行,有运行就赋值为12 if(temp!=12)cout没有该数据记录endl; temp=0; if(z=3)main(); getchar(); getchar(); main();void SearchData()/查找函数 int n; coutn; char nam_s30; coutn

19、am_s; char sex_s15; coutsex_s; for(int i=0;iT;i+) if(teacher1i.num=n&strcmp(teacher1i.name,nam_s)=0&strcmp(teacher1i.sex,sex_s)=0) cout老师:endl; cout工号:teacher1i.num姓名:teacher1i.name性别:teacher1i.sex部门:teacher1i.major_or_department; cout出生年月日:teacher1i.date年龄:teacher1i.age职称:teacher1i.job工资:teacher1i.

20、salary课程:teacher1i.lesson; coutendl;temp=12; for(int j=0;jS;j+) if(studj.num=n&strcmp(studj.name,nam_s)=0&strcmp(studj.sex,sex_s)=0) cout学生:endl; cout学号:studj.num姓名:studj.name性别:studj.sex专业:studj.major_or_department; cout出生年月日:studj.date年龄:studj.age语文:studj.score_chinese英语:studj.score_english数学:stud

21、j.score_mathematices选修:studj.xuanxiu选修成绩:studj.score_xuanxiu; coutendl; temp=12; if(temp!=12)cout没有这个人的信息endl;temp=0; getchar(); getchar(); main();void FindLesson()/选课的函数 char a50; couta;for(int i=0;iT;i+) if(strcmp(teacher1i.lesson,a)=0|strcmp(teacher1i.name,a)=0) cout教这门的教师是:; cout工号:teacher1i.num

22、姓名:teacher1i.name性别:teacher1i.sex部门:teacher1i.major_or_department; cout出生年月日:teacher1i.date年龄:teacher1i.age职称:teacher1i.job工资:teacher1i.salary课程:teacher1i.lesson; coutendl;temp=12; if(temp!=12)cout没有教这门的教师endl;temp=0;getchar();getchar();main();cout输入你的学号x;for(int j=0;jS;j+) if(studj.num=x) strcpy(st

23、udj.xuanxiu,teacher1i-1.lesson); cout输入选修课成绩studj.score_xuanxiu; cout输出选课成功endl; getchar();getchar();main();template double Max(Q j) double max=0; if(teacher1j-1.salaryteacher1j.salary) max=teacher1j.salary; return max; void FindMaxDataT()/查找最高英语分数的学生和最高工资的教师 double max=teacher10.salary; for(int j=1;jT;j+) max=Max(j); cout工资最高的教师endl;for(int i=0;iT;i+) if(teacher1i.salary=max) cout工号:teacher1i.num姓名:teacher1i.name性别:teacher1i.sex部门:teacher1i.major_or_department; cout出生年月日:teacher1i.date年龄:teacher1i.age职称:teacher1i.job工资:teacher1i.salary

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1