// 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); } }
// 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); } } }
// 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; }
// 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); }
// 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); }
// 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); }
// 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); }
// 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); }
// 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); }
// 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); } }
// 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); }
// 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); }
// 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); }
// 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(); } }
// 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) : ")); }
// 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) : ")); }
// 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); }
// 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); } } }
// Ham lay thong tin cac don muon phong thuoc thoi gian public List <string> LayTTCacDonMPThuocThoiGian(NgayThang ngayBD, NgayThang ngayKT) { return(listDon.LayTTCacDonMPThuocThoiGian(ngayBD, ngayKT)); }
// 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)); }
// Ham lay ma cac phong duoc su dung trong thang public List <string> LayDSMaPhongDuocSDTrongThang(NgayThang thangnam) { return(listDon.LayDSMaPhongDuocSDTrongThang(thangnam)); }
// Ham tra ra ngay cuoi cung cua thang public static int NgayCuoiCungCuaThang(NgayThang thangnam) { return(NgayCuoiCungCuaThang(thangnam.thang, thangnam.nam)); }