Trang 1 trên tổng số 2 12 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 11 kết quả

Đề tài: tính ngày trong C++

  1. #1
    Ngày gia nhập
    05 2008
    Bài viết
    0

    Mặc định tính ngày trong C++

    Em có 3 lớp, date,khách,hóa đơn;
    Khách: Ngày tháng năm thuê;
    Hóa Đơn: ngày tháng năm trả;
    em muốn tính ngày giữa 2 khoảng thời gian đó thì làm thế nào
    thanks các bác trước

  2. #2
    Ngày gia nhập
    06 2007
    Bài viết
    14

    Gợi ý thử thế này nhé:
    - Chuyển hết ngày/tháng/năm thuê -> a = ngày tính từ ngày 1/1/1
    - Chuyển hết ngày/tháng/năm trả -> b = ngày tính từ ngày 1/1/1
    - hieu = a - b -> khoảng thời gian đó là đây
    Bạn suy nghĩ rồi tự viết hàm nhé!
    Ta là ai không quan trọng, điều ta làm sẽ khẳng định con người ta!

  3. #3
    Ngày gia nhập
    01 2007
    Nơi ở
    Somewhere I belong
    Bài viết
    168
    In code we trust

  4. #4
    Ngày gia nhập
    05 2008
    Bài viết
    0

    May quá. Cảm ơn các bác. Nhưng cái đó thì em biết làm rồi. Cái em cần hỏi đó là khi đã nhập khách rồi trong đó có thời gian thuê. Tiếp đến là nhập đến hóa đơn trong đó có thời gian trả.
    Bây giờ muốn tính thời gian đó thì như thế nào;
    Em đang rắc rối ở đoạn này;
    Đã được chỉnh sửa lần cuối bởi Bahamut : 19-05-2008 lúc 08:38 AM.

  5. #5
    Ngày gia nhập
    06 2007
    Bài viết
    14

    Cậu nói rõ hơn được ko? Sao nghe khó hiểu quá, thời gian "đó" là thời gian gì nào?
    Ta là ai không quan trọng, điều ta làm sẽ khẳng định con người ta!

  6. #6
    Ngày gia nhập
    05 2008
    Bài viết
    0

    Mặc định tính ngày trong C++

    "đó" có nghĩa là khoảng thời gian giữa ngày thuê và ngày trả ( Thời gian thuê(tgth), thời gian trả(tgtr)). Em muốn tính tiền của hóa đơn như sau:
    (tgtr-tgth)*giá_phòng+1_khoản_phụ.
    Nhưng ko biết tính ngày như thế nào

  7. #7
    Ngày gia nhập
    07 2007
    Nơi ở
    Sơn La
    Bài viết
    133

    Trích dẫn Nguyên bản được gửi bởi Bahamut Xem bài viết
    "đó" có nghĩa là khoảng thời gian giữa ngày thuê và ngày trả ( Thời gian thuê(tgth), thời gian trả(tgtr)). Em muốn tính tiền của hóa đơn như sau:
    (tgtr-tgth)*giá_phòng+1_khoản_phụ.
    Nhưng ko biết tính ngày như thế nào
    Vầy à? Vậy bạn thử cái thread này xem sao
    Cũng không khó lắm phải không?
    Trao đổi kiến thức sẽ giúp ta tiếp cận nhanh với kiến thức.

  8. #8
    Ngày gia nhập
    05 2008
    Bài viết
    0

    cảm ơn các bác. Cái ngày thì em hiểu rồi. Nhưng cái khó là làm sao truy nhập đến các thuộc tính ngày tháng năm của lớp Khách và lớp Hóa đơn cơ. Đây là toàn bộ Code, em post lên để các bác xem. Các bác chỉ cần bảo em tính ngày thôi, không cần làm gì hết kẻo " rối mắt". Các bác bỏ qua lớp phòng nhé, chỉ xem 2 lớp DSK và DSHD thôi.
    C++ Code:
    1. #include<stdio.h>
    2. #include<conio.h>
    3. #include<iostream.h>
    4. #include<fstream.h>
    5. #include<string.h>
    6. #include<ctype.h>
    7. #include<iomanip.h>
    8. #include<stdlib.h>
    9.  
    10. struct Phong
    11. {
    12.     char ten_phong[15],loai[15];
    13.     float don_gia;
    14. };
    15.  
    16. struct Khach
    17. {
    18.     char ten_khach[25],gioi_tinh[5],cmt[10];
    19.     int ngay_thue,thang_thue,nam_thue;
    20.     char phong_thue[15],loai[15];
    21.     float dg;
    22. };
    23.  
    24. struct Hoadon
    25. {
    26.     char khach_thue[25],gtk[15],cmt[10],ptra[15],lpt[15];
    27.     int ngay_tra,thang_tra,nam_tra;
    28.     float ttien,cac_khoan_khac,dgp;
    29.     int dd,mm,yy;
    30. };
    31.  
    32. class DSP
    33. {
    34. private:
    35.     Phong ph;
    36.     char ten_tepPh[50];
    37.     static int sizePh;
    38.     int sophong;
    39. public:
    40.     DSP(char *ttepPh);
    41.     void tao_DSP_moi();
    42.     void bo_xung_DSP();
    43.     void xem_sua_phong();
    44.     void liet_ke_phong();
    45. };
    46.  
    47. class DSK
    48. {
    49. private:
    50.     Khach kh;
    51.     char ten_tepKh[50];
    52.     int sokhach;
    53.     static int sizeKh;
    54. public:
    55.     DSK(char *ttepKh);
    56.     void tao_DSK_moi();
    57.     void bo_xung_DSK();
    58.     void xem_sua_khach();
    59.     void thong_ke_khach_thue_theo_thang();
    60.     void liet_ke();
    61.     void tim_kiem_khach();
    62.     friend class Date;
    63. };
    64.  
    65. class DSHD
    66. {
    67. private:
    68.     Hoadon hd;
    69.     int sohoadon;
    70.     static int sizeHd;
    71.     char ten_tepHd[50];
    72. public:
    73.     DSHD(char *ttepHd);
    74.     void ghi_hoa_don();
    75.     void hien_hoa_don();
    76.     float tong_tien();
    77.     friend class Date;
    78. };
    79.  
    80. //========================TAO DANH SACH PHONG=======================//
    81.  
    82. int DSP::sizePh=sizeof(Phong);
    83.  
    84. DSP::DSP(char *ttepPh)
    85. {
    86.     fstream f;
    87.     strcpy(ten_tepPh,ttepPh);
    88.     f.open(ten_tepPh,ios::binary|ios::in|ios::ate);
    89.     if(!f.good())
    90.         sophong=0;
    91.     else
    92.         sophong=f.tellg()/sizePh;
    93. }
    94.  
    95. //------------------------------------------------------------------//
    96.  
    97. void DSP::tao_DSP_moi()
    98. {
    99.     fstream f;
    100.     f.open(ten_tepPh,ios::binary|ios::out|ios::noreplace);
    101.     if(!f.good())
    102.     {
    103.         cout<<"\nDanh Sach Phong Da Co"<<"\n";
    104.         cout<<"\nCo Muon Tao Lai Khong [C/K]?"<<"\n";
    105.         char ch=getch();
    106.         if(toupper(ch)!='C')
    107.             return;
    108.         else
    109.         {
    110.             f.close();
    111.             f.open(ten_tepPh,ios::binary|ios::out);
    112.         }
    113.     }
    114.     sophong=0;
    115.     char tg[15];
    116.     while(1)
    117.     {
    118.         f.close();
    119.         f.open(ten_tepPh,ios::binary|ios::app);
    120.         clrscr();
    121.         cout<<"\nTao Danh Sach Phong Moi"<<"\n";
    122.         cout<<"\nDanh Sach Phong Co "<<sophong<<" Phong"<<"\n";
    123.         cout<<"\nNhap Phong Thu: "<<(sophong+1)<<"\n";
    124.         cout<<"\n------------------------------------"<<"\n";
    125.         cout<<"\nNhap Ten Phong(Enter De Ket Thuc): ";
    126.         fflush(stdin);gets(tg);
    127.         if(tg[0]==0)break;
    128.  
    129.         FILE *f1;
    130.         f1=fopen("DSP.DATA","rb");
    131.         int ktra=1;
    132.         char s1[15],s2[15];
    133.         int m;
    134.         while(fread(&ph,sizeof(Phong),1,f1)!=NULL)
    135.         {
    136.             strcpy(s1,tg);
    137.             strcpy(s2,ph.ten_phong);
    138.             m=strcmp(s1,s2);
    139.             if(m==0)
    140.             {
    141.                 cout<<"\nTen Phong "<<tg<<" Da Co"<<"\n";
    142.                 cout<<"\nYeu Cau Nhap Lai"<<"\n";
    143.                 ktra=0;
    144.                 getch();
    145.             }
    146.         }
    147.         fclose(f1);
    148.         if(ktra)
    149.         {
    150.             strcpy(ph.ten_phong,tg);
    151.             cout<<"\nLoai Phong: ";
    152.             fflush(stdin);gets(ph.loai);
    153.             cout<<"\nDon Gia Phong: ";
    154.             cin>>ph.don_gia;
    155.             f.write((char*)(&ph),sizePh);
    156.             sophong=sophong+1;
    157.         }
    158.     }
    159.     f.close();
    160. }
    161.  
    162. //------------------------------------------------------------------//
    163.  
    164. void DSP::bo_xung_DSP()
    165. {
    166.     fstream f;
    167.     f.open(ten_tepPh,ios::binary|ios::app|ios::nocreate);
    168.     if(!f.good())
    169.     {
    170.         cout<<"\nDanh Sach Khach Chua Duoc Tao"<<"\n";
    171.         cout<<"\nCo Tao Moi Khong [C/K]? "<<"\n";
    172.         char ch=getch();
    173.         if(toupper(ch)!='C')
    174.             return;
    175.         else
    176.         {
    177.             f.close();
    178.             f.open(ten_tepPh,ios::binary|ios::out);
    179.         }
    180.     }
    181.     //int stt=sophong;
    182.     char tg[15];
    183.     while(1)
    184.     {
    185.         f.close();
    186.         f.open(ten_tepPh,ios::binary|ios::app);
    187.         clrscr();
    188.         cout<<"\nBo Xung Danh Sach Phong"<<"\n";
    189.         cout<<"\nDanh Sach Phong Co "<<sophong<<" Phong"<<"\n";
    190.         cout<<"\nBo Xung Phong Thu: "<<(sophong+1)<<"\n";
    191.         cout<<"\n------------------------------------"<<"\n";
    192.         cout<<"\nNhap Ten Phong (EnTer De Ket Thuc): ";
    193.         fflush(stdin);gets(tg);
    194.         if(tg[0]==0)break;
    195.  
    196.         FILE *f1;
    197.         f1=fopen("DSP.DATA","rb");
    198.         int ktra=1;
    199.         int m;
    200.         char s1[15],s2[15];
    201.         while(fread(&ph,sizeof(Phong),1,f1)!=NULL)
    202.         {
    203.             strcpy(s1,tg);
    204.             strcpy(s2,ph.ten_phong);
    205.             m=strcmp(s1,s2);
    206.             if(m==0)
    207.             {
    208.                 cout<<"\nPhong Nay Da Co"<<"\n";
    209.                 cout<<"\nYeu Cau Nhap Lai"<<"\n";
    210.                 ktra=0;
    211.                 getch();
    212.             }
    213.         }
    214.         fclose(f1);
    215.         if(ktra)
    216.         {
    217.             strcpy(ph.ten_phong,tg);
    218.             cout<<"\nLoai Phong: ";
    219.             fflush(stdin);gets(ph.loai);
    220.             cout<<"\nDon Gia Phong: ";
    221.             cin>>ph.don_gia;
    222.             f.write((char*)(&ph),sizePh);
    223.             //stt=stt+1;
    224.             sophong=sophong+1;
    225.         }
    226.     }
    227.     f.close();
    228. }
    229.  
    230. //------------------------------------------------------------------//
    231.  
    232. void DSP::xem_sua_phong()
    233. {
    234.     fstream f;
    235.     char ch;
    236.     char tg[15];
    237.     f.open(ten_tepPh,ios::binary|ios::out|ios::in|ios::nocreate);
    238.     if(!f.good())
    239.     {
    240.         cout<<"\nDanh Sach Chua Duoc Tao";
    241.         getch();
    242.         return;
    243.     }
    244.     int stt;
    245.     while(1)
    246.     {
    247.         clrscr();
    248.         cout<<"\nXem Sua Danh Sach Phong"<<"\n";
    249.         cout<<"\nDanh Sach Phong Co "<<sophong<<" Phong"<<"\n";
    250.         cout<<"\nCan Xem Phong Thu (An 0 De Ket Thuc): ";cin>>stt;
    251.         if(stt<1||stt>sophong)break;
    252.         else
    253.         {
    254.             f.seekg((stt-1)*sizePh,ios::beg);
    255.             f.read((char*)(&ph),sizePh);
    256.             cout<<"\nTen Phong: "<<ph.ten_phong<<"\n";
    257.             cout<<"\nLoai Phong: "<<ph.loai<<"\n";
    258.             cout<<"\nDon Gia Phong: "<<ph.don_gia<<"\n";
    259.             cout<<"\nBan Co Muon Sua Khong [C/K]?"<<"\n";
    260.             cout<<"\n-----------------------------"<<"\n";
    261.             ch=getch();
    262.             if(toupper(ch)=='C')
    263.             {
    264.                 f.seekg(-sizePh,ios::cur);
    265.                 cout<<"\nNhap Ten Phong: ";
    266.                 fflush(stdin);gets(tg);
    267.  
    268.                 FILE *f1;
    269.                 f1=fopen("DSP.DATA","rb");
    270.                 int ktra=1;
    271.                 int m;
    272.                 char s1[15],s2[15];
    273.                 while(fread(&ph,sizeof(Phong),1,f1)!=NULL)
    274.                 {
    275.                     strcpy(s1,tg);
    276.                     strcpy(s2,ph.ten_phong);
    277.                     m=strcmp(s1,s2);
    278.                     if(m==0)
    279.                     {
    280.                         cout<<"\nTen Phong "<<tg<<" Da Co"<<"\n";
    281.                         cout<<"\nYeu Cau Nhap Lai"<<"\n";
    282.                         ktra=0;
    283.                         getch();
    284.                     }
    285.                 }
    286.                 fclose(f1);
    287.                 if(ktra)
    288.                 {
    289.                     cout<<"\nLoai Phong: ";
    290.                     fflush(stdin);gets(ph.loai);
    291.                     cout<<"\nDon Gia Phong: ";
    292.                     cin>>ph.don_gia;
    293.                     f.write((char *)(&ph),sizePh);
    294.                     cout<<"\nDu Lieu Da Duoc Sua Thanh Cong";
    295.                     getch();
    296.                 }
    297.             }
    298.         }
    299.     }
    300.     f.close();
    301. }
    302.  
    303. //------------------------------------------------------------------//
    304.  
    305. void DSP::liet_ke_phong()
    306. {
    307.     FILE *f1;
    308.     f1=fopen(ten_tepPh,"rb");
    309.     cout<<"\nLiet Ke Danh Sach Phong"<<"\n";
    310.     cout<<"\nDanh Sach Phong Co "<<sophong<<" Phong"<<"\n";
    311.     cout<<"\nSTT|  Ten Phong  | Loai Phong | Don Gia Phong"<<"\n";
    312.     int stt=1;
    313.     while(fread((char*)(&ph),sizePh,1,f1)!=NULL)
    314.     {
    315.         cout<<"\n"<<setw(2)<<stt<<setw(10)<<ph.ten_phong<<setw(15)<<ph.loai<<setw(14)<<ph.don_gia<<"\n";
    316.         stt++;
    317.     }
    318.     fclose(f1);
    319.     getch();
    320. }
    321.  
    322. //===========================TAO DANH SACH KHACH====================//
    323.  
    324. int DSK::sizeKh=sizeof(Khach);
    325.  
    326. DSK::DSK(char *ttepKh)
    327. {
    328.     fstream f;
    329.     f.open(ten_tepKh,ios::binary|ios::in|ios::ate);
    330.     strcpy(ten_tepKh,ttepKh);
    331.     if(!f.good())
    332.         sokhach=0;
    333.     else
    334.         sokhach=f.tellg()/sizeKh;
    335.  
    336. }
    337.  
    338. //------------------------------------------------------------------//
    339.  
    340. void DSK::tao_DSK_moi()
    341. {
    342.     Phong ph;
    343.     fstream f;
    344.     f.open(ten_tepKh,ios::binary|ios::out|ios::noreplace);
    345.     if(!f.good())
    346.     {
    347.         cout<<"\nDanh Sach Khach Da Co"<<"\n";
    348.         cout<<"\nCo Muon Tao Lai Khong [C/K]?"<<"\n";
    349.         char ch=getch();
    350.         if(toupper(ch)!='C')
    351.             return;
    352.         else
    353.         {
    354.             f.close();
    355.             f.open(ten_tepKh,ios::binary|ios::out);
    356.         }
    357.     }
    358.     clrscr();
    359.     sokhach=0;
    360.     while(1)
    361.     {
    362.         f.close();
    363.         f.open(ten_tepKh,ios::binary|ios::app);
    364.         clrscr();
    365.         cout<<"\nTao Danh Sach Khach Moi"<<"\n";
    366.         cout<<"\nDanh Sach Khach Co "<<sokhach<<" Khach"<<"\n";
    367.         cout<<"\nKhach Thu: "<<(sokhach+1)<<"\n";
    368.         cout<<"\n---------------------------------"<<"\n";
    369.         cout<<"\nNhap Ho Ten Khach (Enter Ket Thuc): ";
    370.         fflush(stdin);gets(kh.ten_khach);
    371.         if(kh.ten_khach[0]==0)break;
    372.         cout<<"\nGioi Tinh: ";
    373.         fflush(stdin);gets(kh.gioi_tinh);
    374.         int ktraCmt=0;
    375.         do
    376.         {
    377.             cout<<"\nNhap CMTND: ";
    378.             cin>>kh.cmt;
    379.             if(strlen(kh.cmt)==9)
    380.                 ktraCmt=1;
    381.             else
    382.             {
    383.                 cout<<"\nChung Minh Thu Phai Du 9 Chu So";
    384.                 cout<<"\nYeu Cau Nhap Lai";
    385.             }
    386.         }
    387.         while(ktraCmt!=1);
    388.         cout<<"\nNgay Thue: ";cin>>kh.ngay_thue;
    389.         cout<<"\nThang Thue: ";cin>>kh.thang_thue;
    390.         cout<<"\nNam Thue: ";cin>>kh.nam_thue;
    391.         cout<<"\nNhap Phong Thue: ";
    392.         fflush(stdin);gets(kh.phong_thue);
    393.  
    394.         FILE *f1;
    395.         f1=fopen("DSP.DATA","rb");
    396.         int ktra=0;
    397.         char s1[15],s2[15];
    398.         int m;
    399.         while(fread(&ph,sizeof(Phong),1,f1)!=NULL)
    400.         {
    401.             strcpy(s1,ph.ten_phong);
    402.             strcpy(s2,kh.phong_thue);
    403.             m=strcmp(s1,s2);
    404.             if(m==0)
    405.             {
    406.                 strcpy(kh.loai,ph.loai);
    407.                 kh.dg=ph.don_gia;
    408.                 ktra=1;
    409.                 break;
    410.             }
    411.         }
    412.         fclose(f1);
    413.         if(ktra)
    414.         {
    415.             cout<<"\nLoai Phong: "<<kh.loai;
    416.             getch();
    417.             f.write((char*)(&kh),sizeKh);
    418.             sokhach++;
    419.             clrscr();
    420.         }
    421.         else
    422.         {
    423.             cout<<"\nPhong Nay Khong Co"<<"\n";
    424.             cout<<"\nYeu Cau Nhap lai"<<"\n";
    425.             getch();
    426.             clrscr();
    427.         }
    428.     }
    429.     f.close();
    430. }
    431.  
    432. //------------------------------------------------------------------//
    433.  
    434. void DSK::bo_xung_DSK()
    435. {
    436.     fstream f;
    437.     Phong ph;
    438.     f.open(ten_tepKh,ios::binary|ios::app|ios::nocreate);
    439.     if(!f.good())
    440.     {
    441.         cout<<"\nDanh Sach Khach Chua Duoc Tao"<<"\n";
    442.         cout<<"\nCo Muon Tao Moi Khong [C/K]?"<<"\n";
    443.         char ch=getch();
    444.         if(toupper(ch)!='C')
    445.             return;
    446.         else
    447.         {
    448.             f.close();
    449.             f.open(ten_tepKh,ios::binary|ios::out);
    450.         }
    451.     }
    452.     clrscr();
    453.     while(1)
    454.     {
    455.         clrscr();
    456.         cout<<"\nBo Xung Danh Sach Khach"<<"\n";
    457.         cout<<"\nDanh Sach Khach Co "<<sokhach<<" Khach"<<"\n";
    458.         cout<<"\nBo Xung Danh Sach Khach Thu: "<<(sokhach+1)<<"\n";
    459.         cout<<"\n---------------------------------------------"<<"\n";
    460.         cout<<"\nNhap Ho Ten Khach (Enter Ket Thuc): ";
    461.         fflush(stdin);gets(kh.ten_khach);
    462.         if(kh.ten_khach[0]==0)break;
    463.         cout<<"\nGioi Tinh: ";
    464.         fflush(stdin);gets(kh.gioi_tinh);
    465.         int ktraCmt=0;
    466.         do
    467.         {
    468.             cout<<"\nNhap CMTND: ";cin>>kh.cmt;
    469.             if(strlen(kh.cmt)==9)
    470.                 ktraCmt=1;
    471.             else
    472.             {
    473.                 cout<<"\nChung Minh Thu Phai Du 9 Chu So";
    474.                 cout<<"\nYeu Cau Nhap Lai";
    475.             }
    476.         }
    477.         while(ktraCmt!=1);
    478.         cout<<"\nNgay Thue: ";cin>>kh.ngay_thue;
    479.         cout<<"\nThang Thue: ";cin>>kh.thang_thue;
    480.         cout<<"\nNam Thue: ";cin>>kh.nam_thue;
    481.         cout<<"\nNhap Phong Thue: ";
    482.         fflush(stdin);gets(kh.phong_thue);
    483.  
    484.         FILE *f1;
    485.         f1=fopen("DSP.DATA","rb");
    486.         int ktra=0;
    487.         int m;
    488.         char s1[15],s2[15];
    489.         while(fread(&ph,sizeof(Phong),1,f1)!=NULL)
    490.         {
    491.             strcpy(s1,ph.ten_phong);
    492.             strcpy(s2,kh.phong_thue);
    493.             m=strcmp(s1,s2);
    494.             if(m==0)
    495.             {
    496.                 strcpy(kh.loai,ph.loai);
    497.                 kh.dg=ph.don_gia;
    498.                 ktra=1;
    499.                 break;
    500.             }
    501.         }
    502.         fclose(f1);
    503.         if(ktra)
    504.         {
    505.             cout<<"\nLoai Phong: "<<kh.loai;
    506.             getch();
    507.             f.write((char*)(&kh),sizeKh);
    508.             sokhach=sokhach+1;
    509.         }
    510.         else
    511.         {
    512.             cout<<"\nPhong Nay Chua Co"<<"\n";
    513.             cout<<"\nYeu Cau Nhap Lai"<<"\n";
    514.             getch();
    515.         }
    516.     }
    517.     f.close();
    518. }
    519.  
    520. //------------------------------------------------------------------//
    521.  
    522. void DSK::xem_sua_khach()
    523. {
    524.     Phong ph;
    525.     fstream f;
    526.     f.open(ten_tepKh,ios::binary|ios::out|ios::in|ios::nocreate);
    527.     if(!f.good())
    528.     {
    529.         cout<<"\nDanh Sach Chua Duoc Tao"<<"\n";
    530.         getch();
    531.         return;
    532.     }
    533.     int stt;
    534.     while(1)
    535.     {
    536.         clrscr();
    537.         cout<<"\nXem Sua Danh Sach Khach"<<"\n";
    538.         cout<<"\nDanh Sach Khach Co "<<sokhach<<" Khach"<<"\n";
    539.         cout<<"\nCan Xem Khach Thu (An 0 De Ket Thuc): ";
    540.         cin>>stt;
    541.         if((stt<1)||(stt>sokhach))break;
    542.         else
    543.         {
    544.             f.seekg((stt-1)*sizeKh,ios::beg);
    545.             f.read((char*)(&kh),sizeKh);
    546.             cout<<"\nHo Ten Khach: "<<kh.ten_khach<<"\n";
    547.             cout<<"\nGioi Tinh: "<<kh.gioi_tinh<<"\n";
    548.             cout<<"\nCMTND: "<<kh.cmt<<"\n";
    549.             cout<<"\nThoi Gian Thue: "<<kh.ngay_thue<<"/"<<kh.thang_thue<<"/"<<kh.nam_thue<<"\n";
    550.             cout<<"\nTen Phong Thue: "<<kh.phong_thue<<"\n";
    551.             cout<<"\nLoai Phong: "<<kh.loai<<"\n";
    552.             cout<<"\nCo Muon Sua Khong [C/K]?"<<"\n";
    553.             cout<<"\n-------------------------------"<<"\n";
    554.             char ch=getch();
    555.             if(toupper(ch)=='C')
    556.             {
    557.                 f.seekg(-sizeKh,ios::cur);
    558.                 cout<<"\nNhap Ho Ten Khach: ";
    559.                 fflush(stdin);gets(kh.ten_khach);
    560.                 cout<<"\nGioi Tinh: ";
    561.                 fflush(stdin);gets(kh.gioi_tinh);
    562.                 int ktraCmt=0;
    563.                 do
    564.                 {
    565.                     cout<<"\nNhap CMTND: ";
    566.                     cin>>kh.cmt;
    567.                     if(strlen(kh.cmt)==9)
    568.                         ktraCmt=1;
    569.                     else
    570.                     {
    571.                         cout<<"\nChung minh Thu Phai Du 9 Chu So";
    572.                         cout<<"\nYeu Cau Nhap Lai";
    573.                     }
    574.                 }
    575.                 while(ktraCmt!=1);
    576.                 cout<<"\nNgay Thue: ";cin>>kh.ngay_thue;
    577.                 cout<<"\nThang Thue: ";cin>>kh.thang_thue;
    578.                 cout<<"\nNam Thue: ";cin>>kh.nam_thue;
    579.                 cout<<"\nTen Phong Thue: ";
    580.                 fflush(stdin);gets(kh.phong_thue);
    581.  
    582.                 FILE *f1;
    583.                 f1=fopen("DSP.DATA","rb");
    584.                 int ktra=1;
    585.                 int m;
    586.                 char s1[15],s2[15];
    587.                 while(fread(&ph,sizeof(Phong),1,f1)!=NULL)
    588.                 {
    589.                     strcpy(s1,ph.ten_phong);
    590.                     strcmp(s2,kh.phong_thue);
    591.                     m=strcmp(s1,s2);
    592.                     if(m==0)
    593.                     {
    594.                         strcpy(kh.loai,ph.loai);
    595.                         kh.dg=ph.don_gia;
    596.                         ktra=0;
    597.                         break;
    598.                     }
    599.                 }
    600.                 fclose(f1);
    601.                 if(ktra)
    602.                 {
    603.                     cout<<"\nLoai Phong: "<<kh.loai<<"\n";
    604.                     f.write((char*)(&kh),sizeKh);
    605.                     cout<<"\nDu Lieu Da Duoc Sua";
    606.                     getch();
    607.                 }
    608.                 else
    609.                 {
    610.                     cout<<"\nKhong Co Phong Nay";
    611.                     cout<<"\nYeu Cau Nhap Lai";
    612.                     getch();
    613.                 }
    614.             }
    615.         }
    616.     }
    617.     f.close();
    618. }
    619.  
    620. //------------------------------------------------------------------//
    621.  
    622. void DSK::liet_ke()
    623. {
    624.     int stt=1;
    625.     FILE *f1;
    626.     f1=fopen(ten_tepKh,"rb");
    627.     cout<<"\nLiet Ke Danh Sach Khach"<<"\n";
    628.     cout<<"\nDanh Sach Khach Co "<<stt<<" Khach"<<"\n";
    629.     cout<<"\nSTT| Ten Khach | Gioi Tinh|   CMTND   | Ngay Thue  | Phong Thue | Loai Phong"<<"\n";
    630.     while(fread((char*)(&kh),sizeKh,1,f1)!=NULL)
    631.     {
    632.         cout<<"\n"<<setw(2)<<stt<<setw(13)<<kh.ten_khach<<setw(8)<<kh.gioi_tinh<<setw(14)<<kh.cmt<<setw(5)<<kh.ngay_thue<<"/"<<kh.thang_thue<<"/"<<kh.nam_thue<<setw(8)<<kh.phong_thue<<setw(16)<<kh.loai<<"\n";
    633.         stt=stt+1;
    634.     }
    635.     fclose(f1);
    636.     cout<<"\nBam 1 Phim Bat Ky De Tiep Tuc"<<"\n";
    637.     getch();
    638. }
    639.  
    640. //------------------------------------------------------------------//
    641.  
    642. void DSK::thong_ke_khach_thue_theo_thang()
    643. {
    644.     int thang;
    645.     int stt=1;
    646.     cout<<"\nNhap Thang Can Xem: ";cin>>thang;
    647.     clrscr();
    648.     cout<<"\nThong Ke Khach Thue Theo Thang"<<"\n";
    649.     cout<<"\nDanh Sach Trong Thang: "<<thang<<"\n";
    650.     cout<<"\nSTT| Ten Khach  | Gioi Tinh |   CMTND   |Thoi Gian Thue| Phong Thue | Loai Phong "<<"\n";
    651.     FILE *f;
    652.     f=fopen("DSK.DATA","rb");
    653.     while(fread(&kh,sizeof(Khach),1,f)!=NULL)
    654.     {
    655.         if(kh.thang_thue==thang)
    656.         {
    657.             cout<<"\n"<<setw(2)<<stt<<setw(13)<<kh.ten_khach<<setw(8)<<kh.gioi_tinh<<setw(16)<<kh.cmt<<setw(7)<<kh.ngay_thue<<"/"<<kh.thang_thue<<"/"<<kh.nam_thue<<setw(10)<<kh.phong_thue<<setw(16)<<kh.loai<<"\n";
    658.             stt=stt+1;
    659.         }
    660.     }
    661.     if(stt<1)
    662.     {
    663.         cout<<"\nKhong Co Khach Nao Thue Trong Thang: "<<thang;
    664.     }
    665.     cout<<"\nAn 1 Phim Bat Ky De Tiep Tuc"<<"\n";
    666.     fclose(f);
    667.     getch();
    668. }
    669.  
    670. //------------------------------------------------------------------//
    671.  
    672. void DSK::tim_kiem_khach()
    673. {
    674.     fstream f;
    675.     f.open(ten_tepKh,ios::binary|ios::in|ios::nocreate);
    676.     char tg[25];
    677.     do
    678.     {
    679.         clrscr();
    680.         cout<<"\TIM KIEM THONG TIN KHACH HANG"<<"\n";
    681.         cout<<"\nNhap Ten Khach Can Tim (Enter Ket Thuc): ";
    682.         fflush(stdin);gets(tg);
    683.         if(tg[0]==0)break;
    684.  
    685.         FILE *f1;
    686.         f1=fopen("DSK.DATA","rb");
    687.         int ktra=0;
    688.         int m;
    689.         char s1[25],s2[25];
    690.         while(fread(&kh,sizeof(Khach),1,f1)!=NULL)
    691.         {
    692.             strcpy(s1,tg);
    693.             strcpy(s2,kh.ten_khach);
    694.             m=strcmp(s1,s2);
    695.             if(m==0)
    696.             {
    697.                 ktra=1;
    698.                 break;
    699.             }
    700.         }
    701.         fclose(f1);
    702.         if(ktra)
    703.         {
    704.             cout<<"\nGioi Tinh: "<<kh.gioi_tinh<<"\n";
    705.             cout<<"\nCMTND: "<<kh.cmt<<"\n";
    706.             cout<<"\nThoi Gian Thue: "<<kh.ngay_thue<<"/"<<kh.thang_thue<<"/"<<kh.nam_thue<<"\n";
    707.             cout<<"\nPhong Thue: "<<kh.phong_thue<<"\n";
    708.             cout<<"\nLoai Phong: "<<kh.loai<<"\n";
    709.             getch();
    710.         }
    711.         else
    712.         {
    713.             cout<<"\nKhong Co Thong Tin Ve Khach Nay"<<"\n";
    714.             getch();
    715.         }
    716.     }
    717.     while(1);
    718.     f.close();
    719. }
    720.  
    721. //==========================TAO LOP NGAY THANG======================//
    722.  
    723. class Date
    724. {
    725. private:
    726.     int d,m,y;
    727. public:
    728.     friend class DSK;
    729.     friend class DSHD;
    730.     Date();
    731.     Date(int d1,int m1,int y1);
    732.     int lay_so_ngay();
    733.     int kiem_tra();
    734.     void nhap();
    735.     void hien();
    736.     int operator>(const Date &d1);
    737.     Date operator++();
    738.     int operator-(const Date &d1);
    739. };
    740.  
    741. //------------------------------------------------------------------//
    742.  
    743. Date::Date()
    744. {
    745.     d=1;m=1;y=1800;
    746. }
    747.  
    748. Date::Date(int d1,int m1,int y1)
    749. {
    750.     d=d1;m=m1;y=y1;
    751. }
    752.  
    753. //------------------------------------------------------------------//
    754.  
    755. void Date::nhap()
    756. {
    757.     while(1)
    758.     {
    759.         cout<<"\nNhap Ngay: ";cin>>d;
    760.         cout<<"\nNhap Thang: ";cin>>m;
    761.         cout<<"\nNhap Nam: ";cin>>y;
    762.         if(kiem_tra())break;
    763.         cout<<"\nNhap Sai Ngay Roi";
    764.         cout<<"\nMoi Nhap Lai"<<"\n";
    765.     }
    766. }
    767.  
    768. void Date::hien()
    769. {
    770.     cout<<d<<"/"<<m<<"/"<<y;
    771. }
    772.  
    773. //------------------------------------------------------------------//
    774.  
    775. int Date::lay_so_ngay()
    776. {
    777.     if(m==1||m==3||m==5||m==7||m==8||m==10||m==12)return 31;
    778.     if(m==4||m==6||m==9||m==11)return 30;
    779.     if(y%4==0)
    780.         if((y%100==0)||(y%400!=0))return 28;
    781.         else return 29;
    782.     return 28;
    783. }
    784.  
    785. int Date::kiem_tra()
    786. {
    787.     if(d<1||d>lay_so_ngay())return 0;
    788.     if(m<1||m>12)return 0;
    789.     if(y<1||y>9999)return 0;
    790.     return 1;
    791. }
    792.  
    793. //------------------------------------------------------------------//
    794.  
    795. int Date::operator>(const Date &d1)
    796. {
    797.     if(y<d1.y)return 0;
    798.     else return 1;
    799.     if(m<d1.m)return 0;
    800.     else return 1;
    801.     if(d>d1.d)return 1;
    802.     return 0;
    803. }
    804.  
    805. Date Date::operator++()
    806. {
    807.     if(d<lay_so_ngay()) d++;
    808.     else
    809.     {
    810.         d=1;
    811.         if(m<12) m++;
    812.         else
    813.         {
    814.             m=1;
    815.             y++;
    816.         }
    817.     }
    818.     return *this;
    819. }
    820.  
    821. int Date::operator-(const Date &d1)
    822. {
    823.     Date tg=d1;
    824.     int dem=0;
    825.     while(*this>tg)
    826.     {
    827.         ++tg;
    828.         ++dem;
    829.     }
    830.     return dem;
    831. }
    832.  
    833. //===========================TAO DANH SACH HOA DON==================//
    834.  
    835. int DSHD::sizeHd=sizeof(Hoadon);
    836.  
    837. DSHD::DSHD(char *ttepHd)
    838. {
    839.     strcpy(ten_tepHd,ttepHd);
    840.     fstream f;
    841.     f.open(ten_tepHd,ios::binary|ios::in|ios::ate);
    842.     if(!f.good())
    843.         sohoadon=0;
    844.     else
    845.         sohoadon=f.tellg()/sizeHd;
    846. }
    847.  
    848. //------------------------------------------------------------------//
    849.  
    850. float DSHD::tong_tien()
    851. {
    852.     Khach kh;
    853.     Hoadon hd;
    854.     Date a(kh.ngay_thue,kh.thang_thue,kh.nam_thue),b(hd.ngay_tra,hd.thang_tra,hd.nam_tra);
    855.     hd.ttien=(b-a)*kh.dg+hd.cac_khoan_khac;
    856.     return hd.ttien;
    857. }
    858.  
    859. //------------------------------------------------------------------//
    860.  
    861. void DSHD::ghi_hoa_don()
    862. {
    863.     fstream f;
    864.     Khach kh;
    865.     f.open(ten_tepHd,ios::binary|ios::app|ios::nocreate);
    866.     if(!f.good())
    867.     {
    868.         cout<<"\nDanh Sach Hoa Don Chua Duoc Tao"<<"\n";
    869.         cout<<"\nCo Tao Moi Khong [C/K]?"<<"\n";
    870.         char ch=getch();
    871.         if(toupper(ch)!='C')
    872.             return;
    873.         else
    874.         {
    875.             f.close();
    876.             f.open(ten_tepHd,ios::binary|ios::out);
    877.         }
    878.     }
    879.     clrscr();
    880.     sohoadon=0;
    881.     while(1)
    882.     {
    883.         f.close();
    884.         f.open(ten_tepHd,ios::binary|ios::app);
    885.         clrscr();
    886.         cout<<"\nGhi Hoa Don"<<"\n";
    887.         cout<<"\nDanh Sach Hoa Don Co "<<sohoadon<<" Hoa Don"<<"\n";
    888.         cout<<"\nGhi Hoa Don Thu: "<<(sohoadon+1)<<"\n";
    889.         cout<<"\nNhap Ten Khach (Enter De Ket Thuc): ";
    890.         fflush(stdin);gets(hd.khach_thue);
    891.         if(hd.khach_thue[0]==0)break;
    892.  
    893.         FILE *f1;
    894.         f1=fopen("DSK.DATA","rb");
    895.         char s1[25],s2[25];
    896.         int ktra=0;
    897.         int m;
    898.         while(fread(&kh,sizeof(Khach),1,f1)!=NULL)
    899.         {
    900.             strcpy(s1,kh.ten_khach);
    901.             strcpy(s2,hd.khach_thue);
    902.             m=strcmp(s1,s2);
    903.             if(m==0)
    904.             {
    905.                 strcpy(hd.gtk,kh.gioi_tinh);
    906.                 strcpy(hd.cmt,kh.cmt);
    907.                 strcpy(hd.ptra,kh.phong_thue);
    908.                 strcpy(hd.lpt,kh.loai);
    909.                 hd.dgp=kh.dg;
    910.                 hd.dd=kh.ngay_thue;
    911.                 hd.mm=kh.thang_thue;
    912.                 hd.yy=kh.nam_thue;
    913.                 ktra=1;
    914.                 break;
    915.             }
    916.         }
    917.         fclose(f1);
    918.         if(ktra)
    919.         {
    920.             cout<<"\nGioi Tinh: "<<kh.gioi_tinh<<"\n";
    921.             cout<<"\nCMTND: "<<kh.cmt<<"\n";
    922.             cout<<"\nThoi Gian Thue: "<<kh.ngay_thue<<"/"<<kh.thang_thue<<"/"<<kh.nam_thue<<"\n";
    923.             cout<<"\nPhong Thue: "<<kh.phong_thue<<"\n";
    924.             cout<<"\nLoai Phong: "<<kh.loai<<"\n";
    925.             cout<<"\nDon Gia Phong: "<<kh.dg<<"\n";
    926.             cout<<"\nNgay Tra: ";cin>>hd.ngay_tra;
    927.             cout<<"\nThang Tra: ";cin>>hd.thang_tra;
    928.             cout<<"\nNam Tra: ";cin>>hd.nam_tra;
    929.             cout<<"\nTong Tien: "<<hd.ttien;
    930.             f.write((char*)(&hd),sizeHd);
    931.             sohoadon=sohoadon+1;
    932.             clrscr();
    933.         }
    934.         else
    935.         {
    936.             cout<<"\nKhong Co Khach Nay"<<"\n";
    937.             cout<<"\nYeu Cau Nhap Lai"<<"\n";
    938.             getch();
    939.             clrscr();
    940.         }
    941.     }
    942.     f.close();
    943. }
    944.  
    945. //------------------------------------------------------------------//
    946.  
    947. void DSHD::hien_hoa_don()
    948. {
    949.     fstream f;
    950.     Khach kh;
    951.     int stt=1;
    952.     FILE *f1;
    953.     f1=fopen(ten_tepHd,"rb");
    954.     cout<<"\nHien Thi Cac Hoa Don"<<"\n";
    955.     cout<<"\nDanh Sach Co "<<sohoadon<<" Hoa Don"<<"\n";
    956.     cout<<"\nSTT|  Ten Khach | GT |  CMTND  | Ngay Thue  | Ngay Tra |Phong Thue| Tong Tien"<<"\n";
    957.     while(fread(&hd,sizeof(Hoadon),1,f1)!=NULL)
    958.     {
    959.         cout<<"\n"<<setw(2)<<stt<<setw(13)<<hd.khach_thue<<setw(5)<<hd.gtk<<setw(11)<<hd.cmt<<setw(4)<<hd.dd<<"/"<<hd.mm<<"/"<<hd.yy<<setw(5)<<hd.ngay_tra<<"/"<<hd.thang_tra<<"/"<<hd.nam_tra<<setw(8)<<hd.ptra<<setw(17)<<hd.ttien<<"\n";
    960.         stt=stt+1;
    961.     }
    962.     fclose(f1);
    963.     cout<<"\nBam 1 Phim Bat Ky De Tiep Tuc";
    964.     getch();
    965. }
    966.  
    967. //==============================TAO MENU============================//
    968.  
    969. void menuPhong()
    970. {
    971.     DSP ph("DSP.DATA");
    972.     int chon;
    973.     do
    974.     {
    975.         clrscr();
    976.         cout<<"\nQUAN LY DANH SACH PHONG"<<"\n";
    977.         cout<<"\n1.TAO DANH SACH PHONG MOI"<<"\n";
    978.         cout<<"\n2.BO XUNG DANH SACH PHONG"<<"\n";
    979.         cout<<"\n3.XEM SUA DANH SACH PHONG"<<"\n";
    980.         cout<<"\n4.LIET KE DANH SACH PHONG"<<"\n";
    981.         cout<<"\n5.TRO VE MENU TRUOC"<<"\n";
    982.         cout<<"\n6.THOAT"<<"\n";
    983.         cout<<"\nCHON 1 TRONG CAC CHUC NANG TREN: ";
    984.         cin>>chon;
    985.         clrscr();
    986.         switch(chon)
    987.         {
    988.         case 1:
    989.             ph.tao_DSP_moi();break;
    990.         case 2:
    991.             ph.bo_xung_DSP();break;
    992.         case 3:
    993.             ph.xem_sua_phong();break;
    994.         case 4:
    995.             ph.liet_ke_phong();break;
    996.         case 6:
    997.             exit(0);
    998.         }
    999.     }
    1000.     while(chon!=5);
    1001. }
    1002.  
    1003. //------------------------------------------------------------------//
    1004.  
    1005. void menuKhach()
    1006. {
    1007.     DSK kh("DSK.DATA");
    1008.     int chon;
    1009.     do
    1010.     {
    1011.         clrscr();
    1012.         cout<<"\nQUAN LY DANH SACH KHACH"<<"\n";
    1013.         cout<<"\n1.TAO DANH SACH KHACH MOI"<<"\n";
    1014.         cout<<"\n2.BO XUNG DANH SACH KHACH"<<"\n";
    1015.         cout<<"\n3.XEM SUA DANH SACH KHACH"<<"\n";
    1016.         cout<<"\n4.LIET KE DANH SACH KHACH"<<"\n";
    1017.         cout<<"\n5.THONG KE KHACH THUE THEO THANG"<<"\n";
    1018.         cout<<"\n6.TIM KIEM THONG TIN KHACH HANG"<<"\n";
    1019.         cout<<"\n7.TRO VE MENU TRUOC"<<"\n";
    1020.         cout<<"\n8.THOAT"<<"\n";
    1021.         cout<<"\nCHON 1 TRONG CAC CHUC NANG TREN: ";cin>>chon;
    1022.         clrscr();
    1023.         switch(chon)
    1024.         {
    1025.         case 1:
    1026.             kh.tao_DSK_moi();break;
    1027.         case 2:
    1028.             kh.bo_xung_DSK();break;
    1029.         case 3:
    1030.             kh.xem_sua_khach();break;
    1031.         case 4:
    1032.             kh.liet_ke();break;
    1033.         case 5:
    1034.             kh.thong_ke_khach_thue_theo_thang();break;
    1035.         case 6:
    1036.             kh.tim_kiem_khach();break;
    1037.         case 8:
    1038.             exit(0);
    1039.         }
    1040.     }
    1041.     while(chon!=7);
    1042. }
    1043.  
    1044. //------------------------------------------------------------------//
    1045.  
    1046. void menuHoadon()
    1047. {
    1048.     int chon;
    1049.     DSHD hd("DSHD.DATA");
    1050.     do
    1051.     {
    1052.         clrscr();
    1053.         cout<<"\nQUAN LY HOA DON"<<"\n";
    1054.         cout<<"\n1.GHI HOA DON"<<"\n";
    1055.         cout<<"\n2.HIEN HOA DON"<<"\n";
    1056.         cout<<"\n3.TRO VE MENU TRUOC"<<"\n";
    1057.         cout<<"\n4.THOAT"<<"\n";
    1058.         cout<<"\nCHON 1 TRONG CAC CHUC NANG TREN: ";cin>>chon;
    1059.         clrscr();
    1060.         switch(chon)
    1061.         {
    1062.         case 1:
    1063.             hd.ghi_hoa_don();break;
    1064.         case 2:
    1065.             hd.hien_hoa_don();break;
    1066.         case 4:
    1067.             exit(0);
    1068.         }
    1069.     }
    1070.     while(chon!=3);
    1071. }
    1072.  
    1073. //========================CHUONG TRINH CHINH=======================//
    1074.  
    1075. void main()
    1076. {
    1077.     int chon;
    1078.     do
    1079.     {
    1080.         clrscr();
    1081.         cout<<"\nCHUONG TRINH QUAN LY KHACH SAN"<<"\n";
    1082.         cout<<"\n1.QUAN LY PHONG"<<"\n";
    1083.         cout<<"\n2.QUAN LY KHACH"<<"\n";
    1084.         cout<<"\n3.QUAN LY HOA DON"<<"\n";
    1085.         cout<<"\n4.THOAT"<<"\n";
    1086.         cout<<"\nCHON 1 TRONG CAC CHUC NANG TREN: ";cin>>chon;
    1087.         clrscr();
    1088.         switch(chon)
    1089.         {
    1090.         case 1:
    1091.             menuPhong();break;
    1092.         case 2:
    1093.             menuKhach();break;
    1094.         case 3:
    1095.             menuHoadon();break;
    1096.         }
    1097.     }
    1098.     while(chon!=4);
    1099. }

    Lưu ý bỏ code vào thẻ code
    Đã được chỉnh sửa lần cuối bởi rox_rook : 21-05-2008 lúc 04:51 PM.

  9. #9
    Ngày gia nhập
    12 2006
    Nơi ở
    US
    Bài viết
    1,917

    cảm ơn các bác. Cái ngày thì em hiểu rồi. Nhưng cái khó là làm sao truy nhập đến các thuộc tính ngày tháng năm của lớp Khách và lớp Hóa đơn cơ. Đây là toàn bộ Code, em post lên để các bác xem. Các bác chỉ cần bảo em tính ngày thôi, không cần làm gì hết kẻo " rối mắt". Các bác bỏ qua lớp phòng nhé, chỉ xem 2 lớp DSK và DSHD thôi.
    Bỏ POD ( plain old data type ) cho struct đi, thêm vào 1 phương thức get() là tính toán được chứ có gì đâu hả cậu ?

  10. #10
    Ngày gia nhập
    05 2008
    Bài viết
    0

    bác thử nói rõ hơn được không. Em vẫn chưa hiểu lắm

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn