C语言做的班级投票系统

班级投票系统

这是一个用C语言实现的班级投票系统,支持实名制投票和实时结果显示。

功能特点

  • ✅ 设置投票选项:支持添加多个候选人(如班干部竞选)
  • ✅ 实名制投票:通过姓名验证确保一人一票
  • ✅ 实时显示票数:以表格形式显示详细投票结果
  • ✅ 柱状图显示:用字符界面显示投票结果柱状图
  • ✅ 数据持久化:自动保存投票数据到文件
  • ✅ 输入验证:严格的姓名验证和重复投票检查

系统要求

  • Windows操作系统
  • GCC编译器
  • 支持中文显示的控制台

编译和运行

方法1:简单编译(推荐)

bash 复制代码
# 编译程序
gcc voting_system.c -o voting_system

# 运行程序
voting_system

方法2:使用Makefile

bash 复制代码
# 编译程序
make

# 运行程序
make run

# 清理文件
make clean

使用说明

1. 设置投票选项

  • 选择菜单选项 1
  • 输入候选人姓名
  • 系统会自动分配候选人编号

2. 添加学生信息

  • 选择菜单选项 2
  • 输入学生姓名
  • 系统会检查姓名是否重复

3. 进行投票

  • 选择菜单选项 3
  • 输入姓名进行身份验证
  • 选择要投票的候选人编号
  • 系统会检查是否已投票

4. 查看投票结果

  • 选择菜单选项 4
  • 显示详细的投票统计表格
  • 包含票数和百分比信息

5. 显示柱状图

  • 选择菜单选项 5
  • 以字符柱状图形式显示投票结果
  • 直观展示各候选人得票情况

数据结构

候选人结构体 (Candidate)

c 复制代码
typedef struct {
    char name[MAX_NAME_LENGTH];  // 候选人姓名
    int votes;                   // 得票数
    int id;                      // 候选人编号
} Candidate;

学生结构体 (Student)

c 复制代码
typedef struct {
    char student_id[STUDENT_ID_LENGTH];  // 学号(保留字段)
    char name[MAX_NAME_LENGTH];          // 学生姓名
    int has_voted;                       // 是否已投票
} Student;

知识点覆盖

  • 数组统计:使用数组存储候选人票数和学生信息
  • 输入验证:姓名验证、重复投票检查
  • 文件操作:二进制文件读写保存数据
  • 字符串处理:姓名比较、存储
  • 结构体应用:定义和使用复杂数据结构
  • 菜单系统:用户友好的交互界面

数据文件

系统会自动创建以下数据文件:

  • candidates.dat:候选人数据
  • students.dat:学生数据

注意事项

  1. 每个姓名只能投票一次
  2. 候选人数量上限为10人
  3. 学生数量上限为100人
  4. 程序退出时会自动保存数据
  5. 支持中文姓名输入

示例使用流程

  1. 启动程序
  2. 选择 1 添加候选人(如:班长、副班长、学习委员)
  3. 选择 2 添加学生信息(输入姓名)
  4. 选择 3 进行投票(输入姓名,选择候选人)
  5. 选择 4 或 5 查看投票结果
  6. 选择 6 退出系统

快速开始

bash 复制代码
# 1. 编译程序
gcc voting_system.c -o voting_system

# 2. 运行程序
voting_system

# 3. 按提示操作即可

这个系统非常适合用于班级内部的民主投票活动,如班干部选举、活动投票等。

相关推荐
揽星河..5 小时前
【C语言】指针
c语言·开发语言
蹊黎19 小时前
Linux 下用 C 语言实现进度条
linux·c语言·单片机
爱聊灵光的维C1 天前
从看见世界到重构认知:在视觉与硬件的交汇处,寻找我们这代人的北极星
c语言·物联网·计算机视觉·重构·硬件工程·射频工程
AI+程序员在路上1 天前
RV1126B 上支持的模型及全流程应用--从CNN及语音到 LLMVLM 与跨平台选型
linux·c语言·人工智能
揽星河..1 天前
【C语言】扫雷游戏
c语言·算法·游戏
冻柠檬飞冰走茶1 天前
PTA刷题集之Airline Routes(C语言实现)
c语言·开发语言·数据结构·算法
冻柠檬飞冰走茶1 天前
PTA刷题集之Battle Over Cities - Hard Version(C语言实现)
c语言·开发语言·数据结构·算法
Lxx_Zw1 天前
串口命令如何从字符串长成协议:帧头、长度、校验和与状态机
c语言·stm32·单片机·嵌入式硬件
wuminyu1 天前
JVM执行引擎学习总结:热点字节码编译成本地机器码
java·linux·c语言·jvm·c++
佳得动1 天前
编译和链接的认识(C语言)
c语言·开发语言