职工信息管理系统.docx_第1页
职工信息管理系统.docx_第2页
职工信息管理系统.docx_第3页
职工信息管理系统.docx_第4页
职工信息管理系统.docx_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

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

文档简介

C+面向对象程序设计 课程设计指导开课时间: 20102011学年二学期一、课程设计目的 二、课程设计要求 三、课程设计内容 四、课程设计概要设计 五、课程设计详细设计与实现 六、源代码与注释 七、总结 一、课程设计目的 根据课程讲内容,自主作相应的练习,消化自己所学的内容,同时也培养自己综合运用c+程序设计课程所学到的知识和编写c+程序解决实际问题的能力,以及良好的课程设计习惯。 通过课程设计的训练,学生了解程序开发的过程,掌握编写、调试和测试c+语言程序的基本技巧,充分理解结构化程序设计的基本方法。二、课程设计要求1、基本要求: (1)要求利用面向对象的方法以及C+的编程思想来完成系统的设计; (2)要求在设计的过程中,建立清晰的类层次; (3)在系统设计中要分析和定义各个类,每个类中要有各自的属性和方法; (4)在系统的设计中,要求运用面向对象的机制(继承、派生及多态性)来实现系统功能。 2、创新要求: 在基本要求达到后,可进行创新设计,如根据查找结果进行修改的功能及设计出比较友好的界面等。三、课程设计内容职工信息表()设计要求:使用C+类实现设计要求实现如下功能:(1)建立职工信息数据,包括职工编号、姓名、性别、工资、出生时间、参加工作时间和年龄(必须计算得到)。(2)根据职工信息表,建立只含有姓名和年龄的职工信息简表。(可选功能)(3)使用继承的方法构造3个类,(即雇员类虚基类,教师类和工人类派生类)使用相应的对象放置10个职工信息。(4)编写同名display()成员函数,用来输出数组的内容。(5)按不同类别输出职工信息,比如按系输出教师信息。(可选功能)(6)要求对“”和“”运算符进行重载。考虑到输人职工编号时,也会因不小心引人空格,而且名字中也需要有空格,所以重载“运算符时,需要满足这个要求。(7)抽取并计算职工的平均年龄。(8)检索(查找)指定信息。(如按姓名检索、按年龄检索)(9)显示年龄分布的柱状图,示例如下:(10)参考界面如下:增加一位教师记录增加一位工人记录显示全部职工记录计算教师平均年龄计算工人平均年龄删除一个教师删除一个工人按系输出教师信息(可选)按姓名检索所有信息结束程序运行四、课程设计概要设计 声明一个雇员的虚基类class Guyuan,并由此派生教师Teacher、工人Works两个派生类,建立对象数组Teacher20、Works20,然后在这两个类中分别将编号num5、姓名name20、年龄age、性别sex5等数据成员和删除void del()、添加void add()、查找void chaxun()、计算平均年龄void average_age()等成员函数等封装起来,然后每个功能函数在类外定义,主函数中通过菜单进行选择调用各功能函数。五、课程设计详细设计与实现(为方便这里仅举教师例子)1.设计雇员类,里面封装了数据成员char num20、char name20、int age;由派生类派生出教师类、工人类,将其中的数据成员、成员函数都设计成公有成员分别封装在这两个类里。数据成员包括系别char xi5,成员函数包括主菜单int zhucaidan()、录入函数void record()、添加教师信息函数void add()、查询教师信息函数void chaxun()、显示教师信息函数void xianshi()、删除教师函数void del()、平均年龄float average_age()、按系查询void xichanxun()以及插入、 提取运算符的重载friend ostream& operator(istream&,Teacher&),同时定义对象数组teacher1002.各函数的具体实现:(由于教师类与工人类功能及数据成员几乎都相同,所以在这里只介绍一下教师类)(1)主菜单函数 按1时执行计算平均年龄,按2执行查询功能,按3执行按系查询功能,按4执行名字检索功能,按5执行显示全部信息功能,按6执行删除功能,按7执行添加功能,按0退出系统,先输出菜单界面然后返回用户的选择。(2)录入函数 用ofstream定义对象outfile,用ofstream outfile(“教师信息.txt”,ios:out)打开文件,输入一个教师的姓名,并用outfilesetw(5)teachersum.num;向文件输出教师的姓名,同样向文件输出编号、性别,逐渐向文件输入多个教师的信息,直到输入#结束。向文件录入之后再用ifstream infile(教师信息.txt,ios:in);以及for循环逐个将文件中的信息依次输入倒数组各元素中。(3)添加函数 直接输出教师的编号、姓名、性别并使教师总数sum加1;(4)查询函数 先输入要查询的教师的编号,然后用一个fou循环依次比较各对象的num成员是否等于输入的num。如果相等就用函数istream &operator(istream &in,Teacher &t) 分别输入教师的编号、姓名、性别,并返回in。(10)重载函数ostream &operator(ostream &out,Teacher &t) 分别输出教师的编号、姓名、性别,并返回out。3.主函数Teacher t;Works w;定义两个对象。输出按1管理教师信息、输出2管理工人信息、按0退出,然后让用户输入一个值,用swich语句,case 1:t.record();break;case 2:w.record();break;然后调用主菜单函数zhucaidan(),根据返回的值再用swich语句,如果是1,则调用查询函数chaxun(),如果是2,则调用删除函数del(),如果是3,则调用,显示函数xianshi(),如果是4,则调用添加函数add(),如果是0,则退出。六、源代码与注释#include #include#include #include /using namespace std;static int sum=0; /教师总数static int sum1=0; /工人总数class Guyuanpublic:char num20;char name20;int age;class Teacher:virtual public Guyuanpublic: char xi5;public: int zhucaidan();void record();void add();void chaxun();void del();float average_age();void xichaxun();void xianshi();void namejiansuo();friend ostream& operator(istream&,Teacher&);teacher100;int Teacher:zhucaidan()coutttt-n;coutttt+ 教师信息表管理系统 +n; coutttt-n; coutttt+ 1-计算教师平均年龄 +n;coutttt+ 2-查询教师信息 +n; coutttt+ 3-按系查询教师信息 +n;coutttt+ 4-按名字检索教师信息 +n;coutttt+ 5-显示教师全部信息 +n;coutttt+ 6-删除教师信息 +n;coutttt+ 7-添加教师信息 +n;coutttt+ 0-退出系统 +n;coutttt+*+n; coutttt-n;coutchoice; return (choice);void Teacher:record() ofstream outfile(教师信息.txt,ios:out); char c;cout请输入教师信息,以#结束:endl; while(c!=#)coutteachersum.num;outfilesetw(5)teachersum.num;;outfilesetw(10);coutteachersum.age;outfilesetw(10)teachersum.age;coutteachersum.xi;outfilesetw(10)teachersum.xiendl;coutc;sum+;coutendl;cout输入信息结束!endlendlendlendlendl;ifstream infile(教师信息.txt,ios:in);for(int i=0;iteachersum.num;;infileteachersum.age;infileteachersum.xi; /添加一个教师信息void Teacher:add()coutendlendlendl;coutteachersum.num;;coutteachersum.age;coutteachersum.xi;sum+;/查询教师信息void Teacher:chaxun()coutendlendlendl; char num20; int i=0; cout请输入要查询教师的编号:num; for(i=0;isum;i+)if(strcmp(teacheri.num,num)=0) cout你要查询的信息是:endl;coutteacheri;/删除教师信息void Teacher:del() coutendlendlendl;char num120;int j;coutnum1;for(int i=0;isum;i+)if(strcmp(teacheri.num,num1)=0)j=i; for(;jsum;j+) teacherj=teacherj+1; sum-; cout你要删除的信息已经删除成功!endl;float Teacher:average_age()coutendlendlendl;float ave; float he=0;for(int i=0;isum;i+)he=he+teacheri.age;ave=he/sum;cout所有教师年龄的平均数为:endl; coutaveendl;return ave;/按系输出教师信息void Teacher:xichaxun()coutendlendlendl; char xi5; int i=0; cout请输入要查询教师的系别:xi; for(i=0;isum;i+)if(strcmp(teacheri.xi,xi)=0) cout你要查询的信息是:endl;coutteacheri;void Teacher:xianshi()cout。全部教师信息。/t/tendl;for(int i=0;isum;i+)coutteacheri;cout共有教师人数:sumendl;void Teacher:namejiansuo()coutendlendlendl; char name10; int i=0; cout请输入要查询教师的名字:name; for(i=0;isum;i+)if(strcmp(,name)=0) cout你要查询的信息是:endl;cout(istream &in,Teacher &t)coutt.num;;coutteachersum.age; return in;ostream &operator(ostream &out,Teacher &t)cout编号:t.numendl;cout姓名:endl;cout年龄:t.ageendl;cout系别:t.xiendl;coutendlendl;return out;class Works:virtual public Guyuanpublic:void record();int zhucaidan();void add();void chaxun();void del();float average_age();void xichaxun();void xianshi();void namejiansuo();friend ostream& operator(istream&,Works&);works100;void Works:record() ofstream outfile(工人信息.txt,ios:out); char c;cout请输入工人信息,以#结束:endl; while(c!=#)coutworkssum1.num;outfilesetw(5)workssum1.num;;outfilesetw(10);coutworkssum1.age;outfilesetw(10)workssum1.age;coutc;coutendl;sum1+;coutendl;cout输入信息结束!endlendlendlendlendl;ifstream infile(工人信息.txt,ios:in);for(int i=0;iworkssum1.num;;infileworkssum1.age; int Works:zhucaidan()coutttt-n;coutttt+ 工人信息表管理系统 +n; coutttt-n; coutttt+ 1-计算工人平均年龄 +n;coutttt+ 2-查询工人信息 +n; coutttt+ 3-按系查询工人信息 +n;coutttt+ 4-按名字检索工人信息 +n;coutttt+ 5-显示工人全部信息 +n;coutttt+ 6-删除工人信息 +n;coutttt+ 7-添加工人信息 +n;coutttt+ 0-退出系统 +n;coutttt+*+n; coutttt-n;coutchoice; return (choice);/添加一个工人信息void Works:add()coutendlendlendl;coutworkssum1.num;;coutworkssum1.age;sum1+;/查询工人信息void Works:chaxun()coutendlendlendl; char num20; int i=0; cout请输入要查询工人的编号:num; for(i=0;i=sum1;i+)if(strcmp(worksi.num,num)=0) cout你要查询的信息是:endl;coutworksi;/删除工人信息void Works:del() coutendlendlendl;char num120;int j;coutnum1;for(int i=0;i=sum1;i+)if(strcmp(worksi.num,num1)=1)j=i; for(;jsum1;j+) worksj=worksj+1; cout你要删除的信息已经删除成功!endl;float Works:average_age()coutendlendlendl;float ave; float he=0;for(int i=0;isum1;i+)he=he+worksi.age;ave=he/sum1;cout所有工人年龄的平均数为:endl; coutaveendl;return ave;void Works:xianshi()cout。全部工人信息。/t/tendl;for(int i=0;isum1;i+)coutworksi;cout共有工人人数:sum1endl;void Works:namejiansuo()coutendlendlendl; char name10; int i=0; cout请输入要查询工人的名字:name; for(i=0;isum1;i+)if(strcmp(,name)=0) cout你要查询的信息是:endl;cout(istream &in,Works &w)coutw.num;;coutw.age; return in;ostream &operator(ostream &out,Works &w)out编号:w.numendl;out姓名:endl;out年龄:w.ageendl;outendlendl;return out;int main()coutendlendl;coutttt|-|n; coutttt| |n;coutttt| 欢迎使用职工信息表管理系统 |n;coutttt| |n; coutttt|-|n;coutendlendl;coutttt+-+n; coutttt| 管理教师信息请按 1 |n; coutttt| 管理工人信息请按 2 |n; coutttt| 退出 请按 0 |n; coutttt+-+n;int choice;Teacher t;Works w;coutchoice;switch(choice) case 0:break; case 1: t.record(); break; case 2: w.record(); break; int x;while(1)switch(choice) case 0:break; case 1: x=t.zhucaidan(); break; case 2: x=w.zhucaidan();break; if(x=0) cout谢谢使用!endl; break;else switch(x) case 1: switch(choice) case 0:break; case 1: t.average_age(); cout请按回车键返回主菜单.endl; getchar(); break; case 2: w.average_age(); cout请按回车键返回主菜单.endl; getchar(); break; break;case 2: switch(choice) case 0:break; case 1: t.chaxun(); cout请按回车键返回主菜单.endl; getchar(); break; case 2: w.chaxun(); cout请按回车键返回主菜单.endl; getchar(); break; break; case 3: switch(choice) case 0:break; case 1: t.xichaxun(); cout请按回车键返回主菜单.endl; getchar(); break; case 2: /w.xichaxun(); cout请按回车键返回主菜单.endl; getchar(); break;

温馨提示

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

评论

0/150

提交评论