




已阅读5页,还剩20页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
燕山大学面向对象程序设计实验报告 姓 名:课题组的分工:课 程 名 称: 面向对象程序设计指 导 教 师: 周军锋2015年4月项目名称(宋体、黑体、小二号字)作者1,作者2,作者3(燕山大学 材料科学与工程学院)摘要为了更简便的储存一些人员信息,并且实现这些信息的输出,查询和修改,我们设计了双向链表来完成这些工作的操作。链表元素中有指针指向动态分配的内存空间,链表有两个类,Node类和List类,从List类派生出Set类,负责集合操作的实现。运用运算符重载和非运算符的重载,理解了并、交、差操作并不影响参与操作的集合,实现了并交差操作。前言1 项目背景在我们学习了面向对象与程序设计之后,运用已经学过的知识,实现学生信息管理系统。为了更加熟悉类的相关知识,更加熟练的运用运算符的重载,我们以小组为单位,编写了一个简单的学生信息管理系统的程序。2 实施目的 编写一个简单的学生管理系统。学生管理系统有若干学生记录组成,每个记录由学号、姓名和年龄三部分组成,学号为num姓名为那么,年龄为age。学号和年龄为int型,姓名为string。正文1 解决方案为了学生管理系统的实现,我们应用了链表。链表有两个类,Node类和List类,修改链表元素中有指针指向动态分配的内存空间。1.1类nodeNode类的构造和析构函数负责结点本身的初始化和空间回收,用来存放节点指针,节点内容,实现节点的的建立。从List类派生出Set类,负责集合操作的实现。class nodepublic:int num;string name;int age;node *prev;node *next;/*node()this-next=NULL;this-prev=NULL;this-num=NULL;this-=NULL;this-age=NULL;*/;1.2类list List类负责整个链表的管理工作,其构造和析构函数负责整个链表的初始化和回收,类list用来实现功能查找,插入,删除和修改。class listpublic:node *head;node *tail; int length;list():head(NULL),tail(NULL)node * creat( );void show(node *);void show_node(node *);void show_stack(node *,int);node * find(node *);void add(node *);void del(node *);void change(node *);1.2.1查找部分node * list:find(node *h)int n;cout输入要查找学生的学号:n;node *p,*q;q=h;p=q-next;while(p-num!=n)q=q-next;p=q-next;return q;void list:show_node(node *q)node *p;p=q-next;cout学号:numendl;cout姓名:nameendl;cout年龄:ageendl;1.2.2插入部分void list:add(node *h)int b;node *q,*he;he=h;node *p=new node;cout输入要插入的学生信息:n;coutp-num;coutp-name;coutp-age;cout1.在表尾部插入n;cout2.在表头部插入n;cout3.在其他位置插入n;coutb;switch(b)case 1:he-prev-next=p;p-prev=he-prev;he-prev=p;p-next=NULL;length+;cout插入成功!next-prev=p;p-next=he-next;he-next=p;length+;cout插入成功!endl;break;case 3:coutnext-prev=p;p-next=q-next;q-next=p;p-prev=q;length+;cout插入成功!endl;break;default:cout输入错误n; 1.2.3删除部分void list:del(node *h)node *q,*p;int m;coutnext;cout该学生信息:n;cout学号:numendl;cout姓名:nameendl;cout年龄:ageendl;coutm;if(m)if(q=h)q-next=p-next;else if(p-next)q-next=p-next;p-next-prev=q;else q-next=NULL;h-prev=q;delete (p);length-;1.2.4修改部分void list:change(node *h)node *q;cout请查找需要修改的人员n;q=find(h);show_node(q);cout请输入修改后的信息:n;coutq-next-num;coutq-next-name;coutq-next-age;cout修改成功!;2 程序流程图3 程序代码#include #includeusing namespace std;class nodepublic:int num;string name;int age;node *prev;node *next;/*node()this-next=NULL;this-prev=NULL;this-num=NULL;this-=NULL;this-age=NULL;*/;class listpublic:node *head;node *tail; int length;list():head(NULL),tail(NULL)node * creat( );void show(node *);void show_node(node *);void show_stack(node *,int);node * find(node *);void add(node *);void del(node *);void change(node *);node* list:creat()int n;node *head=new node;tail=head;coutn;length=n;cout请输入第1个人员信息:endl;node *p=new node;coutp-num;coutp-name;coutp-age;tail-next=p; tail=p;head-prev=tail;for(int i=1;in;i+)cout请输入第i+1个人员信息:endl;node *p=new node;coutp-num;coutp-name;coutp-age;tail-next=p;p-prev=tail;tail=p;head-prev=tail;tail-next=NULL;return head;void list:show_stack(node *h,int ln)node *hs;int le=ln;hs=h-prev;/he-prev=tail;for(int i=0;ile;i+) cout 学号:姓名:年龄:endl;coutnumnameageprev;void list:show(node *h) node *he;he=h-next;while (he-next) /含两个元素及以上 cout学号:numendl;cout姓名:nameendl; cout年龄:agenext; cout学号:numendl;cout姓名:nameendl; cout年龄:ageendl;cout输出结束n;node * list:find(node *h)int n;cout输入要查找学生的学号:n;node *p,*q;q=h;p=q-next;while(p-num!=n)q=q-next;p=q-next;return q;void list:show_node(node *q)node *p;p=q-next;cout学号:numendl;cout姓名:nameendl;cout年龄:ageendl;void list:add(node *h)int b;node *q,*he;he=h;node *p=new node;cout输入要插入的学生信息:n;coutp-num;coutp-name;coutp-age;cout1.在表尾部插入n;cout2.在表头部插入n;cout3.在其他位置插入n;coutb;switch(b)case 1:he-prev-next=p;p-prev=he-prev;he-prev=p;p-next=NULL;length+;cout插入成功!next-prev=p;p-next=he-next;he-next=p;length+;cout插入成功!endl;break;case 3:coutnext-prev=p;p-next=q-next;q-next=p;p-prev=q;length+;cout插入成功!endl;break;default:cout输入错误n; void list:del(node *h)node *q,*p;int m;coutnext;cout该学生信息:n;cout学号:numendl;cout姓名:nameendl;cout年龄:ageendl;coutm;if(m)if(q=h)q-next=p-next;else if(p-next)q-next=p-next;p-next-prev=q;else q-next=NULL;h-prev=q;delete (p);length-;void list:change(node *h)node *q;cout请查找需要修改的人员n;q=find(h);show_node(q);cout请输入修改后的信息:n;coutq-next-num;coutq-next-name;coutq-next-age;couthead=c-tail=NULL;node *q=c-head;node *f=this-head;c-length=0;node*d;while(f-next)/for(int i=1;ilength;i+)/f=f-next;int flag=0;d=g.head;int i=g.length;while(d-next)/for(int j=1;jnext;if(f-num=d-num)&(f-name=d-name)&(f-age=d-age)flag=1;if(!flag) /f的第i个结点在w中没有相同结点时node *p=new node;p-num=f-num;p-name=f-name;p-age=f-age;q-next=p;q=q-next;c-length+;q-next=NULL;c-tail=q;q=c-head-next;for(int i=1;ilength;i+)coutnumnameagenext;return c;int main()cout-学生信息管理系统-endl;int c,k=1;node*h,*q,*hw;list pre,w;set *l,s;h=pre.creat();s.head=h; cout表的长度为:pre.lengthendl;while(k)couttttt1.查找信息ttttn;couttttt2.插入信息ttttn;couttttt3.删除信息ttttn;couttttt4.修改信息ttttn;couttttt5.队列输出全部信息ttttn;couttttt6.栈输出全部信息ttttn;couttttt7.显示表长ttttn;couttttt8.实现两链表差ttttn;coutc;switch(c)case 1:q=pre.find(h);pre.show_node(q);break;case 2:pre.add(h);break;case 3:pre.del(h);break;case 5:pre.show(h);break;case 4:pre.change(h);break;case 6:pre.show_stack(h,pre.length);break;case 7:cout表的长度为:pre.lengthendl;break;case 8:hw=w.creat();l=s-w;break;case 0:k=0;break;default: cout请输入有效选择!n;return 0;4 程序实现5. 课程设计总结这是一个综合性较强,很实际的一个编程实例。运用了一些基本知识点,可是也并
温馨提示
- 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年腾讯电子签合同模板格式
- 阿尔茨海默症的护理诊断与措施
- 血液透析患者自我管理与健康教育
- 建筑工程施工管理培训课件
- DB14-T 1737-2024 医疗护理员培训机构服务规范
- 物业经理聘用合同
- 理想二语自我对交际意愿的影响:二语坚毅和自信的链式中介作用
- 绳锯切割施工方案
评论
0/150
提交评论