收藏 分销(赏)

销售员工管理系统.doc

上传人:人****来 文档编号:9850745 上传时间:2025-04-10 格式:DOC 页数:40 大小:600.50KB 下载积分:12 金币
下载 相关 举报
销售员工管理系统.doc_第1页
第1页 / 共40页
销售员工管理系统.doc_第2页
第2页 / 共40页


点击查看更多>>
资源描述
销售员工管理系统 40 2020年4月19日 文档仅供参考,不当之处,请联系改正。 C++大作业报告 班级:031111 学号:03111052 姓名:杨柳 销售公司员工管理 一.题目要求 设计一个虚基类Staff(员工),包含编号、姓名和年龄保护数据成员以及相关的成员函数;由Staff派生出销售员类Salesman,包含销售额保护数据成员以及相关的成员函数;再由Staff派生出经理类Manager;然后由Salesman和Manager类派生出销售经理类SalesManager。 设计一个利用文件处理方式实现对公司人员(包括销售员、经理和销售经理)进行管理,具有增加数据、更新数据、查询数据、删除数据以及重组文件的功能。(删除数据在记录中做删除标志,重组文件指在物理上删除有删除标志的记录。)另外要求分别统计这三类员工的人数以及所有员工的总数。 二.编程思想 由题目知至少需要四个类:一个基类、两个直接由基类派生的类、一个由上面两个派生出来的类共同派生的子类。首先定义一个虚基类Staff类,然后经过虚拟继承生成Salesman类和Manager类,最后由Salesman和Manager派生出主任工程师类SalesManager。这四个类中定义InputFromFile(istream &in)这一输入函数,另外每个类还定义输入信息和输出信息的成员函数。之后定义StaffChart、SalesmanChart、ManagerChart和SalesManagerChart四个类。为实现增加、更新、查询、删除以及全部显示人员的功能定义addItem、modifyItem、find、removeItem以及display函数。最后在主函数定义Staff_Chart、Salesman_Chart、Manager_Chart和SalesManager_Chart四个对象,经过循环执行并用switch函数选择功能,然后调用相关的函数来实现各种功能。 三.实验代码 #include<iostream> #include<fstream> using namespace std; class Staff { protected: char num[10]; char name[10]; int age; public: Staff * Next; void set_staff() { cout<<"请输入编号:";cin>>num; cout<<"请输入姓名:";cin>>name; cout<<"请输入年龄:";cin>>age; } void InputFromFile(istream &in) { in>>num>>name>>age; } void show() { cout<<"编号:"<<num<<endl; cout<<"姓名:"<<name<<endl; cout<<"年龄:"<<age<<endl; } char *get_num() { return num; } char *get_name() { return name; } int get_age() { return age; } }; class Salesman:virtual public Staff { protected: char major[10]; char t_title[10]; public: Salesman * Next; void set_salesman() { cout<<"请输入编号:";cin>>num; cout<<"请输入姓名:";cin>>name; cout<<"请输入年龄:";cin>>age; cout<<"请输入专业:";cin>>major; cout<<"请输入职称:";cin>>t_title; } void InputFromFile(istream &in) { in>>num>>name>>age>>major>>t_title; } void show_salesman() { cout<<"编号:"<<num<<endl; cout<<"姓名:"<<name<<endl; cout<<"年龄:"<<age<<endl; cout<<"专业:"<<major<<endl; cout<<"职称:"<<t_title<<endl; } char *get_major() { return major; } char *get_t_title() { return t_title; } }; class Manager:virtual public Staff { protected: char job[10]; char dept[10]; public: Manager * Next; void set_manager() { cout<<"请输入编号:";cin>>num; cout<<"请输入姓名:";cin>>name; cout<<"请输入年龄:";cin>>age; cout<<"请输入职务:";cin>>job; cout<<"请输入部门:";cin>>dept; } void InputFromFile(istream &in) { in>>num>>name>>age>>job>>dept; } void show_manager() { cout<<"编号:"<<num<<endl; cout<<"姓名:"<<name<<endl; cout<<"年龄:"<<age<<endl; cout<<"职务:"<<job<<endl; cout<<"部门:"<<dept<<endl; } char *get_job() { return job; } char *get_dept() { return dept; } }; class SalesManager :public Salesman,public Manager { public: SalesManager * Next; void set_salesmanager() { cout<<"请输入编号:";cin>>num; cout<<"请输入姓名:";cin>>name; cout<<"请输入年龄:";cin>>age; cout<<"请输入专业:";cin>>major; cout<<"请输入职称:";cin>>t_title; cout<<"请输入职务:";cin>>job; cout<<"请输入部门:";cin>>dept; } void InputFromFile(istream &in) { in>>num>>name>>age>>major>>t_title>>job>>dept; } void show_salesmanager() { cout<<"编号:"<<num<<endl; cout<<"姓名:"<<name<<endl; cout<<"年龄:"<<age<<endl; cout<<"专业:"<<major<<endl; cout<<"职称:"<<t_title<<endl; cout<<"职务:"<<job<<endl; cout<<"部门:"<<dept<<endl; } }; class StaffChart { public: StaffChart(); ~StaffChart(); void find(); //输出单个条目 void save(); //将信息输出到文件 void modifyItem(); //修改Staff条目 void removeItem(); //删除Staff条目 void display() //输出全部条目 { Staff *p=Head->Next; for(p;p!=End;p=p->Next) { p->show(); cout<<endl; } } void addItem() //添加条目 { End->set_staff(); End->Next=new Staff; End=End->Next; save(); } private: Staff * Head,* End; ifstream in; //文件输入 ofstream out; //文件输出 Staff * findItem(char * num) { for(Staff * p=Head;p->Next!=End;p=p->Next) if(!strcmp(p->Next->get_num() ,num)) return p; return NULL; } }; StaffChart::StaffChart() //构造函数 { Head=new Staff; Head->Next=new Staff; End=Head->Next; in.open("StaffChart.txt"); while(!in.eof()) { End->InputFromFile(in); if(End->get_num()[0]=='\0') break; End->Next=new Staff; End=End->Next; } in.close(); } StaffChart::~StaffChart() //析构函数 { for(Staff * temp;Head->Next!=End;) { temp=Head->Next; Head->Next=Head->Next->Next; delete temp; } delete Head,End; } void StaffChart::find() //查找条目 { char num[10]; Staff * p=NULL; cout<<"请输入要查找员工的工号:";cin>>num; if(p=findItem(num)) p->Next->show(); else { cout<<"没有找到!!"<<endl<<endl; } } void StaffChart::modifyItem() //修改条目 { char num[10]; Staff * p=NULL; cout<<"请输入要修改员工的工号:";cin>>num; if(p=findItem(num)) { p->Next->show(); cout<<"请输入新的内容:"<<endl; p->Next->set_staff(); } else cout<<"没有找到!!"<<endl<<endl; save(); } void StaffChart::removeItem() //删除条目 { char num[10]; Staff *p=NULL,*temp=NULL; cout<<"请输入要删除员工的工号:";cin>>num; if(p=findItem(num)) { temp=p->Next; p->Next=p->Next->Next; delete temp; cout<<"删除成功!!"<<endl<<endl; } else cout<<"没有找到!!"<<endl<<endl; save(); } void StaffChart::save() //保存 { out.open("StaffChart.txt"); for(Staff * p=Head->Next;p!=End;p=p->Next) out<<p->get_num()<<" "<<p->get_name()<<" "<<p->get_age()<<endl; out.close(); } class SalesmanChart { public: SalesmanChart(); ~SalesmanChart(); void find(); //输出单个条目 void save(); //将信息输出到文件 void modifyItem(); //修改Engineer条目 void removeItem(); //删除Engineer条目 void display() //输出全部条目 { for(Salesman *p=Head->Next;p!=End;p=p->Next) p->show_salesman(); } void addItem() //添加条目 { //End->set_salesman(); End->Next=new Salesman; End=End->Next; save(); } private: Salesman * Head,* End; ifstream in; //文件输入 ofstream out; //文件输出 Salesman * findItem(char * num) { for(Salesman * p=Head;p->Next!=End;p=p->Next) if(!strcmp(p->Next->get_num() ,num)) return p; return NULL; } }; SalesmanChart::SalesmanChart() //构造函数 { Head=new Salesman; Head->Next=new Salesman; End=Head->Next; in.open("SalesmanChaart.txt"); while(!in.eof()) { End->InputFromFile(in); if(End->get_num()[0]=='\0') break; End->Next=new Salesman; End=End->Next; } in.close(); } SalesmanChart::~SalesmanChart() //析构函数 { for(Salesman * temp;Head->Next!=End;) { temp=Head->Next; Head->Next=Head->Next->Next; delete temp; } delete Head,End; } void SalesmanChart::find() //查找条目 { char num[10]; Salesman * p=NULL; cout<<"请输入要查找销售员的工号:";cin>>num; if(p=findItem(num)) p->Next->show_salesman(); else cout<<"没有找到!!"<<endl<<endl; } void SalesmanChart::modifyItem() //修改条目 { char num[10]; Salesman * p=NULL; cout<<"请输入要修改销售员的工号:";cin>>num; if(p=findItem(num)) { p->Next->show_salesman(); cout<<"请输入新的内容:"<<endl; p->Next->set_salesman(); } else cout<<"没有找到!!"<<endl<<endl; save(); } void SalesmanChart::removeItem() //删除条目 { char num[10]; Salesman *p=NULL,*temp=NULL; cout<<"请输入要删除销售员的工号:";cin>>num; if(p=findItem(num)) { temp=p->Next; p->Next=p->Next->Next; delete temp; cout<<"删除成功!!"<<endl<<endl; } else cout<<"没有找到!!"<<endl<<endl; save(); } void SalesmanChart::save() //保存 { out.open("SalesmanChart.txt"); for(Salesman * p=Head->Next;p!=End;p=p->Next) out<<p->get_num()<<p->get_name()<<p->get_age()<<p->get_major()<<p->get_t_title()<<endl; out.close(); } class ManagerChart { public: ManagerChart(); ~ManagerChart(); void find(); //输出单个条目 void save(); //将信息输出到文件 void modifyItem(); //修改Leader条目 void removeItem(); //删除Leader条目 void display() //输出全部条目 { Manager *p=Head->Next; for(p;p!=End;p=p->Next) p->show_manager(); } void addItem() //添加条目 { End->set_manager(); End->Next=new Manager; End=End->Next; save(); } private: Manager * Head,* End; ifstream in; //文件输入 ofstream out; //文件输出 Manager * findItem(char * num) { for(Manager * p=Head;p->Next!=End;p=p->Next) if(!strcmp(p->Next->get_num() ,num)) return p; return NULL; } }; ManagerChart::ManagerChart() //构造函数 { Head=new Manager; Head->Next=new Manager; End=Head->Next; in.open("ManagerChaart.txt"); while(!in.eof()) { End->InputFromFile(in); if(End->get_num()[0]=='\0') break; End->Next=new Manager; End=End->Next; } in.close(); } ManagerChart::~ManagerChart() //析构函数 { for(Manager * temp;Head->Next!=End;) { temp=Head->Next; Head->Next=Head->Next->Next; delete temp; } delete Head,End; } void ManagerChart::find() //查找条目 { char num[10]; Manager * p=NULL; cout<<"请输入要查找经理的工号:";cin>>num; if(p=findItem(num)) p->Next->show_manager(); else cout<<"没有找到!!"<<endl<<endl; } void ManagerChart::modifyItem() //修改条目 { char num[10]; Manager * p=NULL; cout<<"请输入要修改经理的工号:";cin>>num; if(p=findItem(num)) { p->Next->show_manager(); cout<<"请输入新的内容:"<<endl; p->Next->set_manager(); } else cout<<"没有找到!!"<<endl<<endl; save(); } void ManagerChart::removeItem() //删除条目 { char num[10]; Manager *p=NULL,*temp=NULL; cout<<"请输入要删除经理的工号:";cin>>num; if(p=findItem(num)) { temp=p->Next; p->Next=p->Next->Next; delete temp; cout<<"删除成功!!"<<endl<<endl; } else cout<<"没有找到!!"<<endl<<endl; save(); } void ManagerChart::save() //保存 { out.open("ManagerChart.txt"); for(Manager * p=Head->Next;p!=End;p=p->Next) out<<p->get_num()<<p->get_name()<<p->get_age()<<p->get_job()<<p->get_dept()<<endl; out.close(); } class SalesManagerChart { public: SalesManagerChart(); ~SalesManagerChart(); void find(); //输出单个条目 void save(); //将信息输出到文件 void modifyItem(); //修改Leader条目 void removeItem(); //删除Leader条目 void display() //输出全部条目 { SalesManager *p=Head->Next; for(;p!=End;p=p->Next) p->show_salesmanager(); } void addItem() //添加条目 { End->set_salesmanager(); End->Next=new SalesManager; End=End->Next; save(); } private: SalesManager * Head,* End; ifstream in; //文件输入 ofstream out; //文件输出 SalesManager * findItem(char * num) { for(SalesManager * p=Head;p->Next!=End;p=p->Next) if(!strcmp(p->Next->get_num() ,num)) return p; return NULL; } }; SalesManagerChart::SalesManagerChart() //构造函数 { Head=new SalesManager; Head->Next=new SalesManager; End=Head->Next; in.open("SalesManagerChaart.txt"); while(!in.eof()) { End->InputFromFile(in); if(End->get_num()[0]=='\0') break; End->Next=new SalesManager; End=End->Next; } in.close(); } SalesManagerChart::~SalesManagerChart() //析构函数 { for(SalesManager * temp;Head->Next!=End;) { temp=Head->Next; Head->Next=Head->Next->Next; delete temp; } delete Head,End; } void SalesManagerChart::find() //查找条目 { char num[10]; SalesManager * p=NULL; cout<<"请输入要查找销售经理的工号:";cin>>num; if(p=findItem(num)) p->Next->show_salesmanager(); else cout<<"没有找到!!"<<endl<<endl; } void SalesManagerChart::modifyItem() //修改条目 { char num[10]; SalesManager * p=NULL; cout<<"请输入要修改销售经理的工号:";cin>>num; if(p=findItem(num)) { p->Next->show_salesmanager(); cout<<"请输入新的内容:"<<endl; p->Next->set_salesmanager(); } else cout<<"没有找到!!"<<endl<<endl; save(); } void SalesManagerChart::removeItem() //删除条目 { char num[10]; SalesManager *p=NULL,*temp=NULL; cout<<"请输入要删除销售经理的工号:";cin>>num; if(p=findItem(num)) { temp=p->Next; p->Next=p->Next->Next; delete temp; cout<<"删除成功!!"<<endl<<endl; } else cout<<"没有找到!!"<<endl<<endl; save(); } void SalesManagerChart::save() //保存 { out.open("SalesManagerChart.txt"); for(Manager * p=Head->Next;p!=End;p=p->Next) out<<p->get_num()<<p->get_name()<<p->get_age()<<p->get_job()<<p->get_dept()<<endl; out.close(); } int main() { int x,y; StaffChart Staff_Chart; SalesmanChart Salesman_Chart; ManagerChart Manager_Chart; SalesManagerChart SalesManager_Chart; bool quit=false; while(!quit) { cout<<"选择功能:\n1.增加数据\t2.更新数据\t3.查询数据\t4.删除数据\t5.列出全部人员\t6.退出"<<endl; cin>>x; switch(x) { case 1: cout<<"选择增加的类型:\n1.员工\t2.销售员\t3.经理\t4.销售经理"<<endl; cin>>y; switch(y) { case 1:Staff_Chart.addItem();break; case 2:Salesman_Chart.addItem();break; case 3:Manager_Chart.addItem();break; case 4:SalesManager_Chart.addItem();break; default :cout<<"输入错误,程序终止!!"<<endl;exit(-1); } break; case 2: cout<<"选择更新的类型:\n1.员工\t2.销售员\t3.经理\t4.销售经理"<<endl; cin>>y; switch(y) { case 1:Staff_Chart.modifyItem();break; case 2:Salesman_Chart.modifyItem();break; case 3:Manager_Chart.modifyItem();break; case 4:SalesManager_Chart.modifyItem();break; default :cout<<"输入错误,程序终止!!"<<endl;exit(-1); } break; case 3: cout<<"选择查询的类型:\n1.员工\t2.销售员\t3.经理\t4.销售经理"<<endl; cin>>y; switch(y) { case 1:Staff_Chart.find();break; case 2:Salesman_Chart.find();break; case 3:Manager_Chart.find();break; case 4:SalesManager_Chart.find();break; default :cout<<"输入错误,程序终止!!"<<endl;exit(-1);; } break; case 4: cout<<"选择删除的类型:\n1.员工\t2.销售员\t3.经理\t4.销售经理"<<endl; cin>>y; switch(y) { case 1:Staff_Chart.removeItem();break; case 2:Salesman_Chart.removeItem();break; case 3:Manager_Chart.removeItem();break; case 4:SalesManager_Chart.removeItem();break; default :cout<<"输入错误,程序终止!!"<<endl;exit(-1); } break; case 5: cout<<"选择列出人员的类型:\n1.员工\t2.销售员\t3.经理\t4.销售经理"<<endl; cin>>y; switch(y) { case 1:Staff_Chart.display();break; case 2:Salesman_Chart.display();break; case 3:Manager_C
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服