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

news2024/10/6 4:13:08

运动会分数统计

数据结构课程设计任务书

学生姓名: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.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/554792.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ProtoBuf安装及避坑指南

文章目录 安装前注意事项(避坑)ProtoBuf在Linux下的安装protoBuf 测试demo 安装前注意事项(避坑) 1.安装前&#xff0c;我们需要升级g&#xff0c;使用较新的g编译器。 2.在安装过程中&#xff0c;出现问题&#xff0c;可以选择安装其他版本&#xff0c;在加压文件下执行make …

NFTScan:05.15~05.21 NFT 市场热点汇总

欢迎来到由 NFT 基础设施 NFTScan 出品的 NFT 生态热点事件每周汇总。 周期&#xff1a;2023.05.15 ~ 2023.05.21 NFT Hot News&#xff1a;NFT 热点资讯 01/ DID 解决方案提供商 Lifeform 以 3 亿美元估值完成 IDG Capital 领投的 B 轮融资 5 月 15 日&#xff0c;去中心化…

Rocketmq常用使用场景

RocketMQ 是阿里开源的分布式消息中间件&#xff0c;跟其它中间件相比&#xff0c;RocketMQ 的特点是纯JAVA实现 基础概念 Producer&#xff1a; 消息生产者&#xff0c;负责产生消息&#xff0c;一般由业务系统负责产生消息 Producer Group&#xff1a; 消息生产者组&#xf…

ESP32CAM---利用Vscode阅读源码

前言 &#xff08;1&#xff09;首先&#xff0c;我在此吐槽一些&#xff0c;arduino平台的代码阅读功能&#xff0c;是真滴垃圾。气死我了。配置这玩意搞了半天&#xff0c;还没搞好。 &#xff08;2&#xff09;最后我决定使用Vscode阅读arduino的代码。arduino IDE负责编译程…

智能工厂已成为制造业数字化转型的重心

我国“十四五”规划纲要提出&#xff0c;要深入实施智能制造和绿色制造工程&#xff0c;发展服务型制造新模式&#xff0c;推动制造业高端化智能化绿色化。随着5G等新一代信息技术与制造业不断深度融合&#xff0c;制造业的智能化发展成为未来我国制造业转型升级的重要方向。《…

MyBatisPlus快速入门(一)MyBatisPlus简介、历史和优势

一、什么是 MyBatisPlus&#xff1f;二、MyBatisPlus 相关文档2.1 官网2.2 Github源码2.3 官方文档 三、MyBatisPlus 的历史四、MyBatisPlus 的特性和优势4.1 特性4.2 优势 五、如何学习 MyBatisPlus & 专栏计划 一、什么是 MyBatisPlus&#xff1f; MyBatisPlus&#xff…

MyBatis中使用第三方分页插件PageHelper完成分页功能

文章目录 一、前言二、基于插件拦截方式1、自定义插件2、使用第三方插件完成分页1、分页插件的配置2、分页插件的使用 一、前言 分页是web应用程序非常重要的一个技术。数据库中的数据可能是成千上万的&#xff0c;不可能把这么多的数据一次显示在浏览器上面。一般根据每行数据…

2023年4月CSDN客服月报|解决3个重大问题和26个次要问题,采纳1个用户建议

听用户心声&#xff0c;解用户之需。hello&#xff0c;大家好&#xff0c;这里是《CSDN客诉报告》第19期&#xff0c;接下来就请大家一同回顾我们4月份解决的bug&#xff5e; 一、重大问题 1、【猿如意】ChitGPT近期老是提示“我回答不过来”的问题 反馈量&#xff1a;10 2、…

【星戈瑞】Sulfo-Cyanine7 maleimide磺化CY7标记马来酰亚胺

水溶性Cyanine7 mal是一种常用的细胞标记物&#xff0c;可以被用于细胞荧光成像等应用中。它的分子结构中含有Cyanine7和mal两部分&#xff0c;其中Cyanine7是一种红外荧光染料&#xff0c;可以发出红外光&#xff0c;而mal则是一种水溶性的化合物&#xff0c;可以使Cyanine7分…

响应式与自适应的区别

响应式与自适应的区别&#xff1a; 响应式&#xff1a;一套适配多端适配不同的屏幕设备&#xff0c;即不同的视口分辨率 自适应&#xff1a;多套页面不同视口分辨率大小显示同样的网页rem、百分比等相对单位 注意&#xff1a; 在开发中&#xff0c;项目的响应式&#xff0c;一些…

