VC++课程设计报告Word文档格式.docx
《VC++课程设计报告Word文档格式.docx》由会员分享,可在线阅读,更多相关《VC++课程设计报告Word文档格式.docx(21页珍藏版)》请在冰豆网上搜索。
2.由销售员类Salesman,经理类Manager公有派生出销售经理类Salesmanager。
通过基类去写的派生类就可以调基类的公有成员。
3.利用for循环把经理数据,技术员数据,销售员数据,销售经理数据输入。
4.利用冒泡排序法,建立一个“擂台”,用“擂台”上的数的前一个数与之比较,小的那个数放到最后,把各销售经理的工资按升序排列。
5.利用switch进行选择系统进行的工作。
在主菜单中进行调用各函数,从而实现系统各功能的运行。
三、程序框图或流程图,程序清单与调用关系
四、全部源程序清单
//main.cpp
#include<
iostream>
string>
fstream>
//存放数据的头文件
iomanip>
//调整距离
#include"
Employee.h"
Manager.h"
Salesman.h"
Salesmanager.h"
Technician.h"
usingnamespacestd;
voidMIF()
{
cout<
<
"
输入:
1 "
endl;
技术人员输入4个,经理4个,销售人员8个,销售经理4个"
统计:
2 "
打印:
3 "
备份:
4 "
退出:
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();
i++)//4个经理
m[i].display2();
8;
i++)//8个销售人员
s[i].display3();
i++)//4个销售经理,平均每人管理2个销售人员
sm[i].display4();
MIF();
//输入完毕回到界面管理
cin>
//重新操作
}
doublemo[4],mone[4];
//mo为销售人员薪酬,mone为销售经理薪酬
intx;
break;
case2:
{
i++)//重复显示4个销售经理及其下销售人员
{
cout<
职工号为"
sm[i].n()<
销售经理"
sm[i].na()<
下属销售员的业绩:
职工号姓名销售额"
doublemoney=0;
for(x=0;
x<
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<
"
setw(10)<
s[x].n()<
s[x].na()<
s[x].sa()<
//ID,姓名,销售额,sewt调整距离
}
}
销售额总计"
setw(22)<
money<
}
cout<
销售经理按工资排序为"
doublemon;
3;
i++)//冒泡
3-i;
x++)//4个,递减排序
if(mo[x]<
mo[x+1])//若后一个>
前一个
mon=mo[x];
mo[x]=mo[x+1];
mo[x+1]=mon;
}//利用中间变量,交换变量,改变2个变量间的大小排序
cout<
职工号姓名性别年龄工资"
for(intk=0;
k<
k++)
for(inty=0;
y<
y++)
if(mone[y]==mo[k])
{
cout<
sm[y].n()<
sm[y].na()<
sm[y].s()<
setw(8)<
sm[y].a()<
mone[y]<
}//ID,姓名,性别,年龄,薪酬
MIF();
cin>
case3:
职工基本情况一览表如下"
技术员"
职工号 姓名 性别 年龄 工资 "
for(x=0;
x++)//把4个技术员输出
{
t[x].n()<
t[x].na()<
t[x].s()<
t[x].a()<
t[x].w()<
经理"
//4个经理
x++)
m[x].n()<
m[x].na()<
m[x].s()<
m[x].a()<
m[x].w()<
//4个销售经理
sm[x].n()<
sm[x].na()<
sm[x].s()<
sm[x].a()<
mone[x]<
销售员"
//8个销售员
s[x].s()<
s[x].a()<
s[x].w()<
MIF();
cin>
case4:
ofstreamoutfile("
beifen.txt"
ios:
:
out);
//创建文件
if(!
outfile)//不成功显示error提示
cerr<
openerror!
exit
(1);
outfile<
职工基本情况一览表如下:
//文件这输入此行语句
技术员的资料统计"
//同上
i++)//t——>
Technician
outfile<
职工号:
t[i].n()<
姓名:
t[i].na()<
性别:
t[i].s()<
年龄:
t[i].a()<
工作时间:
t[i].ti()<
工资:
t[i].w()<
}
经理的资料统计"
i++)//m——>
Manager
m[i].n()<
m[i].na()<
m[i].s()<
m[i].a()<
m[i].w()<
销售员的资料统计"
i++)//s——Salesman
s[i].n()<
s[i].na()<
s[i].s()<
s[i].a()<
销售额:
s[i].sa()<
s[i].w()<
所属销售经理编号:
s[i].numb()<
销售经理的资料统计"
i++)//sm——>
Salesmanager
sm[i].s()<
sm[i].a()<
mone[i]<
outfile.close();
//输入完毕,关闭文件
//回到界面
case5:
是否确定退出系统:
是1;
否0:
intz;
z;
if(z==1)
exit(0);
if(z==0)
MIF();
cin>
default:
cout<
输入有误,请重新输入:
MIF();
cin>
return0;
//Employee.h
classEmployee
public:
Employee();
virtual~Employee();
protected:
intnum,age;
doublewages;
charsex;
stringname;
intn();
//ID
stringna();
//姓名
chars();
//性别
inta();
//年龄
};
//Employee.cpp
Employee:
Employee()
{}
~Employee()
intEmployee:
n()
{returnnum;
stringEmployee:
na()
{returnname;
charEmployee:
s()
{returnsex;
a()
{returnage;
//Manager.h
classManager:
publicEmployee
Manager();
virtual~Manager();
voiddisplay2()
{
cout<
经理的编号:
;
num;
其姓名:
name;
性别(m/w):
sex;
年龄:
age;
}
doublew()
wages=8000;
//固定工资8000
returnwages;
//Manager.cpp
Manager:
Manager()
~Manager()
//Salesman.h
classSalesman:
Salesman();
virtual~Salesman();
intnumber;
doublesales_volume;
voiddisplay3()
销售员的编号:
销售额:
sales_volume;
所属销售经理的编号:
number;
intnumb()
{returnnumber;
doublesa()
{returnsales_volume;
{returnsales_volume*0.04;
//Salesman.cpp
Salesman:
Salesman()
~Salesman()
//Salesmanager.h
classSalesmanager:
publicManager
Salesmanager();
virtual~Salesmanager();
voiddisplay4()
销售经理的编号:
//Salesmanager.cpp
Salesmanager:
Salesmanager()
~Salesmanager()
//Technician.h
classTechnician:
publicEmployee
Technician();
virtual~Technician();
inthour;
voiddisplay1()
技术员的编号:
工作时间:
hour;
doublew();
intti();
//Technician.cpp
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年月日
制定人:
审定人: