当前位置:文档之家› C++小型企业工资管理系统

C++小型企业工资管理系统

C++小型企业工资管理系统
C++小型企业工资管理系统

一、需求分析

1.从要求上来看是要对各个员工的各种情况(名字、年龄、性别、职位、工资状况)进行输

入。然后可以输出.

2.可以对于员工数据进行修改,可以查询.

3.对于员工的各种情况系统还可以进行统计排名.

二、概要设计

首先,创建了一个employee类.然后派生出四个类:manager、technician、salesman、sales manager.在派生类中定义了三个构造函数,分别是:数据输入函数(Input),表格输出函数(Print),排序函数(Pay).

其次,在总体结构上,建立以各根菜单,用于选择各种功能.

1.Input(数据输入):输入员工的各种数据.

2.Total(数据统计):将员工的总数据进行对比排序,然后输出.

3.Output(数据显示):显示输入的各种数据.

4.Save(数据保存):对输入的数据进行保存备份.

5.Eixt(退出程序):执行退出程序命令.

三、详细设计

1.Input(数据输入):定义了各个岗位的人员的类,并把每个类的人员的属性设为类中

的保护成员,其中技术工的工作时间和每小时的所得为私有成员,而销售员的销售额、经理的工资和销售经理的所辖部门的销售额和其底薪设为公有成员,再依次录入。

2.Total(数据统计): 根据所有类的工资算法在其所属类中定义一个函数void pay()来

根据各个职位的具体情况来计算工资,并且算出的工资经过冒泡法排序.

void printtotal()

{

cout<<"├─────┴──┬──┴─────┤"<

cout<<"│Total │"<

cout<<"└────────┴────────┘"<

}

3.Output(数据显示): 通过do-while循环以及制表格和setw的使用将输入的数据和统计并

排序的数据以表格的形式打印出来,销售额合计一栏宽度要大些。

void saleprint()

{

cout<<"│"<

cout<<"├─────┼─────┼─────┤"<

cout<<"│"<

cout<<"├─────┼─────┼─────┤"<

cout<<"│"<

cout<<"├─────┼─────┼─────┤"<

cout<<"│"<

}

void print()

{

cout<<"├─────┼─────┼─────┼─────┼─────┤"<

cout<<"│"<

<

}

4.Save(数据保存):通过函数save()来将输入的数据和统计并排序的数据进行保存.

例如:

void save()

{

fstream outfile;

outfile.open("f:flsdfj.txt",ios::app);

if(!outfile)

{

cout<<"f can't open.\n";

abort();

}

outfile<<"Sales manger"<

outfile<<"ID"<

}

5.Eixt(退出):利用exit来完成退出系统功能。

四、设计和调试分析

程序清单:

#include

#include

#include

#include

#include

class employee

{

public:

employee()

{

salary=0;

}

void pay(){}

void print(){}

void input()

{

cout<<"ID:";

cin>>no;

cout<<" NAME:";

cin>>name;

cout<<" SEX(m/w):";

cin>>sex;

cout<<" AGE:";

cin>>age;

}

protected:

int no;

char name[8];

float salary;

char sex;

int age;

};

class manager:virtual public employee {

protected:

float monthlypay,sale;

public:

manager(){monthlypay=8000;}

void input(){cout<<"Manger";employee::input();}

void save()

{

fstream outfile;

outfile.open("f:flsdfj.txt",ios::app);

if(!outfile)

{

cout<<"f can't open.\n";

abort();

}

outfile<<"Manger"<

outfile<<"ID"<

}

void pay(){salary=monthlypay;}

void print()

{

cout<<"├─────┼─────┼─────┼─────┼─────┤"<

cout<<"│"<

}

};

class technician:virtual public employee

