《面向对象课程设计——职工信息管理系统.doc》由会员分享,可在线阅读,更多相关《面向对象课程设计——职工信息管理系统.doc(18页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 面向对象技术课程设计题 目: 职工信息管理系统 专 业: 计算机科学与技术 学 号: 姓 名: 指导老师: 完成日期: 2013-6-2 目 录1 前言32 需求分析32.1要求32.2任务32.3运行环境32.4开发工具33 概要设计与详细设计33.1系统流程图33.2运行结果举例44 编码与实现74.1分析74.2具体代码实现75 课程设计总结17参考文献171 前言编写一个程序来管理职工信息。通过一个结构体数组来存放输入的每一位职工的记录(包括职工号、姓名、性别、年龄、学历、工资、住址、电话等),然后将其信息保存到文件中。通过几个函数来创建新职工号,并对职工信息进行删除及修改,输入一个
2、职工号查询该职工的信息,并显示在屏幕上。2 需求分析2.1要求(1)只能使用C+语言实现程序设计;(2)源程序要有适当的注释,使程序容易阅读;(3)画出查询模块的流程图;利用结构体进行相关信息处理;(4)系统的各个功能模块要求用函数的形式实现;(5)运行界面清晰,功能明确。2.2任务(1)定义一个结构体类型数组,输入每一位职工的信息(包括职工号、姓名、性别、年龄、学历、工资、住址、电话等),将其信息存入文件中;(2)输入职工号查询该职工的信息,并显示在屏幕上;(3)画出所有模块的流程图;(4)编写代码;(5)程序分析与调试。2.3运行环境(1)WINDOWS2000/XP系统(2)TurboC
3、2.0编译环境,VC6.02.4开发工具C+语言3 概要设计与详细设计3.1系统流程图如图3.1所示。职工信息管理系统菜单 3职工信息修改3职工信息删除2职工信息查询1职工信息录入 输入职工号 输入职工号 输入职工号 输入职工号 职工号存在?职工号存在?职工号存在?职工号存在?是,选择修改信息项,输入新的职工信息, 修改成功 否,该职工不存在否,输入职工信息是,添加成功 否,该职工不存在 是,删除成功 否,该职工不存在 是,输出职工信息添加成功 返回职工信息管理系统菜单,继续选择 图3.1 系统流程图3.2运行结果举例(1)职工号鉴定界面 (2)职工信息录入界面(3)职工信息查询界面(4) 职
4、工信息删除界面(5)职工信息修改界面4 编码与实现4.1分析 本系统主要分为WorkerList类、database类、函数menu、函数menu2以及main函数,WorkerList类中包括的数据成员有id、name10、sex10、age、edu20、salary、address25、tel11,包括的函数成员有setid()、setname()、setsex()、setage()、setedu()、setsalary()、setaddress()、settel()、getid()、add()、display()。而database类中包括的数据成员有top、 WorkList work
5、erN,包括的函数成员有rdatabase()、add()、search()、delet()、modify()。 用函数add()实现职工信息的录入,用函数search()实现对职工信息的查询,用函数delet()实现对职工信息的删除,用函数modify()实现对职工信息的修改。4.2具体代码实现#include#include#include#define N 100 / N作为最大职工数using namespace std;void menu();/显示菜单class WorkerListprivate: int id; char name10; char sex10; int age;
6、 char edu20; int salary; char address25; char tel11;public:void setid()/以下函数用于职工属性的输入cout请输入职工号:id;void setname()cout请输入职工姓名:name;void setsex()cout请输入职工性别:sex;void setage()cout请输入职工年龄:age;void setedu()cout请输入职工学历:edu;void setsalary()cout请输入职工工资:salary;void setaddress()cout请输入职工住址:address;void settel
7、()cout请输入职工电话:tel; int getid()/取职工号函数,主要用于判断输入的职工号是否已存在return id;void add()/职工信息录入setid();setname();setsex();setage();setedu();setsalary();setaddress();settel();void display()/显示函数,用于将已有职工的信息输出cout职工工号为:idendl;cout职工姓名为:nameendl;cout职工性别为:sexendl;cout职工年龄为:ageendl;cout职工学历为:eduendl;cout职工工资为:salarye
8、ndl;cout职工住址为:addressendl;cout职工电话为:telendl;void menu()/菜单函数 coutendl;cout 计算机科学与技术学系endl;coutendl;cout endl;coutendl;cout 欢迎进入职工信息管理系统endl;coutendl;cout 1.职工信息录入;cout 2.职工信息查询endl;coutendl;cout 3.职工信息删除; cout 4.职工信息修改endl; coutendl;cout 谢谢您的使用endl;coutendl; void menu2()/修改职工信息显示的选择界面cout *endl;cout
9、endl;cout * 1.修改工号 2.修改姓名 *endl;coutendl;cout * 3.修改性别 4.修改年龄 *endl;coutendl;cout * 5.修改学历 6.修改工资 *endl;coutendl;cout * 7.修改地址 8.修改电话 *endl;coutendl;cout *endl;coutendl;class database/database类,用于将输入的职工信息保存在一个txt文档中及读取private:int top;WorkerList workerN;public:void rdatabase()/打开磁盘中相应的文件top=-1;fstrea
10、m file;/定义fstream类对象filefile.open(c:worker.txt ,ios:in|ios:binary);/使文件流与磁盘的worker.txt文件建立关联,并从中读取职工信息while(!file.eof()top+;file.read(char *)&workertop,sizeof(workertop);file.close();/将关联的磁盘文件关闭top+; void add()/新添加职工函数int id;cout请输入职工号以便鉴定id;for(int i=0;itop;i+)if(workeri.getid()=id)cout对不起,您输入的职工号已
11、存在endl;return;workertop.add();top+;outdatabase();cout添加成功!endl;return;void outdatabase()/将输入的职工信息写入txt文档fstream file;file.open(c:worker.txt,ios:out|ios:binary);for(int i=0;itop;i+)file.write(char *)&workeri,sizeof(workeri);/写入结构体的元素file.close();void search()/用于查询职工的信息int id2;cout请输入职工号id2;for(int i=
12、0;itop;i+)if(workeri.getid()=id2)workeri.display();return;cout对不起,该职工不存在endl;return;void delet()/实现对职工信息的删除int id,j;cout请输入职工号id;for(int i=0;itop;i+)if(workeri.getid()=id)for(j=i;jtop;j+)workerj=workerj+1;cout该职工信息已删除endl;outdatabase();return;cout对不起,该职工不存在endl;return;void modify()/对职工信息进行修改int id;c
13、out请输入要修改的职工号id;for(int i=0;ig;switch(g)case 1:workeri.setid();break;case 2:workeri.setname();break;case 3:workeri.setsex();break;case 4:workeri.setage();break;case 5:workeri.setedu();break;case 6:workeri.setsalary();break;case 7:workeri.setaddress();break;case 8:workeri.settel();break;outdatabase()
14、;cout修改成功endl;return;cout对不起,该职工不存在choice;while(choice)switch(choice)case 1:a.rdatabase();a.add();break;case 2:a.rdatabase();a.search();break;case 3:a.rdatabase();a.delet();break;case 4:a.rdatabase();a.modify();break;menu();cinchoice;5 课程设计总结通过这次对职工信息管理系统的课程设计,我获益颇多。长时间的思索这个课程设计使得我对函数和类的理解及其运用更加透彻与深
15、刻。在设计程序的过程中,我也曾遇到令人头疼的难题,令自己百思不得其解。职工信息管理系统的设计需要对职工的信息进行存储,但是如何将信息真正的存储到文件中呢?这个难题曾一度难倒了我。庆幸的是,在同学的帮助下,我寻到了解决问题的方法,将信息保存到文件中需要查阅C+高级语言程序设计教科书。在书上第9章C+的输入输出流里有对信息进行文件2进制存储的相关内容,搭配对同学的课程设计内容的研究与借鉴,这个大难题最终得以解决。然而当所有的程序完成的时候,并没想象中那么容易运行,总有一些零零碎碎的错误隐藏在一个个“阴暗”的角落里,研究修改了很久,仍有错误找不出来,于是就只好求助别人帮忙了。当然,这个职工信息管理系统不乏与其他同学的课程设计内容相冲突,甚至用到相同的信息存储方法,但设计程序的过程通过相互借鉴以达到知识扩充与理解运用,也丰富了我自身。然而这个程序设计也有很多不足,并不能将所有职工的相关信息输出,这个问题暂时还未能实现,不过以后我会逐渐加以改善争取完善它的功能。 参考文献1 百度文库 . C语言职工信息管理系统设计 2 付永华,王素立,薛海燕 . C+高级语言程序设计指导教师评语:成绩: 签名: