Beispiel #1
0
        // Ham them don muon phong moi vao vi tri thich hop
        // phu hop voi sap xep theo thoi gian
        public void ThemDonVoiViTriThichHop(string nguoiMuon, string dvCongTac, string maphong,
                                            NgayThang ngayMuon, int tietBDMuon, int tietKTMuon)
        {
            DonMuonPhong don = new DonMuonPhong(listDon.MaChoDonMoi, nguoiMuon, dvCongTac,
                                                listPhong[maphong], ngayMuon, tietBDMuon, tietKTMuon);

            if (don != null)
            {
                listDon.ThemThichHop(don);
            }
        }
Beispiel #2
0
        // Ham cho nhap thong tin moi vao cho don muon phong muon sua thong tin
        static void SuaMotDonMP(string madon)
        {
            Console.Write("Ten nguoi muon: ");
            string tenNgMuon = Console.ReadLine(); // nhap ten moi

            if (tenNgMuon == null)
            {
                throw new CtrlZException();
            }
            Console.Write("Don vi cong tac: ");
            string dvCongtac = Console.ReadLine(); // nhap don vi cong tac moi

            if (dvCongtac == null)
            {
                throw new CtrlZException();
            }

            string tieude = string.Format("Nha truong co {0} phong", quanlyPhong.SoPhong);

            InMenuCacLoai(tieude, quanlyPhong.LayDSMaPhong()); // in danh sach phong
            string    maphong  = XuLyNhapMaPhong("");          // chon ma phong moi
            NgayThang ngayMuon = XuLyNhapNgayMuon();           // nhap ngay moi

            // lay ra danh sach cac tiet chua duoc muon
            List <int> tiettrong = quanlyPhong.LayDSTietTrong(maphong, ngayMuon);

            if (tiettrong.Count == 0) // neu khong con tiet nao trong
            {
                Console.WriteLine("Phong {0} da duoc muon ca ngay {1}", maphong, ngayMuon);
            }
            else
            {                                                   // neu con trong
                Console.Write("Trong ngay {0} tai phong {1}, ban co the muon cac tiet sau: ", ngayMuon, maphong);
                Console.WriteLine(LayChuoiSoTuList(tiettrong)); // in ra ca tiet trong
                Console.WriteLine();

                Console.WriteLine("Moi ban chon cac tiet muon:");
                int tietBDMuon = XuLyNhapTiet("bat dau", 0, tiettrong);        // nhap tiet bat dau muon
                tiettrong = QuanLyPhong.LayDSTietTrong(tiettrong, tietBDMuon); // loc lai danh sach tiet co the muon

                if (tiettrong.Count == 0)                                      // neu sau khi loc khong con tiet nao
                {
                    Console.WriteLine("Ban nen bat dau lai tu dau");
                }
                else
                {
                    Console.Write("Ban chi con co the chon cac tiet sau: ");
                    Console.WriteLine(LayChuoiSoTuList(tiettrong));                   // in lai danh sach tiet trong sau khi da loc
                    int tietKTMuon = XuLyNhapTiet("ket thuc", tietBDMuon, tiettrong); // nhap tiet ket thuc muon

                    quanlyPhong.SuaTTMotDonMuonPhong(madon, tenNgMuon, dvCongtac, maphong, ngayMuon, tietBDMuon, tietKTMuon);
                }
            }
        }
Beispiel #3
0
 // Ham cau tu
 public DonMuonPhong(string ma, string tenNguoiMuon, string dvCongTac, Phong phongMuon,
                     NgayThang ngayMuon, int tietBDMuon, int tietKTMuon, bool cothaydoi = true)
 {
     this.ma           = ma;
     this.TenNguoiMuon = tenNguoiMuon;
     this.DVCongTac    = dvCongTac;
     this.PhongMuon    = phongMuon;
     this.NgayMuon     = ngayMuon;
     this.TietBDMuon   = tietBDMuon;
     this.TietKTMuon   = tietKTMuon;
     this.CoThayDoi    = cothaydoi;
 }
Beispiel #4
0
        // Ham lay thong tin cac don muon phong thuoc khoang thoi gian
        public List <string> LayTTCacDonMPThuocThoiGian(NgayThang ngayBD, NgayThang ngayKT)
        {
            List <string> list = new List <string>();

            foreach (DonMuonPhong don in this)
            {
                if (ngayBD <= don.NgayMuon && don.NgayMuon <= ngayKT)
                {
                    list.Add(don.ToString());
                }
            }
            return(list);
        }
Beispiel #5
0
        // Ham lay danh sach ma cac phong duoc su dung trong thang
        public List <string> LayDSMaPhongDuocSDTrongThang(NgayThang thangnam)
        {
            List <string> list = new List <string>();

            foreach (DonMuonPhong don in this)
            {
                if (don.NgayMuon.Thang == thangnam.Thang && don.NgayMuon.Nam == thangnam.Nam &&
                    list.IndexOf(don.PhongMuon.MaPhong) < 0)
                {
                    list.Add(don.PhongMuon.MaPhong);
                }
            }
            return(list);
        }
Beispiel #6
0
        // Ham chuyen doi mot chuoi thanh kieu NgayThang
        // Neu tach duoc thi tra ra true, va doi tuong kieu NgayThang o tham so ngayTachDuoc
        // nguoc lai thi tra ra false
        public static bool TryParse(string chuoiNgay, out NgayThang ngayTachDuoc)
        {
            int ngay, thang, nam;

            ngayTachDuoc = new NgayThang();
            if (TachGiaTriNgayThangNam(chuoiNgay, out ngay, out thang, out nam))
            {
                ngayTachDuoc.ngay  = ngay;
                ngayTachDuoc.thang = thang;
                ngayTachDuoc.nam   = nam;
                return(true);
            }
            ngayTachDuoc = null;
            return(false);
        }
Beispiel #7
0
        // Ham lay thong tin cac don muon phong cua mot nguoi vao thang nao do
        public List <string> LayTTCacDonMPTheoNguoiMuon(string nguoiMuon, NgayThang ngaythang)
        {
            List <string> list = new List <string>();

            foreach (DonMuonPhong don in this)
            {
                if (nguoiMuon == don.TenNguoiMuon &&
                    don.NgayMuon.Thang == ngaythang.Thang &&
                    don.NgayMuon.Nam == ngaythang.Nam)
                {
                    list.Add(don.ToString());
                }
            }
            return(list);
        }
Beispiel #8
0
        // Ham tinh so lan duoc su dung cua mot phong trong thang
        public int TinhSoLanSD(string maphong, NgayThang thangnam)
        {
            int dem = 0;

            foreach (DonMuonPhong don in this)
            {
                if (don.PhongMuon.MaPhong == maphong &&
                    don.NgayMuon.Thang == thangnam.Thang &&
                    don.NgayMuon.Nam == thangnam.Nam)
                {
                    dem += don.TietKTMuon - don.TietBDMuon + 1;
                }
            }
            return(dem);
        }
Beispiel #9
0
        // Ham tra ra so ngay chu nhat cua thang
        public static int SoNgayCN(NgayThang thangnam)
        {
            NgayThang ngayDauThang = new NgayThang(1, thangnam.Thang, thangnam.Nam);
            // tinh ngay tuyet doi cua ngay 01/thang/nam
            int ngayTDDauThang = NgayTuyetDoi(ngayDauThang);
            // xac dinh ngay cuoi cung cua thang la ngay nao (28, 29, 30 hay 31 ?)
            // tinh ngay tuyet doi cua ngay cuoi cung cua thang do
            NgayThang ngayCuoiThang   = new NgayThang(NgayCuoiCungCuaThang(thangnam), thangnam.Thang, thangnam.Nam);
            int       ngayTDCuoiThang = NgayTuyetDoi(ngayCuoiThang);

            // cong thuc ky dieu
            int soNgayCN = (ngayTDCuoiThang - ngayTDDauThang - (ngayTDCuoiThang % 7 + 1) + 8) / 7;

            return(soNgayCN);
        }
