C++仓库管理系统.docx
- 文档编号:24050619
- 上传时间:2023-05-23
- 格式:DOCX
- 页数:17
- 大小:17.55KB
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; } } }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 仓库 管理 系统