C/C++数据结构课程设计(15题)[2023-10-29]

C/C++数据结构课程设计(15题)[2023-10-29]

《数据结构课程设计》指导书

武汉工程科技学院
【选题说明】
课程设计题目要体现多样性和灵活性,授课教师可以自行指定不同难度的多个选题,让学生根据自己的具体学习情况选择一到多个完成。
指定选题一般分为两类,【孤军作战】类和【同舟共济】类。【孤军作战】中的题目较基础,要求学生独立完成,【同舟共济】中的题目有一定难度,允许学生组队完成。
要求学生从【孤军作战】中按照星级难度选择对应的题目(要求选择难度的完成两个和难度**完成一个)完成,或者从【同舟共济】中选择至少1个题目完成。
【孤军作战】
【具体要求】
1.题目相对简单,要求学生独立完成,可以从参考选题中选择一到二个完成。
2.下列选题仅供参考,教师可以根据实际教学情况合理设计选题,学生也可以根据兴趣爱好合理选题,进行题库扩充。
3.通过查资料、讨论,对系统进行分析、设计以及实现。
4.界面友好,有提示。
5.要求提交数据结构课程设计考查报告电子档和选题完成代码,并打印考查报告。
【参考选题】
说明:星
表示难度。一星*表示很简单,二星**表示难度一般。

源码联系UP主 -> https://space.bilibili.com/329101171

题目1 石头、剪刀、布(*)

一、问题描述
本游戏的规则是:游戏者用手势表示石头,剪刀或布中的一个,出拳头表示石头,伸出两根手指表示剪刀,伸出手掌表示布。当大家一起数到三时做出各自的选择,如果所做选择是一样的,则表示平局,否则就按如下规则决定胜负:
(1)石头砸坏剪刀;
(2)剪刀剪碎布;
(3)布覆盖石头。
(4)编程实现计算机与人进行游戏。
二、测试效果
下面是选手可以输入的字符:
r 表示选择石头(rock)
s 表示选择剪刀(scissor)
c 表示选择布(cloth)
d 表示选择显示(display)游戏当前状态
h 表示获得帮助(help)
q 表示选择退出(quit)
游戏规则:
石头砸坏剪刀
剪刀剪碎布
布覆盖石头
请选择(r,s,c,d,h,q)r
哎,是平局!
游戏状态:
获胜次数:0
失败次数:0
平局次数:1
还不错,虽然平手,但也没失败!
请选择(r,s,c,d,h,q)

题目2 文本串的加密(*)

一、问题描述
一个文本串可用事先给定的字符映射表进行加密,字母表letters及字母映射表map如下。
(1)字母表letters:abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ。
(2)字母映射表map:NgzQTCobmUHelkPdAwxfYlvrsJGnZqtcOBMuhELKpaDWXFyiVRjS。
未被映射的字符不加以改变,例如,字符串“encryp”被加密成“Tkzwsdf”,编写程序采用菜单方式实现相应功能,其选项及功能说明如下:
(1)加密:将输入的文本串进行加密后输出;
(2)解密:将输入的已加密的文本进行解密后输出;
(3)退出:退出运行。
二、测试效果
请选择
1.加密-将输入的文本串进行加密后输出
2.解密-将输入的已加密的文本进行解密后输出
3.退出-退出运行
1
请输入文本串:encryt
加密串:T
kzwsf

请选择
1.加密-将输入的文本串进行加密后输出
2.解密-将输入的已加密的文本进行解密后输出
3.退出-退出运行
2
请输入加密串:Tkzwsf
解密串:e
ncryt

请选择
1.加密-将输入的文本串进行加密后输出
2.解密-将输入的已加密的文本进行解密后输出
3.退出-退出运行

题目3 学生信息管理系统(**)

一、问题描述
建立学生信息管理系统,每位学生的信息有:学号,姓名,性别,出生日期,E-mail,电话,班级,各科成绩。要求:编程实现对学生信息的输入,浏览,修改,查找,删除,排序和统计等操作。学生信息管理系统基本功能如图1所示。

图1 学生信息管理系统基本功能

二、测试效果

----------------------------
        |  欢迎使用学生管理系统    |
        ----------------------------
        |  1-录入学生信息             |
        |  2-查询学生信息             |
        |  3-修改学生信息             |
        |  4-删除学生信息             |
        |  5-浏览学生信息         |
        |  6-学生信息排序           |
        |  7-学生信息统计             |
        |  8-退出程序                 |
        请选择功能

题目4 一元稀疏多项式计算器(**)

