《C++程序设计》 课程设计报告
设计题目: 小型企业工资管理系统
专 业 计算机科学与技术 班 级 学 生 学 号 指导教师 起止时间
目 录
1 引 言 .......................................................... 1
1.1 问题的提出 (四号黑体) ........................................... 1 1.2国内外研究的现状 (四号黑体) ...................................... 1 1.5任务与分析 (四号黑体) ............................................ 1 2 程序的主要功能 ................................................... 2
2.1输入数据 .......................................................... 2 2.2数据统计 .......................................................... 2 2.3 数据打印 .......................................................... 2 2.4数据备份 .......................................................... 2 2.5退出 .............................................................. 2 3 运行平台 ........................................................ 2 4 总体设计 ........................................................ 3 5 程序类说明 ...................................................... 4 6 模块分析 ........................................................ 6
6.1 经理类成员函数 .................................................... 6 6.2销售经理类成员函数 ................................................ 6 6.3销售员类成员函数 .................................................. 8 6.4技术员类成员函数 .................................................. 9 6.5主函数 ........................................................... 10 7 系统测试 ....................................................... 21 8 结论 ........................................................... 24
参考文献 ......................................................... 25
引 言
1.1 问题的提出
在现代化的企业管理中,工资管理系统有着十分重要的作用,然而,用大型软件系统来于小型的企事业单位,不啻于“杀鸡用牛刀”,因此小型的的软件对于这种单位自然有十分重要作用。某小型企业出与这种目的制作了这个工资管理系统。
1.2国内外研究的现状
在现今国内外大中小型企业蓬勃发展,对企业的管理显得越发重要,其中对工资进行管理更是公司发展的命脉。
1.5任务与分析
1、 公司主要有4类人员:经理、技术员、销售员、销售经理。要求存储这些人的职工号、姓名、月工资、岗位、年龄、性别等信息。 2、 工资的计算办法: 经理:固定月薪为8000;
技术员:工作时间×小时工资(100元每小时); 销售员:销售额×4%提成;
销售经理:底薪(5000)+所辖部门销售额总额×0.5%; 3、 类的层次结构大体如图1所示:
4、 输入数据要求每类人员不能少于4人,并按以下格式同时输出到文件和屏幕: 职工号 姓名 性别 年龄 岗位 工资 排名
5、 总体设计,要有一个菜单,用于选择各项功能,其中 1) 数据录入:输入各种数据;
2) 数据统计:各类人员的工资计算及最终按工资进行的冒泡排序; 3) 数据打印:打印上述表格; 4) 数据备份:把相关数据写入文件; 5) 退出:退出本系统;
注:各项菜单都调用一个函数来实现。
6、输入并存放某销售经理所辖部门各销售员的业绩及自己的工资表: (选作)
2 程序的主要功能
2.1输入数据
输入各种数据
2.2数据统计
各类人员的工资计算及最终按工资进行的冒泡排序;
2.3 数据打印
打印表格
2.4数据备份
把相关数据写入文件
2.5退出
退出本系统
3 程序运行平台
VC++6.0。
具体操作如下:新建„„工程,添加相应的源文件„„,再编译,链接,执行等,此部分可参照实验指导书前面的内容写。
4 总体设计
图4.1 系统总体框架图
图4.2系统总流程图
程序类的说明
Employ类的声明
class Employ//雇员类
{
protected:
int num; char name[10]; char sex; int age; int wage; public:
virtual void set()=0; virtual void print()=0; virtual void reserved()=0; }; Manager类的声明
class Manager:public Employ//经理类
{ public: void set(); void print(); void reserved(); };
Salesman类声明 class Salesman:public Employ//销售员类{
protected: int salesvolume; int snum; public:
void set(); void print(); void reserved(); void printinfor();
5
int getsales() {return salesvolume;} int getsnum() {return snum;} };
MarketMan类声明
class MarketMan:public Manager//销售经理类 {
protected: int salesvolume; public: void set(); void print(); void reserved(); int resetwage(); int getnum() {return num;} char*getname() {return name;}
int getamount(Salesman s[],int n) {
salesvolume=0; for(int i=0;i
6 模块分析//此部分应详细介绍设计思想、流程及关键代码等,下面没详细介绍
6.1 经理类成员函数
void Manager::print()//经理类成员函数 {
cout
void Manager::reserved() {
ofstream employf("d:\\managerbf.txt"); employf
void MarketMan::set()//销售经理类成员函数 {
wage=resetwage(); cout>num; cout>name;
cout>sex;
cout>age; }
void MarketMan::print() {
resetwage();
cout
void MarketMan::reserved() {
ofstream employf("d:\\markermanbf.txt"); employf
int MarketMan::resetwage() {
wage=5000+int(salesvolume*0.005); return wage; }
6.3 销售员类成员函数
void Salesman::set()//销售员类成员函数
{
cout>num; cout>name;
cout>sex; cout>age; cout>salesvolume;
cout>snum;
wage=int(salesvolume*0.04); }
void Salesman::printinfor() {
cout
void Salesman::print() {
cout
cout
void Salesman::reserved()
{
ofstream employf("d:\\salesmanbf.txt");
employf
}
6.4 技术员类成员函数
void Technician::set()//技术员类成员函数
{
cout
cin>>num;
cout
cin>>name;
cout
cin>>sex;
cout
cin>>age;
cout
cin>>worktime;
wage=worktime*100;
}
void Technician::print()
{
cout
cout
}
void Technician::reserved()
{
ofstream employf("d:\\technicianbf.txt");
employf
6.5 主函数
int t,m,s,mm;
Technician*pt;
Manager*pm;
Salesman*ps;
MarketMan*pmm;
void setin();
void count();
void printdata();
void reservedall();
void single();
void main()
{
cout
cin>>t>>m>>s>>mm;
pt=new Technician[t];
pm=new Manager[m];
ps=new Salesman[s];
pmm=new MarketMan[mm];
if((!pt)||(!pm)||(!ps)||(!pmm))
{
cout
exit(1);}
single();
}
void single()
{
cout
cout
cout
cout
cout
cout
cout
cout
int choice;
cin>>choice;
switch(choice)
{
case 1:setin();
case 2:count();
case 3:printdata();
case 4:reservedall();
case 5:exit(0);
}
}
void setin()
{
Menu1:
cout
cout
cout
cout
cout
cout
cout
cout
int ch1,i;
cin>>ch1;
switch(ch1)
{
case 1:{for(i=0;i
pt[i].set();
cout
goto Menu1;}
case 2:{for(i=0;i
pm[i].set();
cout
goto Menu1;}
case 3:{for(i=0;i
ps[i].set();
cout
goto Menu1;
}
case 4:{for(i=0;i
pmm[i].set();
cout
goto Menu1;
}
case 5:single();
}}
void count()
{
Menu2:
cout
cout
cout
cout
cout
cout
int ch2,i,j;
cin>>ch2;
switch(ch2)
{
case 1:{for(i=0;i
{cout
cout
if(pmm[i].getnum()==ps[j].getsnum())
ps[j].printinfor();
cout
"
goto Menu2;
}
case 2:{cout
MarketMan pmmm;
for(i=1;i
for(j=0;j
if(pmm[j].getamount(ps,s)
{
pmmm=pmm[j];
pmm[j]=pmm[j+1];
pmm[j+1]=pmmm;
}
:
cout
for(i=0;i
pmm[i].print();
cout
goto Menu2;}
case 3:single();
}}
void printdata()
{
Menu3:
cout
cout
cout
cout
cout
cout
cout
cout
int ch3,i;
cin>>ch3;
switch(ch3)
{case 1:{
cout
cout
for(i=0;i
pt[i].print();
cout
goto Menu3;}
case 2:{ cout
cout
for(i=0;i
pm[i].print();
cout
goto Menu3;}
case 4:{cout
cout
for(i=0;i
pmm[i].print();
cout
goto Menu3;}
case 3:{cout
cout
for(i=0;i
ps[i].print();
cout
case 5:single();
}
}
void reservedall()
{Menu4:
cout
cout
cout
cout
cout
cout
cout
cout
int ch4,i;
cin>>ch4;
switch(ch4)
{
case 1:{for(i=0;i
pt[i].reserved();
goto Menu4;
}
case 2:{for(i=0;i
case 3:{for(i=0;i
case 4:{for(i=0;i
case 5:single(); } }
7 系统测试
首先进入VC++6.0,打开工程person.dsw,然后进入源程序,接着选择Build下的Execute person.exe即可,也可以不打开工程,直接双击person文件夹下的debug或release子文件夹下的person.exe文件即可运行程序。
首先进入工资管理系统:
图7.1
数据输入:
图7.2
图7.3
数据打印:
图
7.4
图7.5
数据备份:
图7.6
备份数据保存在E盘gzglxt.txt文件下:
图7.7
退出系统:
图7.8
8 结论
通过本次试验,对一个小型企业的工资管理系统的功能全部实现,虽然没有一一演练,但是其他功能也能通过代码人工实现。不过美中不足的是在编写程序过程中没有考虑输出时的格式问题,所以导致数据输出很多都没对齐,但是经过反复努力只能做到大致对齐地步。同时也通过本次课程设计让我对C++更深一步的理解,对我们的学习帮助真的很大。最后要感谢指导老师在课程开始直到结束的细心指导。
参考文献
1. 钱能编著. C++程序设计教程(第二版). 北京:清华大学出版社,2005.09 2.郑莉等 编著. C++程序设计语言(第三版). 北京:清华大学出版社,2005.06 3.陈清华 朱红主编. Visual C++课程设计案例精选与编程指导. 南京:东南大学出版社,2003.06
4.刘振安等编著. C++程序设计课程设计.机械工业出版社,2004.08,北京
《C++程序设计》 课程设计报告
设计题目: 小型企业工资管理系统
专 业 计算机科学与技术 班 级 学 生 学 号 指导教师 起止时间
目 录
1 引 言 .......................................................... 1
1.1 问题的提出 (四号黑体) ........................................... 1 1.2国内外研究的现状 (四号黑体) ...................................... 1 1.5任务与分析 (四号黑体) ............................................ 1 2 程序的主要功能 ................................................... 2
2.1输入数据 .......................................................... 2 2.2数据统计 .......................................................... 2 2.3 数据打印 .......................................................... 2 2.4数据备份 .......................................................... 2 2.5退出 .............................................................. 2 3 运行平台 ........................................................ 2 4 总体设计 ........................................................ 3 5 程序类说明 ...................................................... 4 6 模块分析 ........................................................ 6
6.1 经理类成员函数 .................................................... 6 6.2销售经理类成员函数 ................................................ 6 6.3销售员类成员函数 .................................................. 8 6.4技术员类成员函数 .................................................. 9 6.5主函数 ........................................................... 10 7 系统测试 ....................................................... 21 8 结论 ........................................................... 24
参考文献 ......................................................... 25
引 言
1.1 问题的提出
在现代化的企业管理中,工资管理系统有着十分重要的作用,然而,用大型软件系统来于小型的企事业单位,不啻于“杀鸡用牛刀”,因此小型的的软件对于这种单位自然有十分重要作用。某小型企业出与这种目的制作了这个工资管理系统。
1.2国内外研究的现状
在现今国内外大中小型企业蓬勃发展,对企业的管理显得越发重要,其中对工资进行管理更是公司发展的命脉。
1.5任务与分析
1、 公司主要有4类人员:经理、技术员、销售员、销售经理。要求存储这些人的职工号、姓名、月工资、岗位、年龄、性别等信息。 2、 工资的计算办法: 经理:固定月薪为8000;
技术员:工作时间×小时工资(100元每小时); 销售员:销售额×4%提成;
销售经理:底薪(5000)+所辖部门销售额总额×0.5%; 3、 类的层次结构大体如图1所示:
4、 输入数据要求每类人员不能少于4人,并按以下格式同时输出到文件和屏幕: 职工号 姓名 性别 年龄 岗位 工资 排名
5、 总体设计,要有一个菜单,用于选择各项功能,其中 1) 数据录入:输入各种数据;
2) 数据统计:各类人员的工资计算及最终按工资进行的冒泡排序; 3) 数据打印:打印上述表格; 4) 数据备份:把相关数据写入文件; 5) 退出:退出本系统;
注:各项菜单都调用一个函数来实现。
6、输入并存放某销售经理所辖部门各销售员的业绩及自己的工资表: (选作)
2 程序的主要功能
2.1输入数据
输入各种数据
2.2数据统计
各类人员的工资计算及最终按工资进行的冒泡排序;
2.3 数据打印
打印表格
2.4数据备份
把相关数据写入文件
2.5退出
退出本系统
3 程序运行平台
VC++6.0。
具体操作如下:新建„„工程,添加相应的源文件„„,再编译,链接,执行等,此部分可参照实验指导书前面的内容写。
4 总体设计
图4.1 系统总体框架图
图4.2系统总流程图
程序类的说明
Employ类的声明
class Employ//雇员类
{
protected:
int num; char name[10]; char sex; int age; int wage; public:
virtual void set()=0; virtual void print()=0; virtual void reserved()=0; }; Manager类的声明
class Manager:public Employ//经理类
{ public: void set(); void print(); void reserved(); };
Salesman类声明 class Salesman:public Employ//销售员类{
protected: int salesvolume; int snum; public:
void set(); void print(); void reserved(); void printinfor();
5
int getsales() {return salesvolume;} int getsnum() {return snum;} };
MarketMan类声明
class MarketMan:public Manager//销售经理类 {
protected: int salesvolume; public: void set(); void print(); void reserved(); int resetwage(); int getnum() {return num;} char*getname() {return name;}
int getamount(Salesman s[],int n) {
salesvolume=0; for(int i=0;i
6 模块分析//此部分应详细介绍设计思想、流程及关键代码等,下面没详细介绍
6.1 经理类成员函数
void Manager::print()//经理类成员函数 {
cout
void Manager::reserved() {
ofstream employf("d:\\managerbf.txt"); employf
void MarketMan::set()//销售经理类成员函数 {
wage=resetwage(); cout>num; cout>name;
cout>sex;
cout>age; }
void MarketMan::print() {
resetwage();
cout
void MarketMan::reserved() {
ofstream employf("d:\\markermanbf.txt"); employf
int MarketMan::resetwage() {
wage=5000+int(salesvolume*0.005); return wage; }
6.3 销售员类成员函数
void Salesman::set()//销售员类成员函数
{
cout>num; cout>name;
cout>sex; cout>age; cout>salesvolume;
cout>snum;
wage=int(salesvolume*0.04); }
void Salesman::printinfor() {
cout
void Salesman::print() {
cout
cout
void Salesman::reserved()
{
ofstream employf("d:\\salesmanbf.txt");
employf
}
6.4 技术员类成员函数
void Technician::set()//技术员类成员函数
{
cout
cin>>num;
cout
cin>>name;
cout
cin>>sex;
cout
cin>>age;
cout
cin>>worktime;
wage=worktime*100;
}
void Technician::print()
{
cout
cout
}
void Technician::reserved()
{
ofstream employf("d:\\technicianbf.txt");
employf
6.5 主函数
int t,m,s,mm;
Technician*pt;
Manager*pm;
Salesman*ps;
MarketMan*pmm;
void setin();
void count();
void printdata();
void reservedall();
void single();
void main()
{
cout
cin>>t>>m>>s>>mm;
pt=new Technician[t];
pm=new Manager[m];
ps=new Salesman[s];
pmm=new MarketMan[mm];
if((!pt)||(!pm)||(!ps)||(!pmm))
{
cout
exit(1);}
single();
}
void single()
{
cout
cout
cout
cout
cout
cout
cout
cout
int choice;
cin>>choice;
switch(choice)
{
case 1:setin();
case 2:count();
case 3:printdata();
case 4:reservedall();
case 5:exit(0);
}
}
void setin()
{
Menu1:
cout
cout
cout
cout
cout
cout
cout
cout
int ch1,i;
cin>>ch1;
switch(ch1)
{
case 1:{for(i=0;i
pt[i].set();
cout
goto Menu1;}
case 2:{for(i=0;i
pm[i].set();
cout
goto Menu1;}
case 3:{for(i=0;i
ps[i].set();
cout
goto Menu1;
}
case 4:{for(i=0;i
pmm[i].set();
cout
goto Menu1;
}
case 5:single();
}}
void count()
{
Menu2:
cout
cout
cout
cout
cout
cout
int ch2,i,j;
cin>>ch2;
switch(ch2)
{
case 1:{for(i=0;i
{cout
cout
if(pmm[i].getnum()==ps[j].getsnum())
ps[j].printinfor();
cout
"
goto Menu2;
}
case 2:{cout
MarketMan pmmm;
for(i=1;i
for(j=0;j
if(pmm[j].getamount(ps,s)
{
pmmm=pmm[j];
pmm[j]=pmm[j+1];
pmm[j+1]=pmmm;
}
:
cout
for(i=0;i
pmm[i].print();
cout
goto Menu2;}
case 3:single();
}}
void printdata()
{
Menu3:
cout
cout
cout
cout
cout
cout
cout
cout
int ch3,i;
cin>>ch3;
switch(ch3)
{case 1:{
cout
cout
for(i=0;i
pt[i].print();
cout
goto Menu3;}
case 2:{ cout
cout
for(i=0;i
pm[i].print();
cout
goto Menu3;}
case 4:{cout
cout
for(i=0;i
pmm[i].print();
cout
goto Menu3;}
case 3:{cout
cout
for(i=0;i
ps[i].print();
cout
case 5:single();
}
}
void reservedall()
{Menu4:
cout
cout
cout
cout
cout
cout
cout
cout
int ch4,i;
cin>>ch4;
switch(ch4)
{
case 1:{for(i=0;i
pt[i].reserved();
goto Menu4;
}
case 2:{for(i=0;i
case 3:{for(i=0;i
case 4:{for(i=0;i
case 5:single(); } }
7 系统测试
首先进入VC++6.0,打开工程person.dsw,然后进入源程序,接着选择Build下的Execute person.exe即可,也可以不打开工程,直接双击person文件夹下的debug或release子文件夹下的person.exe文件即可运行程序。
首先进入工资管理系统:
图7.1
数据输入:
图7.2
图7.3
数据打印:
图
7.4
图7.5
数据备份:
图7.6
备份数据保存在E盘gzglxt.txt文件下:
图7.7
退出系统:
图7.8
8 结论
通过本次试验,对一个小型企业的工资管理系统的功能全部实现,虽然没有一一演练,但是其他功能也能通过代码人工实现。不过美中不足的是在编写程序过程中没有考虑输出时的格式问题,所以导致数据输出很多都没对齐,但是经过反复努力只能做到大致对齐地步。同时也通过本次课程设计让我对C++更深一步的理解,对我们的学习帮助真的很大。最后要感谢指导老师在课程开始直到结束的细心指导。
参考文献
1. 钱能编著. C++程序设计教程(第二版). 北京:清华大学出版社,2005.09 2.郑莉等 编著. C++程序设计语言(第三版). 北京:清华大学出版社,2005.06 3.陈清华 朱红主编. Visual C++课程设计案例精选与编程指导. 南京:东南大学出版社,2003.06
4.刘振安等编著. C++程序设计课程设计.机械工业出版社,2004.08,北京