当前位置: 首页 > news >正文

数据结构课程设计——运动会分数统计

运动会分数统计

数据结构课程设计任务书

学生姓名:xxx          专业班级:软件工程

指导教师:            工作单位:

题  目: 运动会分数统计                                  

基础要求:

要求具有C语言的理论基础,能够完成课程设计的独立设计和编码

实践可以写具有良好的(C语言等)方面的的代码书写能力,数据结构的专业知识,能够完成编码以及测试工作

主要任务:

(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)

(1)任务内容

运动会分数统计

(2)完成要求

对系统进行功能模块分析、控制模块分析;系统设计要能完成题目所要求的功能;编程简练,可用,尽可能的使系统的功能更加完善和全面;说明书、流程图要清楚;提高学生的论文写作能力;特别要求自己独立完成;在基本要求达到后,可进行创新设计,如改善算法性能、友好的人机界面。

(3)撰写课程设计报告

报告格式按附件要求打印与写课程设计报告;论文包括目录、正文、小结、参考文献、附录等;课程设计论文装订按学校的统一要求完成。

时间安排:

内容                  天数             地点

构思及收集资料          1              机房

编码与调试              3              机房

撰写论文                1              图书馆、机房

指导教师签名:                     2023年    3月   23 日

完整资源一键获取私信我

 

  • 问题分析和任务定义

问题描述】

参加运动会的n个学校编号为1~k比赛分成n个男子项目和m个女子项目项目编号分别为1nn+1n+m由于各项目参加人数差别较大有些项目取前五名得分顺序为7,5,3,2,1;有些项目只取前三名得分顺序为5,3,2。写一个统计程序产生各种成绩单和得分报表

基本要求】

    1. 可以输入各个项目的前三名或前五名的成绩;
    2. 能统计各学校总分,
    3. 可以按学校编号或名称、学校总分、男女团体总分排序输出;
    4. 可以按学校编号查询学校某个项目的情况;可以按项目编号查询取得前三或前五名的学校。
    5. 数据存入文件并能随时查询
    6. 输入数据形式和范围:可以输入学校的名称,运动项目的名称

输出形式:有中文提示,各学校分数为整型。

界面要求:有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。

存储结构:学生根据系统功能要求自己设计,但要求运动会的相关数据要存储在数据文件中。

  • 数据结构的选择和概要设计

本课设要求输入信息, 统计分数,执行排序与查找功能, 在要求中没有在建立数据之后进行插入和删除操作,而在排序和查找过程中有许多的随机读取数据操作,因此使用顺序结构而不用链表。由于各个要求属性具有一定的联系,在定义数据时使用结构体和结构体数组来存储信息数据。

  • 详细设计和编码

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.

相关文章:

数据结构课程设计——运动会分数统计

运动会分数统计 数据结构课程设计任务书 学生姓名&#xff1a;xxx 专业班级&#xff1a;软件工程 指导教师&#xff1a; 工作单位&#xff1a; 题 目: 运动会分数统计 基础要求&#xff1a; 要求具有C语言的理论基础…...

C语言递归算法实现经典例题

一.递归 1.什么是递归 递归是一种编程技术&#xff0c;它通过在函数内部反复调用自身来解决问题。当一个程序调用自己时&#xff0c;这就称为递归调用。递归可以有助于简化某些算法的实现和理解。在递归过程中&#xff0c;每个调用都会将一些数据保存在栈上&#xff0c;直到递…...

ST典型碳化硅MOSFET驱动应用方案

ST典型碳化硅MOSFET驱动应用方案 1.栅极驱动器规格和功能实现 参考资料&#xff1a;ST官网应用手册《AN4671》 作者&#xff1a;Xiou 1.栅极驱动器规格和功能实现 以下是对栅极驱动要求的简短列表&#xff1a; dv / dt 的瞬变抗扰度&#xff1a;在整个温度范围内 50 V/ns。 …...

对比AMD和英特尔显卡的区别

✨求关注~ &#x1f600;博客&#xff1a;www.protaos.com AMD和英特尔都是著名的半导体公司&#xff0c;它们都生产处理器和显卡。在显卡领域&#xff0c;AMD生产Radeon系列显卡&#xff0c;而英特尔则生产Intel HD Graphics和Intel Iris Graphics系列显卡。 使用群体对比&…...

Linux系统c语言socket实现UDP通信

UDP全称 User Datagram Protocol,即:用户数据报协议。是面向无连接的协议。通常,UDP 通信还会被冠以不可靠的头衔。这里的不可靠指的是:无法可靠地得知对方是否收到数据。 UDP有如下特征: 无连接:通信双方不需要事先连接无确认:收到数据不给对方发回执确认不保证有序、丢…...

