仓库管理C++仓库管理系统.docx
《仓库管理C++仓库管理系统.docx》由会员分享,可在线阅读,更多相关《仓库管理C++仓库管理系统.docx(17页珍藏版)》请在冰豆网上搜索。
仓库管理C++仓库管理系统
employee.hemployee(员工)的类声明头文件
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;
}
}
}