数据结构课程设计题目5.docx
《数据结构课程设计题目5.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计题目5.docx(14页珍藏版)》请在冰豆网上搜索。
![数据结构课程设计题目5.docx](https://file1.bdocx.com/fileroot1/2023-2/5/07ee0dcb-f115-4159-9a31-b9d11df655ac/07ee0dcb-f115-4159-9a31-b9d11df655ac1.gif)
数据结构课程设计题目5
课程设计题目
1.运动会分数统计(限1人完成)
任务:
参加运动会有n个学校,学校编号为1……n。
比赛分成m个男子项目,和w个女子项目。
项目编号为男子1……m,女子m+1……m+w。
不同的项目取前五名或前三名积分;取前五名的积分分别为:
7、5、3、2、1,前三名的积分分别为:
5、3、2;哪些取前五名或前三名由学生自己设定。
(m<=20,n<=20)
功能要求:
可以输入各个项目的前三名或前五名的成绩;
能统计各学校总分,
可以按学校编号或名称、学校总分、男女团体总分排序输出;
可以按学校编号查询学校某个项目的情况;可以按项目编号查询取得前三或前五名的学校。
数据存入文件并能随时查询
规定:
输入数据形式和范围:
可以输入学校的名称,运动项目的名称
输出形式:
有中文提示,各学校分数为整形
界面要求:
有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。
存储结构:
学生自己根据系统功能要求自己设计,但是要求运动会的相关数据要存储在数据文件中。
(数据文件的数据读写方法等相关内容在c语言程序设计的书上,请自学解决)请在最后的上交资料中指明你用到的存储结构;
测试数据:
要求使用1、全部合法数据;2、整体非法数据;3、局部非法数据。
进行程序测试,以保证程序的稳定。
测试数据及测试结果请在上交的资料中写明;
2.飞机订票系统(限1人完成)
任务:
通过此系统可以实现如下功能:
录入:
可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定)。
查询:
可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);
可以输入起飞抵达城市,查询飞机航班情况;
订票:
(订票情况可以存在一个数据文件中,结构自己设定)。
可以订票,如果该航班已经无票,可以提供相关可以提供相关可选择航班;
退票:
可退票,退票后修改相关数据文件;
客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。
修改航班信息:
当航班信息改变可以修改航班数据文件
要求:
根据以上功能说明,设计航班信息,订票信息的存储结构,设计程序完成功能;
3.文章编辑(限1人完成)
功能:
输入一页文字,程序可以统计出文字、数字、空格的个数。
静态存储一页文章,每行最多不超过80个字符,共N行;要求
(1)分别统计出其中英文字母数和空格数及整篇文章总字数;
(2)统计某一字符串在文章中出现的次数,并输出该次数;(3)删除某一子串,并将后面的字符前移。
存储结构使用线性表,分别用几个子函数实现相应的功能;
输入数据的形式和范围:
可以输入大写、小写的英文字母、任何数字及标点符号。
输出形式:
(1)分行输出用户输入的各行字符;
(2)分4行输出"全部字母数"、"数字个数"、"空格个数"、"文章总字数"(3)输出删除某一字符串后的文章;
4.宿舍管理查询软件(限1人完成)
1)任务:
为宿舍管理人员编写一个宿舍管理查询软件,程序设计要求:
A.采用交互工作方式(即列出管理功能,供选择)
B.建立数据文件,数据文件按关键字(姓名、学号、房号)进行排序(冒泡、选择、插入排序等任选一种)
2)查询菜单:
(用二分查找实现以下操作)
A.按姓名查询
B.按学号查询
C.按房号查询
3)打印任一查询结果(可以连续操作)
5.地图着色问题(限1人完成)
设计要求:
已知中国地图,对各省进行着色,要求相邻省所使用的颜色不同,并保证使用的颜色总数最少。
6.校园导航问题(限1人完成)
设计要求:
设计你的学校的平面图,至少包括10个以上的场所,每两个场所间可以有不同的路,且路长也可能不同,找出从任意场所到达另一场所的最佳路径(最短路径)。
7.学校超市选址问题(带权有向图的中心点)(限1人完成)
设计要求:
对于某一学校超市,其他各单位到其的距离不同,同时各单位人员去超市的频度也不同。
请为超市选址,要求实现总体最优。
8.教学计划编制问题(限1人完成)
设计要求:
针对计算机系本科课程,根据课程之间的依赖关系(如离散数学应在数据结构之前开设)制定课程安排计划,并满足各学期课程数目大致相同。
9.散列法的实验研究(限1人完成)
散列法中,散列函数构造方法多种多样,同时对于同一散列函数解决冲突的方法也可以不同。
两者是影响查询算法性能的关键因素。
对于几种典型的散列函数构造方法,做实验观察,不同的解决冲突方法对查询性能的影响。
10.图书借阅管理系统(限1人完成)
主要分为两大功能:
1)图书管理(增加图书、查询图书、删除图书、图书借阅、还书);
2)会员管理(增加会员、查询会员、删除会员、借书信息);
11.构造01串(限1人完成)
问题描述:
给定七个整数N、A、B、L、C、D、M,要求设计一个01串S=S
(1)S
(2)
…S(N)。
基本要求:
(1)S(i)=0或S(i)=1,1≤i≤N;
(2)对于S的任何连续长度为L的子串S(j)S(j+1)…S(j+L-1),(1≤j≤
N-L+1),0的个数大于等于A且小于等于B;
(3)对于S的任何连续长度为M的子串S(j)S(j+1)…S(j+M-1),(1≤j≤
N-M+1),0的个数大于等于C且小于等于D;
例如,N=6,A=1,B=2,L=3,C=1,D=1,M=2,则存在一个满足上述所有条件的01串S=10101。
12.活期储蓄帐目管理(限1人完成)
活期储蓄处理中,储户开户、销户、存入、支出活动频繁,系统设计要求:
1)能比较迅速地找到储户的帐户,以实现存款、取款记账;
2)能比较简单,迅速地实现插入和删除,以实现开户和销户的需要。
13.二叉排序树的实现(限1人完成)
用顺序和二叉链表作存储结构
1)以回车('\n')为输入结束标志,输入数列L,生成一棵二叉排序树T;
2)对二叉排序树T作中序遍历,输出结果;
3)输入元素x,查找二叉排序树T,若存在含x的结点,则删除该结点,并作中序遍历(执行操作2);否则输出信息“无x”;
14.最小生成树问题(限1人完成)
设计要求:
在n个城市之间建设网络,只需保证连通即可,求最经济的架设方法。
存储结构采用多种。
求解算法多种。
15.通讯录的制作(限1人完成)
设计目的:
用《数据结构》中的双向链表作数据结构,结合C语言基本知识。
编写一个通讯录管理系统。
以把所学数据结构知识应用到实际软件开发中去。
设计内容:
本系统应完成一下几方面的功能:
1)输入信息——enter();
2)显示信息———display();
3)查找以姓名作为关键字———search();
4)删除信息———delete();
5)存盘———save();
6)装入———load();
设计要求:
1)每条信息至包含:
姓名(NAME)街道(STREET)城市(CITY)邮编(EIP)国家(STATE)几项
2)作为一个完整的系统,应具有友好的界面和较强的容错能力
3)上机能正常运行,并写出课程设计报告
16.哈夫曼编码/译码器(限1人完成)
【问题描述】
设计一个利用哈夫曼算法的编码和译码系统,重复地显示并处理以下项目,直到选择退出为止。
【基本要求】
1)将权值数据存放在数据文件(文件名为data.txt,位于执行程序的当前目录中)
2)分别采用动态和静态存储结构
3)初始化:
键盘输入字符集大小n、n个字符和n个权值,建立哈夫曼树;
4)编码:
利用建好的哈夫曼树生成哈夫曼编码;
5)输出编码;
6)设字符集及频度如下表:
字符空格ABCDEFGHIJKLM
频度1866413223210321154757153220
字符NOPQRSTUVWXYZ
频度5763151485180238181161
【进一步完成内容】
1)译码功能;
2)显示哈夫曼树;
3)界面设计的优化。
17.图书管理系统(限1人完成)
【问题描述】
设计一个计算机管理系统完成图书管理基本业务。
【基本要求】
1)每种书的登记内容包括书号、书名、著作者、现存量和库存量;
2)对书号建立索引表(线性表)以提高查找效率;
3)系统主要功能如下:
采编入库:
新购一种书,确定书号后,登记到图书帐目表中,如果表中已有,则只将库存量增加;
借阅:
如果一种书的现存量大于0,则借出一本,登记借阅者的书证号和归还期限,改变现存量;
归还:
注销对借阅者的登记,改变该书的现存量。
【进一步完成内容】
1)系统功能的进一步完善;
2)索引表采用树表。
3)设计内容
4)程序流程图
5)源程序
6)软件测试报告(包括所用到的数据及结果)
18.散列表的设计与实现(限1人完成)
【问题描述】
设计散列表实现电话号码查找系统。
【基本要求】
1)设每个记录有下列数据项:
电话号码、用户名、地址;
2)从键盘输入各记录,分别以电话号码和用户名为关键字建立散列表;
3)采用一定的方法解决冲突;
4)查找并显示给定电话号码的记录;
5)查找并显示给定用户名的记录。
【进一步完成内容】
1)系统功能的完善;
2)设计不同的散列函数,比较冲突率;
3)在散列函数确定的前提下,尝试各种不同类型处理冲突的方法,考察平均查找长度的变化。
19.走迷宫游戏(限1人完成)
程序开始运行时显示一个迷宫地图,迷宫中央有一只老鼠,迷宫的右下方有一个粮仓。
游戏的任务是使用键盘上的方向键操纵老鼠在规定的时间内走到粮仓处。
要求:
1)老鼠形象可辨认,可用键盘操纵老鼠上下左右移动;
2)迷宫的墙足够结实,老鼠不能穿墙而过;
3)正确检测结果,若老鼠在规定时间内走到粮仓处,提示成功,否则提示失败;
4)添加编辑迷宫功能,可修改当前迷宫,修改内容:
墙变路、路变墙;
5)找出走出迷宫的所有路径,以及最短路径。
6)利用序列化功能实现迷宫地图文件的存盘和读出等功能
20.顺序结构、动态链表结构下的一元多项式的加法、减法、乘法的实现。
(限1人完成)
设有一元多项式Am(x)和Bn(x).
Am(x)=A0+A1x1+A2x2+A3x3+…+Amxm
Bn(x)=B0+B1x1+B2x2+B3x3+…+Bnxn
请实现求M(x)=Am(x)+Bn(x)、M(x)=Am(x)-Bn(x)和M(x)=Am(x)×Bn(x)。
要求:
1)首先判定多项式是否稀疏
2)分别采用顺序和动态存储结构实现;
3)结果M(x)中无重复阶项和无零系数项;
4)要求输出结果的升幂和降幂两种排列情况
21.利用栈求表达式的值,可供小学生作业,并能给出分数。
(限1人完成)
要求:
建立试题库文件,随机产生n个题目;题目涉及加减乘除,带括弧的混合运算;随时可以退出;保留历史分数,能回顾历史,给出与历史分数比较后的评价。
22.简易文本编辑器(限1人完成)
要求:
1)具有图形菜单界面;
2)查找,替换(等长,不等长),插入(插串,文本块的插入)、块移动(行块,列
块移动),删除
3)可正确存盘、取盘;
4)正确显示总行数。
23.二叉树的应用(限1人完成)
要求:
包括二叉树的创建,二叉树的中序、前序、后序的递归、非递归遍历算法,层次序的非递归遍历算法的实现等。
24.学生搭配问题(限1人完成)
一班有m个女生,有n个男生(m不等于n),现要开一个舞会.男女生分别编号坐在舞池的两边的椅子上.每曲开始时,依次从男生和女生中各出一人配对跳舞,本曲没成功配对者坐着等待下一曲找舞伴.
请设计一系统模拟动态地显示出上述过程,要求如下:
1)输出每曲配对情况。
2)计算出任何一个男生(编号为X)和任意女生(编号为Y),在第K曲配对跳
舞的情况。
至少求出K的两个值。
3)尽量设计出多种算法及程序,可视情况适当加分
提示:
用队列来解决比较方便。
25.敢死队问题(限1人完成)
有M个敢死队员要炸掉敌人的一碉堡,谁都不想去,排长决定用轮回数数的办法来决定哪个战士去执行任务。
如果前一个战士没完成任务,则要再派一个战士上去。
现给每个战士编一个号,大家围坐成一圈,随便从某一个战士开始计数,当数到5时,对应的战士就去执行任务,且此战士不再参加下一轮计数。
如果此战士没完成任务,再从下一个战士开始数数,被数到第5时,此战士接着去执行任务。
以此类推,直到任务完成为止。
排长是不愿意去的,假设排长为1号,请你设计一程序,求出从第几号战士开始计数才能让排长最后一个留下来而不去执行任务。
要求:
至少采用两种不同的数据结构的方法实现。
如果采用三种以上的方法者,可加分。
26.排序综合(限1人完成)
利用随机函数产生N个随机整数(20000以上),对这些数进行多种方法进行排序。
要求:
1)至少采用三种方法实现上述问题求解(提示,可采用的方法有插入排序、希尔排序、起泡排序、快速排序、选择排序、堆排序、归并排序)。
并把排序后的结果保存在不同的文件中。
2)统计每一种排序方法的性能(以上机运行程序所花费的时间为准进行对比),找出其中两种较快的方法。
3)如果采用4种或4种以上的方法者,可适当加分。
27.学生成绩管理系统(限1人完成)
现有学生成绩信息文件1(1.txt),内容如下
姓名学号语文数学英语
张明明01677882
李成友02789188
张辉灿03688256
王露04564577
陈东明05673847
….......…
学生成绩信息文件2(2.txt),内容如下:
姓名学号语文数学英语
陈果31576882
李华明32889068
张明东33484256
李明国34504587
陈道亮35475877
….......…
试编写一管理系统,要求如下:
1)实现对两个文件数据进行合并,生成新文件3.txt
2)抽取出三科成绩中有补考的学生并保存在一个新文件4.txt
3)对合并后的文件3.txt中的数据按总分降序排序(至少采用两种排序方法实现)
4)输入一个学生姓名后,能查找到此学生的信息并输出结果(至少采用两种查找方法实现)
5)要求使用结构体,链或数组等实现上述要求。
6)采用多种方法且算法正确者,可适当加分。
28.图的遍历和生成树求解实现(限1人完成)
要求:
(1)先任意创建一个图;
(2)图的DFS,BFS的递归和非递归算法的实现
(3)最小生成树(两个算法)的实现,求连通分量的实现
(4)要求用邻接矩阵、邻接表、十字链表多种结构存储实现
29.线索二叉树的应用(限1人完成)
要求:
实现线索树建立、插入、删除、恢复线索的实现。
30.稀疏矩阵应用(限1人完成)
要求:
实现三元组,十字链表下的稀疏矩阵的加、转、乘的实现。
31.树的应用(限1人完成)
要求:
实现树与二叉树的转换。
以及树的前序、后序的递归、非递归算法,层次序的非递归算法的实现,应包含建树的实现。
34.括号匹配问题(限1人完成)
问题描述:
假设一个算术表达式中可包含三种括号:
圆括号,方括号和花括号且这三种括号可按任意次序嵌套使用。
试利用栈的运算,编写判别给定表达式中所含括号是否正确配对出现的算法。
35.哈希表的设计与实现(限1人完成)
问题描述:
设计哈希表实现电话号码查询系统。
基本要求:
1、设每个记录有下列数据项:
电话号码、用户名、地址;
2、从键盘输入各记录,分别以电话号码和用户名为关键字建立哈希表;
3、采用再哈希法解决冲突;
4、查找并显示给定电话号码的记录;
5、查找并显示给定用户名的记录。
6、在哈希函数确定的前提下,尝试各种不同类型处理冲突的方法(至少两种),考察平均查找长度的变化。
36.关键路径问题(限1人完成)
问题描述:
设计一个程序求出完成整项工程至少需要多少时间以及整项工程中的关键活动。
基本要求:
(1)对一个描述工程的AOE网,应判断其是否能够顺利进行。
(2)若该工程能顺利进行,输出完成整项工程至少需要多少时间,以及每一个关键活动所依附的两个顶点、最早发生时间、最迟发生时间。
37.任意长的整数加法(限1人完成)
问题描述:
设计一个程序实现两个任意长的整数的求和运算。
基本要求:
利用双向循环链表,设计一个实现任意长的整数进行加法运算的演示程序。
要求输入和输出每四位一组,组间用逗号隔开。
如:
1,0000,0000,0000,0000。
38.车厢调度问题的设计与实现(限1人完成)
问题描述:
假设停在铁路调度站入口处的车厢序列的编号一次为1,2,3,…,n。
设计一个程序,求出所有可能由此输出的长度为n的车厢序列。
39.串的查找和替换(限1人完成)
问题描述:
打开一篇英文文章,在该文章中找出所有给定的单词,然后对所有给定的单词替换为另外一个单词,再存盘。
40.构造可以使n个城市连接的最小生成树(限1人完成)
问题描述:
给定一个地区的n个城市间的距离网,用Prim算法或Kruskal算法建立最小生成树,并计算得到的最小生成树的代价。
基本要求:
(1)城市间的距离网采用邻接矩阵表示,邻接矩阵的存储结构定义采用课本中给出的定义,若两个城市之间不存在道路,则将相应边的权值设为自己定义的无穷大值。
要求在屏幕上显示得到的最小生成树中包括了哪些城市间的道路,并显示得到的最小生成树的代价。
(2)表示城市间距离网的邻接矩阵(要求至少6个城市,10条边)
(3)最小生成树中包括的边及其权值,并显示得到的最小生成树的代价。