版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、.湖北汽车工业学院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 总
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设计目的通过本次课程设计,深入理解类和对象、继承和派生、重载和多态,熟练掌握面向对象的程序设计思想和方法,能够对现
3、实世界中的实际问题进行分析、设计,并学会熟练运用面向对象的编程方法(OOP) C+语言进行编程实现。1.2 课程设计题目1.2.1高校人员信息管理系统开发一个简易的高校人员信息管理系统,主要针对高校人员的基本信息进行管理。采用对象链表或对象数组存放各个对象,实现新增、修改、删除、查询以及统计等功能。1.3 设计思路1.3.1高校人员信息管理系统根据高校人员的特点,先设计一个高校人员抽象类,应包含编号、姓名、年龄、性别、系部、联系方式等数据成员,以及显示、统计等成员函数。然后分别设计教师类、学生类和机关人员类,它们的基类均为高校人员抽象类。创建人员对象,通过链表或对象数组的形式组织全体高校人员(
4、可以定义一个管理类,该类具有新增、修改、删除、查询、统计及保存文件功能)。利用多态理论统一处理高校人员的信息。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
5、(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管理类教师类学
6、生类机关类插入查询修改显示保存删除图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 voi
7、d 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
8、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=&quo
9、t;",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
10、="",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;publi
11、c: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=
12、tel;person:person()输入函数:void person:input()cout<<"ttt请输入编号:"cin>>Num;cout<<"ttt请输入姓名:"cin>>Name;cout<<"ttt请输入年龄:"cin>>Age;cout<<"ttt请输入性别:"cin>>Sex;cout<<"ttt请输入系部:"cin>>Depart;cout<<&
13、quot;ttt请输入联系电话:"cin>>Tel;显示函数:void person:print()cout<<"n编号:"<<Num<<" 姓名:"<<Name<<" 年龄:"<<Age<<" 性别:"<<Sex<<" 系部:"<<Depart<<" 电话:"<<Tel;保存函数:void person:sav
14、e(const char* str)fstream file;file.open(str,ios:out|ios:app);if(file.fail()cout<<str<<endl;cerr<<"ttt文件打开失败!"<<endl;return;file<<"编号:"<<Num<<" 姓名:"<<Sex<<" 年龄:"<<Age<<Name<<" 性别:&quo
15、t;<<" 系部:"<<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:
16、print(void)person:print();cout<<" 薪水:"<<Salary<<" 主讲课程:"<<Course<<endl;保存函数:void teacher:save(const char* str)person:save(str);fstream file;file.open(str,ios:out|ios:app);if(file.fail()cout<<str<<endl;cerr<<"ttt文件打开失败!"<
17、;<endl;return;file<<" 薪水:"<<Salary<<" 主讲课程:"<<Course<<endl;file.close();void teacher:input(void)person:input();cout<<"ttt请输入薪水:"cin>>Salary;cout<<"ttt请输入主讲课程:"cin>>Course;修改函数:void teacher:change(int num
18、ber)switch(number)case 7:cout<<"ttt请输入新的薪水:"cin>>Salary;cout<<"ttt薪水已修改!"<<endl;system("pause");break;case 8:cout<<"ttt请输入新的主讲课程:"cin>>Course;cout<<"ttt主讲课程已修改!"<<endl;system("pause");break;3、
19、学生类构造函数: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)cout<<endl<<endl;person:print();cout<<" 学分:"<<Grade<
20、<" 专业:"<<Spec<<endl;输入函数:void student:input(void)person:input();cout<<"ttt请输入学分:"cin>>Grade;cout<<"ttt请输入专业:"cin>>Spec;保存函数:void student:save(const char*str)person:save(str);fstream file;file.open(str,ios:out|ios:app);if(file.fail(
21、)cout<<str<<endl;cerr<<"ttt文件打开失败!"<<endl;return;file<<" 学分:"<<Grade<<" 专业:"<<Spec<<endl;file.close();修改函数:void student:change(int number)switch(number)case 7:cout<<"ttt请输入新的学分:"cin>>Grade;cout&
22、lt;<"ttt学分已修改!"<<endl;system("pause");break;case 8:cout<<"ttt请输入新的专业:"cin>>Spec;cout<<"ttt专业已修改!"<<endl;system("pause");break;4、机关人员类构造函数:staff:staff(int num,char name,int age,char sex,char depart,int tel,char positio
23、n,int salary):person(num,name,age,sex,depart,tel)strcpy(Position,position);Salary=salary;staff:staff()显示函数:void staff:print(void)cout<<endl<<endl;person:print();cout<<" 职位:"<<Position<<" 工资:"<<Salary<<endl;保存函数:void staff:save(const char*
24、 str)person:save(str);fstream file;file.open(str,ios:out|ios:app);if(file.fail()cerr<<"ttt文件打开失败!"<<endl;return;file<<" 职位:"<<Position<<" 工资:"<<Salary<<endl;file.close();输入函数:void staff:input(void)person:input();cout<<&quo
25、t;ttt请输入职位:"cin>>Position;cout<<"ttt请输入工资:"cin>>Salary;修改函数:void staff:change(int number)switch(number)case 7:cout<<"ttt请输入新的职位:"cin>>Position;cout<<"ttt职位已修改!"<<endl;system("pause");break;case 8:cout<<"
26、;ttt请输入新的工资:"cin>>Salary;cout<<"ttt工资已修改!"<<endl;system("pause");break;5、管理类构造函数:manage:manage()head=NULL;manage:manage()插入函数:void manage:insert(person* p)person* q;if(NULL=head)head=p;head->next=NULL;elseq=head;while(q->next)q=q->next;q->next=p
27、;p->next=NULL;cout<<"ttt插入成功!"<<endl;查询函数:void manage:find(int data)person* q=head;int flag=0;int str;if(NULL=head)cout<<"ttt请先录入数据再查询!"<<endl;return;while(q)str=q->Num;if(data=str)flag=1;break;elseq=q->next;if(flag=1)cout<<"ttt查询结果为:&q
28、uot;<<endl<<endl;q->print();if(flag=0)cout<<"ttt查询结果不存在!"<<endl<<endl;删除函数:void manage:delet(int str)person *p1,*p2;int flag=0;p1=head;char ch;if(str=head->Num)cout<<"ttt是否要删除?(y/n)"<<endl;cout<<"ttt"cin>>ch;if
29、 (ch='y'|ch='Y')cout<<"ttt正在删除."<<endl;elsereturn;head=head->next;flag=1;elsewhile(p1)if(str=p1->Num)cout<<"ttt是否要删除?(y/n)"<<endl;cout<<"ttt"cin>>ch;if (ch='y'|ch='Y')cout<<"ttt正在删除.&qu
30、ot;<<endl;elsereturn;p2->next=p1->next;flag=1;break;elsep2=p1;p1=p1->next;if(!flag)cout<<"ttt未找到要删除的节点!"<<endl;elsecout<<"ttt节点被删除,起编号是:"<<str<<endl;cout<<"ttt删除完成!"<<endl;修改函数:void manage:renew(int str)person* p;
31、int num,flag=0;if(NULL=head)cout<<"ttt请先录入数据再修改!"<<endl;return;p=head;while(p)if(str=p->Num)flag=1;break;elsep=p->next;if(flag)domenu3(str);cin>>num;switch(num)case 1:cout<<"ttt请输入新的编号:"cin>>p->Num;cout<<"ttt编号已修改!"<<en
32、dl;system("pause");break;case 2:cout<<"ttt请输入新的姓名:"cin>>p->Name;cout<<"ttt姓名已修改!"<<endl;system("pause");break;case 3:cout<<"ttt请输入新的年龄:"cin>>p->Age;cout<<"ttt年龄已修改!"<<endl;system("p
33、ause");break;case 4:cout<<"ttt请输入新的性别:"cin>>p->Sex;cout<<"ttt性别已修改!"<<endl;system("pause");break;case 5:cout<<"ttt请输入新的系部:"cin>>p->Depart;cout<<"ttt系部已修改!"<<endl;system("pause");bre
34、ak;case 6:cout<<"ttt请输入新的电话:"cin>>p->Tel;cout<<"ttt电话已修改!"<<endl;system("pause");break;case 7:p->change(num);break;case 8:p->change(num);break;case 0:break;default:break;while(num!=0);cout<<"ttt修改成功!"<<endl;elsecout
35、<<"nttt查询结果不存在!"<<endl;显示函数:void manage:print(void)person* p;if(head=NULL)cout<<"ttt请先录入数据!"<<endl;elsep=head;while(p)p->print();p=p->next;保存函数:void manage:save(const char* filename)person* p;if(head=NULL)cout<<"ttt请先录入数据!"<<end
36、l;return;fstream file;file.open(filename,ios:out);if(file.fail()cout<<filename<<endl;cerr<<"ttt文件打开失败!"<<endl;return;file.close();p=head;while(p)p->save(filename);p=p->next;cout<<"ttt文件保存成功!"<<endl;6、菜单函数主界面选择菜单:void menu1()system("c
37、ls");cout<<"ttt*人员管理系统*"<<endl;cout<<"ttt*1.插入*"<<endl;cout<<"ttt*2.查询*"<<endl;cout<<"ttt*3.删除*"<<endl;cout<<"ttt*4.修改*"<<endl;cout<<"ttt*5.显示*"<<endl;cout<<
38、"ttt*6.保存*"<<endl;cout<<"ttt*0.退出*"<<endl;cout<<"ttt*"<<endl;cout<<"ttt请输入操作选项:"插入信息选择菜单:void menu2()system("cls");cout<<"ttt*插入对象*"<<endl;cout<<"ttt* 1.教师 *"<<endl;cout&
39、lt;<"ttt* 2.学生 *"<<endl;cout<<"ttt* 3.机关 *"<<endl;cout<<"ttt* 0.退出 *"<<endl;cout<<"ttt*"<<endl;cout<<"ttt请输入插入对象前的选项:"修改选择菜单:void menu3(int temp)system("cls");cout<<"ttt*修改选项*&qu
40、ot;<<endl;cout<<"ttt*1.编号2.姓名3.年龄 *"<<endl;cout<<"ttt*4.性别5.系部6.电话 *"<<endl;if (temp/1000=1)cout<<"ttt*7.薪水8.主讲课程 *"<<endl;if (temp/1000=2)cout<<"ttt*7.学分8.专业 *"<<endl;if (temp/1000=3)cout<<"ttt*
41、7.职位8.工资 *"<<endl;cout<<"ttt*0.返回 *"<<endl;cout<<"ttt*"<<endl;cout<<"ttt请输入修改选项:"7、主函数int main()int choice,choice2;person* p=NULL;manage m;int temp;teacher a1;student a2;staff a3;char filename20;while(choice!=0)menu1();cin>>
42、;choice;switch(choice)case 1:do menu2();cin>>choice2;switch(choice2)case 1:cout<<"nttt请输入老师的信息:"<<endl;a1.input();p=&a1;m.insert(p);system("pause");break;case 2:cout<<"nttt请输入学生的信息:"<<endl;a2.input();p=&a2;m.insert(p);system("p
43、ause");break;case 3:cout<<"nttt请输入机关人员的信息:"<<endl;a3.input();p=&a3;m.insert(p);system("pause");break;case 0:break;default:cout<<"nttt请输入正确的选择!"<<endl;while (choice2!=0);break;case 2:cout<<"nttt请输入要查询的编号:"<<endl;cout
44、<<"ttt"cin>>temp;m.find(temp);system("pause");break;case 3:cout<<"nttt请输入要删除的编号:"<<endl;cout<<"ttt"cin>>temp;m.delet(temp);system("pause");break;case 4:cout<<"nttt请输入要修改的编号:"<<endl;cout<<
45、;"ttt"cin>>temp;m.renew(temp);system("pause");break;case 5:m.print();system("pause");break;case 6:cout<<"nttt请输入保存文件名:"<<endl;cout<<"ttt"cin>>filename;m.save(filename);fstream file;file.open(filename,ios:out|ios:app);if (file.fail()cout<<filename<<endl;cerr<<"ttt文件打开失败!"<<endl;break;system("pause");break;case 0:system("cls");cout<<"* 欢迎再次使用本管理系统!*"<<endl;break;default:cout<
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 海洋油气平台废弃物对生态环境的影响评估
- 《超高速碰撞2A12铝板产生闪光的物理机制研究》
- 中国文化遗产说明文550字
- 个案护理工作计划
- 二零二四年度车位产权转让协议
- 保山学院《古代汉语》2022-2023学年第一学期期末试卷
- 个人住房借款保证合同范本
- 《副线孔板辅助水力空化体系的构建及降解三苯甲烷类有机污染物的研究》
- 保山学院《产品系统设计》2022-2023学年第一学期期末试卷
- 个人和律师事务所合同模板
- 注塑工艺卡片
- 司法鉴定中心作业指导书
- 《人民币防伪及假货币》知识考试题库及答案
- 译林版九年级英语上册Unit 6 Reading (II) 示范公开课教学课件
- 心衰的健康宣教
- 统编教材语文要素的落实例谈课件(新)
- DB14∕T 1217-2016 粉煤灰与煤矸石混合生态填充技术规范
- 急性化脓性腹膜炎ppt
- DB14-T 2677-2023 林木种质资源原地保存库营建技术规程
- CQI-12特殊过程:涂装系统评估表(中文第三版)
- 七年级上册《劳动与技术》教案全册
评论
0/150
提交评论