面向对象程序设计课程设计报告-正文参考模_第1页
面向对象程序设计课程设计报告-正文参考模_第2页
面向对象程序设计课程设计报告-正文参考模_第3页
面向对象程序设计课程设计报告-正文参考模_第4页
面向对象程序设计课程设计报告-正文参考模_第5页
已阅读5页,还剩12页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、目 录1 前言12 需求分析12.1 任务和要求12.2 运行环境12.3 开发工具13 分析和设计13.1 系统分析及设计思路13.2 主要类图13.3 函数流程图24 具体代码实现25 课程设计总结25.1 程序运行结果或预期运行结果25.2 设计结论2参考文献2致 谢21 前言在日益发展的现代社会,一个高效实用的职工信息管理系统已经是企业必不可少的一个管理工具,它可以使企业在管理方面减少很多时间,本课程设计针对现代社会企业对员工信息的管理而设计, 使员工的管理更加的简捷,更加的方便,界面友好,易于操作。为了设计一个功能强大的职工信息管理系统,我们建立了职工类,用于对职工进行各种操作,将职

2、工的相关数据保存在文本文件中。2 需求分析2.1 任务和要求设计一个职工信息馆管理系统,完成职工信息管理等功能,要求完成以下功能:1.能够实现职工信息录入功能;2.实现删除职工信息的功能;3.实现修改职工信息的功能;4.实现用文本文件保存职工的信息;5.按照职工编号或工资对职工信息排序;6.按照编号查找职工;程序中所涉及C+语言内容包括:C+语言编译预处理过程、函数、数组、类、继承、封装、多态,重载,面向对象程序设计等相关内容。2.2 运行环境(1)WINDOWS2000/XP系统(2)Visual C+ 6.0编译环境或DEV C+ 5.0编译环境2.3 开发工具C+语言3 分析和设计3.1

3、 系统分析及设计思路本系统采用C+编写Win32 Console Application。使用文本文件保存数据。运行程序即可进入欢迎界面,选择操作序号即可进入相应的操作界面,并执行相应的操作。其设计思路步骤可分为:(1)添加职工信息添加员工信息,提供员工信息的添加,在该模块中设计了安全检查机制,即确认是否添加员工的信息,若对员工信息的添加不满意,则可以选择重新输入。还设置有返回主菜单的选项以方便用户。 (2)删除职工信息删除员工信息中设计了对员工人数的检查,如果员工人数NUM的值为0,则返回到主菜单。如果员工人数NUM不为0,则进入删除员工信息的界面。界面包括员工信息列表,和删除选项,方便用户

4、的操作。 (3)修改职工信息根据编号来修改职工的信息,若编号不存在则直接返回界面。(4) 保存职工信息保存员工的信息,即为将当前所有的员工的信息存入到worker.txt中。这里我们采用的是C+的ofstream的写入文件的对象进行控制。(5)显示职工的信息按照职工编号从小到大排序或工资由高到低来排序职工信息。(6)查找职工信息根据编号来查找职工的信息,若编号不存在则直接返回界面。3.2 主要类图Person+Person()+ setPerson(num1: char *, name1:char *,sex1:char *,birth1: char*,tel1:char *,salary1:

5、 char *):void-num:char-name:char-sex:char-birth:char-tel:char-salary:char图3.1 职工类图3.3 函数流程图while添加员工信息息修改员工信息删除员工信息Switch()()主菜单员工信息排序读取数据查询员工信息保存员工信息Main()退出图3.2职工流程图4 具体代码实现#include #include #include #include /字符转浮点 atof()#include using namespace std;FILE *fp;/文件指针,指向worker.txtint NUM=0;/计数员工的个数in

6、t saveCtrl=1;/该变量用于检测数据的 修改后是否保存的情况class Personpublic:Person() /构造函数void setPerson(char *num1,char *name1,char *sex1,char *birth1,char *tel1,char *salary1);/成员数据的修改函数;friend void add();/声明为Person的友元,函数功能为:1. 员工信息输入friend void modify();/声明为Person的友元,函数功能为:2. 员工信息修改friend void dele();/声明为Person的友元,函数功

7、能为:3. 员工信息删除friend void index();/声明为Person的友元,函数功能为:4. 员工信息排序friend void find();/声明为Person的友元,函数功能为:5. 员工信息查找friend void save();/声明为Person的友元,函数功能为:6. 员工信息保存friend void read();private:/声明编号、姓名、出生年月、性别、联系电话、基本工资等成员变量char num15;char name15;char sex5;char birth15;char tel15;char salary15;Person Per100;

8、/声明全局Person对象数组void Person:setPerson(char *num1,char *name1,char *sex1,char *birth1,char *tel1,char *salary1)strcpy(num,num1);strcpy(name,name1);strcpy(sex,sex1);strcpy(birth,birth1);strcpy(tel,tel1);strcpy(salary,salary1);void menu()/主菜单coutnnendl;couttt*endl;couttt* tt 员工管理系统 tt*endl;couttt* - *en

