C/C++《数据结构与算法》课程设计备选题目[2024-02-22]

C/C++《数据结构与算法》课程设计备选题目[2024-02-22]

《数据结构与算法》课程设计备选题目
请在下面的题目中选择一个完成设计。也可以在清单之外确定题目,实现自己的创新作品。鼓励同学在设计期间,提出自己富有特色的选题,必要时,可以和指导教师讨论。

学生成绩管理
学生成绩管理是学校教务部门日常工作的重要组成部分,其处理信息量很大。本项目是对学生成绩管理的简单模拟,用菜单选择方式完成下列功能:输入学生数据;输出学生数据;学生数据查询;添加学生数据;修改学生数据;删除学生数据,按综合成绩排名。
本项目的实质是完成对学生成绩信息的建立、查找、插入、修改、删除、按综合成绩排名等功能,可以首先定义项目的数据结构,然后将每个功能写成一个函数来完成对数据的操作,最后完成主函数以验证各个函数功能并得出运行结果。

考试报名管理
各种考试,如英语四六级、计算机等级考试等,报名的工作量巨大。本项目是对考试报名管理的简单模拟,用菜单选择方式完成下列功能:输入考生信息;输出考生信息;查询考生信息;添加考生信息;修改考生信息;删除考生信息。
本项目的实质是完成对考生信息的建立、查找、插入、修改、删除等功能,可以首先定义项目的数据结构,然后将每个功能写成一个函数来完成对数据的操作,最后完成主函数以验证各个函数功能并得出运行结果。

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

N皇后问题
八皇后问题是一个古老而著名的问题,是回溯算法的典型例题。该问题是十九世纪著名的数学家高斯1850年提出:在88格的国际象棋棋盘上,安放八个皇后,要求没有一个皇后能够“吃掉”任何其他一个皇后,即任意两个皇后都不能处于同一行、同一列或同一条对角线上,求解有多少种摆法。
高斯认为有76种方案。1854年在柏林的象棋杂志上不同的作者发表了40种不同的解,后来有人用图论的方法得出结论,有92种摆法。
八皇后在棋盘上分布的各种可能的格局数目非常大,约等于232种,但是,可以将一些明显不满足问题要求的格局排除掉。由于任意两个皇后不能同行,即每一行只能放置一个皇后,因此将第i个皇后放置在第i行上。这样在放置第i个皇后时,只要考虑它与前i-1个皇后处于不同列和不同对角线位置上即可。
解决该问题采用回溯法。首先将第一个皇后放于第一行第一列,然后依次在下一行上放置下一个皇后,直到八个皇后全放置安全。在放置每一个皇后时,都依次对每一列进行检测,首先检测待第一列是否与已放置的皇后冲突,如不冲突,则将皇后放置在该列,否则,选择该行的下一列进行检没。如整行的八列都冲突,则回到上一行,重新选择位置,依次类推。
本项目要求输出N皇后问题的所有解。

叫号机
在银行、电信营业厅等场合,都安排了叫号机,用于维护为客户服务的时间。以银行为例,叫出的号分对公业务和个人业务两类。客户时入营业厅,都需要叫号。叫出的号总是连续的,并且作为客户排队的依据。营业窗口有N个,其中指定1个为对公业务窗口。若对公业务的排队非空,从对公业务队列中,出队队首的客户服务,而对公业务的排队是空的,则叫个人业务的队首客户来服务;N-1个支持个人业务的窗口,首先从个人业务的队列中选择客户,而个人业务的排队人数为0时,也从对公业务排队中选择客户。
实现算法,支持上面的业务。其功能有叫号(客户在个人业务或对公业务的队列中排队),还有各个窗口服务、完成服务、选取下一客户的功能。请设计一个菜单,在测试中演示整个的业务动作情况。

家谱管理
家谱是中国特有的文化遗产,是中华民族的三大文献(国史,地志,族谱)之一,属珍贵的人文资料,对于历史学、民俗学、人口学、社会学和经济学的深入研究,均有其不可替代的独特功能。本项目对家谱管理进行简单的模拟,以实现查看祖先和子孙个人信息、插入家族成员、删除家族成员等功能并利用并查集查找亲戚关系。
本项目的实质是完成对家谱成员信息的建立、查找、插入、修改、删除,查找亲属关系等功能,可以首先定义家族成员的数据结构,然后将每个功能写成一个函数来完成对数据的操作,最后完成主函数以验证各个函数功能并得出运行结果。

