C课程设计报告公司人员信息管理系统

上传人:沈*** 文档编号:141400433 上传时间:2022-08-24 格式:DOC 页数:40 大小:365.05KB
收藏 版权申诉 举报 下载
C课程设计报告公司人员信息管理系统_第1页
第1页 / 共40页
C课程设计报告公司人员信息管理系统_第2页
第2页 / 共40页
C课程设计报告公司人员信息管理系统_第3页
第3页 / 共40页
资源描述:

《C课程设计报告公司人员信息管理系统》由会员分享,可在线阅读,更多相关《C课程设计报告公司人员信息管理系统(40页珍藏版)》请在装配图网上搜索。

1、北华航天工业学院课程设计报告北 华 航 天 工 业 学 院基于C+的面向对象程序设计实例课程设计报告报告题目: 公司人员信息管理系统 作者所在系部: 计算机科学与工程系 作者所在专业: 计算机科学与技术 作者所在班级: B09512 作 者 姓 名 : 指导教师姓名: 完 成 时 间 : 2010年6月 北华航天工业学院教务处制摘 要在当前的市场经济体制下,企业要想提高市场的竞争力,取得好的经济效益,不但要有好的产品和销售服务,还必须加强对公司内部的人员管理,以提高内部人员的凝聚力和积极性、提高工作效率等。本文利用Visual C+6.0编写程序,实现了用户对公司人员的编号、姓名、性别、部门。

2、级别、工资等信息的管理操作。本系统主要有八个功能模块:到添加信息子系统、查询信息子系统、统计子系统、显示子系统、修改子系统、删除子系统、保存子系统和读取子系统。已经过全面的系统测试,能够很好的运行,达到了预期的效果。本系统主要实现了对四类人员的管理:经理管理、销售人员管理、技术人员管理、销售经理管理;主要运用了继承友元等编程方法来实现对这些人员的管理。关键词:系统设计 人员管理 信息 公司目 录第1章 绪 论11.1 课程设计的目的11.2 课程设计的背景和意义11.2.1 课程设计的背景11.2.2 课程设计的意义1第2章 需求分析22.1 问题描述2 2.2 功能描述2 2.3 问题的解决

3、方案3第3章 系统设计43.1 数据设计43.1.1 类设计4 3.1.2 类之间的关系6 3.1.3 函数设计6 3.2 结构设计9 3.2.1 系统流程图9 3.2.2 界面设计12第4章 系统实现14 4.1 类实现14 4.2 函数实现25 4.3 主函数实现30第5章 系统测试325.1 模块测试325.2 课程设计过成中遇到的问题34总结35致谢36参考文献37第1章 绪论1.1 课程设计的目的(1)要求学生能够熟练掌握C+语言的基本知识和技能。(2)基本掌握面向对象程序设计的基本思路和方法。(3)能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。1.2 课程设计的背景

4、和意义1.2.1课程设计的背景1. 理论研究基础(1)C+在C的基础上增加了面向对象的机制。(2)充分运用面向对象机制中的继承性与多态性实现函数的设计。2. 技术层面的支持运用系统为C+面向对象程序设计提供的各种设计方法和VC+系统提供的库函数实现项目的开发。1.2.2 课程设计的意义通过设计此系统,熟练掌握C+语言的基本知识和技能,基本掌握面向对象程序开发的基本思路和方法,培养学生的动手操作能力,提高自主学艺能力,能够利用所学的基本知识和技能,进行简单应用程序设计。 第2章 需求分析2.1 问题描述某公司需要存储雇员的编号、姓名、性别、所在部门,级别,并进行工资的计算。其中,雇员分为经理、技