一、问题描述
设计一个一元稀疏多项式简单计算器。一元稀疏多项式简单计算器的基本功能是:
(1)输入并建立多项式;
(2)输出多项式,输出形式为整数序列:n,c1,e1,c2,e2…cn,en,其中n是多项式的项数,c1,e1分别是第i项的系数和指数,序列按指数降序排序;
(3)多项式a和b相加,建立多项式a+b;
(4)多项式a和b相减,建立多项式a-b;
(5)计算多项式在x处的值;
(6)用带头结点的单链表存储多项式。
二、测试数据
(1)(2x+5x8-3.1x11)+(7-5x8+11x9)=(-3.1x1+11x9+2x+7)
(2)(6x-3-x+4.4x2-1.2x9)-(-6x-3+5.4x2-x2+7.8x15)=(-7.8x15-1.2x9-x+12x-3)
(3)(1+x+x2+x3+x4+x5)-(x3-x4)=(x5+x2+x+1)
(4)(x+x3)+(-x-x3)=0
(5)x+x2+x3)+0=(x3+x2+x)
三、测试效果
enter n:3
enter 1 c e:8 3
enter 2 c e:7 2
enter 3 c e:9 1
enter n:2
enter 1 c e:6 1
enter 2 c e:-4 5
1.+
2.-
select(1-2):2
(4.0,5)(8.0,3)(7.0,2)(3.0,1)

题目5 利用后缀表达式计算中缀表达式的值(**)

一、问题描述
试按如下两步方式计算中缀表达式的值。
(1)利用栈将中缀表示转换为后缀表示,从键盘上输入一个中缀表达式(以“=”结束),将其转换为后缀表达式存入一个输出文件中(以“=”结束)。
(2)应用后缀表示计算表达式的值:求从一个输入文件中输入的后缀表达式(假设以“=”结束)的值,将表达式的值在屏幕显示出来。
二、解题思路
后缀表达式的操作数与中缀表达式的操作数先后次序相同,只是运算符的先后次序发生了改变。对中缀表达式从左到右进行扫描,每读到一个操作数即把它作为后缀表达式的一部分输出;每读到一个运算符就将它与运算符栈的栈顶运算符进行比较,根据其优先级来决定它是入栈还是栈顶运算符出栈。为了防止运算符栈为空时带来的特殊处理,需要首先将“=”压入作为保护。
三、测试效果
输入表达式:
2+(3+5)*6/2=
26
是否继续(y/n)?y
输入表达式:
(3-1)*8+6/2=
19
是否继续(y/n)?

题目6 任意大非负整数的任意大非负整数次方(**)

一、问题描述
实现任意大非负整数的任意大非负整数次方的算法。
二、解题提示
计算任意大非负整数的任意大非负整数次方,首先声明一个非负整数类LargeInt,重载计算机阶乘必需的运算符(比如+与*),具体实现时,可用双向链表存储非负整数。
三、测试效果

8^0=1
2^10=1024
189^200=196047286076567298225538178000111155107869993313379693919870656619757387903469869912858146176517590784884781628626289987998285314785767365188596424704607916455947802191458359691086177634513369453531040805365910103469365112989737823794038847424242183580968141331699774703486774087354311410295899638489258635677585287692834637031944602227675314385804590343999309227732499186034822706395591220434562958589123501440043581685720436784168455885668171325201252001
用时0.154秒
--------------------------------
Process exited with return value 0
Press any key to continue . . 

题目7 简单个人图书管理系统(**)

