数据结构实践——运动会分数统计系统_第1页
数据结构实践——运动会分数统计系统_第2页
数据结构实践——运动会分数统计系统_第3页
数据结构实践——运动会分数统计系统_第4页
数据结构实践——运动会分数统计系统_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

目目 录录 1 摘要摘要 3 2 概述概述 2 1 设计目的设计目的 3 2 2 设计内容设计内容 3 2 3 系统功能要求系统功能要求 4 2 4 相关知识相关知识 4 3 思路思路 3 1 提出问题提出问题 5 3 2 分析问题分析问题 5 3 3 解决问题解决问题 5 4 系统设计 系统设计 4 1 主函数主函数 5 4 2 结构体的定义结构体的定义 7 4 3 文件存储文件存储 8 4 4 流程图流程图 9 5 调试与运行 调试与运行 5 1 运行主菜单运行主菜单 10 5 2 输入信息输入信息 10 5 3 输出信息输出信息 10 5 4 查询信息查询信息 11 5 5 调用信息调用信息 11 6 调试过程中出现的问题及解决方式调试过程中出现的问题及解决方式 6 1 出现的问题出现的问题 12 6 2 解决方式解决方式 12 7 总结 总结 12 8 附录 源代码 附录 源代码 13 第 2 页 共 23 页 1 摘要 摘要 二十一世纪是计算机飞速发展的世纪 面对着不断更新的计算机系统 计二十一世纪是计算机飞速发展的世纪 面对着不断更新的计算机系统 计 算机给人们带来了越来越多的方便 比如现代运动会得分数统计就可以由计算算机给人们带来了越来越多的方便 比如现代运动会得分数统计就可以由计算 机来完成 然而要是计算机完成这种计算 人们必须给计算机赋予这种计算的机来完成 然而要是计算机完成这种计算 人们必须给计算机赋予这种计算的 功能 那么这种计算功能具体是怎样实现的呢 今天就让我们一起走进这个神功能 那么这种计算功能具体是怎样实现的呢 今天就让我们一起走进这个神 奇的世界 奇的世界 2 概述 概述 2 1 设计目的设计目的 数据结构数据结构 是计算机程序设计的重要理论基础 学懂了数据结构可以是计算机程序设计的重要理论基础 学懂了数据结构可以 帮助编程者编出功能强大的程序 帮助编程者编出功能强大的程序 本次实践的重要目的是让我们结合理论知识 实际上机操作 让我们更好本次实践的重要目的是让我们结合理论知识 实际上机操作 让我们更好 的理解数据结构的应用 的理解数据结构的应用 另外目的还有另外目的还有 1 使我们更加熟练的掌握专业知识 使我们更加熟练的掌握专业知识 2 掌握初步的算法分析及解决能力掌握初步的算法分析及解决能力 3 初步掌握独立解决软件开发过程中遇到的诸如问题分析 系统设计 运初步掌握独立解决软件开发过程中遇到的诸如问题分析 系统设计 运 用数据结构的相关知识解决问题和调试等基本方法与技能 用数据结构的相关知识解决问题和调试等基本方法与技能 2 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 功能要求 1 可以输入各个项目的前三名或前五名的成绩 第 3 页 共 23 页 2 能统计各学校总分 3 可以按学校编号或名称 学校总分 男女团体总分排序输出 4 可以按学校编号查询学校某个项目的情况 可以按项目编号查询取得前三或 前五名的学校 5 数据存入文件并能随时查询 6 规定 输入数据形式和范围 可以输入学校的名称 运动项目的名称 输出形式 有中文提示 各学校分数为整形 界面要求 有合理的提示 每个功能可以设立菜单 根据提示 可以完成 相关的功能要求 2 4 系统功能要求系统功能要求 存储结构 学生自己根据系统功能要求自己设计 但是要求运动会的相关 数据要存储在数据文件中 数据文件的数据读写方法等相关内容在 c 语言程序 设计的书上 请自学解决 请在最后的上交资料中指明你用到的存储结构 测试数据 要求使用 1 全部合法数据 2 整体非法数据 3 局部非法 数据 进行程序测试 以保证程序的稳定 测试数据及测试结果请在上交的资 料中写明 2 5 相关知识相关知识 数据结构中的数据存储结构有多种 在我的设计中用到了以下知识 1 结构体数组类型存储数据 结构体是由相同或不同数据类型组成的一种复杂 的数据类型 结构体类型的定义只是该结构的组成情况 编译系统并未因此而 为其分配存储空间 当定义了结构体类型的变量或数组或编译系统才为其分配 存储空间 第 4 页 共 23 页 2 查询 对于线性表而言可以有多种方法 输入要查询的内容信息 通过查询 函数就能实现要查询的内容 3 思路 思路 3 1 提出问题提出问题 1 首先需要用什么存储结构来存储数据 2 怎样排序才能得到用户想要的结果 3 怎样把项目信息与学校信息结合 实现同步 3 2 分析问题分析问题 对于以上问题我们怎样才能解决呢 首先 对于存储结构我们可以采用顺序表 链表 结构体数组等方式 排序方式也有冒泡排序 插入排序等方式 要实现 同步我们可以用结构体嵌套的方式实现 3 3 解决问题解决问题 对于上面提到的存储结构顺序表当然可以 但在实际中同步那一块遇到了较 大的问题 所以在这里我们不妨用结构体数组的方式来存储 这样存储结构的 问题就解决了 然后排序方式我选用了冒泡排序 这样就更好的对应了结构体 数组的存储方式 这样问题就解决了 下面让我们看看具体怎样实现的吧 4 系统设计 系统设计 4 1 主函数主函数 主函数的功能菜单如下 int main int choice while 1 printf n 第 5 页 共 23 页 printf 菜 单 选 项 n printf 欢迎使用运动会分数统计系统 n printf n printf n printf n n printf 1 输入信息 n printf n n printf 2 输出信息 n printf n n printf 3 查询信息 n printf n n printf 4 调用信息 n printf n n printf 5 退出系统 n printf n printf n printf n printf 请选择以上操作 n scanf d switch choice case 1 system cls Inputinformation 输入信息的函数 Writedata 往文件了读入数据的函数 Readata 从文件了读出数据的函数 main break case 2 system cls Output 输出信息的函数 main break case 3 system cls Inquiary 查询函数 main break case 4 system cls Readata 从文件了读出数据的函数 system pause main break 第 6 页 共 23 页 case 5 system cls printf n n n printf n printf n printf n printf n n n printf 感谢您的支持 谢谢使用 n n n printf n printf n printf n printf n exit 0 default 非法选择 system cls printf Invalid chice n printf 请重新选择操作 n break return 0 4 2 结构体的定义结构体的定义 结构体定义如下 结构体定义如下 typedef struct int itemnum 项目编号项目编号 char name 20 项目名称项目名称 int top 取名次的数目取名次的数目 int range 5 名次名次 int mark 5 分数分数 itemnode 定义项目结点的类型定义项目结点的类型 结构体数组类型存储结构体数组类型存储 typedef struct int schoolnum 学校编号学校编号 char name 20 学校名称学校名称 int score 学校总分学校总分 int mscore 男团总分男团总分 int wscore 女团总分女团总分 itemnode c 20 项目数组项目数组 headnode 定义头结点类型定义头结点类型 headnode h 20 定义一个头结点数组定义一个头结点数组 第 7 页 共 23 页 4 3 文件存储文件存储 文件的存储我用到了文件的存储我用到了 fprintf 函数和函数和 fscanf 函数进行数据的逐步读入读出函数进行数据的逐步读入读出 代码如下代码如下 Status Writedata 存到文件中 FILE report int i j if report fopen sportdata txt w null printf 不能打开文件 n exit 1 fprintf report d n n fprintf report d n m fprintf report d n w for i 0 i n i fprintf report d n h i schoolnum fprintf report s n h i name fprintf report d n h i score fprintf report d n h i mscore fprintf report d n h i wscore for j 0 j m w j fprintf report d n h i c j itemnum fprintf report s n h i c j name fprintf report d n h i c j top fprintf report d n h i c j range j fprintf report n n fclose report return OK 第 8 页 共 23 页 4 4 流程图流程图 Y Y Case3 N case2 N Y N 开开 始始 输入 学校数 男项目数 女项目数 学校和项目的信息及成绩信息 继续输入 成绩查询 查询各校成绩 输出各校成绩 继续 团体总分 继续 结束结束 第 9 页 共 23 页 5 调试与运行 调试与运行 5 1 运行主菜单运行主菜单 5 2 输入信息输入信息 选择选择 1 输入信息 显示如下 输入信息 显示如下 循环输入信息 循环输入信息 5 3 输出信息输出信息 选择主菜单选择主菜单 2 输出信息输出信息 选选 1 输出输出 第 10 页 共 23 页 选选 2 按学校总分输出为 按学校总分输出为 选选 4 按女团总分输出为 按女团总分输出为 5 4 查询信息查询信息 选择主菜单的选择主菜单的 3 查询信息查询信息 选 1 选选 2 5 5 调用信息调用信息 选主菜单选主菜单 4 调用信息 由于信息太多在这我只截取部分的图片 调用信息 由于信息太多在这我只截取部分的图片 第 11 页 共 23 页 选选 5 退出系统 退出系统 至此整个项目调试完毕 至此整个项目调试完毕 6 调试过程中出现的问题及解决方式 调试过程中出现的问题及解决方式 6 1 出现的问题出现的问题 在调试的过程中我遇到了一下的一些小麻烦在调试的过程中我遇到了一下的一些小麻烦 1 在输出信息时 排序怎样排未控制好 在输出信息时 排序怎样排未控制好 2 往文件里读入数据时用到了二进制模块读入函数往文件里读入数据时用到了二进制模块读入函数 fwrite 文件不能直观的在文件不能直观的在 txt 文档里观察到 文档里观察到 3 读出文件时用到了模块读出函数读出文件时用到了模块读出函数 fread 但在读出数据时出现了与要求输出 但在读出数据时出现了与要求输出 不对照的情况 不对照的情况 6 2 解决方式解决方式 对于出现的问题我做了如下处理 对于出现的问题我做了如下处理 1 remember n 冒泡排序 用辅助数组记下头结点下标 这样就较容易的实冒泡排序 用辅助数组记下头结点下标 这样就较容易的实 现了学校信息与项目信息的排序输出现了学校信息与项目信息的排序输出 2 对于读入文件时出现的错误我改用了对于读入文件时出现的错误我改用了 fprintf 函数对数据进行逐个输入 且函数对数据进行逐个输入 且 这样做使得能在这样做使得能在 txt 文件里观察到输入的信息是否错误 文件里观察到输入的信息是否错误 3 对于读出函数相应的用到了对于读出函数相应的用到了 fscanf 函数 逐个输出数据 函数 逐个输出数据 7 总结 总结 从这次实践中我们队数据结构的知识更近了一成 能更好的实现利用数据从这次实践中我们队数据结构的知识更近了一成 能更好的实现利用数据 结构来解决实际问题 更加巩固了我们的专业知识 结构来解决实际问题 更加巩固了我们的专业知识 第 12 页 共 23 页 8 附录 源代码 附录 源代码 include include define null 0 define OK 1 int n m w 学校数目 男子项目数目 女子项目数目 typedef int Status typedef struct int itemnum 项目编号 char name 20 项目名称 int top 取名次的数目 int range 5 名次 int mark 5 分数 itemnode 定义项目结点的类型 结构体数组类型存储 typedef struct int schoolnum 学校编号 char name 20 学校名称 int score 学校总分 int mscore 男团总分 int wscore 女团总分 itemnode c 20 项目数组 headnode 定义头结点类型 headnode h 20 定义一个头结点数组 Status Inputinformation 输入信息 建立系统 printf 请输入参加运动会的学校数目 n scanf d printf 请输入男子项目数 n scanf d printf 请输入女子项目数 n scanf d int i j s for i 0 i n i h i score 0 第 13 页 共 23 页 h i mscore 0 h i wscore 0 for i 0 i n i printf 输入学校编号 n scanf d getchar printf 输入学校名称 n gets h i name for j 0 j m w j printf 输入项目编号 n scanf d getchar printf 输入项目名称 n gets h i c j name printf 取前三名 or 前五名 n scanf d for s 0 s 5 s h i c j range s 0 h i c j mark s 0 初始化排名和分数 printf 所获名次 n scanf d 输入所获取名次信息 if h i c j top 3 switch h i c j range j case 0 h i c j mark j 0 break case 1 h i c j mark j 5 break case 2 h i c j mark j 3 break case 3 h i c j mark j 2 break else switch h i c j range j 第 14 页 共 23 页 case 0 h i c j mark j 0 break case 1 h i c j mark j 7 break case 2 h i c j mark j 5 break case 3 h i c j mark j 3 break case 4 h i c j mark j 2 break case 5 h i c j mark j 1 break h i score h i score h i c j mark j 按取前三还是前五分别积分 学校总分 if j m 1 h i mscore h i mscore h i c j mark j 是男子项目则记到男 子分数里去 else h i wscore h i wscore h i c j mark j 是女子项目则记到女子分 数里去 printf n return OK Status Output 输出函数 int choice i j k int remember n int sign do system cls 第 15 页 共 23 页 printf 1 按学校编号输出 n printf 2 按学校总分输出 n printf 3 按男团总分输出 n printf 4 按女团总分输出 n printf 请选择操作 n scanf d switch choice case 1 system cls for i 0 i n i printf 学校编号 d n h i schoolnum printf 学校名称 s n h i name printf 学校总分 d n h i score printf 男团总分 d n h i mscore printf 女团总分 d n h i wscore printf n n 按编号顺序输出 break case 2 system cls for i 0 i n i remember i i for i 0 i n i for j i 1 j n j if h remember i score h j score k remember i remember i remember j remember j k 冒泡排序 用辅助数组记下头结点下标 for i 0 i n i printf 学校编号 d n h remember i schoolnum printf 学校名称 s n h remember i name printf 学校总分 d n h remember i score printf 男团总分 d n h remember i mscore printf 女团总分 d n h remember i wscore printf n n 第 16 页 共 23 页 break case 3 system cls for i 0 i n i remember i i for i 0 i n i for j i 1 j n j if h remember i mscore h j mscore k remember i remember i remember j remember j k 冒泡排序 用辅助数组记下头结点下标 for i 0 i n i printf 学校编号 d n h remember i schoolnum printf 学校名称 s n h remember i name printf 学校总分 d n h remember i score printf 男团总分 d n h remember i mscore printf 女团总分 d n h remember i wscore printf n n break case 4 system cls for i 0 i n i remember i i for i 0 i n i for j i 1 j n j if h remember i wscore h j wscore k remember i remember i remember j remember j k 冒泡排序 用辅助数组记下头结点下标 for i 0 in printf ERROE 这个学校没有参加这次运动会 n continue else printf 输入要查项目数组下标 n scanf d if j m w j 0 printf 此次运动会没有这个项目 n else 第 18 页 共 23 页 printf 项目名称为 s n h i 1 c j 1 name printf 学校编号为 d n h i 1 schoolnum printf 学校名称为 s n h i 1 name printf 这个项目取前 d 名 该学校成绩如下 n h 0 c j 1 top for k 0 km w s 0 printf 此次运动会不包括此项目 n else printf 该项目取前 d 名 取得名次的学校 n h 0 c s 1 top for i 0 i n i printf 该项目为 s n h i c s 1 name for j 0 j n j if h i c s 1 range j 0 printf 学校编号 d n h i schoolnum printf 学校名称 s n h i name printf 学校名次 d n h i c s 1 range j 第 19 页 共 23 页 输出该项目取得名次的学校成绩 printf 选择 2 继续 0 跳出 n scanf d while i 2 break return OK Status Writedata 存到文件中 FILE report int i j if report fopen sportdata txt w null printf 不能打开文件 n exit 1 fprintf report d n n fprintf report d n m fprintf report d n w for i 0 i n i fprintf report d n h i schoolnum fprintf report s n h i name fprintf report d n h i score fprintf report d n h i mscore fprintf report d n h i wscore for j 0 j m w j fprintf report d n h i c j itemnum fprintf report s n h i c j name fprintf report d n h i c j top fprintf report d n h i c j range j fprintf report n n fclose report return OK 第 20 页 共 23 页 Status Readata FILE report int i j if report fopen sportdata txt r null printf file cannot be opened n exit 1 fscanf report d printf 参赛学校数目 d n n fscanf report d printf 男子项目数目 d n m fscanf report d printf 女子项目数目 d n n w for i 0 i n i printf 学校编号 fscanf report d printf d n h i schoolnum printf 学校名称 fscanf report s h i name printf s n h i name printf 学校总分 fscanf report d printf d n h i score printf 男团总分 fscanf report d printf d n h i mscore printf

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论