public static bool LuuKQRaFile(MauNgauNhien mau, string pathout) { StreamWriter writer = new StreamWriter(pathout); if (writer == null) { return(false); } // luu gia tri ky vong va phuong sai writer.WriteLine("{0:f4} {1:f4}", mau.KyVong, mau.PhuongSai); // neu co uoc luong thi luu ket qua uoc luong if (mau.KetQuaULMoiNhat != null) { writer.WriteLine("{0}", mau.KetQuaULMoiNhat); } // neu co kiem dinh thi luu ket qua kiem dinh if (mau.KetQuaKDMoiNhat != null) { writer.WriteLine("{0}", mau.KetQuaKDMoiNhat); } writer.Close(); return(true); }
public static bool LuuMauRaFile(MauNgauNhien mau, string pathout) { StreamWriter writer = new StreamWriter(pathout); if (writer == null) { return(false); } // dong dau tien la 1 so the hien 3 kieu quan sat writer.WriteLine(mau.KieuQS); // dong thu hai la so thanh phan writer.WriteLine(mau.Count); // cac dong tiep theo foreach (QuanSat qs in mau) { string tam = qs.ToString(); string newtam = tam.Replace("\t", " "); writer.WriteLine(newtam); } writer.Close(); return(true); }
// Nhap du lieu tu file static void NhapDuLieuTuFile() { Console.Write("Ban nhap duong dan va ten file chua du lieu mau : "); string pathin = Console.ReadLine(); // doc mau vao mot bien tam // ly do vi co the doc bi loi, ham DocFile se tra ra null // lam mat du lieu da co trong bien mau cua chuong trinh MauNgauNhien mautam = XuLyFile.DocFile(pathin); if (mautam == null) { Console.WriteLine("Loi trong qua trinh doc file."); } else { mau = mautam; // gan chinh thuc vao bien mau cua chuong trinh Console.WriteLine("Doc file hoan tat"); } }
// Doc du lieu mau tu file public static MauNgauNhien DocFile(string path) { // mo file ra de doc StreamReader reader = new StreamReader(path); if (reader == null) { return(null); // neu khong mo duoc thi tra ra null } // Đọc dòng đầu tiên để xử lý kiểu quan sát String input = reader.ReadLine(); MauNgauNhien.KieuQuanSat kieuqs; if (!Enum.TryParse(input, out kieuqs)) // kiem tra xem du lieu o dong dau co phu hop voi 3 dang quan sat { return(null); // neu khong, tra ra null } // tao mau ngau nhien moi MauNgauNhien mau = new MauNgauNhien(kieuqs); // Đọc dòng tiếp theo để biết số thành phần input = reader.ReadLine(); int k; if (!int.TryParse(input, out k)) { return(null); // neu dong tiep theo khong dung khuon dang thi cung tra ra null } // Đọc từng dòng, tùy vào kiểu quan sát mà tách các giá trị ra double x; double y; int m; for (int i = 0; i < k; i++) { input = reader.ReadLine(); switch (kieuqs) { case MauNgauNhien.KieuQuanSat.ThongThuong: if (!TachGiaTri(input, out x)) { return(null); // neu khong tach dung thi tra ra null } mau.AddQuanSat(x); // tach duoc thi them quan sat do vao mau break; case MauNgauNhien.KieuQuanSat.ThuGon: if (!TachGiaTri(input, out x, out m)) { return(null); } mau.AddQuanSat(x, m); break; case MauNgauNhien.KieuQuanSat.Khoang: if (!TachGiaTri(input, out x, out y, out m)) { return(null); } mau.AddQuanSat(x, y, m); break; } } reader.Close(); // dong file lai return(mau); // tra mau doc duoc ra }
static MauNgauNhien mau = null; // chuong trinh chi can 1 bien de luu 1 mau ngau nhien 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) { // khi co 1 doi so, co the thuoc vao dang 2, 3, 4 int num; if (int.TryParse(args[0], out num)) // neu doi so do kieu int { kieuCP = KieuCuPhap.Dang3; // thi thuoc dang 3 } else if (args[0] == "-h") // neu la chuoi "-h" { kieuCP = KieuCuPhap.Dang2; // thuoc dang 2 } else // nguoc lai, thuoc dang 4 { kieuCP = KieuCuPhap.Dang4; } } else if (args.Length == 2) // hai doi so, thuoc dang 5 { kieuCP = KieuCuPhap.Dang5; } 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: // 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; case KieuCuPhap.Dang3: // Goi ham nhap du lieu voi so luong phan tu da biet NhapDuLieu(int.Parse(args[0])); // Hien thi Menu XuLyMenu(); break; case KieuCuPhap.Dang4: // Doc du lieu tu file mau = XuLyFile.DocFile(args[0]); if (mau == null) { Console.WriteLine("Loi trong qua trinh doc file."); } // Hien thi Menu XuLyMenu(); break; case KieuCuPhap.Dang5: // Doc du lieu tu file mau = XuLyFile.DocFile(args[0]); if (mau == null) { Console.WriteLine("Loi trong qua trinh doc file."); InHuongDanSuDung(); Console.ReadKey(); Environment.Exit(0); } // Tinh toan dua ket qua ra file UocLuong(); KiemDinh(); LuuKQRaFile(); // roi thoat chuong trinh Environment.Exit(0); break; } }
// Nhap du lieu voi so luong phan tu bat ky // hoac cho truoc hoac tu file // voi truong hop nhap gia tri voi so luong biet truoc thi num != 0 static void NhapDuLieu(int num = 0) { // Da co du lieu va nguoi su dung khong muon nhap du lieu moi // thi thoat khoi ham nay if (mau != null && !LaMuonNhapMoi()) { return; } // Nguoi su dung muon nhap moi // doc du lieu moi tu file Console.WriteLine("Ban muon nhap du lieu moi tu file ? (Yy/Nn) : "); string traloi = Console.ReadLine(); if (traloi == "Y" || traloi == "y") { NhapDuLieuTuFile(); } else // hoac thu cong { // Truoc tien, phai chon kieu quan sat MauNgauNhien.KieuQuanSat kieuQS = ChonKieuQuanSat(); // Tao moi MauNgauNhien mau = new MauNgauNhien(kieuQS); InHuongDanNhapLieu(num == 0); //bien dem dung de kiem soat trong truong hop nhap voi so luong da biet truoc int dem = 0; if (num != 0) { Console.WriteLine("Moi ban nhap {0} quan sat :", num); } else { Console.WriteLine("Moi ban bat dau nhap du lieu cac quan sat :"); } string quansat = NhapQuanSat(dem + 1); // Dieu kien 1 cho truong hop nhap voi so luong chua xac dinh // Dieu kien 2 cho truong hop nhap voi so luong da xac dinh // thay gop chung vao xu ly trong mot vong lap luon while ((quansat != null) || (dem != num)) { if (quansat == null) // nguoi su dung nhap CTRL+Z { if (num != 0) // ma dang nhap voi so luong xac dinh { Console.WriteLine("Ban nhap chua du so luong. Moi ban nhap tiep."); quansat = NhapQuanSat(dem + 1); // yeu cau nhap lai continue; } else { break; // nhap voi so luong chua xac dinh thi dung lai } } double x, y; int m; // tach chuoi du lieu nhap cua user ra cac thanh phan (phu thuoc vao kieu quan sat) if (!TachDuLieu(kieuQS, quansat, out x, out y, out m)) { // neu khong tach duoc InThongBaoLoiNhapLieu(); // in thong bao loi quansat = NhapQuanSat(dem + 1); // yeu cua nhap lai continue; } // neu tach duoc // phu thuoc kieu quan sat, them quan sat moi vao mau ngau nhien switch (kieuQS) { case MauNgauNhien.KieuQuanSat.ThongThuong: mau.AddQuanSat(x); break; case MauNgauNhien.KieuQuanSat.ThuGon: mau.AddQuanSat(x, m); break; case MauNgauNhien.KieuQuanSat.Khoang: mau.AddQuanSat(x, y, m); break; } dem++; // tang bien dem cho nhap da xac dinh so luong // khi so luong da xac dinh ma da nhap du so luong if (num != 0 && dem == num) { break; } // nhap quan sat tiep theo quansat = NhapQuanSat(dem + 1); } } }