常用五大类RFID系统,实践领域广泛,加强现代化管理

随着信息技术的不断进步&#xff0c;RFID技术已逐渐成为企业管理及社会服务领域中不可或缺的一种重要技术手段。根据其不同的应用场景&#xff0c;RFID技术广泛应用于药品监管、固定资产管理、仓储管理、智慧工厂和消费服务等领域。本文将从五个方面介绍常用的RFID系统。 一、…...

卡方检验.医学统计实例详解

卡方检验是一种常用的假设检验方法&#xff0c;通常用于分析两个或多个分类变量之间的关系。在医学研究中&#xff0c;卡方检验被广泛应用于分析两种或多种治疗方法的疗效&#xff0c;或者分析某种疾病的发病率与某些危险因素之间的关系。下面我们来看一个卡方检验在医学实例中…...

H264和AAC打包PS包代码

段老师的干货时间又到咯&#xff0c;下面代码实现的是将 AAC 和 H264 数据打包成 PS 包的流程&#xff0c;其中包括了 PES 头、PSI 表头、MPEG-TS 头、AAC/H264 数据打包等多个步骤。此外&#xff0c;还包含 CRC32 校验等校验码的计算。需要注意的是&#xff0c;此代码示例仅供…...

Redis数据类型-ZSet

一. 概述 SortedSet又叫zset&#xff0c;它是Redis提供的特殊数据类型&#xff0c;是一种特殊的set类型&#xff0c;继承了set不可重复的特点&#xff0c;并在set基础上为每个值添加一个分数&#xff0c;用来实现值的有序排列。 二. 常用指令 明白它的特点后&#xff0c;接下来…...

国外各大学和学院对于ChatGPT使用立场总结

ChatGPT和生成式AI的快速普及对教育这个专业领域带来了威胁——全国各地的大学和学院都召开了紧急会议&#xff0c;讨论如何应对学生利用AI作弊的风险。 一部分学校和教授担心这项技术会成为学生在论文或其他写作作业和考试中寻求捷径的工具。而这种生成内容的方式往往能够绕开…...

我在VScode学Java(Java二维数组)

我的个人博客主页&#xff1a;如果\真能转义1️⃣说1️⃣的博客主页 关于Java基本语法学习---->可以参考我的这篇博客&#xff1a;(我在Vscode学Java) 接上回Java一维数组的介绍&#xff08;我在VScode学Java(Java一维数组&#xff09; &#xff09; 二维数组是Java中的一…...

HTML-iconfont动态图标SVG效果--阿里巴巴图标矢量库

给北大打工&#xff0c;实现官网首页动态图标效果_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1Ys4y1c7oh/?spm_id_from333.1007.top_right_bar_window_default_collection.content.click&vd_source924f5dad6f2dcb0a3e5dca4604287ecd&#xff08;本篇笔记操作方法…...

C++17完整导引-模板特性之编译器的if语句

编译期if语句 if constexpr 编译期if语句使用编译期if语句编译期if的注意事项编译期if影响返回值类型即使在 *then* 部分返回也要考虑 *else* 部分编译期短路求值 其他编译期if的示例完美返回泛型值使用编译期if进行类型分发 带初始化的编译期if语句在模板之外使用编译期if参考…...

告别Excel,免费大数据分析与可视化工具,让你的论文图表“高大上”

数据分析工具很多&#xff0c;可以分为表格、数据库、BI工具、编程等四大工具。每个大类又有很多的工具&#xff0c;例如表格包括Excel、WPS、Google Sheets、Airtable等。编程工具包括Python和R。 搞科研几年了&#xff0c;笔者一直都是在使用Excel做数据分析和可视化&#xf…...

C++ 中的继承和多态

C 中的继承和多态 一、继承二、函数重载、隐藏、覆盖、重写1.函数重载&#xff08;Function Overload&#xff09;2.函数隐藏&#xff08;Function Hiding&#xff09;3.函数重写与函数覆盖&#xff08;Function Override&#xff09; 三、多态四、纯虚函数和抽象类五、多重继承…...

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 实用工具&#xff1a; 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 性能测试工具 性能测试是软件测试中一个很重要的分支&#xff0c;人们为了提高性能测试的效率&#xff0c;开发出了很多性能测试工具。一款好的测试工具可以极大地提高测试效率&#xff0c;为发现软件缺陷提供重要…...

朗诵素材-《少年正是读书时》(两角色主持朗诵)