一、问题描述
学生在自己的学习和生活中会拥有很多的书籍,对所购买的书籍进行分类和统计是一种良好的习惯。这样可以便于对这些知识资料的整理和查询使用。如果用文件来存储书号、书名、作者名、价格与购买日期等相关书籍的信息,辅之以程序对里面的书籍信息进行统计和查询,将使这种书籍管理工作变得轻松而有趣。
这个系统至少应具备如下的功能:
(1)存储书籍各种相关信息。
(2)提供查找功能,按照书名或作者名查找需要的书籍。
(3)提供插入、删除与更新功能。
(3)排序功能,按照作者名对所有的书籍进行排序,并按排序后的结果进行显示。
(4)要求程序能按书号,书名索引。
二、解题思路
为具有实用性,采用文件的形式存储书籍信息。需要操作时,从文件读入相关记录。由于要求按书号、书名索引,书号为关键字,书名为次关键字,采用多重表文件方式组织索引。为接收文件中的内容,需要有结构来存储相应信息,并且建立索引,还应建立相应的索引项结构。
表1是存储书籍信息的多重表文件示例,主关键字是书号,次关键字是书名,设计对应的多重表文件。
表1 存储书籍信息的多重表文件示例
物理地址 书号 书名 同书名链 作者名 价格 购买
日期 删除标记
1 9787302455882 数据结构教程 2 李春葆 59.5 2020 8 1 0
2 9787115562050 数据结构与编程之美 0 王争 119.8 2022 8 1 0
3 9787302597100 数据结构教程 0 李春葆 49.8 2022.1 1 0
(a) 多重表文件
书名 物理地址
数据结构教程 1
(b)书名索引
三、测试效果
输入价格:59.5
输入购买日期:2020 8 1
插入成功!
1.插入记录 2.删除记录 3.更新记录 4.查找记录 5.按作者名排序 6.退出
输入选择:1
输入书号:9787115562050
输入书名:数据结构与编程之美
输入作者名:王争
输入价格:119.8
输入购买日期:2020 8 1
插入成功!
1.插入记录 2.删除记录 3.更新记录 4.查找记录 5.按作者名排序 6.退出
输入选择:5
书号 书名 作者名 价格 购买日期
9787302455882 数据结构教程 李春葆 59.5 2020- 8- 1
9787115562050 数据结构与编程之美 王争 119.8 2020- 8- 1
1.插入记录 2.删除记录 3.更新记录 4.查找记录 5.按作者名排序 6.退出
输入选择:1
输入书号:9787302597100
输入书名:数据结构教程
输入作者名:李春葆
输入价格:49.8
输入购买日期:2022 1 1
插入成功!
1.插入记录 2.删除记录 3.更新记录 4.查找记录 5.按作者名排序 6.退出
输入选择:4
1.按照书名查找 2.按照作者名查找 3.退出查找
输入选择:1
输入书名: 数据结构教程
书号 书名 作者名 价格 购买日期
9787302597100 数据结构教程 李春葆 49.8 2022- 1- 1
9787302455882 数据结构教程 李春葆 59.5 2020- 8- 1
1.按照书名查找 2.按照作者名查找 3.退出查找
输入选择:3
1.插入记录 2.删除记录 3.更新记录 4.查找记录 5.按作者名排序 6.退出
输入选择:2
输入书号:9787302597100
书号 书名 作者名 价格 购买日期
9787302597100 数据结构教程 李春葆 49.8 2022- 1- 1
删除成功!
1.插入记录 2.删除记录 3.更新记录 4.查找记录 5.按作者名排序 6.退出
输入选择:

【同舟共济】
【具体要求】
1.题目相对复杂,建议2-3人一小组,协同完成一个选题。
2.下列选题仅供参考,教师可以根据实际教学情况合理设计选题,学生也可以根据兴趣爱好合理选题,进行题库扩充。
3.通过查资料、讨论,对系统进行分析、设计以及实现。
4.界面友好,有提示。
5.要求提交数据结构课程设计考查报告电子档和选题完成代码,并打印考查报告。

【参考选题】

题目1 农夫过河问题的求解

一、问题描述
一个农夫带着一只狼、一只羊和一颗白菜,身处河的南岸。他要把这些东西全部运到北岸。他面前只有一条小船,船只能容下他和一件东西,另外只有农夫才能撑船。如果农夫在场,则狼不能吃羊,羊不能吃白菜,否则狼会吃羊,羊会吃白菜,所以农夫不能留下羊和白菜自己离开,也不能留下狼和羊自己离开。请求出农夫将所有东西运过河的方案。
二、解题提示
要模拟农夫过河问题,需要对问题中每个角色的过河状态进行描述。一个方便的办法是用4位二进制数串顺序表示白菜,羊,狼和农夫的位置。用0表示农夫或者某东西在河的南岸,1表示在河的北岸。例如,0110表示农夫和白菜在河的南岸,而狼和羊在北岸。
问题从初始的状态0000(全部在河的南岸)出发,寻找一种全部由安全状态构成的状态序列,它以二进制1111(全部到达河的北岸)为最终目标,并且在序列中的每个状态都可以从前一状态到达。为避免白费功夫,要求在序列中不出现重复的状态。
实现上述求解的搜索过程可以采用两种不同的策略:一种是广度优先搜索;另一种是深度优先搜索。
三、测试效果

步骤1: 农夫把羊带到北岸
步骤2: 农夫独自回南岸
步骤3: 农夫把白菜带到北岸
步骤4: 农夫把羊带回南岸
步骤5: 农夫把狼带到北岸
步骤6: 农夫独自回南岸
步骤7: 农夫把白菜带到北岸
祝贺您! 过河问题求解成功!
--------------------------------
Process exited with return value 0
Press any key to continue . . 

题目2 教学计划编制问题