图像压缩编码优化
信息时代,人们对使用计算机获取信息、处理信息的依赖性越来越高。计算机系统面临的是数值、文字、语言、音乐、图形、动画、静图像、电视视频图像等多种媒体。数字化的视频和音频信号的数量之大是惊人的,解决的基础在于对数据进行压缩。压缩的关键在于编码,如果在对数据进行编码时,对于常见的数据,编码器输出较短的码字;而对于少见的数据则用较长的码字表示,就能够实现压缩。
假设一个文件中出现了8种符号S0,S1,S2,S3,S4,S5,S6,S7,那么每种符号要编码,至少需要3bit。这是一种不经济的编码方案,请实现哈夫曼编码的算法,输入符号及各符号在信息源中出现的概率,输出能使符号的平均编码长度尽可能小的编码方案。
(加分的附加功能:保存编码方案表,给出编码后的0、1构成的串,解码为原始的符号序列。)

公交线路管理
本项目是对公交车线路信息的简单模拟,以完成建立公交路线信息、修改公交路线信息和删除公交路线信息等功能,能以最省钱、最省时间或距离最短为标准,寻找最短路径。
本项目的实质是完成对公交线路信息的建立、查找、插入、修改、删除、寻找最短路径等功能,可以首先定义项目的数据结构,然后将每个功能写成一个函数来完成对数据的操作,最后完成主函数以验证各个函数功能并得出运行结果。

导航最短路径查询
设计一个交通咨询系统,能让旅客咨询从任一个城市顶点到另一个城市顶点之间的最短路径问题。
最短路径不仅仅指一般地理意义上的距离最短,还可以引申到其他的度量,如时间、费用、线路容量等。相应地,最短路径问题就成为最快路径问题、最低费用问题等。由于最短路径问题在实际中常用于汽车导航系统以及各种应急系统等(110报警、119火警以及医疗救护系统),这些系统一般要求计算出到出事地点的最佳路线的时间一般在1s-3s,在行车过程中还需要实时计算出车辆前方的行驶路线,这就决定了最短路径问题的实现应该是高效率的。
设计分三个部分,一是建立交通网络图的存储结构;二是解决单源最短路径问题;最后再实现两个城市顶点之间的最短路径问题。

电网建设造价计算
假设一个城市有n个小区,要实现n个小区之间的电网都能够相互接通,构造这个城市n个小区之间的电网,使总工程造价最低。请设计一个能满足要求的造价方案。
在每个小区之间都可以设置一条电网线路,相应的都要付出一点经济代价。n个小区之间最多可以有n(n-1)/2条线路,选择其中的n-1条使总的耗费最少。可以用连通网来表示n个城市之间以及n个城市之间可能设置的电网线路,其中网的顶点表示小区,边表示两个小区之间的线路,赋予边的权值表示相应的代价。对于n个顶点的连通网可以建立许多不同的生成树,每一颗生成树都可以是一个电路网。现在,我们要选择总耗费最少的生成树,就是构造连通网的最小代价生成树的问题,一颗生成树的代价就是树上各边的代价之和。

软件工程进度规划
设计一个软件,需要进行用户需求分析、系统需求确认、系统概要设计、设计用例场景、系统的详细设计、数据库详细设计、编码、单元测试、集成测试、系统测试、维护等活动。用户需求分析需要在系统需求确认之前完成,系统的系统的详细设计必须在系统的概要设计、设计系统用例和设计用例场景之前完成。
如表所示,是一系列活动之间的关系。

系统活动之间的关系
活动代码 活动名称 先需活动
A1 用户需求分析 无
A2 系统需求确认 A1
A3 系统概要设计 A2
A4 设计用例场景 无
A5 系统的详细设计 A3, A4
A6 数据库详细设计 A3
A7 编码 A5, A6
A8 单元测试 A7
A9 集成测试 A8
A10 系统测试 A7
A11 维护 A11

图所示是设计一个软件的AOV网示意图。


软件设计流程的AOV网

