




已阅读5页,还剩16页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
齐齐哈尔大学C+程序设计课程设计用纸C+程序设计课程设计说明书职工管理系统指导教师:张银霞设 计 者: 许厅 范秋城 崔永雷专业班级:自动化091设计时间:2010年10月-11月C+程序设计课程设计任务书专业班级:自动化091设计题目:职工信息管理系统一、已知技术参数或设计前提1、该系统目前能容下50名员工信息。2、每个职工的信息包括:员工编号,姓名,性别,年龄,婚姻情况,学历,所在部门,所在职务,工作时长,额定工资。3、员工编号是唯一的。二、设计内容及要求1、实现职工信息的数据录入。2、能够根据职工的编号,实现对该职工信息的修改。3、实现按职工的编号,所在部门,学历,年龄进行职工信息的查询。4、实现按职工编号删除指定的职工信息。5、能够以列表方式输出所有职工信息。6、实现按照需求扩充系统员工数的容量。7、通过文件存储职工信息。8、实现按照年龄段、部门、年龄等输出职工信息。9、用类实现以上功能。三、课程设计工作计划1、了解课程设计大纲的要求,确定题目,成立设计小组。(10月1310月16)2、上网查阅资料,确定程序所包含的内容,进行问题分析,制定方案。(10月1710月25)3、确定成员分工,根据方案编写程序并进行调试(10月2510月30)4、撰写设计说明书,完成设计(11月111月10)5、对说明书及程序中存在的不足进行修改。(11月1011月19)6、提交设计内容,答辩(11月2011月25)四、相关教材及参考书目1 陈文宇,张松梅编著.C+语言教程.电子科技大学出版社,20042 张耀仁著,彻底研究.C+程序设计.中国铁道出版社,20063 Cay Horstmann著.C+核心思想.电子工业大学出版社,20044 谭正浩著.C+面向对象程序设计.清华大学出版社,20065 (美)埃尔克著.C+编程思想.机械工业出版社,2005指导教师签字: 系主任 签字: 2010年 月 日 职工管理系统一、需求分析步入21世纪的中国经济越来越发达,务工人员越来越多,这就直接导致对员工的管理越来越难,本程序的设计是为了帮组工厂、公司的人员进行智能化的管理。随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。管理信息系统是一个不断发展的新型学科,任何一个单位要生存要发展,要高效率地把内部活动有机地组织起来,就必须建立与自身特点相适应的管理信息系统。二、系统的软硬件环境1、硬件环境 CPU 2.0GHz 内存 2GB 硬盘 320GB2、软件环境 Windows XP visual C+ 6.0三、系统功能模块如图1所示,职工管理系统共有五个功能模块,录入职工信息功能模块、查询职工信息功能模块、删除职工信息功能模块、显示功能模块、删除职工信息模块和修改职工信息功能模块。其中查询信息模块有分按职工所在部门查询、按职工学历查询、按职工年龄查询和、职工编号查询和输出全体员工信息。职工管理系统删除信息录入信息查询信息修改信息显示信息全体信息部门查询学历查询年龄查询编号查询图1 系统功能模块图四、程序设计分析1 、类结构(1)、职工类Employee 该类的对象是公司里的每一个员工,是该系统当中最主要的数据。数据成员:姓名(EnameN) 、职工编号(EnumN)、性别(EsexN)、年龄(EageN)、婚姻状况(EmarriageN)、学历(EdegreeN)、工作部门(EdepartN)、职工职位(EpositionN)、工时(EtimeN)、工薪(EpayN)。成员函数:void NewInfo();新信息录入函数(采集职工信息),其中运用了while语句来判断输入数据的合法性。void ShowInfo();信息显示函数(显示所有职工的信息或按要求显示职工信息),其中运用了switch语句if语句和for循环语句来实现。void RefreshInfo();修改员工信息的函数(修改职工信息),其中运用了for循环语句,if判断语句和while语句来实现的。voidDeleteInfo();删除员工数据的函数(删除职工信息),其中运用了for循环语句先查找到要删除的职工信息,再运用if判断语句对查找到的职工信息进行处理。(2)、职工数据类DBOperate 该类的对象为系统数据文件,完成对员工信息的保存和读取。数据成员:姓名(EnameN)、职工编号(EnumN)、性别(EsexN)、年龄(EageN)、婚姻状况(EmarriageN)、学历(EdegreeN)、工作部(EdepartN)、职工职位(EpositionN)、工时、工薪(EpayN)。成员函数:void WriteIn(int iflag); 数据写入函数,其中运用了for循环语句来实现。void ReadOut();数据读出函数,其中运用了for循环语句来实现。2 、模块设计分析(1)、主函数:创建职工类对象e和职工数据类对象dbo。(2)、录入职工数据:对职工的信息进行采集,调用void NewInfo();函数采集职工信息 ,然后将数据存入职工数据类(DBOperate)的对象dbo中,其中运用到了while语句来判断输入数据的合法性。(3)、查询职工数据:调用职工数据类(DBOperate)的成员函数(void ReadOut();)打开一个名为Employee的txt的文本文档,然后调用职工类(Employee)的成员函数(void ShowInfo();)进行查找或者显示全部职工信息,其中运用了for循环语句查找所需职工的信息。(4)、修改职工数据调用职工类(Employee)的成员函数(void RefreshInfo()),输入职工的编号进行查找,然后进行修改,其中运用了for循环语句来查找所要修改的职工信息。 (5)、删除职工数据:调用职工类(Employee)的成员函数(void DeleteInfo()),输入职工的编号删除,其中运用了for循环语句来查找所要修改的职工信息。 五、使用说明1、系统的启动首先,置入光盘,打开光盘,双击“职工管理系统.exe”文件,出现职工管理系统主界面,如图2所示,出现系统主界面图,说明启动成功。图2 职工管理系统主界面图2、录入功能根据提示分别录入职工的姓名、年龄、学历、性别、所在部门、工作时长、婚姻状况等信息,如图3所示的界面图。图3 录入功能界面图3、查询和统计功能输入数字“1”就会显示全部职工的信息;输入数字“2”就会出现提示“请输入要查询的职工所在的部门编号”然后输入部门编号就会显示该部门所有职工的信息;输入数字“3”就会出现提示“请输入要查询的职工的学历的编号”然后输入每个学历所对应的编号就会显示拥有该学历的所有的职工的信息;输入数字“4”就会提示“请输入要查询的年龄范围”然后输入要查询的范围就会显示该年龄段的所有的职工的信息;输入数字“4”就会出现提示“请输入要查询的职工的编号”然后输入编号就会出现该职工的信息,如图4所示。图4 查询和统计功能界面图4、修改功能输入要修改的职工的编号,就可以开始修改该职工的信息,修改完后会显示修改成功。如图5所示。图5 修改功能界面图5、删除职工信息功能模块如图6所示,输入职工的编号,就会提示是否删除该职工的信息,如果要删除就输入Y,如不需要删除就输入N,删除后就会提示删除成功。图6 删除功能界面图六、结束语经过几天艰辛的努力和不懈的奋斗我们这个小组终于把这个程序调试出来了,由于我们的基础知识不够好所以在编译和调试的过程中我们遇到了很多的问题,但是我们从来没有想过放弃,我们彼此鼓励,去图书馆查阅资料,去询问老师,然后再编译在调试再修改。这个程序的成功之处在于它的功能齐全,它不但能录入、修改、删除,还在于拥有灵活的查询功能,能通过输入职工号查询、输入所在部门查询、输入学历查询、输入年龄查询等等。通过这次的程序设计我发现了我们小组的成员对指针、字符数组、类和文件操作掌握的不是很好,因此我们这个小组在程序设计的时候对指针的运用很少,这也就成了这个程序最大的不足之处,需要改进。这个程序还有一个不足的地方就是在类的时候那块没有设置私有成员,这样便导致任何函数都能访问类的成员,这个地方同样需要改进。七、参考文献1 陈文宇,张松梅编著.C+语言教程.电子科技大学出版社,20042 张耀仁著.彻底研究C+程序设计.中国铁道出版社,20063 Cay Horstmann著.C+核心思想.电子工业大学出版社,20044 谭正浩著.C+面向对象程序设计.清华大学出版社,20065 (美)埃尔克著.C+编程思想.机械工业出版社,2005八、组员分工许 厅:编写职工类主函数和职工信息查询功能模块,编写职工信息录入功能模块范秋城:编写职工信息修改功能模块崔永雷:编写职工信息删除功能模块九、源程序代码#include #include #include using namespace std; const N=50; / 定义系统可录入的员工最大数值 string EnameN; / 名字long EnumN; /编号char EsexN; /性别int EageN; /年龄char EmarriageN; /婚否int EdepartN; /部门int EpositionN; /职位int Edegree50; /学历int EworktimeN; /工作时float EpayN; /工薪class Employee /定义职工的一个类public: string Employeename; long Employeenum; char Employeesex; int Employeeage; char Employeemarriage; int Employeedepart; int Employeeposition; int Employeedegree; int Employeeworktime; float Employeepay; static long EmployeeMaxNum; /最大职工数static float EmployeeBasePay; /基本工薪void NewInfo(); /新信息输入函数void ShowInfo(); /新信息显示函数void showall(); /void Employee:checkout();void showdepart(int depart); /显示员工的部门所在函数void showdegree(int degree); /显示员工的学历函数void showage(int min,int max); void shownum(long number); void RefreshInfo(); /更新员工信息函数void DeleteInfo(); /删除员工信息函数float Pay(int Employeegrade); static int MaxNum(); ; class DBOperate /类 public: string Employeename; long Employeenum; char Employeesex; int Employeeage; char Employeemarriage; int Employeedepart; int Employeeposition; int Employeedegree; int Employeeworktime; float Employeepay; static long EmployeeMaxNum; static float EmployeeBasePay; void WriteIn(int iflag); /类的输入成员函数void ReadOut(); /输出成员函数void RefreshMaxNum(int iflag); /i=1 or -1 or 0 ; long Employee:EmployeeMaxNum = 1000; float Employee:EmployeeBasePay = 1500; int Employee:MaxNum() /返回系统已经存储的人数 int MN = 0; ifstream myf; myf.open(EmployeeMaxNum.txt); myfMN; myf.close(); return MN; void Employee:NewInfo() /添加新成员函数 coutEmployee:Employeename; cout新员工编号:Employee:Employeenum;coutEmployee:Employeesex; coutEmployee:Employeeage; coutEmployee:Employeemarriage; cout新员工学历,请输入相应学历的序号: endl; coutEmployee:Employeedegree; while(Employee:Employeedegree !=1&Employee:Employeedegree !=2&Employee:Employeedegree !=3&Employee:Employeedegree !=4&Employee:Employeedegree !=5) cout输入有误,请重新输入:endl; coutEmployee:Employeedegree; cout新员工所在部门,请输入相应部门的序号:endl; coutEmployee:Employeedepart; while(Employee:Employeedepart !=1&Employee:Employeedepart !=2&Employee:Employeedepart !=3&Employee:Employeedepart !=4&Employee:Employeedepart!=5) cout输入有误,请重新输入:endl; coutEmployee:Employeedepart; cout新员工职位, 请输入相应职位的序号: endl; coutEmployee:Employeeposition; while(Employee:Employeeposition !=1&Employee:Employeeposition !=2&Employee:Employeeposition !=3&Employee:Employeeposition !=4&Employee:Employeeposition !=5) cout输入有误,请重新输入:endl; coutEmployee:Employeeposition; coutEmployee:Employeeworktime; Employee:Employeepay = Employee:Pay(Employee:Employeeposition); DBOperate dbo; dbo.ReadOut(); int MaxNum = Employee:MaxNum(); EnumMaxNum = Employee:Employeenum; EnameMaxNum = Employee:Employeename; EsexMaxNum = Employee:Employeesex; EageMaxNum = Employee:Employeeage; EmarriageMaxNum = Employee:Employeemarriage; EdegreeMaxNum = Employee:Employeedegree; EdepartMaxNum = Employee:Employeedepart; EpositionMaxNum = Employee:Employeeposition; EworktimeMaxNum = Employee:Employeeworktime; EpayMaxNum = Employee:Employeepay; dbo.WriteIn(1); cout 添加新成员成功!endl; return; void Employee:ShowInfo() /程序主体 数据输出函数 int choice1,choice2,min,max; Employee e; cout 请选择显示方式:endl; cout*endl; cout* 职工信息全输出- 1*endl; cout* 按职工部门输出- 2*endl; cout* 按职工学历输出- 3*endl; cout* 按职工年龄输出- 4*endl; cout*choice1; switch(choice1) case 1: showall();break; case 2: coutchoice2; e.showdepart(choice2);break; case 3:coutchoice2; e.showdegree(choice2);break; case 4: cout请输入要查询的年龄范围: ; coutmin; coutmax; e.showage(min,max);break; default: cout出错啦! endl;break; void Employee:checkout()long searchnum;Employee e;cout*endl; cout* 请输入要查询的员工编号 *endl; cout*searchnum; e.shownum(searchnum); void Employee:showall() /全体员工输出函数 int i; long number; for(i=0;iEmployee:MaxNum();i+) number = Enumi; shownum(number); void Employee:showdepart(int depart) /按员工所在部门输出函数 int i; switch(depart) case 1: coutendl; break; case 2:coutendl; break; case 3: coutendl; break; case 4:coutendl; break; case 5: coutendl;break; default: coutendl; break; for(i=0;iEmployee:MaxNum();i+) if(Edeparti = depart) long number = Enumi; shownum(number); else continue; void Employee:showdegree(int degree) /按员工学历输出函数 int i; switch(degree) case 1:cout初中学历的员工有:endl;break; case 2:cout高中学历的员工有:endl;break; case 3:cout本科学历的员工有:endl;break; case 4:cout硕士学位的员工有:endl;break; case 5:cout博士学位的员工有:endl;break; for(i=0;iEmployee:MaxNum();i+) if(Edegreei = degree) long number = Enumi; shownum(number); else continue; void Employee:showage(int min,int max) /按员工年龄段输出函数 int i; for(i=0;i=min&Eagei=max) long number = Enumi; shownum(number); else continue; void Employee:shownum(long number) /按员工编号输出函数 int i; for(i=0;iEmployee:MaxNum();i+) if(Enumi = number) cout*endl; coutEnumiendl; coutEnameiendl; cout; if(Esexi=F) cout女 endl; else if(Esexi=M) cout男 endl; coutEagei岁endl; cout; if(Emarriagei=Y) cout已婚 endl; else if(Emarriagei=N) cout未婚 endl; cout; switch (Edegreei) case 1:cout初 中 endl;break; case 2:cout高 中 endl;break; case 3:cout本 科 endl;break; case 4:cout硕 士 endl;break; case 5:cout博 士 endl;break; cout; switch (Edeparti) case 1:cout董事会 endl;break; case 2:cout市场部 endl;break; case 3:cout公关部 endl;break; case 4:cout客服中心 endl;break; case 5:cout信息中心 endl;break; cout; switch (Epositioni) case 1:cout临时成员 endl;break; case 2:cout正式员工 endl;break; case 3:cout主任 endl;break; case 4:cout部门经理 endl;break; case 5:cout董事长 endl;break; coutEworktimei小时endl; coutEpayi元endl; cout*endl; else continue; void Employee:RefreshInfo() /修改员工信息的函数 int cNum = 50; DBOperate dbo; dbo.ReadOut(); void Employee:shownum(long number); cout; cincNum; int MN; MN = Employee:MaxNum(); for(int i=0;iMN;i+) /遍历数据文件,查找要修改的员工数据 if(Enumi = cNum) Employee:shownum(cNum); cout请输入该员工的新信息: endl; coutEmployee:Employeename; Enamei = Employee:Employeename; coutEmployee:Employeesex; Esexi = Employee:Employeesex; coutEmployee:Employeeage; Eagei = Employee:Employeeage; coutEmployee:Employeemarriage; Emarriagei = Employee:Employeemarriage; cout新员工学历,请输入相应学历的序号:endl; coutEmployee:Employeedegree; while(Employee:Employeedegree !=1&Employee:Employeedegree !=2&Employee:Employeedegree !=3&Employee:Employeedegree !=4&Employee:Employeedegree !=5) cout输入有误,请重新输入:endl; coutEmployee:Employeedegree; Edegreei = Employee:Employeedegree; cout新员工所在部门,请输入相应部门的序号: endl; coutEmployee:Employeedepart; while(Employee:Employeedepart !=1&Employee:Employeedepart !=2&Employee:Employeedepart !=3&Employee:Employeedepart !=4&Employee:Employeedepart!=5) cout输入有误,请重新输入:endl; coutEmployee:Employeedepart; Edeparti = Employee:Employeedepart; cout新员工职位,请输入相应职位的序号:endl; coutEmployee:Employeeposition; while(Employee:Employeeposition !=1&Employee:Employeeposition !=2&Employee:Employeeposition !=3&Employee:Employeeposition !=4&Employee:Employeeposition !=5) cout输入有误,请重新输入:endl; coutEmployee:Employeeposition; Epositioni = Employee:Employeeposition; coutEmployee:Employeeworktime; Eworktimei = Employee:Employeeworktime; Epayi = Employee:Pay(Employee:Employeeposition); break; dbo.WriteIn(0); void Employee:DeleteInfo() /删除员工数据的函数 char tmp; int cNum = 50; DBOperate dbo; dbo.ReadOut(); cout: ; cincNum; int MN; MN = Employee:MaxNum(); for(int i=0;iMN;i+) /遍历数据文件,查找要删除的员工 if(Enumi = cNum) Employee:shownum(cNum); couttmp; if(tmp=Y|tmp=y) if(i=MN-1) dbo.WriteIn(-1); else for(int j=i;jMN-1;j+) Enumj = Enumj+1; dbo.WriteIn(-1); cout 删除操作成功 ! endl; float Employee:Pay(int Employeeposition) /根据员工职位计算工资的函数 float tmpPay; tmpPay = Employee:EmployeeBasePay + Employee:Employeeposition * Employee:EmployeeBasePay; return tmpPay; void DBOperate:WriteIn(int iflag) /数据操作函数 写入 DBOperate:RefreshMaxNum(iflag); ofstream myf(Employee.txt); Employee e; int MN; MN = e.MaxNum(); for(int i=0;iMN;i+) myfEnuminEnameinEsexinEageinEmarriageinEdegreeinEdepartinEpositioninEworktimeinEpayin; myf.close(); return; void DBOperate:ReadOut() /数据操作函数 读出 ifstream myf(Employee.txt); Employee e; int MN; MN = e.MaxNum(); for(int i=0 ;iDBOperate:EmployeenumDBOperate:EmployeenameDBOperate:EmployeesexDBOperate:EmployeeageDBOperate:Emp
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025黑龙江绥化市安达市任民镇人民政府公益性岗位招聘1人考前自测高频考点模拟试题参考答案详解
- 2025年烟台市教育局所属事业单位卫生类岗位公开招聘工作人员(2人)考前自测高频考点模拟试题及答案详解(典优)
- 2025昆明市盘龙区拓东第二小学招聘(1人)模拟试卷及一套参考答案详解
- 2025福建省市场监督管理局直属事业单位招聘高层次人才20人模拟试卷及答案详解(夺冠)
- 2025年甘肃省民航机场集团校园招聘考前自测高频考点模拟试题及答案详解(夺冠系列)
- 2025河北中兴冀能实业有限公司高校毕业生招聘(第三批)考前自测高频考点模拟试题及答案详解1套
- 2025河南驻马店上蔡县第二高级中学教师招聘25人模拟试卷及答案详解(夺冠系列)
- 2025广东湛江市公安局经济技术开发区分局招聘警务辅助人员10人考前自测高频考点模拟试题附答案详解(考试直接用)
- 2025菏泽曹县教育系统公开招聘初级岗位教师(166人)考前自测高频考点模拟试题含答案详解
- 2025内蒙古民航机场集团有限公司招聘考前自测高频考点模拟试题及一套完整答案详解
- 民法典之遗嘱继承课件
- 粮仓建筑施工管理办法
- 2025秋全体教师大会上,德育副校长讲话:德为根,安为本,心为灯,家为桥-这场开学讲话,句句都是育人的方向
- 急性肺水肿护理
- 2025-2030智慧养老行业竞争格局分析及投资前景与战略规划研究报告
- “十五五”城镇住房发展规划
- 合伙购买墓地协议书
- 医学综述研究进展汇报
- 2025年福建省泉州市中考二模历史试题(原卷版+解析版)
- “活动类”应用文框架+讲义-2025届高三英语二轮复习
- 宜家在物流成本管理上的问题及对策
评论
0/150
提交评论