Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk menulis sistem pengundian mudah dalam C++?

Bagaimana untuk menulis sistem pengundian mudah dalam C++?

王林
王林asal
2023-11-04 11:24:111060semak imbas

Bagaimana untuk menulis sistem pengundian mudah dalam C++?

Bagaimana cara menulis sistem pengundian mudah dalam C++?

Dengan perkembangan teknologi, sistem pengundian telah menjadi alat yang digunakan secara meluas dalam masyarakat moden. Sistem pengundian boleh digunakan dalam banyak senario seperti pilihan raya, tinjauan dan membuat keputusan. Artikel ini akan menunjukkan kepada anda cara menulis sistem pengundian mudah dalam C++.

Pertama, kita perlu menjelaskan fungsi asas sistem pengundian. Sistem pengundian yang mudah harus mempunyai ciri-ciri berikut:

  1. Pengundi Berdaftar: Sistem ini harus membenarkan pengguna mendaftar sebagai pemilih supaya mereka boleh mengambil bahagian dalam mengundi.
  2. Buat Tinjauan: Sistem harus membenarkan pentadbir membuat tinjauan pendapat dan memberikan ID unik kepada setiap tinjauan pendapat.
  3. Pilihan Penyiaran: Untuk setiap tinjauan pendapat, pentadbir sepatutnya boleh menambah pilihan calon.
  4. Mendapat tinjauan pendapat: Pengundi berdaftar seharusnya boleh memilih tinjauan pendapat tertentu dan mengundinya.
  5. Kira keputusan undian: Sistem sepatutnya boleh mengira keputusan undian setiap undi dan meletakkannya berdasarkan keputusan.

Dengan fungsi asas di atas jelas, kita boleh mula menulis sistem pengundian.

Pertama, kita perlu wujudkan kelas Pengundi untuk mewakili pengundi. Kelas ini harus mengandungi maklumat asas seperti nama pengundi, umur, jantina, dsb., dan mempunyai kaedah untuk mendaftar dan menentukan sama ada pengundi telah mengundi.

Seterusnya, kami mewujudkan kelas Undi untuk mewakili pengundian. Kelas ini harus mengandungi nama tinjauan pendapat, ID, pilihan calon dan pembolehubah untuk menyimpan bilangan undian bagi setiap pilihan. Kelas Undi juga harus mempunyai kaedah untuk menambah pilihan calon dan mengira keputusan pengundian.

Kemudian, kami mencipta kelas Sistem Pengundian untuk menguruskan sistem pengundian. Kelas ini harus mengandungi vektor yang menyimpan semua undi dan menyediakan kaedah untuk mendaftar pemilih, mencipta undi, menambah pilihan calon, membuang undi dan mengira keputusan undi.

Akhir sekali, kami berinteraksi dengan pengguna melalui antara muka konsol mudah untuk melaksanakan fungsi sistem pengundian.

Berikut adalah contoh mudah:

#include <iostream>
#include <vector>

using namespace std;

// Voter class
class Voter {
    string name;
    int age;
    string gender;
    bool voted;

public:
    Voter(string n, int a, string g) {
        name = n;
        age = a;
        gender = g;
        voted = false;
    }

    bool hasVoted() {
        return voted;
    }

    void setVoted() {
        voted = true;
    }
};

// Vote class
class Vote {
    string name;
    int id;
    vector<string> candidates;
    vector<int> votes;

public:
    Vote(string n, int i) {
        name = n;
        id = i;
    }

    void addCandidate(string candidate) {
        candidates.push_back(candidate);
        votes.push_back(0);
    }

    void castVote(int candidateIndex) {
        votes[candidateIndex]++;
    }

    void printResults() {
        for (int i = 0; i < candidates.size(); i++) {
            cout << candidates[i] << ": " << votes[i] << " votes" << endl;
        }
    }
};

// VotingSystem class
class VotingSystem {
    vector<Voter> voters;
    vector<Vote> votes;

public:
    void registerVoter(string name, int age, string gender) {
        Voter voter(name, age, gender);
        voters.push_back(voter);
    }

    void createVote(string name, int id) {
        Vote vote(name, id);
        votes.push_back(vote);
    }

    void addCandidate(int voteIndex, string candidate) {
        votes[voteIndex].addCandidate(candidate);
    }

    void castVote(int voteIndex, int candidateIndex, int voterIndex) {
        if (!voters[voterIndex].hasVoted()) {
            votes[voteIndex].castVote(candidateIndex);
            voters[voterIndex].setVoted();
        }
    }

    void printVoteResults(int voteIndex) {
        votes[voteIndex].printResults();
    }
};

int main() {
    VotingSystem votingSystem;

    // Register voters
    votingSystem.registerVoter("Alice", 25, "female");
    votingSystem.registerVoter("Bob", 30, "male");
    votingSystem.registerVoter("Charlie", 35, "male");

    // Create vote
    votingSystem.createVote("Favorite color", 1);

    // Add candidates
    votingSystem.addCandidate(0, "Red");
    votingSystem.addCandidate(0, "Blue");
    votingSystem.addCandidate(0, "Green");

    // Cast votes
    votingSystem.castVote(0, 0, 0);
    votingSystem.castVote(0, 1, 1);
    votingSystem.castVote(0, 0, 2);

    // Print vote results
    votingSystem.printVoteResults(0);

    return 0;
}

Di atas adalah contoh pelaksanaan sistem pengundian mudah. Dengan mencipta kelas Pengundi, Undi dan Sistem Pengundian, kami boleh melaksanakan fungsi seperti mendaftar pemilih, mencipta undi, menambah pilihan calon, mengundi dan mengira keputusan pengundian. Dalam fungsi utama, kami menunjukkan cara menggunakan fungsi ini untuk mencipta dan mengurus tinjauan pendapat. Output akan menunjukkan bilangan undi untuk setiap pilihan calon.

Melalui contoh di atas, kita dapat melihat cara menulis sistem pengundian yang mudah menggunakan bahasa C++. Sudah tentu, masih terdapat banyak ruang untuk penambahbaikan dalam contoh ini, seperti menambah pengesahan identiti pengundi, menyokong berbilang undi pada masa yang sama dan fungsi lain. Tetapi contoh ini sudah cukup untuk membantu anda memahami cara mula menulis sistem pengundian yang mudah.

Saya harap artikel ini dapat membantu anda, dan saya harap anda boleh menulis sistem pengundian yang sempurna!

Atas ialah kandungan terperinci Bagaimana untuk menulis sistem pengundian mudah dalam C++?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn