Tạo lớp CARD để quản lý sách trong thư viện C++

viết một chương trình quản lí thư viện trên nền console của c++ 2013
Thư viện cần quản lí 3 loại thông tin gồm độc giả, sách và các phiếu mượn/trả sách.

*Thông tin thẻ độc giả cần quản lí bao gồm: mã độc giả, họ tên, CMND, ngày tháng năm sinh, giới tính, email, địa chỉ, ngày lập thẻ và ngày hết hạn của thẻ (48 tháng kể từ ngày lập thẻ).

*Thông tin sách cần quản lí bao gồm: ISBN (mã sách), tên sách, tác giả, nhà xuất bản, năm xuất bản, thể loại, giá sách, số quyển sách. Mỗi phiếu mượn/trả sách chứa thông tin về mã độc giả, ngày mượn, ngày trả dự kiến, ngày trả thực tế và danh sách ISBN của các sách được mượn. Mỗi sách được mượn tối đa trong 7 ngày, nếu quá hạn sẽ bị phạt tiền 5.000 đồng/ngày. Nếu sách bị mất thì độc giả đó sẽ bị phạt số tiền tương ứng 200% giá sách.

Chương trình có các chức năng sau:

  1. Quản lí độc giả a. Xem danh sách độc giả trong thư viện b. Thêm độc giả c. Chỉnh sửa thông tin một độc giả d. Xóa thông tin một độc giả e. Tìm kiếm độc giả theo CMND

    f. Tìm kiếm sách theo họ tên

  2. Quản lí sách a. Xem danh sách các sách trong thư viện b. Thêm sách c. Chỉnh sửa thông tin một quyển sách d. Xóa thông tin sách e. Tìm kiếm sách theo ISBN

    f. Tìm kiếm sách theo tên sách

.Nếu khó quá thì làm giúp e câu 1 cũng dc ạ…còn câu 2 e cố gắng mò mẫn ạ…do thích lập trình mà chỗ e ko ai biết về lập trình cả…

1 Like

em đã có kiến thức căn bản về C++ chưa?

1 Like

dạ sơ sơ ạ… toàn là tự mò nên rối tùm lum:joy:

sơ sơ là như thế nào? e dùng C/C++ hay C++, C++ thì đơn giản hơn, viết 1 class sách và 1 class quản lý với các thuộc tính và phương thức theo yêu cầu của đề bài. Yêu cầu em phải nắm rõ kiến thức căn bản về class, ngoài ra cần có kỹ thuật lập trình cơ bản như xử chuổi, quản lý con trỏ… Còn nếu dùng C/C++ thì tạo struct sách với các kiểu dữ liệu mà đề bài cho, sau đó viết hàm quản lý các con trỏ với kiểu “sách” em vừa thiết lập, viết hàm theo yêu cầu của đề bài, nó cũng đòi hỏi các kỹ thuật lập trình cơ bản như C++, cấp phát giải phóng bộ nhớ… em xem mình thiếu kiến thức nào thì bổ sung, xem video hướng dẫn C++ có rất nhiều trên youtube, hoặc đọc sách. Rồi viết code ra, up lên đây bí chổ nào mọi người sẽ giúp em.

2 Likes

Bài này áp dụng struct là ra hết nhỉ

Tạo lớp CARD để quản lý sách trong thư viện C++

Đáng tiếc là không có áp dụng được file (con trỏ - struct - tập tin)

ko dc sử dụng struct anh ơi…đề ra v ak…

Sao không được sử dụng struct nhỉ ?

anh coi thử hàm nhập xuát dc chưa ạ… e ko biết làm hàm sủa đổi thông tin vs thêm đọc giả

Tạo lớp CARD để quản lý sách trong thư viện C++

