数据结构课程设计——运动会分数统计
运动会分数统计
| 数据结构课程设计任务书 |
| 学生姓名:xxx 专业班级:软件工程 指导教师: 工作单位: |
| 题 目: 运动会分数统计 基础要求: 要求具有C语言的理论基础,能够完成课程设计的独立设计和编码 实践可以写具有良好的(C语言等)方面的的代码书写能力,数据结构的专业知识,能够完成编码以及测试工作 主要任务: (包括课程设计工作量及其技术要求,以及说明书撰写等具体要求) (1)任务内容 运动会分数统计 (2)完成要求 对系统进行功能模块分析、控制模块分析;系统设计要能完成题目所要求的功能;编程简练,可用,尽可能的使系统的功能更加完善和全面;说明书、流程图要清楚;提高学生的论文写作能力;特别要求自己独立完成;在基本要求达到后,可进行创新设计,如改善算法性能、友好的人机界面。 (3)撰写课程设计报告 报告格式按附件要求打印与写课程设计报告;论文包括目录、正文、小结、参考文献、附录等;课程设计论文装订按学校的统一要求完成。 |
| 时间安排: 内容 天数 地点 构思及收集资料 1 机房 编码与调试 3 机房 撰写论文 1 图书馆、机房 |
| 指导教师签名: 2023年 3月 23 日 |
完整资源一键获取私信我

