1、 1 数 据 结 构 学生学号:学生学号: * 学生姓名学生姓名: * 专业班级:专业班级: * 指导教师指导教师: * 课 程 设 计 报 告 2 目目 录录 单位员工管理系统单位员工管理系统 . 1 停车场管理停车场管理 2 哈弗曼编码哈弗曼编码 4 教学计划编制问题教学计划编制问题 . 6 药店药品销售统计系统药店药品销售统计系统 . 9 校园导航校园导航 .11 附件附件 源程序代码源程序代码 . 15 第第 1 页页 共共 36 页页 1 单位员工通讯录管理系单位员工通讯录管理系 1. 问题描述 为某个单位建立一个员工通讯录管理系统, 可以方便查询每一个员工的办公 室电话、手机号、及
2、电子邮箱。其功能包括通讯录链表的建立、员工通讯信息的 查询、修改、插入与删除、以及整个通讯录表的输出。 2. 主要数据类型和函数 建立员工信息管理系统用到链表的储存结构,通过单链表实现所有操作 可定义如下的存储结构: typedef struct staff /*员工通讯信息的结构类型定义*/ char num; /*员工编号*/ char name8; /*员工姓名*/ char phone; /*办公室电话号码*/ char call; /*手机号码*/ struct staff *next; staff,*Linkliust; 主要函数:LinkList Creat(),void Sea
3、rch(),void Delete(),void Insert(),void change(). 3. 算法设计 A、首先先创建一个链表,定义一个结构体包含一个 next 指针和一个 DataType 型数据 data,构造一个指针类型的函数 LinkList Creat(LinkList找到所需要查找的信息。 C、删除操作:也是根据输入要删除的选项,先查找到要删除的信息位置 while(p-next if(p-next) s=p-next; p-next=s-next; 第第 2 页页 共共 36 页页 2 free(s); 通过指针的变换来实现删除。 D、修改操作:先输入要修改的选项,然后
4、选择要修改的项目进行修改。 4、调试及测试结果 1、建立记录 2、查询记录 其他测试结果这里不一一列举(源代码见附录) 停车场管理(栈和队列的应用)停车场管理(栈和队列的应用) 1、 问题描述 设停车场是一个可以停放 n 辆汽车的狭长通道, 且只有一个大门可供汽车进 出。汽车在停车场内按车辆到达时间的先后顺序,依次有北向南排列(大门在最 南端,最先到达的第一车停放在车场的最北端),若车场内已停满 n 辆车,那么 后来的车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即 可开入;当停车场内某辆车要离开时,在它之后进入的车辆必须先退出车场为它 让路,待该辆车开出大门外,其他车辆再按原
5、次序进入车场,每辆停放在车场的 第第 3 页页 共共 36 页页 3 车在它离开停车场时必须按它停留的时间长短交纳费用。 试为停车场编制按上述 要求进行管理的模拟程序。 2、 需求分析 停车场管理系统,以栈模拟停车场,以队列模拟车场外的便道。首先来的车 辆要进入停车厂或者进入便道。当停车场车辆未满时直接将车停入停车场。当停 车场车辆停满时,则此时进入的车辆应该进入便道。然后等待停车场中的车辆离 去,离去一辆车则便道中的车辆进入停车场。栈以顺序存储结构实现,队列以链 表结构实现 3、 算法设计 算法思路:模拟停车场管理,需要用一个栈来表示停车场,然后用一个队 列用来表示车站停满车时把车停在停车场
6、外的便道上。本实验要定义一个队列两 个栈,其中一个栈可以辅助停车场中的车辆离开,即离开一辆车时,在此车前面的车依次 进入辅助栈,离开后这些车辆再进入停车栈,然后判断队列中是否有车,如果有则将便道 队列中的车辆移进停车厂。否则不进行操作。关于费用的计算,出车站的时间减去进 车站的时间得到的时间差再乘以每小时的停车费用就是这辆车本次停车所需 要交的费用 4、主要函数 void chushihua(SqStack 初始化 void jinche(SqStack 头结点; typedef struct VNode, AdjListMAX_VERTEX_NUM; 图结构; typedef struct ALGraph; 操作结果: 若 G 中存在顶点 u,则返回该顶点在图中位置;否则返