C++课程设计高校工资管理系统.doc
《C++课程设计高校工资管理系统.doc》由会员分享,可在线阅读,更多相关《C++课程设计高校工资管理系统.doc(49页珍藏版)》请在三一办公上搜索。
1、C+课程设计1.系统概述通过设计一个较为简单的高校工资管理系统,进一步熟悉C+中类的概念、类的封装、继承的实现方式。了解系统开发的需求分析、类层次设计、模块分析、编码测试、模块组装与整体调试的全过程,加深对C+的理解与Visual C+环境的使用;逐步熟悉程序设计的方法,并养成良好的编程习惯。2.总体设计2.1职工类的设计基于C+中类的概念,类的封装,继承和抽象。编写一个Person的基类包含共有的相关信息和操作,然后使职工类都继承于此基类从而实现多态。2.2应用类的设计编写一个Person类的友元类College类来实现添加,删除,查找等功能。2.3文件的读写设计通过College类中的Sa
2、ve()函数来实现数据的存储,保存在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; /指针域设置为空 virtual Person() /基类虚析
3、构 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 /教师类protected: int Hours; /教师课时pub
4、lic: /为对象设置数据分为两种途径,通过)构造函数,)一般成员函数 /分开可以使得程序中应用更加灵活 /本程序采用:缺省构造+Input() Teacher() /构造函数,初始化部分数据 Duty=0; Salary=800; void Input() /键盘补充输入其它数据 coutNo; coutName; coutHours; void Input(ifstream& ifs) ifsNoNameDutyHours; void Output() coutNotNamet教师ttHourstIncoming()endl; void Output(ofstream& ofs) ofsN
5、o 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(ifstream& ifs) ifsNoNameDuty
6、Hours; 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; Salary=750; Allowance=25
7、0; 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,public Assistant /教师兼实验员p
8、ublic: 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 Output(ofstream& ofs)
9、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; void Input() coutNo; cou
10、tName; 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 *PL; void Clear(); int
11、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 *p=new Teacher; PL=p;
12、 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(;ch!=x;) coutch; switch(
13、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(); p-next=pmt; break; p
14、=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=PL-next; while(p) PL-ne
15、xt=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; coutntttt* 修改职工*n; int No
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 课程设计 高校 工资管理 系统
链接地址:https://www.31ppt.com/p-3747700.html