bai tập C++/ 1.3
#include<stdio.h>
#include<conio.H>
#include<iostream.h>
#include<fstream.h>
#include<string.h>
/*never give up*/
class SachMuon;
class Sach;
class Nguoi;
class SinhVien;
/*111111111111111111111111111111111111111111111111111111111111111111*/
class Sach{
private:
char masach[5];
char tensach[30];
char tacgia[30];
public:
Sach(){
strcpy(masach,"");
strcpy(tensach,"");
strcpy(tacgia,"");
}
void setMaSach(char ma_in[]){
strcpy(masach, ma_in);
}
void setTenSach(char tensach_in[]){
strcpy(tensach, tensach_in);
}
void setTachGia(char tacgia_in[]){
strcpy(tacgia, tacgia_in);
}
char * getMaSach(){
return masach;
}
char * getTenSach(){
return tensach;
}
char * getTacGia(){
return tacgia;
}
void nhap(){
cout<<"
ma sach:";
gets(masach);
cout<<"
ten sach:";
gets(tensach);
cout<<"
tac gia :";
gets(tacgia);
}
void xuat(){
printf("
|%5s|%30s|%30s|",masach, tensach, tacgia);
}
};
class DanhSachSach{
private:
int n;
Sach sh[100];
public:
DanhSachSach(){
n = 0;
}
int kiemTra(int n_in, char ma_in[] ){
int i;
for(i=0; i<n_in;i++)
if(strcmp( sh[i].getMaSach(),ma_in)==0 ){
return 0;
}
return 1;
}
void nhap(){
cout<<"
Nhap so sach:";
cin>>n;
int i=0;
cout<<"
Nhap thong tin cho tung sach:";
while(i<n){
cout<<"
Sach thu:"<<i+1;
sh[i].nhap();
if(kiemTra(i,sh[i].getMaSach() )){
i++;
}else{
cout<<"
Sach nay da co";
}
}
}
void xuat(){
int i;
cout<<"
Danh sach sach:
";
for(i = 0; i<n; i++)
sh[i].xuat();
}
void ghiFile(){
fstream f("sach.txt", ios::out | ios::binary);
int i;
f.write(reinterpret_cast<char *>(&n), sizeof(int));
for(i=0; i<n; i++){
f.write(reinterpret_cast<char *>(&sh[i]),sizeof(Sach));
}
f.close();
}
void docFile(){
fstream f("sach.txt", ios::in | ios::binary);
int i;
f.read(reinterpret_cast<char *>(&n), sizeof(int));
for(i=0; i<n; i++){
f.read(reinterpret_cast<char *>(&sh[i]),sizeof(Sach));
}
f.close();
}
};
/*111111111111111111111111111111111111111111111111111111111111111111*/
class Nguoi{
protected:
char hoten[30];
char diachi[30];
public:
Nguoi(){
strcpy(hoten,"");
strcpy(diachi,"");
}
void setHoTen(char hoten_in[]){
strcpy(hoten, hoten_in);
}
void setDiaChi(char diachi_in[]){
strcpy(diachi, diachi_in);
}
char* getHoTen(){
return hoten;
}
char* getDiaChia(){
return diachi;
}
};
class SinhVien : public Nguoi{
private:
char masv[5];
char lop[10];
public:
SinhVien() : Nguoi(){
strcpy(masv, "");
strcpy(lop,"");
}
void setMaSV(char ma_in[]){
strcpy(masv, ma_in);
}
void setLop(char lop_in[]){
strcpy(lop, lop_in);
}
char* getMaSV(){
return masv;
}
char * getLop(){
return lop;
}
void nhap(){
cout<<"
ma sv:";
gets(masv);
cout<<"
hoten:";
gets(hoten);
cout<<"
dia chi:";
gets(diachi);
cout<<"
lop:";
gets(lop);
}
void xuat(){
printf("
|%5s|%-25s|%25s|%10s|",masv, hoten, diachi, lop);
}
};
class DanhSachSinhVien{
private:
int n;
SinhVien sv[100];
public:
DanhSachSinhVien(){
n = 0;
}
int kiemTra(int n_in, char ma_in[] ){
int i;
for(i=0; i<n_in;i++)
if(strcmp( sv[i].getMaSV(),ma_in) == 0){
return 0;
}
return 1;
}
void nhap(){
cout<<"
Nhap so sv:";
cin>>n;
int i = 0;
cout<<"
Nhap thong tin cho tung sinh vien:";
while(i<n){
cout<<"
Sinh vien thu:"<<i+1;
sv[i].nhap();
if(kiemTra(i, sv[i].getMaSV())){
i++;
}
else{
cout<<"
Sv nay da co , ban hay nhap lai";
}
}
}
int getN(){
return n;
}
void xuat(){
int i;
cout<<"
Danh sach Sinh Vien:
";
for(i = 0; i<n; i++)
sv[i].xuat();
}
void ghiFile(){
fstream f("sv.txt", ios::out | ios::binary);
int i;
f.write(reinterpret_cast<char *>(&n), sizeof(int));
for(i=0; i<n; i++){
f.write(reinterpret_cast<char *>(&sv[i]),sizeof(SinhVien));
}
f.close();
}
void docFile(){
fstream f("sv.txt", ios::in | ios::binary);
int i;
f.read(reinterpret_cast<char *>(&n), sizeof(int));
for(i=0; i<n; i++){
f.read(reinterpret_cast<char *>(&sv[i]),sizeof(SinhVien));
}
f.close();
}
};
/*2222222222222222222222222222222222222222222222222222222222222222*/
class SachMuon{
private:
SinhVien sv;
Sach sh;
public:
SachMuon(){
}
void xuat(){
sv.xuat();
cout<<"
Muon sach:";
sh.xuat();
cout<<"
----------------------------------------------------------------------------";
}
SinhVien getSV(){
return sv;
}
Sach getSach(){
return sh;
}
void setSinhVien(SinhVien sv_in){
sv = sv_in;
}
void setSach(Sach sh_in){
sh = sh_in;
}
};
class DanhSachSachMuon{
private:
int n;
SachMuon sm[100];
public:
DanhSachSachMuon(){}
//nhap sach muon cho sv
void nhap(){
//file chua danh sach sinh vien
fstream f("sv.txt",ios::in | ios::binary);
f.read(reinterpret_cast<char *>(&n), sizeof(int));
cout<<"
so sv la:"<<n;
int i;
for(i=0; i<n; i++){
//doc sv tu file
SinhVien sv_nhap;
f.read(reinterpret_cast<char *>(&sv_nhap),sizeof(SinhVien));
sm[i].setSinhVien(sv_nhap);
cout<<"
Nhap sach muon cho sv:"<<sm[i].getSV().getHoTen();
Sach sh_nhap;
sh_nhap.nhap();
sm[i].setSach(sh_nhap);
}
f.close();
}
void xuat(){
int i;
cout<<"
Danh sach muon sach";
for(i=0; i<n; i++)
sm[i].xuat();
}
void ghiFile(){
fstream f("sachmuon.txt",ios::out| ios::binary);
f.write(reinterpret_cast<char *>(&n), sizeof(int));
int i;
for(i=0; i<n; i++){
f.write(reinterpret_cast<char *>(&sm[i]), sizeof(SachMuon));
}
f.close();
}
void docFile(){
fstream f("sachmuon.txt",ios::in| ios::binary);
f.read(reinterpret_cast<char *>(&n), sizeof(int));
int i;
for(i=0; i<n; i++){
f.read(reinterpret_cast<char *>(&sm[i]), sizeof(SachMuon));
}
f.close();
}
void sapXepTheoSinhVien(){
char ten1[30];
char ten2[30];
int i, j;
for(i=0; i<n-1; i++){
for(j=i+1; j<n; j++){
strcpy(ten1,sm[i].getSV().getHoTen());
strcpy(ten2,sm[j].getSV().getHoTen());
if(strcmp(ten1,ten2) > 0){
SachMuon tmp;
tmp = sm[i];
sm[i] = sm[j];
sm[j] = tmp;
}
}
}
}
//theo ten sach tttttttttttttttttttttt
//tim kiem danh sach sach muon theo lop sv
void timKiemTheoLopSinhVien(){
char lopnhap[10];
cout<<"
Nhap lop sv:";
gets(lopnhap);
int i;
for(i=0; i<n; i++){
char lop_[10];
strcpy(lop_ ,sm[i].getSV().getLop());
if( strcmp(lopnhap, lop_) == 0){
sm[i].xuat();
}
}
}
};
/* menu */
void meNu(){
int chon = 1;
DanhSachSinhVien dssv;
DanhSachSach dss;
DanhSachSachMuon dssm;
do{
cout<<"
1:Nhap danh sach sinh vien";
cout<<"
2:Nhap danh sach sach";
cout<<"
3:Nhap sach muon cho sinh vien";
cout<<"
4:Sap xep danh sach sach muon theo ho ten sinh vien";
cout<<"
5:Sap xep danh sach sach muon theo ten sach";
cout<<"
6:Tim kiem va hien thi danh sach muon theo lop sinh vien";
cout<<"
7:Tim kiem va hien thi danh sach muon theo ten tach gia";
cout<<"
0:Thoat";
cout<<"
: Ban Chon:";
cin>>chon;
switch(chon){
case 1:
dssv.nhap();
dssv.ghiFile();
dssv.xuat();
break;
case 2:
dss.nhap();
dss.ghiFile();
dss.xuat();
break;
case 3:
dssm.nhap();
dssm.ghiFile();
dssm.xuat();
break;
case 4:
dssm.docFile();
dssm.sapXepTheoSinhVien();
dssm.xuat();
break;
case 5:
break;
case 6:
dssm.docFile();
dssm.timKiemTheoLopSinhVien();
break;
case 7:
break;
}
}while(chon!=0);
}
/* HAM CHINH */
void main()
{
meNu();
getch();
return 0;
}
//////////////////////////////\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'''''''''''
#include<stdio.h>
#include<conio.h>
#include<fstream.h>
#include<iostream.h>
#include<string.h>
// lop nguoi
class Nguoi{
protected:
char hoten[25];
char diachi[25];
public:
Nguoi(){
strcpy(hoten," ");
strcpy(diachi," ");
}
void setHoTen(char hoten_in[]){
strcpy(hoten, hoten_in);
}
void setDiaChi(char diachi_in[]){
strcpy(diachi, diachi_in);
}
char* getHoTen(){
return hoten;
}
char* getDiaChi(){
return diachi;
}
};
//lop sinh vien ke thu tu lop nguoi
class SinhVien : public Nguoi{
private:
int masv;
char lop[10];
public:
SinhVien(): Nguoi(){
masv = 0;
strcpy(lop, "");
}
void setMaSV(int ma_in){
masv = ma_in;
}
void setLop(char lop_in[]){
strcpy(lop, lop_in);
}
int getMaSV(){
return masv;
}
char* getLop(){
return lop;
}
void nhap(){
cout<<"
hoten:";
gets(hoten);
cout<<"
dia chi:";
gets(diachi);
cout<<"
ma sv:";
cin>>masv;
cout<<"
Lop:";
gets(lop);
}
void xuat(){
printf("
|%4d|%-20s|%20s|%10s|",masv, hoten, diachi, lop);
}
};
//lop DanhSachSinhVien gom nhieu sinh vien
class DanhSachSinhVien{
private:
//so sinh vien
int n;
//mang sinh vien
SinhVien sv[100];
public:
DanhSachSinhVien(){
n = 0;
}
void setN(int n_in){
n = n_in;
}
int getN(){
return n;
}
//kiem tra xem co sv do chua
int kiemTra(int i_in, int makiem){
int i;
for(i=0; i<i_in; i++){
if(sv[i].getMaSV() == makiem){
return 0;
}
}
return 1;
}
//ham nhap n sinh vien
void nhap(){
cout<<"
so sv la:";
cin>>n;
int i=0;
while(i<n){
cout<<"
sv thu:"<<i+1;
sv[i].nhap();
if(kiemTra(i, sv[i].getMaSV() ) ){
i++;
}
else
cout<<"
sv nay da co yeu cau nhap lai!";
}
}
//ham ghi n sv vao file
void ghiFile(){
fstream f("sinhvien.txt",ios::out | ios::binary);
//ghi so sv vao file
f.write(reinterpret_cast<char *>(&n), sizeof(int));
int i;
for(i=0; i<n; i++)
f.write(reinterpret_cast<char *>(&sv[i]), sizeof(SinhVien));
f.close();
}
//ham xuat n sv ra man hinh
void xuat(){
cout<<"
Danh sach sv:";
cout<<"
===========================================================";
int i;
for(i=0; i<n; i++)
sv[i].xuat();
cout<<"
===========================================================";
}
void docFile(){
fstream f("sinhvien.txt",ios::in | ios::binary);
//doc so sv vao file
f.read(reinterpret_cast<char *>(&n), sizeof(int));
int i;
for(i=0; i<n; i++)
f.read(reinterpret_cast<char *>(&sv[i]), sizeof(SinhVien));
f.close();
}
};
///lop mon hoc
class MonHoc{
private:
int mamon;
char tenmon[20];
int sodonvihoctrinh;
public:
MonHoc(){
mamon = 0;
strcpy(tenmon," ");
sodonvihoctrinh = 0;
}
void setMaMon(int mamon_in){
mamon = mamon_in;
}
void setTenMon(char tenmon_in[]){
strcpy(tenmon, tenmon_in);
}
void setSoDonViHocTrinh(int k){
sodonvihoctrinh = k;
}
int getMaMon(){
return mamon;
}
char* getTenMon(){
return tenmon;
}
int getSoDonViHocTrinh(){
return sodonvihoctrinh;
}
void nhap(){
cout<<"
ma mon:";
cin>>mamon;
cout<<"
ten mon:";
gets(tenmon);
cout<<"
so don vi hoc trinh:";
cin>>sodonvihoctrinh;
}
void xuat(){
printf("
|%4d|%20s|%4d|",mamon, tenmon, sodonvihoctrinh);
}
};
//lop danh sach mon hoc
class DanhSachMonHoc{
private:
//so mon
int m;
//mang mon hoc
MonHoc mh[10];
public:
DanhSachMonHoc(){
m = 0;
}
void setM(int m_in){
m = m_in;
}
int getM(){
return m;
}
//ham kiem tra xem co mon hoc trong danh sach ko
int coTrongDanhSachMonHoc(char monhoc_in[]){
int i;
for(i=0; i<m; i++){
if(strcmp(monhoc_in,mh[i].getTenMon() ) == 0){
return 1;
}
}
return 0;
}
//kiem tra sach da co chua
int kiemTra(int i_in, int makiem){
int i;
for(i=0; i<i_in; i++)
if(makiem == mh[i].getMaMon())
return 0;
return 1;
}
//ham nhap n mon hoc
void nhap(){
cout<<"
so mon la:";
cin>>m;
int i = 0;
while(i<m){
cout<<"
Nhap mon thu :"<<i+1;
mh[i].nhap();
if(kiemTra(i, mh[i].getMaMon()) )
i++;
else
cout<<"
Mon nay da co, yeu cau nhap lai";
}
}
//ham ghi n mon vao file
void ghiFile(){
fstream f("monhoc.txt",ios::out | ios::binary);
//ghi so sv vao file
f.write(reinterpret_cast<char *>(&m), sizeof(int));
int i;
for(i=0; i<m; i++)
f.write(reinterpret_cast<char *>(&mh[i]), sizeof(MonHoc));
f.close();
}
//ham xuat n sv ra man hinh
void xuat(){
cout<<"
Danh sach Mon Hoc:";
cout<<"
===========================================================";
int i;
for(i=0; i<m; i++)
mh[i].xuat();
cout<<"
===========================================================";
}
void docFile(){
fstream f("monhoc.txt",ios::in | ios::binary);
//doc so sv vao file
f.read(reinterpret_cast<char *>(&m), sizeof(int));
int i;
for(i=0; i<m; i++)
f.read(reinterpret_cast<char *>(&mh[i]), sizeof(MonHoc));
f.close();
}
};
//lop Danh ky
class DanhKy{
private:
SinhVien sv;
char mon1[10];
char mon2[10];
char mon3[10];
public:
DanhKy(){
}
SinhVien getSv(){
return sv;
}
char* getMon1(){
return mon1;
}
char* getMon2(){
return mon2;
}
char* getMon3(){
return mon3;
}
void setSV(SinhVien sv_in){
sv = sv_in;
}
void nhapMonHoc(DanhSachMonHoc dsmh){
//mon 1
do{
cout<<"
Mon 1:";
gets(mon1);
if(dsmh.coTrongDanhSachMonHoc(mon1) == 0){
cout<<"
Mon nay khong co trong danh sach mon hoc:";
cout<<"
Moi ban nhap lai!";
}
}while( !dsmh.coTrongDanhSachMonHoc(mon1));
//mon 2
do{
cout<<"
Mon 2:";
gets(mon2);
if(dsmh.coTrongDanhSachMonHoc(mon2) == 0){
cout<<"
Mon nay khong co trong danh sach mon hoc:";
cout<<"
Moi ban nhap lai!";
}
}while( !dsmh.coTrongDanhSachMonHoc(mon2));
//mon 3
do{
cout<<"
Mon 3:";
gets(mon3);
if(dsmh.coTrongDanhSachMonHoc(mon3) == 0){
cout<<"
Mon nay khong co trong danh sach mon hoc:";
cout<<"
Moi ban nhap lai!";
}
}while( !dsmh.coTrongDanhSachMonHoc(mon3));
}
void xuat(){
printf("
|%25s|%10s|%10s|%10s|",sv.getHoTen(), mon1, mon2, mon3);
}
};
//lop danhsachdang ky mon hoc
class DanhSachDangKy{
private:
//so sinh vien dang ky
int n;
//mang dang ky
DanhKy dk[100];
public:
DanhSachDangKy(){
n = 0;
}
//nhap sv tu file
void nhapDanhSachSinhVien(){
fstream f("sinhvien.txt",ios::in | ios::binary);
//doc so sv tu file
f.read(reinterpret_cast<char *>(&n), sizeof(int));
int i;
for(i=0; i<n; i++){
SinhVien sv;
f.read(reinterpret_cast<char *>(&sv), sizeof(SinhVien));
dk[i].setSV(sv);
}
f.close();
}
//danh ki mon hoc cho tung sinh vien
void danhKyMonHoc(){
DanhSachMonHoc dsmh;
dsmh.docFile();
int i;
for(i=0; i<n; i++){
cout<<"
Danh ky sach cho sv:"<<dk[i].getSv().getHoTen();
dk[i].nhapMonHoc(dsmh);
}
}
void xuat(){
int i;
cout<<"
Danh sach danh ky mon hoc:";
cout<<"
============================================================";
for(i=0; i<n; i++){
dk[i].xuat();
}
cout<<"
============================================================";
}
void ghiFile(){
fstream f("DanhKy.txt",ios::out | ios::binary);
//ghi so sv vao file
f.write(reinterpret_cast<char *>(&n), sizeof(int));
int i;
for(i=0; i<n; i++)
f.write(reinterpret_cast<char *>(&dk[i]), sizeof(DanhKy));
f.close();
}
void docFile(){
fstream f("DanhKy.txt",ios::in | ios::binary);
//ghi so sv vao file
f.read(reinterpret_cast<char *>(&n), sizeof(int));
int i;
for(i=0; i<n; i++)
f.read(reinterpret_cast<char *>(&dk[i]), sizeof(DanhKy));
f.close();
}
void sapXepTheoHoTen(){
int i, j;
char ten1[10];
char ten2[10];
for(i=0; i<n-1; i++)
for(j = i+1; j<n; j++){
strcpy(ten1, dk[i].getSv().getHoTen());
strcpy(ten2, dk[j].getSv().getHoTen());
if(strcpy(ten1, ten2)> 0){
DanhKy tmp = dk[i];
dk[i] = dk[j];
dk[j] = tmp;
}
}
}
//sap xep theo ten mon hoc
//co nhieu mon hoc thi sap the nao?
void sapXepTheoTenMonHoc(){
}
//tim kiem theo ten sinh vien
void timKiemTheoTenSinhVien(){
int i;
char hotencantim[25];
cout<<"
Nhap ho ten can tim:";
gets(hotencantim);
for(i=0; i<n; i++)
if(strcmp(hotencantim, dk[i].getSv().getHoTen()) == 0){
cout<<"
Tim thay sv:";
dk[i].xuat();
return;
}
cout<<"
Khong co sinh vien nao ca!";
}
//tim kiem theo ten sach
void timKiemTheoTenMonHoc(){
char monhoccantim[10];
cout<<"
Nhap ten mon hoc can tim:";
gets(monhoccantim);
int i;
for(i=0; i<n; i++){
if(strcmp(monhoccantim, dk[i].getMon1()) == 0
| strcmp(monhoccantim, dk[i].getMon2()) == 0
| strcmp(monhoccantim, dk[i].getMon3()) == 0 ){
dk[i].xuat();
}
}
}
};
///////////////////////////////////////////////////////////////////
void meNu(){
int chon = 1;
DanhSachSinhVien dssv;
DanhSachMonHoc dsmh;
DanhSachDangKy dsdk;
do{
cout<<"
1:Nhap n sinh vien";
cout<<"
2:Nhap m mon hon";
cout<<"
3:Dang ki mon hoc cho sinh vien";
cout<<"
4:Sap xep danh sach dang ky theo ho ten sinh vien";
cout<<"
5:Sap xep theo ten sach";
cout<<"
6:Tim kiem theo ten sinh vien";
cout<<"
7:Tim kiem theo ten sach";
cout<<"
0:Thoat";
cout<<"
->ban chon:";
cin>>chon;
switch(chon){
case 1:
dssv.nhap();
dssv.xuat();
dssv.ghiFile();
break;
case 2:
dsmh.nhap();
dsmh.xuat();
dsmh.ghiFile();
break;
case 3:
dsdk.nhapDanhSachSinhVien();
dsdk.danhKyMonHoc();
dsdk.ghiFile();
dsdk.xuat();
break;
case 4:
dsdk.docFile();
dsdk.sapXepTheoHoTen();
dsdk.xuat();
break;
case 6:
dsdk.docFile();
dsdk.timKiemTheoTenSinhVien();
break;
case 7:
dsdk.docFile();
dsdk.timKiemTheoTenMonHoc();
break;
}
}while(chon != 0);
}
///////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////
void main()
{
meNu();
getch();
return 0;
}
Bạn đang đọc truyện trên: Truyen2U.Com