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