C++课程设计公司工资管理系统说明书
更新时间:2023-05-29 15:13:01 阅读量: 实用文档 文档下载
- 施工组织与管理课程设计推荐度:
- 相关推荐
g
2 程序的主要功能
2.1添加功能
添加一个职员的基本信息,包括职工类型,姓名等等,
2.2删除功能
能够对一个职员的信息进行删除按员工号进行删除。
2.3显示功能
显示所有职员的主要信息包括员工类型,姓名,工资。
2.4数据设置功能
设置不同员工类型的工资要求。
2.5修改功能
对职员的信息进行修改。
3 程序运行平台
VC++6.0。
4 总体设计
图4.1 系统总体框架图
g
图4.2类的层次结构图
5 程序类的说明
总职工类的声明 class Person //员工类 {
protected:
int No; //编号 char Name[20]; //姓名 int Duty; //岗位 double Earning; //收入 Person *next;
public:
Person(char ID,char *Name,int Duty) {
this->Duty=Duty;
strcpy(this->Name,Name); this->No=ID; }
virtual void CalcSalary()=0; virtual void Output()=0; friend class Company;
}; 技术员类的声明
class technician:virtual public Employee { public:
g
technician() {}
virtual void shanchu() {*name=*sex=0;number=age=hour=0;pay1=0;} void wage() { pay1=100*hour;} virtual void print() { }
void input() { } protected: int hour,pay1; };
经理类的声明
class Manager:public Person //经理类 { public:
Manager(char ID,char *Name,int Duty):Person(ID,Name,Duty){} void CalcSalary(){Earning=ManagerSalary;} void Output() {
CalcSalary();
cout<<No<<"\t"<<Name<<"\t经理\t"<<Earning<<endl; }
};
wage();
cout<<"技术员员工号:"<<number<<" "
<<"姓名:"<<name<<" " <<"性别:"<<sex<<" " <<"年龄:"<<age<<" " <<"工资:"<<pay1<<endl;
Employee::input();
cout<<"工作时间(以小时计算)"<<endl; cin>>hour;
g
销售员类的声明
class Sales:public Person //销售员类 { private: double Amount; public:
Sales(char ID,char *Name,int Duty,double Amount):Person(ID,Name,Duty) {
this->Amount=Amount; }
double GetAmount() {
return Amount; }
void SetAmount(double Amount) {
this->Amount=Amount; }
void CalcSalary() {
Earning=SalesPercent/100*Amount; }
void Output() {
CalcSalary();
cout<<No<<"\t"<<Name<<"\t销售员\t"<<Amount<<"\t"<<Earning<<endl; } };
销售经理类的声明
class SalesManager:public Person //销售经理类 { private: double Amount;
g
public:
SalesManager(char ID,char *Name,int Duty):Person(ID,Name,Duty){} void SetAmount(double s) {
Amount=s; }
void CalcSalary() {
Earning=SalesManagerSalary+Amount*SalesManagerPercent/100; }
void Output() {
CalcSalary();
cout<<No<<"\t"<<Name<<"\t销售经理\t"<<Earning<<endl; } };
公司类的声明
class Company //公司类 { private:
Person *Worker; //员工表 void Clear(); //清除内存中数据 public: Company() {
Worker=0; Load(); }
~Company() {
Person *p; p=Worker; while(p)
g
{
p=p->next; delete Worker; Worker=p; }
Worker=0; }
void Add(); //增加人员 void Delete(); //删除人员 void Modify(); //修改人员 void Query(); //查询人员 void Set(); //基础数据设置
void Save(); //数据存盘(包括基础数据,人员数据) void Load(); //数据装入(包括基础数据,人员数据) };
6 模块分析
6.1 添加模块
添加函数如下:
void Company::Add() {
Person *p; //新结点指针 int Duty; char Name[20]; double Amount,T;
cout<<"\n** 新增员工 **\n";
//输入员工信息 ID++;
cout<<"输入岗位(1-经理2-销售经理3-销售员4-技术员):"; cin>>Duty; cout<<"输入姓名:"; cin>>Name;
g
if(Duty==3) {
cout<<"本月销售额:"; cin>>Amount; }
else if(Duty==4) {
cout<<"本月工作小时数(0-168):"; cin>>T; }
6.2 查询本月经营模块
显示函数如下: void Company::Query() {
cout<<"\n** 查询人员本月销售信息 **\n";
double sum=0; //销售额总和 Person *p=Worker; while(p) {
if(p->Duty==3)sum+=((Sales *)p)->GetAmount(); p=p->next; }
p=Worker;
double sum2=0; //工资总和 while(p) {
if(p->Duty==2)((SalesManager *)p)->SetAmount(sum); p->Output(); sum2+=p->Earning;
g
p=p->next; }
cout<<"本月盈利:"<<sum*0.20-sum2<<endl; cout<<"(按照20%利润计算)\n"; } 6.3 修改模块
修改函数如下: void Company::Modify() {
int No,Duty; char Name[20]; double Amount,T;
cout<<"\n** 修改员工 **\n"; cout<<"ID:"; cin>>No;
//查找要修改的结点
Person *p1,*p2; p1=Worker; while(p1) {
if(p1->No==No) break; else { p2=p1; p1=p1->next; } }
g
//修改结点
if(p1!=NULL)//若找到结点 {
p1->Output();
cout<<"调整岗位(1-经理2-销售经理3-销售员4-技术员):"; cin>>Duty; if(p1->Duty!=Duty) //若岗位发生变动 {
//修改其它数据
cout<<"输入姓名:"; cin>>Name; if(Duty==3) {
cout<<"本月销售额:"; cin>>Amount; }
else if(Duty==4) {
cout<<"本月工作小时数(0-168):"; cin>>T; }
//创建新员工结点 Person *p3; switch(Duty) {
case 1:p3=new Manager(p1->No,Name,Duty); break; case 2:p3=new SalesManager(p1->No,Name,Duty); break; case 3:p3=new Sales(p1->No,Name,Duty,Amount); break; case 4:p3=new Technician(p1->No,Name,Duty,T); break; }
//员工结点替换到链表
g
p3->next=p1->next;
if(p1==Worker) //若要替换的结点是第一个结点 Worker=p3;
else //若要删除的结点是后续结点 p2->next=p3;
//删除原来的员工结点 delete p1; }
else //若岗位没有变动 {
cout<<"输入姓名:"; cin>>p1->Name; if(Duty==3) {
cout<<"本月销售额:"; cin>>Amount; *)p1)->SetAmount(Amount);
}
else if(Duty==4) {
cout<<"本月工作小时数(0-168):"; cin>>T; *)p1)->SetT(T);
} }
cout<<"修改成功!\n"; }
else //未找到结点 cout<<"未找到!\n"; }
6.4 数据装盘模块
数据装盘函数如下: void Company::Save()
((Sales
((Technician
g
{
ofstream fPerson,fBase; char c;
cout<<"\n保存人员和基础数据,是否继续?[Y/N]:"; cin>>c; if(toupper(c)!='Y')return;
//保存人员编号、姓名、岗位
fPerson.open("person.txt",ios::out); Person *p=Worker; while(p) {
fPerson<<p->No<<"\t"<<p->Name<<"\t"<<p->Duty<<"\t"; if(p->Duty==3)
fPerson<<((Sales*)p)->GetAmount()<<"\t"; else if(p->Duty==4)
fPerson<<((Technician *)p)->GetT()<<"\t"; fPerson<<endl; p=p->next; }
fPerson.close();
//保存基础数据
fBase.open("base.txt",ios::out);
fBase<<"经理固定月薪\t"<<ManagerSalary<<endl;
fBase<<"销售经理固定月薪\t"<<SalesManagerSalary<<endl; fBase<<"销售经理提成%\t"<<SalesManagerPercent<<endl; fBase<<"销售人员提成%\t"<<SalesPercent<<endl; fBase<<"技术人员小时工资\t"<<WagePerHour<<endl; fBase<<"ID\t"<<ID<<endl; fPerson.close();
g
cout<<"\n保存人员和基础数据已经完成...\n"; } 6.5 删除模块
删除函数如下:
void Company::Delete() //删除人员 {
int No;
cout<<"\n** 删除员工 **\n"; cout<<"ID:"; cin>>No;
//查找要删除的结点
Person *p1,*p2; p1=Worker; while(p1) {
if(p1->No==No) break; else { p2=p1; p1=p1->next; } }
//删除结点
if(p1!=NULL)//若找到结点,则删除 {
if(p1==Worker) //若要删除的结点是第一个结点 {
Worker=p1->next;
g
delete p1; }
else //若要删除的结点是后续结点 {
p2->next=p1->next; delete p1; }
cout<<"找到并删除\n"; }
else //未找到结点 cout<<"未找到!\n"; }
6.6 基础数据设置模块 基础数据设置函数如下:
void Company::Set() {
cout<<"\n** 设置基础数据 **\n"; cout<<"经理固cin>>ManagerSalary;
定
月
薪
["<<ManagerSalary<<"
元
]:";
cout<<"销售经理固定月薪["<<SalesManagerSalary<<"元]:"; cin>>SalesManagerSalary; cout<<"销售经理提cin>>SalesManagerPercent; cout<<"销售人员cin>>SalesPercent;
成提
["<<SalesManagerPercent<<"成
["<<SalesPercent<<"
%%
]:";
]:";
cout<<"技术人员小时工资["<<WagePerHour<<"(元/小时)]:"; cin>>WagePerHour;
cout<<"员工标识[>="<<ID<<"]:"; cin>>ID; }
6.7 数据装入模块 数据装入函数:
void Company::Load() //数据装入(包括基础数据,人员数据)
g
{
//基础数据装入 ifstream fBase;
char buf[80]; //buf用于保存数据文件中的注释字符串 fBase.open("base.txt",ios::in);
fBase>>buf>>ManagerSalary; //经理固定月薪 fBase>>buf>>SalesManagerSalary; //销售经理固定月薪 fBase>>buf>>SalesManagerPercent; //销售经理提成% fBase>>buf>>SalesPercent; //销售人员提成% fBase>>buf>>WagePerHour; //技术人员小时工资 fBase>>buf>>ID; //员工标识 fBase.close();
//清除内存人员数据 Clear(); //人员数据数据装入 ifstream fPerson; Person *p=Worker;
int No; char Name[20]; int Duty; double Amount,T;
fPerson.open("person.txt",ios::in); //读一条记录
fPerson>>No>>Name>>Duty; if(Duty==3)fPerson>>Amount; else if(Duty==4)fPerson>>T;
while(fPerson.good()) {
//创建员工结点 switch(Duty) {
g
case 1:p=new Manager(No,Name,Duty); break; case 2:p=new SalesManager(No,Name,Duty); break; case 3:p=new Sales(No,Name,Duty,Amount); break; case 4:p=new Technician(No,Name,Duty,T); break; }
p->next=0;
//员工结点加入链表
if(Worker) //若已经存在结点 {
Person *p2; p2=Worker;
while(p2->next) //查找尾结点 {
p2=p2->next; }
p2->next=p; //连接 }
else //若不存在结点(表空) {
Worker=p; //连接 }
//读下一条记录
fPerson>>No>>Name>>Duty; if(Duty==3)fPerson>>Amount; else if(Duty==4)fPerson>>T; }
fPerson.close();
cout<<"\n人员和基础数据已经装入...\n";
g
}
7 系统测试
进入VC++6.0,运行程序,如图7.1所示。
图7.1
进行基础数据设置,如图7.2所示。
g
增加人员,入图7.3所示。
图7.3
g
查询人员本月销售信息,如图7.4所示。
图7.4
进行修改,如图7.5所示。
图7.5
进行删除,如图7.6所示。
g
图7.6
数据存盘,如图7.7所示。
图7.7
g
8 结论
此次课程设计,让我懂得了更深地了解了C++的各方面的知识,感悟到C++的魅力所在,让我能更熟练地去运用C++的知识,编出让自己满意的程序,获得更大的动力,让我不断进步!
此次课程设计,也暴露了自己很多的不足,许多知识掌握得不熟,模棱两可,不过我去图书馆借阅书籍,通过查询,还是解决了这些问题,巩固了自己。
g
公司工资管理系统
-21-
正在阅读:
C++课程设计公司工资管理系统说明书05-29
文科高校专项计划自荐信02-26
讲故事稿件110-17
湖南省长沙市明德中学2016届高三上学期第三次月考数学(文)试题05-12
校报征稿通知05-27
《童年》名著阅读练习含答案11-13
分享知识收获成长作文700字06-29
企业采购业务国内外研究现状04-11
课间安全作文600字06-17
- 教学能力大赛决赛获奖-教学实施报告-(完整图文版)
- 互联网+数据中心行业分析报告
- 2017上海杨浦区高三一模数学试题及答案
- 招商部差旅接待管理制度(4-25)
- 学生游玩安全注意事项
- 学生信息管理系统(文档模板供参考)
- 叉车门架有限元分析及系统设计
- 2014帮助残疾人志愿者服务情况记录
- 叶绿体中色素的提取和分离实验
- 中国食物成分表2020年最新权威完整改进版
- 推动国土资源领域生态文明建设
- 给水管道冲洗和消毒记录
- 计算机软件专业自我评价
- 高中数学必修1-5知识点归纳
- 2018-2022年中国第五代移动通信技术(5G)产业深度分析及发展前景研究报告发展趋势(目录)
- 生产车间巡查制度
- 2018版中国光热发电行业深度研究报告目录
- (通用)2019年中考数学总复习 第一章 第四节 数的开方与二次根式课件
- 2017_2018学年高中语文第二单元第4课说数课件粤教版
- 上市新药Lumateperone(卢美哌隆)合成检索总结报告
- C++
- 设计公司
- 说明书
- 管理系统
- 工资
- 课程
- 设计院的CAD制图标准
- 高二生物学业水平测试复习
- 物业公司各岗位日常考核标准
- SPSS数据分析教程-4_概率论初步
- 6、7栋桩基础施工合同范本2010
- 农村初中九年级班主任工作计划20110906
- 火力发电厂施工组织大纲设计规定(试行)
- ==镇2012年防灾减灾工作汇报
- MongoDB_Architecture_Guide
- 大工11春《大学英语2(开放英语2)》在线作业3
- 高三大纲版化学配套月考试题1B
- 办公用品领用制度
- 0数字信号处理绪论
- 小区道路景观绿化施工方案精编
- 北京国资委:首钢北京主流程年底停产
- 2012年职业技能竞赛开幕式的讲话
- 2013年江苏高考作文猜想
- 第六章 SAP R3 资产管理(AM)
- 小学教育学复习资料
- 毕业论文《常用路由协议的分析与实际应用》