1、 贵州工程应用技术学院 课 程 设 计 (数据结构) 班 级: 程序设计人员: 报告制作人员: 答 辩 人 员: 指 导 教 师: 2015年3月1日 课程设计任务书及成绩评定 课题名称 病人看病模拟程序 Ⅰ、题目的目的和要求:
2、 1、设计目的 巩固和加深对数据结构的理解,通过上机实验、调试程序,加深对课本知识的理解,最终使学生能够熟练应用数据结构的知识写程序。 (1)通过本课程的学习,能熟练掌握几种基本数据结构的基本操作。 (2)能针对给定题目,选择相应的数据结构,分析并设计算法,进而给出问题的正确求解过程并编写代码实现。 2、设计题目要求: 编写一个程序,采用链式队列模拟病人到医院就诊的过程,设计一个病人就医管理系统。 Ⅱ、设计进度及完成情况 日 期 内 容 第1周 1、 课程设计分组分工、选题 2、 查阅参考文献 3、 确定设计
3、方案和制定进度计划 第2周 第一部分概述 第二部分系统分析 第3、4周 第三部分概要设计 第5、6周 第四部分详细设计 第7周 第五部分运行与测试 第8周 第六部分撰写并整理课程设计报告 第9周 课程设计答辩 Ⅲ、主要参考文献及资料 [1] 严蔚敏 数据结构(C语言版)清华大学出版社 2007 [2] 严蔚敏 数据结构题集(C语言版)清华大学出版社 1999 [3] 谭浩强 C程序设计(第四版) 清华大学出版社 [4] 与所用编程环境相配套的C语言资料 Ⅳ、成绩评定: 成 绩:
4、教师填写) 指导老师: (签字) 2015 年 3 月 1 日 精品资料 目 录 第一章 概述……………………………………………………………1 第二章 系统分析………………………………………………………2 第三章 概要设计………………………………………………………3 第四章 详细设计………………………………………………………4 第五章 运行与测试……………………………………………………5 第六章 总结与心得……………………………………………………6 参考文献……………………………………………………
5、…………7 第一章 概述 课程设计是实践性教学中的一个重要环节,它以某一课程为基础,可以涉及和课程相关的各个方面,是一门独立于课程之外的特殊课程。课程设计是让同学们对所学的课程更全面的学习和应用,理解和掌握课程的相关知识。《数据结构》是一门重要的专业基础课,是计算机理论和应用的核心基础课程。 数据结构课程设计,要求学生在数据结构的逻辑特性和物理表示、数据结构的选择和应用、算法的设计及其实现等方面,加深对课程基本内容的理解。同时,在程序设计方法以及上机操作等基本技能和科学作风方面受到
6、比较系统和严格的训练。 在这次的课程设计中我们选择的题目是病人看病模拟程序,我们将采用链式队列来模拟病人看病的程序。传统的病人看病就诊的基本业务活动有挂号、排队、就诊。通常病人去医院排队看医生主要重复两件事情: (1)病人到达诊室,将病历本交给护士,排队等待队列中候诊。 (2)护士从等待队列中取出下一位病人病历,该病人进入诊室就诊。 当你拿上自己的病历后到达相应的诊室门口进行排队,等待护士叫到你相对应的号数你才能进入就诊室就诊,这样一来排队就诊的效率相对就较低,也浪费了医院的劳动力,但是现在这些业务可以借助计算机系统完成,我们可以通过计算机设计相关的程序来处
7、理相关的排队就诊问题,这样效率可以得到提高,也可以减少劳动力的浪费,让我们负责排队就诊的护士可以去帮助其他更多的人,这就使得病人看病的相关排队就诊等相关手续变简、效率变高、劳动力得到充分的释放,既方便病人,又方便医生和护士。 第二章 系统分析 该项目需要模拟病人看病的步骤,由于病人看病一般规则都是先到先排,排在队前的先就诊。根据这个特点可以采取队列(先进先出)的形式来存储数据元素构建数据结构。由于一般的医院都不止一个科室故在本题中设计六个科室,因此需设计六个队列。依据该项目需求实现的排队、就诊、查看排队人数等功能。可以抽象出需要设计的算法有:队列数据结构的定义、队
8、列的初始化、队列的插入操作、队列的删除操作、求队列长度以及销毁队列等基本操作。 本程序采用菜单方式,其选项及功能说明如下: 显示可选择的各诊室。 排队——输入排队病人的病历号,加入到某诊室病人排队队列中。 就诊——该诊室病人排队队列中最前面的病人就诊,并将其从队列中删除。 查看各诊室排队——从队首到队尾列出所有的该诊室排队病人的病历号。 不再排队,余下依次就诊——从队首到队尾列出所有的排队病人的病历号及就诊诊室,并退出运行。 下班——退出运行。 第三章 概要设计 1、 数据结构设计 队列是一种特殊的线性表
9、是限制在表的、一端进行插入和另一端进行删除的线性表。表中允许插入的一端称为队尾(rear),允许删除的另一端称为队头(front)。队列可以采用顺序存储和链式存储两种方式,依据本课题要求采用链式存储方式更为方便,故采用队列的链式存储这一数据结构来处理各种操作。具体的结构定义如下: 1、链队节点元素(抽象出的病人数据结构)类型定义 Typedef sturuct node { Long data;//队列节点的内容,即为存放病人的基本信息 struct node*next;//下个元素的指针,即为下一位病人的地址}qnode*pqnode;
10、 2将头尾指针封装在一起的链队(排队队列) Typedef struct { Pqnode front,rear;//队列的头尾元素指针}linkqueue,*plinkqueue 2、算法的设计 本程序包含两个模块: a、主程序模块 void main() b、队列操作模块:实现所要求的所有实际操作; 3、抽象数据类型图的定义 此程序采用队列数据结构,存储结构为单链表,采用此种结构一方面可 以减少数据复杂程度,增加系统稳定性;另一方面,利于动态分配内存的
11、放法,便于内存管理,充分利用内存空间。 Int menu_select()//菜单选择程序,要求用户输入一个正确的菜单选项。如果不正确,则重复调用此子程序,知道输入的值是正确的。 Struct bingli*(creat())//创建一个单链表。如果创建成功,则返回这个单链表的表头;如果创建不成功,则退出程序。 Void listlnsert_rear(struct bingli*head)//创建一个单链表成功后,再次排队时则调用此子程序,作用是在单链表尾部插入一个病历号码。如果插入不成功,则退出程序。 Struct bingli *(listdelete(stru
12、ct bingli*head))//就诊程序。作用是输出就诊的病历号(即队首元素),并且删除队首元素、释放其所占空间。 Void display(struct bingli*head)//显示队列所有元素 4、 主程序(main) 退出运行(return) 查看排队情况(display) 就诊(Listdelete) 不在排队,余下顺序就诊(display,return) 排队(creat) Welcome To Download !!! 欢迎您的下载,资料仅供参考!






