当前位置: 首页 > 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.

http://www.lryc.cn/news/69600.html

相关文章:

  • C语言递归算法实现经典例题
  • ST典型碳化硅MOSFET驱动应用方案
  • 对比AMD和英特尔显卡的区别
  • Linux系统c语言socket实现UDP通信
  • 常用五大类RFID系统,实践领域广泛,加强现代化管理
  • 卡方检验.医学统计实例详解
  • H264和AAC打包PS包代码
  • Redis数据类型-ZSet
  • 国外各大学和学院对于ChatGPT使用立场总结
  • 我在VScode学Java(Java二维数组)
  • HTML-iconfont动态图标SVG效果--阿里巴巴图标矢量库
  • C++17完整导引-模板特性之编译器的if语句
  • 告别Excel,免费大数据分析与可视化工具,让你的论文图表“高大上”
  • C++ 中的继承和多态
  • NestedFormer:用于脑肿瘤分割的嵌套模态感知Transformer
  • 【SQLServer】sqlserver数据库导入oracle
  • 【5.20】四、性能测试—性能测试工具
  • 朗诵素材-《少年正是读书时》(两角色主持朗诵)
  • 凭借这个笔记,拿下8家大厂offer....
  • 介绍一下全链路压测平台的相关内容
  • 对于无效的数据,该如何处理
  • 港联证券:机器人行业有望迎来整体性机会 六氟磷酸锂翻倍上涨
  • css 伪类选择器 结构伪类
  • 常用的表格检测识别方法-表格区域检测方法(上)
  • 【运维知识进阶篇】集群架构-Rewrite重定向
  • JavaScript如何使用while循环
  • 『MySQL 实战 45 讲』16 - “order by” 是怎么工作的
  • 怎么给移动硬盘查错?移动硬盘查错能恢复数据吗
  • javaIO流之缓冲流
  • 定义制造业操作(定义 MES/MOM 系统)