请设计算法判断该软件设计流程是否有回路,若无请给出该软件设计AOV网的拓朴序列。

景区旅游信息管理系统
在旅游景区,经常会遇到游客打听从一个景点到另一个景点的最短路径和最短距离,这类游客不喜欢按照导游图的线路来游览,而是挑选自己感兴趣的景点游览。为于帮助这类游客信息查询,就需要计算出所有景点之间最短路径和最短距离。算法采用迪杰斯特拉算法或弗洛伊德算法均可。建立一个景区旅游信息管理系统,实现的主要功能包括制订旅游景点导游线路策略和制订景区道路铺设策略。
任务中景点分布是一个无向带权连通图,图中边的权值是景点之间的距离。
(1)景区旅游信息管理系统中制订旅游景点导游线路策略,首先通过遍历景点,给出一个入口景点,建立一个导游线路图,导游线路图用有向图表示。遍历采用深度优先策略,这也比较符合游客心理。
(2)为了使导游线路图能够优化,可通过拓朴排序判断图中有无回路,若有回路,则打印输出回路中的景点,供人工优化。
(3)在导游线路图中,还为一些不愿按线路走的游客提供信息服务,比如从一个景点到另一个景点的最短路径和最短距离。在本线路图中将输出任意景点间的最短路径和最短距离。
(4)在景区建设中,道路建设是其中一个重要内容。道路建设首先要保证能连通所有景点,但又要花最小的代价,可以通过求最小生成树来解决这个问题。本任务中假设修建道路的代价只与它的里程相关。
归纳起来,本任务有如下功能模块:(1)创建景区景点分布图;(2)输出景区景点分布图(邻接矩阵)(3)输出导游线路图;(4)判断导游线路图有无回路;(5)求两个景点间的最短路径和最短距离;(6)输出道路修建规划图。(7)主程序用菜单选项供用户选择功能模块。

职工信息管理系统
职工信息包括职工号、姓名、性别、年龄、学历、工资、住址、电话等(职工号不重复)。设计一个职工信息管理系统,使之能提供以下功能:
(1)系统以菜单方式工作;
(2)职工信息录入功能(职工信息用文件保存)--输入;
(3)职工信息浏览功能--输出,包括在退出系统时,将数据保存到文件;
(4)查询和排序功能:
按工资查询
按学历查询等
(5)职工信息删除、修改功能;

图书信息管理系统设计
图书信息包括:登录号、书名、作者名、分类号、出版单位、出版时间、价格等。试设计一个图书信息管理系统,使之能提供以下功能:
(1)系统以菜单方式工作
(2)图书信息录入功能(图书信息用文件保存)--输入
(3)图书信息浏览功能--输出
(4)查询和排序功能:(至少一种查询方式)--算法
按书名查询
按作者名查询
(5)图书信息的删除与修改(可选项)
(6)图书借阅功能(包括该图书能否借阅,借书时间,还时间,逾期提示与收取费用等功能选项)

学生信息管理系统设计
学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail等。试设计一学生信息管理系统,使之能提供以下功能:
(1)系统以菜单方式工作
(2)学生信息录入功能(学生信息用文件保存)
(3)学生信息浏览功能—输出
(4)查询、排序功能
按学号查询
按姓名查询
(5)学生信息的删除与修改

销售管理系统
某公司有四个销售员(编号:1-4),负责销售五种产品(编号:1-5)。每个销售员都将当天出售的每种产品各写一张便条交上来。每张便条包含内容:
1)销售员的代号
2)产品的代号
3)这种产品的当天的销售额
每位销售员每天可能上缴0-5张便条。假设,收集到了上个月的所有便条,编写一个处理系统,读取上个月的销售情况(自己设定),进行如下处理。
1)计算上个月每个人每种产品的销售额。
2)按销售额对销售员进行排序(不得使用冒泡和选择排序),输出排序结果(销售员代号)
3)统计每种产品的总销售额,对这些产品按从高到底的顺序(不得使用冒泡和选择排序),输出排序结果(需输出产品的代号和销售额)
4)输出统计报表

