1、每小时工资额*总工作小时数文本界面为: 1新增员工信息 2删除员工信息 3员工信息搜索(按姓名) 4员工信息统计(按姓名或工资或类别) 5员工信息分类存储 6员工信息导入 7按工资排序 8退出第一章 绪论11 课程设计的目的C+作为一种面向对象的程序设计语言,它支持对类的抽象.了解面向对象的程序设计思想及其方法,其核心概念-类,包括类及其派生类的声明实现利用类来解决具体问题,并达到以下目的:(1)要求学生达到熟练掌握C+语言的基本知识和技能;(2)基本掌握面向对象程序设计的基本思路和方法;(3)能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。12 课程设计的背景和意义C+是一门实
2、践性很强的课程,光靠听课和看书是学不好的。衡量学习好坏的标准不是懂不懂。所以开设了这次课程设计,目的在于使学生达到熟练掌握C+语言的基本知识和技能,掌握面向对象程序设计的基本思路和方法,能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。这对于进一步巩固C+知识是一个很好的机会。同时我们在这次课程设计的过程中学到了很多课本以外的知识,解决了很多以前没有碰到的问题,可以说对程序设计这门课有了一个新的认识。13 课程设计环境本次课设采用的是Microsoft Visual C+6.0编写程序第二章 需求分析21 问题描述制作公司人员信息管理系统实现数据录入、数据删除、数据保存和数据显示以
3、及数据查询等一些功能。22 功能要求(1)根据自己的喜好设计系统封面(2)系统应包括记录编辑和记录查询等功能模块。记录编辑功能完成职工记录编辑的记录增加、记录删除和记录查询等功能。记录查询功能可以对数据集中的记录进行查询,要求按职工姓名进行查询23 问题的解决方案根据系统功能要求,可以将问题解决分为以下步骤: 1)应用系统分析,建立该系统的功能模块框图以及界面的组织和设计;2)分析系统中的各个实体及它们之间的关系;3)根据问题描述,设计系统的类层次;4)完成类层次中各个类的描述;5)完成类中各个成员函数的定义;6)完成系统的应用模块;7)功能调试;8)完成系统总结报告。第三章 系统设计31 数
4、据设计311 类设计本次程序设计一共定义了五个类:Employee, Manager,Floater,Workers和Salesman。在Employee类里定义了Empoyee类的缺省构造函数和它的析构函数,ADD函数用于实现新增成员的输入,delete1函数用于实现数据的删除,displayall函数用于实现数据的显示。Find用于实现在查找的时候得到姓名。Sort用于分类。排序用于根据工资排序。Manager,worker,floater和Salesman类公有继承Employee类,它们的函数功能,数据成员与基类的基本相同。312 函数设计在五个类里定义了它们的的缺省构造函数和它的析构
5、函数,Add函数用于实现新增成员的输入,通过for循环给对象数组赋值来实现。change函数实现数据的更改。delete1函数用于实现数据的删除。displayall函数用于实现数据的显示。Find用于实现根据姓名查找。Paixu实现通过工资高低排序。Sort实现通过员工信息分类存储。32 结构设计3.2.1系统流程图 322 程序清单1、main 函数:实现各个参数的定义及赋初值,提供选择界面;2、基类:定义参数、相关函数以及虚函数3、派生类:实现新增员工信息、删除员工信息、员工信息搜索(按姓名)、员工信息统计(按姓名或工资或类别)、员工信息分类存储、员工信息导入、按工资排序、退出等功能。3
6、23源程序代码: #include #includestring.hfstream.hiomanip.hstdlib.h int n=0; /统计雇员的人数 int K=0; /统计销售的人数 int H=0; /统计临时工人的人数 int M0=0; /统计经理的人数 int J=0; /统计一般工人的人数 class Employee protected: char name20;/姓名 char gender20;/性别 char date20; /出生日期 float accumPay; /月薪总额 char Staffcategory20; public: Employee()acc
7、umPay=0; Employee() void set_name(char *na)strcpy(name,na); void set_gender(char *ge)strcpy(gender,ge); void set_date(char *da)strcpy(date,da); void set_Staffcategory(char *staff)strcpy(Staffcategory,staff); void set_accumpay(float accu)accumPay=accu; char *get_name()return name; char *get_gender()r
8、eturn gender; char *get_date()return date; float get_accumpay()return accumPay; char *get_Staffcategory()return Staffcategory; virtual void computeSalay()=0; virtual void get_data() coutnamegenderdateStaffcategory; virtual void display()name genderdate StaffcategoryaccumPayendl; ; /普通工人 class Worker
9、:public Employee private: float dayRate; /每天酬金 int workDays; /当月工作天数 Worker()dayRate=180; virtual void get_data() coutworkDays; float get_dayRate()return dayRate; int get_workDays ()return workDays; void computeSalay()accumPay=dayRate*workDays; void display() /cout一般工人显示数据如下:姓名 性别 出生日期 员工类别 当月工作天数 每
10、天酬金 月薪总额 workDaysdayRate ; /销售人员 class Salesman: float commRate;/每件产品提成额 float sales; /销售的产品数量 float salary; /基本工资 Salesman() commRate=8; salary=3000;(姓名 性别 出生日期 员工类别 销售产品数量)sales; void computeSalay()accumPay=commRate*sales+salary; void display()销售人员数据显示数据如下:姓名 性别 出生日期 员工类别 销售的产品总量 每件产品提成额 基本工资 /月薪总
11、额salescommRatesalary /经理 class Manager: float monthSalary;/月工资 Manager()monthSalary=10000; float get_monthSalary()return monthSalary; void computeSalay()accumPay=monthSalary;经理显示数据如下:姓名 性别 出生日期 员工类别 月薪总额 /临时工 class Floater: float hourRates; /每小时酬金 int workHours; /当月工作时数 Floater()hourRates=15;(姓名 性别
12、出生日期 员工类别 当月工作时数)workHours; float get_hour_Rates()return hourRates; int get_workHours()return workHours; void computeSalay()accumPay=hourRates*workHours; void display()姓名 性别 出生日期 员工类别 当月工作时数 每小时酬金 月薪总额workHourshourRates Employee *E100; Employee *W100; Employee *S100; Employee *F100; Employee *M100;
13、void displayAll() ifstream in(employee.dat,ios:binary); if(in.fail()The File is not sucessfully opened for(int i=0;in;i+) in.read(char*)Ei,sizeof(Ei); for(int k=0;kdisplay(); in.close(); void ADD() int m; ofstream output(app); if(output.fail() The file was not successfully opened coutm; for (int i=0
14、; char t;输入第i+1t; if(t=w) En=new Worker(); En-get_data();computeSalay(); output.write(char*)En,sizeof(En); n+;m En=new Manager() ; En- output.write(char*)En,sizeof(En); if(t=s En=new Salesman(); En- f En=new Floater(); output.close(); /排序 void Paixu() for(int p=0;pp+) in.read(char*)Ep,sizeof(Ep); in
15、.close(); int i,j; Employee *temp; int swap; for(i=0;n-1; swap=0; for(j=0;jget_accumpay()Ej+1-get_accumpay() swap=1; temp=Ej; Ej=Ej+1; Ej+1=temp; if(!swap)break; ofstream out( for(int t=0;tget_name(),sname)=0) for(int j=i; En-1=NULL; n-; out.write(char*)Ei,sizeof(Ei); void Find()输入要查询的姓名: Ei- else if(i=n)cout J+;Salesman SK=new Salesman(); SK=Ei; out3.write(char*)SK,sizeof(SK); /SK-
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1