C++课程设计报告 (2).doc_第1页
C++课程设计报告 (2).doc_第2页
C++课程设计报告 (2).doc_第3页
C++课程设计报告 (2).doc_第4页
C++课程设计报告 (2).doc_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C+课程设计班级:通信工程0701姓名:廖士俊学号:8907101114一、 课程设计目的1、 掌握C+语言程序的编写;2、 熟练运用C+程序开发工具;二、课程设计内容(一)、设计题目及简介假设要为某个公司编写雇员工资支付程序。一般工人(Worker)按每月工作的天数计算工资;销售人员(Salesman)在基本工资基础上每月还有销售提成;经理(Manager) 每月按固定工资支付,临时工(Floater)按小时支付。要求设计抽象类(Employee)描述所有雇员的共同特性(如姓名,性别,出生日期,员工类别),含有计算工资的纯虚函数computeSalay(),所有员工用该方法计薪。要求用多态实现。经理工资计算:月工资()销售人员工资计算:基本工资+每件产品提成额*销售的产品数量一般工人工资计算:每天工资额*工作天数临时工工资计算:每小时工资额*总工作小时数文本界面为:1新增员工信息2删除员工信息3员工信息搜索(按姓名)5员工信息统计(按姓名或工资或类别)6员工信息分类存储7员工信息导入8按工资排序9退出(二)、设计说明本程序包括了数值和非数值计算型算法设计,要完成输入输出、显示、增加、删除、信息分类等功能,本程序需要采用数组及虚函数的相关操作及功能。(三)、程序流程图开始输入基本信息功能选择1 2 3 4 5 6 7 234567新增删除信息员工信息检索员工信息分类存储员工信息导入按工资排序退出(四)、程序清单1、main 函数:实现各个参数的定义及赋初值,提供选择界面;2、基类:定义参数、相关函数以及虚函数3、派生类:实现新增员工信息、删除员工信息、员工信息搜索(按姓名)、员工信息统计(按姓名或工资或类别)、员工信息分类存储、员工信息导入、按工资排序、退出等功能。源程序如下:#include#include#include#include#includeint n=4; /统计雇员的人数int K=0; /统计销售的人数int H=0; /统计临时工人的人数int M0=0; /统计经理的人数int J=0; /统计一般工人的人数 class Employeeprotected:char name20;/姓名char gender20;/性别char date20; /出生日期 float accumPay; /月薪总额char Staffcategory20;public:Employee()accumPay=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()return 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() coutname gender date Staffcategory accumPayendl;/普通工人class Worker:public Employee private: float dayRate; /每天酬金 int workDays; /当月工作天数public:Worker()dayRate=100; virtual void get_data()coutnamegenderdateStaffcategoryworkDays;float get_dayRate()return dayRate;int get_workDays ()return workDays;void computeSalay()accumPay=dayRate*workDays; void display() /cout一般工人显示数据如下:endl;/cout姓名 性别 出生日期 员工类别 工作天数 每天酬金 月薪总额endl;coutname gender date Staffcategory workDays dayRate accumPayendl;/销售人员class Salesman:public Employeeprivate:float commRate;/每件产品提成额float sales; /销售的产品数量float salary; /基本工资public:Salesman()commRate=0.04f; salary=1000;virtual void get_data()coutnamegenderdateStaffcategorysales;void computeSalay()accumPay=commRate*sales+salary;void display() /cout销售人员数据显示数据如下:endl;/cout姓名 性别 出生日期 员工类别 销售的产品总量 每件产品提成额 基本工资/ 月薪总额;coutname gender date Staffcategory sales commRate salary accumPayendl;/经理class Manager:public Employeeprivate:float monthSalary;/月工资public:Manager()monthSalary=5000;virtual void get_data()coutnamegenderdateStaffcategory;float get_monthSalary()return monthSalary;void computeSalay()accumPay=monthSalary; void display() /cout经理显示数据如下:endl;/cout姓名 性别 出生日期 员工类别 月薪总额endl;coutname gender date Staffcategory accumPayendl;/临时工class Floater:public Employee private:float hourRates; /每小时酬金int workHours; /当月工作时数public: Floater()hourRates=10;virtual void get_data()coutnamegenderdateStaffcategoryworkHours;float get_hour_Rates()return hourRates;int get_workHours()return workHours;void computeSalay()accumPay=hourRates*workHours; void display() /cout一般工人显示数据如下:endl;/cout姓名 性别 出生日期 员工类别 当月工作时数 每小时酬金 月薪总额endl;coutname gender date Staffcategory workHours hourRates accumPayendl;Employee *E100;Employee *W100;Employee *S100;Employee *F100;Employee *M100;void displayAll()ifstream in(employee.dat,ios:binary);if(in.fail()coutThe File is not sucessfully openedendl;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(employee.dat,ios:app);if(output.fail()coutThe file was not successfully openedendl;coutm;for (int i=0;im;i+) char t;cout输入第i+1个员工信息;coutt;if(t=w)En=new Worker();En-get_data();En-computeSalay();output.write(char*)En,sizeof(En); n+;if(t=m) En=new Manager() ; En-get_data();En-computeSalay(); output.write(char*)En,sizeof(En); n+; if(t=s) En=new Salesman();En-get_data();En-computeSalay(); output.write(char*)En,sizeof(En); n+; if(t=f) En=new Floater(); En-get_data();En-computeSalay(); output.write(char*)En,sizeof(En); n+; ;output.close();/排序void Paixu() ifstream in(employee.dat,ios:binary);for(int p=0;pn;p+)in.read(char*)Ep,sizeof(Ep);in.close();int i,j;Employee *temp;int swap;for(i=0;in-1;i+)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(employee.dat,ios:binary); for(int t=0;tn;t+) out.write(char*)Et,sizeof(Et); out.close(); void DELETE() ofstream out(employee.dat,ios:binary); ifstream in(employee.dat,ios:binary); in.seekg(0);char sname20;coutsname;for(int i=0;iget_name(),sname)=0) for(int j=i;jn;j+)Ej=Ej+1;En-1=NULL;n-; out.write(char*)Ei,sizeof(Ei); in.close();out.close();void Find() ifstream in(employee.dat,ios:binary);char sname20;coutsname;for(int i=0;iget_name(),sname)=0)Ei-display();else if(i=n)cout此人不存在endl;void sort() ofstream out1(Worker.dat,ios:binary);ofstream out2(Floater.dat,ios:binary);ofstream out3(Salesman.dat,ios:binary); ofstream out4(Manager.dat,ios:binary); ifstream in1(Worker.dat,ios:binary);ifstream in2(Floater.dat,ios:binary);ifstream in3(Salesman.dat,ios:binary);ifstream in4(Manager.dat,ios:binary);for(int i=0;iget_Staffcategory(),Worker)=0)WJ=new Worker();WJ=Ei;out1.write(char*)WJ,sizeof(WJ);/WJ-display();J+;if(strcmp(Ei-get_Staffcategory(),Salesman)=0) SK=new Salesman();SK=Ei;out3.write(char*)SK,sizeof(SK);/SK-display(); K+;if(strcmp(Ei-get_Staffcategory(),Floater)=0) FH=new Floater();FH=Ei;out2.write(char*)FH,sizeof(FH);/FH-display();H+;if(strcmp(Ei-get_Staffcategory(),Manager)=0) MM0=new Manager();MM0=Ei;out2.write(char*)MM0,sizeof(MM0);/MM0-display();M0+;cout一般工人信息显示如下:endl;for(int b=0;bdisplay();cout销售工人显示如下:endl;for(int c=0;cdisplay();cout临时工信息显示如下:endl;for (int d=0;ddisplay();cout经理信息如下:endl;for(int e=0;edisplay(); void main() cout输入员工信息:endl;E0=new Worker();E1=new Floater();E2=new Salesman();E3=new Manager();for (int i=0;iget_data();Ei-computeSalay();ofstream outFile(employee.dat,ios:binary);ifstream inFile(employee.dat,ios:binary);if(outFile.fail()coutThe file was not sucessfully openedendl; for(int k=0;kn;k+)outFile.write(char*)EK,sizeof(EK);/outFile.close();/*if(inFile.fail()coutThe fil

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论