数据结构与综合编程实践专周设计报告.doc_第1页
数据结构与综合编程实践专周设计报告.doc_第2页
数据结构与综合编程实践专周设计报告.doc_第3页
数据结构与综合编程实践专周设计报告.doc_第4页
数据结构与综合编程实践专周设计报告.doc_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

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

文档简介

电子科技大学成都学院云计算系实践专周设计报告课 程 名 称:_面向对象与数据结构强化 设 计 题 目:_综合编程 指导 教师 组:_ 学 号:_ 姓 名:_ _ 云计算科学与技术系制2014年6月目 录目 录第1章 顺序表之二路归并11.1任务目标11.2任务分析11.3设计与实现11.3.1核心逻辑11.3.2实现过程11.3.3核心代码21.4成果展示31.4.1测试步骤31.4.2运行效果3第2章 链表之学生信息管理42.1 任务目的42.2 任务分析42.3 设计与实现42.3.1核心逻辑.42.3.2实现过程42.3.3核心代码42.4 成果展示72.4.1测试步骤72.4.2运行效果7第3章 队列之病人看病93.1 任务目的93.2 任务分析93.3 设计与实现93.3.1核心逻辑93.3.2实现过程93.3.3核心代码93.4 成果展示123.4.1测试步骤123.4.2运行效果12参考文献14致谢15总结1617第1章 顺序表之二路归并第1章 顺序表之二路归并1.1任务目标任意输入一个顺序表,对其进行拆分合并后,使其成为一个递增有序的顺序表。.1.2任务分析首先定义四个空数组,长度不定。第一个用来存储用户输入的数字元素,第二个用来存放在原数组拆分后其中元素索引下标为奇数的元素,第三个用来存放在原数组拆分后其中元素索引下标为偶数的元素,第四个用来存放分拆之后又合并的元素。然后再对第二个以及第三个数组中的元素进行冒泡排序,从而使它们成为递归有序的顺序表。最后对第二个及第三个数组中的元素一一进行比较,按照大小的顺序将其一一放入到第四个数组中,从而完成对目标的实现。1.3设计与实现1.3.1核心逻辑采用面向对象的编程设计思路来实现任务。1.3.2实现过程首先创建一个类,并在窗体设计区添加两个按钮,一个是拆分,一个是合并。然后分别对它们添加Click事件。拆分是按照用户所输入的数字的索引下标来进行排序的,下标为奇数的在拆分后被显示在Textbox2中,下标为偶数的数字则被显示在Textbox3中。在合并时,对拆分后的这两串数组进行冒泡排序并将各自的元素与对方的元素一一进行比较后,最终结果显示在Textbox4中。1.3.3核心代码 private int SortArray(string list)/冒泡排序 int resultArray = new intlist.Length - 1; for (int i = 0; i list.Length; i+) if (listi != ) resultArrayi = int.Parse(listi); for (int j = 1; j resultArray.Length; j+) /外层循环每次把参与排序的最大数排在最后 for (int i = 0; i resultArrayi + 1) /如果前一个数大于后一个数,则交换两个数 int temp = resultArrayi; resultArrayi = resultArrayi + 1; resultArrayi + 1 = temp; return resultArray;1.4成果展示1.4.1测试步骤首先任意输入一串数字,数字与数字之间以逗号隔开,然后点击“拆分顺序表”按钮,随即便可在窗体中央查看到拆分的结果。然后再点击合并按钮,按从小到大顺序排列好的一串数字就会显示在窗体最底端的白色方条中。1.4.2运行效果图1-1 运行效果第2章 学生信息管理第2章 链表之学生信息管理2.1 任务目的管理学生的个人信息,包括添加,查找,修改,删除。2.2 任务分析通过输入学生的个人信息,能够实现添加;点击修改,能够对其信息进行修改;当选中一个学生的基本信息时,既能够点击修改按钮对其进行修改,也能点击删除按钮对其实行删除操作。2.3 设计与实现2.3.1核心逻辑.通过链表的功能来实现对学生个人信息的查找,删除,添加及修改。2.3.2实现过程首先创建一个临时节点类,用于两个窗体之间传递数据,包括学号与用户操作类型。接着创建一个学生单链表节点类,包括学生的学号,姓名,性别,具体出生日期,班号,电话,住址。再定义一个学生单链表类,其中包括对学生信息的查找,添加与删除的具体实现方法,步骤。具体实现机制与单链表的功能机制相同。2.3.3核心代码public bool CreateList() /采用尾插法从文件读数据建立学生单链表 StudList s, r = head; if (!File.Exists(filepath) /不存在该文件时 return false; else /存在文件时 FileStream fs = File.OpenRead(filepath); BinaryReader sb = new BinaryReader(fs, Encoding.Default); fs.Seek(0, SeekOrigin.Begin); while (sb.PeekChar() -1) s = new StudList();/学生链表 s.no = sb.ReadInt32();/ = sb.ReadString();/姓名 s.sex = sb.ReadString();/性别 s.year = sb.ReadInt32();/出生年份 s.month = sb.ReadInt32();/出生月份 s.day = sb.ReadInt32();/出生日期 s.classno = sb.ReadString();/所在班级 s.telephone = sb.ReadString();/联系电话 s.place = sb.ReadString();/住址 s.dispflag = true;/ r.next = s; r = s; r.next = null; sb.Close(); fs.Close(); return true; public void SaveList() /将学生记录存储到指定文件中 StudList p = head.next; if (File.Exists(filepath) /存在该文件时删除之 File.Delete(filepath); FileStream fs = File.OpenWrite(filepath); BinaryWriter sb = new BinaryWriter(fs, Encoding.Default); while (p != null)/循环条件 sb.Write(p.no); sb.Write();/姓名 sb.Write(p.sex);/性别 sb.Write(p.year);/出生年月日 sb.Write(p.month)/; sb.Write(p.day);/ sb.Write(p.classno);/班号 sb.Write(p.telephone);/电话号码 sb.Write(p.place);/住址 p = p.next;/ sb.Close(); fs.Close(); 2.4 成果展示2.4.1测试步骤输入学生的学号,班号,点击确定实现查找功能,如果输入有误,点击重置就可重新输入。然后选中一个学生的个人信息,点击修改或删除按钮即可对其信息进行修改或删除。点击添加按钮,在添加窗体中输入对应的信息,点击添加,返回主界面即可查看添加后的结果。2.4.2运行效果图2-1 学生信息管理主界面图2-2 修改或添加学生记录第3章 队列之病人看病第3章 队列之病人看病3.1 任务目的利用队列的基本功能,实现病人排队就诊的问题。包括显示正在排队的病人与已经就诊的病人,还可实现当医生下班时,能够让医生知道还有哪些病人尚未就诊,从而方便病人与医院方面的协调。3.2 任务分析首先需要定义一个队列的节点类,再定义一个队列类,类的成员包括入队,出队。整个程序的实现就是依赖于队列的功能,病人只不过是形象化的一个数据对象,对其的操作也包括判断队列是否为空,是否下溢,是否超出存储空间。3.3 设计与实现3.3.1核心逻辑使用队列的基本功能,将病人模拟化为一个个队列的成员进行操作。3.3.2实现过程把病人排队等候封装到入队操作里面去,将病人就诊封装到出队操作中去,医生下班提示所显示的信息就是队列中仍然存留的成员。3.3.3核心代码public class QNode/定义一个队列的节点类 public string name;/姓名 public QNode next;/节点 class QueueClass/定义一个队列的类 QNode front;/队头 QNode rear;/队尾 public QueueClass() front = null;/队列初始时为空 rear = null; public void enQueue(string na)/入队操作 QNode p = new QNode(); = na; p.next = null; if (rear = null)/判断队尾是否为空 front = rear = p; else rear.next = p; rear = p; public bool deQueue(ref string e)/出队操作 QNode t; if (rear = null)/判断队尾是否为空 return false; t = front; if (front = rear) front = rear = null; else front = front.next; e = ; return true; public bool Queuehead(ref string e) if (rear =null ) return false ; e = front .name ; return true; public string Display() string mystr = ; int i = 1; QNode p = front; if (rear = null)/如果队尾为空 return 没有人排队; while (p != null) mystr += i.ToString() + 名 + + rn;/显示还在排队的病人 i+; p = p.next; return mystr; 3.4 成果展示3.4.1测试步骤在对应的空白处输入病人的姓名,然后点击确定按钮即可查看相应的结果。比如在排队的空格内输入病人姓名点击确定,然后重复此操作继续添加排队的病人,再点击右边的“查看排队情况”按钮,即可查看具体的排队情况。接着在下方输入就诊病人的姓名,点击确定查看显示结果。点击医生下班按钮,即可显示提示信息,提示医生具体的尚未就诊的病人名单。3.4.2运行效果第3章 队列之病人看病图3-1 病人排队看病界面参考文献参考文献1克里斯托弗.H.洛夫洛克. 服务营销(第三版).北京:中国人民大学出版社,2001.78802胡运权等.运筹学教程(第2版).北京:清华大学出版社,2003.1281323李佳,付强,丁宁。C#开发技术大全M。北京:清华大学出版社,2009-2.4王珊,萨师煊。数据库系统概论(第四版)M。高等教育出版社,2007-11-1.5Mark M. Davis等. 服务管理(第1版).北京:人民邮电出版社, 2006.1321486陈广,林沣,邹园园,雷运理。数据结构C#语言描述。北京大学出版社,2009-3致谢致谢经过这一周的实训,我学到了很多,尽管尚有许许多多的不足仍需我去不断补充,我相信我能学好。在此非常感谢学院能给予我此次锻炼的机会,也非常感谢各位老师给予我的悉心指导与帮助。感谢同学对我的耐心帮助与支持!在今后的学习生活中,我会更加努力学习专业知识,虚心向同学,老师请教。在以后的工作中,也会虚心学习,丰富自己的工作经验。为今后的生活打下一个坚实的基础。总结总结学习数据结构一学期了,仍然觉得很吃力,书上的一些基本概念是可以理解的,但要真正要自己做仍觉得力不从心,根本无从下手,除非照着代码敲一遍才能做出一个完整的程序,这的的确确是一件非常令人头疼的事情。我想这也大概归咎于自己对程序设计语言的不理解吧。数据结构是一门基础课,在日后的工作中占有极其重要的地位,因此无论如何我也要尽我所能的学好它,攻克它。也算是为接下来的专业课学习扫清一个障碍吧。数据结构的应用非常广泛,随着日渐接触的不断加深,

温馨提示

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

评论

0/150

提交评论