一、问题描述
大学的每个专业都要制订教学计划。假设任何专业都有固定的学习年限,每学年含两学期,每学期的时间长度和学分上限值均相等。每个专业开设的课程都是确定的,而且课程在开设时间的安排必须满足先修关系。每门课程有哪些先修课程是确定的,可以有任意多门,也可以没有。每门课恰好占一个学期。试在这样的前提下设计一个教学计划编制程序。
设计要求:
(1)输入参数包括:学期总数,一学期的学分上限,每门课的课程号(固定占3位的字母数字串)、学分和直接先修课的课程号。
(2)允许用户指定下列两种编排策略之一:一是使学生在各学期中的学习负担尽量均匀;二是使课程尽可能地集中在前几个学期中。
若根据给定的条件问题无解,则报告适当的信息;否则,将教学计划输出到用户指定的文件中。计划的表格格式自行设计。
二、解题提示
很明显,题目所考查的是图相关内容,各门课程可以看作一个个图节点,最后需要得到各个节点的输出序列,且输出序列要满足拓扑排序要求。根据具体的输出要求,输出序列还会进一步被限制。
可以使用文件存储每门课的课程号、学分和直接先修课的课程号。
C1 2
C2 3 C1
C3 4 C1 C2
C4 3 C1
C5 2 C3 C4
C6 3 C11
C7 4 C5 C3
C8 4 C3 C6
C9 5
C10 3 C9
C11 2 C9
C12 5 C9 C10 C1
C13 3 C6 C4
C14 3 C13 C11 C1
教学计划编制问题的完整功能如图1所示。

图1 教学计划编制问题的完整功能
三、测试效果

请输入:  学期总数  每学期学分上限  课程总数
6 10 14
aov拓扑排序结果为:C9 C10 C11 C6 C1 C2 C3 C8 C4 C5 C7 C13 C14 C12
请输入教学计划编制类型:
1.各学期负担均匀
2.课程尽可能集中在前几学期
1

第1个学期的课程为:C9  C10  C11
第2个学期的课程为:C6  C1  C2
第3个学期的课程为:C3  C8
第4个学期的课程为:C4  C5
第5个学期的课程为:C7  C13
第6个学期的课程为:C14  C12
--------------------------------
Process exited with return value 0
Press any key to continue . . .
请输入:  学期总数  每学期学分上限  课程总数
6 10 14
aov拓扑排序结果为:C9 C10 C11 C6 C1 C2 C3 C8 C4 C5 C7 C13 C14 C12
请输入教学计划编制类型:
1.各学期负担均匀
2.课程尽可能集中在前几学期
2

第1个学期的课程为:C9  C10  C11
第2个学期的课程为:C6  C1  C2
第3个学期的课程为:C3  C8
第4个学期的课程为:C4  C5  C7
第5个学期的课程为:C13  C14
第6个学期的课程为:C12
--------------------------------
Process exited with return value 0
Press any key to continue . . .

题目3 电话号码的查找

一、问题描述
试设计采用哈希文件实现电话号码的查找。设每个记录由telNo(电话号码)、name(用户名)与addr(地址)组成,以电话号码为关键字建立哈希文件,要求实现如下功能:
(1)输入记录,建立哈希文件
(2)删除指定电话号码的记录
(3)查找并显示给定电话号码的记录
二、解题提示
拉链法描述哈希表如图2所示。

图2 拉链法描述哈希表
哈希文件中记录的存储如图3所示,第一行表格对应基桶,后面两行表格对应溢出时产生的溢出桶。

1
↓ ↓ ↓ ↓ ↓ ↓
11
↓ ↓ ↓ ↓ ↓ ↓
21
图3 哈希桶和溢出桶
这里删除记录时,可以不移动记录,只做删除标记。
三、测试效果
1.输入记录 2.删除记录 3.查找记录 4.退出
输入选择:1
输入电话号码:18502707449
输入用户名:刘艳
输入地址:湖北武汉
1.输入记录 2.删除记录 3.查找记录 4.退出
输入选择:1
输入电话号码:15827183721
输入用户名:刘艳
输入地址:湖北武汉
1.输入记录 2.删除记录 3.查找记录 4.退出
输入选择:3
输入电话号码:18502707449
电话号码:18502707449
用户名:刘艳
地址:湖北武汉
1.输入记录 2.删除记录 3.查找记录 4.退出
输入选择:2
输入电话号码:15827183721
电话号码:15827183721
用户名:刘艳
地址:湖北武汉
删除成功!
1.输入记录 2.删除记录 3.查找记录 4.退出
输入选择:

题目4 简单文本编辑器