void Nhap(int ma[10], char* ten[50], char* dc[50], int cmnd[], int ngay[3], int thang[3], int nam[5], char* gt[4], char* mail[50], int nlap[3], int tlap[3],int namlap[5], int &n) { char ht[50], gtinh[4], email[50], dchi[50]; printf("\tSo doc gia muon nhap: "); scanf_s("%d", &n); for (int i = 0; i < n; i++) { begin: printf("\n\nNhap ma doc gia: "); fflush(stdin); scanf_s("%d", &ma[i]); if (i != 0) { for (int j = 0; j hàm xuât

void Xuat(int ma[10], char* ten[50], char* dc[50], int cmnd[], int ngay[3], int thang[3], int nam[5], char* gt[4], char* mail[50], int nlap[3], int tlap[3], int namlap[5], int n) { for (int i =0; i

cái này là e đang dùng C mà, không phải là C++. Sao e không dùng class, thư viện string, cin, cout. Code sẽ ngắn gọn, dễ nhìn hơn. Rảnh a sẽ viết code để e tham khảo. Lần sau up code để trong thẻ code để dễ nhìn.

@_@… chắc là C mà e nhầm,…A viết giúp e cái hàm sửa đổi thông tin vs thêm độc giả… e ko biết viết kiểu ji luôn

Tạo lớp CARD để quản lý sách trong thư viện C++
Tạo lớp CARD để quản lý sách trong thư viện C++

nếu dùng mảng 2 chiều thì sao a?? e nghe mấy anh lớp trên bảo dùng mảng 2 chiều khỏe hơn…nhưng e ko biết làm sao…

Dạ không biêtd bạn đã làm xong chưa ạ. Cho mình hỏi với ạ

Home Categories FAQ/Guidelines Terms of Service Privacy Policy

  1.     char TenSach[100] ,TheLoai[100],NXB[100] ;

  2.     int TongSL,SLHienTai,SoLanMuon;

  3. typedef Sach ListSach[50]  ;

  4. typedef PhieuMuon ListPhieu[50];

  5. typedef CTPM ListCTPM[200];

  6. int  Tim_MSSach(ListSach a ,int n ,char c[8]);

  7. int  Tim_MSPhieu(ListPhieu b ,int m ,char c[8]);

  8. void InChiTietPhieu(ListPhieu b ,int m,char ms[8]);

  9. void InChiTietSach(ListSach a,int n,char ms[8]);

  10. int n=0 ,m=0 ,k=0;//n la tong so sach , m la tong so phieu muon , k la tong so sach dc muon trong tung chi tiet phieu muon

  11. //========================= HAM KIEM TRA NAM NHUAN (tra ve so ngay cua nam ) ========================

  12.     if((nam%4==0 && nam%100!=0)||(nam%400==0)) return 366;

  13. //=================== HAM TRA VE SO NGAY CUA THANG ====================

  14. int ktthang(int thang,int nam)

  15.         if (namnhuan(nam)==366) return 28;

  16. //================== HAM TINH SO NGAY KE TU NGAY DAU NAM =======================

  17. int vitri(int ngay,int thang,int nam)

  18. //=============== HAM TINH SO NGAY GIUA 2 NAM =================

  19. int kcnam(int namtruoc,int namsau)

  20. //========================= HAM THEM DAU SACH MOI VAO THU VIEN  ========================

  21. void ThemSach(ListSach a ,int &n)

  22.     cout<<"\n                         THEM MOT DAU SACH MOI VAO THU VIEN \n";

  23.     cout<<"===============================================================================\n";

  24. nhaplaimasach:  cout<<"Nhap MS :" ;

  25.     if (Tim_MSSach(a ,n-1 ,a[n].MaSach)!=0)

  26.         cout<<"Ma Sach Da Co , Vui Long Nhap Lai \n";

  27.     cin.getline(a[n].TenSach,100);

  28.     cout<<"Nhap Ten The Loai ";

  29.     cout<<"Nhap Ten Nha Xuat Ban ";

  30.     cout<<"Nhap Tong So Luong Sach ";

  31.     a[n].SLHienTai=a[n].TongSL ;

  32.     cout<<"\n THEM DAU SACH MOI THANH CONG ";

  33. //===================HAM TIM MA SO SACH ========================

  34. int Tim_MSSach(ListSach a ,int n ,char c[8])

  35.     while((i<=n)&& (strcmp(a[i].MaSach,c)!=0))

  36. //==========================HAM XOA THONG TIN SACH ==============================

  37. void XoaSach(ListSach a ,int &n)

  38.     cout<<"\n                         XOA THONG TIN SACH  \n";

  39.     cout<<"===============================================================================\n";

  40.     cout<<"Nhap Vao Ma So Cua Sach :" ;

  41.     vitri=Tim_MSSach(a,n,ms);

  42.         cout<<"KO CO MA SO SACH NAY \n";

  43.         if(a[vitri].SLHienTai<a[vitri].TongSL)

  44.             cout<<"\n Quyen Sach Dang Co nguoi muon , ban ko the xoa thong tin sach \n";

  45.             for(int i=vitri;i<=n;i++)

  46.                 cout<<"Xoa Thanh Cong " ;

  47. //===================== HAM SUA THONG TIN CUA MOT CUON SACH ========================

  48. void SuaSach(ListSach a,int &n)

  49.     cout<<"\n                         SUA THONG TIN SACH \n";

  50.     cout<<"===============================================================================\n";

  51.     cout<<"Nhap Vao Ma So Cua Sach :" ;

  52.     vitri=Tim_MSSach(a,n,ms);

  53.         cout<<"KO CO MA SO SACH NAY ";

  54.         slmuon=a[vitri].TongSL-a[vitri].SLHienTai;

  55.         cout<<"\n NHAP VAO THONG TIN MOI CHO QUYEN SACH \n";

  56.         cout<<"Nhap Ten The Loai ";

  57.         cout<<"Nhap Ten Nha Xuat Ban ";

  58.         cout<<"Nhap Tong So Luong Sach ";

  59.         a[vitri].SLHienTai=a[vitri].TongSL-slmuon;

  60.         cout<<"\n SUA THONG TIN SACH THANH CONG \n";

  61. //==================== HAM IN TOAN BO SACH CO TRONG THU VIEN ===================

  62. void InToanBoSach(ListSach a,int n)

  63.     cout<<"\n \n                 DANH SACH CAC DAU SACH CO TRONG THU VIEN ";

  64.     cout<<"\n  ÉÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÑÍÍÍÍÍ»";

  65.     cout<<"\n  ºMa Sach ³                Ten Sach                ³  The Loai   ³ TSL ³SL HCº";

  66.     cout<<"\n  ÌÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍØÍÍÍÍ͹";

  67.         cout<<"\n  º"<<a[i].MaSach<<setw(8-strlen(a[i].MaSach)+1)<<"³"<<a[i].TenSach<<setw(40-strlen(a[i].TenSach)+1)<<"³"<<a[i].TheLoai<<setw(13-strlen(a[i].TheLoai)+1)<<"³"<<setw(5)<<a[i].TongSL<<"³"<<setw(5)<<a[i].SLHienTai<<"º";

  68.     cout<<"\n  ÈÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÏÍÍÍÍͼ";        

  69. //========================= HAM IN THONG TIN CHI TIET MOT CUON SACH ==========================

  70. void InChiTietSach(ListSach a ,int n,char ms[8])

  71.     vitri=Tim_MSSach(a,n,ms);

  72.         cout<<"Ko Tim Thay Ma So Sach Nhap Vao \n";

  73.         cout<<"\n    THONG TIN CHI TIET SACH \n"<<endl;

  74.         cout<<"Ma So       : "<<a[vitri].MaSach<<endl;

  75.         cout<<"Ten Sach    : "<<a[vitri].TenSach<<endl;

  76.         cout<<"The Loai    : "<<a[vitri].TheLoai<<endl;

  77.         cout<<"NXB         : "<<a[vitri].NXB<<endl;

  78.         cout<<"Tong SL     : "<<a[vitri].TongSL<<endl;

  79.         cout<<"SL Hien Con : "<<a[vitri].SLHienTai<<endl;

  80. //===================== HAM LIET KE CAC SACH THEO MOT THE LOAI =============================

  81. void TimSachTheLoai(ListSach a ,int n)

  82.     cout<<"\n                         LIET KE CAC SACH THEO MOT THE LOAI \n";

  83.     cout<<"===============================================================================\n";

  84.     cout<<"Nhap Vao Ten The Loai Muon Tim :" ;

  85.     cin.getline(tentheloai,50);

  86.     cout<<"\n  ÉÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÑÍÍÍÍÍ»";

  87.     cout<<"\n  ºMa Sach ³                        Ten Sach                     ³ TSL ³SL HCº";

  88.     cout<<"\n  ÌÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍØÍÍÍÍ͹";

  89.         if(strcmp(a[i].TheLoai,tentheloai)==0)

  90.                 { cout<<"\n  º"<<a[i].MaSach<<setw(8-strlen(a[i].MaSach)+1)<<"³"<<a[i].TenSach<<setw(53-strlen(a[i].TenSach)+1)<<"³"<<setw(5)<<a[i].TongSL<<"³"<<setw(5)<<a[i].SLHienTai<<"º"; dem++;}

  91.     cout<<"\n  ÈÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÏÍÍÍÍͼ";

  92.         cout<<"\n \n KO TIM THAY THE LOAI SACH MA BAN NHAP VAO \n";

  93. //===================== HAM THONG KE CAC SACH DA CHO MUON HET TRONG THU VIEN ==================

  94. void ThongKeSachHet(ListSach a,int n)

  95.     cout<<"\n             CAC DAU SACH DA CHO MUON HET TRONG THU VIEN ";

  96.     cout<<"\n  ÉÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍ»";

  97.     cout<<"\n  ºMa Sach ³                Ten Sach                ³  The Loai   ³ TSL º";

  98.     cout<<"\n  ÌÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍ͹";

  99.             cout<<"\n  º"<<a[i].MaSach<<setw(8-strlen(a[i].MaSach)+1)<<"³"<<a[i].TenSach

  100.             <<setw(40-strlen(a[i].TenSach)+1)<<"³"<<a[i].TheLoai<<setw(13-strlen(a[i].TheLoai)+1)

  101.             <<"³"<<setw(5)<<a[i].TongSL<<"º";

  102.     cout<<"\n  ÈÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍͼ";        

  103. void ThongKeSachMuonNhieu(ListSach a,int n)

  104.         while(post>=1 && d[post].SoLanMuon>tam.SoLanMuon)

  105.             {d[post+1]=d[post];post--;}

  106.     cout<<"\n             CAC DAU SACH CHO MUON NHIEU NHAT TRONG THU VIEN ";

  107.     cout<<"\n  ÉÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍ»";

  108.     cout<<"\n  ºMa Sach ³                Ten Sach                ³  The Loai   ³ SLM º";

  109.     cout<<"\n  ÌÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍ͹";

  110.     if(m>10) h=10;  else    h=m;//chi in ra 10 quyen sach dc muon nhieu nhat   

  111.             cout<<"\n  º"<<d[i].MaSach<<setw(8-strlen(d[i].MaSach)+1)<<"³"<<d[i].TenSach

  112.             <<setw(40-strlen(d[i].TenSach)+1)<<"³"<<d[i].TheLoai<<setw(13-strlen(d[i].TheLoai)+1)

  113.             <<"³"<<setw(5)<<d[i].SoLanMuon<<"º"; 

  114.     cout<<"\n  ÈÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍͼ";    

  115. int KT_TTSach(char ms[8])//Ham nay de kiem tra tinh trang cua sach truoc khi cho muon

  116.     while((i<=n)&& (strcmp(a[i].MaSach,ms)!=0))

  117. void ThemCTPM(ListCTPM c,int &k,int SoLuongSach,char MSPhieu[8])

  118.     for(int i=1 ;i<=SoLuongSach ;i++)

  119.         cout<<"Nhap Vao Ma So Sach ";

  120.         x=KT_TTSach(c[k].MaSach);

  121.             cout<<"Ma Sach Nay Ko co \n" ;

  122.             cout<<"Cuon Sach nay da cho muon het \n";

  123.             strcpy(c[k].MaPhieu,MSPhieu);

  124.             cout<<"Nhap Vao Tinh Trang Cuon Sach \n";

  125.             gets(c[k].TinhTrangSach);

  126. void InCTPM(ListCTPM c ,int k ,char MSPhieu[8])

  127.         cout<<"\n \n                CAC SACH TRONG PHIEU MUON " ;

  128.         cout<<"\n    ÉÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍ»";

  129.         cout<<"\n    ºMa Sach ³               Tinh Trang                      ³  Tra   º";

  130.         cout<<"\n    ÌÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍ͹";

  131.             if(strcmp(c[i].MaPhieu,MSPhieu)==0)

  132.                 cout<<"\n    º"<<c[i].MaSach<<setw(8-strlen(c[i].MaSach)+1)<<"³"<<c[i].TinhTrangSach<<setw(47-strlen(c[i].TinhTrangSach)+1)<<"³"<<setw(8);

  133.                 if(c[i].Tra==false)cout<<"Chua Tra";else  cout<<"Da Tra";

  134.         cout<<"\n    ÈÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍͼ";  

  135. void XoaCTPM(ListCTPM c,int &k,char MSPhieu[8])

  136.         if(strcmp(c[i].MaPhieu,MSPhieu)==0 && c[i].Tra==false)

  137.             vitrisach=Tim_MSSach(a,n,c[i].MaSach);

  138.             a[vitrisach].SLHienTai++;

  139.     for(int i=vitri;i<=k;i++)

  140.     cout<<"\n                         MUON THEM SACH \n";

  141.     cout<<"===============================================================================\n";

  142.     cout<<"\n \n \n Nhap Vao Ma So Phieu Can Muon Sach ";

  143.     l=Tim_MSPhieu(b,m,msphieu);

  144.         InChiTietPhieu(b ,m,msphieu);

  145.         cout<<"\n Nhap Vao So Luong Sach Ban Can Muon ";

  146.         ThemCTPM(c,k,slsach,b[l].MaPhieu);

  147.         b[l].SoLuongSach=b[l].SoLuongSach+slsach;

  148.         cout<<"\n MUON SACH THANH CONG ";

  149.         cout<<"\n KO CO MA SO PHIEU NAY ";

  150.     char msphieu[8],mssach[8];

  151.     cout<<"===============================================================================\n";

  152.     cout<<"Nhap Vao Ma So Phieu ";

  153.     if (Tim_MSPhieu(b,m,msphieu)==0)

  154.         cout<<"KO CO MA SO PHIEU NAY ";

  155.         InChiTietPhieu(b ,m,msphieu);

  156.         int soluongsach=b[Tim_MSPhieu(b,n,msphieu)].SoLuongSach;

  157.         for(int j=1;j<=k;j++)       //tinh so luong sach chua tra cua phieu muon

  158.             if(c[j].Tra==false && strcmp(c[j].MaPhieu,msphieu)==0)

  159.             cout<<"\n Nhap Vao So Luong Sach Ma Ban Muon Tra \n";

  160.                 cout<<"So Luong Sach Ban Muon Tra Lon Hon So Luong Sach Ban Muon \n";

  161.         for(int j=1;j<=slsachtra;j++)

  162.             cout<<"\n Nhap Ma So Cuon Sach Ban Muon Tra ";

  163.             if(Tim_MSSach(a ,n ,mssach)==0)

  164.                 cout<<"Ko Co Ma So Cuon Sach Nay";

  165.                     if(strcmp(c[i].MaPhieu,msphieu)==0 &&strcmp(c[i].MaSach,mssach)==0 && c[i].Tra==false)

  166.                         a[Tim_MSSach(a ,n ,mssach)].SLHienTai++;

  167.                     cout<<"\n Tra Cuon Sach Nay Ko Thanh Cong , Vui Long Xem Lai Thong Tin Ban Da Nhap vao ";

  168.                     cout<<"\n Tra Cuon Sach Nay Thanh Cong ";  

  169. //===================== HAM TIM MA SO CUA PHIEU MUON SACH ================

  170. int Tim_MSPhieu(ListPhieu b ,int m ,char c[8])

  171.     while((i<=m)&& (strcmp(b[i].MaPhieu,c)!=0))

  172. //====================== HAM THEM MOT PHIEU MUON SACH MOI =================================

  173. void ThemPhieu(ListPhieu b ,int &m)

  174.     int mssach ,ngay,thang,nam;

  175.     cout<<"\n                         THEM MOT PHIEU MUON MOI  \n";

  176.     cout<<"===============================================================================\n";

  177. nhaplaimaphieu: cout<<"Nhap Vao Ma Phieu :" ;

  178.     if (Tim_MSPhieu(b ,m-1 ,b[m].MaPhieu)!=0)

  179.         cout<<"Ma Phieu Da Co , Vui Long Nhap Lai \n";

  180.     cout<<"Nhap Vao Ho Ten " ;

  181.     cout<<("\n  NHAP NGAY THANG NAM MUON SACH \n");

  182.     if(ngay>0 && ngay<ktthang(thang,nam) && thang>0 && thang<=12 && nam>0)

  183.         b[m].NgayMuon.thang=thang;

  184.         cout<<("\n BAN DA NHAP SAI NGAY THANG \n\n");

  185.         cout<<("\n XIN MOI NHAP LAI \n\n");

  186.     cout<<"Nhap Vao So Luong Sach ";

  187.     ThemCTPM(c,k,b[m].SoLuongSach,b[m].MaPhieu);

  188.     cout<<"\n THEM PHIEU MUON SACH THANH CONG \n";

  189. //=================== HAM SUA THONG TIN PHIEU MUON SACH ====================

  190. void SuaPhieu(ListPhieu b ,int m)

  191.         int mssach ,ngay,thang,nam;

  192.     cout<<"\n                         SUA THONG TIN PHIEU MUON SACH  \n";

  193.     cout<<"===============================================================================\n";

  194.     cout<<"\n Nhap Vao Ma Phieu Can Sua Thong Tin :" ;

  195.     msphieu=Tim_MSPhieu(b ,m ,ms) ;

  196.         cout<<"Ma Phieu Ko Co \n";

  197.         cout<<"Nhap Vao Ho Ten " ;

  198.         cout<<("\n  NHAP NGAY THANG NAM MUON SACH  \n");

  199.         if(ngay>0 && ngay<ktthang(thang,nam) && thang>0 && thang<=12 && nam>0)

  200.             b[msphieu].NgayMuon.ngay=ngay;

  201.             b[msphieu].NgayMuon.thang=thang;

  202.             b[msphieu].NgayMuon.nam=nam;

  203.             cout<<("\n BAN DA NHAP SAI NGAY THANG \n\n");

  204.             cout<<("\n XIN MOI NHAP LAI \n\n");

  205.         XoaCTPM(c,k,b[msphieu].MaPhieu);

  206.         cout<<"Nhap Vao So Luong Sach ";

  207.         cin>>b[msphieu].SoLuongSach ;

  208.         ThemCTPM(c,k,b[msphieu].SoLuongSach,b[msphieu].MaPhieu);

  209. //==================== HAM XOA THONG TIN MOT PHIEU MUON SACH =================

  210. void XoaPhieu(ListPhieu b ,int &m)

  211.     cout<<"\n                         XOA THONG TIN PHIEU MUON SACH \n";

  212.     cout<<"===============================================================================\n";

  213.     cout<<"Nhap Vao Ma Phieu Can Xoa Thong Tin :" ;

  214.     vitriphieu=Tim_MSPhieu(b ,m ,ms) ;

  215.         cout<<"Khong Tim Thay Ma Phieu \n";

  216.         XoaCTPM(c,k,b[vitriphieu].MaPhieu);

  217.         for(int j=vitriphieu;j<m;j++)

  218.         cout<<"XOA THONG TIN PHIEU THANH CONG \n";

  219. //===================== HAM IN DANH SACH CAC PHIEU MUON SACH =========================

  220. void InDanhSachPhieu(ListPhieu b,int m)

  221.         cout<<"\n                   DANH SACH CAC PHIEU MUON SACH ";   

  222.         cout<<"\n      ÉÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍ»";

  223.         cout<<"\n      º  MS    ³    Ho Va Ten      ³  Ngay Muon ³ So Luong º";

  224.         cout<<"\n      ÌÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍ͹";

  225.             cout<<"\n      º"<<b[i].MaPhieu<<setw(8-strlen(b[i].MaPhieu)+1)<<"³"

  226.             <<b[i].HoTen<<setw(19-strlen(b[i].HoTen)+1)<<"³"

  227.             <<setw(4)<<b[i].NgayMuon.ngay<<"-"<<setw(2)<<b[i].NgayMuon.thang<<"-"

  228.             <<b[i].NgayMuon.nam<<"³"<<setw(10)<<b[i].SoLuongSach<<"º";

  229.         cout<<"\n      ÈÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍͼ";

  230. //====================== HAM THONG KE CAC PHIEU MUON SACH QUA HAN ============================

  231. void InPhieuMuonQuaHan(ListPhieu b,int m)

  232.     int ngay,thang,nam,SoNgay ;

  233.     char chuoingay[2],chuoithang[2],chuoinam[4];

  234.     today = localtime( &ltime );

  235.     cout<<"\n                     HOM NAY LA :"<<ngay<<"-"<<thang<<"-"<<nam<<endl;

  236.     cout<<"\n             DANH SACH CAC PHIEU MUON SACH QUA HAN    ";

  237.     cout<<"\n      ÉÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍ»";

  238.     cout<<"\n      º  MS    ³    Ho Va Ten      ³  Ngay Muon ³ So Luong º";

  239.     cout<<"\n      ÌÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍ͹";

  240.         if(b[i].NgayMuon.nam==nam)

  241.             SoNgay=vitri(ngay,thang,nam)-vitri(b[i].NgayMuon.ngay,b[i].NgayMuon.thang,b[i].NgayMuon.nam);

  242.         else if(b[i].NgayMuon.nam!=nam)

  243.             SoNgay=namnhuan(b[i].NgayMuon.nam)-vitri(b[i].NgayMuon.ngay,b[i].NgayMuon.thang,b[i].NgayMuon.nam)+1+vitri(ngay,thang,nam);

  244.             if(strcmp(c[j].MaPhieu,b[i].MaPhieu)==0 && c[j].Tra==false)

  245.         if(SoNgay>=30 && consach==1)

  246.             cout<<"\n      º"<<b[i].MaPhieu<<setw(8-strlen(b[i].MaPhieu)+1)<<"³"

  247.             <<b[i].HoTen<<setw(19-strlen(b[i].HoTen)+1)<<"³"

  248.             <<setw(4)<<b[i].NgayMuon.ngay<<"-"<<setw(2)<<b[i].NgayMuon.thang<<"-"

  249.             <<b[i].NgayMuon.nam<<"³"<<setw(10)<<b[i].SoLuongSach<<"º";

  250.     cout<<"\n      ÈÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍͼ";              

  251. //================================== HAM IN THONG TIN CHI TIET MOT PHIEU MUON SACH ======================

  252. void InChiTietPhieu(ListPhieu b ,int m,char ms[8])

  253.         cout<<"\n                         THONG TIN CHI TIET PHIEU MUON SACH \n";

  254.     cout<<"===============================================================================\n";

  255.     vitri=Tim_MSPhieu(b,m,ms);

  256.         cout<<"KO CO MA SO PHIEU NAY ";

  257.         cout<<"\n      ÉÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍ»";

  258.         cout<<"\n      º  MS    ³    Ho Va Ten      ³  Ngay Muon ³ So Luong  º";

  259.         cout<<"\n      ÌÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍ͹";

  260.         cout<<"\n      º"<<b[vitri].MaPhieu<<setw(8-strlen(b[vitri].MaPhieu)+1)<<"³"<<b[vitri].HoTen<<setw(19-strlen(b[vitri].HoTen)+1)<<"³"<<setw(4)<<b[vitri].NgayMuon.ngay<<"-"<<setw(2)<<b[vitri].NgayMuon.thang<<"-"

  261.                             <<b[vitri].NgayMuon.nam<<"³"<<setw(11)<<b[vitri].SoLuongSach<<"º";

  262.         cout<<"\n      ÈÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍͼ";

  263.         InCTPM(c,k,b[vitri].MaPhieu);

  264.         while(post>=1 && d[post].SoLuongSach>tam.SoLuongSach)

  265.             {d[post+1]=d[post];post--;}

  266.     cout<<"\n            CAC DOC GIA MUON SACH NHIEU TRONG THU VIEN ";

  267.     cout<<"\n      ÉÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍ»";

  268.     cout<<"\n      º  MS    ³    Ho Va Ten      ³  Ngay Muon ³ So Luong  º";

  269.     cout<<"\n      ÌÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍ͹";

  270.     if(m>10) h=10;  else    h=m;//chi in ra 10 doc gia muon sach nhieu nhat

  271.         cout<<"\n      º"<<d[i].MaPhieu<<setw(8-strlen(d[i].MaPhieu)+1)<<"³"<<d[i].HoTen<<setw(19-strlen(d[i].HoTen)+1)<<"³"<<setw(4)<<d[i].NgayMuon.ngay<<"-"<<setw(2)<<d[i].NgayMuon.thang<<"-"

  272.                             <<d[i].NgayMuon.nam<<"³"<<setw(11)<<d[i].SoLuongSach<<"º";

  273.     cout<<"\n      ÈÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍͼ";

  274. //================================================= HAM GHI DU LIEU RA FILE ========================

  275. void GhiDuLieu(ListSach a,ListPhieu b ,ListCTPM c,int n ,int m,int k)

  276.     f=fopen("DATA.DAT","wb");

  277.     fwrite(&n,sizeof(int),1,f);

  278.     fwrite(&m,sizeof(int),1,f);

  279.     fwrite(&k,sizeof(int),1,f);

  280.         fwrite(&a[i],sizeof(Sach),1,f);

  281.         fwrite(&b[j],sizeof(PhieuMuon),1,f);

  282.         fwrite(&c[x],sizeof(CTPM),1,f);    

  283.     cout<<"\n GHI DU LIEU VAO FILE THANH CONG \n"   ;

  284. //==================================== HAM DOC DU LIEU TU FILE VAO DANH SACH ======================

  285. void DocDuLieu(ListSach &a,ListPhieu &b ,ListCTPM &c,int &n ,int &m,int &k)

  286.     f=fopen("DATA.DAT","rb");

  287.         cout<<"\n                FILE DU LIEU KHONG TON TAI VUI LONG TAO MOI DANH SACH \n \n \n";

  288.         fread(&n,sizeof(int),1,f);

  289.         fread(&m,sizeof(int),1,f);

  290.         fread(&k,sizeof(int),1,f);

  291.             fread(&g,sizeof(Sach),1,f);

  292.             fread(&d,sizeof(PhieuMuon),1,f);

  293.             fread(&e,sizeof(CTPM),1,f);

  294.     cout<<"\n               Bai Tap Cau Truc Du Lieu Va Giai Thuat "<<endl;

  295.     cout<<"\n                     CHUONG TRINH QUAN LY THU VIEN  "<<endl;

  296.     cout<<"\n           Sinh Vien  : Tran Minh Nghia "<<endl;

  297.     cout<<"\n           Lop        : CN08A - Khoa CNTT - Truong DH GTVT TPHCM"<<endl;

  298.     cout<<"\n           MSSV       : 0851120052"<<endl;

  299.     cout<<"\n           Dien Thoai : 0935.697.336"<<endl;

  300.     cout<<"\n           Email      : "<<endl;

  301.     cout<<"\n           Website    : Http://MinhNghia90.Info"<<endl;

  302.         cout<<"\n          CHUONG TRINH QUAN LY THU VIEN  -- TRAN MINH NGHIA -- CN08A       ";

  303.         cout<<"\n     ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»";

  304.         cout<<"\n     º          QUAN LY SACH            ³      QUAN LY PHIEU MUON          º";

  305.         cout<<"\n     ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹";

  306.         cout<<"\n     º1 .Them Mot Dau Sach Moi          ³10.Them Phieu Moi                 º";

  307.         cout<<"\n     º2 .Sua Thong Tin Sach             ³11.Sua Thong Tin Phieu Muon       º";

  308.         cout<<"\n     º3 .Xoa Thong Tin Sach             ³12.Xoa Thong Tin Phieu Muon       º"; 

  309.         cout<<"\n     º4 .Tim Kiem Thong Tin Sach        ³13.Tim Thong Tin Phieu Muon       º";

  310.         cout<<"\n     º5 .Liet Ke Cac Sach Cung The Loai ³14.Muon Sach                      º";

  311.         cout<<"\n     º6 .In Thong Tin Tat Ca Sach       ³15.Tra Sach                       º";

  312.         cout<<"\n     º7 .Thong Ke Sach Da Cho Muon Het  ³16.In Dach Sach Phieu Muon        º";

  313.         cout<<"\n     º8 .Cac Sach Duoc Muon Nhieu       ³17.Thong Ke Cac Phieu Muon Qua Hanº"; 

  314.         cout<<"\n     º9 .Thoat Khoi Chuong Trinh        ³18.Cac Doc Gia Muon Nhieu Sach    º"; 

  315.         cout<<"\n     ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹";

  316.         cout<<"\n     º           Nhan Phim 0 De Xem Thong Tin Tac Gia  Chuong Trinh        º";              

  317.         cout<<"\n     ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ";

  318.         cout<<"\n                   Vui Long Chon Cac Phim Chuc Nang Tuong Ung   ";

  319.     cout<<"\n \n \n ==============================================================================";

  320.     cout<<"\n                       Nhan ENTER De Ra Menu Chinh \n ";

  321. //======================================================= HAM MAIN ====================================

  322.             case 0  :Info()  ;Thoat()  ;break ;

  323.             case 1  :ThemSach(a,n)  ;Thoat() ;break ;

  324.             case 2  :SuaSach(a,n) ;Thoat() ;break ;

  325.             case 3  :XoaSach(a,n) ;Thoat() ;break ;

  326.                 cout<<"Nhap Vao Ma So Sach Can Xem Thong Tin \n ";

  327.                 InChiTietSach(a,n,ms);Thoat() ;break ; 

  328.             case 5  :TimSachTheLoai(a,n);Thoat() ;break ;

  329.             case 6  :InToanBoSach(a,n) ;Thoat() ;break ;

  330.             case 7  :ThongKeSachHet(a,n) ;Thoat() ;break ;

  331.             case 8  :ThongKeSachMuonNhieu(a,n);Thoat()  ;break ;

  332.             case 9  :goto exit  ;break ;

  333.             case 10 :ThemPhieu(b,m) ;Thoat() ;break ;

  334.             case 11 :SuaPhieu(b,m);Thoat()  ;break ;   

  335.             case 12 :XoaPhieu(b,m) ;Thoat() ;break ;   

  336.                 cout<<"Nhap Vao Ma So Cua Phieu Can Xem Thong Tin Chi Tiet :\n" ;

  337.                 InChiTietPhieu(b,m,ms) ;Thoat(); break ;

  338.             case 14 :MuonSach() ;Thoat()  ;break ;

  339.             case 15 :TraSach();Thoat()  ;break ;

  340.             case 16 :InDanhSachPhieu(b,m);Thoat()  ;break ;

  341.             case 17 :InPhieuMuonQuaHan(b,m);Thoat() ;break ;   

  342.             case 18 :DocGiaMuonNhieu() ;Thoat() ;break ;

  343.             default :goto exit;break;

  344. exit:   cout << "\nBAN CO MUON LUU DU LIEU VAO FILE KHONG ? - Y/N \n";


Page 2

  1.     char TenSach[100] ,TheLoai[100],NXB[100] ;

  2.     int TongSL,SLHienTai,SoLanMuon;

  3. typedef Sach ListSach[50]  ;

  4. typedef PhieuMuon ListPhieu[50];

  5. typedef CTPM ListCTPM[200];

  6. int  Tim_MSSach(ListSach a ,int n ,char c[8]);

  7. int  Tim_MSPhieu(ListPhieu b ,int m ,char c[8]);

  8. void InChiTietPhieu(ListPhieu b ,int m,char ms[8]);

  9. void InChiTietSach(ListSach a,int n,char ms[8]);

  10. int n=0 ,m=0 ,k=0;//n la tong so sach , m la tong so phieu muon , k la tong so sach dc muon trong tung chi tiet phieu muon

  11. //========================= HAM KIEM TRA NAM NHUAN (tra ve so ngay cua nam ) ========================

  12.     if((nam%4==0 && nam%100!=0)||(nam%400==0)) return 366;

  13. //=================== HAM TRA VE SO NGAY CUA THANG ====================

  14. int ktthang(int thang,int nam)

  15.         if (namnhuan(nam)==366) return 28;

  16. //================== HAM TINH SO NGAY KE TU NGAY DAU NAM =======================

  17. int vitri(int ngay,int thang,int nam)

  18. //=============== HAM TINH SO NGAY GIUA 2 NAM =================

  19. int kcnam(int namtruoc,int namsau)

  20. //========================= HAM THEM DAU SACH MOI VAO THU VIEN  ========================

  21. void ThemSach(ListSach a ,int &n)

  22.     cout<<"\n                         THEM MOT DAU SACH MOI VAO THU VIEN \n";

  23.     cout<<"===============================================================================\n";

  24. nhaplaimasach:  cout<<"Nhap MS :" ;

  25.     if (Tim_MSSach(a ,n-1 ,a[n].MaSach)!=0)

  26.         cout<<"Ma Sach Da Co , Vui Long Nhap Lai \n";

  27.     cin.getline(a[n].TenSach,100);

  28.     cout<<"Nhap Ten The Loai ";

  29.     cout<<"Nhap Ten Nha Xuat Ban ";

  30.     cout<<"Nhap Tong So Luong Sach ";

  31.     a[n].SLHienTai=a[n].TongSL ;

  32.     cout<<"\n THEM DAU SACH MOI THANH CONG ";

  33. //===================HAM TIM MA SO SACH ========================

  34. int Tim_MSSach(ListSach a ,int n ,char c[8])

  35.     while((i<=n)&& (strcmp(a[i].MaSach,c)!=0))

  36. //==========================HAM XOA THONG TIN SACH ==============================

  37. void XoaSach(ListSach a ,int &n)

  38.     cout<<"\n                         XOA THONG TIN SACH  \n";

  39.     cout<<"===============================================================================\n";

  40.     cout<<"Nhap Vao Ma So Cua Sach :" ;

  41.     vitri=Tim_MSSach(a,n,ms);

  42.         cout<<"KO CO MA SO SACH NAY \n";

  43.         if(a[vitri].SLHienTai<a[vitri].TongSL)

  44.             cout<<"\n Quyen Sach Dang Co nguoi muon , ban ko the xoa thong tin sach \n";

  45.             for(int i=vitri;i<=n;i++)

  46.                 cout<<"Xoa Thanh Cong " ;

  47. //===================== HAM SUA THONG TIN CUA MOT CUON SACH ========================

  48. void SuaSach(ListSach a,int &n)

  49.     cout<<"\n                         SUA THONG TIN SACH \n";

  50.     cout<<"===============================================================================\n";

  51.     cout<<"Nhap Vao Ma So Cua Sach :" ;

  52.     vitri=Tim_MSSach(a,n,ms);

  53.         cout<<"KO CO MA SO SACH NAY ";

  54.         slmuon=a[vitri].TongSL-a[vitri].SLHienTai;

  55.         cout<<"\n NHAP VAO THONG TIN MOI CHO QUYEN SACH \n";

  56.         cout<<"Nhap Ten The Loai ";

  57.         cout<<"Nhap Ten Nha Xuat Ban ";

  58.         cout<<"Nhap Tong So Luong Sach ";

  59.         a[vitri].SLHienTai=a[vitri].TongSL-slmuon;

  60.         cout<<"\n SUA THONG TIN SACH THANH CONG \n";

  61. //==================== HAM IN TOAN BO SACH CO TRONG THU VIEN ===================

  62. void InToanBoSach(ListSach a,int n)

  63.     cout<<"\n \n                 DANH SACH CAC DAU SACH CO TRONG THU VIEN ";

  64.     cout<<"\n  ÉÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÑÍÍÍÍÍ»";

  65.     cout<<"\n  ºMa Sach ³                Ten Sach                ³  The Loai   ³ TSL ³SL HCº";

  66.     cout<<"\n  ÌÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍØÍÍÍÍ͹";

  67.         cout<<"\n  º"<<a[i].MaSach<<setw(8-strlen(a[i].MaSach)+1)<<"³"<<a[i].TenSach<<setw(40-strlen(a[i].TenSach)+1)<<"³"<<a[i].TheLoai<<setw(13-strlen(a[i].TheLoai)+1)<<"³"<<setw(5)<<a[i].TongSL<<"³"<<setw(5)<<a[i].SLHienTai<<"º";

  68.     cout<<"\n  ÈÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÏÍÍÍÍͼ";        

  69. //========================= HAM IN THONG TIN CHI TIET MOT CUON SACH ==========================

  70. void InChiTietSach(ListSach a ,int n,char ms[8])

  71.     vitri=Tim_MSSach(a,n,ms);

  72.         cout<<"Ko Tim Thay Ma So Sach Nhap Vao \n";

  73.         cout<<"\n    THONG TIN CHI TIET SACH \n"<<endl;

  74.         cout<<"Ma So       : "<<a[vitri].MaSach<<endl;

  75.         cout<<"Ten Sach    : "<<a[vitri].TenSach<<endl;

  76.         cout<<"The Loai    : "<<a[vitri].TheLoai<<endl;

  77.         cout<<"NXB         : "<<a[vitri].NXB<<endl;

  78.         cout<<"Tong SL     : "<<a[vitri].TongSL<<endl;

  79.         cout<<"SL Hien Con : "<<a[vitri].SLHienTai<<endl;

  80. //===================== HAM LIET KE CAC SACH THEO MOT THE LOAI =============================

  81. void TimSachTheLoai(ListSach a ,int n)

  82.     cout<<"\n                         LIET KE CAC SACH THEO MOT THE LOAI \n";

  83.     cout<<"===============================================================================\n";

  84.     cout<<"Nhap Vao Ten The Loai Muon Tim :" ;

  85.     cin.getline(tentheloai,50);

  86.     cout<<"\n  ÉÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÑÍÍÍÍÍ»";

  87.     cout<<"\n  ºMa Sach ³                        Ten Sach                     ³ TSL ³SL HCº";

  88.     cout<<"\n  ÌÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍØÍÍÍÍ͹";

  89.         if(strcmp(a[i].TheLoai,tentheloai)==0)

  90.                 { cout<<"\n  º"<<a[i].MaSach<<setw(8-strlen(a[i].MaSach)+1)<<"³"<<a[i].TenSach<<setw(53-strlen(a[i].TenSach)+1)<<"³"<<setw(5)<<a[i].TongSL<<"³"<<setw(5)<<a[i].SLHienTai<<"º"; dem++;}

  91.     cout<<"\n  ÈÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÏÍÍÍÍͼ";

  92.         cout<<"\n \n KO TIM THAY THE LOAI SACH MA BAN NHAP VAO \n";

  93. //===================== HAM THONG KE CAC SACH DA CHO MUON HET TRONG THU VIEN ==================

  94. void ThongKeSachHet(ListSach a,int n)

  95.     cout<<"\n             CAC DAU SACH DA CHO MUON HET TRONG THU VIEN ";

  96.     cout<<"\n  ÉÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍ»";

  97.     cout<<"\n  ºMa Sach ³                Ten Sach                ³  The Loai   ³ TSL º";

  98.     cout<<"\n  ÌÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍ͹";

  99.             cout<<"\n  º"<<a[i].MaSach<<setw(8-strlen(a[i].MaSach)+1)<<"³"<<a[i].TenSach

  100.             <<setw(40-strlen(a[i].TenSach)+1)<<"³"<<a[i].TheLoai<<setw(13-strlen(a[i].TheLoai)+1)

  101.             <<"³"<<setw(5)<<a[i].TongSL<<"º";

  102.     cout<<"\n  ÈÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍͼ";        

  103. void ThongKeSachMuonNhieu(ListSach a,int n)

  104.         while(post>=1 && d[post].SoLanMuon>tam.SoLanMuon)

  105.             {d[post+1]=d[post];post--;}

  106.     cout<<"\n             CAC DAU SACH CHO MUON NHIEU NHAT TRONG THU VIEN ";

  107.     cout<<"\n  ÉÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍ»";

  108.     cout<<"\n  ºMa Sach ³                Ten Sach                ³  The Loai   ³ SLM º";

  109.     cout<<"\n  ÌÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍ͹";

  110.     if(m>10) h=10;  else    h=m;//chi in ra 10 quyen sach dc muon nhieu nhat   

  111.             cout<<"\n  º"<<d[i].MaSach<<setw(8-strlen(d[i].MaSach)+1)<<"³"<<d[i].TenSach

  112.             <<setw(40-strlen(d[i].TenSach)+1)<<"³"<<d[i].TheLoai<<setw(13-strlen(d[i].TheLoai)+1)

  113.             <<"³"<<setw(5)<<d[i].SoLanMuon<<"º"; 

  114.     cout<<"\n  ÈÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍͼ";    

  115. int KT_TTSach(char ms[8])//Ham nay de kiem tra tinh trang cua sach truoc khi cho muon

  116.     while((i<=n)&& (strcmp(a[i].MaSach,ms)!=0))

  117. void ThemCTPM(ListCTPM c,int &k,int SoLuongSach,char MSPhieu[8])

  118.     for(int i=1 ;i<=SoLuongSach ;i++)

  119.         cout<<"Nhap Vao Ma So Sach ";

  120.         x=KT_TTSach(c[k].MaSach);

  121.             cout<<"Ma Sach Nay Ko co \n" ;

  122.             cout<<"Cuon Sach nay da cho muon het \n";

  123.             strcpy(c[k].MaPhieu,MSPhieu);

  124.             cout<<"Nhap Vao Tinh Trang Cuon Sach \n";

  125.             gets(c[k].TinhTrangSach);

  126. void InCTPM(ListCTPM c ,int k ,char MSPhieu[8])

  127.         cout<<"\n \n                CAC SACH TRONG PHIEU MUON " ;

  128.         cout<<"\n    ÉÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍ»";

  129.         cout<<"\n    ºMa Sach ³               Tinh Trang                      ³  Tra   º";

  130.         cout<<"\n    ÌÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍ͹";

  131.             if(strcmp(c[i].MaPhieu,MSPhieu)==0)

  132.                 cout<<"\n    º"<<c[i].MaSach<<setw(8-strlen(c[i].MaSach)+1)<<"³"<<c[i].TinhTrangSach<<setw(47-strlen(c[i].TinhTrangSach)+1)<<"³"<<setw(8);

  133.                 if(c[i].Tra==false)cout<<"Chua Tra";else  cout<<"Da Tra";

  134.         cout<<"\n    ÈÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍͼ";  

  135. void XoaCTPM(ListCTPM c,int &k,char MSPhieu[8])

  136.         if(strcmp(c[i].MaPhieu,MSPhieu)==0 && c[i].Tra==false)

  137.             vitrisach=Tim_MSSach(a,n,c[i].MaSach);

  138.             a[vitrisach].SLHienTai++;

  139.     for(int i=vitri;i<=k;i++)

  140.     cout<<"\n                         MUON THEM SACH \n";

  141.     cout<<"===============================================================================\n";

  142.     cout<<"\n \n \n Nhap Vao Ma So Phieu Can Muon Sach ";

  143.     l=Tim_MSPhieu(b,m,msphieu);

  144.         InChiTietPhieu(b ,m,msphieu);

  145.         cout<<"\n Nhap Vao So Luong Sach Ban Can Muon ";

  146.         ThemCTPM(c,k,slsach,b[l].MaPhieu);

  147.         b[l].SoLuongSach=b[l].SoLuongSach+slsach;

  148.         cout<<"\n MUON SACH THANH CONG ";

  149.         cout<<"\n KO CO MA SO PHIEU NAY ";

  150.     char msphieu[8],mssach[8];

  151.     cout<<"===============================================================================\n";

  152.     cout<<"Nhap Vao Ma So Phieu ";

  153.     if (Tim_MSPhieu(b,m,msphieu)==0)

  154.         cout<<"KO CO MA SO PHIEU NAY ";

  155.         InChiTietPhieu(b ,m,msphieu);

  156.         int soluongsach=b[Tim_MSPhieu(b,n,msphieu)].SoLuongSach;

  157.         for(int j=1;j<=k;j++)       //tinh so luong sach chua tra cua phieu muon

  158.             if(c[j].Tra==false && strcmp(c[j].MaPhieu,msphieu)==0)

  159.             cout<<"\n Nhap Vao So Luong Sach Ma Ban Muon Tra \n";

  160.                 cout<<"So Luong Sach Ban Muon Tra Lon Hon So Luong Sach Ban Muon \n";

  161.         for(int j=1;j<=slsachtra;j++)

  162.             cout<<"\n Nhap Ma So Cuon Sach Ban Muon Tra ";

  163.             if(Tim_MSSach(a ,n ,mssach)==0)

  164.                 cout<<"Ko Co Ma So Cuon Sach Nay";

  165.                     if(strcmp(c[i].MaPhieu,msphieu)==0 &&strcmp(c[i].MaSach,mssach)==0 && c[i].Tra==false)

  166.                         a[Tim_MSSach(a ,n ,mssach)].SLHienTai++;

  167.                     cout<<"\n Tra Cuon Sach Nay Ko Thanh Cong , Vui Long Xem Lai Thong Tin Ban Da Nhap vao ";

  168.                     cout<<"\n Tra Cuon Sach Nay Thanh Cong ";  

  169. //===================== HAM TIM MA SO CUA PHIEU MUON SACH ================

  170. int Tim_MSPhieu(ListPhieu b ,int m ,char c[8])

  171.     while((i<=m)&& (strcmp(b[i].MaPhieu,c)!=0))

  172. //====================== HAM THEM MOT PHIEU MUON SACH MOI =================================

  173. void ThemPhieu(ListPhieu b ,int &m)

  174.     int mssach ,ngay,thang,nam;

  175.     cout<<"\n                         THEM MOT PHIEU MUON MOI  \n";

  176.     cout<<"===============================================================================\n";

  177. nhaplaimaphieu: cout<<"Nhap Vao Ma Phieu :" ;

  178.     if (Tim_MSPhieu(b ,m-1 ,b[m].MaPhieu)!=0)

  179.         cout<<"Ma Phieu Da Co , Vui Long Nhap Lai \n";

  180.     cout<<"Nhap Vao Ho Ten " ;

  181.     cout<<("\n  NHAP NGAY THANG NAM MUON SACH \n");

  182.     if(ngay>0 && ngay<ktthang(thang,nam) && thang>0 && thang<=12 && nam>0)

  183.         b[m].NgayMuon.thang=thang;

  184.         cout<<("\n BAN DA NHAP SAI NGAY THANG \n\n");

  185.         cout<<("\n XIN MOI NHAP LAI \n\n");

  186.     cout<<"Nhap Vao So Luong Sach ";

  187.     ThemCTPM(c,k,b[m].SoLuongSach,b[m].MaPhieu);

  188.     cout<<"\n THEM PHIEU MUON SACH THANH CONG \n";

  189. //=================== HAM SUA THONG TIN PHIEU MUON SACH ====================

  190. void SuaPhieu(ListPhieu b ,int m)

  191.         int mssach ,ngay,thang,nam;

  192.     cout<<"\n                         SUA THONG TIN PHIEU MUON SACH  \n";

  193.     cout<<"===============================================================================\n";

  194.     cout<<"\n Nhap Vao Ma Phieu Can Sua Thong Tin :" ;

  195.     msphieu=Tim_MSPhieu(b ,m ,ms) ;

  196.         cout<<"Ma Phieu Ko Co \n";

  197.         cout<<"Nhap Vao Ho Ten " ;

  198.         cout<<("\n  NHAP NGAY THANG NAM MUON SACH  \n");

  199.         if(ngay>0 && ngay<ktthang(thang,nam) && thang>0 && thang<=12 && nam>0)

  200.             b[msphieu].NgayMuon.ngay=ngay;

  201.             b[msphieu].NgayMuon.thang=thang;

  202.             b[msphieu].NgayMuon.nam=nam;

  203.             cout<<("\n BAN DA NHAP SAI NGAY THANG \n\n");

  204.             cout<<("\n XIN MOI NHAP LAI \n\n");

  205.         XoaCTPM(c,k,b[msphieu].MaPhieu);

  206.         cout<<"Nhap Vao So Luong Sach ";

  207.         cin>>b[msphieu].SoLuongSach ;

  208.         ThemCTPM(c,k,b[msphieu].SoLuongSach,b[msphieu].MaPhieu);

  209. //==================== HAM XOA THONG TIN MOT PHIEU MUON SACH =================

  210. void XoaPhieu(ListPhieu b ,int &m)

  211.     cout<<"\n                         XOA THONG TIN PHIEU MUON SACH \n";

  212.     cout<<"===============================================================================\n";

  213.     cout<<"Nhap Vao Ma Phieu Can Xoa Thong Tin :" ;

  214.     vitriphieu=Tim_MSPhieu(b ,m ,ms) ;

  215.         cout<<"Khong Tim Thay Ma Phieu \n";

  216.         XoaCTPM(c,k,b[vitriphieu].MaPhieu);

  217.         for(int j=vitriphieu;j<m;j++)

  218.         cout<<"XOA THONG TIN PHIEU THANH CONG \n";

  219. //===================== HAM IN DANH SACH CAC PHIEU MUON SACH =========================

  220. void InDanhSachPhieu(ListPhieu b,int m)

  221.         cout<<"\n                   DANH SACH CAC PHIEU MUON SACH ";   

  222.         cout<<"\n      ÉÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍ»";

  223.         cout<<"\n      º  MS    ³    Ho Va Ten      ³  Ngay Muon ³ So Luong º";

  224.         cout<<"\n      ÌÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍ͹";

  225.             cout<<"\n      º"<<b[i].MaPhieu<<setw(8-strlen(b[i].MaPhieu)+1)<<"³"

  226.             <<b[i].HoTen<<setw(19-strlen(b[i].HoTen)+1)<<"³"

  227.             <<setw(4)<<b[i].NgayMuon.ngay<<"-"<<setw(2)<<b[i].NgayMuon.thang<<"-"

  228.             <<b[i].NgayMuon.nam<<"³"<<setw(10)<<b[i].SoLuongSach<<"º";

  229.         cout<<"\n      ÈÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍͼ";

  230. //====================== HAM THONG KE CAC PHIEU MUON SACH QUA HAN ============================

  231. void InPhieuMuonQuaHan(ListPhieu b,int m)

  232.     int ngay,thang,nam,SoNgay ;

  233.     char chuoingay[2],chuoithang[2],chuoinam[4];

  234.     today = localtime( &ltime );

  235.     cout<<"\n                     HOM NAY LA :"<<ngay<<"-"<<thang<<"-"<<nam<<endl;

  236.     cout<<"\n             DANH SACH CAC PHIEU MUON SACH QUA HAN    ";

  237.     cout<<"\n      ÉÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍ»";

  238.     cout<<"\n      º  MS    ³    Ho Va Ten      ³  Ngay Muon ³ So Luong º";

  239.     cout<<"\n      ÌÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍ͹";

  240.         if(b[i].NgayMuon.nam==nam)

  241.             SoNgay=vitri(ngay,thang,nam)-vitri(b[i].NgayMuon.ngay,b[i].NgayMuon.thang,b[i].NgayMuon.nam);

  242.         else if(b[i].NgayMuon.nam!=nam)

  243.             SoNgay=namnhuan(b[i].NgayMuon.nam)-vitri(b[i].NgayMuon.ngay,b[i].NgayMuon.thang,b[i].NgayMuon.nam)+1+vitri(ngay,thang,nam);

  244.             if(strcmp(c[j].MaPhieu,b[i].MaPhieu)==0 && c[j].Tra==false)

  245.         if(SoNgay>=30 && consach==1)

  246.             cout<<"\n      º"<<b[i].MaPhieu<<setw(8-strlen(b[i].MaPhieu)+1)<<"³"

  247.             <<b[i].HoTen<<setw(19-strlen(b[i].HoTen)+1)<<"³"

  248.             <<setw(4)<<b[i].NgayMuon.ngay<<"-"<<setw(2)<<b[i].NgayMuon.thang<<"-"

  249.             <<b[i].NgayMuon.nam<<"³"<<setw(10)<<b[i].SoLuongSach<<"º";

  250.     cout<<"\n      ÈÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍͼ";              

  251. //================================== HAM IN THONG TIN CHI TIET MOT PHIEU MUON SACH ======================

  252. void InChiTietPhieu(ListPhieu b ,int m,char ms[8])

  253.         cout<<"\n                         THONG TIN CHI TIET PHIEU MUON SACH \n";

  254.     cout<<"===============================================================================\n";

  255.     vitri=Tim_MSPhieu(b,m,ms);

  256.         cout<<"KO CO MA SO PHIEU NAY ";

  257.         cout<<"\n      ÉÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍ»";

  258.         cout<<"\n      º  MS    ³    Ho Va Ten      ³  Ngay Muon ³ So Luong  º";

  259.         cout<<"\n      ÌÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍ͹";

  260.         cout<<"\n      º"<<b[vitri].MaPhieu<<setw(8-strlen(b[vitri].MaPhieu)+1)<<"³"<<b[vitri].HoTen<<setw(19-strlen(b[vitri].HoTen)+1)<<"³"<<setw(4)<<b[vitri].NgayMuon.ngay<<"-"<<setw(2)<<b[vitri].NgayMuon.thang<<"-"

  261.                             <<b[vitri].NgayMuon.nam<<"³"<<setw(11)<<b[vitri].SoLuongSach<<"º";

  262.         cout<<"\n      ÈÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍͼ";

  263.         InCTPM(c,k,b[vitri].MaPhieu);

  264.         while(post>=1 && d[post].SoLuongSach>tam.SoLuongSach)

  265.             {d[post+1]=d[post];post--;}

  266.     cout<<"\n            CAC DOC GIA MUON SACH NHIEU TRONG THU VIEN ";

  267.     cout<<"\n      ÉÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍ»";

  268.     cout<<"\n      º  MS    ³    Ho Va Ten      ³  Ngay Muon ³ So Luong  º";

  269.     cout<<"\n      ÌÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍ͹";

  270.     if(m>10) h=10;  else    h=m;//chi in ra 10 doc gia muon sach nhieu nhat

  271.         cout<<"\n      º"<<d[i].MaPhieu<<setw(8-strlen(d[i].MaPhieu)+1)<<"³"<<d[i].HoTen<<setw(19-strlen(d[i].HoTen)+1)<<"³"<<setw(4)<<d[i].NgayMuon.ngay<<"-"<<setw(2)<<d[i].NgayMuon.thang<<"-"

  272.                             <<d[i].NgayMuon.nam<<"³"<<setw(11)<<d[i].SoLuongSach<<"º";

  273.     cout<<"\n      ÈÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍͼ";

  274. //================================================= HAM GHI DU LIEU RA FILE ========================

  275. void GhiDuLieu(ListSach a,ListPhieu b ,ListCTPM c,int n ,int m,int k)

  276.     f=fopen("DATA.DAT","wb");

  277.     fwrite(&n,sizeof(int),1,f);

  278.     fwrite(&m,sizeof(int),1,f);

  279.     fwrite(&k,sizeof(int),1,f);

  280.         fwrite(&a[i],sizeof(Sach),1,f);

  281.         fwrite(&b[j],sizeof(PhieuMuon),1,f);

  282.         fwrite(&c[x],sizeof(CTPM),1,f);    

  283.     cout<<"\n GHI DU LIEU VAO FILE THANH CONG \n"   ;

  284. //==================================== HAM DOC DU LIEU TU FILE VAO DANH SACH ======================

  285. void DocDuLieu(ListSach &a,ListPhieu &b ,ListCTPM &c,int &n ,int &m,int &k)

  286.     f=fopen("DATA.DAT","rb");

  287.         cout<<"\n                FILE DU LIEU KHONG TON TAI VUI LONG TAO MOI DANH SACH \n \n \n";

  288.         fread(&n,sizeof(int),1,f);

  289.         fread(&m,sizeof(int),1,f);

  290.         fread(&k,sizeof(int),1,f);

  291.             fread(&g,sizeof(Sach),1,f);

  292.             fread(&d,sizeof(PhieuMuon),1,f);

  293.             fread(&e,sizeof(CTPM),1,f);

  294.     cout<<"\n               Bai Tap Cau Truc Du Lieu Va Giai Thuat "<<endl;

  295.     cout<<"\n                     CHUONG TRINH QUAN LY THU VIEN  "<<endl;

  296.     cout<<"\n           Sinh Vien  : Tran Minh Nghia "<<endl;

  297.     cout<<"\n           Lop        : CN08A - Khoa CNTT - Truong DH GTVT TPHCM"<<endl;

  298.     cout<<"\n           MSSV       : 0851120052"<<endl;

  299.     cout<<"\n           Dien Thoai : 0935.697.336"<<endl;

  300.     cout<<"\n           Email      : "<<endl;

  301.     cout<<"\n           Website    : Http://MinhNghia90.Info"<<endl;

  302.         cout<<"\n          CHUONG TRINH QUAN LY THU VIEN  -- TRAN MINH NGHIA -- CN08A       ";

  303.         cout<<"\n     ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»";

  304.         cout<<"\n     º          QUAN LY SACH            ³      QUAN LY PHIEU MUON          º";

  305.         cout<<"\n     ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹";

  306.         cout<<"\n     º1 .Them Mot Dau Sach Moi          ³10.Them Phieu Moi                 º";

  307.         cout<<"\n     º2 .Sua Thong Tin Sach             ³11.Sua Thong Tin Phieu Muon       º";

  308.         cout<<"\n     º3 .Xoa Thong Tin Sach             ³12.Xoa Thong Tin Phieu Muon       º"; 

  309.         cout<<"\n     º4 .Tim Kiem Thong Tin Sach        ³13.Tim Thong Tin Phieu Muon       º";

  310.         cout<<"\n     º5 .Liet Ke Cac Sach Cung The Loai ³14.Muon Sach                      º";

  311.         cout<<"\n     º6 .In Thong Tin Tat Ca Sach       ³15.Tra Sach                       º";

  312.         cout<<"\n     º7 .Thong Ke Sach Da Cho Muon Het  ³16.In Dach Sach Phieu Muon        º";

  313.         cout<<"\n     º8 .Cac Sach Duoc Muon Nhieu       ³17.Thong Ke Cac Phieu Muon Qua Hanº"; 

  314.         cout<<"\n     º9 .Thoat Khoi Chuong Trinh        ³18.Cac Doc Gia Muon Nhieu Sach    º"; 

  315.         cout<<"\n     ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹";

  316.         cout<<"\n     º           Nhan Phim 0 De Xem Thong Tin Tac Gia  Chuong Trinh        º";              

  317.         cout<<"\n     ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ";

  318.         cout<<"\n                   Vui Long Chon Cac Phim Chuc Nang Tuong Ung   ";

  319.     cout<<"\n \n \n ==============================================================================";

  320.     cout<<"\n                       Nhan ENTER De Ra Menu Chinh \n ";

  321. //======================================================= HAM MAIN ====================================

  322.             case 0  :Info()  ;Thoat()  ;break ;

  323.             case 1  :ThemSach(a,n)  ;Thoat() ;break ;

  324.             case 2  :SuaSach(a,n) ;Thoat() ;break ;

  325.             case 3  :XoaSach(a,n) ;Thoat() ;break ;

  326.                 cout<<"Nhap Vao Ma So Sach Can Xem Thong Tin \n ";

  327.                 InChiTietSach(a,n,ms);Thoat() ;break ; 

  328.             case 5  :TimSachTheLoai(a,n);Thoat() ;break ;

  329.             case 6  :InToanBoSach(a,n) ;Thoat() ;break ;

  330.             case 7  :ThongKeSachHet(a,n) ;Thoat() ;break ;

  331.             case 8  :ThongKeSachMuonNhieu(a,n);Thoat()  ;break ;

  332.             case 9  :goto exit  ;break ;

  333.             case 10 :ThemPhieu(b,m) ;Thoat() ;break ;

  334.             case 11 :SuaPhieu(b,m);Thoat()  ;break ;   

  335.             case 12 :XoaPhieu(b,m) ;Thoat() ;break ;   

  336.                 cout<<"Nhap Vao Ma So Cua Phieu Can Xem Thong Tin Chi Tiet :\n" ;

  337.                 InChiTietPhieu(b,m,ms) ;Thoat(); break ;

  338.             case 14 :MuonSach() ;Thoat()  ;break ;

  339.             case 15 :TraSach();Thoat()  ;break ;

  340.             case 16 :InDanhSachPhieu(b,m);Thoat()  ;break ;

  341.             case 17 :InPhieuMuonQuaHan(b,m);Thoat() ;break ;   

  342.             case 18 :DocGiaMuonNhieu() ;Thoat() ;break ;

  343.             default :goto exit;break;

  344. exit:   cout << "\nBAN CO MUON LUU DU LIEU VAO FILE KHONG ? - Y/N \n";