VC++课程设计报告.docx

上传人:b****7 文档编号:9084240 上传时间:2023-02-03 格式:DOCX 页数:21 大小:265.86KB
下载 相关 举报
VC++课程设计报告.docx_第1页
第1页 / 共21页
VC++课程设计报告.docx_第2页
第2页 / 共21页
VC++课程设计报告.docx_第3页
第3页 / 共21页
VC++课程设计报告.docx_第4页
第4页 / 共21页
VC++课程设计报告.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

VC++课程设计报告.docx

《VC++课程设计报告.docx》由会员分享,可在线阅读,更多相关《VC++课程设计报告.docx(21页珍藏版)》请在冰豆网上搜索。

VC++课程设计报告.docx

VC++课程设计报告

课程设计报告

学院、系:

专业名称:

计算机科学与技术

课程设计科目

VC++程序课程设计

学生姓名:

指导教师:

完成时间:

2013年12月

题目小型公司工资管理系统

一、设计任务与目标

1.完成对于冒泡排序的程序掌握,C++基本输入输出流和其他基本语句、函数等完全掌握;

2.C++的数据读写入文本当中的函数应用;

3.类的继承要熟练掌握。

4.小型公司工资管理系统题目要求:

(1)公司主要有4类人员:

经理、技术员、销售员、销售经理。

要求存储这些人的职工号、姓名、月工资、岗位、年龄、性别等信息。

(2)工资的计算方法:

A.经理:

固定月薪为8000;

B.技术员:

工作时间*小时工资(100元每小时);

C.销售员:

销售额*4%提成;

D.销售经理:

底薪(5000)+所辖部门销售额总额*0.5%;

(3)输入数据要求每类人员不能少于4人,并按以下格式输出:

职工号姓名性别年龄岗位工资排名

(4)菜单要求:

要有一个菜单,用于选择各项功能,其中

1)数据录入:

输入各种数据;

2)数据统计:

各销售经理的工资计算及最终按工资进行的冒泡排序;

3)数据打印:

打印上述表格;

4)数据备份:

把相关数据写入文件;

5)退出:

退出本系统;

二、方案设计与论证

1.先定义了一个雇员类Employee,由雇员类公有派生出技术员类Technician,销售员类Salesman,经理类Manager。

2.由销售员类Salesman,经理类Manager公有派生出销售经理类Salesmanager。

通过基类去写的派生类就可以调基类的公有成员。

3.利用for循环把经理数据,技术员数据,销售员数据,销售经理数据输入。

4.利用冒泡排序法,建立一个“擂台”,用“擂台”上的数的前一个数与之比较,小的那个数放到最后,把各销售经理的工资按升序排列。

5.利用switch进行选择系统进行的工作。

在主菜单中进行调用各函数,从而实现系统各功能的运行。

三、程序框图或流程图,程序清单与调用关系

四、全部源程序清单

//main.cpp

#include

#include

#include//存放数据的头文件

#include//调整距离

#include"Employee.h"

#include"Manager.h"

#include"Salesman.h"

#include"Salesmanager.h"

#include"Technician.h"

usingnamespacestd;

voidMIF()

{

cout<<" 输入:

1 "<

cout<<"技术人员输入4个,经理4个,销售人员8个,销售经理4个"<

cout<<" 统计:

2 "<

cout<<" 打印:

3 "<

cout<<" 备份:

4 "<

cout<<" 退出:

5 "<

}

intmain()