- 问题分析和任务定义
【问题描述】
参加运动会的n个学校编号为1~k。比赛分成n个男子项目和m个女子项目,项目编号分别为1~n和n+1~n+m。由于各项目参加人数差别较大,有些项目取前五名,得分顺序为7,5,3,2,1;有些项目只取前三名,得分顺序为5,3,2。写一个统计程序产生各种成绩单和得分报表。
【基本要求】
-
- 可以输入各个项目的前三名或前五名的成绩;
- 能统计各学校总分,
- 可以按学校编号或名称、学校总分、男女团体总分排序输出;
- 可以按学校编号查询学校某个项目的情况;可以按项目编号查询取得前三或前五名的学校。
- 数据存入文件并能随时查询
- 输入数据形式和范围:可以输入学校的名称,运动项目的名称
输出形式:有中文提示,各学校分数为整型。
界面要求:有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。
存储结构:学生根据系统功能要求自己设计,但要求运动会的相关数据要存储在数据文件中。
- 数据结构的选择和概要设计
本课设要求输入信息, 统计分数,执行排序与查找功能, 在要求中没有在建立数据之后进行插入和删除操作,而在排序和查找过程中有许多的随机读取数据操作,因此使用顺序结构而不用链表。由于各个要求属性具有一定的联系,在定义数据时使用结构体和结构体数组来存储信息数据。
- 详细设计和编码
int main()
{
MESSAGE SG = {0}, *message = &SG;
int i, j, k, select, choice, now, next;
if (read(message,fp))
{
printf("请按任意键进行下一步\n");
getch();
}
do
{
system("cls");
select = xianshi();
if (select == 1)
record(message->xuexiao, message->xiangmu, message->b, message);
else if (message->b[0])
{
if (select >= 2 && select <= 4)
{
fp = fopen(wenjian, "a+");
paixu(message, select - 2,fp);
fclose(fp);
}
else if (select == 5)
{
fp = fopen(wenjian, "a+");
for (k = 0; k < message->b[0]; k++) //输出学校名称选项 每五个一行
printf("%d:%-13s%c", k + 1, message->xuexiao[k], (k + 1) % H ? ' ' : '\n');
printf("\n输入学校前的编号[1,%d]:", message->b[0]);
choice = gainint(&choice, 1, message->b[0]) - 1;
next = 0;
while (next < message->b[1])
{
now = next;
if ((next + H) < (message->b[1]))
next = next + H;
else
next = message->b[1];
for (i = now; i < next; i++)
{
fprintf(fp,"(%s-%d)%-8s ", sex[message->sex[i]], message->junction[i], message->xiangmu[i]);
printf("(%s-%d)%-8s ", sex[message->sex[i]], message->junction[i], message->xiangmu[i]);
} //输出项目信息
fprintf(fp,"\n");
printf("\n");
for (j = 0; j < 3; j++)
{
fprintf(fp,"%-s: ", fenlei[j]);
printf("%-s: ", fenlei[j]);
for (k = now; k < next; k++)
{
if (j == message->sex[k] || j == 2)
{
fprintf(fp,"%02d分 \t", (message->spot + choice)->gram[j][k]);
printf("%02d分 \t", (message->spot + choice)->gram[j][k]);
}
else
{
fprintf(fp,"****** \t");
printf("****** \t");
}
}
fprintf(fp,"\n");
printf("\n");
}
fprintf(fp,"\n");
printf("\n");
}
fclose(fp);
}
else if (select == 6)
{
fp = fopen(wenjian, "a+");
for (i = 0; i < message->b[1]; i++)
{
printf("\t\t第%d个比赛项目: %-13s<%s子> 只录入前%d名\n", i + 1, message->xiangmu[i], sex[message->sex[i]], message->junction[i]);
fprintf(fp,"\t\t第%d个比赛项目: %-13s<%s子> 只录入前%d名\n", i + 1, message->xiangmu[i], sex[message->sex[i]], message->junction[i]);
for (j = 0; j < message->junction[i]; j++)
{
fprintf(fp,"\t第%d名:%-13s%02d分", j + 1, message->xuexiao[message->count[i][j]], junction[(message->junction[i]) / 4][j]);
printf("\t第%d名:%-13s%02d分", j + 1, message->xuexiao[message->count[i][j]], junction[(message->junction[i]) / 4][j]);
}
printf("\n\n");
fprintf(fp,"\n\n");
}
fclose(fp);
}
else if (select == 9)
{
printf("确认清空请按1 否则请按0:");
if (gainint(&choice, 0, 1))
for (k = 0; k < NUMP; k++) //对申请出来的结构体中的所有项目初始化
for (i = 0; i < 3; i++)
{
(message->spot + k)->sum[i] = 0; // sum[]初始化
for (j = 0; j < NUMP; j++)
(message->spot +
{
int B, C;
do
{
A[max] = B = C = 0;
while ((A[B++] = getchar()) != '\n' && B < max)
;
if (A[B - 1] != '\n')
while (getchar() != '\n' && ++C)
;//如果输入的最后一个字符不是回车,那么将剩余长度计到C
else
A[--B] = 0;//否则把录进数组的回车删掉,即为成功输入字符。
if (C || B && B < min)
printf("录入的字符串长度为%d字节\n只录入(%d--%d)个字符!\n", B + C, min, max);
} while (C || B < min);
return B;//返回录入成功字符数量
}
int jianyan(char b[], int T) //检验b[]是否符合实际
{
int d = 0, i, LEN = -1, F;
while (b[++LEN])
;
for (i = 0; i < LEN; i++)
if (b[i] > 0) //汉字ascll编码每一个字节为负数
return printf("输入中含有非中文字符!");
for (i = 0; key[i][0]; i++)
{
F = bijiao(b, key[i]); //匹配中文标点符号
if (F && F % 2)
return printf("输入中含有非汉字中文字符!");
}
if (T == 1) //检验学校的名称
{
for (i = 0; school[i][0]; i++)
{
F = bijiao(b, school[i]);
if (F && F % 2)
d++;
}
if (!d)
return printf("查无此校~学校名称输入可能存在错误!");
}
if (T == 2) //检验比赛的名称
{
for (i = 0; program[i][0]; i++)
{
F = bijiao(b, program[i]);
if (F && F % 2)
d++;
}
if (!d)
return printf("没有发现相关比赛~项目名称输入可能存在错误!");
}
return 0;
}
for (i = 0; program[i][0]; i++)
{
F = bijiao(b, program[i]);
if (F )
d++;
}
k)->gram[i][j] = 0; //项目初始化
message->b[i] = 0;
}
/*if (write(message,fp))
return 0;*/
read(message,fp);
}
else if(select==7)
{
system(wenjian);
}
}
printf("\n请按任意键继续…\n");
getch();
} while (select != 8);
}
上机调试过程
1.按男子总分排名

2.按学校总分排名

