数据结构程序设计

一、课程设计目的

  1. 熟练掌握线性表、栈、队列、串、数组、树和图等基本数据结构的逻辑特性和存储表示方法;熟练掌握各种基本数据结构的基本算法和其应用;熟练掌握问题分析、数据结构设计、程序设计的基本技能和技术。
  2. 能够综合运用数据结构与算法和相关的数学等理论知识对复杂工程中的算法问题进行抽象、分析和建模;能够依据工程实际问题的需求合理组织数据、并在计算机中有效地存储数据;能够针对复杂工程中的算法问题,设计出比较合理的解决方案,利用具体的编程语言实现解决方案,并具有一定的创新思维能力。
  3. 具有良好的工程素养和职业素养,诚信守法,能够坚持职业操守和道德规范;具有精益求精的工匠精神、创新精神和探索未知终身学习的意识;具有科技报国的社会责任感、使命感和爱国主义情操。

 二、课程设计要求

  1. 问题分析和任务定义:根据设计题目的要求,充分地分析和理解问题,明确问题要求做什么,限制的条件是什么。
  2. 逻辑设计:对问题中涉及到的操作对象定义相应的数据类型,并按照以数据结构为中心的原则划分模块,定义主程序和各抽象数据类型,逻辑设计的结果应写出每个抽象数据类型的定义(包括数据结构的描述和每个基本操作的功能说明),各个主要模块的算法,并画出模块之间的调用关系图。
  3. 物理设计:定义相应的存储结构并写出各函数的伪码算法。在这个过程中,要综合考虑系统功能,使得系统结构清晰、合理、简单和易于调试,抽象数据类型的实现尽可能做到数据封装,基本操作的规格说明尽可能明确具体。详细设计的结果是对数据结构和基本操作做出进一步的求精,写出数据结构存储结构的类型定义,写出函数形式的算法框架。
  4. 程序编码:把详细设计的结果进一步求精为程序设计语言。同时加入一些注解和断言,使程序中逻辑概念清晰。
  5. 程序调试和测试:采用自底向上,分模块进行,即先调试低层函数。能够熟练掌握调试工具的各种功能,设计测试数据确定疑点,通过修改程序来证实它或绕过它。调试正确后,认真整理源程序和注释,形成格式和风格良好的源程序清单和结果。
  6. 结果分析:程序运行结果包括正确的输入及其输出结果、含有错误的输入和输出结果、算法时间复杂度和空间复杂度分析。
  7. 撰写课程设计报告:总结和提升上述过程和步骤,写出结构严谨、表述清楚、符合设计规范的报告。

 三、课程设计内容

中国大学生计算机设计大赛省级赛事管理系统

中国大学生计算机设计大赛是我国高校面向本科生的计算机应用设计大赛,大赛旨在激发学生学习计算机知识和技能的兴趣与潜能,提高学生运用信息技术解决实际问题的综合能力。通过大赛这种计算机教学实践形式,可展示师生的教与学成果,最终以赛促学,以赛促教,以赛促创。该赛事在历届学生中影响力较大,参与者众多。

请了解该赛事组织及管理方式,利用数据结构课程所学的相关知识,为中国大学生计算机设计大赛江苏省组委会设计一个省级赛事管理系统。以2021年省赛数据为例,通过对数据的处理和分析,设计合理的数据结构对赛事相关的数据进行存储及处理。赛事相关数据存储在文本文件和excel文件中,文件中不同的数据项之间均使用#分隔,图1中给出了文件team.txt中参赛信息的对应数据示例。

任务描述】

设计一款赛事管理系统,实现赛务相关的数据管理及信息服务,该系统能够为省级赛事管理解决以下问题:

  1. 赛事信息管理从team.txt中读取参赛队伍的基本信息,设计合适的数据结构存储,能实现对参赛队伍的增加、修改和浏览。为参赛队伍分配一个分数为60~100之间的初赛成绩,并能实现参赛队伍的成绩查询(实现基于二叉排序树的查找)。设计合适的输入输出,根据提示输入参赛队编号,查询队伍的初赛成绩,若查找成功,输出该赛事类别对应的基本信息(参赛作品名称、参赛学校、赛事类别、参赛者和初赛成绩信息)。另外,输出全部参赛队的平均查找长度ASL

(2)决赛现场模拟首先进行决赛分组,生成决赛秩序册,供参赛队查询。根据赛事类别将参赛队伍分配到17个决赛室(编号为1~17)秩序册中每个决赛室的进场顺序为初赛成绩降序排列。(排序算法从选择排序、插入排序、希尔排序、归并排序、堆排序中选择一种,并为选择该算法的原因做出说明)然后,模拟决赛秩序。比赛现场会设置大型候赛区,场地中有大屏以时间线动态展示各决赛室中正在决赛的队伍,侯赛的队伍及比赛结束的队伍信息。请编写程序模拟候赛区大屏上动态展示各参赛队候场、比赛中、比赛结束的状态。