Java技术接单

今天给大家介绍一个阶段性&#xff08;周期性&#xff09;能获取一定收益的Java技术接单群&#xff0c;分享给大家&#xff01;主要对搞Java的粉丝有帮助&#xff0c;因为可以赚点小钱&#xff0c;对Java技术的要求不高&#xff01; 那些感兴趣或者想直接加技术群的我给大家讲一…

JAVA8 Stream

1 Steam流式思想概述 Stream和IO流(InputStream/OutputStream)没有任何关系&#xff0c;请暂时忘记对传统IO流的固有印象&#xff01; Stream流式思想类似于工厂车间的“生产流水线”&#xff0c;Stream流不是一种数据结构&#xff0c;不保存数据&#xff0c;而是对数据进行加…

Vue 3 第二十一章:组件九(组件高级特性-组件的混入和继承)

文章目录 1. 组件的混入2. 组件的继承总结 Vue 中的组件混入和继承功能允许我们在多个组件之间共享代码&#xff0c;从而提高代码的可重用性和可维护性。 1. 组件的混入 混入是一种将多个对象合并为一个对象的技术。在 Vue 3 中&#xff0c;我们可以使用 mixins 属性来定义混…

ThingsBoard的Actor模型

0、概述 下面是我从网上查阅资料总结下来的. 1、背景 多线程编程是每个程序员的基本功,同时也是开发中的难点,处理各种“锁”的问题是让人十分头痛的一件事。例如,设计一个转账功能,怎么保证在多线程下能正常运行?你可能会说,这个简单,在进行转账操作前,先对两个账户…

【实战项目】使用C语言和easyX,一起完成数字拼图游戏吧!快来挑战一下吧~

这款简易的拼图游戏包含了15个数字方块&#xff0c;你需要将它们按照顺序排列成1~15的数字&#xff0c;就能完成游戏。 在游戏中会记录你完成拼图所用的时间。我想强调的是&#xff0c;一个精彩的游戏并不一定需要使用图片。只要功能和手感都做得出色&#xff0c;游戏同样能够…

从0到1,深刻理解Linux权限

[Linux]深刻理解Linux权限 从0到1&#xff0c;深刻理解Linux权限Linux权限的概念Linux权限管理Linux文件访问者文件类型和访问权限文件类型访问权限 文件访问权限设置修改文件权限修改文件拥有者修改所属组 umask掩码目录权限目录权限问题粘滞位 权限总结&#xff1a; 从0到1&a…

1688商品详细信息价格SKU接口

随着新零售时代的到来&#xff0c;越来越多的企业开始关注电商平台&#xff0c;其中1688平台作为国内重要的B2B电商平台之一&#xff0c;对于企业发展、产品销售等方面有着重要的价值。在使用1688平台出售商品时&#xff0c;如何优化商品详情页、提高搜索排名、增加商品曝光度&…

PG15.3.0源码编译安装日志插件pgbadger(上)

一、开启相关日志 修改后alter一定要重启&#xff0c;才会修改 pg_ctl restart -D /usr/local/pgsql/data -l logfile按照下面的方法一个个修改。 log_destination csvlog # 可选 logging_collector on log_min_duration_statement 0 log_line_prefix %t [%p]: us…

(转载)MATLAB智能算法30个案例分析(2)——基于遗传算法和非线性规划的函数寻优算法

以下内容大部分来源于《MATLAB智能算法30个案例分析》&#xff0c;仅为学习交流所用。 1 理论基础 1.1 非线性规划 非线性规划是20世纪50年代形成的一门新兴学科。1951年库恩和塔克发表的关于最优性条件(后来称为库恩塔克条件)的论文是非线性规划诞生的标志。非线性规划研究…

聚会游戏玩什么?UMO轻松炒热气氛

UMO是一款有趣的多人益智桌游&#xff0c;考验玩家耐力和技巧的比拼&#xff01;玩家将在游戏中通过特定的规则来出牌&#xff0c;谁先出完所有牌谁就赢&#xff0c;游戏非常讲究策略和运气哦~ 当玩家手上只剩一张牌时&#xff0c;必须喊出UMO&#xff01;游戏因此得名。【数字…