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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

某学校人员信息管理教材DOC 60页.docx

1、某学校人员信息管理教材DOC 60页一、设计目的课程设计是学习C+程序设计的一个重要环节。通过课程设计的综合训练,可以使学生在学习理论知识并在实验中进行了一系列基本训练的基础上,进一步加强学生对实际问题分析、编程和动手能力的提高,强化综合应用能力,扩充知识,开阔视野。学生在熟练运用Visual C+ 6.0以后,通过使用Visual C+ 6.0的训练,扩展程序设计的知识面,提高综合应用C+知识能力的要求。二、设计内容设计一个学校人员信息管理系统,可以实现对学校人事的信息管理。基本功能要求如下: (1)建立人员信息数据。包括学号(教工号)、姓名、性别、专业(工作系别部门)、出生时间、年龄。其中

2、, 1)对学生,还包括3门课的成绩(Chinese, English, Mathematics)。三门课的成绩为int型数据。 2)对教师,还包括职称(如教授/副教授/讲师),工资(如1432.50)。工资为double型数据。(2)使用继承的方法构造3个类,对相应的对象放置10个学生(教师)信息。 People类虚基类 Student类派生类 Teacher类派生类(3)数据基本功能: 增加数据:AddData()函数。 删除数据:DeleteData()函数。根据学号(教工号),删除该人员的记录。 修改数据: UpdateData()函数。对学生,根据学号,能够修改3门课的成绩;对教师,根

3、据教工号,能够修改“职称”和“工资”。 查找功能:1)SearchData()函数。要求能够根据“学号(教工号)”、“姓名”、“性别”三项实现查询,并能在屏幕上显示满足条件的数据记录。2)FindMaxData()函数。对学生,查找“English”课程成绩最高的学生记录并打印;对教师,查找“工资”最高的教师记录并打印。要求:采用函数模板实现。 显示功能:DisplayData()函数。在屏幕上打印所有的数据记录;打印时,先打印学生的记录,后打印教师的记录。并且按学生(教工号)升序打印。(4)重载功能: 要求对“”和“”运算符进行重载。考虑到输人学生(教工)姓名时,名字中可能引入空格,所以重载

4、“”运算符时,需要满足这个要求。(5)异常处理功能: 设置异常处理,对教师工资为负数的情况给出提示。(6)文件的输入输出功能: 能够从文件中读入数据。外部文件为Student_ext.dat, Teacher_ext.dat。 能够将数据保存到相应目录的文件中。保存数据时,分两个文件分别保存Student.dat, Teacher.dat。(7)参考系统界面如示: 1-增加一位人员(教师、学生)记录 2-删除一个人员记录 3-修改一个人员记录 4-根据“学号(教工号)”、“姓名”、“性别”查找记录 5-根据人员类别(学生、教师)查找“English”课程成绩最高的学生,或最高工资的教师 6-显

5、示全部人员记录 7-从外部文件追加数据 8-将所有数据保存到磁盘文件 9-退出系统。三、总体设计1.系统类的程序关系2.类的主要框架描述*基类:*class peoplepublic: int num; char name30; char sex15; char major_or_department50; char date30; int age; people(int n,char nam30,char s15,char o50,char d30,int a) num=n; strcpy(name,nam); strcpy(sex,s); strcpy(major_or_departmen

6、t,o); strcpy(date,d); age=a; ;* 教师类:*class teacher:virtual public peoplepublic: teacher(int n=0,char nam30=,char s15=,char o50=,char d30=,int a=0,char j50=,double sa=0):people(n,nam,s,o,d,a),salary(sa)strcpy(job,j); char job50; double salary; friend istream &operator( istream &is,teacher &tea);/重载运算

7、符函数声明friend ostream &operator( ostream &os,teacher &tea) ;/重载( istream &is,student &stu);/重载运算符函数声明 friend ostream &operator( ostream &os,student &stu);/重载运算符函数声明 void AddData();void DisplayData();stu10;*教师类功能函数*template Q Max(Q * x,int len) void TAddData()/对教师类对象的添加功能函数void TDeleteData()/对教师类对象的删除功

8、能函数void TUpdateData()/对教师类对象的修改功能函数void TSearchData_num()/按教工号查询教师类对象void TSearchData_nam()/按姓名查询教师类对象 void TSearchData_sex()/按性别查询教师类对象void TFindMaxData()/对教师类对象的最高工资查询功能函数void TDisplayData()/对教师类对象按教工号升序排序打印功能函数void Tsave()/对教师类对象的保存功能函数void Tload()/对教师类对象的读取功能函数*学生类功能函数*template Q Max(Q * x,int l

9、en) void SAddData()/对学生类对象的添加功能函数void SDeleteData()/对学生类对象的删除功能函数void SUpdateData()/对学生类对象的修改功能函数void SSearchData_num()/按学号查询学生类对象void SSearchData_nam()/按姓名查询学生类对象 void SSearchData_sex()/按性别查询学生类对象void SFindMaxData()/对学生类对象的最高英语成绩查询功能函数void SDisplayData()/对学生类对象按学号升序排序打印功能函数void Ssave()/对学生类对象的保存功能函

10、数void Sload()/对学生类对象的读取功能函数*功能函数*void Showmenu() void Menu()void Menu1()void AddData()/添加功能函数void DeleteData()/删除功能函数void UpdateData()/修改功能函数void SearchData()/查询功能函数void FindMaxDataS()/英语成绩最高学生查询函数void FindMaxDataT()/工资最高教师查询函数void DisplayData()/显示全部人员记录函数void save()/保存功能函数void load()/读取功能函数int main