9、dl;couttt* tt1. 员工信息输入 tt*endl;couttt* tt2. 员工信息修改 tt* endl;couttt* tt3. 员工信息删除 tt*endl;couttt* tt4. 员工信息排序 tt*endl;couttt* tt5. 员工信息查找 tt*endl;couttt* tt6. 员工信息保存 tt*endl;couttt* tt0. 退出 ttt*endl;couttt*endl;coutnnt请选择(06):;void add()/1. 员工信息输入char num15;/暂时存放 编号char name15;/暂时存放 姓名char sex5;/暂时存放

10、性别char birth15;/暂时存放 生日char tel15;/暂时存放 电话char salary15;/暂时存放 工资char p;/用于选择判断system(cls);/清屏while(1)/控制信息添加多次的循环coutnn输入员工信息:endl;coutnum;coutendl;coutname; coutendl; coutsex; coutbirth; coutendl; couttel; coutendl; coutsalary; coutendl; for(int i=0;iNUM;i+)/检测所添加员工的编号是否存在if( strcmp(Peri.num,num)=0

11、 )cout该编号的已经存在endl;system(pause);/按任意键继续return;p=0;cout请选择:nt1.确认添加数据nt2.重新输入nt3.返回主菜单p;/控制是否确认添加数据if(p3)cout没有这个选项!n请重新输入:endl;Sleep(1000);continue;if(p=2)/重新输入数据continue;if(p=3)/返回主菜单return;PerNUM.setPerson(num,name,sex,birth,tel,salary);coutnntt添加数据成功!nendl;saveCtrl=0;NUM+;coutp;/返回主菜单if(p=y|p=Y)

12、return;void modify()/2. 员工信息修改system(cls);/清屏if(NUM=0)/判断员工数是否为0,即是否存在员工记录,若无记录,则退出函数coutnnnnnnttt没有任何员工记录。nnnttt即将返回主菜单;Sleep(2000);return;char num15;cout编号t姓名t性别t生日t电话t工资endl;for(int i1=0;i1NUM;i1+)/列出现有的员工的详情,方便修改coutPeri1.numtPtPeri1.sextPeri1.birthtPeri1.teltPeri1.salaryendl;coutnum;in

13、t choice;for(int i=0;iNUM;i+)if( strcmp(Peri.num,num)=0 )dosystem(cls);/清屏cout编号t姓名t性别t生日t电话t工资endl;coutPeri.numtPtPeri.sextPeri.birthtPeri.teltPeri.salaryendl;couttt*endl;couttt* t 员工管理系统 tt*endl;couttt* - *endl;couttt* tt1.修改编号 tt*endl;couttt* tt2.修改姓名 tt* endl;couttt* tt3.修改性别 tt*endl;cou

14、ttt* tt4.修改生日 tt*endl;couttt* tt5.修改电话 tt*endl;couttt* tt6.修改工资 tt*endl;couttt* tt7.返回主菜单 tt*endl;couttt*endl;coutnnt请选择(07):;coutchoice;if(choice7)continue;switch(choice)case 1:coutPeri.num;saveCtrl=0;break;case 2:coutP;saveCtrl=0;break;case 3:coutPeri.sex;saveCtrl=0;break;case 4:coutPeri.b

15、irth;saveCtrl=0;break;case 5:coutPeri.tel;saveCtrl=0;break;case 6:coutPeri.salary;saveCtrl=0;break;case 7:return; while(choice7); void dele()/3. 员工信息删除system(cls);/清屏if(NUM=0)/判断员工数是否为0,即是否存在员工记录,若无记录,则退出函数coutnnnnnnttt没有任何员工记录。nnnttt即将返回主菜单;Sleep(2000);return;cout编号t姓名t性别t生日t电话t工资endl;for(int i1=0;

16、i1NUM;i1+)/列出现有的员工的详情,方便删除if(Peri1.num!=NULL)coutPeri1.numtPtPeri1.sextPeri1.birthtPeri1.teltPeri1.salaryendl; char num15;Person temp;cout请输入要删除的员工的编号num;for(int i=0;iNUM;i+)if( strcmp(Peri.num,num)=0 )temp=Peri;for(int j=i;jNUM-1;j+)Perj=Perj+1;NUM-;break;coutnnnt删除成功!endl;system(pause);/按

17、任意键继续saveCtrl=0;void index()/4. 员工信息排序system(cls);/清屏if(NUM=0)/判断员工数是否为0,即是否存在员工记录,若无记录,则退出函数coutnnnnnnttt没有任何员工记录。nnnttt即将返回主菜单;Sleep(2000);return;Person t;int k=0;int choice;cout请选择:t1.按编号排序ntt2.按工资排序choice;if(choice=1)for(int i=0;iNUM-1;i+)/选择排序法,对员工的编号进行排序k=i;for(int j=i+1;jatof(Perj.num) )k=j;t