5、术人员、销售人员和销售经理。四类人员的月薪计算方法如下:经理拿固定月薪;技术人员按小时领取月薪;销售人员按其当月销售额的提成领取工资;销售经理既拿固定月薪也领取销售提成。设计一程序能够对公司人员进行管理,应用到继承、抽象类、虚函数、虚基类、多态和文件的输入/输出等内容。2.2 功能要求(1)基本功能1) 添加功能:程序能够任意添加上述四类人员的记录,可提供选择界面供用户选择所要添加的人员类别,要求员工的编号要唯一,如果添加了重复编号的记录时,则提示数据添加重复并取消添加。2) 查询功能:可根据编号、姓名等信息对已添加的记录进行查询,如果未找到,给出相应的提示信息,如果找到,则显示相应的记录信息

6、;3) 显示功能:可显示当前系统中所有记录,每条记录占据一行。4) 编辑功能:可根据查询结果对相应的记录进行修改,修改时注意编号的唯一性。5)删除功能:主要实现对已添加的人员记录进行删除。如果当前系统中没有相应的人员记录,则提示“记录为空!”并返回操作;否则,输入要删除的人员的编号或姓名,根据所输入的信息删除该人员记录,如果没有找到该人员信息,则提示相应的记录不存。6) 统计功能:能根据多种参数进行人员的统计。例如,统计四类人员数量以及总数,或者统计男、女员工的数量,或者统计平均工资、最高工资、最低工资等信息。7)保存功能:可将当前系统中各类人员记录存入文件中,存入方式任意。8)读取功能:可将

7、保存在文件中的人员信息读入到当前系统中,供用户进行使用。(2)扩展功能在完成以上基本功能的基础上,可自行进行扩展或完善,例如: 1) 添加人员记录时,考虑各种数据的有效性。2)组合查询功能的实现。3)可按人员的某些信息进行排序,例如按工资进行排序等。4)对文件的读写使用二进制信息。2.3 问题的解决方案根据系统功能要求,可以将问题解决分为以下步骤:1)应用系统分析,建立该系统的功能模块框图以及界面的组织和设计;2)分析系统中的各个实体及它们之间的关系; 3)根据问题描述,设计系统的类层次; 4)完成类层次中各个类的描述; 5)完成类中各个成员函数的定义; 6)完成系统的应用模块; 7)功能调试

8、; 8)完成系统总结报告。第3章 系统设计3.1 数据设计3.1.1 类设计设计基类以派生出各个人员类:类名人员类 Person数据成员num name sex department grade wage编号 姓名 性别 部门 级别 工资成员函数获取姓名、获取编号、获取性别的函数 输入输出的虚函数表 3.1继承基类设计经理类:类名 经理类 Manager数据成员继承于Person类成员函数输入输出函数表 3.2根据经理类设计经理管理类: 类名 经理管理类 Man_administ 数据成员ManTMAX、top经历数组 总数 成员函数添加 修改 查询 统计 显示 删除 保存 读取表 3.3设计

9、继承于基类的销售人员类: 类名 销售人员类 Sales 数据成员销售额 提成率和基类成员 成员函数获取销售额、提成率的函数 输入输出函数表 3.4根据销售人员类涉及销售人员管理类: 类名 销售人员管理类 Sal_administ 数据成员SalTMAX top 成员函数添加 修改 查询 统计 显示 删除 保存 读取表 3.5设计继承于基类的技术人员类: 类名 技术人员类 Technicist 数据成员 hour pay2 工作时间(小时) 薪水/小时 成员函数输入输出函数表 3.6根据技术人员类设计技术人员管理类: 类名 技术人员管理类 Tec_administ 数据成员TecTMAX top

10、 成员函数添加 修改 查询 统计 显示 删除 保存 读取表 3.7根据经理类及销售人员类设计销售经理类: 类名 销售经理类 SalesManager 数据成员 pay1 工资 成员函数输入输出函数表 3.8根据销售经理类设计销售经理管理类: 类名 销售经理管理类 SalMan_administ 数据成员SalManTMAX top 成员函数添加 修改 查询 统计 显示 删除 保存 读取表 3.93.1.2 类之间的关系每一个人员类都是其相应人员管理类的友元类,以方便人员管理类对相应人员类的访问;每一个人员管理类也都是基类的友元类,以方便对编号姓名等数据成员的访问。即:Manager类是Man_

