C++仓库管理系统总10页.docx

上传人:b****7 文档编号:23329279 上传时间:2023-05-16 格式:DOCX 页数:17 大小:447.56KB
下载 相关 举报
C++仓库管理系统总10页.docx_第1页
第1页 / 共17页
C++仓库管理系统总10页.docx_第2页
第2页 / 共17页
C++仓库管理系统总10页.docx_第3页
第3页 / 共17页
C++仓库管理系统总10页.docx_第4页
第4页 / 共17页
C++仓库管理系统总10页.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

C++仓库管理系统总10页.docx

《C++仓库管理系统总10页.docx》由会员分享,可在线阅读,更多相关《C++仓库管理系统总10页.docx(17页珍藏版)》请在冰豆网上搜索。

C++仓库管理系统总10页.docx

C++仓库管理系统总10页

 

C++仓库管理系统(总10页)

employee.cpp包含employee类的实现代码

Salesman.hSalesman(售货员)的类声明头文件

Salesman.cpp包含Salesman类的实现代码

Warehouseman.hwarehouseman(库管员)的类声明头文件

Warehouseman.cpp包含Warehouseman类的实现代码

manager.hmanager(经理)的类声明头文件

manager.cpp包含manager类的实现代码

EmployeeList.hEmployeeList类(员工链表)的类声明头文件

EmployeeList.cpp包含EmployeeList类的实现代码

main.cpp主程序

//****************************************

//employee.h*

//****************************************

#ifndefH_EMPLOYEE

#defineH_EMPLOYEE

classemployee//基类(员工)

{

private:

intnumber;//员工编号

charAddress[100];//家庭地址

protected:

charname[30];//员工姓名

floatfixedSalary;//固定工资

floatMonthSalary;//月薪

public:

employee();//构造函数,录入员工个人信息

voidShowInfor();//显示员工个人及工资信息

voidRecordInfor(char*pInfBuffer);//将个人信息写入缓冲区

//获得工作类别

virtualchar*GetWorkStyle()=0;

//计算员工工资的虚函数,因为只提供一个统一的接口,所以不需要添加任何实际的代码

virtualvoidCountSalary()=0;

};

#endif

//****************************************

//employee.cpp*

//****************************************

#include"employee.h"

#include"iostream.h"

#include"stdio.h"

//构造函数,录入员工个人信息

employee:

:

employee()

{

cout<

//录入员工姓名

cout<<"请输入员工姓名:

";

cin>>name;

//录入员工编号

cout<<"请输入员工编号(1000-9999):

";

cin>>number;

//检查员工编号,保证编号正确

while(number<1000||number>9999)

{

cout<

";

cin>>number;

}

//录入家庭地址

cout<<"请输入家庭地址:

";

cin>>Address;

//默认初始月薪为零

MonthSalary=0.0;

};

//显示员工个人及工资信息

voidemployee:

:

ShowInfor()

{

cout<

//显示员工姓名

cout<<"员工姓名:

"<

//显示员工编号

cout<<"员工编号:

"<

//显示家庭地址

cout<<"家庭地址:

"<

//显示工作类别

cout<<"工作类别:

"<

//显示月薪

if(MonthSalary==0.0)

cout<<"月薪:

尚未计算"<

else

cout<<"月薪:

"<

};

//将个人信息写入缓冲区

voidemployee:

:

RecordInfor(char*pInfBuffer)