(3)决赛地图导览为参赛者提供决赛主办地的各种路径导航的查询服务,以我校长山校区提供比赛场地为例,为参赛者提供不少于12个目标地的导航。为参赛者提供校园地图中任意目标地(建筑物)相关信息的查询;提供图中任意目标地(建筑物)的问路查询。

任务要求】

  1. 请根据任务描述的问题,设计合理的菜单,菜单交互设计要合理,便于用户根据提示使用系统的所有功能。
  2. 赛事数据要求从文件(txt或excel)读入,修改后的信息能存入文件。

3)第三个任务赛地目的地查询,需输出目的地(建筑物)名称、代号、简介等信息;最短路径的输出需包含途经地及最短路径值并分析主要算法的时间复杂度

4)请自行设计测试数据。使用全部合法数据,整体非法数据,局部非法数据对程序测试,以保证程序的健壮性。

5)编码时请注意规范代码结构,重要的变量,函数要有清晰的注释;注重代码的效率和可重用性,实现低耦合、高内聚,不要将各种功能混在一个方法中编写。

【实现步骤提示】

  1)分析任务,进行功能设计,菜单设计;

2)定义数据结构,建议按照抽象数据类型的定义、表示和实现来描述,用类C语言(伪代码)来描述数据的存储表示和相应操作的具体实现过程。

3)设计合适的算法来实现其功能,并绘制函数调用关系图

四、伪代码:

1. 定义数据结构 Team,包含参赛队编号、参赛作品名称、参赛学校、赛事类别、参赛者和初赛成绩信息等属性。

2. 定义二叉排序树 BST,用于存储和查找参赛队伍的初赛成绩。

3. 定义函数 read_team_data,从 team.txt 文件中读取参赛队伍的基本信息,并将其存储到 Team 对象中。

4. 定义函数 write_team_data,将 Team 对象中的数据写入到 team.txt 文件中。

5. 定义函数 add_team,实现对参赛队伍的增加操作。

6. 定义函数 update_team,实现对参赛队伍的修改操作。

7. 定义函数 search_team,实现基于二叉排序树的查找操作,返回查找到的参赛队伍的初赛成绩。

8. 定义函数 calculate_ASL,计算全部参赛队的平均查找长度 ASL。

9. 定义函数 generate_finals_schedule,根据赛事类别将参赛队伍分配到17个决赛室,并生成决赛秩序册。

10. 定义函数 simulate_finals,模拟决赛现场过程,包括比赛场地的动态展示、候赛区大屏的更新等。

11. 定义函数 find_destination,为参赛者提供决赛主办地的各种路径导航查询服务。

12. 定义函数 query_building_info,为参赛者提供校园地图中任意目标地(建筑物)的相关信息查询。

13. 定义函数 ask_direction,为参赛者提供图中任意目标地(建筑物)的问路查询。

14. 设计菜单交互,用户可以根据提示选择使用系统的所有功能。

15. 从文件(txt或excel)读入赛事数据,进行测试。

16. 对程序进行异常处理,保证程序的健壮性。

17. 编写详细的注释,规范代码结构,提高代码的可读性和可维护性。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
1.实验内容: 1) 建立学生档案管理的数据结构和存储结构; 2) 完成学生档案管理数据的基本操作; 3) 为提高管理效率,尝试设计较好的面向应用的查找存储结构,如二叉排序树。 2.实验任务: 设计一个学生档案管理信息系统,管理的学生信息包括学号、姓名、性别、高数成绩、英语成绩、大学物理成绩;要求可对学生档案信息进行浏览、增加、修改、删除和查找操作;能够依据不同的检索条件进行查找. 2 隐式图的搜索问题 1. 实验内容: 1) 对九宫重排问题,建立图的启发式搜索求解问题的方法; 2) 编写九宫重排问题的启发式搜索求解程序。 2. 实验任务: 在3х3九宫棋盘中,放置数码为1~8的8个棋子,棋盘中留有一个空格,空格周围的棋子可以移动到空格中,从而改变棋盘的布局。根据给定初始布局和目标布局,求解如何移动棋子才能从初始布局到达目标布局,找到一种最少步骤的移动方法。 3 可视化界面的文本文件操作 1. 实验内容: 1).通过对可视化开发环境的实用,实现对文本文件编辑器的设计。 2).通过键盘实现对文本文件进行创建、插入、删除、修改、存储等操作。 2. 实验任务: 设计一个具有可视化界面的全文本编辑器,通过对键盘操作可实现对文本进行显示、插入、修改、删除、查找、存储等操作。实现全文本编辑器的基本功能。具体要求如下:  具有图形菜单界面;  能正确显示文本总行数。(行数不少于5行,每行字符数不少于80个字符);  可正确读取,保存文本;  能实现简单的文本处理功能  查找:查找文本中的字符串,显示其出现的行数,列数及总共出现次数  替换(等长,不等长):对文本中的文本实现等长及不等长替换  插入(插串,文本块的插入):插入一行或在具体行号列号处插入文本  删除:删除一行,删除某一行、某列,定长的内容
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值