欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载  

    职工信息管理系统C++版 程序设计说明书.doc

    • 资源ID:2385488       资源大小:88KB        全文页数:27页
    • 资源格式: DOC        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    职工信息管理系统C++版 程序设计说明书.doc

    高级语言程序设计说明书职工信息管理系统 系 别 专业班级 学生姓名 指导教师 注释:2010计算机工程系高级语言程序设计大作业目 录引言··········································· (3)程序结构 ····································· (3)程序流程图 ··································· (4)程序源程序模块设计说明 ······················· (5) 1.函数头 ················································ (5)2.主函数 ················································· (5)3.基类及继承类 ············································ (5)3-1.基类 ················································ (5)3-2.继承类·············································· (6)3-3.公司类·············································· (6)程序使用说明 ································· (8)总结 ········································· (9)引言程序名称:职工信息管理系统 开发平台:windows 7 Microsoft Visual C+ 6.0主要功能:1。添加职工信息; 2。删除职工信息及薪酬; 3。修改职工信息; 4。查询职工信息及薪酬; 5。设置职位基本薪酬; 6。存储职位信息;程序说明:准确性要求高,可靠性要求高,输入控制严格,页面响应时间短,用户界面友好,输出准确,功能强大! 运行环境:Windows NT/2000/XP/VISTA/WIN7文件说明:程序源代码(职工信息管理系统.cpp); 程序运行文件(职工信息管理系统.exe); 职工信息存储文件(Employee.text);参考资料:C+程序设计 谭浩强 编著 清华大学出版社程序结构函数头:<iostream.h> / cin , cout , 等函数 <string.h> /类,对象,等函数定义<fstream.h> / 文本文档的读/写/复制 等函数 <ctype.h> 主函数:void main () 基类职工类employee派生类:Technician技术员类、Salesman销售员类、Salesmanager销售经理类、Manager经理类、Company公司类。在公司类中定义六个模块功能的实现方法:void Add () /添加 void Delete () /删除 void Modify () /修改 void Query () /查询 void set () /设置 void Save() /载入 void Load() /储存 程序流程图开始定义变量数据处理调用输出函数退出系统YN输入C的值C>=1&&C<=7调用设置函数调用储存函数调用载入函数调用查询函数调用输出函数调用修改函数调用删除函数调用增加函数程序流程图程序源程序模块设计说明1.函数头: #include <iostream>#include <fstream>#include <ctype.h> #include <string.h>调用系统在程序中将要用到的函数。2.主函数:switch(c) case '1': a.Add(); break; case '2': a.Delete();break; case '3': a.Modify();break; case '4': a.Query(); break; case '5': a.Set(); break; case '6': a.Save(); break; case '7': a.Load(); break; 在do-while循环中嵌套switch结构,用来调用构造函数,实现函数模块的功能。3.基类及继承类:3-1.基类: class Employee /职工类 protected: int No; /编号 char Name20; /姓名char Sex10; /性别int Duty; /职位 double Earning; /收入 Employee *next; public: Employee(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; ;先定义一个职工基类,设置了属于保护类的职工基本属性,以及构造函数Employee,可以给职工类型继承。3-2.继承类:class Technician:public Employee /技术员类 private: double Workload; /上个月完成工作量 public: Technician(char ID,char *Name,int Duty,double Workload):Employee(ID,Name,Duty) this->Workload=Workload; double GetWorkload() return Workload; void SetWorkload(double Amount) this->Workload=Amount; void CalcSalary() Earning=Workload*100; void Output() CalcSalary(); cout<<No<<"t"<<Name<<"t技术员t"<<"tt"<<Earning<<endl; ;以技术员类为例,继承了Employee职工类。在这个类中定义了上个月的工作量Workload,获得工作量函数double GetWorkload(),传入工作量函数void SetWorkload(double Amount),工作量计算薪酬函数void CalcSalary(),输出薪酬结果以及该类职工信息函数void Output()。3-3.公司类:class Company /公司类 private: Employee *Worker; /职工表 void Clear(); /清除内存中数据 public: Company() Worker=0; Load(); Company() Employee *p; p=Worker; while(p) p=p->next; delete Worker; Worker=p; Worker=0; 在公司类中先定义一个职工表Worker用于存储职工信息,然后构造函数中可以构造链表,用于管理职工的信息。析构函数用来释放存储空间,清除链表结点中的信息。模块功能的实现方法:void Company:Add() /增加人员 Employee *p; /新结点指针 int Duty; char Name20;char Sex10; /性别double Workload; cout<<"n* 新增员工 *n" /输入员工信息 cout<<"输入工号:" cin>>ID; cout<<"输入职位(1-技术员 3-经理 4-销售经理 5-销售员):" cin>>Duty; cout<<"输入姓名:" cin>>Name; cout<<"输入性别:" cin>>Sex;if(Duty!=4) cout<<"上个月完成工作量:" cin>>Workload; /创建新员工结点 switch(Duty) case 1:p=new Technician(ID,Name,Duty,Workload); break; case 3:p=new Manager(ID,Name,Duty,Workload); break; case 4:p=new Salesmanager(ID,Name,Duty); break; case 5:p=new Salesman(ID,Name,Duty,Workload); break; p->next=0;构造添加函数Add(),在函数中先定义职工的基本信息和新节点指针,创建新的初始化构造函数,用于添加新的职工信息。职工结点加入链表 :if(Worker) /若已经存在结点 Employee *p2; p2=Worker; while(p2->next) /查找尾结点 p2=p2->next; p2->next=p; /连接 else /若不存在结点(表空) Worker=p; /连接 使用指针p和职工表Worker构造一个单链表,在if选择结构和while选择结构中添加新的结点,这个新的结点可以输入职工信息和存储信息的地址,再把职工信息添加到职工链表中。其他模块删除函数Delete()、修改函数Modify()、查询函数Query()、载入函数Save()和存储函数Load()都使用了链表的构造方法。具体内容可以看代码部分。void Company:Set() /设置基础数据 cout<<"n* 设置基础数据 *n" cout<<"经理的基本工资"<<CSalary<<"元:" cin>>CSalary; cout<<"销售经理的基本工资"<<APSalary<<"元:" cin>>APSalary; cout<<"员工工号>="<<ID<<":" cin>>ID; 设置经理和销售经理的基本工资,用于计算这两个职位的工资。 使用说明这是一个关于职工信息管理系统,具有增加、输出、删除、查询、修改、保存、载入数据、计算总支出薪酬等功能,建立了一个含有工号、姓名、性别、工作量等成员的类的变量class Employee。系统中已预输入了5个职工的相关数据以及基本薪酬数据,调试是可按“4”键先查看输入的数据记录。调试过程中,可按照有关提示进行相关操作:增加职工数据按“1”键;删除职工数据按“2”键;修改职工数据按“3”键;查询职工数据按“4”键;基础数据设置按“5”键;数据存盘按“6”键;数据装入按“7”键;退出系统按“8”键。总结经过对职工信息管理系统的分析与编写,我得到了很大的收获。自主学习的必要性更是解决问题的基础。这次设计使我重温了以前学过的各科知识,让我对C编程有了更深刻的认识。除了对系统作出正确的分析,实际的调查工作对系统的整体设计有着至关重要的作用。所以在分析系统之前,我花了一些时间在公司的实际管理工作调查上。也因为这样,如何编写代码逐渐变得明朗。每一个功能模块经过调查后后,各个功能逐渐显露出来,然后,反复探讨,验证这项功能是否有存在的必要,是否可以改进得更好。在这样的前提下,最后顺利完成了这份设计。 这次C系统设计作业,提升了我分析问题的能力和思考问题的逻辑能力,更明白实际调研的重要性。从这次设计学到的东西,相信会对我们日后的学习工作起到很大的指导作用代码附录:#include <iostream>#include <fstream>#include <ctype.h> #include <string.h> using namespace std;/全局数据,对象 double APSalary; double CSalary; int ID; /员工工号 class Employee /员工类 protected: int No; /编号 char Name20; /姓名char Sex10; /性别int Duty; /职位 double Earning; /收入 Employee *next; public: Employee(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:public Employee /技术员类 private: double Workload; /上个月完成工作量 public: Technician(char ID,char *Name,int Duty,double Workload):Employee(ID,Name,Duty) this->Workload=Workload; double GetWorkload() return Workload; void SetWorkload(double Amount) this->Workload=Amount; void CalcSalary() Earning=Workload*100; void Output() CalcSalary(); cout<<No<<"t"<<Name<<"t技术员t"<<"tt"<<Earning<<endl; ; class Salesman:public Employee /销售员类 private: double Workload; /上个月完成工作量 public: Salesman(char ID,char *Name,int Duty,double Workload):Employee(ID,Name,Duty) this->Workload=Workload; double GetWorkload() return Workload; void SetWorkload(double Amount) this->Workload=Amount; void CalcSalary() Earning=Workload*0.04; void Output() CalcSalary(); cout<<No<<"t"<<Name<<"t销售员t"<<"tt"<<Earning<<endl; ; class Salesmanager:public Employee /销售经理类 private: double Workload;public: Salesmanager(char ID,char *Name,int Duty):Employee(ID,Name,Duty) this->Workload=Workload; double GetWorkload() return Workload; void SetWorkload(double Amount) this->Workload=Amount; void CalcSalary() Earning=APSalary+Workload*0.005; void Output() CalcSalary(); cout<<No<<"t"<<Name<<"t销售经理tt"<<Earning<<endl; ; class Manager:public Employee /经理类 private: double Workload;/上个月完成工作量 public: Manager(char ID,char *Name,int Duty,double Workload):Employee(ID,Name,Duty) this->Workload=Workload; double GetWorkload() return Workload; void SetWorkload(double Amount) this->Workload=Amount; void CalcSalary() Earning=CSalary;/固定月薪 void Output() CalcSalary(); cout<<No<<"t"<<Name<<"t经理t"<<Earning<<endl; ; class Company /公司类 private: Employee *Worker; /员工表 void Clear(); /清除内存中数据 public: Company() Worker=0; Load(); Company() Employee *p; p=Worker; while(p) p=p->next; delete Worker; Worker=p; Worker=0; void Find(char Name20);/按姓名查找 void Find(int ID);/按编号查找 void Add(); /增加人员 void Delete(); /删除人员 void Modify(); /修改人员 void Query(); /查询人员 void Set(); /基础数据设置 void Save(); /数据存盘(包括基础数据,人员数据) void Load(); /数据装入(包括基础数据,人员数据) ; void Company:Clear() /清除内存中人员数据(内部使用) Employee* p=Worker; while(p) Worker=p->next; delete p; p=Worker; void Company:Find(char Name20) void Company:Add() /增加人员 Employee *p; /新结点指针 int Duty; char Name20;char Sex10; /性别double Workload; cout<<"n* 新增员工 *n" /输入员工信息 cout<<"输入工号:" cin>>ID; cout<<"输入职位(1-技术员 3-经理 4-销售经理 5-销售员):" cin>>Duty; cout<<"输入姓名:" cin>>Name; cout<<"输入性别:" cin>>Sex;if(Duty!=4) cout<<"上个月完成工作量:" cin>>Workload; /创建新员工结点 switch(Duty) case 1:p=new Technician(ID,Name,Duty,Workload); break; case 3:p=new Manager(ID,Name,Duty,Workload); break; case 4:p=new Salesmanager(ID,Name,Duty); break; case 5:p=new Salesman(ID,Name,Duty,Workload); break; p->next=0; /员工结点加入链表 if(Worker) /若已经存在结点 Employee *p2; p2=Worker; while(p2->next) /查找尾结点 p2=p2->next; p2->next=p; /连接 else /若不存在结点(表空) Worker=p; /连接 void Company:Delete() /删除人员 int No; cout<<"n* 删除员工 *n" cout<<"ID:" cin>>No; /查找要删除的结点 Employee *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; delete p1; else /若要删除的结点是后续结点 p2->next=p1->next; delete p1; cout<<"找到并删除n" else /未找到结点 cout<<"未找到!n" void Company:Modify()/修改员工 int No,Duty; char Name20; double Workload; cout<<"n* 修改员工 *n" cout<<"ID:" cin>>No; /查找要修改的结点 Employee *p1,*p2; p1=Worker; while(p1) if(p1->No=No) break; else p2=p1; p1=p1->next; /修改结点 if(p1!=NULL)/若找到结点 p1->Output(); cout<<"调整职位(1-技术员 3-经理 4-销售经理 5-销售员):" cin>>Duty; if(p1->Duty!=Duty) /若职位发生变动 /修改其它数据 cout<<"输入姓名:" cin>>Name; if(Duty!=4) cout<<"上个月完成工作量:" cin>>Workload; /创建新员工结点 Employee *p3; switch(Duty) case 1:p3=new Technician(p1->No,Name,Duty,Workload); break; case 3:p3=new Manager(p1->No,Name,Duty,Workload); break; case 4:p3=new Salesmanager(p1->No,Name,Duty); break; case 5:p3=new Salesman(p1->No,Name,Duty,Workload); break; /员工结点替换到链表 p3->next=p1->next; if(p1=Worker) /若要替换的结点是第一个结点 Worker=p3; else /若要删除的结点是后续结点 p2->next=p3; /删除原来的员工结点 delete p1; else /若职位没有变动 cout<<"输入姓名:" cin>>p1->Name; if(Duty=1) cout<<"上个月完成工作量:" cin>>Workload; (Technician *)p1)->SetWorkload(Workload); else if(Duty=3) cout<<"上个月完成工作量:" cin>>Workload; (Manager *)p1)->SetWorkload(Workload); else if (Duty=5) cout<<"上个月完成工作量:" cin>>Workload; (Salesman *)p1)->SetWorkload(Workload); cout<<"修改成功!n" else /未找到结点 cout<<"未找到!n" void Company:Query()/查询人员 int chet,count(0); cout<<"n* 查询职工信息以及本月销售信息 *n" cout<<"编号"<<"t"<<"姓名"<<"t"<<"职位"<<"ttt"<<"工资(元/月)"<<endl; Employee *p=Worker; double sum2=0; /工资总和 while(p) p->Output(); sum2+=p->Earning; p=p->next; cout<<"本月实发工资总数:"<<sum2<<"元"<<endl; cout<<"请输入你要查询人员的编号:" cin>>chet; Employee *p4=Worker; while(p4) if(p4->No=chet) if(p4->Duty=1) (Technician*)p4)->Output(); count+; break; else if(p4->Duty=3) (Manager*)p4)->Output(); count+; break; else if(p4->Duty=4) (Salesmanager*)p4)->Output(); count+; break; else if(p4->Duty=5) (Salesman*)p4)->Output(); count+; break; else p4=p4->next; if(count=0) cout<<"未找到!"<<endl; void Company:Set() /设置基础数据 cout<<"n* 设置基础数据 *n" cout<<"经理的基本工资"<<CSalary<<"元:" cin>>CSalary; cout<<"销售经理的基本工资"<<APSalary<<"元:" cin>>APSalary; cout<<"员工工号>="<<ID<<":" cin>>ID; void Company:Save() /数据存盘(包括基础数据,人员数据),均采用文本文件 ofstream fEmployee,fBase; char c; cout<<"n保存人员和基础数据,是否继续?Y/N:" cin>>c; if(toupper(c)!='Y')return; /保存人员编号、姓名、职位 fEmployee.open("Employee.txt",ios:out); Employee *p=Worker; while(p) fEmployee<<p->No<<"t"<<p->Name<<"t"<<p->Duty<<"t" if(p->Duty=1) fEmployee<<(Technician*)p)->GetWorkload()<<"t" else if (p->Duty=3) fEmployee<<(Manager*)p)->GetWorkload()<<"t" else if (p->Duty=5) fEmployee<<(Salesman*)p)->GetWorkload()<<"t" fEmployee<<endl; p=p->next; fEmployee.close(); /保存基础数据 fBase.open("base.txt",ios:out); fBase<<"经理的基本工资t"<<CSalary<<endl; fBase<<"销售经理的基本工资t"<<APSalary<<endl; fBase<<"IDt"<<ID<<endl; fEmployee.close(); cout<<"n保存人员和基础数据已经完成.n" void Company:Load() /数据装入(包括基础数据,人员数据) /基础数据装入 ifstream fBase; char buf80; /buf用于保存数据文件中的注释字符串 fBase.open("base.txt",ios:in); fBase>>buf>>CSalary; /经理的基本工资 fBase>>buf>>APSalary; /销售经理的基本工资 fBase>>buf>>ID; /员工工号fBase.close(); /清除内存人员数据 Clear(); /人员数据数据装入 ifstream fEmployee; Employee *p=Worker; int No; char Name20; int Duty; double Workload; fEmployee.open("Employee.txt",ios:in); /读一条记录 fEmployee>>No>>Name>>Duty; if(Duty!=4)fEmployee>>Workload; while(fEmployee.good() /创建员工结点 switch(Duty) case 1:p=new Technician(No,Name,Duty,Workload); break; case 3:p=new Manager(No,Name,Duty,Workload); break; case 4:p=new Salesmanager(No,Name,Duty); break; case 5:p=new Salesman(No,Name,Duty,Workload); break; p->next=0; /员工结点加入链表 if(Worker) /若已经存在结点 Employee *p2; p2=Worker; while(p2->next) /查找尾结点 p2=p2->next; p2->next=p; /连接 else /若不存在结点(表空) Worker=p; /连接 /读下一条记录 fEmployee>>No>>Name>>Duty; if(Duty!=4)fEmployee>>Workload; fEmployee.close(); cout<<"n人员和基础数据已经装入.n" void main() char c; Company a; do cout<<"n* 职工信息管理系统 *n" cout<<"1增加人员n" cout<<"2删除人员n" cout<<"3修改人员n" cout<<"4查询职工信息n" cout<<"5基础数据设置n" cout<<"6数据存盘n" cout<<"7数据装入n" cout<<"8退出t请选择(1-8):" cin>>c; swi

    注意事项

    本文(职工信息管理系统C++版 程序设计说明书.doc)为本站会员(laozhun)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开