C课程设计职工工资管理系统报告内含程序完整清单.docx

上传人:b****6 文档编号:7527505 上传时间:2023-01-24 格式:DOCX 页数:19 大小:120.05KB
下载 相关 举报
C课程设计职工工资管理系统报告内含程序完整清单.docx_第1页
第1页 / 共19页
C课程设计职工工资管理系统报告内含程序完整清单.docx_第2页
第2页 / 共19页
C课程设计职工工资管理系统报告内含程序完整清单.docx_第3页
第3页 / 共19页
C课程设计职工工资管理系统报告内含程序完整清单.docx_第4页
第4页 / 共19页
C课程设计职工工资管理系统报告内含程序完整清单.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

C课程设计职工工资管理系统报告内含程序完整清单.docx

《C课程设计职工工资管理系统报告内含程序完整清单.docx》由会员分享,可在线阅读,更多相关《C课程设计职工工资管理系统报告内含程序完整清单.docx(19页珍藏版)》请在冰豆网上搜索。

C课程设计职工工资管理系统报告内含程序完整清单.docx

C课程设计职工工资管理系统报告内含程序完整清单

 

1概述

本课程设计是《面向对象程序设计》课程的后继教学环节,学好C++语言就必须坚持用面向对象的思维方式分析问题、解决问题,最好的方法是仿照教材编写C++实际应用程序。

此次课程设计的题目及要求:

实现一个简单的工资管理系统。

1.1程序的基本功能

系统的主要功能是计算职工当月工资并存档。

公司内有5种不同类型的职工:

技术人员、销售人员、文秘、技术经理和销售经理,他们的工资计算方式各不相同。

1.2其它功能

将工资信息存入文件中,工资信息包含雇员编号、姓名、职务、月份、月收入。

文件中只存留一些信息及会员最后进入系统时输入的数据,最多含有编号、姓名、职务、月份的信息。

1.3扩展功能

采用了会员制度,并将登入信息及编号、密码存入文件中。

2课题的分析

通过对课题的深入分析,我将这个课题分为以下几个模块,深入详细得剖析它们。

2.1会员登入系统模块即systemhead静态全局函数模块

程序运行后,先进行会员选择判断。

为减少会员重新注册,通过输入两次编号及密码,增加繁琐度。

同时在一定的方面上,又方便忘记密码的会员。

通过密码匹配,雇员的工资信息这一隐私得到了很好的保障。

2.2查询功能模块即search函数模块

首先,从中提取编号,与中的编号进行匹配,匹配成功,输出工资信息,直到文件!

()==0。

.

2.3职务信息匹配及处理模块即systembody静态全局函数模块模块4

从中提取职务信息,用switch语句进行匹配,据匹配情况调用不同的函数进行输入、处理、显示并以增加方式记录到中。

2.4循环控制模块即while

(1)模块

为了更加方便使用,尽量改善系统,实现search函数及systembody函数功能,在search函数及systembody函数模块的基础上加了一些必要的语句,并增加了外层循环控制。

3详细设计

作为一个面向对象程序设计,我们不得不先从类的声明开始设计,而后是一个整体的流程图做框架。

最后在从小的模块结构着手。

3.1

类声明

3.2系统简略流程图

3.3会员登入系统模块即systemhead静态全局函数模块

3.4查询功能模块即search函数模块

3.5职务信息匹配及处理模块即systembody静态全局函数模块

3.6循环控制模块即while

(1)模块

4课程设计总结

4.1完成情况

本次面向对象课程设计的所有功能基本完成,并且扩展功能也成功的实现!

