数据结构电视大赛投票系统

2023-05-16

电视大赛观众投票及排名系统的设计与实现( 8学时)
问题描述:在很多的电视大赛中,通常当选手表演结束后,现场观众通过手中的按键对参赛选手进行投票,然后对选手获得的票数进行统计,从高到低进行降序排序,从而自动产生冠军、亚军和季军。要求编写算法模拟实现上述系统的功能。
1.基本要求
(1)首先输入参赛选手的人数(范围为1-9个),然后根据人数通过malloc函数来分配存放选手信息的顺序表;
(2)将选手的编号和姓名依此存入顺序表中;
(3)观众通过按键进行投票,按’1’为1号选手投票,按’2’为2号选手投票,以此类推,以按’0’作为投票结束标志;
(4)投票结束后进行排序,在此采用各种排序算法,然后为每个选手计算名次,得票相同的名次也相同;
2.重点、难点
重点:
(1)参赛选手数据结构的设计;
(2)排序算法的设计;
难点:各种排序算法的性能分析与比较
3.作业及课外学习要求:
按照题意要求独立进行设计,设计结束后要按要求写出课程设计报告。
本知识点的讲授和学习,可以支撑“毕业要求4研究”中的“指标点4.1能够运用科学的研究方法对复杂软件工程问题进行需求分析研究;指标点4.2熟悉复杂软件系统的开发和应用环境,研究制定合理的软件设计与开发方案。指标点4.3能够对原型验证方法进行研究与分析,合理验证软件系统”的指标达成度进行评估。使学生在解决具体问题的过程中,能够灵活熟练地选择合适的数据结构及设计有效的算法,从而加深对常用数据结构的理解,强化学生的逻辑思维能力和动手能力,巩固良好的编程习惯,掌握工程软件设计的基本方法,为后续课程的学习打下坚实基础。
代码:

#include<cstdio>
#include<iostream>
#include<stdlib.h>
#include<cstring>
#include"xy_setting.h"

using namespace std;

int number=0,n=0,flag=0;
void msgbox()
{
    printf("===============================\n");
    printf("= 参赛人数:%d                 =\n",number);
    printf("= 有效投票数:%d               =\n",n);
    printf("= 基本操作:                  =\n");
    if(flag==0)
        printf("= 开始投票:----S             =\n");
    else
        printf("= 已投票,是否补投----Y       =\n");
    printf("= 投票情况(编号排序)----A    =\n");
    printf("= Ranking ----R               =\n");
    printf("= 退出系统 ----E              =\n");
    printf("===============================\n");
}
class player
{
public:
    int num;
    char name[30];
    int score;
    int ranking;
};

class ope
{
public:
    void init(player *a,int number);
    void output_info(player *a,int number);
    void outcome(player *a,int number);
    void voting(player *a,int number);
    void shell_insert(player *a,int n,int dk);
    void shell_sort(player *a,int n,int t);
    void sort_outcome(player *a,int number);
};

void ope::shell_insert(player *a,int n,int dk)
{
    for(int i=dk+1;i<=n;i++)
    {
        int j;
        if(a[i].score>a[i-dk].score)
        {
            strcpy(a[0].name,a[i].name);
            a[0].score=a[i].score;
            a[0].num=a[i].num;
            for(j=i-dk;j&&a[j].score<a[0].score;j-=dk)
            {
                strcpy(a[j+dk].name,a[j].name);
                a[j+dk].score=a[j].score;
                a[j+dk].num=a[j].num;
            }
            strcpy(a[j+dk].name,a[0].name);
            a[j+dk].score=a[0].score;
            a[j+dk].num=a[0].num;
        }
    }
}
void ope::shell_sort(player *a,int n,int t)
{
    int i;
    for(;t>=1;t/=2)
    {
        ope::shell_insert(a,n,t);
        for(i=1;i<=n;i++)
            a[i].ranking=i;
        for(i=1;i<n;i++)
            if(a[i+1].score==a[i].score)
                a[i+1].ranking=a[i].ranking;
    }
}
void ope::output_info(player *a,int number)
{
    cout<<"\n输出选手信息:\n编号  姓名\n";
    for(int i=1;i<=number;i++)
    {
        printf(" %d    %s\n",a[i].num,a[i].name);
    }
}
void ope::init(player *a,int number)
{
    int i=1;
    cur_sys();
    cout<<endl<<"输入选手姓名:"<<endl;
    while(i<=number)
    {
        cin>>a[i].name;
        a[i].num=i;
        a[i].score=a[i].ranking=0;
        i++;
    }
    ope::output_info(a,number);
    cout<<endl<<"初始化成功!!!"<<endl;
}

