收藏 分销(赏)

公司管理系统C的面向对象程序设计实例.doc

上传人:人****来 文档编号:4129267 上传时间:2024-07-31 格式:DOC 页数:12 大小:79.50KB
下载 相关 举报
公司管理系统C的面向对象程序设计实例.doc_第1页
第1页 / 共12页
公司管理系统C的面向对象程序设计实例.doc_第2页
第2页 / 共12页
公司管理系统C的面向对象程序设计实例.doc_第3页
第3页 / 共12页
公司管理系统C的面向对象程序设计实例.doc_第4页
第4页 / 共12页
公司管理系统C的面向对象程序设计实例.doc_第5页
第5页 / 共12页
点击查看更多>>
资源描述

1、基于C+的面向对象程序设计实例 公司人员信息管理系统1、问题描述某公司需要存储雇员的编号、姓名、性别、所在部门,级别,并进行工资的计算。其中,雇员分为经理、技术人员、销售人员和销售经理。四类人员的月薪计算方法如下:经理拿固定月薪;技术人员按小时领取月薪;销售人员按其当月销售额的提成领取工资;销售经理既拿固定月薪也领取销售提成。设计一程序能够对公司人员进行管理,应用到继承、抽象类、虚函数、虚基类、多态和文件的输入/输出等内容。2、功能要求(1)基本功能1) 添加功能:程序能够任意添加上述四类人员的记录,可提供选择界面供用户选择所要添加的人员类别,要求员工的编号要唯一,如果添加了重复编号的记录时,

2、则提示数据添加重复并取消添加。2) 查询功能:可根据编号、姓名等信息对已添加的记录进行查询,如果未找到,给出相应的提示信息,如果找到,则显示相应的记录信息;3) 显示功能:可显示当前系统中所有记录,每条记录占据一行。4) 编辑功能:可根据查询结果对相应的记录进行修改,修改时注意编号的唯一性。5)删除功能:主要实现对已添加的人员记录进行删除。如果当前系统中没有相应的人员记录,则提示“记录为空!”并返回操作;否则,输入要删除的人员的编号或姓名,根据所输入的信息删除该人员记录,如果没有找到该人员信息,则提示相应的记录不存。6) 统计功能:能根据多种参数进行人员的统计。例如,统计四类人员数量以及总数,

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

4、的关系; 3)根据问题描述,设计系统的类层次; 4)完成类层次中各个类的描述; 5)完成类中各个成员函数的定义; 6)完成系统的应用模块; 7)功能调试; 8)完成系统总结报告。程序代码:#include#include#include #include const tmax=20;using namespace std;class Personprotected:int num;string name;string position;char sex;int level;public: Person(int n=0,string nam= ,char s=f,string p= ,int l

5、=0) num=n;name=nam;sex=s;position=p;level=l;int getnum()return num;string getname()return name; virtual void input()coutnum;coutname;coutsex;coutposition;coutlevel;virtual void output() cout编号:setw(1)num;cout 姓名: setw(5)name;cout 性别: setw(1)sex; cout 所在部门:setw(4)position; cout 级别: setw(2)level级;clas

6、s Technologist:virtual public Personprotected: int hour;public:Technologist(int n=0,string nam= ,char s=f,string p= ,int l=0,int h=0):Person(n,nam,s,p,l)hour=h;void input()cout请输入技术人员的信息:endl;Person:input();couthour;void output()Person:output();cout 工资: setw(4)hour*200=tmax) cout空间已满,不能添加!endl;retur

