数据结构大作业--运动会分数统计.doc_第1页
数据结构大作业--运动会分数统计.doc_第2页
数据结构大作业--运动会分数统计.doc_第3页
数据结构大作业--运动会分数统计.doc_第4页
数据结构大作业--运动会分数统计.doc_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

数据结构课程设计大作业数据结构课程设计大作业 090821 班 题 目 运动会分数统计 专 业 计算机科学与技术 学生姓名 赵志强 学 号 39 指导教师 唐国民 完成日期 2010 12 2 湖州师院信息与工程学院湖州师院信息与工程学院 目 录 一 实验内容概述 3 二 实验目的概述 4 三 解题思路的描述 5 四 源程序清单 8 五 程序调试及测试结果 15 六 结论与体会 17 七 参考文献 18 计算机科学与技术专业数据结构大作业 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 可以输入各个项目的前三名或前五名的成绩 2 能统计各学校总分 3 可以按学校编号或名称 学校总分 男女团体总分排序输出 4 可以按学校编号查询学校某个项目的情况 可以按项目编号查询取得前 三或前五名的学校 5 数据存入文件并能随时查询 6 规定 输入数据形式和范围 可以输入学校的名称 运动项目的名称 输出形式 有中文提示 各学校分数为整形 界面要求 有合理的提示 每个功能可以设立菜单 根据提示 可以完成相关的功能要求 存储结构 学生自己根据系统功能要求自己设计 但是要求运动会的相关数据要存储在数据文件 中 数据文件的数据读写方法等相关内容在 c 语言程序设计的书上 请自学解决 请在最后的 上交资料中指明你用到的存储结构 测试数据 要求使用 1 全部合法数据 2 整体非法数据 3 局部非法数据 进行程序测试 以保证程序的稳定 测试数据及测试结果请在上交的资料中写明 关键字 运动会分数统计 线性表 链表 遍历 Abstract Description There are various schools participate in the games and stamp them from 1 n Competition is divided into N male project and N female project Project Numbers for man from 1 to M women s from m 1 to M w Different project take the top five or top three points The top five points respectively is 7 5 3 2 1 and the top three points respectively is 5 3 2 Which to take the top five or top three set by the students themselves m 20 n 20 Functional requirements 1 can enter each item the top three or top five result 2 can calculate each school s total score 3 men and women groups total score sorting results can output according to the school numbers or name school total score 4 can follow the school Numbers inquires the school for a specific project Can be obtained by project Numbers inquires top 计算机科学与技术专业数据结构大作业 2 three or top five schools 5 data files and can deposit enquiries 6 regulation input data form and scope can enter the school name the name of the sport Output format Chinese clew each school grades for plastic Interface requirements there is a reasonable hint each function may establish menu according to the prompt can complete the relevant function requirement Storage structure the students themselves according to your own design system function requirements but it will require games and related data to stored in data file data file of reading and writing data method and other related content in c language program design book please self study solve please last due in material storage structure of where you use Test data require all legal data 1 2 the overall illegal data 3 local illegal data Test procedures to ensure the stability of the program Test data and test results of material in submission please state Key words Sports scores statistics Linear list Linked list seek 计算机科学与技术专业数据结构大作业 3 一 一 实验内容概述实验内容概述 这次课程设计题目是运动会的分数统计系统 它要求参加运动会的 n 个学校编号为 1 n 比 赛分成 m 个男生项目和 w 个女生项目 项目编号为 1 m 和 m 1 m w 由于各项目参加人数差别比 较大 有些项目取前五名 得分的顺序为 7 5 3 2 1 还有些项目只能取前三名 得分顺序为 5 3 2 需要产生各学校的成绩单和团体总分报表 为了实现这个程序 调用了多个子函数 save 函数是实现对数据的存储 getchar 函数是从 stdin 流中读取字符 system 函数是向系统发出一个 DOS 命令程序中用到的 system pause 其功能是运行的时候就可以出现 请按任意键继续 由于在这个从程序中的下一条命令是返回 主菜单界面若不加一条命令的话 就会使显示是清屏 malloc 函数的功能是内存分配如 gl ALLitems malloc sizeof ALLitems g2 ALLNode malloc sizeof ALLNode 就是 g1 和 g2 指针非配内存地址空间大小 函数 fclose 的功能是关闭数据流 如程序中用到 的 flose fp2 就是将 fp2 文件的数据流关闭 用在本程序的 save 函数中 当执行 funct1 输入信 息保存后关闭当前信息流 程序中自定义的 funct1 8 的功能分别是 funct1 输入各个项目成绩并存储文件 funct2 统计各学校总分 funct3 按学校编号排序输出 funct4 按学校总分排序输出 funct5 按男团体总分排序输出 funct6 按女团体总分排序输出 funct7 按学校编号查询学校某个项目情况 funct8 按项目编号查询取得名次的学校 funct0 退出 最后是主函数 main 它是所有程序运行的入口 计算机科学与技术专业数据结构大作业 4 二 二 实验目的概述实验目的概述 数据结构 是计算机科学与技术专业一门十分重要的专业技术基础课 计算机科学各领域及 有关的应用软件都要使用到各种数据结构 在我国 数据结构与算法 已经作为理工科非计算机 专业必修的信息技术基础课程之一 世界上许多科技人员对学习 研究数据结构和算法都非常重 视 对于从是计算机科学及其应用的科技工作者来说 数据结构与算法更是必须透彻的掌握的重 要基础 学习数据结构与算法的最终目的是解决实际的应用问题 特别是非数值计算类型的应用问题 课程设计是加强学生实践能力的一个强有力的手段 作为一名计算机专业的学生 通过对计算机 课程两年的学习 掌握 C 和数据结构 在完成课程设计和变成过程中 要深化对数据结构与算 法课程中的基本概念 理论和方法的理解 训练综合运用所学知识处理实际问题的能力 强化面 向对象的程序设计理念 在老师的指导下完成最少换车次数问题 把自己所学的理论用具体的问 题来解决 更加直接 易懂 提高程序设计与调试水平 在通过学习数据结构 我们要掌握数据结构的各个算法 运用学过的算法去解决实际中的问题 将数据结构用用武之地 也能提高我们的运用能力和编写程序的能力 对我们的技能也有进一步 的提高 对我们的未来之路铺路搭桥 在这个实验中 我主要是类的成员函数去解决问题 除了学习到 C 语言的知识外 同样还学 习到 C 的知识 对我的知识也有很大扩展 将 C 和 C 相结合 达到共同解决问题的目的 在这个运用中 主要是学会类的定义以及使用 还有类的成员函数的定义和使用 通过用类的对 象去调用类的成员函数 最后达到目的 这能够体现出面向对象的编程方法 与以往的面向过程 的编程方法有很大的层次性的提高 达到提高思维能力 计算机科学与技术专业数据结构大作业 5 三 三 解题思路的描述解题思路的描述 1 本程序中学校的存储结构为链表 Prev school1 next头结点Prev school 最后 next 其中 school 类为 class school public athlete 学校 public int count 学校获奖数 int serial 学校编号 int menscore 男选手总分 int womenscore 女选手总分 int totalscore 总分 athlete ath MaxSize 获奖运动员信息数组 包括分数 名次 项目 school prev 前指针 school next 后指针 其中部分主要的函数 添加操作 add school i serial 要添加的编号 first ath first count item 要添加的项目号 first ath first count range i 名次 计算机科学与技术专业数据结构大作业 6 First 指向的学校的项目加一 更新总分 break first first next 3 查询操作 计算机科学与技术专业数据结构大作业 7 开始 输入项目编号 temp 是数字 N Y 0 temp 18 N Y 输出 项目 不存在 学校遍历 结束 temp 存在 Y N Next school N temp 是奇数 NY 取 5 名取 3 名 输入获奖的 学校编号 se 1 senext 输出向量中的内容 1 所有学校总分统计表 2 学校成绩查询 3 项目情况查询 4 返回主菜单 1 按学校编号统计 2 按学校名次统计 3 按男团总分统计 4 按女团总分统计 5 返回查询菜单 6 返回主菜单 按学校编号顺序输出所有参 赛学校运动会成绩 void serialSort vectori v size i cout v i 计算机科学与技术专业数据结构大作业 9 四 四 源程序清单源程序清单 include include include define LT a b a b define LIST INIT SIZE 100 线性表存储空间的初始分配量 define LISTINCREMENT 10 线性表存储空间的分配增量 typedef int InfoType 定义其它数据项的类型 typedef int KeyType 定义关键字类型为整型 struct RedType 记录类型 KeyType key 关键字项 InfoType otherinfo 其它数据项 具体类型在主程中定义 typedef struct int schnum 学校的编号 int mscore 20 学校在各个男生项目的积分 int wscore 20 学校在各个女生项目的积分 school 学校记录类型 typedef int ElemType struct SqList ElemType elem 存储空间基址 int length 当前长度 int listsize 当前分配的存储容量 以 sizeof ElemType 为单位 struct List RedType r 20 int length int InitList SqList if L elem exit 1 存储分配失败 L length 0 空表长度为 L listsize LIST INIT SIZE 初始存储容量 return 1 计算机科学与技术专业数据结构大作业 10 int ListInsert SqList if iL length 1 i值不合法 return 0 if L length L listsize 当前存储空间已满 增加分配 if newbase ElemType realloc L elem L listsize LISTINCREMENT sizeof ElemType exit 1 存储分配失败 L elem newbase 新基址 L listsize LISTINCREMENT 增加存储容量 q L elem i 1 q为插入位置 for p L elem L length 1 p q p 插入位置及之后的元素右移 p 1 p q e 插入e L length 表长增 return 1 void InsertSort List for i 2 i L length i if LT L r i key L r i 1 key 需将L r i 插入有序子表 L r 0 L r i 复制为哨兵 for j i 1 LT L r 0 key L r j key j L r j 1 L r j 记录后移 L r j 1 L r 0 插入到正确位置 void print List L int i for i 1 i L length i printf d d d n L length i 1 L r i otherinfo L r i key printf n void main 规定男生项目前三名分别积分 女生项目前五名分别积分 计算机科学与技术专业数据结构大作业 11 规定没有名次则积分为 不考虑并列的情况 请正确输入各学校对应项目的积分 int n m w i j school a 20 int summscore 20 sumwscore 20 sumscore 20 定义存储各个学校男团 女团 总分 RedType d 20 定义排序所需的数组为 RedType 型 SqList L Lm Lw 定义存放各个学校总分 男团 女团积分的顺序线性表 List Lr 定义积分排序所需的顺序线性表 InitList L 初始化各线性表 InitList Lm InitList Lw cout 请输入参加运动会的学校数目 20 n while n20 cout 输入学校数目有误 请重新输入 endl cout 请输入参加运动会的学校数目 20 n cout 请分别输入男生 女生的项目数目 20 m w cout 规定男生项目前三名分别积分 endl cout 女生项目前五名分别积分 endl cout 没有名次则积分为 且本程序不涉及并列排名的情况 endl cout 请正确输入各学校对应项目的积分 n endl for i 1 i n i a i 1 schnum i 赋给学校对应的编号 printf 请输入学校 d 男生各个项目的成绩 n i for j 1 j a i 1 mscore j 1 printf 请输入学校 d 女生各个项目的成绩 n i for j 1 j a i 1 wscore j 1 for i 0 i n i summscore i a i mscore 0 for j 1 j m j summscore i a i mscore j 求出学校男团总分并存储到数组中对应位置 ListInsert Lm i 1 summscore i 将学校男团总分插入存放在线性表对应位置 计算机科学与技术专业数据结构大作业 12 sumwscore i a i wscore 0 for j 1 j ch switch ch case 1 查看各学校总分统计 并按学校编号排序输出查看 for i 0 i n i printf 学校编号 d 学校总分 d n i 1 L elem i break case 2 按学校总分排序输出查看 Lr length n for i 0 i n i d i key L elem i d i otherinfo i 1 Lr r i 1 d i InsertSort Lr cout 按学校总分排序后以 名次 学校编号 学校总分 形式输出为 endl print Lr break case 3 按男团总分排序输出查看 Lr length n for i 0 i n i 计算机科学与技术专业数据结构大作业 13 d i key Lm elem i d i otherinfo i 1 Lr r i 1 d i InsertSort Lr cout 按男团总分排序后以 名次 学校编号 男团总分 形式输出为 endl print Lr break case 4 按女团总分排序输出查看 Lr length n for i 0 i n i d i key Lw elem i d i otherinfo i 1 Lr r i 1 d i InsertSort Lr cout 按女团总分排序后以 名次 学校编号 女团总分 形式输出为 endl print Lr break case 5 按学校编号查询学校某个项目的情况 int s t cout 请输入要查询的学校编号 s while sn 输入学校编号不在初始定义范围之内 cerr 输入学校编号有误 请重新正确输入 endl cout 请输入要查询的学校编号 s 重新输入 i 0 while a i schnum s i 通过循环找到输入编号的对应学校在数组a中的位置 cout 请输入要查询的项目序号 t while tm w 输入项目序号不在初始定义范围之内 cout 输入项目序号有误 请重新正确输入 endl cout 请输入要查询的项目序号 t 重新输入 计算机科学与技术专业数据结构大作业 14 if t m 该项目属于男生项目 printf 该学校该项目积分为 d n a i mscore t 1 从学校男生项目积 分数组里输出 else 该项目属于女生项目 printf 该学校该项目积分为 d n a i wscore t m 1 从学校女生项目 积分数组里输出 break case 6 按项目编号查询取得前三或前五名的学校 cout 请输入要查询的项目序号 t while tm w 输入项目序号不在初始定义范围之内 cout 输入项目序号有误 请重新正确输入 endl cout 请输入要查询的项目序号 t 重新输入 if t m 该项目属于男生项目 i 0 while a i mscore t 1 5 i 通过循环找到该项目第一名学校在a中的位置 printf 获得该项目第一名的是学校 d 号 n i 1 i 0 while a i mscore t 1 3 i 通过循环找到该项目第二名学校在a中的位置 printf 获得该项目第二名的是学校 d 号 n i 1 i 0 while a i mscore t 1 2 i 通过循环找到该项目第三名学校在a中的位置 printf 获得该项目第三名的是学校 d 号 n i 1 else 该项目属于女生项目 i 0 while a i wscore t m 1 7 i 通过循环找到该项目第一名学校在a中的位置 printf 获得该项目第一名的是学校 d 号 n i 1 i 0 while a i wscore t m 1 5 i 通过循环找到该项目第二名学校在a中的位置 printf 获得该项目第二名的是学校 d 号 n i 1 i 0 计算机科学与技术专业数据结构大作业 15 while a i wscore t m 1 3 i 通过循环找到该项目第三名学校在a中的位置 printf 获得该项目第三名的是学校 d 号 n i 1 i 0 while a i wscore t m 1 2 i 通过循环找到该项目第四名学校在a中的位置 printf 获得该项目第四名的是学校 d 号 n i 1 i 0 while a i wscore t m 1 1 i 通过循环找到该项目第五名学校在a中的位置 printf 获得该项目第五名的是学校 d 号 n i 1 break default flag 0 printf 程序结束 按任意键退出 n 退出程序 getchar 计算机科学与技术专业数据结构大作业 16 五 五 程序调试及测试结果程序调试及测试结果 1 输入学校数目及其名称 2 分别输入男 女项目数 在项目总排序中对应项的学校编号排名 及弹出菜单 3 菜单 选择 1 4 菜单 选择 2 计算机科学与技术专业数据结构大作业 17 5 菜单 选择 3 6 菜单 选择 4 7 菜单 选择 5 8 菜单 选择 6

温馨提示

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

评论

0/150

提交评论