void ope::outcome(player *a,int number)
{
    cout<<"输出选手得票情况(未排序):\n";
    for(int i=1;i<=number;i++)
    {
        printf("选手00%d得票数为%d;\n",a[i].num,a[i].score);
    }
}

void ope::sort_outcome(player *a,int number)
{
    cout<<"\n排名:已排序"<<endl;
    ope::shell_sort(a,number,number);
    for(int i=1;i<=number;i++)
    {
        {
        printf("第%d名为00%d号选手%s,得票数为%d;\n",
               a[i].ranking,a[i].num,a[i].name,a[i].score);
        }
    }
}
void ope::voting(player *a,int number)
{
    if(flag==0)
        cout<<"\n输入选手编号进行投票,按0结束。\n";
    else
        cout<<"\n补投开始:输入选手编号,按0结束。\n";
    flag=1;
    int vote;
    while(scanf("%d",&vote)&&vote)
    {
        if(vote>0&&vote<=number)
        {
            a[vote].score++;
            n++;
            cur_sys();
            cout<<"请继续,按0结束"<<endl;
        }
        else if(vote==0)break;
        else
        {
            cur_sys();
            cout<<"请继续,按0结束"<<endl;
            continue;
        }
    }
    cout<<"投票成功!"<<endl;
}

int main()
{
    char a;
    player *p=NULL;
    ope dol;
    msgbox();
    cout<<"未初始化无法操作\n请输入总人数:";
    while(cin>>number)
    {
        if(number>0)
            break;
        else cout<<"输入错误,重新输入"<<endl;
    }
    p=(player *)malloc(sizeof(player)*number);
    dol.init(p,number);
    system("pause");
    cur_sys();
    cout<<"输入操作\n-";
    while(cin>>a)
    {
        switch(a)
        {
            case 'A':dol.outcome(p,number);cur_sys2();cout<<"输入操作\n-";break;
            case 'S':dol.voting(p,number);cur_sys2();cout<<"输入操作\n-";break;
            case 'Y':dol.voting(p,number);cur_sys2();cout<<"输入操作\n-";break;
            case 'R':dol.sort_outcome(p,number);cur_sys2();cout<<"输入操作\n:";break;
            case 'E':exit(0);break;
            default: continue;
        }
    }
    cout<<"谢谢使用!!!";
}

这里写图片描述
更多内容访问omegaxyz.com
网站所有代码采用Apache 2.0授权
网站文章采用知识共享许可协议BY-NC-SA4.0授权
© 2018 • OmegaXYZ-版权所有 转载请注明出处

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

