// Ham xu ly doc du lieu tu file // dau vao : duongdan - duong dan den file du lieu // dau ra : du lieu doc duoc duoc them vao doi tuong quanlyphong public static void DocDuLieu(string duongdan, QuanLyPhong quanlyphong) { StreamReader sr = null; try { sr = new StreamReader(duongdan); // Doc du lieu danh sach Phong DocDSPhong(sr, quanlyphong); // Doc du lieu danh sach Don muon phong DocDSDonMuonPhong(sr, quanlyphong); } catch (FileNotFoundException fnx) { quanlyphong.XoaDuLieu(); throw fnx; } catch (XuLyTapTinException ex) { quanlyphong.XoaDuLieu(); throw ex; } finally { if (sr != null) { sr.Close(); } } }
// Ham xu ly ghi du lieu vao file public static void LuuDuLieu(string duongdan, QuanLyPhong quanlyphong) { StreamWriter sw = null; try { sw = new StreamWriter(duongdan, false); // Luu du lieu phong sw.WriteLine(quanlyphong.SoPhong); // luu so luong phong sw.WriteLine(quanlyphong.LayDSPhongDeLuuFile()); // Luu du lieu don muon phong sw.WriteLine(quanlyphong.SoDonMuonPhong); // luu so luong don muon phong sw.WriteLine(quanlyphong.LayDSDonMPDeLuuFile()); } catch (XuLyTapTinException ex) { throw ex; } finally { if (sw != null) { sw.Close(); } } }
// Ham xu ly nhap thong tin cho mot don muon phong moi static void ThemMotDonMuonMoi() { Console.WriteLine("\nMoi ban nhap thong tin don muon phong moi :"); Console.Write("Ten nguoi muon: "); string tenNgMuon = Console.ReadLine(); // nhap ten if (tenNgMuon == null) { throw new CtrlZException(); // neu bam Ctrl+Z thi nem ra ngoai le } Console.Write("Don vi cong tac: "); string dvCongtac = Console.ReadLine(); // nhap don vi cong tac if (dvCongtac == null) { throw new CtrlZException(); // neu bam Ctrl+Z thi nem ra ngoai le } string tieude = string.Format("Nha truong co {0} phong", quanlyPhong.SoPhong); InMenuCacLoai(tieude, quanlyPhong.LayDSMaPhong()); // in danh sach phong string maphong = XuLyNhapMaPhong(""); // nhap ma phong NgayThang ngayMuon = XuLyNhapNgayMuon(); // nhap ngay muon // lay ra danh sach cac tiet chua duoc muon cua phong trong ngay muon do List <int> tiettrong = quanlyPhong.LayDSTietTrong(maphong, ngayMuon); if (tiettrong.Count == 0) // neu danh sach tren rong { Console.WriteLine("Phong {0} da duoc muon ca ngay {1}", maphong, ngayMuon); } else { Console.Write("Trong ngay {0} tai phong {1}, ban co the muon cac tiet sau: ", ngayMuon, maphong); Console.WriteLine(LayChuoiSoTuList(tiettrong)); // in danh sach tren Console.WriteLine(); Console.WriteLine("Moi ban chon cac tiet muon:"); int tietBDMuon = XuLyNhapTiet("bat dau", 0, tiettrong); // nhap tiet bat dau muon // dua tren tiet bat dau muon, loai bo cac tiet khong the chon tiettrong = QuanLyPhong.LayDSTietTrong(tiettrong, tietBDMuon); if (tiettrong.Count == 0) // sau khi loc xong, neu danh sach tiet trong la rong { Console.WriteLine("Ban nen bat dau lai tu dau"); // thi khong the chon tiet ket thuc muon } else { Console.Write("Ban chi con co the chon cac tiet sau: "); Console.WriteLine(LayChuoiSoTuList(tiettrong)); // in lai danh sach moi int tietKTMuon = XuLyNhapTiet("ket thuc", tietBDMuon, tiettrong); // nhap tiet ket thuc muon // them don muon phong moi vao vi tri thich hop // duoc sap theo thu tu cua NgayMuon, TietBDMuon quanlyPhong.ThemDonVoiViTriThichHop(tenNgMuon, dvCongtac, maphong, ngayMuon, tietBDMuon, tietKTMuon); } } }
static void Main(string[] args) { // Kiem tra doi so dong lenh // de xac dinh dang cu phap dong lenh if (args.Length == 0) { kieuCP = KieuCuPhap.Dang1; // khi khong co doi so nao thi thuc hien theo dang 1 } else if (args.Length == 1 && args[0] == "-h") { kieuCP = KieuCuPhap.Dang2; // thuoc dang 2 } else { // In thong bao loi va hien thi huong dan su dung Console.WriteLine("Lenh goi chuong trinh cua ban bi sai"); kieuCP = KieuCuPhap.Dang2; } // xu ly theo dang cu phap dong lenh switch (kieuCP) { case KieuCuPhap.Dang1: // khoi tao doi tuong quan ly phong try { // Tao doi tuong va load du lieu tu file data.txt quanlyPhong = new QuanLyPhong(); XuLyTapTin.DocDuLieu(QuanLyPhong.DuongDanMacDinh, quanlyPhong); } catch (FileNotFoundException fx) { Console.WriteLine("LOI: Khong tim thay tap tin du lieu"); Console.ReadLine(); } catch (XuLyTapTinException ex) { Console.WriteLine("LOI: {0}", ex.Message); Console.ReadLine(); } finally { quanlyPhong.CoThayDoi = false; } // Hien thi Menu XuLyMenu(); break; case KieuCuPhap.Dang2: InHuongDanSuDung(); // In ra huong dan su dung Console.ReadKey(); // Cho nguoi sd doc huong dan va bam enter Environment.Exit(0); // roi thoat khoi chuong trinh break; } }
// 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 doc du lieu phong tu file private static void DocDSPhong(StreamReader sr, QuanLyPhong quanlyphong) { int sophong; // doc so phong, neu khong doc duoc thi nem ra loi if (!int.TryParse(sr.ReadLine(), out sophong)) { throw new XuLyTapTinException("Noi dung tap tin du lieu bi hong."); } for (int i = 0; i < sophong; i++) // duyet qua cac dong de doc thong tin cac phong { string input = sr.ReadLine(); // doc mot dong // neu khong doc duoc thi nem loi 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 3 thanh phan if (inputs.Length != 3) { throw new XuLyTapTinException("Noi dung tap tin du lieu bi hong."); } string maphong = inputs[0]; // thanh phan dau tien la ma phong // thanh phan thu hai la loai phong QuanLyPhong.LoaiPhong loaiPhong; if (!Enum.TryParse(inputs[1], out loaiPhong)) { throw new XuLyTapTinException("Noi dung tap tin du lieu bi hong."); } // thanh phan thu ba la suc chua int succhua; if (!int.TryParse(inputs[2], out succhua)) { throw new XuLyTapTinException("Noi dung tap tin du lieu bi hong."); } quanlyphong.ThemPhong(maphong, loaiPhong, succhua); // them phong moi vao cuoi danh sach } }
// 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); } } }