11、administ类的友元类;Sales类是Sal_administ的友元类;SalesManager类是SalMan_administ的友元类;Technicist类是Tec_administ的友元类;Person类是Man_administ、Sal_administ、SalMan_administ、Tec_administ类的友元类3.1.3 函数设计 系统设计了五个函数:实现经理菜单、销售人员菜单、技术人员菜单、销售经理菜单的函数和实现主菜单的函数;其中各类人员管理菜单的函数基本相同,在此只给出经理菜单的函数算法如下: void ManMenu() Man_administ m;int c

12、hoice;while(choice!=0)cout n *经理管理* endl;cout+endl;cout| |endl;cout退出 |endl;cout| |endl;cout+endl;coutchoice;switch(choice)case 1:m.Add();break; case 2:m.Search();break; case 3:m.Edit();break; case 4:m.Total();break;case 5:m.Delete();break;case 6:m.Show();break;case 7:m.Save();break; case 8:m.Read()

13、;break;case 0:cout退出成功!endl;break;default:cout无此选项 请重试!endl;break; 实现主菜单的函数算法: int main() cout *欢迎进入公司人员信息管理系统*endl;int choice;docout *主菜单*nendl;coutendl;cout| |endl;cout 经理管理 2 = 销售人员管理 3 = 技术人员管理 4= 销售经理管理 0 = 退出系统 |endl;cout| |endl;coutendl;coutchoice;switch(choice)case 1:ManMenu();break; case 2:

14、SalMenu();break; case 3:TecMenu();break;case 4:SalManMenu();break;case 0:coutn您已安全退出系统.endl;break;default:coutn没有此选项 请重选!endl;break;while(choice!=0); coutn *欢迎您下次再使用本系统!*endl;return 0;3.2 结构设计3.2.1 系统流程图类的关系图:人员类经理类销售人员类技术人员类销售经理类图 3.1添加函数流程图:图 3.2输入信息编号是否存在添加成功 top+添加否是人员管理菜单人员管理菜单查询函数流程图:查询按编号查询按姓

15、名查询输入编号输入姓名是否找到找到了不存在此人是否 图 3.3人员管理菜单 修改函数流程图:修改按姓名查找按编号查找否输入编号输入姓名是否存在找到了败找到了输入修改信息编号是否存在修改失败是是否 图 3.4修改成功人员管理菜单删除函数流程图:删除按编号找按姓名找输入姓名输入编号否是否存在删除失败是找到了确定删除取消确定删除成功图 3.53.2.2 界面设计 系统采用的主菜单图形样式,如图所示: 图 3.6选择相应的人员之后可进入该类人员的管理菜单选项,如图所示: 图 3.7 图 3.8 图 3.9 图 3.9每个菜单的子菜单项如图所示,实现这些界面主要用到了循环等方法。第4章 系统实现4.1

16、类实现定义人员类作为基类,包含各个人员类共有的数据局成员,同时定义输入输出函数为虚函数。class Personprotected: int num; string name; char sex; string department; string grade; float wage;public:Person(int n=0,string nam= ,char s= ,string dep= ,string gra= ,float w=0)num=n;name=nam;sex=s;department=dep;grade=gra;wage=w;int GetNum()return num;s

17、tring GetName()return name;char GetSex()return sex; string GetDepartment()return department; string GetGrade()return grade; float GetWage()return wage; virtual void Input() virtual void Output();定义继承于基类的经理类,主要有输入输出函数。class Manager:virtual public Person public:Manager(int n=0,string nam=xxx,char s=x,

18、string dep=xxx, string gra=xxx,float w=0):Person(n,nam,s,dep,gra,w) friend class Man_administ; virtual void Input()coutnum; coutname; coutsex; while(sex!=f&sex!=m) coutsex; coutdepartment; coutgrade; coutwage; void Output() coutsetw(6)num;coutsetw(14)name; coutsetw(10)sex;coutsetw(15)department; cou