少年正是读书时 1、少年正是读书时 男&#xff1a;我们生活在/古老的土地上 男&#xff1a;我们拥有/共同的梦想 女&#xff1a;那朗朗的书声/那浓浓的墨香 女&#xff1a;都在告诉我们 合&#xff1a;少年正是&#xff0f;读书时 2、为何要读书 男&#xff1a;养心&am…...

凭借这个笔记,拿下8家大厂offer....

如何拿到多家大厂的offer&#xff0c;没有过硬的实力&#xff0c;就需要不断的学习。 我是如何拿到&#xff0c;阿里&#xff0c;腾讯&#xff0c;百度等八家大厂的offer的&#xff0c;今天我就给大家来分享我的秘密武器&#xff0c;阿里大神整理的包括&#xff0c;测试基础&am…...

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周&#xff0c;有很多同学在写期末Java web作业时&#xff0c;运行tomcat出现乱码问题&#xff0c;经过多次解决与研究&#xff0c;我做了如下整理&#xff1a; 原因&#xff1a; IDEA本身编码与tomcat的编码与Windows编码不同导致&#xff0c;Windows 系统控制台…...

conda相比python好处

Conda 作为 Python 的环境和包管理工具&#xff0c;相比原生 Python 生态&#xff08;如 pip 虚拟环境&#xff09;有许多独特优势&#xff0c;尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处&#xff1a; 一、一站式环境管理&#xff1a…...

C++初阶-list的底层

目录 1.std::list实现的所有代码 2.list的简单介绍 2.1实现list的类 2.2_list_iterator的实现 2.2.1_list_iterator实现的原因和好处 2.2.2_list_iterator实现 2.3_list_node的实现 2.3.1. 避免递归的模板依赖 2.3.2. 内存布局一致性 2.3.3. 类型安全的替代方案 2.3.…...

【Linux】C语言执行shell指令

在C语言中执行Shell指令 在C语言中&#xff0c;有几种方法可以执行Shell指令&#xff1a; 1. 使用system()函数 这是最简单的方法&#xff0c;包含在stdlib.h头文件中&#xff1a; #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...

蓝桥杯3498 01串的熵

问题描述 对于一个长度为 23333333的 01 串, 如果其信息熵为 11625907.5798&#xff0c; 且 0 出现次数比 1 少, 那么这个 01 串中 0 出现了多少次? #include<iostream> #include<cmath> using namespace std;int n 23333333;int main() {//枚举 0 出现的次数//因…...

【Java学习笔记】BigInteger 和 BigDecimal 类

BigInteger 和 BigDecimal 类 二者共有的常见方法 方法功能add加subtract减multiply乘divide除 注意点&#xff1a;传参类型必须是类对象 一、BigInteger 1. 作用&#xff1a;适合保存比较大的整型数 2. 使用说明 创建BigInteger对象 传入字符串 3. 代码示例 import j…...

Python+ZeroMQ实战:智能车辆状态监控与模拟模式自动切换

目录 关键点 技术实现1 技术实现2 摘要&#xff1a; 本文将介绍如何利用Python和ZeroMQ消息队列构建一个智能车辆状态监控系统。系统能够根据时间策略自动切换驾驶模式&#xff08;自动驾驶、人工驾驶、远程驾驶、主动安全&#xff09;&#xff0c;并通过实时消息推送更新车…...

Java详解LeetCode 热题 100(26):LeetCode 142. 环形链表 II(Linked List Cycle II)详解

文章目录 1. 题目描述1.1 链表节点定义 2. 理解题目2.1 问题可视化2.2 核心挑战 3. 解法一&#xff1a;HashSet 标记访问法3.1 算法思路3.2 Java代码实现3.3 详细执行过程演示3.4 执行结果示例3.5 复杂度分析3.6 优缺点分析 4. 解法二&#xff1a;Floyd 快慢指针法&#xff08;…...

6.9-QT模拟计算器

源码: 头文件: widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QMouseEvent>QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACEclass Widget : public QWidget {Q_OBJECTpublic:Widget(QWidget *parent nullptr);…...

2025年低延迟业务DDoS防护全攻略:高可用架构与实战方案

一、延迟敏感行业面临的DDoS攻击新挑战 2025年&#xff0c;金融交易、实时竞技游戏、工业物联网等低延迟业务成为DDoS攻击的首要目标。攻击呈现三大特征&#xff1a; AI驱动的自适应攻击&#xff1a;攻击流量模拟真实用户行为&#xff0c;差异率低至0.5%&#xff0c;传统规则引…...