7、n;Technologist te;cout请输入添加人员信息:endl;te.input();ttop=te;for(int i=0;itop;i+)if(te.getnum()=ti.getnum()cout该编号已存在,添加失败!endl;return ;cout添加成功!endl;coutendl;top+;void Technologist_mana:show()if(top=0)cout没有信息!endl;return;for(int i=0;itop;i+)ti.output();coutendl;void Technologist_mana:search_num() int y

8、1; couty1; for(int i=0;itop;i+) if(ti.getnum()=y1)coutoooooooooooo找到这个技术人员了,其信息为:ooooooendl; ti.output(); return; cout该技术人员不存在!endl;void Technologist_mana:search_name()string s1;couts1; for(int i=0;itop;i+) if(ti.getname()=s1) coutoooooooooooo找到这个技术人员了,其信息为:ooooooendl; ti.output(); return; cout该技术人员

9、不存在!endl;void Technologist_mana:search()if(top=0)cout没有技术人员信息!endl;return ;int choice;docout ooooo查找oooooendl;cout| |endl;cout| 1 : 按编号 2 :按姓名 0 :退出 |endl;cout| |endl;coutooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooendl;coutchoice;switch(choice) case 1:search_num();break;case 2:searc

10、h_name();break;case 0:cout您已安全退出.endl;break;default:cout没有此选项,请重选.endl;break;while(choice!=0);void Technologist_mana:edit_num() int x1; coutx1; for(int i=0;itop;i+) if(ti.getnum()=x1) ti.output();coutendl;cout请重新输入技术人员信息:;ti.input();cout修改成功!endl;ti.output(); return; cout该技术人员不存在!endl;void Technolog

11、ist_mana:edit_name()string h1;couth1; for(int i=0;itop;i+) if(ti.getname()=h1)ti.output();coutendl;cout请重新输入技术人员信息:;ti.input();cout修改成功!endl;ti.output(); return ; cout该经理不存在!endl;void Technologist_mana:edit()if (top=0) cout没有技术人员信息!endl;return;int choice;docout ooooo编辑oooooendl;cout| |endl;cout| 1 :

12、 按编号 2 : 按姓名 0 :退出 |endl;cout| |endl;coutooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooendl;coutchoice;switch(choice)case 1:edit_num();break;case 2:edit_name();break;case 0:cout您已安全退出.endl;break;default:cout没有此选项,请重选.endl;break;while(choice!=0);void Technologist_mana: Delete_num() char

13、 c1;int f1;coutf1;for(int i=0;i=top) cout无此技术人员!; return ; coutc1;if(c1=y|c1=Y)for(int k=i;ktop-1;k+)tk=tk+1;cout删除成功!endl;top-;return ;elsecout没有删除该技术人员!endl;void Technologist_mana: Delete_name() char c3;string r;coutr;for(int i=0;i=top) cout无此技术人员!; return ; coutc3;if(c3=y|c3=Y)for(int k=i;ktop-1;

14、k+)tk=tk+1;cout删除成功!endl;top-;return ;elsecout没有删除该技术人员!endl;void Technologist_mana: Delete()if (top=0) cout没有技术人员信息!endl;return;int choice;docout ooooo删除oooooendl;cout| |endl;cout| 1 : 按编号 2 : 按姓名 0 :退出 |endl;cout| |endl;coutooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooendl;coutchoic

15、e;switch(choice)case 1:Delete_num();break;case 2:Delete_name();break;case 0:cout您已安全退出.endl;break;default:cout没有此选项,请重选.endl;break;while(choice!=0);void Technologist_mana:total()cout技术人员总人数为:top 人endl;void Technologist_mana:save()ofstream out(h:技术人员管理.txt,ios:out|ios:binary);if (!out)cerr 打开失败!endl;

16、return;for (int i=0;itop;i+)out.write(char*)&ti,sizeof(ti);cout保存成功!endl;coutendl;out.close();void Technologist_mana:read()ifstream in(h:技术人员管理.txt,ios:in|ios:binary);if (!in)cerr打开失败!endl;return ;int i=0; while(in.read(char*)&ti,sizeof(ti)i+;cout读取成功!endl;in.close();void TechnologistMenu()Technolog

17、ist_mana tee;int choice;while(choice!=0)cout ooooo技术人员ooooo endl;coutoooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooendl;cout| |endl;cout| 1.添加 2.查找 3.修改 4.统计 5.删除 6.显示 7.保存 8.读取 0.返回 |endl;cout| |endl;coutoooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo

18、oooooooooendl;coutchoice; switch(choice)case 1:tee.add();break;case 2:tee.search();break;case 3:tee.edit();break;case 4:tee.total();break;case 5:tee.Delete();break;case 6:tee.show();break;case 7:tee.save();break; case 8:tee.read();break;case 0:cout退出成功!endl;break;default:cout无此选项,请重试!endl;break;int

19、main()cout ooo 欢迎进入公司管理系统 oooendl;int choice;docout oooooo主菜单ooooooendl;coutoooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooendl;cout| |endl;cout| 2:技术人员管理 0:退出系统 |endl;cout| |endl;coutoooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooendl;coutchoice;switch(choice)/case 1:ManagerMenu();break;case 2:TechnologistMenu();break;/case 3:SalemanMenu();break;/case 4:SellmanagerMenu();break;case 0:cout您已安全退出系统.endl;break;default:cout没有此选项,请重选;endl;break;while(choice!=0);cout ooooo欢迎您使用本系统!oooooendl;return 0;

展开阅读全文
部分上传会员的收益排行 01、路***(¥15400+),02、曲****(¥15300+),
03、wei****016(¥13200+),04、大***流(¥12600+),
05、Fis****915(¥4200+),06、h****i(¥4100+),
07、Q**(¥3400+),08、自******点(¥2400+),
09、h*****x(¥1400+),10、c****e(¥1100+),
11、be*****ha(¥800+),12、13********8(¥800+)。
相似文档                                   自信AI助手自信AI助手
百度文库年卡

猜你喜欢                                   自信AI导航自信AI导航
搜索标签

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

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

关于我们      便捷服务       自信AI       AI导航        获赠5币

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

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

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

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服