通讯录管理
通讯录是人们日常生活中经常要用到的通讯管理工具,它以文件的方式保存用户录入的数据,并提供查询的功能供用户查询和使用通讯录信息。
通讯录要求实现最基本的功能,包括录入、删除、查找和修改,为此需要首先定义记录项的格式,其基本属性包括编号、姓名、性别、住址、联系电话等。
整个系统由如下几大功能模块组成:

  1. 通讯录的建立。该模块主要完成将数据存入数组中的工作。记录可以从文本形式存储的数据文件中读入,也可以从键盘逐个输入记录。
  2. 通讯录的查询。用户可以按照联系人的姓名或电话号码查询。若找到满足查询条件的记录,则以表格的形式显示出此记录的信息;否则,显示未找到记录的提示信息。
  3. 通讯录的维护。实现对记录的修改,删除,插入和排序(不得使用冒泡和选择排序)操作。
  4. 通讯录的输出。实现屏幕显示和将数组中存储的记录信息写入数据文件中。

班级个人信息管理系统
用计算机管理班级成员的个人信息,不仅便于做一些分析统计应用,而且在班级个人信息管理的基础上,还能扩充添加与个人相关的课程信息、成绩信息等,将使个人信息管理工作方便快捷。
班级个人信息管理系统主要功能有录入记录、显示记录、查询记录、追加记录、删除记录、排序及记录文件保存等,每条记录的基本信息为:学号、姓名、邮箱、电话和住址。

文章编辑
输入一页文字,每行最多不超过80个字符,共N行,编程序可以统计出文字、数字、空格的个数。要求:
(1)分别统计出其中英文字母数和空格数及整篇文章总字数;
(2)统计某一字符串在文章中出现的次数,并输出该次数;
(3)删除某一子串,并将后面的字符前移。
设计思路:
(1)首先生成一个二维数组,把一篇文章用一个二维数组来存储。
(2)然后用一个函数来编译计这篇文章里面用多少个字母,多少个数字,多少个空格键,以及文章的总字数。
(3)通来模式匹配的方式,在文章中找与我们输入的字符串相等和字符串的个数,然后把总次数输出来。
(4)在文章中删除一个字符串,其具体过程是如下:
首先把这篇文章的存储结构由原来的二维数组转化为一维数组。
然后在一维数组中找到我们要删除的子串的位置,并将其删除。再把这删除的子串的后面的元素往前移删除的子串的长度个位置。
最后再把这篇文章的存储结构由一维数组再转化为二维数组,并把被删除后的文章输出来。

教学计划编制问题
已知某专业学生必须完成的全部课程。课程代表活动,学习一门课程就表示进行一项活动,学习每门课程的先决条件是学完它的全部先修课程。用AOV网来表示这种课程安排的先后顺序关系,图中每个顶点代表一门课程,每条有向边代表起点对应的课程是终点对应课程的先修课。试在这样的前提下设计一个教学计划编制程序。
设计要求:按课程的先修和后序关系画出一个有向图,编写函数实现图的拓扑排序。
设计思路:用邻接表构造图 然后进行拓扑排序
(1)建立一个有向图,包含有向图的顶点和弧,用邻接表存储。
(2)建立邻接链表的思路:每个结点应该含有图的顶点和指向下一条弧的指针,依次存储。
(3)构造栈对弧进行存储,出栈按照一定的规定排序,最后输出。

电子投票系统
本项目功能多,可以由2-3名同学合作完成。鼓励同学合作进行开发,可获得各适当的加分,但答辩时,要明确分出各自的工作。由1人完成时(不加分),可以自行去除其中的一些非核心功能。
投票人主要功能如下:
(1)投票人输入要选举的候选人编号,即可完成投票。
(2)投票人可以浏览候选人列表、输入序号查询候选人介绍。
管理员的主要功能如下:
(1)初始化候选人信息:在系统投入使用前需要先将需要投票选举的候选人信息录入系统中,以便投票和查看。管理员的初始化工作就是将候选人的序号、姓名和简介录入系统。
(2)浏览候选人简介:为随时掌握候选人的信息,以便进行修改,管理员有权浏览候选人简介。浏览的顺序按照候选人序号即可。
(3)修改候选人简介:当系统更新或候选人信息有所变化时,输入候选人序号对其信息进行修改。
(4)查询投票情况:管理员有权查询当前各个候选人得票情况,以便得出最终被选出的候选人信息。
(5)清除投票信息:当投票工程结束后,管理员选择清除投票信息即清除系统中所有候选人的票数,使之归零。
(6)管理员可以对投票人进行管理,投票人只有用管理员规定的用户名和密码才能进入系统进行投票。管理员还可以更改用户名、密码和权限,并对投票人信息进行增加、删除、查询、排序和初始化等操作。

家庭财务管理系统
本项目功能多,可以由2-3名同学合作完成。鼓励同学合作进行开发,可获得适度的加分,但答辩时,要明确分出各自的工作。也可以参考相关说明,自行抽取部分功能(5个),由1人单独完成(不加分)。
家庭财务管理系统软件是为用户进行家庭成员的收支构成及信息管理进行辅助的应用软件。功能描述如下:
①用户登录:系统获取的家庭成员用户名和密码判断该家庭成员能否登录系统,并且当用户登录后根据权限判断该家庭成员是家长还是普通成员,可以使用对应功能。普通级别的用户只有浏览权限而不能进行实质性改动。
②给家庭成员提供功能选择界面:不同级别的家庭成员对应不同的功能选择界面。功能选择界面包括输入功能选项、调用相应程序两大需求。管理员和普通用户对应的功能选择界面是不同的。
③创建收支选项文件:用户根据提示输入家庭成员的序号、姓名、各项财务信息,如收入、支出、合计。可一次性输入多条家庭成员的收支信息。系统将家庭成员收支信息记录存储在系统磁盘中,以便进行管理、查找和备份。
④增加家庭成员收支信息:可在原有收支信息的基础上增加新的家庭成员财务信息记录,并继续保存至磁盘,并且将增加后的文件存储状态显示给用户。在增加新家庭成员收支记录的过程中,系统提示输入收入、支出两个财务构成项,最终合计,要求系统主动计算获得,并同样作为财务构成项存入文件对应的记录中。
⑤删除家庭成员收支信息:提示用户输入要进行删除操作的家庭成员序号,如果在文件中有该家庭成员的收支信息在,则将该序号所对应的姓名、序号、各种收入构成等在对应文件中加以删除.由系统提示是否继续删除操作,让家长可多次进行删除操作.
⑥修改家庭成员收支信息:提示用户输入要进行修改操作的家庭成员序号,如果在文件中有该家庭成员的收支信息操作,则提示用户输入该序号对应的家庭成员姓名、收入和支出构成等相应修改的选项,并将修改结果存储于文件。该部分需求也要提示用户选择是否进行进行修改操作。修改操作中的合计部分,也需要有系统修改后的收入、支出项目自动计算修改后的合计财务数额,并连同用户输入的其他修改项一起存入磁盘文件中。
⑦查询家庭成员财务情况:分为根据姓名和根据序号查询两个具体需求,分别提示用户输入要查询家庭成员信息的序号或姓名,如果在磁盘文件中有相对应的家庭成员财务信息,则提示用户已找到,并逐项列出对应家庭成员的收支状况。在该功能中,也需提示用户是否需要继续查找,如果不再继续查找,则返回主界面。
⑧家庭成员收支排行浏览:该项需求要求根据家庭成员的合计项进行排行,以便用户对家庭成员输入状况有较为直观方便的了解。由于在磁盘存储的家庭成员收支文件可能有多个,所以提示用户要浏览的具体文件名,然后根据合计项从大到小进行排列,显示家庭成员号、姓名及各项财务构成。
⑨家庭成员管理:家长对普通家庭成员的管理也需要进行家庭成员的创建、增加、删除、修改和浏览。家长创建的家庭成员记录存储在名为yonghu的磁盘文件中,每当有家庭成员登录系统时,系统都会根据该文件中的用户名和密码进行核实判断,用户才能顺利登录。家长还具有增加新家庭成员的功能。新增家庭成员的登录名及密码、权限等也被继续存储在yonghu文件中。当某些家庭成员不再使用该系统时,还可以进行删除操作,并且家长具有修改家庭成员权限的功能。