Beispiel #10
0
        // Ham them don muon phong moi vao cuoi danh sach Don muon phong
        public void ThemDon(string ma, string nguoiMuon, string dvCongTac, string maphong,
                            NgayThang ngayMuon, int tietBDMuon, int tietKTMuon)
        {
            if (LaCoMaDon(ma))
            {
                throw new ArgumentException("Trung ma don muon phong.");
            }

            DonMuonPhong don = new DonMuonPhong(ma, nguoiMuon, dvCongTac,
                                                listPhong[maphong], ngayMuon, tietBDMuon, tietKTMuon);

            if (don != null)
            {
                listDon.Add(don);
            }
        }
Beispiel #11
0
        // Tinh so ngay trong nam cho den
        // thang/ngay/nam nhap vao
        private static int SoNgayTuDauNam(NgayThang ngay)
        {
            // gia su cac thang deu 31 ngay
            int songay = (ngay.Thang - 1) * 31 + ngay.Ngay;

            // hieu chinh cac thang sau thang hai
            if (ngay.Thang > 2)
            {
                songay = songay - ((4 * ngay.Thang + 23) / 10);
                if (LaNamNhuan(ngay.Nam))
                {
                    songay = songay + 1;
                }
            }

            return(songay);
        }
Beispiel #12
0
        // Ham lay danh sach phong trong trong ngay nao do va phu hop voi dieu kien
        // ve loai phong va suc chua
        public List <string> TimPhongTrong(NgayThang ngay, LoaiPhong loaiphong, int succhua)
        {
            List <string> list = new List <string>();
            // lay danh sach cac phong duoc su dung trong thang
            List <string> DSPhongDuocSD = LayDSMaPhongDuocSDTrongThang(ngay);

            // tu do, lay danh sach cac phong khong duoc su dung trong thang
            // va phu hop voi suc chua
            foreach (Phong p in listPhong)
            {
                if (DSPhongDuocSD.IndexOf(p.MaPhong) < 0 && p.SucChua >= succhua &&
                    ((loaiphong == LoaiPhong.PhongHoc && p is PhongHoc) ||
                     (loaiphong == LoaiPhong.ThucHanh && p is ThucHanh)))
                {
                    list.Add(p.MaPhong);
                }
            }
            return(list);
        }
Beispiel #13
0
        // Ham xu ly nhap thang va nam
        static NgayThang XuLyNhapThangNam()
        {
            NgayThang ngay;
            int       thang, nam;
            string    temp;

            Console.Write("Nhap thang : ");
            do
            {
                temp = Console.ReadLine();
                if (temp == null)
                {
                    throw new CtrlZException();
                }
                // neu gia tri nhap vao khong phai so hoac nho hon, bang 0 hoac lon hon 12
                if (int.TryParse(temp, out thang) && thang > 0 && thang <= 12)
                {
                    break;
                }
                Console.Write("Ban nhap sai, moi ban nhap lai : "); // yeu cau nhap lai
            }while (true);

            Console.Write("Nhap nam : ");
            do
            {
                temp = Console.ReadLine();
                if (temp == null)
                {
                    throw new CtrlZException();
                }
                // neu gia tri nhap vao khong phai so hoac nho hon 0
                if (int.TryParse(temp, out nam) && nam > 0)
                {
                    break;
                }
                Console.Write("Ban nhap sai, moi ban nhap lai : "); // yeu cau nhap lai
            } while (true);

            ngay = new NgayThang(1, thang, nam);
            return(ngay);
        }
Beispiel #14
0
 // CAI DAT GIAO DIEN ICOMPARABLE
 // de dung voi ham Sort cua cac lop Collection
 // va dung trong viec nap chong toan tu so sanh
 public int CompareTo(object o)
 {
     if (o is NgayThang)
     {
         NgayThang n = (NgayThang)o;
         if (this == n)
         {
             return(0);
         }
         if (this.Nam > n.Nam ||
             (this.Nam == n.Nam && this.Thang > n.Thang) ||
             (this.Nam == n.Nam && this.Thang == n.Thang && this.Ngay > n.Ngay))
         {
             return(1);
         }
         return(-1);
     }
     else
     {
         throw new ArgumentException();
     }
 }
