




已阅读5页,还剩33页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
湖北汽车工业学院Hubei Automotive Industrise Institute课 程 设 计 说 明 书课程名称 面向对象程序设计课程设计 设计题目 高校人员管理系统 班号 T1123-X 专业 软件工程学号 1234567891011 学生姓名 指导教师(签字) 起止日期 2013 年 1 月 10 日- 2013 年 1月 16 日目 录第1章(C+)课程设计任务书11.1设计目的11.2 课程设计题目11.2.1高校人员信息管理系统11.3 设计思路11.3.1高校人员信息管理系统1第2章 程序设计32.1 需求分析32.1.1 问题分析32.1.2 功能分析32.2 总体设计42.2.1 系统流程设计42.3 数据结构52.3.1 类设计52.3.2 函数设计82.4 设计分析312.4.1 person类312.4.2 派生类312.4.3 友元类322.4.4 保存函数322.4.5 插入函数322.4.6 查询函数322.4.7 修改函数332.4.8 删除函数33第3章 程序调试和运行结果343.1.1 主界面343.1.2 插入界面343.1.3 修改界面343.1.4 删除界面35第4章 课设总结36第1章(C+)课程设计任务书1.1设计目的通过本次课程设计,深入理解类和对象、继承和派生、重载和多态,熟练掌握面向对象的程序设计思想和方法,能够对现实世界中的实际问题进行分析、设计,并学会熟练运用面向对象的编程方法(OOP) C+语言进行编程实现。1.2 课程设计题目1.2.1高校人员信息管理系统开发一个简易的高校人员信息管理系统,主要针对高校人员的基本信息进行管理。采用对象链表或对象数组存放各个对象,实现新增、修改、删除、查询以及统计等功能。1.3 设计思路1.3.1高校人员信息管理系统根据高校人员的特点,先设计一个高校人员抽象类,应包含编号、姓名、年龄、性别、系部、联系方式等数据成员,以及显示、统计等成员函数。然后分别设计教师类、学生类和机关人员类,它们的基类均为高校人员抽象类。创建人员对象,通过链表或对象数组的形式组织全体高校人员(可以定义一个管理类,该类具有新增、修改、删除、查询、统计及保存文件功能)。利用多态理论统一处理高校人员的信息。36第2章 程序设计2.1 需求分析2.1.1 问题分析根据高校人员管理系统要求,设计一个高校人员抽象类(person),包括以下数据成员:1.编号Num 2.姓名Name 3.年龄Age4.性别Sex 5.系部Depart 6.电话Tel以及以下成员函数:1.显示函数virtual void print();2.输入函数virtual void input();3.保存函数virtual void save(const char*);4.修改函数virtual void change(int nunber)=0;2.1.2 功能分析根据需求,该系统应包括以下这些功能:1.插入对象信息void insert(person*);2.查询对象信息void find(int data);3.删除对象信息void delet(int);4.修改对象信息void renew(int);5.显示对象信息void print();6.保存对象信息void save(const char*);7.主函数输出菜单、功能选择、退出系统。2.2 总体设计2.2.1 系统流程设计根据要求,系统流程图如下:菜单显示退出用户选择操作执行相应操作退出判断选择图1.系统流程图基类person管理类教师类学生类机关类插入查询修改显示保存删除图2.功能联系图2.3 数据结构2.3.1 类设计1、人员类主要用来描述人员的基本信息,如编号、姓名、性别、年龄、系部、联系方式等。 person(int num=0,char name=,int age=0,char sex=,char depart=,int tel=0); person();public virtual void print();virtual void input();virtual void save(const char*);Person virtual void change(int nunber)=0;int Num; char Name20; protectedint Age;char Sex20;char Depart20;int Tel;person *next;2、教师类教师类除基本信息外,还包含其薪水和主讲课程等数据成员。class teacher:public personpublic:teacher(int num=0,char name=,int age=0,char sex=,char depart=,int tel=0,int salary=0,char course=);teacher();void print();void input();void save(const char*);virtual void change(int nunber);protected:int Salary;char Course20;3、学生类学生类除基本信息外,还应包含学分和专业等数据成员。class student:public personpublic:student(int num=0,char name=,int age=0,char sex=,char depart=,int tel=0,int grade=0,char spec=);student();void print();void input();void save(const char*);virtual void change(int nunber);protected:int Grade;char Spec20;4、机关人员类机关人员类除基本信息外,还包含职位和工资等数据成员。class staff:public personpublic:staff(int num=0,char name=,int age=0,char sex=,char depart=,int tel=0,char position=,int salary=0);staff();void print();void input();void save(const char*);virtual void change(int nunber);protected:char Position20;int Salary;5、管理类主要用来管理高校人员信息,实现对人员信息的插入、查找、删除、显示和保存等功能。class manageprotected:person *head;public:manage();manage();void insert(person*);void find(int data);void delet(int);void renew(int);void print();void save(const char*);2.3.2 函数设计1、person类函数构造函数:person:person(int num,char name,int age,char sex,char depart,int tel)Num=num;strcpy(Name,name);Age=age;strcpy(Sex,sex);strcpy(Depart,depart);Tel=tel;person:person()输入函数:void person:input()coutNum;coutName;coutAge;coutSex;coutDepart;coutTel;显示函数:void person:print()coutn编号:Num 姓名:Name 年龄:Age 性别:Sex 系部:Depart 电话:Tel;保存函数:void person:save(const char* str)fstream file;file.open(str,ios:out|ios:app);if(file.fail()coutstrendl;cerrttt文件打开失败!endl;return;file编号:Num 姓名:Sex 年龄:AgeName 性别: 系部:Depart 电话:Tel;file.close();2、教师类构造函数:teacher:teacher(int num,char name,int age,char sex,char depart,int tel,int salary,char course):person(num,name,age,sex,depart,tel)Salary=salary;strcpy(Course,course);teacher:teacher()显示函数:void teacher:print(void)person:print();cout 薪水:Salary 主讲课程:Courseendl;保存函数:void teacher:save(const char* str)person:save(str);fstream file;file.open(str,ios:out|ios:app);if(file.fail()coutstrendl;cerrttt文件打开失败!endl;return;file 薪水:Salary 主讲课程:Courseendl;file.close();void teacher:input(void)person:input();coutSalary;coutCourse;修改函数:void teacher:change(int number)switch(number)case 7:coutSalary;coutttt薪水已修改!endl;system(pause);break;case 8:coutCourse;coutttt主讲课程已修改!endl;system(pause);break;3、学生类构造函数:student:student(int num,char name,int age,char sex,char depart,int tel,int grade,char spec):person(num,name,age,sex,depart,tel)Grade=grade;strcpy(Spec,spec);student:student()显示函数:void student:print(void)coutendlendl;person:print();cout 学分:Grade 专业:Specendl;输入函数:void student:input(void)person:input();coutGrade;coutSpec;保存函数:void student:save(const char*str)person:save(str);fstream file;file.open(str,ios:out|ios:app);if(file.fail()coutstrendl;cerrttt文件打开失败!endl;return;file 学分:Grade 专业:Specendl;file.close();修改函数:void student:change(int number)switch(number)case 7:coutGrade;coutttt学分已修改!endl;system(pause);break;case 8:coutSpec;coutttt专业已修改!endl;system(pause);break;4、机关人员类构造函数:staff:staff(int num,char name,int age,char sex,char depart,int tel,char position,int salary):person(num,name,age,sex,depart,tel)strcpy(Position,position);Salary=salary;staff:staff()显示函数:void staff:print(void)coutendlendl;person:print();cout 职位:Position 工资:Salaryendl;保存函数:void staff:save(const char* str)person:save(str);fstream file;file.open(str,ios:out|ios:app);if(file.fail()cerrttt文件打开失败!endl;return;file 职位:Position 工资:Salaryendl;file.close();输入函数:void staff:input(void)person:input();coutPosition;coutSalary;修改函数:void staff:change(int number)switch(number)case 7:coutPosition;coutttt职位已修改!endl;system(pause);break;case 8:coutSalary;coutttt工资已修改!next=NULL;elseq=head;while(q-next)q=q-next;q-next=p;p-next=NULL;coutttt插入成功!endl;查询函数:void manage:find(int data)person* q=head;int flag=0;int str;if(NULL=head)coutttt请先录入数据再查询!Num;if(data=str)flag=1;break;elseq=q-next;if(flag=1)coutttt查询结果为:endlprint();if(flag=0)coutttt查询结果不存在!endlNum)coutttt是否要删除?(y/n)endl;coutch;if (ch=y|ch=Y)coutttt正在删除.next;flag=1;elsewhile(p1)if(str=p1-Num)coutttt是否要删除?(y/n)endl;coutch;if (ch=y|ch=Y)coutttt正在删除.next=p1-next;flag=1;break;elsep2=p1;p1=p1-next;if(!flag)coutttt未找到要删除的节点!endl;elsecoutttt节点被删除,起编号是:strendl;coutttt删除完成!endl;修改函数:void manage:renew(int str)person* p;int num,flag=0;if(NULL=head)coutttt请先录入数据再修改!Num)flag=1;break;elsep=p-next;if(flag)domenu3(str);cinnum;switch(num)case 1:coutp-Num;coutttt编号已修改!endl;system(pause);break;case 2:coutp-Name;coutttt姓名已修改!endl;system(pause);break;case 3:coutp-Age;coutttt年龄已修改!endl;system(pause);break;case 4:coutp-Sex;coutttt性别已修改!endl;system(pause);break;case 5:coutp-Depart;coutttt系部已修改!endl;system(pause);break;case 6:coutp-Tel;coutttt电话已修改!change(num);break;case 8:p-change(num);break;case 0:break;default:break;while(num!=0);coutttt修改成功!endl;elsecoutnttt查询结果不存在!endl;显示函数:void manage:print(void)person* p;if(head=NULL)coutttt请先录入数据!print();p=p-next;保存函数:void manage:save(const char* filename)person* p;if(head=NULL)coutttt请先录入数据!endl;return;fstream file;file.open(filename,ios:out);if(file.fail()coutfilenameendl;cerrttt文件打开失败!save(filename);p=p-next;coutttt文件保存成功!endl;6、菜单函数主界面选择菜单:void menu1()system(cls);coutttt*人员管理系统*endl;coutttt*1.插入*endl;coutttt*2.查询*endl;coutttt*3.删除*endl;coutttt*4.修改*endl;coutttt*5.显示*endl;coutttt*6.保存*endl;coutttt*0.退出*endl;coutttt*endl;coutttt请输入操作选项:;插入信息选择菜单:void menu2()system(cls);coutttt*插入对象*endl;coutttt* 1.教师 *endl;coutttt* 2.学生 *endl;coutttt* 3.机关 *endl;coutttt* 0.退出 *endl;coutttt*endl;coutttt请输入插入对象前的选项:;修改选择菜单:void menu3(int temp)system(cls);coutttt*修改选项*endl;coutttt*1.编号2.姓名3.年龄 *endl;coutttt*4.性别5.系部6.电话 *endl;if (temp/1000=1)coutttt*7.薪水8.主讲课程 *endl;if (temp/1000=2)coutttt*7.学分8.专业 *endl;if (temp/1000=3)coutttt*7.职位8.工资 *endl;coutttt*0.返回 *endl;coutttt*endl;coutchoice;switch(choice)case 1:do menu2();cinchoice2;switch(choice2)case 1:coutnttt请输入老师的信息:endl;a1.input();p=&a1;m.insert(p);system(pause);break;case 2:coutnttt请输入学生的信息:endl;a2.input();p=&a2;m.insert(p);system(pause);break;case 3:coutnttt请输入机关人员的信息:endl;a3.input();p=&a3;m.insert(p);system(pause);break;case 0:break;default:coutnttt请输入正确的选择!endl;while (choice2!=0);break;case 2:coutnttt请输入要查询的编号:endl;couttemp;m.find(temp);system(pause);break;case 3:coutnttt请输入要删除的编号:endl;couttemp;m.delet(temp);system(pause);break;case 4:coutnttt请输入要修改的编号:endl;couttemp;m.renew(temp);system(pause);break;case 5:m.print();system(pause);break;case 6:coutnttt请输入保存文件名:endl;coutfilename;m.save(filename);fstream file;file.open(filename,ios:out|ios:app);if (file.fail()coutfilenameendl;cerrttt文件打开失败!endl;break;system(pause);break;case 0:system(cls);cout* 欢迎再次使用本管理系统!*endl;break;default:coutnttt请输入正确的选项!endl;return 0;2.4 设计分析2.4.1 person类Person类需要用manage去操作异质链表,故将其声明为友元类。成员函数里面由于要实现多态操作所以将有关函数定义为虚函数,这样在操作链表时可以将一个消息传递给不同的类做出不同的相应操作。而在person中最关键的一个成员是person* next,它是构建链表的关键。2.4.2 派生类 teacher ,student和staff类都是由person通过public继承而来的。由于他们各自又有属于自己专有的数据成员,所以在继承之后还需要加入新的数据成员。并且它们的成员函数里面可以先调用基类person中的成员函数后再添加新的功能,提高了执行效率。2.4.3 友元类 作为person的友元类,manage类可以操作由person派生出来的各个类。故将所有对类的操作放在manage中。实现时只需要通过基类指针发给各个类消息即可。它们会根据自身的设计做出不同的相应。2.4.4 保存函数save()函数,在函数里面文件打开进行的操作完成之后,特别需要注意的是要将文件关闭,否则在后面继续操作该文件的时候
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 重庆黔江区2025年上半年事业单位公开遴选试题含答案分析
- 河北省栾城县2025年上半年公开招聘城市协管员试题含答案分析
- 2025版交通设备采购与专业维护合同
- 2025版外聘讲师企业人才培养合作合同协议书
- 2025对公账户个人消费贷款合同规范范本
- 2025版暖通工程安全风险评估与应急预案合同
- 2025年度房地产中介加盟业务培训及咨询服务合同范本
- 2025版自动驾驶汽车软件合作协议范本
- 2025年度校园食堂餐饮供应合同
- 2025店长聘用协议:时尚产业店长选拔与聘用标准
- 知道网课智慧《睡眠医学(广州医科大学)》测试答案
- 糖尿病医疗广告宣传指南
- T CEC站用低压交流电源系统剩余电流监测装置技术规范
- python程序设计-说课
- ISO15614-1 2017 金属材料焊接工艺规程及评定(中文版)
- 国际金融(第七版)全套教学课件
- JJG 677-2006光干涉式甲烷测定仪
- 甘肃省天水市2024年事业单位考试A类《职业能力倾向测验》模拟试题含解析
- 中小学德育、班主任工作培训课件
- 小米公司物流与供应链管理案例分析课件
- 《工业视觉基础知识》课件
评论
0/150
提交评论