19、tsetw(15)grade;coutsetw(15)=TMAX) cout人员已达上限,添加失败!endl; return; Manager m;coutn输入要添加经理的信息:endl;m.Input(); for(int i=0;itop;i+) if(m.GetNum()=Mani.GetNum()cout该编号已经存在,添加失败!endl;return;Mantop=m;top=top+1;cout添加成功!endl; void Man_administ:Search() if(top=0) coutn当前记录为空!endl;return; coutn查找时:endl; cout _

20、endl; cout| |endl; cout| 1.按编号查询 2.按姓名查询 |endl; cout|_|endl; coutchoice; switch(choice) case 1: int a; couta; for(int i=0;itop;i+)if(Mani.GetNum()=a) coutn找到了:endl; Mani.Output();coutendl;return;cout查无此人!endl;break; case 2: string b; coutb; for(int i=0;itop;i+) if(Mani.GetName()=b) coutn找到了:endl; Ma

21、ni.Output(); coutendl; return; cout查无此人!endl;break; default:cout无此选项 请重试!endl;break;void Man_administ:Edit() if(top=0)coutn当前记录为空!endl;return; coutn修改时:endl; cout _endl; cout| |endl; cout| 1.按编号查询 2.按姓名查询 |endl; cout|_|endl; coutchoice; switch(choice) case 1: int a; couta; for(int i=0;itop;i+)if(Man

22、i.GetNum()=a)coutn找到了:endl; Mani.Output(); coutn输入修改后的信息:endl; m.Input(); for(i=0;itop;i+) if(Mani.GetNum()=m.GetNum() cout修改失败!endl; return; Mani=m; cout修改成功!endl; return;cout查无此人!endl;break; case 2: string b; coutb; for(int i=0;itop;i+) if(Mani.GetName()=b) coutn找到了:endl; Mani.Output(); coutn输入修改后

23、的信息:endl; m.Input(); for(i=0;itop;i+) if(Mani.GetNum()=m.GetNum() cout修改失败!endl; return; Mani=m; cout修改成功!endl; return; cout查无此人!endl;break; default:cout无此选项 请重试!endl;break; void Man_administ:Delete() if(top=0) coutn当前记录为空!endl;return; coutn删除时:endl; cout _endl; cout| |endl; cout| 1.按编号查询 2.按姓名查询 |e

24、ndl; cout|_|endl; coutchoice; switch(choice) case 1: int a,x; couta; for(int i=0;itop;i+)if(Mani.GetNum()=a)coutn找到了:endl; Mani.Output(); coutn确定要删除吗?endl; cout _ endl;cout| |endl;cout| 1.确定 2.取消 |endl;cout|_|endl; coutx;switch(x) case 1:while(i=top-1) Mani=Mani+1; i+; top=top-1; cout删除成功!endl;break

25、; case 2:coutn删除取消!endl; return;break; default:coutn无此选项 请重试!endl;break; return; cout查无此人!endl;break; case 2: string b; int y; coutb; for(int i=0;itop;i+) if(Mani.GetName()=b)coutn找到了:endl; Mani.Output(); coutn确定要删除吗?endl;cout _ endl;cout| |endl;cout| 1.确定 2.取消 |endl;cout|_|endl; couty;switch(y) cas

26、e 1:while(i=top-1) Mani=Mani+1; i+; top=top-1; cout删除成功!endl;break; case 2:coutn删除取消!endl;return;break; default:coutn无此选项 请重试!endl;break; return; cout查无此人!endl;break; default:cout无此选项 请重试!endl;break; void Man_administ:Total() coutn共有经理: top 名!endl; int x=0; int y=0; for(int i=0;itop;i+) if(Mani.GetS

27、ex()=m) x=x+1;if(Mani.GetSex()=f) y=y+1;cout其中男经理有: x 名!endl;cout 女经理有: y 名!endl; void Man_administ:Save() ofstream outfile(d:经理信息.txt,ios:out);if(!outfile)cout保存失败!endl;return;for(int i=0;itop;i+)outfileMani.GetNum() ; outfileMani.GetName() ; outfileMani.GetSex() ; outfileMani.GetDepartment() ; out

28、fileMani.GetGrade() ; outfileMani.GetWage() endl;cout保存成功!endl; outfile.close();void Man_administ:Read() ifstream infile(d:经理信息.txt,ios:in); if(!infile) cout打开失败!Mani.numMani.nameMani.sexMani.departmentMani.gradeMani.wage) i+; top+; cout读取成功!endl; infile.close();void Man_administ:Show() if(top=0) co

29、ut当前记录为空!endl; return; cout *经理信息表*endl; cout+endl; cout|setw(7)编号; coutsetw(13)姓名; coutsetw(12)性别; coutsetw(13)部门; coutsetw(15)级别; coutsetw(15)工资setw(5)|endl; for(int i=0;itop;i+) cout|; Mani.Output(); coutsetw(5)|endl; cout+endl;定义继承于基类的销售人员类,主要包含输入输出函数,具体函数体与经理类类似。class Sales:virtual public Perso

30、n protected: float sum,x; public: Sales(int n=0,string nam= ,char s= ,string dep= ,string gra= , float su=0,float x=0):Person(n,nam,s,dep,gra) sum=su;x=x; float GetSum()return sum; float GetX()return x; friend class Sal_administ; virtual void Input(); void Output();;定义销售人员管理类,主要包含的函数与经理管理类相同,函数体类似。c

31、lass Sal_administ private:Sales SalTMAX; int top; public:Sal_administ()top=0; void Add(); void Show(); void Search(); void Edit(); void Delete(); void Total(); void Save(); void Read(); ;定义继承于基类的技术人员类:class Technicist:public Person private: int hour;float pay2; Technicist(int n=0,string nam= ,char s

32、= ,string dep= ,string gra= int h=0,float p2=0):Person(n,nam,s,dep,gra)hour=h;pay2=p2; friend class Tec_administ; void Input(); void Output();;定义技术人员管理类,与经理管理类相似。class Tec_administ private:Technicist TecTMAX; int top; public:Tec_administ()top=0; void Add(); void Show(); void Search(); void Edit(); v

33、oid Delete(); void Total(); void Save(); void Read(); ;定义继承于经理类和销售人员类的销售经理类。class SalesManager:public Manager,public Sales protected: float pay1;public: SalesManager(int n=0,string nam=xxx,char s=x,string dep=xxx, string gra=xxx,float w=0,float su=0,float x=0,float p=0): Person(n,nam,s,dep,gra),Mana

34、ger(n,nam,s,dep,gra,w), Sales(n,nam,s,dep,gra,su,x)pay1=p; friend class SalMan_administ; void Input(); void Output();;定义销售经理管理类,于各个人员管理类相似。class SalMan_administ private:SalesManager SalManTMAX; int top; public:SalMan_administ()top=0; void Add(); void Show(); void Search(); void Edit(); void Delete()

35、; void Total(); void Save(); void Read(); ;4.2 函数实现经理管理菜单函数:void ManMenu() Man_administ m;int choice;while(choice!=0)cout n *经理管理* endl;cout+endl;cout| |endl;cout退出 |endl;cout| |endl;cout+endl;coutchoice;switch(choice)case 1:m.Add();break; case 2:m.Search();break; case 3:m.Edit();break; case 4:m.Total();break;case 5:m.Delete();break;case 6:m.Show();break;case 7:m.Save();break; case 8:m.Read();break;case 0:cout退出成功!endl;break;default:cout无此选项 请重试!endl;break; 销售人员管理菜单函数:void SalMenu() Sal_administ s;int choice;while(choice!=0)cout n *销售人员管理* endl;cout+e

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!