Beispiel #15
0
        // Ham xu ly in danh sach cac don muon phong trong khoang thoi gian
        static void InTheoThoiGian()
        {
            do
            {
                Console.Clear();
                Console.WriteLine("DANH SACH DON MUON PHONG THEO THOI GIAN");

                Console.WriteLine("Moi ban nhap ngay bat dau.");
                NgayThang ngayBD = XuLyNhapNgayMuon(); // nhap ngay bat dau muon thong ke
                Console.WriteLine("Moi ban nhap ngay ket thuc.");
                NgayThang ngayKT = XuLyNhapNgayMuon(); // nhap ngay ket thuc thong ke

                List <string> listDon = quanlyPhong.LayTTCacDonMPThuocThoiGian(ngayBD, ngayKT);

                if (listDon.Count == 0)
                {
                    Console.WriteLine("Khong co don nao thuoc khoang thoi gian tren!");
                }
                else
                {
                    Console.WriteLine("Co {2} don muon phong tu ngay {0} den ngay {1} :",
                                      ngayBD, ngayKT, listDon.Count);

                    int i = 0;
                    foreach (string don in listDon)
                    {
                        Console.WriteLine("{0}.", ++i);
                        Console.WriteLine(don);

                        if (i % 10 == 0)       // in 10 don roi dung lai
                        {
                            Console.ReadKey(); // bam phim bat ky de in 10 don tiep theo
                        }
                    }
                }
            } while (XuLyCauHoiYesNo("\nBan co muon thong ke tiep khong ? (Y/N) : "));
        }
Beispiel #16
0
        // Ham xu ly in danh sach cac don muon phong theo nguoi muon va thang
        static void InTheoNgMuonVaThang()
        {
            do
            {
                Console.Clear();
                Console.WriteLine("DANH SACH DON MUON PHONG THEO NGUOI MUON VA THANG");

                Console.Write("Nhap ten nguoi muon : ");
                string    ten      = Console.ReadLine();
                NgayThang thangnam = XuLyNhapThangNam();

                List <string> listDon = quanlyPhong.LayTTCacDonMPTheoNguoiMuon(ten, thangnam);

                if (listDon.Count == 0)
                {
                    Console.WriteLine("{0} khong muon phong nao trong thang {1} nam {2}.", ten, thangnam.Thang, thangnam.Nam);
                }
                else
                {
                    Console.WriteLine("Co {0} don muon phong do {1} muon trong thang {2} nam {3} :",
                                      listDon.Count, ten, thangnam.Thang, thangnam.Nam);

                    int i = 0;
                    foreach (string don in listDon)
                    {
                        Console.WriteLine("{0}.", ++i);
                        Console.WriteLine(don);

                        if (i % 10 == 0)       // in 10 don roi dung lai
                        {
                            Console.ReadKey(); // bam phim bat ky de in 10 don tiep theo
                        }
                    }
                }
            } while (XuLyCauHoiYesNo("\nBan co muon thong ke tiep khong ? (Y/N) : "));
        }
Beispiel #17
0
        // Ham xu ly nhap ngay muon
        static NgayThang XuLyNhapNgayMuon()
        {
            NgayThang ngayMuon = null;

            Console.Write("Ngay thang (dd/mm/yyyy) : "); // Yeu cau nhap ngay thang dung dang
            string ngaythang;

            do
            {
                ngaythang = Console.ReadLine();
                if (ngaythang == null)
                {
                    throw new CtrlZException();
                }
                if (NgayThang.TryParse(ngaythang, out ngayMuon)) // ngay thang nhap dung
                {
                    break;
                }
                // neu sai thi yeu cau nhap lai
                Console.WriteLine("Ngay ban nhap khong dung.");
                Console.Write("De nghi ban nhap lai dung dang dd/mm/yyyy hoac bam Ctrl+Z de thoat: ");
            } while (true);
            return(ngayMuon);
        }
