




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、重庆邮电大学C+课程设计报告C+课程设计高校工资管理系统1.系统概述通过设计一个较为简单的高校工资管理系统,进一步熟悉C+中类的概念、类的封装、继承的实现方式。了解系统开发的需求分析、类层次设计、模块分析、编码测试、模块组装与整体调试的全过程,加深对C+的理解与Visual C+环境的使用;逐步熟悉程序设计的方法,并养成良好的编程习惯。2.总体设计2.1职工类的设计基于C+中类的概念,类的封装,继承和抽象。编写一个Person的基类包含共有的相关信息和操作,然后使职工类都继承于此基类从而实现多态。2.2应用类的设计编写一个Person类的友元类College类来实现添加,删除,查找等功能。2.
2、3文件的读写设计通过College类中的Save()函数来实现数据的存储,保存在Person.dat中,而通过Load()函数来实现Person.dat数据的读入。3.详细设计及系统实现3.1 Person类class Person /人员类(抽象类)protected: int No; /编号 char Name20; /姓名 char Duty; /人员类别标志(0-教师,1-实验员,2-行政人员,3-教师兼实验员,4-行政兼教师) double Salary; /基本工资 Person *next; /指针域public: Person() /基类构造 next=0; /指针域设置为空
3、virtual Person() /基类虚析构 virtual void Input()=0; /从键盘输入数据 virtual void Input(ifstream& ifs)=0; /从文件输入数据 virtual void Output()=0; /向屏幕输出数据 virtual void Output(ofstream& ofs)=0; /向文件输出数据 virtual double Incoming()=0; /计算收入 friend class College;3.2 Teacher类class Teacher:virtual public Person /教师类protecte
4、d: int Hours; /教师课时public: /为对象设置数据分为两种途径,通过)构造函数,)一般成员函数 /分开可以使得程序中应用更加灵活 /本程序采用:缺省构造+Input() Teacher() /构造函数,初始化部分数据 Duty=0; Salary=800; void Input() /键盘补充输入其它数据 coutNo; coutName; coutHours; void Input(ifstream& ifs) ifsNoNameDutyHours; void Output() coutNotNamet教师ttHourstIncoming()endl; void Outp
5、ut(ofstream& ofs) ofsNo Name Duty Hoursendl; double Incoming() return Salary+(Hours-120)*20; ;3.3 Assistant类class Assistant:virtual public Person /实验员protected: int Allowance; int Hours;public: Assistant() Duty=1; Salary=650; Allowance=150; void Input() coutNo; coutName; coutHours; void Input(ifstre
6、am& ifs) ifsNoNameDutyHours; void Output() coutNotNamet实验员ttHourstIncoming()endl; void Output(ofstream& ofs) ofsNo Name Duty Hoursendl; double Incoming() return Salary+Allowance+(Hours-70)*20; ;3.4 Manager类class Manager:virtual public Person /行政人员protected: int Allowance;public: Manager() Duty=2; Sa
7、lary=750; Allowance=250; void Input() coutNo; coutName; void Input(ifstream& ifs) ifsNoNameDuty; void Output() coutNotNamet行政人员tIncoming()endl; void Output(ofstream& ofs) ofsNo Name Dutyendl; double Incoming() return Salary+Allowance; ;3.5 Teacher_Assistant类class Teacher_Assistant:public Teacher,pub
8、lic Assistant /教师兼实验员public: Teacher_Assistant() Duty=3; Teacher:Salary=800; void Input() coutNo; coutName;coutTeacher:Hours; coutAssistant:Hours; void Input(ifstream& ifs) ifsNoNameDutyTeacher:HoursAssistant:Hours; void Output() coutNotNamet教师兼实验员 Teacher:Hours Assistant:HourstIncoming()endl; void
9、Output(ofstream& ofs) ofsNo Name DutyTeacher:Hours Assistant:Hoursendl; double Incoming() return Salary+(Teacher:Hours-120)*20 +Allowance+(Assistant:Hours-70)*20; ;3.6 Manager_Teacher类class Manager_Teacher:public Manager,public Teacher /行政人员兼教师public: Manager_Teacher() Duty=4; Manager:Salary=750; vo
10、id Input() coutNo; coutName; coutHours; void Input(ifstream& ifs) ifsNoNameDutyHours; void Output() coutNotNamet行政人员兼教师 HourstIncoming()endl; void Output(ofstream& ofs) ofsNo Name Duty Hoursendl; double Incoming() return Salary+Allowance+Hours*20; ;3.7 College类3.7.1 头文件class Collegeprivate: Person *
11、PL; void Clear(); int College:Find(int ID,Person *p1,Person *p2);public: College(); /构造 College(); /析构 void Add(); /增加职工 void Delete(); /删除职工 void Modify(); /修改职工 void Print(); /输出职工信息 void Save(); /职工信息存盘 void Load(); /职工信息装入 void Finding(); /查找职工;3.7.2 构造函数College:College() /构造函数(创建个头结点的链表) Person
12、 *p=new Teacher; PL=p; coutnext; delete p; p=PL; PL=0;3.7.4 Add函数void College:Add() /增加职工 couttt*高校工资管理系统*nnn; coutnext)p=p-next; char ch=m; /创建新结点,录入数据,连接到链表 Teacher *pt; Assistant *pa; Manager *pm; Teacher_Assistant *pta; Manager_Teacher *pmt; cout职工分类码0-教师,1-实验员,2-行政人员,3-教师兼实验员,4-行政兼教师:nn; for(;c
13、h!=x;) coutch; switch(ch) case0: pt=new Teacher; pt-Input(); p-next=pt; break; case 1: pa=new Assistant; pa-Input(); p-next=pa; break; case 2: pm=new Manager; pm-Input(); p-next=pm; break; case 3: pta=new Teacher_Assistant; pta-Input(); p-next=pta; break; case 4: pmt=new Manager_Teacher; pmt-Input()
14、; p-next=pmt; break; p=p-next; 3.7.5 Find函数/查找职工结点(返回-找到,-未找到.结点指针由p1返回,p2为前看指针)int College:Find(int ID,Person *p1,Person *p2) *p1=PL-next; *p2=PL; while(*p1) if(*p1)-No=ID) break; /找到 else *p2=*p1; /继续查找 *p1=(*p1)-next; return *p1?1:0;3.7.6 Clear函数void College:Clear() /清除所有的职工结点(仅保留头结点) Person *p=P
15、L-next; while(p) PL-next=p-next; delete p; p=PL-next; 3.7.7 Delete函数void College:Delete() /删除职工 couttt*高校工资管理系统*nnn; coutntttt* 删除职工*n; int No; Person *p1,*p2; coutNo; if(!Find(No,&p1,&p2) coutnext=p1-next; /连接 delete p1; cout正确删除!n; 3.7.8 Modify函数void College:Modify() /修改职工 couttt*高校工资管理系统*nnn; cou
16、tntttt* 修改职工*n; int No; Person *p1,*p2; coutNo; if(!Find(No,&p1,&p2) coutOutput(); /输出原来的职工信息(做提示) p1-Input(); /输入新的职工信息(更新) cout修改完成!n; 3.7.9 Print函数void College:Print() /输出职工信息 couttt*高校工资管理系统*nnn; coutn* 职工信息表*nn; coutnext; if(!p) coutOutput(); p=p-next; 3.7.10 Save函数void College:Save() /职工信息存盘of
17、stream f(Person.dat,ios:out); /打开文件 /遍历输出至文件 Person *p=PL-next; while(p) p-Output(f); p=p-next; f.close(); /关闭文件 coutbufbufDuty; if(f) /根据人员类型创建新结点 switch(Duty) case 0: p2=new Teacher; break; case 1: p2=new Assistant; break; case 2: p2=new Manager; break; case 3: p2=new Teacher_Assistant; break; cas
18、e 4: p2=new Manager_Teacher; break; default: f.close(); return; p-next=p2; p=p-next; f.seekg(t); p-Input(f); else break; /关闭文件 f.close(); coutPerson.dat数据已装入.n;3.7.12 Finding函数void College:Finding()couttt*高校工资管理系统*nnn;coutntttt*查找职工*n;Person *p1,*p2;int ID;coutID;coutnext; p2=PL; while(p1) if(p1)-No
19、=ID) coutOutput(); break; /找到 else p2=p1; /继续查找 p1=(p1)-next; 3.8 界面函数char Meau()char c;int flag;dosystem(cls);flag=1; couttt*高校工资管理系统*nnn; couttttn; coutttt n; coutttt 1、增加职工 n; coutttt 2、删除职工 n;coutttt 3、查找职工 n; coutttt 4、修改职工 n; coutttt 5、输出职工信息 n;coutttt 6、数据存盘 n; coutttt 7、数据装入 n;coutttt 8、退出 n
20、; couttttn; coutc; if(c=1|c=2|c=3|c=4|c=5|c=6|c=7|c=8) flag=0;while(flag);return c;/显示主菜单,接受选择3.9 主函数void main() char ch; College c; /定义大学对象 do ch=Meau(); switch(ch) case 1: system(cls);c.Add(); coutnntt按任意键结束.n;getchar();getchar();break; case 2: system(cls);c.Delete();coutnntt按任意键结束.n;getchar();getchar();break; case 3: system(cls);c.Finding();coutnntt按任意键结束.n;getchar();getchar();break
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 电动汽车的商业化运营模式与分析试题及答案
- 家居市场2025年线上线下融合模式创新模式下的家居行业产业创新研究报告
- 电池生产厂家考题试题及答案
- 家具行业设计的企业社会责任与实践探讨试题及答案
- 职业防护测试题及答案
- 建筑施工安全管理信息化在施工现场安全教育与培训中的应用报告
- 西北农林科技大学《计算力学》2023-2024学年第二学期期末试卷
- 全球流媒体市场2025年竞争格局及内容创新模式深度报告
- 电脑采购面试题及答案
- 幼儿园音乐试题及答案
- 乡土中国的性别差异
- 高速铁路概论单元高速铁路发展概况课件
- 宁波浙大宁波理工学院招聘13名事业编制工作人员笔试历年参考题库附带答案详解
- 精神科医疗质量指标十二项控制评价体系
- 延安精神知识讲座课件
- 上海市金山区2025届高三高考二模地理试卷(含答案)
- 《电气控制技术》课件-反接制动控制
- 2024年初级会计实务考试真题及答案(5套)
- 2024年高考化学真题完全解读(广东卷)
- 预防老年人痴呆
- 三年级信息科技第23课《分解描述问题》教学设计、学习任务单及课后练习
评论
0/150
提交评论