ImageVerifierCode 换一换
格式:DOCX , 页数:20 ,大小:17.49KB ,
资源ID:11422653      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/11422653.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(05 设计异质链表实现学校人员管理.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

05 设计异质链表实现学校人员管理.docx

1、05 设计异质链表实现学校人员管理第5章 设计异质链表实现学校人员管理5.5 源程序代码/*/* 模块名称:12.cpp 功能描述:这是一个非多态方法实现的异质链表程序 创建人 : 修改记录:*/#include #include #include /枚举三种节点类型enum node_type student,staff,professor;/结构体,表示学生的特殊信息struct student_type float average; /平均分 int grade; /年级;/*/* 函数名称:node 功能描述:定义类node 修改记录:*/class node friend class

2、 list;private: char name15; /姓名 char sex2; /性别 int age; /年龄 char ID20; /身份证号 char address30; /地址 long phone; /电话 node_type type; /节点类型 /联合,定义单一节点类型 union student_type s; float annual_salary; float hourly_salary; ; node * next;public: node(char * name1,char * sex1, int age1,char * id1,char * address1

3、,long phone1,node_type type1) strcpy(name,name1); strcpy(sex,sex1); age= age1; strcpy(ID,id1); strcpy(address,address1); phone= phone1; type= type1; next= 0; node() name0=0; sex0=0; age= 0; ID0=0; address0=0; phone= 0; next= 0; /*/ /* 函数名称:set_node_type 功能描述:设置节点的类型 修改记录: */ void set_node_type(node_

4、type type1) type=type1; /*/ /* 函数名称:set_name 功能描述:设置姓名 修改记录: */ void set_name(char * name1) strcpy(name,name1); /*/ /* 函数名称:set_sex 功能描述:设置性别 修改记录: */ void set_sex(char * sex1) strcpy(sex,sex1); /*/ /* 函数名称:set_age 功能描述:设置年龄 修改记录: */ void set_age(int age1) age= age1; /*/ /* 函数名称:set_ID 功能描述:设置身份证号 修

5、改记录: */ void set_ID(char * id1) strcpy(ID,id1); /*/ /* 函数名称:set_address 功能描述:设置地址 修改记录: */ void set_address(char * address1) strcpy(address,address1); /*/ /* 函数名称:set_phone 功能描述:设置电话号码 修改记录: */ void set_phone(long phone1) phone= phone1; /*/ /* 函数名称:set_average 功能描述:设置学生的平均分 修改记录: */ void set_average

6、(float average1) s.average= average1; /*/ /* 函数名称:set_grade 功能描述:设置学生的年级 修改记录: */ void set_grade(int grade1) s.grade=grade1; /*/ /* 函数名称:set_annual_salary 功能描述:设置教授的年薪 修改记录: */ void set_annual_salary(float salary) annual_salary= salary; /*/ /* 函数名称:set_annual_salary 功能描述:设置教工的小时工资 修改记录: */ void set_

7、hourly_salary(float hsalary) hourly_salary= hsalary; ;/*/* 函数名称:list 功能描述:list类的定义 修改记录:*/class listprivate: node * root;public: list() root= 0; void insert(node * n); void remove(char * id1); void search(char * id1); void print_list();/*/* 函数名称:insert 功能描述:插入节点 修改记录:*/void list:insert (node * n) /l

8、ist 以ID为关键字排序,ID从小到大的顺序进行排列 char key18; strcpy(key,n-ID) ; node * current_node=root; node * previous= 0; while(current_node!=0 & strcmp(current_node-ID,key)next ; node*new_node=new node(n-name ,n-sex ,n-age ,n-ID ,n-address ,n-phone,n-type ); switch(n-type ) case student: new_node-s.grade =n-s.grade

9、 ; new_node-s.average = n-s.average ; break; case professor: new_node-annual_salary = n-annual_salary ; break; case staff: new_node-hourly_salary = n-hourly_salary ; new_node-next = current_node; if(previous=0) root= new_node; else previous-next= new_node;此函数的效果图可以参考图5.2。/*/* 函数名称:remove 功能描述:删除节点 修

10、改记录:*/void list:remove (char * id1) node * current_node= root; node * previous= 0; while(current_node!=0 & strcmp(current_node-ID,id1)next ; if(current_node!=0 & previous=0) root=current_node-next ; delete current_node; cout身份证号:id1成功删除!next = current_node-next ; delete current_node; cout身份证号:id1成功删

11、除!endl; else cout对不起,链表中没有这个人员的信息!endl;此函数的效果图可以参考图5.3。/*/* 函数名称:print_list 功能描述:显示整个链表 修改记录:*/void list:print_list () node * cur= root; while(cur!=0) coutt姓名:ttnameendl; coutt性别:ttsexendl; coutt年龄:ttageendl; coutt身份证号:tIDendl; coutt地址:ttaddressendl; coutt电话号码:tphonetype ) case student: coutt人员身份:t学

12、生endl; coutt平均分:ts.average endl; coutt年级:tts.grade endl; break; case professor: coutt人员身份:t教授endl; coutt年薪:ttannual_salary endl; break; case staff: coutt人员身份:t教工endl; coutt小时工资:thourly_salary next; coutID,id1)next ; if(current_node!=0) coutt姓名:ttnameendl; coutt性别:ttsexendl; coutt年龄:ttageendl; coutt身

13、份证号:tIDendl; coutt地址:ttaddressendl; coutt电话号码:tphonetype ) case student: coutt人员身份:t学生endl; coutt平均分:ts.average endl; coutt年级:tts.grade endl; break; case professor: coutt人员身份:t教授endl; coutt年薪:ttannual_salary endl; break; case staff: coutt人员身份:t教工endl; coutt小时工资:thourly_salary endl; break; else cout对

14、不起,没有找到这个人!endl;此函数的效果图可以参考图5.5。/*/* 函数名称:main 功能描述:主函数 修改记录:*/void main() int i=1; coutendlendl; cout -endl; cout * *endl; cout 欢迎进入异质链表的非多态性实现程序endl; cout * *endl; cout -endl; list people; node temp; char na15; char sex2; int age; char ID20; char add30; long ph; int type; float annual_salary; floa

15、t hourly_salary; float average; int grade; while(i) coutendlendl; cout请选择您的查询内容:endlendl; cout 1.链表中插入节点;endl; cout 2.链表中删除节点;endl; cout 3.显示整个链表;endl; cout 4.查询链表中的节点;endl; cout 0.退出;endl; couti; cout=0 & i=4) switch(i) /case1:链表中插入节点 case 1: coutna; coutsex; coutage; coutID; coutadd; coutph; coutt

16、ype; /输入三种人员的不同信息 switch(type ) /学生信息 case 0: coutaverage; coutgrade; temp.set_average (average); temp.set_grade (grade); temp.set_node_type (student); break; /教授信息 case 1: coutannual_salary; temp.set_annual_salary (annual_salary); temp.set_node_type (professor); break; /教工信息 case 2: couthourly_sala

17、ry; temp.set_hourly_salary (hourly_salary); temp.set_node_type (staff); break; temp.set_name (na); temp.set_sex (sex); temp.set_age (age); temp.set_ID (ID); temp.set_address (add); temp.set_phone (ph); people.insert (&temp); break; /删除节点信息 case 2: coutID; people.remove (ID); break; /显示链表所有节点 case 3: people.print_list (); break; /查询链表中的节点 case 4: coutID; people.search (ID); break; else cout按键错误,请重新选择!endl; coutendl;

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1