班级投票系统
这是一个用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
:学生数据
注意事项
- 每个姓名只能投票一次
- 候选人数量上限为10人
- 学生数量上限为100人
- 程序退出时会自动保存数据
- 支持中文姓名输入
示例使用流程
- 启动程序
- 选择
1
添加候选人(如:班长、副班长、学习委员) - 选择
2
添加学生信息(输入姓名) - 选择
3
进行投票(输入姓名,选择候选人) - 选择
4
或5
查看投票结果 - 选择
6
退出系统
快速开始
bash
# 1. 编译程序
gcc voting_system.c -o voting_system
# 2. 运行程序
voting_system
# 3. 按提示操作即可
这个系统非常适合用于班级内部的民主投票活动,如班干部选举、活动投票等。