一、问题描述
设计一个文本编辑器,允许将文件读到内存中,也就是存储在一个缓冲区中,缓冲区中的每行文本是一个字符串,将每行存储在一个双向链表的节点中,设计在缓冲区中的行上的种种操作命令。
文本编辑器至少包含如下命令列表,这些命令可用大写或小写字母输入。
H:显示解释所有命令的帮助消息,程序也接受“?”作为H的替代者。
R:读取文本文件到缓冲区中,缓冲区中以前的任何内容将丢失,当前行是文件的第一行。
W:将缓冲区的内容写入文本文件,当前行或缓冲区均不改变。
I:插入单个新行,用户必须在恰当的提示符的响应中输入新行并提供其行号。
D:删除当前行并移到下一行。
F:可以从第1行开始或从当前行开始,查找包含有用户请求的目标串的第一行。
C:将用户请求的字符串修改成用户请求的替换文本,可选择是仅在当前行中有效还是对全文有效。
N:当前行移到下一行,也就是在缓冲区中进一行。
P:当前行移到上一行,也就是在缓冲区中退一行。
B:当前行移到开始处,也就是移到缓冲区的第一行。
E:当前行移到结束处,也就是移到缓冲区的最后一行。
G:当前行移到缓冲区中用户指定的行号。
V:查看缓冲区的全部内容,打印到终端上。
Q:退出编辑器,立即结束。
二、解题提示
双向链表图解如图4所示。

图4 双向链表图解
在本题中头指针对应的区域可以适当增加数据,方便后期对缓冲区中数据进行操作。
DblNode *head; // 头结点指针
int curPosition; // 当前位置的序号
DblNode *curPtr; // 指向当前位置的指针
int count; // 元素个数
三、测试效果
输入文件名(缺省: file_in.txt):file_in.txt
输出文件名(缺省: file_out.txt):file_out.txt
文件缓存空
?h
有效命令: b(egin) c(hange) d(el) e(nd)
f(ind) g(o) h(elp) i(nsert) n(ext) p(rior)
q(uit) r(ead) u(ndo) v(iew) w(rite)
文件缓存空
?b
警告: 文本缓存空
文件缓存空
?i
输入指定行号? 1
输入新行文本串: first
1 : first
?i
输入指定行号? 2
输入新行文本串: second
2 : second
?b
1 : first
?e
2 : second
?g
输入指定的行号: 1
1 : first
?v
first
second
1 : first
?d
1 : second
?c
替换当前行c(urrent)或替换所有行a(ll):c
输入要被替换的指定文本串: second
输入新文本串:first update
1 : first update
?i
输入指定行号? 2
输入新行文本串: second update
2 : second update
?p
1 : first update
?w
1 : first update
?q
请按任意键继续. . .

题目5 压缩软件

一、问题描述
设计一个压缩软件,能对输入的任何类型的文件进行哈夫曼编码,产生编码后的文件——压缩文件;也能对输入的压缩文件进行译码,生成压缩前的文件——解压文件。
二、解题提示
假设一字符串是,“acbcbacddaddaddccd”,统计各字符出现的次数如表1所示。构造的哈夫曼树和哈夫曼编码如图5所示。

表1 统计各字符出现次数
字符 出现次数
a 4
b 2
c 5
d 7

图5 哈夫曼树和哈夫曼编码
三、测试效果

  1. 压缩

  2. 解压缩
    请选择:1
    请输入源文件名(文件小于4GB):雪山飞狐.txt
    请输入目标文件:a.my
    正在处理,请稍候…
    处理结束.
    请按任意键继续. .

  3. 压缩

  4. 解压缩
    请选择:2
    请输入压缩文件名:a.txt
    请输入目标文件名:b.txt
    正在处理,请稍候…
    处理结束.
    请按任意键继续. .

题目6 校园导航系统

一、问题描述
用无向网表示你所在学校的校园景点平面图,图中顶点表示主要景点,存放景点的编号、名称、简介等信息,图中的边表示景点间的道路,存放路径长度等信息。要求能够回答有关景点介绍、游览路径等问题。
设计要求:
(1)查询各景点的相关信息。
(2)查询图中任意两个景点间的最短路径。
(3)查询图中任意两个景点间的所有路径。
(4)增加、删除、更新有关景点和道路的信息。
校园导航系统基本功能如图6所示。

图6 校园导航系统基本功能
二、解题提示
校园导航系统是以数据结构当中图的相关知识来设计的系统。将公园景点作为图的节点,各个顶点之间的路径作为图的边,边之间的距离作为节点间的权值,抽象成一个无向有权图。设计出能快速找到一个景点到另一个景点的最短路径及最短距离,帮助人们来更方便的查找各个学校景点,便于参观。
某校园地图如图7所示,要求画出自己学校的地图,并对自己学校的景点进行导航。

图7某校园地图
三、测试效果

 │                      欢迎来到                        │
 │                    某某农业大学                      │
 │                     菜 单 选 择                      │
 │  *************************************************** │
 │  *  1.主页                **   2.查看游览路线      *  │
 │  *************************************************** │
 │  *  3.查询景点间最短路径  **   4.查询景点间所有路径*  │
 │  *************************************************** │
 │  *  5.学校景点介绍        **   6.学校地图          *  │
 │  *************************************************** │
 │  *  7.更改图信息          **   0.退出              *  │
 │  *************************************************** │
