数据结构课程设计题.docx
《数据结构课程设计题.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计题.docx(11页珍藏版)》请在冰豆网上搜索。
数据结构课程设计题
一、《数据结构课程设计》的目标
本课程设计的目标就是要达到理论与实际应用相结合,提高学生组织数据及编写大型程序的能力,并培养基本的、良好的程序设计技能以及合作能力。
二、《数据结构课程设计》的要求
设计中要求综合运用所学知识,解决一些与实际应用结合紧密的、规模较大的问题,通过分析、设计、编码、调试等各环节的训练,使学生深刻理解、牢固掌握数据结构和算法设计技术,掌握分析、解决实际问题的能力。
通过这次设计,要求在数据结构的逻辑特性和物理表示、数据结构的选择和应用、算法的设计及其实现等方面,加深对课程基本内容的理解。
同时,在程序设计方法以及上机操作等基本技能和科学作风方面受到比较系统和严格的训练。
三、《数据结构课程设计》的内容
分析:
问题描述;
概要设计:
数据结构的设计,算法的设计,抽象数据类型的设计;
详细设计:
抽象数据类型对应的C++类定义,设计每个成员函数和主函数(流程图)
实现与测试:
编写课程设计报告:
四、《数据结构课程设计》时间和人员安排
15-16周组织进行汇报演示验收;4个人一组,每个人主要承担的任务
五、《数据结构课程设计》题目
1.停车场管理
[问题描述] 设停车场内只有一个可停放n辆汽车的狭长通道,且只有一个大门可供汽车进出。
汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车停放在车场的最北端),若车场内已停满n辆汽车,则后来的汽车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即可开入;当停车场内某辆车要离开时,在它之后开入的车辆必须先退出车场为它让路,待该辆车开出大门外,其它车辆再按原次序进入车场,每辆停放在车场的车在它离开停车场时必须按它停留的时间长短交纳费用。
试为停车场编制按上述要求进行管理的模拟程序。
[基本要求]
按照从终端读入的输入数据序列进行模拟管理。
每一组输入数据包括三个数据项:
汽车“到达”或“离去”信息、汽车牌照号码及到达或离去的时刻,如汽车的输入数据格式为:
(‘A’,1,5),(‘A’,2,10),(‘D’,1,15),(‘A’,3,20),(‘A’,4,25),(‘A’,5,30),(‘D’,2,35),(‘D’,4,40),(‘E’,0,0),其中,‘A’表示到达;‘D’表示离去,‘E’表示输入结束。
对每一组输入数据进行操作后的输出数据为:
若是车辆到达,则输出汽车在停车场内或便道上的停车位置;若是车离去;则输出汽车在停车场内停留的时间和应交纳的费用(在便道上停留的时间不收费)。
2.电话客户服务模拟
[问题描述]一个模拟时钟提供接听电话服务的时间(以分钟计),然后这个时钟将循环地自增1分钟直到到达指定的时间为止。
在时钟的每个时刻,就会执行一次检查来看看当前电话的服务是否已经完成了,如果是,这个电话从电话队列中删除,模拟服务将从队列中取出下一个电话继续开始。
同时还需要执行一个检查来判断是否有一个新的电话到达。
如果是将其到达时间记录下来,并为其产生一个随机服务时间,这个服务时间也被记录下来,然后这个电话被放入电话队列中,当客户服务人员空闲时,按照先来先服务的方式处理这个队列。
当时钟到达指定时间时,不会再接听新电话,但是服务将继续,指导队列中所有电话都得到处理为止。
[基本要求]
初始的数据为:
客户服务人员的人数,时间限制,电话的到达速率,平均服务时间;
产生的结果包括:
处理的电话数,每个电话的平均等待时间。
3.商品货架管理
[问题描述]一超市货架以栈的方式摆放商品,栈顶商品的生产日期最早,栈底商品的生产日期最近;出货时从栈顶取货,一天营业结束,如果货架不满,则需上货。
上货时,需要倒货架,以保证生产日期较近的商品越靠近栈底。
假设该超市由专人根据电脑销售数据随时进行上货,某种商品每件次“取货”平均时间为TX1,每件次“上货”平均时间为TX2,该商品每天销售件数为NX(每天销售总件为N,K为商品种类数,N=N1+~+NK),该员工对某商品上货工作时间为TX(每天工作总时间为T,T=T1+~+TK)。
[基本要求]
(1)针对一种特定商品,实现上述管理过程;
(2)求货架上剩余货物M、每天销售件数N、员工每天上货工作时间T,三者之间有何关系及T的最小值。
4.校园导游程序:
[问题描述] 用无向网表示你所在学校的校园景点平面图,图中顶点表示主要景点,存放景点的编号、名称、简介等信息,图中的边表示景点间的道路,存放路径长度等信息。
要求能够回答有关景点介绍、游览路径等问题。
[基本要求]
(1)查询各景点的相关信息;
(2)查询图中任意两个景点间的最短路径。
(3)查询图中任意两个景点间的所有路径。
(4)增加、删除、更新有关景点和道路的信息。
5.病人就医管理
[问题描述] 模拟病人到医院看病、排队看医生的情况。
具体为:
病人到达诊室,将病历交给护士,排到等待对垒中候诊;护士从等待队列中取出一位病人的病历,该病人进入诊室就诊。
[基本要求]
(1)排队:
输入病人的病历号,加入到病人排队队列中;
(2)就诊:
病人排队队列中最前面的病人就诊,并将其从队列中删除;
(3)查看排队:
从队首到队尾列出所有的排队病人的病历号;
(4)下班:
退出运行。
6.信号放大器
[问题描述]天然气经过管道网络从其生产基地输送到消耗地,在传输过程中,其性能的某一个或几个方面(例如气压)可能会有所衰减。
为了保证信号衰减不超过容忍值,应在网络中的合适位置放置放大器以增加信号(例如电压)使其与源端相同。
[基本要求]
设计算法确定把放大器放在何处,能使所用的放大器数目最少并且保证信号衰减不超过给定的容忍值。
7.压缩软件
[问题描述]用哈夫曼编码设计一个压缩软件,能对输入的任何类型的文件进行哈夫曼编码,产生编码的文件—压缩文件;也能对输入的压缩文件进行译码,生成压缩前的文件—解压文件。
[基本要求]
(1)文档内容从键盘输入;
(2)编码/译码效率尽可能高。
8.火车车厢重排问题
[问题描述]一列货运列车共有n节车厢,每节车厢将停放在不同的车站。
假定n个车站的编号分别为1~n,即货运列车按照第n站至第1站的次序经过这些车站。
为了便于从列车上卸掉相应的车厢,车厢的编号应与车站的编号相同,这样,在每个车站只需卸掉最后一节车厢。
所以,给定任意次序的车厢,必须重新排列他们。
车厢的重排工作可以通过转轨站完成。
在转轨站中有一个入轨、一个出轨和k个缓冲轨,缓冲轨位于入轨和出轨之间。
假定缓冲轨按先进先出的方式运作,解决火车车厢重排问题。
[基本要求]
(1)设计存储结构表示n个车厢、k个缓冲轨以及入轨和出轨;
(2)设计并实现车厢重排算法。
9.银行业务模拟
[问题描述]客户业务分为两种。
第一种是申请从银行得到一笔资金,即取款或借款。
第二种是向银行投入一笔资金,即存款或还款。
银行有两个服务窗口,相应的有两个队列。
客户到达银行后先排第一个队。
处理每个客户业务时,如果属于第一种,且申请额超出银行现存资金总额而得不到满足,则立即排入第二队等候,直至满足时才离开银行,否则业务处理完后立即离开银行。
每接待完一个第二种业务的客户,则顺序检查和处理(如果可能)第二个队列的客户,对能满足的申请者予以满足,不能满足者重新排到第二个队列的队尾。
注意,在此检查过程中,一旦银行资金总额少于或等于刚才第一个队列中最后一个客户(第二种业务)被接待之前的数额,或者本次已将第二个队列检查或处理了一遍,就停止检查(因为此时已不可能还有能满足者)转而继续接待第一个队列的客户。
任何时刻都只开一个窗口。
假设检查不需要时间。
营业时间结束时所有客户立即离开银行。
写一个上述银行业务的事件驱动模拟系统,通过模拟方法计算出客户在银行内逗留的平均时间。
10.汉诺塔问题书103
[基本要求]非递归方法
11.迷宫问题书109
[基本要求]非递归方法
12.八皇后问题
[问题描述]八皇后问题是一个古老而著名的问题,是回溯算法的典型例题。
该问题是十九世纪著名的数学家高斯1850年提出:
在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。
[基本要求]在一个8×8的棋盘里放置8个皇后,要求每个皇后两两之间不相"冲突"(在每一横列竖列斜列只有一个皇后)。
13.班级综合考评管理系统
[问题描述]系统能够完成班级综合考评信息的查询、更新、插入、删除、排序等功能。
[基本要求] 利用实现图形用户界面完成以上操作。
每个功能可以设立菜单,根据提示,可以完成相关的功能要求。
14.运动会分数统计程序的设计
[问题描述]参加运动会有n个学院,学院编号为1……n。
比赛分成m个男子项目,和w个女子项目。
项目编号为男子1……m,女子m+1……m+w。
不同的项目取前五名或前三名积分;取前五名的积分分别为:
7、5、3、2、1,前三名的积分分别为:
5、3、2;哪些取前五名或前三名由学生自己设定。
(m<=20,n<=20)
[基本要求]
1)可以输入各个项目的前三名或前五名的成绩;
2)能统计各学院总分,
3)可以按学院编号、学院总分、男女团体总分排序输出;
4)可以按学院编号查询学院某个项目的情况;可以按项目编号查询取得前三或前五名的学校。
规定:
输入数据形式和范围:
20以内的整数(如果做得更好可以输入学院的名称,运动项目的名称)
输出形式:
有中文提示,各学院分数为整形
界面要求:
有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。
15.算术表达式求值
[问题描述] 一个算术表达式是由操作数(operand)、运算符(operator)和界限符(delimiter)组成的。
假设操作数是正整数,运算符只含加减乘除等四种运算符,界限符有左右括号和表达式起始、结束符“#”,如:
#(7+15)*(23-28/4)#。
引入表达式起始、结束符是为了方便。
编程利用“算符优先法”求算术表达式的值。
[基本要求]
(1)从键盘读入一个合法的算术表达式,输出正确的结果。
(2)显示输入序列和栈的变化过程。
16.图书管理基本业务模拟
人数:
5人
[问题描述]
1)书的登记内容包括书号、书名、著作者、现存量和库存量;
2)建立索引表(线性表)以提高查找效率;
3)主要功能如下:
采编入库:
新购一种书,确定书号后,登记到图书帐目表中,如果表中已有,则只将库存量增加;
借阅:
如果一种书的现存量大于0,则借出一本,登记借阅者的书证号和归还期限,改变现存量;
归还:
注销对借阅者的登记,改变该书的现存量。
[基本要求]
1)能按书号、书名、著作者查找库存的书籍信息;
2)能按学生的借书证号显示学生信息和借阅信息;
3)书籍入库;
4)借书功能实现
5)还书功能实现
17.教学计划编制软件
人数:
5人
[问题描述]
大学的每个专业都要根据教学计划进行排课,假设任何专业都有固定的学习年限(按照4年),每学年含两个学期,每个专业开设的课程都是确定的,而且课程开设时间的安排必须满足先修关系。
每门课程有哪些先修课程是确定的。
每门课程恰好占一个学期,假定每天上午和下午各有4小节课。
试在这样的前提下,实现一个计算机学院(3个专业)教学计划编制软件。
[基本要求]
1)输入数据包括:
各学期所开的课程数(必须使每学期所开的课程数之和与课程总数相等),课程编号,课程名称,周学时数,指定开课学期,先决条件。
2)如输入数据不合理,比如每学期所开的课程数之和与课程总不相等,应显示适当的提示信息。
3)用文本文件存储输入数据;
4)由文本文件存储产生的各专业每学期的课表。
六、《数据结构课程设计》报告要求
课程设计报告
报告的开头应给出题目、班级、姓名、学号和完成日期,并包括以下六个内容:
一、问题描述
二、需求分析
以无歧义的陈述说明程序设计的任务,强调的是程序要做什么?
并明确规定:
(1)给出类/对象图;
示例:
类/对象图
(2)输入的形式和输入值的范围;
(3)输出的形式;
三、概要设计
1.数据结构的设计
采用的数据结构和原因
2.算法的设计
从总体上划分为几个模块,每个模块需要完成的功能是什么?
定义每个模块对应的函数接口,说明各程序模块之间的层次(调用)关系。
示例:
功能结构图
3.抽象数据类型的设计
根据1和2,说明本程序中用到的所有抽象数据类型的定义
四、详细设计
1.设计抽象数据类型对应的C++类定义;
2.设计每个成员函数(流程图);
3.设计主函数(流程图)。
五、实现与测试
1.调试过程中遇到什么问题,是如何解决的?
2.设计了哪些测试数据?
测试结果是什么?
测试数据:
包括正确的输入及其输出结果和含有错误的输入及其输出结果。
3.算法的时空分析及改进设想
4.打印程序清单及运行结果
六、总结与心得
设计完成后的总结与思考
上述中的前四部分要在程序开发的过程中逐渐充实形成,而不是最后补写。