cấu trúc struct
Đề bài:
Đọc và ghi ra file
Danh sách sinh viên đăng kí học cho từng sinh viên và tính điểm trung bình cho từng sinh viên.
Đọc và ghi ra file
Danh sách sinh viên đăng kí học cho từng sinh viên và tính điểm trung bình cho từng sinh viên.
//khai bao sinh vien //khai bao mon hoc //khai bao sinh vien hoc mon hoc gi #include<iostream> #include<cstring> #include<string> #include<fstream> #include<iomanip> using namespace std; typedef struct sinhvien{ string ten; string namsinh; }; typedef struct monhoc{ string ten; }; typedef struct dangkyhoc{ sinhvien *sv; monhoc *ds[100]; int somonhoc; }; typedef struct diem{ int sodiem; monhoc *mh; }; typedef struct bangDiem{ sinhvien *sv; diem *dsDiem[100]; int doDaiBang; }; bangDiem *dsBangDiem[100]; int soSv; sinhvien *dssv[100]; int soMonhoc; monhoc *dsMonhoc[100]; dangkyhoc *dsDangky[100]; int vitri; void input(){ fstream f("dssv.cpp"); f >> soSv; f.ignore(); for(int i = 0; i < soSv; i++){ dssv[i] = new sinhvien(); //khoi tao doi tuong sinhvien tai i getline(f, dssv[i]->ten); //doc ten sinh vien tai i tu file getline(f, dssv[i]->namsinh); //doc nam sinh tai i tu file } fstream f1("monhoc.cpp"); f1 >> soMonhoc; f1.ignore(); for(int i = 0; i < soMonhoc; i++){ dsMonhoc[i] = new monhoc(); //khoi tao doi tuong mon hoc tai i getline(f1, dsMonhoc[i]->ten);// doc ten mon hoc tai i tu file } //nhap mon hoc } void inDsSv(){ cout << "Danh sach sinh vien " << endl; for(int i = 0; i < soSv; i++){ cout << setw(20) << dssv[i]->ten << " " << setw(10) << dssv[i]->namsinh << endl; // in ra ten va nam sinh cua sinh vien thu i } } void inDsMonhoc(){ cout << endl; cout << "Danh sach mon hoc " << endl; for(int i = 0; i < soMonhoc; i++){ cout << "["<<i<<"]"<< dsMonhoc[i] ->ten << endl;// in ten hon hoc thu i } } void inDsDangKy(){ cout << "-------------------------------------------------"<<endl; cout << "Danh sach dang ky hoc:" << endl; for(int i = 0; i < soSv; i++){ cout << "*************************************"<<endl; cout << setw(30) << dsDangky[i]->sv->ten << setw(20) << dsDangky[i]->sv->namsinh << endl; // in ra ten nam sinh sinh vien cout << "Danh sach mon hoc da dang ky: " << endl; for(int j = 0; j < dsDangky[i] -> somonhoc; j++){ cout <<"----------------: " << dsDangky[i]->ds[j]->ten<<endl;// in ten mon hoc da dang ki } } } void dangKyHocChoSinhVien(){ for(int i = 0; i < soSv; i++){ dsDangky[i] = new dangkyhoc();// khoi tao doi tuong dang ky hoc tai i dsDangky[i]->sv = dssv[i]; // gan sinh vien i vào dsDangky tai i sao cai nay k can new a cout << "\nChon mon hoc cho sinh vien :" << dssv[i]->ten << endl; cout << "Ban co muon chon mon hoc hay khong ? y/n"; cin.ignore(); char x = getchar(); if(x == 'n'){ //bo qua ko nhap mon hoc continue; } while(true){ inDsMonhoc(); while(true){ cout << "Moi ban chon mon hoc: "; cin >> vitri;// vi tri mon hoc dang ky if( vitri < 0 || vitri > soMonhoc){ cout <<"ban da nhap mon khong ton tai trong danh sach mon hoc " << endl; cout << "nhap lai "<< endl; } else{ break;// thoat khoi while } } dsDangky[i]->ds[dsDangky[i]->somonhoc] = dsMonhoc[vitri];//gan mon hoc da chon vao trong danh sach dang ky dsDangky[i]->somonhoc++;// tang somonhoc trong danh sach dang ky cout << "Ban da chon mon hoc: " << dsMonhoc[vitri]->ten<<endl;//in ra mon hoc da chon //hoi co muon chon them mon hoc hay ko. cout << "Ban co muon chon mon hoc tiep hay khong ? y/n"; cin.ignore(); char x1 = getchar(); if(x1 == 'n'){ //thoat khoi vong while de nhap cho sinh vien tiep theo break; } } } } void inDsDiemCuaSv(){ for(int i = 0; i < soSv; i++){ cout << "\n*************************************"<<endl; cout << "Danh sach diem cua sinh vien [" << dsBangDiem[i]->sv->ten<<"]"<<endl;// in ra ten sinh vien trong danh sach bang diem int tong = 0; for(int j = 0; j < dsBangDiem[i]->doDaiBang; j++){ // in ra ten va diem va diem trong danh sach bang diem cout << "\n-----------------> Mon hoc [" << dsBangDiem[i]->dsDiem[j]->mh->ten<<"] : " << dsBangDiem[i]->dsDiem[j]->sodiem; tong+=dsBangDiem[i]->dsDiem[j]->sodiem; //tinh tong diem tu cac mon trong danh sach bang diem } float tb = 0; tb = (float)tong/dsBangDiem[i]->doDaiBang; if(dsBangDiem[i]->doDaiBang != 0) cout << "\nDiem Trung Binh: " << tb; // in ra diem trung binh cua hoc dinh do else cout << "\n0"; } } void nhapdiemChoSinhVien(){ for(int i = 0; i < soSv; i++){ dsBangDiem[i] = new bangDiem();// khoi tao doi tuong bang diem tai i dsBangDiem[i] -> sv = dssv[i]; // gan sinh vien thu i vao danh sach bang diem dsBangDiem[i]->doDaiBang = dsDangky[i]->somonhoc; // gan do dai bang diem bang so mon hoc trong ds dang ky cout << endl << "Nhap diem cho sinh vien [" << dssv[i]->ten<<"]"<<endl; // nhap diem cho sinh vien thu i for(int j = 0; j < dsBangDiem[i]->doDaiBang; j++){ //nhap diem cho mon hoc. dsBangDiem[i]->dsDiem[j] = new diem();// khoi tao doi tuong diem tai i de nhap diem dsBangDiem[i]->dsDiem[j]->mh = dsDangky[i]->ds[j];// gan mon hoc co trong danh sach dang ki vao danh sach bang diem cout << "Nhap diem cho mon hoc [" << dsDangky[i]->ds[j]->ten<<"] ";// in ra ten mon hc nhap diem cin >> dsBangDiem[i]->dsDiem[j]->sodiem;// nhap diem cua mon hoc tren } } } int main(){ input(); inDsSv(); inDsMonhoc(); dangKyHocChoSinhVien(); inDsDangKy(); nhapdiemChoSinhVien(); inDsDiemCuaSv(); return 0; }
Nhận xét
Đăng nhận xét