可执行文件能正常执行指令并运行!

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("d:

\\");”。

图4.2.4错误

调试分析:

错误发生在调用systembody静态全局函数前后的while循环模块中,很有可能是数据存取混乱造成的。

改正:

systemhead静态全局函数内“ofstreamoutdata("d:

\\",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""

#include"cstring"

staticvoidsystemhead();

staticvoidsystembody();

staticvoidtechnician();

staticvoidsalesman();

staticvoidsecretary();

staticvoidtechmanager();

staticvoidsalesmanager();

usingnamespacestd;

voidmain()

{

systemhead();//调用systemhead静态全局函数

cout<<"\n\n1:

查询工资";

cout<<"\n\n2:

输入工资数据";

cout<<"\n\n0:

退出系统!

\n\n";

cout<<"请选择您需要的操作!

\n";

while

(1)

{

intxuanze;

cin>>xuanze;

if(xuanze==1)

{

employeea;

cout<

();

cout<<"\n\n输入工资数据请按数字2,退出系统请按数字0!

\n\n";

}//查询工资信息

if(xuanze==2)

{

employeea;

();

();//输入处理工资数据并暂时记录

systembody();//调用systembody静态全局函数

cout<<"\n\n查询工资请按数字1,退出系统请按数字0!

\n\n";

}

if(xuanze==0)exit(0);

}

}

staticvoidsalesmanager()

{

SalesManagera5;

floatsum;

cout<<"请输入整个月的总营业额:

";

cin>>sum;

(sum);

();

();

}

staticvoidtechmanager()

{

TechManagera4;

intgra;

cout<<"请输入这个月的评级:

";//1,2,3三个等级

cin>>gra;

(gra);

();

();

}

staticvoidsecretary()

{

Secretarya3;

floatbon;

cout<<"请输入这个月的额外奖励:

";

cin>>bon;

(bon);

();

();

}

staticvoidsalesman()

{

Salesmana2;

floatsum;

cout<<"请输入整个月的营业额:

";

cin>>sum;

(sum);

();

();

}

staticvoidtechnician()

{

Techniciana1;

floathour;

cout<<"请输入整个月的工作时间:

";

cin>>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();break;

case3:

secretary();break;

case4:

techmanager();break;

case5:

salesmanager();break;

default:

cout<<"职务代号错误!

\n请重新输入!

";

}

}

staticvoidsystemhead()

{

charx,y='y';

intnum;

charsecret[6];

while(y)

{

cout<<"\n\n系统会员请输入'y',非系统会员请输入‘n’\n";

cin>>x;

if(x)

{

cout<<"请输入编号(首位为职务代号且为不超过5位数的整数):

\n";

cin>>num;

cout<<"请输入密码(6及6位字符以下):

\n";

cin>>secret;//输入编号及密码

ifstreamindata("");

if(indata==NULL)

{

cout<<"文件打开失败!

请联系管理员!

\n";exit(0);//文件没打开,退出程序

}

intnum1;charsecret1[6];

indata>>num1;

while(!

())

{

indata>>secret1;

if((num==num1)&&(strcmp(secret,secret1)==0))

{

y=0;//改变判断变量的值,停止外层循环

break;//终止内层循环

}

indata>>num1;

}

();//检验登入信息

}

else

{

cout<<"请输入编号(首位为职务代号且为不超过5位数的整数):

\n";

cin>>num;

cout<<"请输入密码(6及6位字符以下):

\n";

cin>>secret;//注册输入编号及密码

ofstreamoutdata("",ios:

:

app);

outdata<

();//将编号及密码保存到中

cout<

}

}

ofstreamoutdata("",ios:

:

trunc);

();//清空文件内容

ofstreamoutdata1("");

outdata1<

();//输入编号至

}

#include

#include

#include""

usingnamespacestd;

voidEmployee:

:

info()

{

charna[25];intsta,mon;

cout<<"请依次输入姓名、职务代号及月份(以空格符分隔):

";

cin>>na>>sta>>mon;

name=na;status=sta;month=mon;//存储姓名、职务、月份

}

voidEmployee:

:

search()

{

intnum;

ifstreamindata0("");

if(indata0==NULL)exit(0);

indata0>>num;

();//从文件中提取编号

intnum1;charna1[25];intsta1;intmon1;floatsal;

intmon0;

ifstreamindata("");

if(indata==NULL)exit(0);

while(!

())

{

indata>>num1>>na1>>sta1>>mon1>>sal;

if(num==num1)

cout<

//依次输出该雇员的工资信息

}

if())

cout<<"\n\n以上是你的工资信息!

\n\n";

();

}

voidEmployee:

:

recordinfo()

{

ofstreamoutdata("",ios:

:

app);

outdata<

();//添加姓名、职务、月份至存有编号的中

}

voidEmployee:

:

recordSalary()

