Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

โปรแกรม C++ เก็บข้อมูลนักเรียนโดยใช้การซ่อนข้อมูลและการห่อหุ้ม


สมมติว่าเราต้องการสร้างประเภทข้อมูลของนักเรียนด้วยการซ่อนข้อมูลและการห่อหุ้ม นักเรียนต้องมี first_name,last_name, age และ class แต่จะไม่สามารถเข้าถึงตัวแปรเหล่านี้ได้โดยตรง เราจะต้องกำหนดฟังก์ชันบางอย่าง เช่น get_firstname() set_firstname(), get_age() set_age() เป็นต้น เพื่อดึงและอัปเดตค่าตัวแปร และฟังก์ชัน to_string() เพื่อแสดงรายละเอียดของนักเรียนในรูปแบบนี้ (age, first_name, last_name, class ). จากคอนโซลใช้พารามิเตอร์สี่ตัวเป็นอินพุตและตั้งค่าโดยใช้เมธอด setter ที่เรากำหนดไว้ และแสดงรายการแต่ละรายการโดยใช้เมธอด getter และสุดท้ายใช้เมธอด to_string()

ดังนั้นหากอินพุตเป็นแบบ

priyam
kundu
16
10

แล้วผลลัพธ์ที่ได้จะเป็น

16
priyam
kundu
10

(16, priyam, kundu, 10)

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • กำหนดคลาสด้วย first_name, last_name ของประเภท string และ age, cl ของประเภท integer

  • กำหนดฟังก์ชัน getter สำหรับแอตทริบิวต์ทั้งหมด

  • กำหนดฟังก์ชัน setter สำหรับแอตทริบิวต์ทั้งหมด

  • กำหนดฟังก์ชัน to_string() โดยใช้ออบเจกต์ string-stream และสร้างสตริงที่จัดรูปแบบที่ตรงกับรูปแบบเอาต์พุต

  • จากวิธีหลัก ให้ทำดังต่อไปนี้ −

  • อ่านแต่ละบรรทัดแล้วเก็บ first_name,last_name, age, cl ตามลำดับ

  • เรียกฟังก์ชัน setter เพื่อตั้งค่าเหล่านี้ให้กับสมาชิกคลาส

  • พิมพ์แอตทริบิวต์ทั้งหมดโดยใช้วิธีการรับ;

  • แสดงข้อมูลนักเรียนในรูปแบบนี้ (อายุ ชื่อจริง นามสกุล cl) โดยใช้ฟังก์ชัน to_string()

ตัวอย่าง

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

#include <iostream>
#include <sstream>
using namespace std;
class Student{
    private:
    int age, cl;
    string first_name, last_name;
    public:
    int get_age(){return age;}
    int get_class(){return cl;}
    string get_firstname(){return first_name;}
    string get_lastname(){return last_name;}
    void set_age(int a){age = a;}
    void set_class(int c){cl = c;}
    void set_firstname(string fn){first_name = fn;}
    void set_lastname(string ln){last_name = ln;}
    string to_string(){
        stringstream ss;
        ss << "(" << age << ", " << first_name << ", " << last_name << ", " << cl << ")";
       
        return ss.str();
    }
};
int main() {
    Student stud;
    int age, cl;
    string first_name, last_name;
    cin >> first_name >> last_name >> age >> cl;
    stud.set_age(age);
    stud.set_class(cl);
    stud.set_firstname(first_name);
    stud.set_lastname(last_name);
    cout << stud.get_age() << endl;
    cout << stud.get_firstname() << endl;
    cout << stud.get_lastname() << endl;
    cout << stud.get_class() << endl;
    cout << endl << stud.to_string();
}

อินพุต

priyam
kundu
16
10

ผลลัพธ์

16
priyam
kundu
10

(16, priyam, kundu, 10)