{

private:

float hourlyrate;

int workhours;

public:

technician(){hourlyrate=100;}

void pay()

{

cout<

cin>>workhours;

salary=hourlyrate*workhours;

}

void input(){cout<<"TECHNICIAN"<

void save()

{

fstream outfile;

outfile.open("f:flsdfj.txt",ios::app);

if(!outfile)

{

cout<<"f can't open.\n";

abort();

}

outfile<<"TECHNICIAN"<

outfile<<"ID"<

}

void print()

{

cout<<"├─────┼─────┼─────┼─────┼─────┤"<

cout<<"│"<

}

};

class salesman:virtual public employee

{

protected:

float commrate;

float sales;

public:

salesman(){commrate=0.04;}

void input(){cout<<"SALEMAN";employee::input();}

void save()

{

fstream outfile;

outfile.open("f:flsdfj.txt",ios::app);

if(!outfile)

{

cout<<"f can't open.\n";

abort();

}

outfile<<"TECHNICIAN"<

outfile<<"ID"<

}

void pay()

{

cout<

cin>>sales;

salary=sales*commrate;

}

void print()

{

cout<<"├─────┼─────┼─────┼─────┼─────┤"<

cout<<"│"<

<

}

};

class salesmanager:virtual public manager,virtual public salesman

{

private:

float total;int no1,no2,no3,no4;char name1[8],name2[8],name3[8],name4[8];

float sale1,sale2,sale3,sale4;

public:

void salemanager()

{

monthlypay=5000;

commrate=0.005;

}

void input(){cout<<"Sales manger";employee::input();}

void save()

{

fstream outfile;

outfile.open("f:flsdfj.txt",ios::app);

if(!outfile)

{

cout<<"f can't open.\n";

abort();

}

outfile<<"Sales manger"<

outfile<<"ID"<

}

void savesale()

{

fstream outfile;

outfile.open("f:flsdfj.txt",ios::app);

if(!outfile)

{

cout<<"f can't open.\n";

abort();

}

outfile<<"The salary of saleman of sales manger and themselves"<

outfile<<"ID"<

outfile<<"ID"<

outfile<<"ID"<

outfile<<"ID"<

}

void pay()

{

cout<

salary=monthlypay+commrate*total;

}

float totalsale(){total=sale1+sale2+sale3+sale4;return total;}

void printtotal()

{

cout<<"├─────┴──┬──┴─────┤"<

cout<<"│Total │ "<

cout<<"└────────┴────────┘"<

}

void sort(salesmanager p)

{

int tmp,i,j;

for(j=0;j<2;j++)

for(i=0;i<2;i++)

if(total

{

tmp=salary;

total=p.salary;

p.salary=tmp;

tmp=no;

no=p.no;

p.no=tmp;

}

}

void saler()

{

cout<<"Staff ID:";

cin>>no1;

cout<<" Staff NAME:";

cin>>name1;

cout<<" Sales volume:";

cin>>sale1;

cout<<"Staff ID:";

cin>>no2;

cout<<" Staff NAME:";

cin>>name2;

cout<<" Sales volume:";

cin>>sale2;

cout<<"Staff ID:";

cin>>no3;

cout<<" Staff NAME:";

cin>>name3;

cout<<" Sales volume:";

cin>>sale3;

cout<<"Staff ID:";

cin>>no4;

cout<<" Staff NAME:";

cin>>name4;

cout<<" Sales volume:";

cin>>sale4;

}

void saleprint()

{

cout<<"│"<

cout<<"├─────┼─────┼─────┤"<

cout<<"│"<

cout<<"├─────┼─────┼─────┤"<

cout<<"│"<

cout<<"├─────┼─────┼─────┤"<

cout<<"│"<

}

void print()

{

cout<<"├─────┼─────┼─────┼─────┼─────┤"<

cout<<"│"<

<

}

};

void main()

{

manager m[4];

technician t[4];

salesman s[4];

salesmanager sm[4];

t[1].save();

int flag=1,operate;

do{

cout<<" #### The system of salary manger ####\n";

cout<<" ┌─────────────┐\n"; cout<<" │ Chose your actions │\n";

cout<<" │ Input:1,Enter │\n";

cout<<" │ Total:2,Enter │\n";

cout<<" │ Output:3,Enter │\n";

cout<<" │ Save:4,Enter │\n";

cout<<" │ Exit:5,Enter │\n";

cout<<" └─────────────┘\n";

cout<<" Please chose one action: ";

cin>>operate;

switch(operate)

{

case 1:

cout<<"Waiting for a minute!"<

{

for(int i=0;i<4;i++)

{m[i].input();}

for(int j=0;j<4;j++)

{t[j].input();}

for(int k=0;k<4;k++)

{s[k].input();}

for(int l=0;l<4;l++)

{sm[l].input();}

};

{

for(int i=0;i<4;i++)

{m[i].pay();}

for(int j=0;j<4;j++)

{t[j].pay();}

for(int k=0;k<4;k++)

{s[k].pay();}

for(int l=0;l<4;l++)

{sm[l].pay();sm[l].saler();}

};break;

case 2:

cout<<"Waiting for a minute!"<

{

{

for(int l=0;l<4;l++)

sm[l].totalsale();

for(int i=0;i<4;i++)

for(int j=0;j<2;j++)

sm[j].sort(sm[j+1]);

};

cout<<"The saleman of the first sales manger"<

cout<<"┌─────┬─────┬─────┐"<

cout<<"│ID │ NAME │ SALARY │"<

sm[0].saleprint();

sm[0].printtotal();

cout<<" The order is complete"<

cout<<"List names of every sales manger"<

cout<<"┌─────┬─────┬─────┬─────┬─────┐"<

cout<<"│ID │ NAME │SEX │AGE │ SALARY │"<

for(int k=0;k<4;k++)

sm[k].print();

cout<<"└─────┴─────┴─────┴─────┴─────┘"<

};break;

case 3:

cout<<"Waiting for a minute!"<

{

cout<<" The blank of the :"<

cout<<"┌─────┬─────┬─────┬─────┬─────┐"<

cout<<"│ID │ NAME │SEX │AGE │ SALARY │"<

for(int i=0;i<4;i++)

{m[i].print();}

cout<<"└─────┴─────┴─────┴─────┴─────┘"<

cout<<"┌─────┬─────┬─────┬─────┬─────┐"<

cout<<"└─────┴─────┴─────┴─────┴─────┘"<

cout<<"┌─────┬─────┬─────┬─────┬─────┐"<

cout<<"│ID │ NAME │SEX │AGE │ SALARY │"<

for(int k=0;k<4;k++)

{s[k].print();}

cout<<"└─────┴─────┴─────┴─────┴─────┘"<

cout<<"┌─────┬─────┬─────┬─────┬─────┐"<

cout<<"└─────┴─────┴─────┴─────┴─────┘"<

};break;

case 4:

cout<<"Waiting for a minute!"<

{

for(int i=0;i<4;i++)

{m[i].save();}

for(int j=0;j<4;j++)

{t[j].save();}

for(int k=0;k<4;k++)

{s[k].save();}

for(int l=0;l<4;l++)

{sm[l].save();}

};cout<<" Information save! "<

case 5:exit(0);break;

default:cout<<"Error!Repeat again!"<

}

}while(flag=1);

}

}

五、用户手册

1)运行程序.会出现如下画面,按照提示进行选择.

