Với việc cài đặt các chức năng Nhập, Xuất cho một phiếu bất kỳ, ta dễ dàng chuyển chúng thành sơ đồ lớp. Với dạng này cần chú ý tới các thuộc tính suy diễn của phiếu. Thông thường đây là các thuộc tính mang tính thống kê và ta cần tính giá trị cho các thuộc tính này bằng cách thống kê các giá trị của các thuộ c tính khác (ví dụ tính tổng số lượ ng tài sản bằng cách duyệt qua các tài sản cộng và dồn số lượng). Điều này rất dễ bị mọi người bỏ qua do nó thường không được chú ý và quan tâm đúng mức.
Bài tập:
Viết chương trình quản lý điểm của sinh viên với mỗi sinh viên có các thông tin về: Mã sinh viên, Tên sinh viên, Lớp học và Môn học, biết rằng một sinh viên chỉ thuộc 1 Lớp học và có nhiều môn học.
Thông tin về Lớp học bao gồm: Tên lớp, khoá. Thông tin về môn học bao gồm: Tên môn, số trình, điểm. Yêu cầu chương trình có các chức năng sau:
– Nhập thông tin cho n sinh viên sao cho mỗi sinh viên có đủ thông tin.
– In ra danh sách các sinh viên vừa nhập gồm các thông tin: mã sinh viên, tên sinh viên, Tên lớp, Khoá.
– In phiếu báo điểm cho từng sinh viên theo mẫu:
Phiếu Báo điểm
Trong đó điểm trung bình = (Số trình * Điểm)/ (Số trình)
Mã nguồn chương trình:
#include<iostream> #include<conio.h> #include<stdio.h> #include<string.h> #include<iomanip> #include<math.h> using namespace std; class Student { char code[10],name[100]; public: void input(); void output(); }; class ClassRoom { char className[30]; int faculty; public: void input(); void output(); }; class Subject { char subjectName[30]; int creditNumber; int mark; public: void input(); void output(); friend class Form; }; class Form { Student _Student; ClassRoom _ClassRoom; int n; Subject _Subject[100]; public: void input(); void output(); }; void Student::input() { cin.ignore(); cout<<“Ma sinh vien: “; gets(code); fflush(stdin); cout<<“Ten sinh vien: “; gets(name); fflush(stdin); } void Student::output() { cout<<“Ma sinh vien: “<<code; cout<<“tTen sinh vien: “<<name<<endl; } void ClassRoom::input() { cout<<“Nhap lop hoc : “; gets(className); fflush(stdin); cout<<“Nhap Khoa hoc: “; cin>>faculty; } void ClassRoom::output() { cout<<“Lop hoc : “<<className; cout<<“tKhoa hoc: “<<faculty<<endl; } void Subject::input() { cin.ignore(); cout<<“Nhap ten mon hoc: “; gets(subjectName); fflush(stdin); cout<<“Nhap so tin chi: “; cin>>creditNumber; cout<<“Nhap diem : “; cin>>mark; } void Subject::output() { cout<<setw(5)<<subjectName<<setw(10)<<creditNumber<<setw(10)<<mark<<endl; } void Form::input() { cout<<“-“<<endl; _Student.input(); _ClassRoom.input(); cout<<“Nhap so mon hoc:” ; cin>>n; for(int i=0;i<n;i++) _Subject[i].input(); } void Form::output() { cout<<“-“<<endl; cout<<” Phieu Bao Diem n”; _Student.output(); _ClassRoom.output(); cout<<“Bang diem:n”; cout<<“-“<<endl; cout<<“Ten mon hoctSo tin chi”<<setw(10)<<“Diemn”; for(int i=0;i<n;i++) { cout<<“-“<<endl; _Subject[i].output(); } cout<<“-“<<endl; float sum=0,sumcreditNumber=0,average=0; for(int i=0;i<n;i++) { sum=sum+_Subject[i].creditNumber*_Subject[i].mark; sumcreditNumber=sumcreditNumber+_Subject[i].creditNumber; } average=sum/sumcreditNumber; cout<<“tDiem trung binh: “<<average<<endl<<endl<<endl; } int main() { int n; Form _form[100]; cout<<“Nhap so luong phieu = “; cin>>n; for(int i=0;i<n;i++) { cout<<“Nhap sinh vien thu:”<<i+1<<endl; _form[i].input(); } for(int i=0;i<n;i++) _form[i].output(); getch(); return 0; }
Kết quả:
Nhap so luong phieu = 2 Nhap sinh vien thu:1 – Ma sinh vien: SV001 Ten sinh vien: Thich Qua Mon Nhap lop hoc : Tin 01 Nhap Khoa hoc: 51 Nhap so mon hoc:2 Nhap ten mon hoc: Tri Tue Nhan Tao Nhap so tin chi: 2 Nhap diem : 6 Nhap ten mon hoc: Thiet Ke Web Nhap so tin chi: 3 Nhap diem : 9 Nhap sinh vien thu:2 – Ma sinh vien: SV003 Ten sinh vien: Thich Hoc Lai Nhap lop hoc : Tin 02 Nhap Khoa hoc: 52 Nhap so mon hoc:2 Nhap ten mon hoc: Toan Roi Rac Nhap so tin chi: 4 Nhap diem : 6 Nhap ten mon hoc: Xac Xuat Thong Ke Nhap so tin chi: 5 Nhap diem : 8 – Phieu Bao Diem Ma sinh vien: SV001 Ten sinh vien: Thich Qua Mon Lop hoc : Tin 01 Khoa hoc: 51 Bang diem: – Ten mon hoc So tin chi Diem – Tri Tue Nhan Tao 2 6 – Thiet Ke Web 3 9 – Diem trung binh: 7.8 – Phieu Bao Diem Ma sinh vien: SV003 Ten sinh vien: Thich Hoc Lai Lop hoc : Tin 02 Khoa hoc: 52 Bang diem: – Ten mon hoc So tin chi Diem – Toan Roi Rac 4 6 – Xac Xuat Thong Ke 5 8 – Diem trung binh: 7.11111