Xây dựng lớp điểm trong c++

Đề bài: Viết chương trình quản lý sinh viên trong C/C++. Mỗi đối tượng sinh viên có các thuộc tính sau: id, tên, giới tính, tuổi, điểm toán, điểm lý, điểm hóa, điểm trung bình và học lực.

Id là mã sinh viên tự động tăng.

Khi khởi tạo, chương trình sẽ đọc file "student.txt" để lấy ra danh sách sinh viên đã được lưu trước đó.

Điểm trung bình là giá trị trung bình của 3 môn toán, lý và hóa.

Học lực được tính như sau:

  • Giỏi: nếu điểm trung bình lớn hơn hoặc bằng 8.
  • Khá: nếu điểm trung bình nhỏ hơn 8 và lớn hơn hoặc bằng 6.5.
  • Trung Bình: nếu điểm trung bình nhỏ hơn 6.5 và lớn hơn hoặc bằng 5.
  • Yếu: nếu điểm trung bình nhỏ hơn 5.

Yêu cầu: tạo ra một menu với các chức năng sau:

  • 1. Thêm sinh viên.
  • 2. Cập nhật thông tin sinh viên bởi ID.
  • 3. Xóa sinh viên bởi ID.
  • 4. Tìm kiếm sinh viên theo tên.
  • 5. Sắp xếp sinh viên theo điểm trung bình [GPA].
  • 6. Sắp xếp sinh viên theo tên.
  • 7. Hiển thị danh sách sinh vien.
  • 8. Ghi danh sách sinh viên vào file "student.txt" .


Lời giải

Chúng ta sẽ sử dụng struct để định nghĩa một cấu trúc sinh viên, và một mảng struct để lưu trữ danh sách sinh viên. Sau đây là các bước cụ thể để cài đặt chương trình quản lý sinh viên trong C/C++ bằng struct.

Tạo cấu trúc sinh vien

Chúng ta sẽ tạo một cấu trúc sinh viên như sau, diemTB sẽ được tính bằng trung bình của các môn toán, lý và hóa. hocluc sẽ được tính toán dựa vào diemTB như yêu cầu của bài toán.

struct SinhVien {
    int id;
    char ten[30];
    char gioiTinh[5];
    int tuoi;
    float diemToan;
    float diemLy;
    float diemHoa;
    float diemTB = 0;
    char hocluc[10] = "-";
};

Bây giờ chúng ta có thể sử dụng struct SinhVien với đơn giản hơn bằng SV với từ khóa

void printLine[int n];
int idLonNhat[SV a[], int n];
void nhapThongTinSV[SV &sv, int id];
void nhapSV[SV a[], int id, int n];
void capNhatThongTinSV[SV &sv];
void capNhatSV[SV a[], int id, int n];
int xoaTheoID[SV a[], int id, int n];
void timKiemTheoTen[SV a[], char ten[], int n];
void tinhDTB[SV &sv];
void xeploai[SV &sv];
void sapxepTheoDTB[SV a[], int n];
void sapXepTheoTen[SV a[], int n];
void showStudent[SV a[], int n];
int docFile[SV a[], char fileName[]];
void ghiFile[SV a[], int n, char fileName[]];
void pressAnyKey[];
0, như sau:

typedef SinhVien SV;


Định nghĩa các hàm

Sau đây là danh sách các hàm mà chúng ta sẽ sử dụng trong chương trình quản lý sinh viên, các hàm này sẽ được cung cấp thân hàm sau đó:

void printLine[int n];
int idLonNhat[SV a[], int n];
void nhapThongTinSV[SV &sv, int id];
void nhapSV[SV a[], int id, int n];
void capNhatThongTinSV[SV &sv];
void capNhatSV[SV a[], int id, int n];
int xoaTheoID[SV a[], int id, int n];
void timKiemTheoTen[SV a[], char ten[], int n];
void tinhDTB[SV &sv];
void xeploai[SV &sv];
void sapxepTheoDTB[SV a[], int n];
void sapXepTheoTen[SV a[], int n];
void showStudent[SV a[], int n];
int docFile[SV a[], char fileName[]];
void ghiFile[SV a[], int n, char fileName[]];
void pressAnyKey[];

1. Hàm printLine[int n]

Hàm này in ra một dòng có n ký tự "_".

Tham số:

  • n: là số ký tự "_" sẽ được in ra màn hình.

Thân hàm printLine[]:

void printLine[int n] {
    cout  sv.diemLy;
    cout > sv.diemHoa;
    sv.id = id;
    tinhDTB[sv];
    xeploai[sv];
}

Thân hàm nhapSV[]:

void nhapSV[SV a[], int id, int n] {
    printLine[40];
    printf["\n Nhap sinh vien thu %d:", n + 1];
    nhapThongTinSV[a[n], id];
    printLine[40];
}


4. Hàm cập nhật thông tin sinh viên

Hàm này được sử dụng để cập nhật thông tin sinh viên theo ID. Với hàm này chúng ta sẽ tách ra thành 2 hàm sau:

  • void capNhatThongTinSV[SV &sv].
  • void capNhatSV[SV a[], int id, int n].

Tham số:

  • &sv: nhập thông tin sinh viên sv. Sử dụng tham chiếu &, tức là thông tin sẽ được thay đổi cả bên trong và bên ngoài hàm.
  • a[]: là danh sách sinh viên.
  • id: là id [tự động tăng] của sinh viên.
  • n: là số lượng sinh viên có trong danh sách.

Thân hàm capNhatThongTinSV[]:

void capNhatThongTinSV[SV &sv] {
    cout  sv.diemToan;
    cout > sv.diemLy;
    cout > sv.diemHoa;
    tinhDTB[sv];
    xeploai[sv];
}

Thân hàm capNhatSV[]:

void capNhatSV[SV a[], int id, int n] {
    int found = 0;
    for[int i = 0; i < n; i++] {
        if [a[i].id == id] {
            found = 1;
            printLine[40];
            cout 

Chủ Đề