请输入你的选择:3
请输入要查询的两个景点的数字编号(用空格隔开)
1 3
     1  2  3  4  5  6  7  8  9 10 11 12 13 14 15
  1  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15
  2  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15
  3  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15
  4  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15
  5  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15
  6  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15
  7  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15
  8  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15
  9  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15
 10  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15
 11  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15
 12  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15
 13  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15
 14  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15
 15  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15

     1  2  3  4  5  6  7  8  9 10 11 12 13 14 15
  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
  1  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2
  2  1  1  3  3  3  3  3  3  3  3  3  3  3  3  3
  3  2  2  4  4  4  4  4  8  8  8 11  8  8  8  8
  4  3  3  3  3  5  5  5  8  8  8  3  8  8  8  8
  5  4  4  4  4  4  6  6  8  8  8  4  8  8  8  8
  6  5  5  5  5  5  7  7  5  9  7  5  9  9  7  9
  7  6  6  6  6  6  6  6  6  9 10  6  9  9 10  9
  8  3  3  3  4  5  5  5  9  9  9  3  9  9  9  9
  9  8  8  8  8  8  6  7  8  8 10 13 13 13 14 13
 10  9  9  9  9  9  7  7  9  9 14  9  9  9 14  9
 11  3  3  3  3  3  3  3  3 12 12  3 12 12 12 12
 12 13 13 13 13 13 13 13 13 13 13 11 13 13 13 15
 13  9  9  9  9  9  9  9  9  9  9 12 12 12 14 12
 14  9  9  9  9  9 10 10  9  9 10 13 13 13 10 13
 15 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12

您要查询的两景点间最短路径:
1西苑宿舍-->2西苑餐厅-->3地下通道
西苑宿舍-->地下通道的最短路径是:50米
请输入你的选择:

题目7 全国交通咨询模拟

一、问题描述
处于不同目的的旅客对交通工具有不同的要求。例如,因公出差的旅客希望在旅途中的时间尽可能地短,出门旅游的游客则期望旅费尽可能省,而老年旅客则要求中转次数最少。编制一个全国城市间的交通咨询程序,为旅客提供两种或三种最优决策的交通咨询。
设计要求:
(1)提供对城市信息进行编辑(如添加或删除)的功能。
(2)城市之间有两种交通工具:火车和飞机。提供对列车时刻表和飞机航班进行编辑(增设或删除)的功能。
(3)提供两种最优决策:最快到达和最省钱到达。全程只考虑种交通工具。
(4)旅途中耗费的总时间应该包括中转站的等候时间。
(5)咨询以用户和计算机的对话方式进行。由用户输入起始站、终点站、最优决策原则和交通工具。输出信息:最快需要多长时间才能到达或者最少需要多少旅费才能到达,并详细说明依次于何时乘坐哪一趟列车或哪一次班机到何地。
二、解题提示
(1)对全国城市交通图和列车时刻表及飞机航班表进行编辑,应该提供文件形式输入和键盘输入两种方式。飞机航班表的信息应包括:起始站的出发时间、终点站的到达时间和票价;列车时刻表则需根据交通图给出各个路段的详细信息,例如:对从北京到上海的火车,需给出北京至天津、天津至徐州及徐州至上海各段的出发时间、到达时间及票价等信息。
(2)以邻接表作交通图的存储结构,表示边的结构内除含有邻接点的信息外,还应包括交通工具、路程中耗费的时间和花费以及出发和到达的时间等多种属性。
(3)增加旅途中转次数最少的最优决策。
三、测试效果

==============欢迎全国交通咨询系统==============
你的身份是?
    1.管理员
    2.普通用户
请输入数字(0 for exit):1
    开启管理员模式!
输入账户:admin
输入密码:123456
登录成功!
请输入你的选项:
1.更改密码
2.全国航班的相关操作
3.全国列车班次的相关操作
请输入数字(按0返回选择身份界面):2
   现在修改的交通图是:Flight
请选择下列操作之一
    1.从文件中添加 Flight 城市
    2.手动添加 Flight 城市
    3.删除Flight 城市
    4.从文件中添加Flight 线路
    5.手动添加 Flight 线路
    6.删除Flight 线路
    7.显示所有城市
    8.显示所有线路
    9.保存修改到文件
    10.查询花费最少的路径
    11.查询耗时最少的路径
请输入数字(输入0退出操作界面):1
    1.从文件中添加 Flight 城市
开始从 FlightCity.txt中读入并添加城市!
城市导入完毕!
    现在修改的交通图是:Flight
请选择下列操作之一
    1.从文件中添加 Flight 城市
    2.手动添加 Flight 城市
    3.删除Flight 城市
    4.从文件中添加Flight 线路
    5.手动添加 Flight 线路
    6.删除Flight 线路
    7.显示所有城市
    8.显示所有线路
    9.保存修改到文件
    10.查询花费最少的路径
    11.查询耗时最少的路径