3.按比赛项目排名
- 测试结果及其分析
测试取学校数为5,男子项目数2,女子项目数0
| 编号 | 学校名称 | 名次 |
| 1 | 经济学院 | 1 |
| 3 | 理工学院 | 2 |
| 2 | 医药学院 | 3 |
- 用户使用说明
system("mode con cols=130 lines=30"); //控制台 宽度130 高度30
printf("\t\t\t\t运动会分数统计\n");
printf("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");
printf("\t* 功 能 表 积 分 规 则\n");
printf("\t* 1.添加学校及项目 *取前三名(1,2,3)\n");
printf("\t* 2.按男子团体总分排序输出 *积分分别为--5,3,2\n");
printf("\t* 3.按女子团体总分排序输出 \n");
printf("\t* 4.按学校总分排序输出 *取前五名(1,2,3,4,5)\n");
printf("\t* 5.按编号或名称查询学校情况 *积分分别为--7,5,3,2,1\n");
printf("\t* 6.显示比赛项目各学校名次情况 \n");
printf("\t* 7.读取文件 \n");
printf("\t* 8.保存信息并退出 \n");
printf("\t* 9.清空并恢复初始化界面 \n");
printf("\n");
printf("\t*注意:一个汉字占两个字符!!!\n");
printf("\t*注意:功能1可分多次选择!!!\n");
printf("\t*注意:录入项目时默认先男后女!!!\n");
printf("\t*注意:初次使用请先使用功能1录入数据!!!\n");
printf("* * * * * * * * * * * * * * * * * * * * * * * * * *\n\t");
printf("请输入您的选择(1-9):");
七丶参考文献
[1]严蔚敏.数据结构C语言版[M].清华大学出版社,2007.
[2]逯鹏,张赞.数据结构课程教学方法的研究和实践[J].教育教学论坛,2015(18):121-123.
[3]贾丹,周军.基于创新应用型人才培养模式的数据结构课程教学改革[J].辽宁工业大学学报:社会科学版,2015(2):132-134.
[4]郭艳燕,童向荣,孙雪姣,等.程序设计基础与数据结构两门课程的'教学衔接[J].计算机教育,2014(10):47-50.
[5]高贤强,化希耀,陈立平.引入计算思维的《数据结构》教学改革研究[J].现代计算机:专业版,2015(7):16-19.
[6]严太山,郭观七,李文彬.课堂设问的技巧及其在《数据结构》课程教学中的应用[J].湖南理工学院学报:自然科学版,2015(1):81-83.
[7]南淑萍.电子商务专业数据结构教学方法探讨[J].湖北科技学院学报,2014(10):13-14.
[8]谌林,郑泓楠.分布式数据库查询处理和优化算法[J].中外企业家,2020(15):145.
[9]方木云,赵长鲜,张祝梦.两种非匀质Excel表转换成关系数据库表的方法[J].软件工程,2020,23(05):31 -34.
[10]熊光华.计算机数据库系统在企业管理中的应用[J].计算机产品与流通,2020(05):14.
相关文章:
数据结构课程设计——运动会分数统计
运动会分数统计 数据结构课程设计任务书 学生姓名:xxx 专业班级:软件工程 指导教师: 工作单位: 题 目: 运动会分数统计 基础要求: 要求具有C语言的理论基础…...
C语言递归算法实现经典例题
一.递归 1.什么是递归 递归是一种编程技术,它通过在函数内部反复调用自身来解决问题。当一个程序调用自己时,这就称为递归调用。递归可以有助于简化某些算法的实现和理解。在递归过程中,每个调用都会将一些数据保存在栈上,直到递…...
ST典型碳化硅MOSFET驱动应用方案
ST典型碳化硅MOSFET驱动应用方案 1.栅极驱动器规格和功能实现 参考资料:ST官网应用手册《AN4671》 作者:Xiou 1.栅极驱动器规格和功能实现 以下是对栅极驱动要求的简短列表: dv / dt 的瞬变抗扰度:在整个温度范围内 50 V/ns。 …...
对比AMD和英特尔显卡的区别
✨求关注~ 😀博客:www.protaos.com AMD和英特尔都是著名的半导体公司,它们都生产处理器和显卡。在显卡领域,AMD生产Radeon系列显卡,而英特尔则生产Intel HD Graphics和Intel Iris Graphics系列显卡。 使用群体对比&…...
Linux系统c语言socket实现UDP通信
UDP全称 User Datagram Protocol,即:用户数据报协议。是面向无连接的协议。通常,UDP 通信还会被冠以不可靠的头衔。这里的不可靠指的是:无法可靠地得知对方是否收到数据。 UDP有如下特征: 无连接:通信双方不需要事先连接无确认:收到数据不给对方发回执确认不保证有序、丢…...
常用五大类RFID系统,实践领域广泛,加强现代化管理
随着信息技术的不断进步,RFID技术已逐渐成为企业管理及社会服务领域中不可或缺的一种重要技术手段。根据其不同的应用场景,RFID技术广泛应用于药品监管、固定资产管理、仓储管理、智慧工厂和消费服务等领域。本文将从五个方面介绍常用的RFID系统。 一、…...
卡方检验.医学统计实例详解
卡方检验是一种常用的假设检验方法,通常用于分析两个或多个分类变量之间的关系。在医学研究中,卡方检验被广泛应用于分析两种或多种治疗方法的疗效,或者分析某种疾病的发病率与某些危险因素之间的关系。下面我们来看一个卡方检验在医学实例中…...
H264和AAC打包PS包代码
段老师的干货时间又到咯,下面代码实现的是将 AAC 和 H264 数据打包成 PS 包的流程,其中包括了 PES 头、PSI 表头、MPEG-TS 头、AAC/H264 数据打包等多个步骤。此外,还包含 CRC32 校验等校验码的计算。需要注意的是,此代码示例仅供…...
Redis数据类型-ZSet
一. 概述 SortedSet又叫zset,它是Redis提供的特殊数据类型,是一种特殊的set类型,继承了set不可重复的特点,并在set基础上为每个值添加一个分数,用来实现值的有序排列。 二. 常用指令 明白它的特点后,接下来…...
国外各大学和学院对于ChatGPT使用立场总结
ChatGPT和生成式AI的快速普及对教育这个专业领域带来了威胁——全国各地的大学和学院都召开了紧急会议,讨论如何应对学生利用AI作弊的风险。 一部分学校和教授担心这项技术会成为学生在论文或其他写作作业和考试中寻求捷径的工具。而这种生成内容的方式往往能够绕开…...
我在VScode学Java(Java二维数组)
我的个人博客主页:如果\真能转义1️⃣说1️⃣的博客主页 关于Java基本语法学习---->可以参考我的这篇博客:(我在Vscode学Java) 接上回Java一维数组的介绍(我在VScode学Java(Java一维数组) ) 二维数组是Java中的一…...
HTML-iconfont动态图标SVG效果--阿里巴巴图标矢量库
给北大打工,实现官网首页动态图标效果_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1Ys4y1c7oh/?spm_id_from333.1007.top_right_bar_window_default_collection.content.click&vd_source924f5dad6f2dcb0a3e5dca4604287ecd(本篇笔记操作方法…...
C++17完整导引-模板特性之编译器的if语句
编译期if语句 if constexpr 编译期if语句使用编译期if语句编译期if的注意事项编译期if影响返回值类型即使在 *then* 部分返回也要考虑 *else* 部分编译期短路求值 其他编译期if的示例完美返回泛型值使用编译期if进行类型分发 带初始化的编译期if语句在模板之外使用编译期if参考…...
告别Excel,免费大数据分析与可视化工具,让你的论文图表“高大上”
数据分析工具很多,可以分为表格、数据库、BI工具、编程等四大工具。每个大类又有很多的工具,例如表格包括Excel、WPS、Google Sheets、Airtable等。编程工具包括Python和R。 搞科研几年了,笔者一直都是在使用Excel做数据分析和可视化…...
C++ 中的继承和多态
C 中的继承和多态 一、继承二、函数重载、隐藏、覆盖、重写1.函数重载(Function Overload)2.函数隐藏(Function Hiding)3.函数重写与函数覆盖(Function Override) 三、多态四、纯虚函数和抽象类五、多重继承…...
NestedFormer:用于脑肿瘤分割的嵌套模态感知Transformer
文章目录 NestedFormer: Nested Modality-AwareTransformer for Brain Tumor Segmentation摘要方法Global Poolformer EncoderNested Modality-Aware Feature AggregationModality-Sensitive Gating 实验结果 NestedFormer: Nested Modality-AwareTransformer for Brain Tumor …...
【SQLServer】sqlserver数据库导入oracle
将sqlserver数据库导入到oracle 实用工具: SQL Server Management Studio 15.0.18424.0 SQL Server 管理对象 (SMO) 16.100.47021.07eef34a564af48c5b0cf0d617a65fd77f06c3eb1 Microsoft Analysis Services 客户端工具 15.0.19750.0 Microsoft 数据访问组件 (MDAC) …...
【5.20】四、性能测试—性能测试工具
目录 4.5 性能测试工具 4.5.1 LoadRunner 4.5.2 JMeter 4.5 性能测试工具 性能测试是软件测试中一个很重要的分支,人们为了提高性能测试的效率,开发出了很多性能测试工具。一款好的测试工具可以极大地提高测试效率,为发现软件缺陷提供重要…...
朗诵素材-《少年正是读书时》(两角色主持朗诵)
少年正是读书时 1、少年正是读书时 男:我们生活在/古老的土地上 男:我们拥有/共同的梦想 女:那朗朗的书声/那浓浓的墨香 女:都在告诉我们 合:少年正是/读书时 2、为何要读书 男:养心&am…...
凭借这个笔记,拿下8家大厂offer....
如何拿到多家大厂的offer,没有过硬的实力,就需要不断的学习。 我是如何拿到,阿里,腾讯,百度等八家大厂的offer的,今天我就给大家来分享我的秘密武器,阿里大神整理的包括,测试基础&am…...
【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型
摘要 拍照搜题系统采用“三层管道(多模态 OCR → 语义检索 → 答案渲染)、两级检索(倒排 BM25 向量 HNSW)并以大语言模型兜底”的整体框架: 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后,分别用…...
OkHttp 中实现断点续传 demo
在 OkHttp 中实现断点续传主要通过以下步骤完成,核心是利用 HTTP 协议的 Range 请求头指定下载范围: 实现原理 Range 请求头:向服务器请求文件的特定字节范围(如 Range: bytes1024-) 本地文件记录:保存已…...
C# 类和继承(抽象类)
抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...
GitHub 趋势日报 (2025年06月08日)
📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...
优选算法第十二讲:队列 + 宽搜 优先级队列
优选算法第十二讲:队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...
laravel8+vue3.0+element-plus搭建方法
创建 laravel8 项目 composer create-project --prefer-dist laravel/laravel laravel8 8.* 安装 laravel/ui composer require laravel/ui 修改 package.json 文件 "devDependencies": {"vue/compiler-sfc": "^3.0.7","axios": …...
基于Java+MySQL实现(GUI)客户管理系统
客户资料管理系统的设计与实现 第一章 需求分析 1.1 需求总体介绍 本项目为了方便维护客户信息为了方便维护客户信息,对客户进行统一管理,可以把所有客户信息录入系统,进行维护和统计功能。可通过文件的方式保存相关录入数据,对…...
AI+无人机如何守护濒危物种?YOLOv8实现95%精准识别
【导读】 野生动物监测在理解和保护生态系统中发挥着至关重要的作用。然而,传统的野生动物观察方法往往耗时耗力、成本高昂且范围有限。无人机的出现为野生动物监测提供了有前景的替代方案,能够实现大范围覆盖并远程采集数据。尽管具备这些优势…...
[大语言模型]在个人电脑上部署ollama 并进行管理,最后配置AI程序开发助手.
ollama官网: 下载 https://ollama.com/ 安装 查看可以使用的模型 https://ollama.com/search 例如 https://ollama.com/library/deepseek-r1/tags # deepseek-r1:7bollama pull deepseek-r1:7b改token数量为409622 16384 ollama命令说明 ollama serve #:…...
《信号与系统》第 6 章 信号与系统的时域和频域特性
目录 6.0 引言 6.1 傅里叶变换的模和相位表示 6.2 线性时不变系统频率响应的模和相位表示 6.2.1 线性与非线性相位 6.2.2 群时延 6.2.3 对数模和相位图 6.3 理想频率选择性滤波器的时域特性 6.4 非理想滤波器的时域和频域特性讨论 6.5 一阶与二阶连续时间系统 6.5.1 …...
