C课程设计职工工资管理系统报告内含程序完整清单Word格式.docx
- 文档编号:20639242
- 上传时间:2023-01-24
- 格式:DOCX
- 页数:19
- 大小:120.05KB
C课程设计职工工资管理系统报告内含程序完整清单Word格式.docx
《C课程设计职工工资管理系统报告内含程序完整清单Word格式.docx》由会员分享,可在线阅读,更多相关《C课程设计职工工资管理系统报告内含程序完整清单Word格式.docx(19页珍藏版)》请在冰豆网上搜索。
本次面向对象课程设计的所有功能基本完成,并且扩展功能也成功的实现!
可执行文件能正常执行指令并运行!
4.2遇到的问题及解决
图4.2.1错误
[Error]C:
\Users\权\Desktop\(.data$_vt$8Employee+0xc):
:
undefinedreferenceto`Employee:
countSalary(void)'
错误:
没有定义Employee类中的countSalary函数!
改正:
将原先的“virtualvoidcountSalary();
”改为”virtualvoidcountSalary(){}”
图4.2.2错误
错误分析:
(会员板块中)提示:
“数字1表示是!
其他键表示否!
”,但定义的选择变量为整型。
加上我当时输入字符p。
“其他键表示否!
”改为”数字0表示否”。
输入时按提示进行输入即可!
图4.2.3错误
调试分析:
错误发生在systemhead静态全局函数内的文件输入循环模块中!
将以nocreate方式即”ifstreamindata("
d:
\\"
,ios:
nocreate);
“该为默认打开方式即“ifstreamindata("
);
”。
图4.2.4错误
错误发生在调用systembody静态全局函数前后的while循环模块中,很有可能是数据存取混乱造成的。
systemhead静态全局函数内“ofstreamoutdata("
ios:
trunc);
”改为先清
后在以默认方式输入!
且将存取整型编号的变量类型从字符型改为整型。
图4.2.5错误
后面莫名其妙的跟着一个提示语句指令。
分析调试:
当语句指令是基类info函数内的语句,很有可能是循环控制出现了一些问题。
见程序源代码!
参考文献
[1]下面给出几个参考文献的格式参考
[2]匿名,不知道,非常多.计算机实用教程.北京:
XX大学出版社,2004,123~234
[3][美]DonisSomething.VisualX#2008技术内幕.北京:
YYY大学出版社,2007,56~78
[4]JohnsSmith,++nothing/
[5]
[6]《面向对象程序设计》,郑莉,清华大学出版社,
[7]《面向对象程序设计C++语言》,朱战立等编西安电子科技大学出版社
[8]《面向对象程序设计----VisualC++》,刘斌等编,清华大学出版社
[9]《面向对象程序设计----C++语言描述》,RichardJohnsonbaugh(美)等着,蔡宇辉等译,机械工业出版社,2003
附录
本系统有三个源程序文件构成,分别为,及。
同时含有三个系统文件,分别为,及,且全部存放在D盘根目录下,请勿随意移动或修改系统文件。
当会员正式进入系统,是先清空后用来存储会员输入的信息,最多含有编号、姓名、职务及月份。
当仅会员注册时,会将编码及密码存储到中。
当仅会员登入的编号及密码进行匹配时,会打开输入文件,提取编号及密码,进行匹配。
当仅当输入工资数据时,会将工资、编号、姓名、职务、月份存储到中。
当仅当查询工资信息时,会打开,提取编号、姓名、职务、月份及工资。
该系统是一个只适合5种及5种职务的工资管理系统。
并将职务分为技术人员、销售人员、文秘、技术经理和销售经理,其代号分别为1,2,3,4,5。
雇员编号以整型变量存储,编号所取范围在-65536至65535之内(包括边界值),首位数字表示相应的职务代码。
该系统能力有限,请根据指示严格输入相应字符!
程序清单
Main函数
#include"
"
cstring"
staticvoidsystemhead();
staticvoidsystembody();
staticvoidtechnician();
staticvoidsalesman();
staticvoidsecretary();
staticvoidtechmanager();
staticvoidsalesmanager();
usingnamespacestd;
voidmain()
{
systemhead();
//调用systemhead静态全局函数
cout<
<
\n\n1:
查询工资"
;
\n\n2:
输入工资数据"
\n\n0:
退出系统!
\n\n"
请选择您需要的操作!
!
\n"
while
(1)
{
intxuanze;
cin>
>
xuanze;
if(xuanze==1)
employeea;
endl<
endl;
();
\n\n输入工资数据请按数字2,退出系统请按数字0!
}//查询工资信息
if(xuanze==2)
employeea;
();
//输入处理工资数据并暂时记录
systembody();
//调用systembody静态全局函数
cout<
\n\n查询工资请按数字1,退出系统请按数字0!
}
if(xuanze==0)exit(0);
}
staticvoidsalesmanager()
SalesManagera5;
floatsum;
请输入整个月的总营业额:
sum;
(sum);
staticvoidtechmanager()
TechManagera4;
intgra;
请输入这个月的评级:
//1,2,3三个等级
gra;
(gra);
staticvoidsecretary()
Secretarya3;
floatbon;
请输入这个月的额外奖励:
bon;
(bon);
staticvoidsalesman()
Salesmana2;
请输入整个月的营业额:
staticvoidtechnician()
Techniciana1;
floathour;
请输入整个月的工作时间:
hour;
(hour);
staticvoidsystembody()
ifstreamindata("
if(indata==NULL)exit(0);
intnum;
charna[25];
intsta;
indata>
num>
na>
sta;
//职务代号分别为1,2,3,4,5
switch(sta)
case1:
technician();
break;
case2:
salesman();
case3:
secretary();
case4:
techmanager();
case5:
salesmanager();
default:
cout<
职务代号错误!
\n请重新输入!
staticvoidsystemhead()
charx,y='
y'
charsecret[6];
while(y)
\n\n系统会员请输入'
非系统会员请输入‘n’\n"
x;
if(x)
请输入编号(首位为职务代号且为不超过5位数的整数):
num;
请输入密码(6及6位字符以下):
secret;
//输入编号及密码
ifstreamindata("
if(indata==NULL)
{
cout<
文件打开失败!
请联系管理员!
exit(0);
//文件没打开,退出程序
}
intnum1;
charsecret1[6];
indata>
num1;
while(!
())
indata>
secret1;
if((num==num1)&
&
(strcmp(secret,secret1)==0))
{
y=0;
//改变判断变量的值,停止外层循环
break;
//终止内层循环
}
//检验登入信息
else
请输入编号(首位为职务代号且为不超过5位数的整数):
//注册输入编号及密码
ofstreamoutdata("
app);
outdata<
num<
'
\t'
secret<
//将编号及密码保存到中
ofstreamoutdata("
();
//清空文件内容
ofstreamoutdata1("
outdata1<
//输入编号至
#include<
iostream>
fstream>
voidEmployee:
info()
intsta,mon;
请依次输入姓名、职务代号及月份(以空格符分隔):
sta>
mon;
name=na;
status=sta;
month=mon;
//存储姓名、职务、月份
search()
ifstreamindata0("
if(indata0==NULL)exit(0);
indata0>
//从文件中提取编号
intnum1;
charna1[25];
intsta1;
intmon1;
floatsal;
intmon0;
while(!
num1>
na1>
sta1>
mon1>
sal;
if(num==num1)
num1<
na1<
sta1<
mon1<
sal<
\n'
//依次输出该雇员的工资信息
if())
\n\n以上是你的工资信息!
recordinfo()
ofstreamoutdata("
outdata<
name<
status<
month;
//添加姓名、职务、月份至存有编号的中
recordSalary()
number>
name>
status>
//依次输出该雇员的工资信息
ifstreamindata1("
if(indata1==NULL)exit(0);
indata1>
if(month!
=mon1)
else
exit(0);
number<
month<
salary;
//显示工资信息
voidTechnician:
setHour(floatx)
workHour=x;
Technician:
Technician(floatx)
hourSalary=x;
countSalary()
salary=workHour*hourSalary;
voidSalesman:
setsalesnum(floatx)
salesnum=x;
Salesman:
Salesman(floatx)
getRate=x;
salary=salesnum*getRate;
voidSecretary:
setbonus(floatx)
bonus=x;
Secretary:
Secretary(floatx)
fixedSalary=x;
salary=fixedSalary+bonus;
Manager:
Manager(floatx)
voidTechManager:
setgrade(intx)
grade=x;
TechManager:
TechManager(floatx)
gradeBonus=x;
salary=fixedSalary+grade*gradeBonus;
SalesManager:
SalesManager(floatx)
voidSalesManager:
salary=fixedSalary+salesnum*getRate;
classEmployee
protected:
intnumber;
charname[25];
intstatus;
intmonth;
floatsalary;
public:
voidinfo();
voidsearch();
virtualvoidcountSalary(){}
voidrecordinfo();
voidrecordinfo1();
voidrecordSalary();
};
classSalesman:
publicEmployee
{protected:
floatsalesnum;
doublegetRate;
Salesman(floatx=;
voidsetsalesnum(floatx);
voidcountSalary();
classTechnician:
private:
floatworkHour;
floathourSalary;
Technician(floatx=;
voidsetHour(floatx);
classSecretary:
{private:
floatfixedSalary;
floatbonus;
Secretary(floatx=4000);
voidsetbonus(floatx);
classManager{
Manager(floatx=6000);
classSalesManager:
publicSalesman,publicManager
SalesManager(floatx=;
classTechManager:
publicTechnician,publicManager
floatgradeBonus;
intgrade;
TechManager(floatx=1000);
voidsetgrade(intx);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课程设计 职工工资 管理 系统 报告 内含 程序 完整 清单