航空客运订票系统
航空客运订票的业务活动包括:查询航线和客票预定的信息、客票预定和办理退票等。设计一个计算机程序,使上述任务能借助计算机来完成。
系统必须存储的数据信息包括:航线信息(飞机抵达城市、航班号、飞机号、起降时间、航班票价、票价分析、总位置和剩余位置、已订票的客户名单)和客户信息(客户姓名、证件号、座位号)。
系统能实现的操作和功能包括:(1)承办订票业务:根据客户提出的要求(飞机抵达城市、起降时间、订票数量)查询该航班信息(包括票价、折扣和剩余位置),若满足要求,则为客户办理订票手续,输出座位号。(2)查询功能:①查询航线信息:根据房间降落地点,输出航班号、飞机号、起降时间、航班票价、票价折扣和剩余位置等信息;②查询客户预订信息:根据客户证件号,输出航班号、房间号和座位等信息。(3)座位调换功能(4)改签功能。

银行业务的模拟系统
设计一个银行业务模拟系统,模拟银行的业务运行并计算一天中客户在银行逗留的平均时间。银行有N(N的取值自己定义)个窗口对外接待客户,从早晨银行开门起不断有客户进入银行。由于每个窗口在某个时刻只能接待一个客户,因此在客户人数众多时需在每个窗口前顺次排队,对于刚进入银行的客户,如果某个窗口的业务员正空闲,则可上前办理业务;反之,若N个窗口均有客户所占,他便会排在人数最少的队伍后面。
基本要求:(1)可以设定银行的对外营业时间(银行的开门时间以及银行的关门时间)。(2)用人机交互的方式来输入客户的到达时间以及客户的离开时间,用队列来存储客户的到达事件和客户的离开事件。(3)可以友好的显示出在某一天中整个银行系统中客户在银行逗留的平均时间。

电梯运行仿真
问题描述:编写一个程序,模拟办公大楼中全部电梯的工作过程。该仿真程序可以用来监测系统运行情况,改善大楼管理,它也可以看成是一种游戏程序。
办公大楼有若干层(例如,10层),每层都有电梯可到达,全楼有若干部(例如,不多于10 部)电梯同时供使用,电梯容量为24人,电梯运行每上下一层需5 秒,在某一层停下至少需15 秒。其运行状态可分:向上、向下、停止,当前乘客数,当前所在层数。它设有一个“按钮数组”,例如第五层的按钮按下,意味着有乘客在第5 层到达目标层,等等。
在楼的每一层,有电梯数,有按钮表示有人等待向上或向下,由若干人在等待,有若干电梯在本层停下,等等。
在大楼中(包括进出)的总人数不超过500 人,每个人站在电梯前有个目标层,他有一个最大的忍受等待时间,因为他可以选择电梯或是步行走楼梯,等等。
还有下面若干假设:在每个时间段要进大楼的人数在0~199 之间随机取值;
用电梯的每个人的目标层在1~10 之间取值;一个人在进电梯或改走楼梯之前的等待时间在180~360 秒范围内随机发生;一个人到达目标层后第二次再乘电梯中间的工作时间在400~6600 秒间随机取值。

交通咨询系统
在交通网络非常发达,交通工具和交通方式不断更新的今天,人们在出差、旅游或做其他出行时,不仅关心节省交通费用,而且对里程和所需时间等问题也感兴趣。对于这样一个人们关心的问题,可用一个图结构来表示交通网络系统,利用计算机建立一个交通咨询系统。图中顶点表示城市,边表示城市之间的交通关系。这个交通系统可以回答旅客提出的各种问题。例如,一位旅客要从A城到B城,他希望选择一条途中中转次数最少的路线。假设图中每一站都需要换车,那么这个问题反映到图上就是要找一条从顶点A到B所含边的数目最少的路径。需要从顶点A出发对图作广度优先搜索,一旦遇到最少的路径。路径上A与B 之间的顶点就是路径的中转站数,但只是一类最简单的图的最短路径问题。
设计的交通咨询系统,支持交通网络图的建立,并能让旅客咨询从任一个城市顶点到另一城市之间的最短路路径(里程)或最低花费或最少时间等问题。对于不同咨询要求,可输入城市间的路程或所需时间或所需费用。