请输入数字(输入0退出操作界面):4
    4.从文件中添加Flight 线路!
从Flight.txt中读取并导入线路!
线路导入完毕!
    现在修改的交通图是:Flight
请选择下列操作之一
    1.从文件中添加 Flight 城市
    2.手动添加 Flight 城市
    3.删除Flight 城市
    4.从文件中添加Flight 线路
    5.手动添加 Flight 线路
    6.删除Flight 线路
    7.显示所有城市
    8.显示所有线路
    9.保存修改到文件
    10.查询花费最少的路径
    11.查询耗时最少的路径
请输入数字(输入0退出操作界面):8
 8.显示所有线路!
系统中有 23 条线路的信息
出发城市|到达城市|班次名|出发时间|到达时间||||用时|||票价
    南昌     上海 CZ1000 14:20,+0 15:50,+0 01:30,+0 380.000
    上海     南昌 CZ1001 17:00,+0 18:45,+0 01:45,+0 380.000
    天津     沈阳 CZ1002 09:35,+0 10:50,+0 01:15,+0 450.000
    沈阳     天津 CZ1003 16:45,+0 18:25,+0 01:40,+0 450.000
    北京 呼和浩特 CZ1004 11:55,+0 13:00,+0 01:05,+0 370.000
    北京     郑州 CZ1005 21:10,+0 23:00,+0 01:50,+0 770.000
    郑州     北京 CZ1006 09:45,+0 11:25,+0 01:40,+0 460.000
呼和浩特     北京 CZ1007 13:45,+0 14:50,+0 01:05,+0 330.000
呼和浩特     兰州 CZ1008 19:25,+0 21:05,+0 01:40,+0 600.000
    兰州 呼和浩特 CZ1009 11:35,+0 13:10,+0 01:35,+0 700.000
    兰州 乌鲁木齐 CZ1010 10:10,+0 12:50,+0 02:40,+0 890.000
    兰州     西安 CZ1011 13:40,+0 15:00,+0 01:20,+0 500.000
乌鲁木齐     兰州 CZ1012 13:45,+0 16:15,+0 02:30,+0 890.000
    西安     兰州 CZ1013 22:25,+0 23:30,+0 01:05,+0 540.000
    西安     成都 CZ1014 21:45,+0 23:20,+0 01:35,+0 640.000
    成都     西安 CZ1015 07:20,+0 08:40,+0 01:20,+0 560.000
    成都     昆明 CZ1016 09:45,+0 11:30,+0 01:45,+0 500.000
    成都     贵阳 CZ1017 18:50,+0 20:10,+0 01:20,+0 670.000
    昆明     成都 CZ1018 07:50,+0 09:25,+0 01:35,+0 500.000
    昆明     贵阳 CZ1019 20:15,+0 21:30,+0 01:15,+0 600.000
    贵阳     成都 CZ1020 22:35,+0 23:55,+0 01:20,+0 620.000
    贵阳     昆明 CZ1021 22:10,+0 23:25,+0 01:15,+0 510.000
    现在修改的交通图是:Flight
请选择下列操作之一
    1.从文件中添加 Flight 城市
    2.手动添加 Flight 城市
    3.删除Flight 城市
    4.从文件中添加Flight 线路
    5.手动添加 Flight 线路
    6.删除Flight 线路
    7.显示所有城市
    8.显示所有线路
    9.保存修改到文件
    10.查询花费最少的路径
    11.查询耗时最少的路径
请输入数字(输入0退出操作界面):0
请输入你的选项:
1.更改密码
2.全国航班的相关操作
3.全国列车班次的相关操作
请输入数字(按0返回选择身份界面):0

==============欢迎全国交通咨询系统==============
你的身份是?
    1.管理员
    2.普通用户
请输入数字(0 for exit):2
    开启普通用户模式
    选择你的出行方式!
    1.飞机
    2.火车
请输入数字(输入0返回身份认证界面):
 现在是关于全国Flight的信息查询!
请选择下列操作之一
    1.查询花费最少的路径
    2.查询耗时最少的路径
    3.显示所有城市
    4.显示所有线路
请输入数字(按0返回选择交通工具界面):1
1.查询花费最少的路径!
系统中有 14 座城市的信息
0南昌
1上海
2天津
3沈阳
4北京
5郑州
6呼和浩特
7兰州
8乌鲁木齐
9西安
10成都
11昆明
12贵阳
城市列表如上,请输入出发城市:城市列表如上,请输入出发城市:南昌
系统中有 14 座城市的信息
0南昌
1上海
2天津
3沈阳
4北京
5郑州
6呼和浩特
7兰州
8乌鲁木齐
9西安
10成都
11昆明
12贵阳
城市列表如上,请输入目的城市:上海
最省钱路径
    南昌     上海 CZ1000 14:20,+0 15:50,+0 01:30,+0 380.000