数据结构电视大赛投票系统 的相关文章

  • 软件工程师与码农的区别

    先说个题外话 xff0c 首先拥有这两种称呼的人都不是修电脑装软件的 本人认为计算机组装与维护 xff08 修电脑 xff0c 装软件 xff0c 装系统 xff0c office xff0c 基本C语言操作 xff09 是一个任何办公室白
  • html输入框输入限制

    JS判断只能是数字和小数点 1 文本框只能输入数字代码 小数点也不能输入 lt input nkeyup 61 34 this value 61 this value replace D g 39 39 34 onafterpaste 61
  • C++运算符重载详解

    更多内容访问omegaxyz com 为什么要对运算符进行重载 C 43 43 预定义中的运算符的操作对象只局限于基本的内置数据类型 xff0c 但是对于我们自定义的类型 xff08 类 xff09 是没有办法操作的 但是大多时候我们需要对
  • 合作协同进化算法概述(Cooperative Coevolution)

    合作协同进化 xff08 Cooperative Coevolution xff09 是求解大规模优化算法一个有效的方法 将大规模问题分解为一组组较小的子问题 而合作协同进化的关键是分解策略 分解策略的分类 随机分解 xff1a 随机选择基
  • C/C++移位运算符

    在一般的C语言教学中 xff0c 移位运算符很多情况下讲师直接跳过 xff0c 更多的会在汇编语言中系统得讲述 然而 xff0c 熟练掌握 高级语言中的移位很大程度上可以展现一个人的代码功底并且能提高编程效率 更多内容访问omegaxyz
  • 差分分组合作协同进化MATLAB代码

    合作协同进化已经引入协同进化算法 xff0c 目的是通过分而治之的范式解决日益复杂的优化问题 理论上 xff0c 协同改 变子成分的想法是十分适合解决大规模优化问题的 然而在实践中 xff0c 没有关于问题的先验知识 xff0c 问题应如何
  • 蒙提霍尔问题(三门问题,概率论)C语言验证

    三门问题 亦称为蒙提霍尔问题 xff0c 出自美国的电视游戏节目Let s Make a Deal 问题的名字来自该节目的主持人蒙提 霍尔 xff08 Monty Hall xff09 问题是这样的 xff1a 参赛者面前有三扇关闭着的门
  • 变邻域搜索算法(Variable Neighborhood Search,VNS)

    先说一下局部搜索 xff1a 更多内容访问omegaxyz com 局部搜索是解决最优化问题的一种启发式算法 对于某些计算起来非常复杂的最优化问题 xff0c 比如各种NP完全问题 xff0c 要找到最优解需要的时间随问题规模呈指数增长 x
  • 汇编程序16位带符号变量计算

    用16位指令编写完整的程序 xff0c 并上机测试 xff0c 计算W 61 xff08 x 43 y xff09 z 其中所有变量均为16位带符号变量 更多内容访问omegaxyz com 注意伪指令的使用 data segment sp
  • 16位伪指令汇编程序查看内存

    实验内容 用16位指令编写完整程序 xff0c 实现下列数据定义语句和相关指令 xff0c 在debug下查看内存数据的定义情况 xff0c 单步跟踪查看各寄存器的值 题目 xff1a ORG 0 ARRAY LABEL BYTE DA1
  • C++对类或结构体进行指定规则排序

    STL中就自带了排序函数sortsort 对给定区间所有元素进行排序 使用 include sort即可使用 xff0c 语法描述为 xff1a sort begin end cmp xff0c 表示一个范围 其中cmp是自己指定的比较规则
  • Html与JS正则表达式测试代码

    正则表达式 xff0c 又称规则表达式 xff08 英语 xff1a Regular Expression xff0c 在代码中常简写为regex regexp或RE xff09 xff0c 计算机科学的一个概念 正则表通常被用来检索 替换
  • sata2.0和sata3.0的区别

    sata是指电脑主板上的硬盘接口 xff0c 3 0是2 0的升级版本 xff0c 发布于2009年 xff0c 所以2010年之前的电脑主板基本都只提供sata2 0接口 xff0c 如果你不知道自己的电脑是sata2 0还是sata3
  • NLTK在python中文字所表达的情感预测

    NLTK是python环境下NLP工具包 xff0c 包含了丰富的文本处理和文本挖掘API 自然语言处理是计算机科学领域与人工智能领域中的一个重要方向 自然语言工具箱 xff08 NLTK xff0c Natural Language To
  • Python实现Windows电脑定时关机

    定时关机 xff0c 功能 xff1a windows下 xff0c 用户按照一定格式输入关机时间 xff0c 系统到指定时间自动关闭 思路 xff1a 从用户输入获取指定时间 分别以时分秒减去当前时间 最终计算得到当前时间距离指定 时间还
  • Python利用结巴模块统计《水浒传》词频

    中文分词是中文文本处理的一个基础性工作 xff0c 结巴分词利用进行中文分词 其基本实现原理有三点 xff1a 基于Trie树结构实现高效的词图扫描 xff0c 生成句子中汉字所有可能成词情况所构成的有向无环图 xff08 DAG 采用了动
  • Python支持向量机(SVM)实例

    SVM Support Vector Machine 指的是支持向量机 xff0c 是常见的一种判别方法 在机器学习领域 xff0c 是一个有监督的学习模型 xff0c 通常用来进行模式识别 分类以及回归分析 Matlab中有林智仁编写的l
  • Sci-Hub

    Sci Hub是一个线上数据库 xff0c 其上提供62 000 000篇科学学术论文和文章 网站透过 edu 代理服务器访问相关页面 xff0c 每天会上传新的论文文章 2011年 xff0c 哈萨克研究生亚历珊卓 艾尔巴金因为研究论文成
  • 30个谷歌开源项目

    更多内容访问omegaxyz com 1机器学习系统 TensorFlow TensorFlow 是谷歌的第二代机器学习系统 xff0c 据谷歌说 xff0c 在某些基准测试中 xff0c TensorFlow 的表现比第一代的 DistB