{

ifstreamindata("");

indata>>number>>name>>status>>month;

();//依次输出该雇员的工资信息

intnum1;charna1[25];intsta1;intmon1;floatsal;

ifstreamindata1("");

if(indata1==NULL)exit(0);

while(!

())

{

indata1>>num1>>na1>>sta1>>mon1>>sal;

if(month!

=mon1)

cout<

else

exit(0);

//依次输出该雇员的工资信息

}

cout<

//显示工资信息

ofstreamoutdata("",ios:

:

app);

outdata<<'\n'<

();

}

voidTechnician:

:

setHour(floatx)

{

workHour=x;

}

Technician:

:

Technician(floatx)

{

hourSalary=x;

}

voidTechnician:

:

countSalary()

{

salary=workHour*hourSalary;

}

voidSalesman:

:

setsalesnum(floatx)

{

salesnum=x;

}

Salesman:

:

Salesman(floatx)

{

getRate=x;

}

voidSalesman:

:

countSalary()

{

salary=salesnum*getRate;

}

voidSecretary:

:

setbonus(floatx)

{

bonus=x;

}

Secretary:

:

Secretary(floatx)

{

fixedSalary=x;

}

voidSecretary:

:

countSalary()

{

salary=fixedSalary+bonus;

}

Manager:

:

Manager(floatx)

{

fixedSalary=x;

}

voidTechManager:

:

setgrade(intx)

{

grade=x;

}

TechManager:

:

TechManager(floatx)

{

gradeBonus=x;

}

voidTechManager:

:

countSalary()

{

salary=fixedSalary+grade*gradeBonus;

}

SalesManager:

:

SalesManager(floatx)

{

getRate=x;

}

voidSalesManager:

:

countSalary()

{

salary=fixedSalary+salesnum*getRate;

}

voidTechnician:

:

setHour(floatx)

{

workHour=x;

}

Technician:

:

Technician(floatx)

{

hourSalary=x;

}

voidTechnician:

:

countSalary()

{

salary=workHour*hourSalary;

}

voidSalesman:

:

setsalesnum(floatx)

{

salesnum=x;

}

Salesman:

:

Salesman(floatx)

{

getRate=x;

}

voidSalesman:

:

countSalary()

{

salary=salesnum*getRate;

}

voidSecretary:

:

setbonus(floatx)

{

bonus=x;

}

Secretary:

:

Secretary(floatx)

{

fixedSalary=x;

}

voidSecretary:

:

countSalary()

{

salary=fixedSalary+bonus;

}

Manager:

:

Manager(floatx)

{

fixedSalary=x;

}

voidTechManager:

:

setgrade(intx)

{

grade=x;

}

TechManager:

:

TechManager(floatx)

{

gradeBonus=x;

}

voidTechManager:

:

countSalary()

{

salary=fixedSalary+grade*gradeBonus;

}

SalesManager:

:

SalesManager(floatx)

{

getRate=x;

}

voidSalesManager:

:

countSalary()

{

salary=fixedSalary+salesnum*getRate;

}

classEmployee

{

protected:

intnumber;charname[25];intstatus;

intmonth;floatsalary;

public:

voidinfo();voidsearch();

virtualvoidcountSalary(){}

voidrecordinfo();voidrecordinfo1();

voidrecordSalary();

};

classSalesman:

publicEmployee

{protected:

floatsalesnum;

doublegetRate;

public:

Salesman(floatx=;

voidsetsalesnum(floatx);

voidcountSalary();

};

classTechnician:

publicEmployee

{

private:

floatworkHour;

floathourSalary;

public:

Technician(floatx=;voidsetHour(floatx);

voidcountSalary();

};

classSecretary:

publicEmployee

{private:

floatfixedSalary;

floatbonus;

public:

Secretary(floatx=4000);

voidsetbonus(floatx);

voidcountSalary();

};

classManager{

protected:

floatfixedSalary;

public:

Manager(floatx=6000);

voidcountSalary();

};

classSalesManager:

publicSalesman,publicManager

{

public:

SalesManager(floatx=;

voidcountSalary();

};

classTechManager:

publicTechnician,publicManager

{

private:

floatgradeBonus;

intgrade;

public:

TechManager(floatx=1000);

voidsetgrade(intx);

voidcountSalary();

};

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

当前位置:首页 > 求职职场 > 简历

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

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