C语言实现投票系统

C语言实现投票系统攻略

本文将介绍如何使用C语言实现一个简单的投票系统,通过本教程您将学到如下内容:
1. 如何使用C语言创建一个控制台程序;
2. 如何定义结构体,并对其进行增删改查操作;
3. 如何进行用户输入并根据不同的选项实现不同的功能;
4. 如何进行文件读写,实现数据的持久化存储。

1. 创建C语言控制台程序

在使用C语言创建控制台程序之前,需要先安装相应的集成开发环境(IDE),例如Visual Studio、CodeBlocks、Dev-C++等等。

  1. 打开IDE。
  2. 选择“创建一个新的项目”或“创建一个新的工程”,选择“控制台应用程序”。
  3. 设置项目的名称和存储路径等信息,创建项目。
  4. 选择“新建源文件”,创建源文件(后缀名为.c),在该文件中进行代码编写即可。

2. 定义结构体并进行增删改查操作

投票系统中最重要的数据结构是候选人信息,因此首先需要定义一个候选人的结构体。

typedef struct Candidate {
    char name[20];  // 候选人姓名
    int count;      // 候选人得票数
} Candidate;

接下来,我们将定义一些操作函数对候选人的信息进行增删改查。

  • 增:添加一个新的候选人
void add_candidate(Candidate * candidates, int * total_num) {
    printf("请输入新候选人的姓名:");
    char name[20];
    scanf("%s", name);
    strcpy(candidates[*total_num].name, name);
    candidates[*total_num].count = 0;
    (*total_num)++;
    printf("候选人添加成功!\n");
}
  • 删:根据候选人的姓名删除对应的候选人
void delete_candidate(Candidate * candidates, int * total_num) {
    printf("请输入要删除候选人的姓名:");
    char name[20];
    scanf("%s", name);
    for (int i = 0; i < *total_num; i++) {
        if (strcmp(candidates[i].name, name) == 0) {
            for (int j = i; j < (*total_num) - 1; j++) {
                candidates[j] = candidates[j + 1];
            }
            (*total_num)--;
            printf("候选人删除成功!\n");
            return;
        }
    }
    printf("没有找到该候选人,删除失败!\n");
}
  • 改:根据候选人的姓名修改对应的候选人信息
void modify_candidate(Candidate * candidates, int total_num) {
    printf("请输入要修改候选人的姓名:");
    char name[20];
    scanf("%s", name);
    for (int i = 0; i < total_num; i++) {
        if (strcmp(candidates[i].name, name) == 0) {
            printf("请输入修改后的得票数:");
            int count;
            scanf("%d", &count);
            candidates[i].count = count;
            printf("候选人信息修改成功!\n");
            return;
        }
    }
    printf("没有找到该候选人,修改失败!\n");
}
  • 查:列出当前所有候选人的信息
void show_candidates(Candidate * candidates, int total_num) {
    printf("==============================\n");
    printf("姓名\t\t得票数\n");
    for (int i = 0; i < total_num; i++) {
        printf("%s\t\t%d\n", candidates[i].name, candidates[i].count);
    }
    printf("==============================\n");
}

3. 进行用户输入并根据不同的选项实现不同的功能

首先,我们需要定义一个主函数,用于初始化数据、调用各种操作函数,以及处理用户输入。

int main() {
    Candidate candidates[20];
    int total_num = 0;
    init_candidates(candidates, &total_num);  // 从文件中读取数据,初始化候选人信息
    while (1) {
        printf("请选择操作类型:\n");
        printf("1.添加候选人\n2.删除候选人\n3.修改候选人得票数\n4.查看候选人信息\n5.退出程序\n操作类型:");
        int option;
        scanf("%d", &option);
        switch (option) {
            case 1:
                add_candidate(candidates, &total_num);
                save_candidates(candidates, total_num);  // 将数据保存至文件
                break;
            case 2:
                delete_candidate(candidates, &total_num);
                save_candidates(candidates, total_num);
                break;
            case 3:
                modify_candidate(candidates, total_num);
                save_candidates(candidates, total_num);
                break;
            case 4:
                show_candidates(candidates, total_num);
                break;
            case 5:
                save_candidates(candidates, total_num);
                return 0;
            default:
                printf("输入的操作类型有误,请重新输入!\n");
                break;
        }
    }
    return 0;
}

4. 进行文件读写,实现数据的持久化存储

为了保证数据的持久化存储,我们将候选人信息保存到文件中。首先,我们编写一个函数用于从文件中读取数据,初始化候选人信息。

void init_candidates(Candidate * candidates, int * total_num) {
    FILE * fp = fopen("candidates.dat", "rb");
    if (fp == NULL) {
        printf("无法读取数据文件!\n");
        return;
    }
    while (fread(&(candidates[*total_num]), sizeof(Candidate), 1, fp) == 1) {
        (*total_num)++;
    }
    fclose(fp);
    printf("候选人信息初始化成功!\n");
}