随机推荐

  • MATLAB粒子群优化算法实现(PSO)

    PSO xff08 PSO Particle Swarm Optimization xff09 xff08 基于种群的随机优化技术算法 xff09 粒子群算法模仿昆虫 兽群 鸟群和鱼群等的群集行为 xff0c 这些群体按照一种合作的方式寻找
  • NSGA2 算法Matlab实现

    为了能随时了解Matlab主要操作及思想 故本文贴上NSGA 算法Matlab实现 xff08 测试函数为ZDT1 xff09 更多内容访问omegaxyz com NSGA 就是在第一代非支配排序遗传算法的基础上改进而来 xff0c 其改
  • NSGA2算法MATLAB

    NSGA2算法MATLAB实现 xff08 能够自定义优化函数 xff09 以前写了一个简单的NSGA2的算法能够用在ZDT1函数上 xff1a http www omegaxyz com 2017 05 04 nsga2matlabzdt
  • 编程语言编年史

    编程语言有上千种 xff0c 但是流行的不过10来种 xff0c 那些我们经常使用的编程语言都是谁在什么时候创造出来的呢 xff1f 1800年 Joseph Marie Jacquard教会了一台织布机读穿孔卡片 xff0c 制造出了第一
  • Java的密钥库jks文件放在/src/main/resources目录下报错的解决办法

    Java的密钥库jks文件放在 src main resources目录下 到了编译的时候 就会自动增长变大 导致java读取keystore文件异常 爆出 java io IOException Invalid keystore form
  • Python模拟电脑按键

    按键精灵是一个很好的Windows按键模拟器 xff0c 下面用python简单地实现所需要的功能 下面提供两种方式 xff0c 第一种一种是简单模拟 发的是虚拟消息给程序的消息队列 但是有些软件比如360和一些游戏大部分都是直接和硬件通信
  • 区块链技术认识整理

    区块链技术 腾讯视频讲解 xff1a https v qq com x page a03569ty8mu html 搜狐漫画 xff1a http www sohu com a 162764647 673573 CSDN区块链技术概念及基础
  • MATLAB中SVM(支持向量机)的用法

    LIBSVM是台湾大学林智仁 Lin Chih Jen 教授等开发设计的一个简单 易于使用和快速有效的SVM模式识别与回归的软件包 xff0c 他不但提供了编译好的可在Windows系列系统的执行文件 xff0c 还提供了源代码 xff0c
  • Python在指定文件夹生成随机文件

    有时我们需要生成一些写有随机字符串的txt文件进行测试 xff0c 这里我们采用生成随机字符串的形式来创建并命名文件 xff0c 然后再在txt文件中生成随机的字符串作为内容写入到文件里面 整个过程很简单 xff0c 但是可以作为一个模板在
  • Python字符串加密

    base64 Base64是一种用64个字符来表示任意二进制数据的方法 用记事本打开exe jpg pdf这些文件时 xff0c 我们都会看到一大堆乱码 xff0c 因为二进制文件包含很多无法显示和打印的字符 xff0c 所以 xff0c
  • Python文章归档

    下面是最新的Python文章目录导航 Python基础面向对象语句函数文件正则表达式Python GUI 程序Python模块Python机器学习Python爬虫与Python相关的 内容更新至2018年1月22日 Python基础 xff
  • 7个优秀的境外程序员博客

    如果你想成为程序员 xff0c 你需要沉浸在编程文化中 如果你仍然是一个学生 xff0c 这是更真实的 编程领域非常广泛 xff0c 吸收了太多的信息 xff0c 如果你远距离参与 xff0c 你永远不会出现在最前面 幸运的是 xff0c
  • k-means算法概述

    优点与缺点 K means算法思想 K MEANS算法是输入聚类个数k xff0c 以及包含 n个数据对象的数据库 xff0c 输出满足方差最小标准k个聚类的一种算法 k means 算法接受输入量 k xff1b 然后将n个数据对象划分为
  • MATLAB随机数生成器

    1 rand 生成 0 1 区间上均匀分布的随机数 基本语法 xff1a rand M N P 生成排列成M N P 多维向量的随机数 如果只写M xff0c 则生成M M矩阵 xff1b 如果参数为 M N 可以省略方括号 2 randn
  • Python弹球游戏(tkinter模块编写)

    python弹球游戏 xff0c 能够选择难度和分数控制 程序利用tkinter模块编写 xff08 说到这里吐槽一下tkinter模块 xff0c 虽然tkinter是python自带的模块 xff0c 但是编写手感真没有wxpython
  • SSH登录时提示Read from socket failed: Connection reset by peer.

    首先查看日志 tail f var log auth log 添加参数 v 获得更详细的连接信息 ssh user 64 computerB v 1 如果是 rsa and dsa keys 丢失产生的问题 可以通过下面的方式进行修复 ss
  • Python密码存储器

    xff08 不使用数据库 xff09 设计一个密码记录及查询小软件 xff0c 模拟记录自己在各个网站上所使用的账号及密码 xff0c 保存在文件中 要求自行设计存储方式 xff0c 并实现浏览 xff0c 查询 xff0c 增加 xff0
  • Python英文搜索引擎(模糊搜索)

    假设在C Record下面有若干个 txt文件 xff0c 均为纯英文文档 以这些文档为内容 xff0c 实现一个本地搜索引擎 xff0c 当用户给出某个输入时 xff0c 列出相关的搜索结果 可以自行决定改搜索引擎的功能强弱 xff0c
  • wxpython记录生词GUI程序

    不使用数据库 实现一个简单的记生词软件 xff0c 基本功能包括 xff0c 添加新的生词及其中文含义 xff0c 浏览已经记录的单词 xff0c 随机选择部分单词进行复习 可考虑其它拓展的功能 这里使用wxpython的基本操作 xff0
  • 数据结构电视大赛投票系统

    电视大赛观众投票及排名系统的设计与实现 8学时 问题描述 xff1a 在很多的电视大赛中 xff0c 通常当选手表演结束后 xff0c 现场观众通过手中的按键对参赛选手进行投票 xff0c 然后对选手获得的票数进行统计 xff0c 从高到低