已阅读5页,还剩29页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
.北 华 航 天 工 业 学 院基于C+的面向对象程序设计实例课程设计报告报告题目: 公司人员管理系统 作者所在系部: 计算机科学与工程系 作者所在专业: 计算机科学与技术 作者所在班级: B08513 作 者 姓 名 : 王世丰 指导教师姓名: 斯庆巴拉 完 成 时 间 : 2009年6月20日 北华航天工业学院教务处制摘 要在当前的市场经济体制下,企业要想提高市场的竞争力,不但要有好的产品,同时也要有好的销售服务,就必须拥有一套完善的并且适合自身特点的信息化管理系统,以实现企业降低成本、及时反馈市场信息、完善服务质量、提高经济效益、分析市场需求、制定销售计划和目标等管理目的。本文利用C+面向类与对象的基础编写程序,实现了用户对雇员信息的管理操作。在此过程能够有利于同学进一步深入了解C+的内涵,巩固学生的知识,其中包含类的定义,类函数的调用,if条件语句,swith语句,for循环语句等等。并且还包含的丰富的文件的输入输出操作及文件的创建内容。对于这一知识点不熟练的同学可以给予很大的帮助,并且其中包含大量的标注,有利于学生自己进行运行和探索。这样更加进一步帮助同学记忆。本系统主要有七个功能模块:在此之前首先有对全体雇员信息的存储;功能一:对全体雇员信息的显示 ;功能二:对雇员信息的修改;功能三:对雇员信息的删除;功能四:对雇员信息的添加;功能五:对雇员信息的查询;功能六:为雇员信息的创建文本文件;功能七:安全退出系统。关键词:类 语句 文件 功能目 录摘 要II目 录III第一章 绪论111 课程设计的目的112 课程设计的背景和意义1121 课程设计的背景1122 课程设计的意义113 课程设计环境2第二章 需求分析221 问题描述222 功能要求223 问题的解决方案2第三章 系统设计331 数据设计3311 类设计3312 类之间的关系4313 函数设计432 结构设计4321 系统流程图4322 界面设计4第四章 系统实现641 类实现64. 1. 1 定义kehl类64. 1. 2 定义create类742 函数实现7421 雇员信息的存入函数inputpeople()7422 雇员信息的显示setpeople()8423 雇员信息的添加newpeople()9424 雇员信息的删除deletepeople()10425 雇员信息的查询cheackpeople()1043 主函数实现11第五章 系统测试1351 模块测试13511 系统进入界面13512系统操作界面14513 系统功能界面1552 课程设计过程中遇到的问题18总 结19致 谢19参考文献19附 录20精选范本第一章 绪论11 课程设计的目的1 进一步熟练运用C+的编写技巧,用此解决一些简单算法2 熟练运用C+面向对象设计的基本思路和方法3 了解C+语言的实用价值4 对C+内容的综合运用以求进一步熟记语言内容12 课程设计的背景和意义121 课程设计的背景对于现在社会讲求的就是办事效率,一个小小的工作这样,同样一个公司更应该这样讲求效率。因此在现在的信息社会,公司里的一个管理系统就可以为自身征求更大的利益。为此作为计算机科学与工程专业的学生,首先为完成作业,进一步提高自己的知识水平,对C+语言有进一步的了解,以求能够做到综合运用所学知识。让学生进一步熟悉类的定义与运用,以及文件的输入输出和文件的保存等知识。另一方面,更重要的是为灵活运用C+的技巧来编写一个公司雇员信息管理系统,以便于公司对员工的管理,为公司创造更大的利益。为学生以后的发展奠定一定的基础。1理论研究基础(1)C+面向对象程序设计(2)类的运用,文件的输入输出2. 技术层面的支持类的应用,以及C+中的文件的输入输出流,以及各种循环语句和条件语句122 课程设计的意义1有助于进一步巩固自己的C+知识2有助于知识的综合运用和基础实践13 课程设计环境Microsoft Visual C+6.0编译环境;硬件设施正常,足以满足此软件的运行即可。第二章 需求分析21 问题描述某公司需要存储雇员的编号、姓名、级别和月薪,并显示全部信息。雇员分为经理、技术人员、销售人员和销售经理。四类人员的月薪计算方法如下:经理拿固定月薪8000元;技术人员按每小时100元领取月薪;销售人员按其当月销售额的4领取工资;销售经理既拿固定月薪也领取销售提成,固定月薪为5000元,销售提成为销售总额的5。运用C+知识设计一程序能够实现对公司雇员进行管理。22 功能要求(1)本程序完成的功能主要有:1)显示雇员信息。2)添加雇员信息,并保存。3)删除雇员信息,并保存。4)修改雇员信息,并保存。5)查询雇员信息。6)系统退出。(2)学生在完成本次课程设计的基本要求后,从便于用户使用和功能完整性的角度考虑进一步完善程序23 问题的解决方案根据该系统的管理特点,该程序的完成由以下思路:(1)定义雇员类kehl,并在其中定义记录格式。(2)定义系统处理类create,在此类中用于完成设计此系统的全部成员函数 (3)最后写主函数,调用类create的成员函数,从而实现此程序用于公司雇员信息管理。(4)对于程序的调试,首先对类create中的各个成员函数进行逐个调试,以便更快找出程序中的问题所在。(5)调试总程序,对程序进行完善精进。(6)根据程序编写课设报告。第三章 系统设计31 数据设计311 类设计程序中包含两个程序:雇员存储类kehl;雇员信息管理实现类create; (1)kehl类用来实现雇员信息的存储格式 (2)create类用来实现此程序的各种功能int enterchoice();/*选择菜单 void inputpeople();/*写入信息void setpeople(fstream &);/*显示雇员信息void updatepeople(fstream &);/*修改雇员信息void deletepeople(fstream &);/*删除雇员信息void newpeople(fstream &);/*添加雇员信息void checkpeople(fstream &);/*查询雇员信息void outputp(ostream &,const kehl &);/*显示单个雇员信息void printpeople(fstream &);/*创建文本文件 int getaccount(const char * const);/*输入一个雇员的编码312 类之间的关系 Kehl类是为create类中各个成员函数中的雇员信息的显示,存入作基础类。313 函数设计按照系统要求分别在类create中定义成员函数,用于实现雇员信息的存入、显示、添加、删除、查询等功能。其中还定义了系统选项函数int enterchoice();用于在系统中进行操作选择,从而方便系统操作;以及雇员编号输入函数int getaccount(const char * const);他有利于在其他功能函数中输入编号,利于指针指向存储信息的查找内容;最后定义了现实一个员工信息的函数void outputp(ostream &,const kehl &);,此函数大大节省了系统的空间,避免了编程中代码的重复输入。并且在该类中还定义了创建文本文件的函数void printpeople(fstream &);,他将存储信息建立到一个文件中存入系统。有助于系统内的雇员信息的存储和查看。32 结构设计321 系统流程图void setnumber(int )void setname(string )void setjibie(string)void setgong(double)Createvoid inputpeople()void setpeople(fstream &)void updatepeople(fstream &)void deletepeople(fstream &)void newpeople(fstream &);voidcheckpeople(fstream &)void outputp(ostream &,const kehl &) int getaccount(const char * const)Kehl322 界面设计(1)下图3-2-2-1 是存入雇员信息的界面设计 图-3-2-2-1(2)下图3-2-2-2是操作者进入雇员信息管理的界面设计图3-2-2-2(3)下图3-2-2-3是选项操作系统内部的界面设计图3-2-2-3(4)在系统选项的每个内部界面都会清屏一次,并且界面的色彩也会改变一次。第四章 系统实现41 类实现4. 1. 1 定义kehl类用于信息的存储格式class kehlpublic:kehl(int=0,string= ,string= ,double=0.0);/*默认构造函数void setnumber(int ); /*设置雇员编号int getnumber () const;/*获取雇员编号void setname(string ); /*设置雇员编号string getname () const;/*获取雇员姓名void setjibie(string); /*设置雇员级别string getjibie () const;/*获取雇员级别void setgong(double);/*设置雇员工资 double getgong () const;/*获取雇员工资private:int number;char name15;char jibie30;double gong;4. 1. 2 定义create类用于实现系统中的添加,显示,删除等功能。class createpublic:void printpeople(fstream &);/*创建文本文件int enterchoice();/*选择菜单void inputpeople();/*写入信息void setpeople(fstream &);/*显示雇员信息void updatepeople(fstream &);/*修改雇员信息void deletepeople(fstream &);/*删除雇员信息void newpeople(fstream &);/*添加雇员信息void checkpeople(fstream &);/*查询雇员信息void outputp(ostream &,const kehl &);/*显示单个雇员信息 int getaccount(const char * const);/*输入一个雇员的编码;42 函数实现421 雇员信息的存入函数inputpeople()用于完成雇员信息的存入,解决了雇员工资的计算。/*/存入雇员信息/*void create:inputpeople()char yn;int i=1;kehl ke;ofstream outcredit(credit.dat,ios:binary);if(!outcredit)cerrfile could not be opened.endl;exit(1);coutyn;while(yn=y|yn=Y)double a;int n;char name15; int number;double gong; string jibie;cout请输入雇员编号:; number=i;coutnumberendl;ke.setnumber(number);coutsetw(15)name;ke.setname(name);coutn;couta;switch(n)/*雇员工资的设计case 1:jibie=经理;ke.setjibie(jibie);gong=8000;ke.setgong(gong);break;case 2:jibie=技术人员;ke.setjibie(jibie);gong=100*a;ke.setgong(gong);break;case 3:jibie=销售人员;ke.setjibie(jibie);gong=a*0.04;ke.setgong(gong);break;case 4:jibie=销售经理;ke.setjibie(jibie);gong=5000+0.005*a;ke.setgong(gong);break;default:cerr选择错误:;break; cout雇员工资为:gongendl; outcredit.seekp(ke.getnumber()-1)*sizeof(kehl);outcredit.write(reinterpret_cast(&ke),sizeof(kehl);i+; coutendlendl;coutyn;422 雇员信息的显示setpeople()用于完成对所有雇员信息的全部显示(编号,姓名,级别,工资等)/*/显示全体雇员的信息/*void create:setpeople(fstream &setfile)kehl ke; for(int number=1;number20;number+) setfile.seekg(number-1)* sizeof(kehl); setfile.read(reinterpret_cast(&ke),sizeof(kehl); if(!setfile.eof()&ke.getnumber()!=0) outputp(cout,ke);cout*endl;423 雇员信息的添加newpeople()用于完成对没有编号雇员信息的存入,并对存在的编号显示不能存入/*/添加雇员的信息/*void create:newpeople(fstream &newfile)cout请输入要添加雇员的编号(1-20):;kehl ke;int number=getaccount(enter new guyuan number);/*获取创建雇员编号newfile.seekg(number-1)*sizeof(kehl);ke.setnumber(number);if(!newfile.eof()/*如果记录不存在,则创建记录char name15; string jibie; double gong,a;int n;coutsetw(15)name; ke.setname(name); coutn;couta;switch(n)case 1:jibie=经理;ke.setjibie(jibie);gong=8000;ke.setgong(gong); break; case 2:jibie=技术人员;ke.setjibie(jibie);gong=a*100;ke.setgong(gong); break;case 3:jibie=销售人员;ke.setjibie(jibie);gong=a*0.04;ke.setgong(gong); break;case 4:jibie=销售经理;ke.setjibie(jibie);gong=5000+0.005*a;ke.setgong(gong); break;default:cerr选择错误;break;outputp(cout,ke);newfile.seekp(number-1)* sizeof(kehl);newfile.write(reinterpret_cast(&ke),sizeof(kehl);else cerr记录雇员编号number已经存在n;outputp(cout,ke);424 雇员信息的删除deletepeople()用于完成对已经存在的员工信息的删除/*/删除雇员的信息/*void create:deletepeople(fstream &deletefile) cout请输入要删除雇员的编号:;int number=getaccount(enter number to delete.);deletefile.seekg(number-1)*sizeof(kehl);kehl ke;deletefile.read(reinterpret_cast(&ke),sizeof(kehl);if(ke.getnumber()!=0)/*如果记录存在,则删除记录kehl bke;deletefile.seekp(number-1)*sizeof(kehl);/*用空白记录替换已经存在的记录deletefile.write(reinterpret_cast(&bke),sizeof(kehl);cout记录雇员编号number已经被删除n;else cerr记录雇员编号number不存在n;425 雇员信息的查询cheackpeople()用于完成对已经存在雇员信息的查询/*/查询雇员信息/*void create:checkpeople(fstream &checkfile)cout请输入要查询的雇员的编号:;int number=getaccount(enter guyuan number to check);/*获取要查询的雇员编号checkfile.seekg(number-1)* sizeof(kehl);kehl ke;checkfile.read(reinterpret_cast(&ke),sizeof(kehl);if(ke.getnumber()!=0)outputp(cout,ke);else cerr记录雇员编号number不存在n;43 主函数实现/#/主函数进行雇员操作/$#include#include#include#includeusing namespace std;int main()create te; char ch; int choice;/*页面设计cout endl;cout endl; cout endl;cout 王某人世界一流有限公司 endl;cout 欢迎进入本公司雇员存入系统 endl;cout 在这里请仔细输入员工的一切信息 endl;cout 如有疑问请直接询问本工使技术天才Mr.王 endl;cout endl;cout endl;cout endl;te.inputpeople();/*进行雇员信息输入 system(color fa); /颜色 system(cls);/清屏/*系统选项几面设计cout endl; cout endl;cout endl;cout 欢迎进入系统信息选择 endl;cout endl;cout endl; cout endl;fstream iocredit(credit.dat,ios:in|ios:out);if(!iocredit)cerrfile could not be opened.endl;exit(1);/*打开文件,用于读写coutch; system(color fc); /颜色 system(cls);/清屏if(ch=y|ch=Y)while(choice=te.enterchoice()!=END)switch(choice) case SET: system(color fa); /颜色 system(cls);/清屏 te.setpeople(iocredit); coutendlendlendl; break;/*显示信息 case UPDATE: system(color fd); /颜色 system(cls); te.updatepeople(iocredit); coutendlendlendl; break;/*修改信息 case DE: system(color 48); /颜色 system(cls); te.deletepeople(iocredit); coutendlendlendl; break;/*删除信息 case NEW: system(color 17); /颜色 system(cls);/清屏 te.newpeople(iocredit); coutendlendlendl; break; /*添加信息 case CHECK: system(color f4); /颜色 system(cls); te.checkpeople(iocredit); coutendlendlendl; break;/*查询信息 case PRINT: system(color 48); /颜色 system(cls); te.printpeople(iocredit); coutendlendlendl; cout 创建文本文件成功 endl; coutendlendlendl; break;/*创建文本文件 default: system(color 07); /颜色 system(cls); cerr输入错误endl; break;iocredit.clear();return 0;第五章 系统测试51 模块测试511 系统进入界面1. 下图5-1-1-a是雇员信息存入选择界面,存储雇员信息输入y,否则输入n. 图 5-1-1-a2. 下图5-1-1-b是雇员信息的存入界面图 5-1-1-b512 系统操作界面1. 下图 5-1-2-a系统进入选择界面,如果进入系统操作输入y,否则n 图 5-1-2-a2. 下图5-1-2-b系统操作选项界面 图 5-1-2-b513 系统功能界面 5131 雇员信息的显示 如图5-1-3-1显示输入的全体雇员信息图 5-1-3-1 5132雇员信息的修改 如下图5-1-3-2-a雇员信息存在时,重新输入雇员的姓名等内容 如下图 5-1-3-2-b 雇员信息不存在图 5-1-3-2-b 图 5-1-3-2-a5133 雇员信息的删除5134 雇员信息的添加 5135 雇员信息的查询52 课程设计过程中遇到的问题1、对于某些C+语句(循环,条件)运用不熟练 2、添加功能不完善,不能考虑某些特殊情况等3、显示功能不能显示全部的存储信息 4、信息不知怎么存入文件中去,打开文件关闭文件不熟练 5、程序编写时没有充分考虑用户的方便性6、做报告时的格式不正规7、对于系统运行界面的设计不美观,简易总 结此程序有以下几个优点和创新:一、操作方便,能够全面实现各个功能,完成客户的操作要求,并且能够处理客户的输入等错误。二、操作系统条理清晰,客户很容易就可以了解操作过程。三、每个操作功能显示独立,内部相互联系,使界面看起来不凌乱。四、此系统还完成了对于全体雇员信息的存入,并且还创建了文本文件,有利于客户对输入结果的读取。五、此系统的界面美观,具有可读性,并且在编程中运用特殊功能。系统可以在进入系统每一个功能界面时变换色彩。给用户一视觉效果。总而言之,虽然系统中某些功能可以完整运行,但其中还需要我们在随着知识的拓展来完善系统,这样我们就要努力学习积极进取。致 谢 此课设已经接近尾声,大体已经全体完成。通过这次课设使我的知识更加的深厚,对所学知识有了全面的了解。 在此要感谢任课老师的细心指导,并给了我这次实践的机会。参考文献1高广任 .C+语言详解与程序设计.北京:科学出版社,20062刁成嘉 译.C+编程思想.北京:机械工业出版社,20063郑莉、张瑞丰、李莉、余小沛.C+语言案例教程.北京:清华大学出版社.2005附 录/#/创建雇员类kehl,并在其中定义记录格式/$#ifndef KEHL_H#define KEHL_H#include#includeusing namespace std;class kehlpublic:kehl(int=0,string= ,string= ,double=0.0);/*默认构造函数void setnumber(int ); /*设置雇员编号int getnumber () const;/*获取雇员编号void setname(string ); /*设置雇员编号string getname () const;/*获取雇员姓名void setjibie(string); /*设置雇员级别string getjibie () const;/*获取雇员级别void setgong(double);/*设置雇员工资 double getgong () const;/*获取雇员工资private:int number;char name15;char jibie30;double gong;kehl:kehl(int numberv,string namev,string jibiev,double gongv)setnumber(numberv);setname(namev);setjibie(jibiev);setgong(gongv);int kehl:getnumber () constreturn number;/*获取雇员编号void kehl:setnumber(int numberv)number=numberv;/*设置雇员编号string kehl:getname () const return name;/*获取雇员姓名void kehl:setname(string namestring)/*设置雇员姓名const char * namev=namestring.data();int length=strlen(namev);length=(length15?length:14);strncpy(name,namev,length);namelength=0;string kehl:getjibie () const return jibie;/*获取雇员级别void kehl:setjibie(string jibiestring)/*设置雇员级别const char * jibiev=jibiestring.data();int length=strlen(jib
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 19919-2025小艇窗、舷窗、舱口盖、风暴盖和门强度和密封性要求
- 出租承包鱼塘合同范本
- 农村集体住宅合同范本
- 农村菜地维修合同范本
- 协议书艺术家画展合同
- 创维光伏融资合同范本
- 冠状疫苗采购合同范本
- 合同履行期满补充协议
- 劳动合同顺延协议范本
- 合同范本草场租赁合同
- 踏勘安全培训课件
- 2025年个人电动汽车购买协议
- 无人机测绘课件
- 2025年国元农业保险股份有限公司安徽分公司校园招聘40人笔试备考试题及答案解析
- 养老机构销售技巧培训
- 创意笔筒产品设计与制作方案
- 公文格式培训课件
- 快递员安全寄递培训课件
- 2025公务员考试《常识》高分题库完美版附答案详解
- 文库发布:五岳课件
- 装修直播培训课课件
评论
0/150
提交评论