Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình C

Chương trình bầu cử trong C: bỏ phiếu, đếm phiếu, switch-case và hàm

Mô tả bài toán

Mô phỏng hệ thống bầu cử đơn giản: 3 ứng cử viên, người dùng có thể bỏ phiếu, xem thống kê, thoát. Sử dụng hàm, biến toàn cục, switch-case và menu lặp.

Thiết kế chương trình

  • 3 ứng cử viên: ABC, XYZ, PQR
  • Tùy chọn "Không ai" (None of These)
  • Biến toàn cục lưu số phiếu từng ứng viên
  • Hàm boPhieu(), thongKe()
  • Menu chính trong main() với do-while

Chương trình C

#include <stdio.h>

#define SO_UNG_CU_VIEN 3
#define UC1 "ABC"
#define UC2 "XYZ"
#define UC3 "PQR"

int phieu1 = 0, phieu2 = 0, phieu3 = 0;

// Hàm bỏ phiếu
void boPhieu() {
    int luaChon;
    
    printf("\n### VUI LONG CHON UNG CU VIEN ###\n\n");
    printf("1. %s\n", UC1);
    printf("2. %s\n", UC2);
    printf("3. %s\n", UC3);
    printf("4. Khong ai\n");
    printf("Lua chon cua ban (1-4): ");
    scanf("%d", &luaChon);
    
    switch (luaChon) {
        case 1: phieu1++; break;
        case 2: phieu2++; break;
        case 3: phieu3++; break;
        default:
            printf("\nLua chon khong hop le! Vui long thu lai.\n");
            while (getchar() != '\n');  // Xử lý buffer
            return;
    }
    
    printf("\nCam on ban da bo phieu!\n");
}

// Hàm hiển thị thống kê
void thongKe() {
    printf("\n### THONG KE KET QUA BAU CU ###\n");
    printf("%s - %d phieu\n", UC1, phieu1);
    printf("%s - %d phieu\n", UC2, phieu2);
    printf("%s - %d phieu\n", UC3, phieu3);
    printf("Tong so phieu: %d\n", phieu1 + phieu2 + phieu3);
}

int main() {
    int luaChon;
    
    do {
        printf("\n=== HE THONG BAU CU 2024 ===\n");
        printf("1. Bo phieu\n");
        printf("2. Xem thong ke\n");
        printf("0. Thoat\n");
        printf("Lua chon: ");
        scanf("%d", &luaChon);
        
        switch (luaChon) {
            case 1: boPhieu(); break;
            case 2: thongKe(); break;
            case 0: printf("Tam biet!\n"); break;
            default: printf("Lua chon khong hop le!\n");
        }
    } while (luaChon != 0);
    
    return 0;
}

Kết quả chạy chương trình

=== HE THONG BAU CU 2024 ===
1. Bo phieu
2. Xem thong ke
0. Thoat
Lua chon: 1

### VUI LONG CHON UNG CU VIEN ###
1. ABC
2. XYZ
3. PQR
4. Khong ai
Lua chon cua ban (1-4): 1

Cam on ban da bo phieu!

=== HE THONG BAU CU 2024 ===
Lua chon: 1
... (bỏ phiếu lần 2 cho ABC)

=== HE THONG BAU CU 2024 ===
Lua chon: 2

### THONG KE KET QUA BAU CU ###
ABC - 2 phieu
XYZ - 0 phieu
PQR - 0 phieu
Tong so phieu: 2

Phân tích cấu trúc

Thành phần Vai trò
Biến toàn cục (phieu1,2,3)Lưu trạng thái phiếu, truy cập được từ mọi hàm
#define hằng sốDễ thay đổi tên ứng viên, số lượng
Hàm boPhieu()Tách logic bỏ phiếu, tái sử dụng được
Hàm thongKe()Tách logic hiển thị, dễ mở rộng (sắp xếp, %)
do-while trong mainMenu lặp lại cho đến khi chọn 0
switch-caseXử lý lựa chọn rõ ràng, hiệu quả

Mở rộng nâng cao

  • Kiểm tra trùng lặp: mỗi người chỉ bỏ 1 lần (yêu cầu ID/token)
  • Tính phần trăm phiếu: (float)phieu1/tong*100
  • Xác định người thắng: so sánh 3 biến phiếu
  • Lưu kết quả ra file
  • Giao diện đồ họa (ncurses) hoặc web (CGI)

Chương trình minh họa tư duy modular (module hóa): tách chức năng thành hàm, dùng biến toàn cục chia sẻ trạng thái, switch-case điều khiển luồng.