1、数据结构与数据处理应用训练课程名称:数据结构与数据处理应用训练计划学时:32 学时(1 周)一、 课程目的1 培养运用数据结构的基本知识解决实际问题的能力;2 加深对数据结构基本知识的理解;3 发挥各人的想象能力和分析能力,拓展思维空间;4 掌握应用程序设计的基本方法;5 培养书写课程设计报告的能力。二、 课程设计内容与要求具体见附录 I,每位学生任选一题。三、 考核形式考核办法:结合课程设计作品、课程设计报告和平时情况评定。评分标准:程序运行及答辩占 60,课程设计报告占 20%,平时占 20%。评分等级为优秀、 良好、 中等、 及格、不及格五个级别。实现难度不同的课程设计,给不同的分数。若
2、完成项目指定功能,按对应的标准给分;若在完成指定功能的基础上,还添加扩展功能、有创意,给予一定的加分;若运行有错误,酌情减分。课程设计要求独立完成,严禁抄袭,如发现雷同,一经证实,相关人都按作弊处理,没有成绩,并且上报学院。四、 应提交材料1、课程设计报告(实习报告)不少于3000字。格式参见附录II的模板。内容主要包括:(1) 封面。(2) 课程设计题目、摘要、关键词。(3) 内容与要求(说明课程设计题目的具体内容、需实现的功能及要求) 。(4) 总体设计(说明算法总体思路及由哪几大功能模块组成、各功能模块的功能介绍) 。 (5) 详细设计(说明各功能模块的具体实现算法-流程图、存储结构描述
3、、及各功能模块的参数说明) 。(6) 程序测试(给出程序运行结果截图,需包括若干组测试用例以及实现对各种情况的测试) 。(7) 总结(说明调试过程中遇到的问题是如何解决的;对设计与实现的回顾讨论与分析、改进设想;收获与体会等) 。(8) 参考文献(9) 附录(包含源程序)2、程序提交完整的工程文件。在统一答辩完成后,每个教学班交一张光盘,包含所有学生的资料(课程设计报告与程序) ,每个学生的资料放在以“学号姓名”命名的文件夹中。附录 I 课程设计题目:题目一: 航空客运售票服务系统【问题描述】航空客运订票的业务活动包括:查询航线、机票预订和办理退票等。试设计一个航空客运订票系统,以使上述业务可
4、以借助计算机来完成。【具体要求】设民航售票处的计算机系统可以为客户提供下列各项服务:1查询航线:根据旅客提出的终点站名输出下列信息:航班号、飞机号、星期几飞行,最近一天航班的日期和余票额。2. 承办订票业务:根据客户提出的要求(日期、航班号、订票数额)查询该航班票额情况,若尚有余额,则为客户办理订票手续,并输出座位号(座位号信息的输出可作为选做部分) ;若已满员或余票额少于订票额,则需要重新询问客户要求。若需要,可预约登记排队等候。3承办退票业务:根据客户提供的情况(日期、航班、退票数额) ,为客户办理退票手续,然后查询该航班是否有人预约登记,首先询问排在第一的客户,若所退票数能满足他的要求,
5、则为他办理订票手续,否则依次询问其他排队预约的客户。【实现提示】每条航线应包含的信息有:终点站名、航班号、飞机号、飞行日期(星期几) 、乘员定额、余票额、座位信息(选做内容,可用一张表记录每个座位是否已售出) 、已订票的客户名单(包括姓名、订票额、座位号(选做) )和预约登记的客户名单(包括日期、姓名、所需票额) 。这最后两项显然是一个线性表和一个队列。为查找方便、已订票客户的线性表应按客户姓名有序,并且,为插入和删除方便,应以链表作存储结构。由于预约人数无法预料,队列也应以链表作存储结构。整个系统需汇总各条航线的情况登录在一张线性表上,由于航线基本不变,可采用顺序存储结构,并按航班有序或按终
6、点站名有序。每条航线是这张表上的一个记录,包含上述八、九个域,其中乘员名单域为指向乘员名单链表的头指针,预约登记客户名单域为分别指向队头和队尾的指针。【测试数据】自己设计,报告上要求写出多批数据测试结果。【选做内容】当客户订票要求不能满足时,系统可向客户提供到达同一目的地的其它航线情况。大家还可以充分发挥自己的想象力,增加你的系统的功能和其它服务项目。下标 含义 值终点站名 北京航班号 B101飞机号日期(星期几) 1定额 80余票额 78座位情况已订票客户预约登记客户0其他终点站名 北京航班号 B201飞机号日期(星期几) 2定额 100余票额 100座位情况已订票客户预约登记客户1其他1
7、2 3 801 1 0 0已订票客户单链表已登记客户队列题目二: 多级反馈队列调度算法的实现【问题描述】多级反馈队列调度算法是操作系统中 CPU 处理机调度算法之一,该算法既能使高优先级的进程(任务)得到响应又能使短进程(任务)迅速完成。UNIX操作系统便采取这种算法。试用 C 语言模拟某多级反馈队列调度算法。【具体要求】多级反馈队列调度算法描述:1、该调度算法设置四级就绪队列:前三级就绪队列采用时间片轮转法,时间片大小分别为 2、4 和 8;最后一级就绪队列采用 FIFO 调度。2、任务在进入待调度的队列等待时,首先进入优先级最高的队列等待。3、首先调度优先级高的队列中的任务。若高优先级中队
8、列中已没有调度的任务,则调度次优先级队列中的任务,依次类推。4、对于同一个队列中的各个任务,按照队列指定调度方法调度。每次任务调度执行后,若没有完成任务,就被降到下一个低优先级队列中。5、低优先级队列中的任务在运行时,若有高优先级任务新到达,那么低优先级任务在运行完一个时间片后中止运行,CPU 马上分配给新到达的任务,即算法支持抢占式。 (这部分可作为选做,最低要求可以是非抢占式的,即低优先级队列中的某任务完成规定的时间片后再去检查高优先级队列是否有新任务到达。 )6、为方便实现,时间以 1 为单位,用整数数据表示;且每个时间点,最多只有一个任务请求服务(即输入) 。【实现提示】实现一个队列数
9、组(queue array) ,该数组的每个元素都代表一个长度可变的队列,队列中的每个元素则代表一个任务 job,任务结构定义如下:typedef struct Job int JobNum; /任务号int ArriveTime; /到达时刻int ResponTime /响应时间int RunTime; /运行时间struct Job *next;【测试数据】输入:任务号 到达时刻 运行时间输出:任务号 响应时间 离开时刻 周转时间样例:输入数据:任务号 到达时刻 运行时间1 0 32 1 23 4 154 5 25 6 66 12 2输出数据(抢占式):任务号 响应时间 离开时刻 周转时
10、间2 1 4 34 1 8 31 0 11 116 0 14 25 2 21 153 0 30 26输出数据(非抢占式):任务号 响应时间 离开时刻 周转时间2 1 4 34 1 8 31 0 11 116 3 17 55 2 21 153 0 30 26自己设计多批数据测试,报告上要求写出多批数据测试结果。【选做内容】可以考虑对各个任务赋予不同的优先级(通过输入确定) ,按优先级将各个任务放入四级队列中的某一个队列,然后按上述调度法调度。还可以考虑一个时间点可能有多个任务同时请求服务(即输入) 。大家可以充分发挥自己的想象力,增加你的系统功能。附录 II 课程设计报告参考模板:学生实习报告课
11、程名称_ 数据结构与数据处理应用训练 题目名称 学生学院 专业班级 学 号 学生姓名 指导教师 2013 年 3 月 日单击此处添加课程设计题目 单击此处添加姓名 单击此处添加所在学院、专业班级 【摘要】 单击此处添加摘要 【关键词】 单击此处添加关键词 , 单击此处添加关键词 , 单击此处添加关键词 ,单击此处添加关键词 以下是说明文字,正式成文后请删除。1模板的使用方法(1)请不要删除任何具有格式的模版文字!(2)按照提示直接单击或者单击后执行“选择性粘贴”“无格式文本”就可以添加相应的内容!2. 格式说明题目用三号黑体加粗,摘要及关键词用五号楷体,各小标题用四号黑体,正文等用五号宋字。3
12、. 摘要是课程设计报告内容的简短陈述,一般 200 字左右。关键词应为反映课程设计报告内容的通用技术词汇,一般为 4 个左右。4课程设计报告的构成主要包括项目内容与要求、算法总体思路、存储结构描述、各模块的功能及详细算法思路、程序运行结果截图、总结、参考文献、附录(程序源代码)等内容。1 内容与要求单击此处添加内容 2 总体设计单击此处添加正文 3 详细设计单击此处添加正文 4 程序测试单击此处添加正文 5 总结单击此处添加正文 参考文献单击此处添加参考文献 以下是说明文字,正式成文后请删除。1. 参考文献必须是在课程设计中真正阅读过和运用过的,按照正文中引用出现的顺序统一编号。正文中对参考文献的引用采用后标表示。2. 参考文献示例:1 杨芙清,梅宏,李克勤. 软件复用与软件构件技术J. 电子学报, 1999, 27(2).2 贾名字. 工程硕士论文撰写规范D. 硕士学位论文, 上海交通大学, 2007.3 刘国钧,王连成图书馆史研究M. 北京:高等教育出版社, 19794 孙品一高校学报编辑工作现代化特征C中国高等学校自然科学学报研究会科技编辑学论文集(2)北京:北京师范大学出版社, 19985 王明亮中国学术期刊标准化数据库系统工程的建设EB/OLhttp:/ 10-2.html, 1998-08-16/1998-10-04.附录单击此处添加程序源代码