{

inti,j;

MIF();

Techniciant[4];

Managerm[4];

Salesmans[8];

Salesmanagersm[4];

cin>>j;

while(j==1||j==2||j==3||j==4||j==5)//选择步骤1或2或3或4或5

{

switch(j)

{

case1:

{

for(i=0;i<4;i++)//重复输入4个技术人员

t[i].display1();

for(i=0;i<4;i++)//4个经理

m[i].display2();

for(i=0;i<8;i++)//8个销售人员

s[i].display3();

for(i=0;i<4;i++)//4个销售经理,平均每人管理2个销售人员

sm[i].display4();

MIF();//输入完毕回到界面管理

cin>>j;//重新操作

}

doublemo[4],mone[4];//mo为销售人员薪酬,mone为销售经理薪酬

intx;break;

case2:

{

for(i=0;i<4;i++)//重复显示4个销售经理及其下销售人员

{

cout<<"职工号为"<

"<

cout<<"职工号姓名销售额"<

doublemoney=0;

for(x=0;x<8;x++)//8个销售人员

{

if(s[x].numb()==sm[i].n())//1号销售人员属于201号销售经理

{

money=money+s[x].sa();//销售额+销售业绩

mone[i]=money*0.005+5000;//销售经理薪酬

mo[i]=money*0.005+5000;//销售人员薪酬

cout<<""<

}

}

cout<<"销售额总计"<

}

cout<<"销售经理按工资排序为"<

doublemon;//销售经理薪酬

for(i=0;i<3;i++)//冒泡

for(x=0;x<3-i;x++)//4个,递减排序

if(mo[x]前一个

{

mon=mo[x];mo[x]=mo[x+1];mo[x+1]=mon;

}//利用中间变量,交换变量,改变2个变量间的大小排序

cout<<"职工号姓名性别年龄工资"<

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

for(inty=0;y<4;y++)

if(mone[y]==mo[k])

{

cout<<""<

}//ID,姓名,性别,年龄,薪酬

MIF();

cin>>j;break;

}

case3:

{

cout<<"职工基本情况一览表如下"<

cout<<"技术员"<

cout<<" 职工号 姓名  性别  年龄  工资 "<

for(x=0;x<4;x++)//把4个技术员输出

{

cout<<""<

}

cout<<"经理"<

cout<<" 职工号 姓名  性别  年龄  工资 "<

for(x=0;x<4;x++)

{

cout<<""<

}

cout<<"销售经理"<

cout<<" 职工号 姓名  性别  年龄  工资 "<

for(x=0;x<4;x++)

{

cout<<""<

}

cout<<"销售员"<

cout<<" 职工号 姓名  性别  年龄  工资 "<

for(x=0;x<8;x++)

{

cout<<""<

}

}

MIF();

cin>>j;break;

case4:

{

ofstreamoutfile("beifen.txt",ios:

:

out);//创建文件

if(!

outfile)//不成功显示error提示

{

cerr<<"openerror!

"<

exit

(1);

}

outfile<<"职工基本情况一览表如下:

"<

outfile<<"技术员的资料统计"<

for(i=0;i<4;i++)//t——>Technician

{

outfile<<"职工号:

"<

"<

"<

"<

"<

"<

}

outfile<<"经理的资料统计"<

for(i=0;i<4;i++)//m——>Manager

{

outfile<<"职工号:

"<

"<

"<

"<

"<

}

outfile<<"销售员的资料统计"<

for(i=0;i<8;i++)//s——Salesman

{

outfile<<"职工号:

"<

"<

"<

"<

"<

"<

"<

}

outfile<<"销售经理的资料统计"<

for(i=0;i<4;i++)//sm——>Salesmanager

{

outfile<<"职工号:

"<

"<

"<

"<

"<

}

outfile.close();//输入完毕,关闭文件

cout<

MIF();//回到界面

cin>>j;break;//重新操作

}

case5:

{

cout<<"是否确定退出系统:

是1;否0:

"<

intz;

cin>>z;

if(z==1)

exit(0);

if(z==0)

{

MIF();

cin>>j;

}

}

default:

cout<<"输入有误,请重新输入:

"<>j;break;

}

}

return0;

}

//Employee.h

#include

#include

#include

#include

usingnamespacestd;

classEmployee

{

public:

Employee();

virtual~Employee();

protected:

intnum,age;

doublewages;

charsex;

stringname;

public:

intn();//ID

stringna();//姓名

chars();//性别

inta();//年龄

};

//Employee.cpp

#include

#include

#include

#include

usingnamespacestd;

Employee:

:

Employee()

{}

Employee:

:

~Employee()

{}

intEmployee:

:

n()

{returnnum;}

stringEmployee:

:

na()

{returnname;}

charEmployee:

:

s()

{returnsex;}

intEmployee:

:

a()

{returnage;}

//Manager.h

#include

#include

#include

#include

#include"Employee.h"

usingnamespacestd;

classManager:

publicEmployee

{

public:

Manager();

virtual~Manager();

public:

voiddisplay2()

{

cout<<"经理的编号:

";cin>>num;

cout<<"其姓名:

";cin>>name;

cout<<"性别(m/w):

";cin>>sex;

cout<<"年龄:

";cin>>age;

}

doublew()

{

wages=8000;//固定工资8000

returnwages;

}

};

//Manager.cpp

Manager:

:

Manager()

{}

Manager:

:

~Manager()

{}

//Salesman.h

#include"Employee.h"

#include

#include

#include

#include

usingnamespacestd;

classSalesman:

publicEmployee

{

public:

Salesman();

virtual~Salesman();

protected:

intnumber;

doublesales_volume;

public:

voiddisplay3()

{

cout<<"销售员的编号:

";cin>>num;

cout<<"其姓名:

";cin>>name;

cout<<"性别(m/w):

";cin>>sex;

cout<<"年龄:

";cin>>age;

cout<<"销售额:

";cin>>sales_volume;

cout<<"所属销售经理的编号:

";cin>>number;

}

intnumb()

{returnnumber;}

doublesa()

{returnsales_volume;}

doublew()

{returnsales_volume*0.04;}

};

//Salesman.cpp

Salesman:

:

Salesman()

{}

Salesman:

:

~Salesman()

{}

//Salesmanager.h

#include"Manager.h"

#include

#include

#include

#include

usingnamespacestd;

classSalesmanager:

publicManager

{

public:

Salesmanager();

virtual~Salesmanager();

voiddisplay4()

{

cout<<"销售经理的编号:

";cin>>num;

cout<<"其姓名:

";cin>>name;

cout<<"性别(m/w):

";cin>>sex;

cout<<"年龄:

";cin>>age;

}

};

//Salesmanager.cpp

Salesmanager:

:

Salesmanager()

{}

Salesmanager:

:

~Salesmanager()

{}

//Technician.h

#include

#include

#include

#include

#include"Employee.h"

usingnamespacestd;

classTechnician:

publicEmployee

{

public:

Technician();

virtual~Technician();

protected:

inthour;

public:

voiddisplay1()

{

cout<<"技术员的编号:

";cin>>num;

cout<<"其姓名:

";cin>>name;

cout<<"性别(m/w):

";cin>>sex;

cout<<"年龄:

";cin>>age;

cout<<"工作时间:

";cin>>hour;

}

doublew();

intti();

};

//Technician.cpp

#include

#include

#include

#include

usingnamespacestd;

Technician:

:

Technician()

{}

Technician:

:

~Technician()

{}

doubleTechnician:

:

w()

{

doublewa;

wa=100*hour;

returnwa;

}

intTechnician:

:

ti()

{returnhour;}

五、程序运行的测试与分析

六、结论与心得

1.对于问题,一开始分析问题的时候并没有十分认真审题,直接把录入、统计、备份功能作为类分析,但实际上题目要求的是将员工职业用类区别;

2.C++中关于冒泡排序中并不一定需要程序员本身去编码,C++中本身有一个自带的快速排序的函数qsort(),其原理利用了折半查找的原理,但在尝试使用该函数时,总会出错,期望今后能够掌握该函数的应用;

3.关于数据写入文件,做的时候习惯了C语言的文本读写应用,后查询,C++文本读写有所不同,并且更为方便快捷;

4.程序中并没有能实现在录入一个数据后能自动返回到操作界面,只能把所有数据一次过录入完毕后,才能自动返回操作界面,而且录入时候,程序容错性不大好,容易出现bug,期望今后能更加改进。

七、参考资料

1.《面向对象程序设计VisualC++》刘斌王忠编著,清华大学出版社;

2.《c++语言程序设计教程(本科)》吕凤翥 编著,人民邮电出版社;

3.《算法与数据结构C语言版第二版》陈守孔孟佳娜武秀川等编著,机械工业出版社;

八、致谢

感谢刘斌、王忠、吕凤翥、陈守孔等作者及其编著书籍,以及XX;

 

课程设计成绩评定表

对课程设计工作过程的简短介绍和自我评价

经过努力查询和编码,最终完成了程序的基本功能实现。

其中不断有大量问题伴随着工作而产生,巨量的问题让我从中体会到自己对于C++语言的不熟练和学习到的东西并没有掌握,通过互联网和图书馆中的资料反复查找,以及同学间的学习交流得到自己所要的知识后,重复练习使用,在程序中能简单应用。

自身在工作过程中作用最大,感觉已尽力完成任务要求。

学生签名:

2013年12月26日

(以下由评定小组教师填写)

质量评价指标(在相应栏目打√)

评价项目

评价质量

优秀

良好

一般

及格

不及格

工作量和态度

实验、计算可靠性

文字和图表质量

总体评价

评定成绩(百分制)

 

评定小组成员签名

2013年月日

制定人:

审定人:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 文学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1