校园导游
设计一个校园导游程序,为来访的客人提供各种信息查询服务。
(1)设计学校的校园平面图,所含景点不少于6个。以图中顶点表示校内各景点,存放景点名称、代号、简介等信息;以边表示路径,存放路径长度等相关信息。
(2)为来访客人提供图中任意景点相关信息(景点介绍和特色)的查询。
(3)提供途中任意景点问路查询,即求任意两个景点间的一条最短的简单路径。
下面给出设计思路。校园旅游模型是由景点和景点之间的路径组成的,所以这完全可以用数据结构中的图来模拟。用图的结点代表景点,用图的边代表景点之间的路径。所以首先应设计一个图类。结点值代表景点信息,边的权值代表景点间的距离。结点值及边的权值用顺序表存储,所以需要设计一个顺序表类。本系统需要查询景点信息和求一个景点到另一个景点的最短路径长度及路线,为方便操作,所以给每个景点一个代码,用结构体类型实现。计算路径长度和最短路线时可用狄克斯特拉(Dijkastra)算法实现。最后用switch选择语句选择执行浏览景点信息或查询最短路径。

关键路径
AOE网(即边表示活动的网络),在某些工程估算方面非常有用。它可以使人们了解:(1)研究某个工程至少需要多少时间?(2)哪些活动是影响工程进度的关键? 在AOE网络中,从源点到汇点的有向路径可能不止一条,但只有各条路径上所有活动都完成了,这个工程才算完成。因此,完成整个工程所需的时间取决于从源点到汇点的最长路径长度,即在这条路径上所有活动的持续时间之和,这条路径就叫做关键路径(critical path)。
以某一工程为蓝本,采用图的结构表示实际的工程计划时间。在调查并分析和预测这个工程计划每个阶段的时间的基础上,用调查的结果建立AOE网,并用图的形式表示。用CreateGraphic ()函数建立图的邻接表存储结构,能够输入图的顶点和边的信息,并存储到相应存储结构中。用SearchMaxPath()函数求出最大路径,并打印出关键路径。根据以上叙述,编写代码并调试、测试,求出工程活动安排中的关键路径。

航班信息的查询与检索
当今乘飞机旅行的人越来越多,人们需要关心了解各类航班的班次、时间、价格及机型等信息。在这个飞机航班数据的信息模型中,航班号是关键字,而且是具有结构特点的一类关键字。因为航班号是字母数字混编的,例如CZ3869,这种记录集合是一个适合于多关键字排序的例子。
设计要求对飞机航班信息进行排序和查找。可按航班的航班号进行基数排序排序,利用二分查找法对排好序的航班记录按航班号实现快速查找,按其他次关键字的查找可采用最简单的顺序查找方法进行,因为它们用得较少。
每个航班记录包括八项,分别是:航班号、起点站、终点站、班期、起飞时间、到达时间、飞机型号以及票价等。

飞机订票系统
系统为客户提供下列服务:
查询航线:根据旅客提供的终点站名输出下列信息:航班号、飞机号、周几飞行,最近一天航班的日期和余票额;
承办订票业务:如无,则预约登记,排队等候;
承办退票业务:如遇退票,则查询预约客户;
改签功能的实现。
打折机票的显示。
实现提示:每条航线应包括的信息有:终点站名、航班号、飞机号、飞行日期、乘员定额、余票额、已订票的客户名单和预约名单。后两项显然是一个线性表和一个队列。为插入和删除方便,已订票的客户应以链表作存储结构;同时,预约队列也该以链表作存储结构。

内部排序的动画演示与性能分析
设计动画演示,对冒泡排序、直接排序、简单选择排序、快速排序、希尔排序、堆排序算法,就其排序过程中关键字比较次数和移动次数进行比较。
要求待排序表的表长不小于10000,设计专门的函数产生随机的数据序列。至少要用5组不同的数据作比较,比较指标有:关键字参加比较次数和关键字的移动次数(关键字交换记为3次移动)。
最后输出比较结果,并结合算法复杂度的分析,解释比较结果。

运动会分数统计
参加运动会有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)可以按学校编号查询学校某个项目的情况;(5)可以按项目编号查询取得前三或前五名的学校。
规定:输入数据形式和范围:20以内的整数(如果做得更好可以输入学校的名称,运动项目的名称)
输出形式:有中文提示,各学校分数为整型。
界面要求:有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。
测试数据要有:1、全局数据 2、局部非法测试 保证程序的稳定性

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值