2)首先选择1,然后按Enter键.按照提示对员工个人情况进行输入.如图:

3)然后选择4,然后按Enter键.对刚才输入的数据进行保存.

4)选择2, 然后按Enter键.对数据进行统计.如图:

六、测试结果

对各个部分功能进行测试后,各部分功能都很好.但是此程序也有的它的缺点在.那就是它不能按照个人的意愿,职能按照固定的人数对数据进行输入,既不能多也不能少.很麻烦.一但格式输入的不正确会立即进入死循环.不理想.

本程序综合性非常强,由于我们对使用C++设计程序的能力还不是很熟练,所以在设计时非常吃力。在整个程序中,我们通过使用while循环,switch语句,冒泡排序法,表格设计中的setw()以及类的定义及使用来完成程序设计,使我提高了对C++中语句的使用能力和组合能力,进一步加强了我对使用C++编程的能力。

通过此次程序设计实习,我发现自己在学习C++方面还有很多不足,在此程序中可能还有一些不足和错误,我们将在以后的学习过程中不断努力并强化对C++的练习

七、参考文献

[1]苏金明,周建斌.用https://www.doczj.com/doc/c96362603.html,和VC#.NET开发交互式CAD系统[M]. 北京:电子工业出版社,2004

[2]普悠玛https://www.doczj.com/doc/c96362603.html,程序设计示例导学[M]. 北京:科海电子出版社,2003

相关主题
文本预览
相关文档 最新文档