Lập trình

Chương trình quản lý sinh viên sử dụng struct trong lập trình C/C++

Huy Erick

Chương trình quản lý sinh viên là một bài tập khá phổ biến khi học lập trình. Trong bài viết này, chúng ta sẽ tìm hiểu cách sử dụng struct trong lập trình C/C++ để...

Chương trình quản lý sinh viên là một bài tập khá phổ biến khi học lập trình. Trong bài viết này, chúng ta sẽ tìm hiểu cách sử dụng struct trong lập trình C/C++ để xây dựng chương trình quản lý sinh viên.

Đặt vấn đề

Đầu tiên, chúng ta cần định nghĩa struct Sinh viên bao gồm các thông tin như tên sinh viên, quê quán, năm sinh và các điểm số môn học. Sau đó, chúng ta tiến hành nhập thông tin cho n sinh viên, tính điểm trung bình và in ra màn hình. Ngoài ra, chúng ta cũng có thể tìm kiếm sinh viên theo tên và sắp xếp danh sách sinh viên.

Xây dựng chương trình

Xây dựng struct Sinh viên

Đầu tiên, hãy xây dựng struct Sinh viên như sau:

struct SinhVien {
    char tenSinhVien[50];
    char queQuan[50];
    int namSinh;
    float diemToan;
    float diemLy;
    float diemHoa;
    float diemTrungBinh;
};

Xây dựng hàm nhập và tính điểm trung bình

Tiếp theo, chúng ta cần xây dựng hàm nhập thông tin cho n sinh viên và tính điểm trung bình trong quá trình nhập. Dưới đây là mã nguồn cho hai hàm này:

void nhapSinhVien(struct SinhVien *sv) {
    printf("Nhap ten sinh vien: ");
    scanf("%s", sv->tenSinhVien);
    printf("Nhap que quan: ");
    scanf("%s", sv->queQuan);
    printf("Nhap nam sinh: ");
    scanf("%d", &sv->namSinh);
    printf("Nhap diem toan: ");
    scanf("%f", &sv->diemToan);
    printf("Nhap diem ly: ");
    scanf("%f", &sv->diemLy);
    printf("Nhap diem hoa: ");
    scanf("%f", &sv->diemHoa);
    sv->diemTrungBinh = (sv->diemToan + sv->diemLy + sv->diemHoa) / 3;
}

void nhapDS_SinhVien(struct SinhVien ds[], int n) {
    for (int i = 0; i < n; i++) {
        printf("Nhap thong tin sinh vien thu %d:\n", i + 1);
        nhapSinhVien(&ds[i]);
    }
}

Xây dựng hàm xuất danh sách sinh viên

Sau khi đã nhập thông tin cho n sinh viên, chúng ta cần xây dựng hàm xuất danh sách sinh viên ra màn hình. Dưới đây là mã nguồn cho hàm này:

void xuatSinhVien(struct SinhVien sv) {
    printf("%-20s %-15s %-10d %-10.1f %-10.1f %-10.1f %-10.1f\n", sv.tenSinhVien, sv.queQuan, sv.namSinh, sv.diemToan, sv.diemLy, sv.diemHoa, sv.diemTrungBinh);
}

void xuatDS_SinhVien(struct SinhVien ds[], int n) {
    printf("%-20s %-15s %-10s %-10s %-10s %-10s %-10s\n", "Ten Sinh Vien", "Que Quan", "Nam Sinh", "Diem Toan", "Diem Ly", "Diem Hoa", "Diem Trung Binh");
    for (int i = 0; i < n; i++) {
        xuatSinhVien(ds[i]);
    }
}

Xây dựng hàm tìm kiếm sinh viên theo tên

Để tìm kiếm sinh viên trong danh sách theo tên, chúng ta có thể sử dụng hàm strcmp hoặc stricmp trong thư viện string.h. Dưới đây là mã nguồn cho hàm tìm kiếm:

void timKiemSinhVien(struct SinhVien ds[], int n, char ten[]) {
    int found = 0;
    for (int i = 0; i < n; i++) {
        if (strcmp(ds[i].tenSinhVien, ten) == 0) {
            xuatSinhVien(ds[i]);
            found = 1;
        }
    }
    if (!found) {
        printf("Khong tim thay sinh vien co ten la %s.\n", ten);
    }
}

Xây dựng hàm sắp xếp danh sách sinh viên

Chúng ta có thể sắp xếp danh sách sinh viên theo tên theo thứ tự từ điển. Dưới đây là mã nguồn cho hàm sắp xếp:

void sapXepSinhVien(struct SinhVien ds[], int n) {
    for (int i = 0; i < n - 1; i++) {
        for (int j = i + 1; j < n; j++) {
            if (strcmp(ds[i].tenSinhVien, ds[j].tenSinhVien) > 0) {
                struct SinhVien temp = ds[i];
                ds[i] = ds[j];
                ds[j] = temp;
            }
        }
    }
}

Hàm main

Trong hàm main, chúng ta khai báo biến n và một mảng ds để lưu trữ thông tin sinh viên. Dưới đây là mã nguồn cho hàm main:

int main() {
    int n;
    printf("Nhap so luong sinh vien: ");
    scanf("%d", &n);

    struct SinhVien ds[100];
    nhapDS_SinhVien(ds, n);

    printf("\nDanh sach sinh vien:\n");
    xuatDS_SinhVien(ds, n);

    char ten[50];
    printf("Nhap ten sinh vien can tim: ");
    scanf("%s", ten);
    timKiemSinhVien(ds, n, ten);

    sapXepSinhVien(ds, n);
    printf("\nDanh sach sinh vien sau khi sap xep theo ten:\n");
    xuatDS_SinhVien(ds, n);

    return 0;
}

Kết quả

Sau khi chạy chương trình, bạn sẽ nhận được kết quả tương tự như hình dưới đây:

Tổng kết

Bài viết đã hướng dẫn cách sử dụng struct trong lập trình C/C++ để xây dựng chương trình quản lý sinh viên. Chúng ta đã tìm hiểu cách nhập thông tin, tính điểm trung bình, in ra danh sách, tìm kiếm sinh viên theo tên và sắp xếp danh sách. Hy vọng rằng bạn đã nắm được cách thực hiện và có thể áp dụng vào các bài toán tương tự khác.

XEM THÊM TẤT CẢ BÀI VIẾT CHỦ ĐỀ C/C++ TẠI ĐÂY

XEM THÊM:

1