{

intj;

j=sprintf(pInfBuffer,"员工姓名:

%s\r\n",name);

j+=sprintf(pInfBuffer+j,"员工编号:

%d\r\n",number);

j+=sprintf(pInfBuffer+j,"家庭地址:

%s\r\n",Address);

j+=sprintf(pInfBuffer+j,"工作类别:

%s\r\n",GetWorkStyle());

if(MonthSalary==0.0)

j+=sprintf(pInfBuffer+j,"月薪:

尚未计算\r\n\r\n");

else

j+=sprintf(pInfBuffer+j,"月薪:

%f\r\n\r\n",MonthSalary);

}

//****************************************

//Salesman.h*

//****************************************

#ifndefH_SALESMAN

#defineH_SALESMAN

#include"employee.h"

//售货员类

classSalesman:

publicemployee

{

private:

floatsaleSum;//售货员的销售额

floatgetRate;//售货员的提成比率

public:

Salesman();//构造函数,录入售货员个人信息

char*GetWorkStyle();//获得工作类别

voidCountSalary();//计算售货员的工资

};

#endif

//****************************************

//Salesman.cpp*

//****************************************

#include"Salesman.h"

#include"iostream.h"

//构造函数,录入售货员个人信息

Salesman:

:

Salesman()

{

cout<

//录入售货员的固定月薪

cout<<"请输入售货员的固定月薪:

";

cin>>fixedSalary;

//录入售货员的当月销售额

cout<<"请输入售货员的提成比率";

cin>>getRate;

}

//获得工作类别

char*Salesman:

:

GetWorkStyle()

{

return"售货员";

}

//计算售货员的工资

voidSalesman:

:

CountSalary()

{

//得到售货员的当月销售额

cout<<"请输入售货员"<

cin>>saleSum;

//工资=固定工资+营业额×提成比率

MonthSalary=fixedSalary+saleSum*getRate;

}

//****************************************

//warehouseman.h*

//****************************************

#ifndefH_WAREHOUSEMAN

#defineH_WAREHOUSEMAN

#include"employee.h"

//库管员类

classWarehouseman:

publicemployee

{

private:

floatbonus;//库管员的奖金

public:

Warehouseman();//构造函数,录入库管员个人信息

char*GetWorkStyle();//获得工作类别

voidCountSalary();//计算库管员的工资

};

#endif

//****************************************

//warehouseman.cpp*

//****************************************

#include"Warehouseman.h"

#include"iostream.h"

//构造函数,录入库管员个人信息

Warehouseman:

:

Warehouseman()

{cout<

//录入库管员的固定月薪

cout<<"请输入库管员的固定月薪:

";

cin>>fixedSalary;

}

//获得工作类别

char*Warehouseman:

:

GetWorkStyle()

{

return"库管员";

}

//计算库管员的工资

voidWarehouseman:

:

CountSalary()

{

//得到库管员的当月奖金

cout<<"请输入库管员"<

cin>>bonus;

//工资=固定工资+当月奖金

MonthSalary=fixedSalary+bonus;

}

//****************************************

//Manager.h*

//****************************************

#ifndefH_MANAGER

#defineH_MANAGER

#include"Employee.h"

//经理类

classManager:

publicEmployee

{

private:

floatOfficeExpense;//经理的办公费用

public:

Manager();//构造函数,录入经理个人信息

char*GetWorkStyle();//获得工作类别

voidCountSalary();//计算经理的工资

};

#endif

//****************************************

//Manager.cpp*

//****************************************

#include"Manager.h"

#include"iostream.h"

//构造函数,录入经理个人信息

Manager:

:

Manager()

{

cout<

//录入经理的固定月薪

cout<<"请输入经理的固定月薪:

"<

cin>>fixedSalary;

}

//获得工作类别

char*Manager:

:

GetWorkStyle()

{

return"经理";

}

//计算经理的工资

voidManager:

:

CountSalary()

{

//得到经理的当月办公费用

cout<<"请输入经理"<

cin>>OfficeExpense;

//月薪=固定工资+当月办公费用

MonthSalary=fixedSalary+OfficeExpense;

}

//****************************************

//EmployeeList.h*

//****************************************

#ifndefH_EMPLOYEELIST

#defineH_EMPLOYEELIST

#include"employee.h"

#defineNULL0

//定义一个包含员工类对象的节点结构

structemployeeNode{

employee*pEmployee;

employeeNode*pNext;

};

classEmployeeList

{

private:

employeeNode*pEmpListRoot;//员工类对象的链表的根指针

public:

EmployeeList();

//析构函数

~EmployeeList();

//将一个包含员工类对象的节点添加到链表中

voidAddList(employee*pEmployee);

//计算所有员工的月薪

voidCaculateAllSalary();

//显示所有员工的详细信息

voidShowAllInfo();

//将所有员工的详细信息保存到纪录文件上

voidSaveAllRecord();

};

#endif

//****************************************

//EmployeeList.cpp*

//****************************************

#include"EmployeeList.h"

#include"iostream.h"

#include"fstream.h"

#include"stdio.h"

#include"string.h"

EmployeeList:

:

EmployeeList()

{

pEmpListRoot=NULL;

}

//将一个包含员工类对象的节点添加到链表中

voidEmployeeList:

:

AddList(employee*pEmployee)

{

employeeNode*pEmpNode;

pEmpNode=newemployeeNode();

pEmpNode->pEmployee=pEmployee;

pEmpNode->pNext=pEmpListRoot;

pEmpListRoot=pEmpNode;

}

//计算所有员工的月薪

voidEmployeeList:

:

CaculateAllSalary()

{

employeeNode*pTempNode;

//计算员工链表中所有员工的月薪

pTempNode=pEmpListRoot;

while(pTempNode)

{

pTempNode->pEmployee->CountSalary();

pTempNode=pTempNode->pNext;

}

}

//显示所有员工的详细信息

voidEmployeeList:

:

ShowAllInfo()

{

employeeNode*pTempNode;

//显示员工链表中所有员工的信息

cout<<"所有员工的个人信息如下:

"<

pTempNode=pEmpListRoot;

while(pTempNode)

{

pTempNode->pEmployee->ShowInfor();

pTempNode=pTempNode->pNext;

}

}

//将所有员工的详细信息保存到纪录文件上

voidEmployeeList:

:

SaveAllRecord()

{

ofstreammyFile;

charsAllBuffer[1000000]={0};

charsSingleBuffer[1000]={0};

intj;

myFile.open("info.txt",ios:

:

app|ios:

:

binary);

if(!

myFile)

{

cerr<<"打开记录文件时出现错误!

"<

return;

}

employeeNode*pTempNode;

//将所有员工的详细信息保存到纪录文件上

pTempNode=pEmpListRoot;

while(pTempNode)

{

//保存一个员工信息

pTempNode->pEmployee->RecordInfor(sSingleBuffer);

//加入到总的字符串缓冲区中

strcat(sAllBuffer,sSingleBuffer);

pTempNode=pTempNode->pNext;

}

myFile.write(sAllBuffer,strlen(sAllBuffer));

myFile.close();

}

EmployeeList:

:

~EmployeeList()

{

employeeNode*pTempNode;

pTempNode=pEmpListRoot;

while(pTempNode)

{

pEmpListRoot=pEmpListRoot->pNext;

deletepTempNode->pEmployee;

deletepTempNode;

pTempNode=pEmpListRoot;

}

}

//****************************************

//main.cpp*

//主程序*

//****************************************

#include"stdlib.h"

#include"stdio.h"

#include"conio.h"

#include"employee.h"

#include"Salesman.h"

#include"Warehouseman.h"

#include"Manager.h"

#include"iostream.h"

#include"EmployeeList.h"

voidmain()

{

charopr;//操作项

EmployeeListEL;

employee*pEmployee;

cout<

while(true)//建立循环操作

{

cout<

"<

cout<<"1.添加一个售货员"<

cout<<"2.添加一个库管员"<

cout<<"3.添加一个经理"<

cout<<"4.计算所有员工的月薪"<

cout<<"5.显示所有员工的详细信息"<

cout<<"6.保存并退出"<

//检查用户输入

while(opr!

='1'&&opr!

='2'&&opr!

='3'&&opr!

='4'&&opr!

='5'&&

opr!

='6')

{

cout<<"您的输入有误,请重新输入!

"<

cin>>opr;

}

//读入用户的操作项

cin>>opr;

switch(opr)

{

//添加一个售货员

case'1':

pEmployee=newSalesman();

EL.AddList(pEmployee);

break;

//添加一个库管员

case'2':

pEmployee=newWarehouseman();

EL.AddList(pEmployee);

break;

//添加一个经理

case'3':

pEmployee=newManager();

EL.AddList(pEmployee);

break;

case'4':

//计算员工链表中所有员工的月薪

EL.CaculateAllSalary();

break;

case'5':

//显示员工链表中所有员工的详细信息

EL.ShowAllInfo();

break;

case'6':

//将所有员工的详细信息保存到纪录文件上,并退出

EL.SaveAllRecord();

return;

break;

default:

break;

}

}

}

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

当前位置:首页 > 医药卫生 > 基础医学

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

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