接下来,我们编写一个函数用于将候选人信息保存到文件中。

void save_candidates(Candidate * candidates, int total_num) {
    FILE * fp = fopen("candidates.dat", "wb");
    if (fp == NULL) {
        printf("文件打开失败!\n");
        return;
    }
    for (int i = 0; i < total_num; i++) {
        fwrite(&(candidates[i]), sizeof(Candidate), 1, fp);
    }
    fclose(fp);
    printf("候选人信息保存成功!\n");
}

至此,C语言实现投票系统的攻略就介绍完毕了。在实际应用中,还有很多细节需要考虑,例如数据的输入、处理异常等等。但是掌握了以上基本操作,相信您已经可以完成一个简单的投票系统了。

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

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

相关文章

  • win10快捷方式图标异常怎么办?

    当win10快捷方式图标异常时,可以尝试以下解决方法: 方法一:重新建立图标缓存 按下Win + R键组合键打开运行窗口,输入cmd,按下Ctrl+Shift+Enter组合键,以管理员身份运行命令提示符。 在命令提示符窗口中,输入以下命令并按下回车键:taskkill /f /im explorer.exe。 等待至桌面中的所有图标消失,继续在命令提示符窗…

    C 2023年5月23日
    00
  • BYC币怎么样?BYC/币缘币还值得投资吗

    BYC币的基本概念 BYC币,全名为币缘币(Bytecoin),是一种匿名、去中心化、开源的数字货币。它于2012年创立,是第一代公开发行的隐私币之一。相比于比特币,BYC币主张保护交易者的隐私,并提供更快的交易确认速度和更低的交易费用。 BYC币的投资价值分析 优点 高度保护隐私:BYC币使用了加密技术和混淆账户的方法,可以有效保护交易者的个人隐私。 去中…

    C 2023年5月23日
    00
  • C#命令行编译器配置方法

    下面是详细的C#命令行编译器配置攻略: 1. 下载.NET Core SDK 在开始配置之前,需要确保已经安装了.NET Core SDK。如果没有安装,可以前往 官方网站 下载并安装。 2. 配置PATH环境变量 在打开命令行终端之前,需要先配置PATH环境变量,这样系统才能找到编译器的安装路径。 Windows 用户可以这样操作: 打开“控制面板” -&…

    C 2023年5月23日
    00
  • C 命令行参数

    当我们编写一个C程序并通过命令行运行时,我们可以通过命令行选项来传递程序所需要的参数。这个过程就是命令行参数的使用。 命令行参数的格式 在命令行中,要为程序提供参数必须遵守以下的规则: program_name [options] [arguments] 其中,program_name 表示要执行的程序名,options 表示选项,arguments 表示参…

    C 2023年5月10日
    00
  • C++第三方日志库Glog的安装与使用介绍

    下面是关于C++第三方日志库Glog的安装与使用介绍的完整攻略: 安装Glog 系统要求 安装Glog前,你需要拥有以下环境: 操作系统:Ubuntu/Debian或CentOS/RHEL 编译器:GCC 4.8或更高版本 步骤 下载安装依赖库 Glog依赖于很多库,需要先下载安装: Ubuntu/Debian: sudo apt-get install a…

    C 2023年5月23日
    00
  • C语言实现返回字符串函数的四种方法

    下面为你详细展开C语言实现返回字符串函数的四种方法的完整攻略。 1. 使用字符串指针 步骤: 定义一个函数,函数返回值为 char * 类型,表示返回一个字符串指针; 在函数内部申请一个指针指向堆内存区域,并在该区域中保存返回的字符串; 返回指针。 示例: #include <stdio.h> #include <stdlib.h> …

    C 2023年5月23日
    00
  • C语言实现银行管理系统

    C语言实现银行管理系统攻略 一、概述 银行管理系统是一个功能庞大的系统,它需要处理各种业务:账户管理、存款、取款、转账、查询等。用C语言实现这样一个系统需要有一定的编程基础和算法设计能力。下面是C语言实现银行管理系统的攻略。 二、系统设计 2.1 数据结构 一个银行管理系统需要存储的数据包括:账户信息、金额信息、转账信息等。下面是一个简单的数据结构,用于存储…

    C 2023年5月23日
    00
  • C语言传递空指针

    C语言传递空指针的完整使用攻略 在C语言中可以传递空指针,即指针指向的地址为NULL。下面将详细讲解如何在C语言中传递空指针。 1.传递空指针 在C语言中,传递空指针只需将指针变量赋值为NULL即可: int* ptr = NULL; 2.判断空指针 在使用传递的指针变量时,需要先进行空指针判断,否则程序将会出现问题。判断空指针方法如下: if (ptr =…

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