Beispiel #18
0
        // Ham doc du lieu don muon phong tu file
        private static void DocDSDonMuonPhong(StreamReader sr, QuanLyPhong quanlyphong)
        {
            int sodon;

            // doc so luong don muon phong, neu khong dung thi nem loi ra
            if (!int.TryParse(sr.ReadLine(), out sodon))
            {
                throw new XuLyTapTinException("Noi dung tap tin du lieu bi hong.");
            }

            for (int i = 0; i < sodon; i++)   // duyet qua tung dong de doc du lieu cac don muon phong
            {
                string input = sr.ReadLine(); // doc mot dong
                // neu khong doc duoc thi nem loi ra
                if (string.IsNullOrEmpty(input))
                {
                    throw new XuLyTapTinException("Noi dung tap tin du lieu bi hong.");
                }

                // tach gia tri
                string[] inputs = input.Split(',');

                // chuỗi phải chứa 7 thanh phan
                if (inputs.Length != 7)
                {
                    throw new XuLyTapTinException("Noi dung tap tin du lieu bi hong.");
                }

                string madon = inputs[0]; // thanh phan dau tien la ma don

                // thanh phan thu hai la ten nguoi muon
                string tenNgMuon = inputs[1];
                // thanh phan thu ba la don vi cong tac
                string dvCongtac = inputs[2];
                // thanh phan thu tu la ma phong
                string maphong = inputs[3];
                // kiem tra xem phong co co trong danh sach phong hay khong?
                if (!quanlyphong.LaCoMaPhong(maphong))
                {
                    throw new XuLyTapTinException("Noi dung tap tin du lieu bi loi.");
                }
                // thanh phan thu nam la ngay muon
                NgayThang ngayMuon;
                if (!NgayThang.TryParse(inputs[4], out ngayMuon))
                {
                    throw new XuLyTapTinException("Noi dung tap tin du lieu bi hong");
                }
                // thanh phan thu sau la tiet bat dau muon
                int tietBDMuon;
                if (!int.TryParse(inputs[5], out tietBDMuon))
                {
                    throw new XuLyTapTinException("Noi dung tap tin du lieu bi hong");
                }
                // thanh phan thu bay la tiet ket thuc muon
                int tietKTMuon;
                if (!int.TryParse(inputs[6], out tietKTMuon))
                {
                    throw new XuLyTapTinException("Noi dung tap tin du lieu bi hong");
                }

                try
                {
                    quanlyphong.ThemDon(madon, tenNgMuon, dvCongtac,
                                        maphong, ngayMuon, tietBDMuon, tietKTMuon); // them don moi vao danh sach
                }
                catch (ArgumentException ex)
                {
                    string mess = string.Format("{0}. Noi dung tap tin du lieu bi hong", ex.Message);
                    throw new XuLyTapTinException(mess);
                }
            }
        }
Beispiel #19
0
 // Ham lay thong tin cac don muon phong thuoc thoi gian
 public List <string> LayTTCacDonMPThuocThoiGian(NgayThang ngayBD, NgayThang ngayKT)
 {
     return(listDon.LayTTCacDonMPThuocThoiGian(ngayBD, ngayKT));
 }
Beispiel #20
0
 // Ham lay thong tin cac don muon phong cua mot nguoi trong thang nao do
 public List <string> LayTTCacDonMPTheoNguoiMuon(string nguoiMuon, NgayThang ngaythang)
 {
     return(listDon.LayTTCacDonMPTheoNguoiMuon(nguoiMuon, ngaythang));
 }
Beispiel #21
0
 // Ham lay ma cac phong duoc su dung trong thang
 public List <string> LayDSMaPhongDuocSDTrongThang(NgayThang thangnam)
 {
     return(listDon.LayDSMaPhongDuocSDTrongThang(thangnam));
 }
Beispiel #22
0
 // Ham tra ra ngay cuoi cung cua thang
 public static int NgayCuoiCungCuaThang(NgayThang thangnam)
 {
     return(NgayCuoiCungCuaThang(thangnam.thang, thangnam.nam));
 }