版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、淮阴工学院C+程序设计课程设计报告选题名称: 员工管理 系(院): 计算机工程学院 专 业: 软件工程班 级: 软件1111 姓 名: 周淼 学 号: 1111315217指导教师: 于长辉 学年学期: 2011 2012 学年 第 1 学期2012年 1 月 6 日设计任务书课题名称员工管理设计目的调研并熟悉幻方的基本功能、数据流程与工作规程;学习与幻方相关的参考资料和基于VC+集成环境的编程技术;通过实际编程加深对基础知识的理解,提高实践能力;学习开发资料的收集与整理,学会撰写课程设计报告。实验环境微型电子计算机(PC);安装Windows 2000以上操作系统,Visual C+6.0开
2、发工具。任务要求利用课余时间去图书馆或上网查阅课题相关资料,深入理解课题含义及设计要求,注意材料收集与整理;在第16周末之前完成预设计,并请指导教师审查,通过后方可进行下一步工作;本课题主要实现添加、修改、删除、读出、写入、查找、排序等。结束后,及时提交设计报告(含纸质稿、电子稿),要求格式规范、内容完整、结论正确,正文字数不少于3000字(不含代码)。工作进度计划序号起止日期工 作 内 容1在预设计的基础上,进一步查阅资料,完善设计方案,形成书面材料。2设计总体方案,构建、绘制流程框图,编写代码,上机调试。3测试程序,优化代码,增强功能,撰写设计报告。4提交软件代码、设计报告,参加答辩,根据
3、教师反馈意见,修改、完善设计报告。指导教师(签章): 年 月 日 摘要: 随着经济的快速发展,一个好的员工管理系统在企业及用人单位扮演者重要角色。因此,本次我设计的课题是员工管理系统。为了设计一个功能完善的的员工管理系统,我查阅图书,搜集了许多有关C+方面的资料,学会了switch语句的使用、全局对象数组(Person100)的定义、函数调用机制的实现等诸多技能,并且将一部分课外的知识运用于我的代码,例如:使程序运行稍作停顿(Sleep(1000))。在具体编程时,我没有使用链表结构,而是直接定义了一批全局对象数组,把员工信息通过函数储存在定义的全局对象数组中。也因为这样,使得编译时候错误发生
4、的减少了很多。然而,在初步设计好该系统后,我发现这样的系统只能储存有限数目的员工信息,无法做到员工信息储存的不限量。但是考虑到实际应用,只要定义的全局对象数组达到200个就会足够企业使用。关键词:员工管理;全局对象数组;编程经验目录 TOC o 1-2 h z u HYPERLINK l _Toc3876 1 课题综述 PAGEREF _Toc3876 - 5 - HYPERLINK l _Toc26162 1.1课题来源 PAGEREF _Toc26162 - 5 - HYPERLINK l _Toc25242 1.2 课题意义 PAGEREF _Toc25242 - 5 - HYPERLI
5、NK l _Toc3800 1.3 预期目标 PAGEREF _Toc3800 - 5 - HYPERLINK l _Toc29486 1.4 面对的问题 PAGEREF _Toc29486 - 5 - HYPERLINK l _Toc25255 1.5 需要解决的关键技术 PAGEREF _Toc25255 - 5 - HYPERLINK l _Toc30655 2 总体方案 PAGEREF _Toc30655 - 5 - HYPERLINK l _Toc8988 3 系统设计 PAGEREF _Toc8988 - 5 - HYPERLINK l _Toc24966 3.1.1算法描述 PA
6、GEREF _Toc24966 - 6 - HYPERLINK l _Toc9079 3.1.2 实现方法 PAGEREF _Toc9079 - 6 - HYPERLINK l _Toc27142 3.1.3 详细设计 PAGEREF _Toc27142 - 7 - HYPERLINK l _Toc9579 3.2员工管理系统程序模块设计 PAGEREF _Toc9579 - 8 - HYPERLINK l _Toc26997 4 代码编写 PAGEREF _Toc26997 - 8 - HYPERLINK l _Toc4185 5 程序调试 PAGEREF _Toc4185 - 21 - H
7、YPERLINK l _Toc406 6 问题与解决办法 PAGEREF _Toc406 - 22 - HYPERLINK l _Toc32601 总结 PAGEREF _Toc32601 - 23 - HYPERLINK l _Toc18445 致谢 PAGEREF _Toc18445 - 24 - HYPERLINK l _Toc17571 参考文献 PAGEREF _Toc17571 - 25 -1 课题综述1.1课题来源 现代社会经济发展迅速,不同类型人才在公司企业间的流动十分频繁,传统的纸质员工管理系统已不适合现阶段的实际情况。为此,必须通过设计新的更为便捷、操作简单、不受时空限制的
8、员工管理系统来管理员工信息。否则既浪费时间,又不能适应经济社会发展。1.2 课题意义 设计一款新的员工管理系统,在实现系统添加、删除、查找、修改保存、排序等功能的同时,既锻炼了我实践操作能力,又增加了我对C+语言的熟悉程度,同时还初步了解了公司企业对员工的管理制度、增加了团队协作能力。1.3 预期目标设计一个员工管理系统:定义一组全局对象数组;对部分全局对象数组进行操作;实现数据的输入、输出、查找、修改、删除、排序等。1.4 面对的问题 对VC环境下的系统编制程序不够熟悉,有的功能无法找到合适的代码,对部分临界数据的处理不够精确,代码的注释不能让他人完全理解。1.5 需要解决的关键技术对部分全
9、局对象数组进行操作,不影响其他已储存的数据。同时,要设计相应程序实现把数据储存在系统中,即使从新打开系统也要让数据存在。使用switch()语句实现函数的调用,最终实现系统的协调运作。2 总体方案使用C+语言设计员工管理系统,通过函数调用方式使其能完成对员工的信息管理,对员工信息的任意添加(add())、查询(find ())、删除(dele())、修改(modify())、保存(save())及排序(index())3 系统设计3.1.1算法描述 在主界面上选择相应操作项,通过运用switch语句来判断相应指令,实现对以下功能的选择1:add()添加员工信息2: modify ()修改员工信
10、息3: dele()删除员工信息4:index()排序员工信息5:find()查询员工信息6:save()保存员工信息。并用六个函数来实现各个部分的功能:void add();void find();void dele();void modify();void save()和void index()。在执行完每一次数据操作后,通过判断程序,来判断是否返回等。如返回,则操作同开始,否则执行其他操作。3.1.2 实现方法共同的基类 person 包含如下信息:class Personpublic:Person() /构造函数void setPerson(char *num1,char *name1
11、,char *sex1,char *birth1,char *tel1,char *salary1);/成员数据的修改函数;friend void add();/声明为Person的友元,函数功能为:1. 员工信息输入friend void modify();/声明为Person的友元,函数功能为:2. 员工信息修改friend void dele();/声明为Person的友元,函数功能为:3. 员工信息删除friend void index();/声明为Person的友元,函数功能为:4. 员工信息排序friend void find();/声明为Person的友元,函数功能为:5. 员工
12、信息查找friend void save();/声明为Person的友元,函数功能为:6. 员工信息保存friend void read();private:/声明编号、姓名、出生年月、性别、联系电话、基本工资等成员变量char num15;char name15;char sex5;char birth15;char tel15;char salary15;在主函数中运用Switch(choice)选择需要的功能:switch(choice)case 1:add();/1. 员工信息输入 break;case 2:modify();/2. 员工信息修改break;case 3:dele();
13、/3. 员工信息删除break;case 4:index();/4. 员工信息排序break;case 5:find();/5. 员工信息查找break;case 6:save();/6. 员工信息保存break;default:run=0;break;3.1.3 详细设计1.员工档案管理系统构建框架1、添加员工信息 2、修改员工信息 3、删除员工信息 4、员工信息排序 5、查找员工信息 6、保存员工信息7、退出管理系统 3.2员工管理系统程序模块设计 模块一:头文件,变量定义,函数的声明 对系统所使用的变量进行定义,对函数进行声明 模块二:员工信息的添加void add()/1. 添加员工信
14、息模块三:员工信息修改void modify()/2. 员工信息修改模块四:员工信息删除 void dele()/3. 员工信息删除模块五:员工信息排序void index()/4. 员工信息排序模块六:员工信息查找 void find()/5. 员工信息查找模块七:员工信息保存 void save()/6. 员工信息保存4 代码编写#include#include #include #include#include#include /字符转浮点 atof()using namespace std;int NUM=0;/计数员工的个数int saveCtrl=1;/该变量用于检测数据的 修改后
15、是否保存的情况class Personpublic:Person() /构造函数void setPerson(char *num1,char *name1,char *sex1,char *birth1,char *tel1,char *salary1);/成员数据的修改函数;friend void add();/1. 员工信息输入friend void modify();/2. 员工信息修改friend void dele();/3. 员工信息删除friend void index();/4. 员工信息排序friend void find();/5. 员工信息查找friend void sa
16、ve();/6. 员工信息保存private:/声明编号、姓名、出生年月、性别、联系电话、基本工资等成员变量char num15;char name15;char sex5;char birth15;char tel15;char salary15;Person Per500;/声明全局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)
17、;strcpy(birth,birth1);strcpy(tel,tel1);strcpy(salary,salary1);void menu()/主菜单coutsetw(45)员工管理系统 endl;coutendl;coutendl;coutsetw(45)1. 员工信息添加 endl;coutsetw(45)2. 员工信息修改 endl;coutsetw(45)3. 员工信息删除 endl;coutsetw(45)4. 员工信息排序 endl;coutsetw(45)5. 员工信息查找 endl;coutsetw(45)6. 员工信息保存 endl;coutsetw(37)0. 退出 e
18、ndl;cout请选择(06):;coutsetiosflags(ios:left)请输入选择项(06):endl;void add()/1. 添加员工信息char num15;/编号char name15;/姓名char sex5;/性别char birth15;/生日char tel15;/电话char salary15;/工资char p;/用于选择判断system(cls);/清屏while(1)/控制信息添加多次的循环cout输入员工信息:endl;cout编号 姓名 性别 生日 电话 工资 num;cinnamesexbirthtelsalary;for(int i=0;iNUM;
19、i+)/检测所添加员工的编号是否存在if( strcmp(Peri.num,num)=0 )cout该编号的已经存在endl;system(pause);/按任意键继续return;p=0;cout请选择:t1.确认添加数据t2.重新输入t3.返回主菜单p;/控制是否确认添加数据if(p3)cout没有这个选项!n 请重新输入:endl;continue;if(p=2)/重新输入数据continue;if(p=3)/返回主菜单return;PerNUM.setPerson(num,name,sex,birth,tel,salary);cout添加数据成功!endl;saveCtrl=0;NUM
20、+;coutp;/返回主菜单if(p=y|p=Y)return;void modify()/2. 员工信息修改system(cls);/清屏if(NUM=0)/判断员工数是否为0,即是否存在员工记录,若无记录,则退出函数cout没有任何员工记录。即将返回主菜单;Sleep(1000);return;char num15;cout编号 姓名 性别 生日 电话 工资 endl;for(int i1=0;i1NUM;i1+)/列出现有的员工的详情,方便修改coutPeri1.numtPtPeri1.sextPeri1.birthtPeri1.teltPeri1.salaryendl
21、;coutnum;int choice;for(int i=0;iNUM;i+)if( strcmp(Peri.num,num)=0 )dosystem(cls);/清屏cout编号 姓名 性别 生日 电话 工资 endl;coutPeri.numtPtPeri.sextPeri.birthtPeri.teltPeri.salaryendl;coutsetw(45) 员工管理系统 endl;coutsetw(45) 1.修改编号 endl;coutsetw(45) 2.修改姓名 endl;coutsetw(45) 3.修改性别 endl;coutsetw(45) 4.修改生日
22、endl;coutsetw(45) 5.修改电话 endl;coutsetw(45) 6.修改工资 endl;coutsetw(45) 7.返回主菜单 endl;cout请选择(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.birth;saveCtrl=0;break;case 5:cou
23、tPeri.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,即是否存在员工记录,若无记录,则退出函数cout没有任何员工记录。即将返回主菜单endl;Sleep(1000);return;cout编号 姓名 性别 生日 电话 工资endl;for(int i1=0;i1NUM;i1+)/列出现有的员工的详情,方便删除if(Peri1.num!=NUL
24、L)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;cout删除成功!endl;system(pause);/按任意键继续saveCtrl=0;void index()/4. 员工信息排序system(cl
25、s);/清屏if(NUM=0)/判断员工数是否为0,即是否存在员工记录,若无记录,则退出函数cout没有任何员工记录。endl;cout即将返回主菜单endl;Sleep(1000);return;Person t;int k=0;int choice;cout请选择:t1.按编号排序t2.按工资排序choice;if(choice=1)for(int i=0;iNUM-1;i+)/选择排序法,对员工的编号进行排序k=i;for(int j=i+1;jatof(Perj.num) )k=j;t=Perk;Perk=Peri;Peri=t;cout按员工的编号排序结果endl;else if(c
26、hoice=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;cout按员工的工资排序结果endl;elsecout没有这个选项! 即将返回主菜单!endl;Sleep(1000);return;cout编号 姓名 性别 生日 电话 工资 endl;for(int i1=0;i1NUM;i1+)if(Peri1.num!=NULL)coutPeri1.n
27、umtPtPeri1.sextPeri1.birthtPeri1.teltPeri1.salaryendl; system(pause);/按任意键继续saveCtrl=0;void find()/5. 员工信息查找system(cls);/清屏if(NUM=0)/判断员工数是否为0,即是否存在员工记录,若无记录,则退出函数cout没有任何员工记录。即将返回主菜单endl;Sleep(2000);return;cout编号 姓名 性别 生日 电话 工资 endl;for(int i1=0;i1NUM;i1+)coutPeri1.numtPtPeri1.sex
28、tPeri1.birthtPeri1.teltPeri1.salaryendl;char num15;int found=0;/用于检测是否找到该编号员工coutnum;for(int i=0;iNUM;i+)if( strcmp(Peri.num,num)=0 )system(cls);cout查询结果endl;cout编号 姓名 性别 生日 电话 工资 endl;coutPeri.numtPtPeri.sextPeri.birthtPeri.teltPeri.salaryendl;found=1; if(found=0)/如果未找到该编号员工system(cls);cout
29、未找到编号为:num的该员工!即将返回主菜单!endl;Sleep(1000);return;system(pause);/按任意键继续void save()/6. 员工信息保存system(cls);/清屏ofstream fout;fout.open(E:worker.txt,ios:out);cout正在保存,请稍等 endl;Sleep(1000);system(cls);/清屏cout数据保存保存成功!endl;if(NUM)/判断是否存在员工记录,若无记录,则执行elsecout文件的数据为:endl;cout编号 姓名 性别 生日 电话 工资 endl;for(int i=0;i
30、NUM;i+)/列出现有的员工的详情,方便检测保存是否正确 和 存入文件操作 同时进行coutPeri.numtPtPeri.sextPeri.birthtPeri.teltPeri.salaryendl;foutPeri.numtPtPeri.sextPeri.birthtPeri.teltPeri.salaryendl;elsecout提示:目前无任何员工的记录!choice;if(choice7)continue;switch(choice)case 1:add();/1. 员工信息输入 break;case 2:modify();/2. 员工信息修改br
31、eak;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)cout你没有对你的操作进行保存,是否保存?endl;coutp;if(p=y | p=Y)save();system(cls);/清屏cout谢谢使用t员工管理系统t再见!endl;return 0; 5 程序调试 6 问题与解决办法1、调试过程中遇
32、到的主要问题及解决方法: 在编译过程中执行了部分代码,经常发生系统崩溃的现象。通过询问老师和小组成员,我找到了其原因。那就是我调用了系统内未被定义的位置的全局对象数组。一维没有定义,自然在执行时发生错误。后来我在定义全局对象数组时,从分考虑到这一点,一开始便定义较多的全局标量数组,所以再后来的程序执行过程中很少发生系统崩溃的事。除了上面的问题,还有一个典型的问题也困惑了我很久。那就是每次调用函数后,屏幕上都现实的密密麻麻,很难一眼看出光标在哪里闪烁。为此,我专门跑去图书馆查阅资料。甚至有天晚上差点被图书馆的管理人员锁在馆内。但是,功夫不负有心人,终于让我在一本有关C+实验的书本中找到了清屏的代
33、码(system(cls)),回头使用了这段代码,屏幕变的清爽又美观了。2、对设计和编码的回顾讨论和分析:按照该程序的内容、任务及要求,定义一个全局对象数组,操作类实现如下功能:显示菜单,操作对象。通过类的组合实现程序所要求的功能,并用文件存储数据,用中的文件处理函数。总结这次的C+课程设计,最然经历的时间不是很久,但是所涉及的知识却是十分广泛的。本次的课程设计,我设计的是员工管理系统,我相信我的作品会在完善之后得到推广和使用。首先,我的这个系统能够实现随时随地的对员工信息的添加、修改、删除、查找、排序保存等。这些功能完全满足普通企业对员工信息的管理。说道最让我难忘的,要属代码的编写了。在以前我编写代码都是在屏幕上按照从上到下顺序写的,中间不会返回补充或修改,但是在这次的课程设计中我发现这种编写方式一来容易出错,二来很难找到思路,尤其是在函数调用机制实现这一块,如果不按照先总体后详细的思路去写,根本写不了代码。因此,我在本次课程设计中,首先制定了总体框架,列出了主函数中所包含的内容及索要调用的函数。然后在这个框架下,完善了每一个调用函数中的详细信息,最终通过细心组合,很轻松的组合形成了可供执行的系统。当我初步设计好员工管理系统后,我发现我的管理项目里面没有薪水这一项,而这一项为员工不可或缺的信息,为此,我专门从头又把代码修改一遍。但是修改后,系统又不
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年自贡客运资格证试题完整版
- 吉首大学《期货与期权》2021-2022学年第一学期期末试卷
- 吉首大学《非参数统计》2021-2022学年第一学期期末试卷
- 吉林艺术学院《造型基础训练III》2021-2022学年第一学期期末试卷
- 吉林艺术学院《数字化建筑环境设计软件基础SketchUP》2021-2022学年第一学期期末试卷
- 期刊经营转让协议书范文模板
- 吉林师范大学《中国画技法研究》2021-2022学年第一学期期末试卷
- 吉林师范大学《虚拟现实设计与制作》2021-2022学年第一学期期末试卷
- 2024年大棚蔬菜分包协议书模板
- 2024年大葱采购协议书模板
- 2024年国家公务员考试《行测》真题卷(副省级)答案及解析
- 教育局职业院校教师培训实施方案
- 2024年新华社招聘应届毕业生及留学回国人员129人历年高频难、易错点500题模拟试题附带答案详解
- 江苏省南京市秦淮区2023-2024学年八年级上学期期中语文试题及答案
- 2024年个人车位租赁合同参考范文(三篇)
- (完整版)新概念英语第一册单词表(打印版)
- 签申工作准假证明中英文模板
- 员工履历表(标准样本)
- 2024年山东省济南市中考数学真题(含答案)
- 山东省青岛市黄岛区2023-2024学年六年级上学期期中语文试卷
- 二手门市销售合同范本
评论
0/150
提交评论