运动会分数统计系统_第1页
运动会分数统计系统_第2页
运动会分数统计系统_第3页
运动会分数统计系统_第4页
运动会分数统计系统_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

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

文档简介

课程设计评审表课程设计评审表 学 号 姓 名学 院 专业班级 题 目运动会分数统计系统运动会分数统计系统 评 审 意 见 评审成绩 指导教师签名职称评审时间 年 月 日 课程设计作品验收表课程设计作品验收表 题目运动会分数统计系统 姓 名 班 级参与人员 学 号 设计任务与要求 1 可以输入各个学校各个项目的前三名或前五名的成绩 2 能统计各学校总分 3 可以按学校编号或名称 学校总分 男女团体总分排序输出 4 可以按学校编号查询学校某个项目的情况 可以按项目编号查询取得前三或前 五名的学校 5 数据存入文件并能随时查询 作品完成情况 能按要求实现信息的输入 统计 按多种方式输出 查询等基本功能 能将输入 的信息存入文档 可供随时调用 能够正确应对部分不合理的输入 验收情况 验收教师签名 年 月 日 注 1 除 验收情况 栏外 其余各栏均由学生在作品验收前填写 2 验收情况 栏由验收小组按实际验收的情况如实填写 目 录 1 问题描述与分析 1 1 1 课程设计的目的 1 1 2 系统需求分析 1 2 概要设计 2 2 1 系统功能设计 2 2 2 函数构造 2 3 详细设计 3 3 1 数据类型 及重要变量的定义 3 3 2 函数的设计和实现 4 4 测试 7 5 课程设计总结 11 5 1 调试中遇到的较重要问题的回顾 11 5 2 算法的效率及改进思想 12 5 3 心得体会 12 参考文献 13 附录 13 1 运动会分数统计系统运动会分数统计系统 1 问题描述与分析问题描述与分析 1 1 课程设计目的课程设计目的 为了 巩固 我们 数据结构知识 加强我们 的实际动手能力和提高我们 综 合素质 提高我们对计算机软件工程的认识学院组织我们进行了数据结构课程设 计 此次课程设计要达到以下几点目的 1 了解并掌握数据结构与算法的设计方法 具备初步的独立分析和设计能力 2 提高程序设计和调试能力 学生通过上机实习 验证自己设计的算法的正确 性 学会有效利用基本调试方法 迅速找出程序代码中的错误并且修改 3 培养算法分析能力 分析所设计算法的时间复杂度和空间复杂度 进一步提 高程序设计水平 4 初步掌握软件开发过程的问题分析 系统设计 程序编码 测试等基本方法 和技能 1 2 系统需求分析系统需求分析 问题描述 参加运动会有 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 可以按学校编号查询学校某个项目的情况 可以按项目编号查询取得前三或前 五名的学校 2 5 数据存入文件并能随时查询 6 规定 输入数据形式和范围 可以输入学校的名称 运动项目的名称 输出形式 有中文提示 各学校分数为整形 界面要求 有合理的提示 每个功能可以设立菜单 根据提示 可以完成相关的 功能要求 2 概要设计概要设计 2 1 系统功能设计系统功能设计 根据运动会分数统计系统问题的分析和设计要求 可以将该系统可以分为三个模 块 信息统计模块 信息输出模块 信息查询模块 其系统功能结构图如图 1 所示 1 信息统计模实现信息的输入 统计 存档 2 信息输出模块 实现信息的输出 3 信息查询实现信息的查询 运动会分数统计系统 信息统计模块信息输出模块信息查询模块 分数统计 信息输入 信息存档 图 1 系统功能结构图 2 2 函数构造函数构造 根据系统功能结构图的描述 可以构造出该系统的几个基本的 函数 其方法名和功能如表1 所示 3 表 1 函数功能表 函数功能 void inputinformation 输入和统计信息函数 void output 输出信息函数 void inquiry 查询信息函数 void writedata 数据存储函数 void readdata 读入数据函数 3 详细设计详细设计 3 1 数据类型及重要变量的定义数据类型及重要变量的定义 1 定义运动项目数据类型 用于存放运动项目 包括项目编号 项目所取名次 数 名次 分数 定义项目结点的类型 typedef struct int itemnum 项目编号 int top 项目取名次的数目 由用户定义 3 或 5 int range 5 名次 int mark 5 分数 itemnode 2 定义学校数据类型 用来存储参赛学校信息 包括学校编号 学校总分 男 团总分 女团总分 项目数组 定义学校结点类型 typedef struct int schoolnum 学校编号 int score 学校总分 int mscore 男团体总分 int wscore 女团体总分 itemnode c m w 项目数组 schoolnode 4 3 定义学校数组 schoolnode h n 采用数组结构有利于随机的存储和查询 定义全局标志变量 int flag1 flag2 分别用以标志是否已经向系统输入了信息和标 志系统中是否已经存在信息 定义文件指针 FILE report 用来指向存档的文件 3 2 函数的设计和实现函数的设计和实现 在概要设计中已经对该系统涉及的抽象数据类型和函数及其功能做了说明 这里 就不在对每个函数进行一一说明 只对其中比较重要的功能模块进行描述 1 信息输入及分数统计功能 void inputinformation 为输入信息及分数统计函数 在输入信息的同时进行分数的 统计 可以输入各个学校各项目前三名或前五名的成绩 在输入学校的参赛项目时 结果取前三名还是前五名自己定 用一个选择语句实现 利用 swith 语句前三名的分数 赋为 5 3 2 前五名的成绩赋为 7 5 3 2 1 未取得成绩则赋为 0 并统计团体 总分 男团总分和女团总分 其主要功能代码如下 for s 0 s k s printf 名次 scanf d 输入所获名次信息 if h i c j top 3 switch h i c j range s case 0 h i c j mark s 0 break case 1 h i c j mark s 5 break case 2 h i c j mark s 3 break case 3 h i c j mark s 2 break else switch h i c j range s case 0 h i c j mark s 0 break case 1 h i c j mark s 7 break case 2 h i c j mark s 5 break 5 case 3 h i c j mark s 3 break case 4 h i c j mark s 2 break case 5 h i c j mark s 1 break h i score h i score h i c j mark s 2 信息输出功能 void output 为输出函数 列出一个输出目录利用 swich 语句使函数按学校编号输 出或按学校总分 男团总分 女团总分由高到低排序输出 利用辅助数组 remember 和冒泡排序的方法使之按分数的由高到低输出 利用循环语句 do while 当输入 2 时返 回输出目录 输入 0 是跳出循环返回主菜单 其流程图如图 2 所示 开始 显示选择菜 单 输入选项 按学校总分输出按女团总分输出 按学校编号输出按男团总分输出 Case 1 Case 2Case 3Case 4 跳出 结束 是否跳出 是 否 图 2 输出信息模块流程图 3 信息查询功能 void inquiry 为查询函数 列车一个查询目录利用 swich 语句使函数按学校编号 或项目编号查询 输出某学校的某个项目的得分情况或某个项目的前几名的学校 再 6 利用循环语句 do while 当输入 2 是返回查询目录 输入 0 时跳出循环返回主菜单 其 程序流程图如图 3 所示 开始 显示选择菜 单 输入选项 按学校编号查询按项目编号查询 Case 1Case 2 跳出 结束 是否跳出 是 否 图 3 查询信息模块程序流程图 5 主函数 void main 是主函数 列出主菜单 利用 switch 语句调用以上函数实现各个菜单 的功能 想在每次查询结束想返回主菜单进行其它项时 应在 main 函数中调用其它函数 时再调用 main 函数 如 switch choice case 1 7 printf 输入信息 n inputinformation writedata printf 信息已存入档案 main case 2 printf 输出信息 n if flag1 readdata output main 在进入主菜单后为了确保系统中已经输入了信息 用标志标量 flag1 和 flag2 来控 制循环 如果系统中没有任何信息 用户就不能选择输入或查询操作 此时会输出提 示信息 并返回主菜单 直到用户输入了信息或退出系统 其实现代码如下 do printf 欢迎使用 n printf n n 运动会分数统计系统 n printf n n 1 输入信息 n printf 2 输出信息 n printf 3 查询信息 n printf 4 退出系统 n n n printf n n printf 请选择要实现步骤的编号 请确保已经输入信息 n n scanf d if choice 4 break else if choice 1 flag1 0 else if report fopen sportsdata txt r null flag2 0 else system cls printf n n n n 系统中无任何信息 n n 请先输入信息 n n n n while flag1 4 测试测试 运行程序 进入系统主菜单 用户可以选择输入 输出 查询信息或退出系统 界面如图 4 所示 8 图 4 系统主界面 1 输入信息 输入 1 得到进入输入信息模块 根据系统提示将以下信息输入系统中 学校编号 1 项目编号 1 取前 5 名 获得 1 个名次 是第 5 名 项目编号 2 取 前 3 名 获得 3 个名次 分别是 1 2 3 名 学校编号 2 项目编号 1 取前 5 名 获得 4 个名次 分别是 1 2 3 4 名 项 目编号 2 取前 5 名 获得 0 个名次 输入信息后 会自动存档 并提示存档成功 然后自动返还主菜单 如图 5 所示 图 5 信息成功输入系统并存入了文档 2 输出信息 输入 2 进入输出信息模块 该模块分四项 分别代表一种输出方式 如图 6 所示 9 图 6 输入信息模块界面 用户可以按照自己的喜好 选择一种方式输入信息 输入 2 返回输出信息模块 输入 0 返回主菜单 如图 7 9 分别是按照学校编号 学校总分 女团总分输出的情况 图 7 按学校总分输出 图 8 按学校总分输出 10 图 9 按女团总分输出 3 查询信息 输入 3 进入信息查询模块 该模块分为两项 如图 10 所示 图 10 信息查询模块 用户可以选择不同菜单进行查询 如图 11 和图 12 分别是按照学校编号和项目编 号查询的情况 图 11 按学校编号查询 11 图 12 按项目编号查询 4 退出系统 在主菜单下输入 4 可以退出系统 并有中文提示 如图所示 图 13 退出系统 5 课程设计总结课程设计总结 5 1 调试中遇到的较重要问题回顾调试中遇到的较重要问题回顾 1 提出问题 所有输入输出内容只能在一屏内显示 学过 c 语言 很知道 n 是换行 f 是换屏的 可是在这里就是无法实现 解决问题 输入 clrscr 2 提出问题 设置选项 供用户输入选择时 当按任意键时都会跳入下一步操 作 或者直接退出系统 分析问题 在供用户选择时 提供了几个选项 就写几个 case 语句 但是当用户 输入的并不是这几个数字时 系统就不能做出正确判断 解决问题 修改 case 语句 添加 default 语句提示出错 要求重新输入 源代码如 下 Default 12 clrscr 清屏 printf 输入错误 请重新选择 3 提出问题 用户在系统主菜单上进行选择时 若没有输入任何初始信息 而 选择输出或查询操作 系统也会做出相应操作 解决问题 增加标识变量作为循环终止变量 用来判断系统中是否已经输入了信 息 若没有就提示用户先输入信息 5 2 算法的效率及改进设想算法的效率及改进设想 算法的效率 总的来讲 严重引响执行速度的便是查找 查找任意一个数据 便 要将其所在的结构从头至尾遍历一次 耗费大量的时间 改进设想 因大部分显示均是以学校为单位 所以将以由有关人的各种信息为集 合的结构改为以由有关学校的各种信息为集合的结构 5 3 心得体会心得体会 在这次上机过程中遇到过一些问题 但经过不懈努力 解决了部分 还有的现在 不能解决 留待日后思考和解决 比如说在运用数据结构排序的时候 方法的选择上 总是想用时间复杂度小的算 法 但结果出了问题 最后还是用了我们熟悉的选择法排序 在编写之前 做整体规划和详细设计很重要 只有思路清晰 设计合理可行 编 码才有可能有的放矢 才能更加有效的完成任务 本次集中上机实验 对我来说可以算是一次挑战 因为在理论学习中没有好好的 掌握 现在要独立完成一个较复杂的程序编写 确实有一点困难 但我对于难度一向 是以积极迎战的态度来面对 认真积极努力完成这次集中上机的任务 对我来说这是 一次很好的机会 同时我也很好的把握了这次机会 认真的完成了此次上机学习的任 务 对自己今后在程序编写方面以及文档撰写方面相信会有很大的帮助 在此也对学 校安排这样一次学习表示感谢 最后希望自己在数据结构以及计算机的其他学习方面 能够得到很好的提高 13 参考文献参考文献 1 李云清 杨庆红 揭安全 数据结构 C 语言版 M 人民邮电大学出版社 2004 6 2 潘彦 算法设计与分析基础 M 北京 清华大学出版社 2007 1 3 肖梦强 曲秀清 软件工程 原理 方法与应用 M 中国水利水电出版社 2005 10 4 吕凤翥 C 语言程序设计 第 2 版 电子工业出版社 2007 2 5 严蔚敏 吴伟民 数据结构 C 语言版 M 清华大学出版社 2002 9 附录附录 源代码 include include include include define n 2 学校数目 define m 1 男子项目数目 define w 1 女子项目数目 define null 0 int flag1 1 int flag2 1 全局变量 用来标识是否已经向系统输入信息 FILE report 定义项目结点的类型 typedef struct int itemnum 项目编号 int top 项目取名次的数目 由用户定义 3 或 5 int range 5 名次 int mark 5 分数 itemnode 定义学校结点类型 typedef struct int schoolnum 学校编号 int score 学校总分 int mscore 男团体总分 int wscore 女团体总分 14 itemnode c m w 项目数组 schoolnode schoolnode h n 定义一个学校结点数组 信息输入模块 用来输入信息 建立系统 void inputinformation int i j k s for i 0 i n i h i score 0 h i mscore 0 h i wscore 0 初始化各结点 for i 0 in h i schoolnum 0 输入学校结点信息 for j 0 jm w h i c j itemnum 0 do printf 取前 3 名 or 前 5 名 scanf d while h i c j top 3 printf 获得几个名次 scanf d 输入项目信息 for s 0 s 5 s h i c j range s 0 h i c j mark s 0 初始化排名和分数 for s 0 s k s printf 名次 15 scanf d 输入所获名次信息 if h i c j top 3 switch h i c j range s case 0 h i c j mark s 0 break case 1 h i c j mark s 5 break case 2 h i c j mark s 3 break case 3 h i c j mark s 2 break else switch h i c j range s case 0 h i c j mark s 0 break case 1 h i c j mark s 7 break case 2 h i c j mark s 5 break case 3 h i c j mark s 3 break case 4 h i c j mark s 2 break case 5 h i c j mark s 1 break h i score h i score h i c j mark s 按取前三名还是取前五名分别记分 if j m 1 h i mscore h i mscore h i c j mark s 是男子项目则记到男子分数里面去 else h i wscore h i wscore h i c j mark s 是女子项目则记到女子项目里面去 printf n 信息输出模块 用来输出信息 可以选择按不同的方式输出信息 void output int choice i j k int remember n int sign do printf 1 按学校编号输出 n 16 printf 2 按学校总分输出 n printf 3 按男团总分输出 n printf 4 按女团总分输出 n printf n n 请选择编号 n n scanf d switch choice case 1 按编号顺序输出 for i 0 i n i printf n n 学校编号 d n h i schoolnum printf 学校总分 d n h i score printf 男团总分 d n h i mscore printf 女团总分 d n n n h i wscore break case 2 按学校总分输出 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 n n 学校编号 d n h remember i schoolnum printf 学校总分 d n h remember i score printf 男团总分 d n h remember i mscore printf 女团总分 d n n n h remember i wscore 按所记下标顺序输出 break case 3 按男团总分输出 for i 0 i n i 17 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 n n 学校编号 d n h remember i schoolnum printf 学校总分 d n h remember i score printf 男团总分 d n h remember i mscore printf 女团总分 d n n n h remember i wscore break case 4 按女团总分输出 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 in printf 错误 这个学校没有参加此次运动会 n n n else printf 要查询的项目编号 scanf d if j m w j 0 printf 此次运动会没有这个项目 n n n 学校编号超出范围 则输出警告 else printf 这个项目取前 d 名 该学校的成绩如下 n h 0 c j 1 top for k 0 km w s 0 printf 此次运动会不包括这个项目 n n n 项目编号超出范围则输出警告 else printf 该项目取前 d 名 取得名次的学校 n h 0 c s 1 top for i 0 i n i for j 0 j 5 j if h i c s 1 range j 0 printf 学校编号 d 名次 d n h i schoolnum h i c s 1 range j 输出该项目取得名次学校的成绩 printf n n n 继续 2 跳出 0 n scanf d printf n n n while i 2 break void writedata 把数据存储在文件中 FILE report int i if report fopen sportsdata txt w null printf 文件不存在 不能打开文件 n exit 1 for i 0 i n i fwrite fclose report 按头结点块写入 void readdata 读出文件中数据的函数 20 FILE report int i j s if report fopen sportsdata txt r null printf 文件不存在 不能打开文件 n exit 1 for i 0 i n i printf 学校编号 fread printf 学校总分 fread printf d n k printf 男团总分 fread printf d n k printf 女团总分 fread for j 0 j m w j fread fread for s 0 s 5 s fread for s 0 s 5 s fread fclose report 关闭文件 按照读一个数据就输出一个数据的方式显示数据内容 主函数 21 void main int choice do printf 欢迎使用 n printf n n 运动会分数统计系统 n printf n n 1 输入信息 n printf 2 输出信息 n printf 3 查询信息 n printf 4 退出系统 n n n printf n n printf 请选择要实现步骤的编号 请确保已经输入信息 n n scanf d if choice 1 flag1 0 else if report fopen sportsdata txt r null flag2 0 else system cls printf n n n n 系统中无任何信息 n n 请先输入信息 n n n n while flag1 switch choice case 1 printf 输入信息 n inputinformation writedata printf 信息已存入档案 main case 2 printf 输出信息 n if flag1 readdata output main case 3 printf 查询信息 n if flag1 readdata inquiry main case 4 printf 退出系统 谢谢使用 n n n exit 0 default printf 输入错误 n exit 0 include include 22 define M 15 define N 15 struct mark 定义迷宫内点的坐标类型 int x int y struct Element 恋 栈元素 嘿嘿 int x y x 行 y 列 int d d 下一步的方向 typedef struct LStack 链栈 Element elem struct LStack next PLStack 栈函数 int InitStack PLStack return 1 int StackEmpty PLStack S 判断栈是否为空 if S NULL return 1 else return 0 int Push PLStack p PLStack malloc sizeof LStack 23 p elem e p next S S p return 1 int Pop PLStack if StackEmpty S e S elem p S S S next free p return 1 else return

温馨提示

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

评论

0/150

提交评论