File DIEMTHI.BIN ch ứa thông tin điểm thi với các trường dữ liệu: - Mã học phần mahp - Mã số sinh viên mssv - ểm học phần diemĐiYêu cầu về dữ liệu: - Không có 2 bản ghi nào trong SV.BIN
Trình bày bài toán
Bài toán: Quản lý thông tin sinh viên và điểm học phần
Trường Đại học XYZ muốn quản lý thông tin của sinh viên và điể học phần trong các file nhị phân m
Hệ ống cần hỗ ợ các thao tác bổ sung, xóa, và sửa chữa dữ ệu trong 3 file th tr li SV.BIN HP.BIN, , và
DIEMTHI.BIN và đồng thời đảm bảo các yêu cầu sau:
1 File SV.BIN ứa thông tin về sinh viên với các trường dữ ch liệu:
- Mã số sinh viên (mssv)
- Họ đệm và Tên sinh viên
2 File HP.BIN ứa thông tin về các học phần với các trường dữ ch liệu:
3 File DIEMTHI.BIN ứa thông tin điểm thi với các trường dữ ch liệu:
- Mã số sinh viên (mssv)
- ểm học phần (diem)Đi
Yêu cầu về dữ liệu:
- Không có 2 bản ghi nào trong SV.BIN giống nhau trên Mã số sinh viên
- Không có 2 bản ghi nào trong HP.BIN giống nhau trên Mã học phần
- Không có 2 bản ghi nào trong DIEMTHI.BIN đồng thời giống nhau trên Mã học phần và Mã số sinh viên
Các chức năng cần hỗ trợ:
- Bổ sung thông tin sinh viên vào file SV.BIN
- Bổ sung thông tin học phần vào file HP.BIN
- Bổ sung thông tin điểm thi vào file DIEMTHI.BIN
- Xóa thông tin sinh viên khỏi file SV.BIN
- Xóa thông tin học phần khỏi file HP.BIN
- Xóa thông tin điểm thi khỏi file DIEMTHI.BIN
- Sửa thông tin sinh viên trong file SV.BIN
- Sửa thông tin học phần trong file HP.BIN
- Sửa thông tin điểm thi trong file DIEMTHI.BIN
Các ràng buộc dữ ệu cần thựli c hiện:
- Khi bổ sung thông tin điểm thi vào DIEMTHI.BIN, mọi mã học phần trong file DIEMTHI phải là một mã học phần trong file HP.BIN
- Khi bổ sung thông tin điểm thi vào DIEMTHI.BIN, mọi Mã sinh viên trong file DIEMTHI phải là một Mã sinh viên trong file SV.BIN
- Ngày sinh được nhập vào theo đúng định dạng ngày tháng
- Điểm học phần là một số ực gồm 1 chữ số sau dấu phẩy, thuộc khoảng [0 10] và lẻ đến 0.5 (thang th điểm 10)
Các tính năng bổ sung:
- Tính điểm trung bình chung tích lũy theo thang điểm 4 của từng sinh viên và ghi vào file nhị phân DTL.BIN
- Hiển thị Tên học phần và danh sách gồm mã số, họ tên sinh viên và điểm học phần của các sinh viên khi nhập mã học phần
- Hiển thị danh sách gồm mã số, họ tên của những sinh viên không đạt học phần khi nhập mã học phần
- Hiển thị danh sách các học phần mà sinh viên chưa đạt khi nhập mã sinh viên
- Hiển ị điểm trung bình chung tích lũy của sinh viên khi nhập mã sinh viên.th
- Phần mềm cần được cài đặt bằng menu điều khiển bằng các phím chức năng để ực hiện các chứth c năng cần hỗ trợ
- Ghi vào tệp văn bản để thể hiện quá trình thực hiện chương trình và các kết quả ra
Thiết kế chương trình theo phương pháp tinh chỉnh từng bước
Bước 1: Khai báo cấu trúc hàm SinhVien, HocPhan, DiemThi
- struct SinhVien: mssv: Mã số sinh viên, kiểu char array (c-string) có độ dài tối đa là 10 ký tự hodem: Họ đệm của sinh viên, kiểu char array (c-string) có độ dài tối đa là 50 ký tự ten_sv: Tên của sinh viên, kiểu char array (c-string) có độ dài tối đa là 50 ký tự gioi_tinh: Giới tính của sinh viên, kiểu char array (c-string) có độ dài tối đa là 10 ký tự ngay_sinh: Ngày sinh của sinh viên, kiểu char array (c-string) có độ dài tối đa là 11 ký tự
- struct HocPhan: mahp: Mã học phần, kiểu char array (c-string) có độ dài tối đa là 10 ký tự ten_mon_hoc: Tên môn học, kiểu char array (c-string) có độ dài tối đa là 50 ký tự so_tc: Số tín chỉ của học phần, kiểu int
- struct DiemThi: mahp: Mã học phần, kiểu char array (c-string) có độ dài tối đa là 10 ký tự mssv: Mã số sinh viên, kiểu char array -string) có độ dài tối đa là 10 ký tự.(c diem: Điểm thi của sinh viên, kiểu float
Bước 2: ểm tra định dạng ngày sinh, ểm học phầnKi đi
- Hàm kiểm tra định dạng ngày sinh: bool KiemTraNgaySinh(const char* ngay_sinh)
+ Đầu vào: con trỏ constr char* ngay_sinh
+ Đầu ra: true nếu đúng định dạng và false nếu ngược lại
Kiểm tra độ dài ngày sinh: if (strlen(ngay_sinh) != 10), yêu cầu nhập lại, return false ểm tra tính hợp lệ của ngày tháng năm nếu sai yêu cầu nhập lại, Ki : return false else return true
- Kiểm tra xem điểm thi nằm từ 0 đến 10 và lẻ đến 0.5 hay không: bool kiemTraDiem(float diem)
+ Đầu vào: diem là số ực (float)th
+ Đầu ra: true nếu đúng và false nếu ngược lại bool kiemTraDiem(float diem) { if(diem >= 0.0 && diem dt.diem ; hopLe = kiemTraDiem(dt.diem) ;
• Sau khi nhập điểm hợp lệ, trả về thông tin điểm thi (DiemThi dt) vừa nhập
Bước 4: ghi và đọc file SV.BIN, HOCPHAN.BIN, DIEMTHI.BIN
Hàm ghi file (SV.BIN, HP.BIN, DIEMTHI.BIN) Đầu vào: const SinhVien& sv, const HocPhan & hp, const DiemThi& dt Đầu ra:
• Mở file để ghi dữ ệu bằng cách sử dụng ofstream với chế độ ios::binary | ios::app.li
Using the write function to write the data of student object sv to a file in binary format, with the size of sizeof( ) if (binFile.is_open()) { binFile.write(reinterpret_cast(& ),sizeof( )); binFile.close(); cout