18、=Perk;Perk=Peri;Peri=t;coutnnnt按员工的编号排序结果endl;else if(choice=2)for(int i1=0;i1NUM-1;i1+)/选择排序法,对员工的工资进行排序k=i1;for(int j1=i1+1;j1NUM;j1+)if( atof(Perk.salary)atof(Perj1.salary) )k=j1;t=Perk;Perk=Peri1;Peri1=t;coutnnnt按员工的工资排序结果endl;elsecoutnnnnnnttt没有这个选项!nnttt即将返回主菜单!endl;Sleep(2000);return;cout编号t姓

19、名t性别t生日t电话t工资endl;for(int i1=0;i1NUM;i1+)if(Peri1.num!=NULL)coutPeri1.numtPtPeri1.sextPeri1.birthtPeri1.teltPeri1.salaryendl; system(pause);/按任意键继续saveCtrl=0;void find()/5. 员工信息查找system(cls);/清屏if(NUM=0)/判断员工数是否为0,即是否存在员工记录,若无记录,则退出函数coutnnnnnnttt没有任何员工记录。nnnttt即将返回主菜单;Sleep(2000);return;co

20、ut编号t姓名t性别t生日t电话t工资endl;for(int i1=0;i1NUM;i1+)coutPeri1.numtPtPeri1.sextPeri1.birthtPeri1.teltPeri1.salaryendl;char num15;int found=0;/用于检测是否找到该编号员工coutnum;for(int i=0;iNUM;i+)if( strcmp(Peri.num,num)=0 )system(cls);coutnnnt查询结果endl;cout编号t姓名t性别t生日t电话t工资endl;coutPeri.numtPtPeri.sex

21、tPeri.birthtPeri.teltPeri.salaryendl;found=1; if(found=0)/如果未找到该编号员工system(cls);coutnnnnnnttt未找到编号为:num的该员工!nnttt即将返回主菜单!endl;Sleep(2500);return;system(pause);/按任意键继续void save()/6. 员工信息保存system(cls);/清屏ofstream fout;fout.open(E:worker.txt,ios:out);coutnnnnnnttt正在保存,请稍等 endl;Sleep(1000);system(cls);/

22、清屏coutnnnntt数据保存保存成功!nnendl;if(NUM)/判断是否存在员工记录,若无记录,则执行elsecout文件的数据为:endl;for(int i=0;iNUM;i+)/列出现有的员工的详情,方便检测保存是否正确 和 存入文件操作 同时进行cout编号:Peri.numt; cout姓名:Pt; cout性别:Peri.sext; cout生日:Peri.birtht; cout电话:Peri.telt; cout工资:Peri.salaryt; coutendl;foutPeri.numtPtPeri.sextPeri.birthtPer

23、i.teltPeri.salaryendl;elsecoutnntt提示:目前无任何员工的记录!nnendl;fout.close();system(pause);/按任意键继续saveCtrl=1;void read()/读取文件员工信息存放 worker.txtifstream fin_1;int x=0,y=0;fin_1.open(E:worker.txt,ios:in);/打开文件worker.txtchar str100100;char worker620;/用于临时存储数组for(int i=0;i100;i+)/getline()提取worker.txt文件中的数据if(fin

24、_1.getline(stri,100)=NULL)break;NUM+;for(int i1=0;i1NUM;i1+)/以下22行代码用于将getline()获取的数据转存到对象数组Per中x=0,y=0;for(int i2=0;i2strlen(stri1);i2+)if( !isspace(stri1i2)/判断是否为制表位或空格workerxy+=stri1i2;continue;workerxy=0;/给worker添加结束标志,不然会出现烫烫烫的乱码存入worker中if(x5)x+;y=0;workerxy=0;/给worker添加结束标志,不然会出现烫烫烫的乱码存入worke

25、r中strcpy(Peri1.num,(char*)worker0);/转存worker从getline()分离出来的数据strcpy(P,worker1);strcpy(Peri1.sex,worker2);strcpy(Peri1.birth,worker3);strcpy(Peri1.tel,worker4);strcpy(Peri1.salary,worker5);fin_1.close();if(NUM)/如果员工数NUM!=0,则显示编号t姓名t性别t生日t电话t工资cout编号t姓名t性别t生日t电话t工资endl;for(int i2=0;i2NUM;i2+)

26、coutstri2endl;/显示getline()读取的数据coutnnt提示:目前共有 NUM 个员工的记录nnchoice;if(choice7)continue;switch(choice)case 1:add();/1. 员工信息输入 break;case 2:modify();/2. 员工信息修改break;case 3:dele();/3. 员工信息删除break;case 4:index();/4. 员工信息排序break;case 5:find();/5. 员工信息查找break;case 6:save();/6. 员工信息保存break;default:run=0;break;system(cls);/清屏if(saveCtrl=0)coutnnttt你没有对你的操作进行保存,是否保存?endl;coutp;if(p=y | p=Y)save();system(cls);/清屏coutnnnnnntt谢谢使用员工管理系统,再见!endl;Sleep(1000);return 0;5 课程设计总结5.1 程序运行结果或预期运行结果5.2 设计结论通过这次课程设计,我们除了学到了

温馨提示

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

评论

0/150

提交评论