一共花费380.000元和90分钟!
    现在是关于全国Flight的信息查询!
请选择下列操作之一
    1.查询花费最少的路径
    2.查询耗时最少的路径
    3.显示所有城市
    4.显示所有线路
请输入数字(按0返回选择交通工具界面):

题目8 背包问题

一、问题描述
假设有一个能装入总体积为T的背包和n件体积分别为w1 ,w2,… wn的物品,能否从n件物品中挑选若干件恰好装满背包,即使wl +w2… + wn=T,要求找出所有满足上述条件的解。例如:当T=10,各件物品的体积{1,8,4,3,5,2}时,可找到下列4组解:
(1,4,3,2)
(1,4,5)
(8,2)
(3,5,2)。
二、解题提示
可利用回溯法的设计思想来解决背包问题。首先将物品排成一列,然后顺序选取物品装入背包,假设已选取了前i件物品之后背包还没有装满,则继续选取第i+1件物品,若该件物品“太大”不能装入,则弃之而继续选取下一件,直至背包装满为止。但如果在剩余的物品中找不到合适的物品以填满背包,则说明“刚刚”装入背包的那件物品“不合适”,应将它取出“弃之一边”,继续再从“它之后”的物品中选取,如此重复,直至求得满足条件的解,或者无解。
由于回溯求解的规则是“后进先出”,因此自然要用到栈。
三、测试效果
请输入背包体积:10
请输入物品个数:6
请输入背包内各个物品体积:
1 8 4 3 5 2
第1种挑选方法(1 4 3 2 )
第2种挑选方法(1 4 5 )
第3种挑选方法(8 2 )
第4种挑选方法(3 5 2 )

题目9 连连看游戏

一、问题描述
实现一个字符界面的连连看游戏。
游戏说明:
(1)游戏图板为M*N的矩阵,共有P种图片可供使用(可以根据需要自行改变矩阵大小和图片数目)。
(2)每次初始化随机使用图片填充矩阵,同一种图片的数量必须为偶数个。
(3)同色两个格子无障碍连线不超过2个折点则允许消除。
(4)不需要做出图形界面,程序启动后图板矩阵中随机填充的图片直接在控制台以数字格式输出。
(5)程序能够实现自动连连看,直接给出结果。
(6)程序能够监听控制台输入(输入格式如:[0,0]-[1,0]),程序能根据输入的坐标判断两个格子能否连接消除,如果满足条件则消除,否则给出相应提示。
第1次:字符界面连连看游戏图片的表示。
第2次:字符界面连连看游戏直连和一个转角消除。
第3次:字符界面连连看游戏两个转角消除。
第4次:字符界面连连看游戏自动消除。
第5次:完善程序和报告。
二、解题提示
(1)直连消除情况如图8所示。

图8 直连消除情况
(2)一折消除情况如图9所示。

图9 一折消除情况
(3)二折消除情况如图10所示。

图10 二折消除情况
三、测试效果
0 0 0 0 0 0
0 2 1 2 2 0
0 2 1 2 1 0
0 2 2 1 2 0
0 2 2 1 1 0
0 0 0 0 0 0
请输入要消除的两个点(x1,y1)(x2,y2):(1,1)(1,3)
消除成功!
0 0 0 0 0 0
0 0 1 0 2 0
0 2 1 2 1 0
0 2 2 1 2 0
0 2 2 1 1 0
0 0 0 0 0 0
请输入要消除的两个点(x1,y1)(x2,y2):(1,2)(2,2)
消除成功!
0 0 0 0 0 0
0 0 0 0 2 0
0 2 0 2 1 0
0 2 2 1 2 0
0 2 2 1 1 0
0 0 0 0 0 0
请输入要消除的两个点(x1,y1)(x2,y2):

数据结构课程设计考查报告模板

报告首页应给出报告封面、班级、学号、姓名,报告内容至少包括五个部分内容:
1.功能需求分析。重点陈述程序设计的任务,以及模块划分。
2.数据结构设计。说明本程序中用到的所有抽象数据类型的定义、主程序流程(建议画出流程图)以及各程序模块之间的层次调用关系。
3.数据结构实现。实现数据结构设计中定义的所有数据类型,相关操作,主程序。
4.系统测试。详细列出用户如何操作,列出至少一组测试结果(建议对所有功能进行测试)。
5.设计小结。对算法进行时空复杂度分析,记录设计中遇到的问题,并总结经验和体会。

源码联系UP主 -> https://space.bilibili.com/329101171

  • 25
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值