11、()四、系统测试用例主菜单界面异常处理教工号学号输入重复报错按升序排列所有记录保存记录五、错误记录及原因分析1.字符数组直接赋值发生错误错误原因分析:字符数组不可直接赋值,而要用stycpy函数进行赋值。2.在派生类析构函数中初始化出现问题。错误原因分析:要给形参赋初值。3.排序功能有错误错误原因分析:排序功能函数只有一个循环,当没有按顺序输入教工号或学号时,不能输出排序。要在循环外再加一个循环进行控制。4.添加记录输入重复教工号或学号时不会显示输入有误错误原因分析:当输入有误时再次调用添加函数,添加函数里有清屏函数,会将错误提示清屏掉。应再从主函数中调用添加函数。六、源程序#include#

12、include#include#include#includeusing namespace std;int main();static int T=0;/用于标记老师类对象的个数static int S=0;/用于标记学生类对象的个数class peoplepublic: int num; char name30;char sex15; char major_or_department50; char date30; int age; people(int n,char nam30,char s15,char o50,char d30,int a) num=n; strcpy(name,na

13、m); strcpy(sex,s); strcpy(major_or_department,o); strcpy(date,d); age=a; ;class teacher:virtual public peoplepublic: teacher(int n=0,char nam30=,char s15=,char o50=,char d30=,int a=0,char j50=,double sa=0):people(n,nam,s,o,d,a),salary(sa)strcpy(job,j); char job50; double salary; friend istream &oper

14、ator( istream &is,teacher &tea)/重载运算符函数声明 istea.num; is.getline(tea.name,30,n); /使其能够读入字符串中的空格 istea.sex; istea.major_or_department; istea.date; istea.age; istea.job; istea.salary; return is; /退出函数 friend ostream &operator( ostream &os,teacher &tea) /重载运算符函数声明 ostea.numn; ostea.namen; ostea.sexn; os

15、tea.major_or_departmentn; ostea.daten; ostea.agen; ostea.jobn; ostea.salaryn; return os; /退出函数 void AddData() system(cls); coutnum; for(int k=1;k11;k+) if(num=k) k=11; if(k=11) cout请输入10以内的教工号endl; AddData(); coutname; coutsex; coutmajor_or_department; coutdate; coutage; coutjob; coutsalary; try /处理

16、教师工资合法性 if (salary0) throw salary; catch(double ) cout输入有误,请重新输入endl; main();void DisplayData() cout* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * endl; cout教工号 姓名 性别 工作部门 出生时间 年龄 职称 工资endl; cout* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * endl; coutnumtnametsextmajor_or_

17、departmenttdatetagetjobtsalaryendl; cout* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * endl;void save(ofstream &outf) outf教工号 姓名 性别 工作部门 出生时间 年龄 职称 工资endl; outfnumtnametsextmajor_or_departmenttdatetagetjobtsalarynumnamesexmajor_or_departmentdateagejobsalary; tea10;template Q Max(Q * x,i

18、nt len) Q max=x0; for(int i=1;ixi? max:xi; return i; void TAddData()/对教师类对象的添加功能函数teaT.AddData();for(int i=0;i10;i+) if(i!=T&teaT.num=teai.num) cout输入教工号重复,请重新输入!endl; main(); cout添加记录成功!endl;teaT.DisplayData(); T+;void TDeleteData()/对教师类对象的删除功能函数 int n; if(T=0) cout没有可删除的记录!endl; else coutn; for(in

19、t i=0;iT;i+) if(teai.num=n) for(;iT;i+) teai=teai+1; T-; cout成功删除记录!endl; void TUpdateData()/对教师类对象的修改功能函数 int n; if(T=0) cout没有可删除的记录!endl; else coutn; for(int i=0;iT;i+) if(teai.num=n) cout原有的记录:endl; teai.DisplayData(); cout请输入新的记录:endl; coutteai.job; coutteai.salary; cout新的记录:endl; teai.DisplayD

20、ata(); void TSearchData_num()/按教工号查询教师类对象 int n; coutn; for(int i=0;iT;i+) if(teai.num=n) teai.DisplayData(); i=T; if(i=T) cout查询的记录不存在,请重新输入!endl; TSearchData_num(); void TSearchData_nam()/按姓名查询教师类对象 char nam_s30; cout请输入教师名字:nam_s; for(int j=0;jT;j+) if(strcmp(teaj.name,nam_s)=0) teaj.DisplayData(

21、); j=T; if(j=T) cout查询的记录不存在,请重新输入!endl; TSearchData_nam(); void TSearchData_sex()/按性别查询教师类对象 char sex_s15; cout请输入教师性别:sex_s; for(int p=0;pT;p+) if(strcmp(teap.sex,sex_s)=0) teap.DisplayData(); p=T; if(p=T) cout查询的记录不存在,请重新输入!endl; TSearchData_sex(); void TFindMaxData()/对教师类对象的最高工资查询功能函数 int nu; double t10; for(int a=0;aT;a+) ta=teaa.salary; nu=Max(t,T); teanu-1.DisplayData();void TDisplayData()/对教师类对象按教工号升序排序打印功能函数 for(int i=1;i11;i

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

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