C语言实现歌手比赛系统

C语言实现歌手比赛系统

系统概述

歌手比赛系统是一款使用C语言实现的命令行程序,旨在为歌手比赛场次提供后台管理功能。该系统可以添加、删除、修改歌手信息,查询歌手列表和评分,并且可以实现对歌手评分的计算和排名。

实现步骤

步骤一:创建数据结构

首先需要定义一个数据结构来存储歌手的信息,数据结构可以用结构体来进行描述。以下是一个示例结构体:

typedef struct{
    char name[20];          // 名称
    int id;                 // 编号
    char gender[10];        // 性别
    char type[10];          // 流派
    float score[10];        // 评分
    float sumscore;         // 总分
} Singer;

步骤二:实现基本功能

在实现系统的基本功能时,包括添加、删除、修改歌手信息,查询歌手列表和评分等操作。以下是具体实现步骤:

添加歌手

添加歌手需要用户输入歌手信息,包括姓名、编号、性别、流派等,输入完成后将歌手信息添加到系统中。

以下是一个示例代码:

void add_singer(Singer s[], int size){
    printf("请输入歌手姓名:");
    scanf("%s", s[size].name);
    printf("请输入歌手编号:");
    scanf("%d", &s[size].id);
    printf("请输入歌手性别:");
    scanf("%s", s[size].gender);
    printf("请输入歌手流派:");
    scanf("%s", s[size].type);   

    size++;    // 添加成功后,更新歌手数量
    printf("添加成功!\n");
}

删除歌手

删除歌手需要用户输入要删除歌手的编号,在系统中查找该歌手并删除其信息。

以下是一个示例代码:

void delete_singer(Singer s[], int size, int id){
    int flag = 0;
    for(int i=0;i<size;i++){
        if(s[i].id == id){
            for(int j=i;j<size;j++){
                s[j] = s[j+1];  // 删除歌手信息
            }
            flag = 1;
            break;
        }
    }
    if(flag == 1){
        size--;    // 删除成功后,更新歌手数量
        printf("删除成功!\n");
    }
    else{
        printf("未找到该歌手!\n");
    }
}

修改歌手信息

修改歌手信息需要用户输入要修改歌手的编号,然后可以选择要修改的信息,如姓名、性别、流派等。

以下是一个示例代码:

void modify_singer(Singer s[], int size, int id){
    int i;
    for(i=0;i<size;i++){
        if(s[i].id == id){
            printf("请选择要修改的信息:\n");
            printf("1.姓名\t2.编号\t3.性别\t4.流派\n");
            int num;
            scanf("%d", &num);
            switch(num){
                case 1:
                    printf("请输入新姓名:");
                    scanf("%s", s[i].name);
                    printf("修改成功!\n");
                    break;
                case 2:
                    printf("请输入新编号:");
                    scanf("%d", &s[i].id);
                    printf("修改成功!\n");
                    break;
                case 3:
                    printf("请输入新性别:");
                    scanf("%s", s[i].gender);
                    printf("修改成功!\n");
                    break;
                case 4:
                    printf("请输入新流派:");
                    scanf("%s", s[i].type);
                    printf("修改成功!\n");
                    break;
                default:
                    printf("无效操作!\n");
            }
            break;
        }
    }
    if(i == size){
        printf("未找到该歌手!\n");
    }
}

查询歌手列表

系统可以显示所有歌手的列表,以供用户查看。

以下是一个示例代码:

void show_singer_list(Singer s[], int size){
    printf("姓名\t编号\t性别\t流派\n");
    for(int i=0;i<size;i++){
        printf("%s\t%d\t%s\t%s\n", s[i].name, s[i].id, s[i].gender, s[i].type);
    }
}

歌手评分

用户可以为某个歌手进行评分,评分完成后,会计算出该歌手的总分并保存到系统中。

以下是一个示例代码:

void rate_singer(Singer s[], int size, int id){
    for(int i=0;i<size;i++){
        if(s[i].id == id){
            printf("请输入评分:");
            scanf("%f", &s[i].score[s[i].sumscore]);  // 将用户输入的评分保存到数组中
            s[i].sumscore += s[i].score[s[i].sumscore];  // 计算总分
            printf("评分成功!\n");
            break;
        }
    }
}

步骤三:实现排名功能

在完成基本功能后,可以根据歌手的总分来实现排名功能。以下是具体实现步骤:

计算总分

在每次评分完成后,更新歌手的总分。

以下是一个示例代码:

void calculate_total_score(Singer s[], int size){
    for(int i=0;i<size;i++){
        s[i].sumscore = 0.0;
        for(int j=0;j<10;j++){
            s[i].sumscore += s[i].score[j];
        }
    }
}

排名

根据歌手的总分来进行排名,可以使用冒泡排序来实现。

以下是一个示例代码:

void sort_singer(Singer s[], int size){
    for(int i=0;i<size-1;i++){
        for(int j=0;j<size-i-1;j++){
            if(s[i].sumscore > s[j].sumscore){
                Singer temp = s[i];
                s[i] = s[j];
                s[j] = temp;
            }
        }
    }
}

示例说明

以下是具体使用示例:

示例一:添加歌手

Singer singers[10];
int size = 0;

add_singer(singers, size);

示例二:评分并显示排名

Singer singers[10];
int size = 0;

// 添加歌手
add_singer(singers, size);
add_singer(singers, size);

// 评分
rate_singer(singers, size, 1);
rate_singer(singers, size, 2);

// 排名
calculate_total_score(singers, size);
sort_singer(singers, size);

// 显示排名
show_singer_list(singers, size);

结论

通过以上步骤,我们可以实现一个基本的歌手比赛系统,并且可以根据总分来进行排名,具有一定实用价值。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C语言实现歌手比赛系统 - Python技术站

(0)
上一篇 2023年5月23日
下一篇 2023年5月23日

相关文章

  • C++实现小型图书管理系统

    C++实现小型图书管理系统攻略 1. 系统设计 图书管理系统主要包含以下功能:- 添加书籍- 删除书籍- 查询书籍信息- 修改书籍信息- 显示所有书籍 因此,我们可以设计一个Book类来表示一本书籍,其中包含以下属性:- 书名- 作者- 出版社- ISBN编号- 价格 下面是Book类的定义: class Book { public: string name…

    C 2023年5月23日
    00
  • 详解iOS通过ASIHTTPRequest提交JSON数据

    下面是详解iOS通过ASIHTTPRequest提交JSON数据的完整攻略: 1. 准备工作 在使用ASIHTTPRequest来提交JSON数据之前,需要先将ASIHTTPRequest集成到项目中。可以使用CocoaPods或手动下载并导入ASIHTTPRequest文件夹。 2. 导入ASIHTTPRequest头文件 在需要使用ASIHTTPRequ…

    C 2023年5月23日
    00
  • 详解C++编程中的输入输相关的类和对象

    详解C++编程中的输入输出相关的类和对象 在C++语言中,有关输入输出流的操作由iostream库提供支持。iostream库中包括了三个类:istream、ostream和iostream,其中istream用于读取输入流,ostream用于输出流,而iostream继承了这两个类的所有方法,既可以用来读取输入流,也可以用来输出流。C++中还有一些常用的输…

    C 2023年5月22日
    00
  • c语言之如何求e的近似值

    C语言如何求e的近似值 简介 e是数学中一个常用的数,它的值约为2.71828。如何用C语言求e的近似值是一个常见的问题。其中,众所周知的方法之一是用泰勒级数来求解。本文将详细介绍如何使用泰勒级数来计算e的近似值并提供两个示例。 泰勒级数 泰勒级数是一种数学方法,用于将一个函数表示成多项式的形式。基于e^x的泰勒级数公式: e^x = 1 + x + x^2…

    C 2023年5月23日
    00
  • Java实现生成JSON字符串的三种方式分享

    以下是 “Java实现生成JSON字符串的三种方式分享” 的完整攻略: 一、使用Java的JSONObject实现 在Java中,可以使用JSONObject类来生成JSON字符串,该类定义了用于创建和操作JSON对象的方法。下面是一个示例: import org.json.*; public class JSONDemo { public static v…

    C 2023年5月23日
    00
  • json与jsonp知识小结(推荐)

    让我来为您详细讲解“json与jsonp知识小结(推荐)”的完整攻略。 1. 什么是 JSON JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它基于 JavaScript的对象语法。它有如下几个特点: JSON是一种文本格式,可以轻松地在网络上传输。 JSON的语法和JavaScript的语法几乎相同,因此易读易…

    C 2023年5月23日
    00
  • 详解vs2022创建及调用.lib的方法

    下面是详解vs2022创建及调用.lib的方法。 1. 创建.lib文件 1.1 在Visual Studio 2022中创建新项目 打开Visual Studio 2022,点击“文件”菜单,选择“新建”和“项目”。 在“新建项目”窗口中,选择“Visual C++” -> “Windows桌面” -> “空项目”。然后为项目命名,例如“Dem…

    C 2023年5月23日
    00
  • C语言魔塔游戏的实现代码

    下面详细讲解一下C语言魔塔游戏的实现代码的攻略。 一、准备工作 安装开发环境需要在计算机上安装C语言开发环境,比如Visual Studio、Code::Blocks等。 了解游戏规则在编写代码之前,需要了解魔塔游戏的规则和玩法。 二、游戏地图设计 设置地图的大小和格子可以使用二维数组来表示地图,数组的行和列表示地图的大小,数组中的每个元素表示地图中的一个格…

    C 2023年5月24日
    00
合作推广
合作推广
分享本页
返回顶部