示例#1
0
        public void XuLyChucNang(XuLyMenu.TuyChon tuyChon, int menu, DanhSachMayTinh danhSachMayTinh)
        {
            Object x;
            Object y;

            switch (tuyChon)
            {
            case XuLyMenu.TuyChon.TimKiem:
                switch (menu)
                {
                case 0:
                    WriteLine("\n Bạn đã lựa chọn đi ngủ.\n\tCÚT");
                    Environment.Exit(0);
                    return;

                case 1:
                    WriteLine("\nQuay về trang trước");
                    return;

                case 2:
                    Clear();
                    WriteLine("\nTìm máy tính có dung lượng ram thấp nhất");
                    WriteLine("\nMáy tính có dung lượng ram thấp nhất");
                    xuLyDuLieuMayTinh.Xuat(xuLyDuLieuMayTinh.DanhSachMayTinhMinMaxTheoThuocTinh <RAM>
                                               (danhSachMayTinh, MayTinh.Tinh.sCapacity, XuLyDuLieuMayTinh.MinMax.Min).ConvertAll(x => (object)x));
                    break;

                case 3:
                    Clear();
                    WriteLine("\nTìm máy tính có dung lượng ram lớn nhất");
                    WriteLine("\nMáy tính có dung lượng ram lớn nhất");
                    xuLyDuLieuMayTinh.Xuat(xuLyDuLieuMayTinh.DanhSachMayTinhMinMaxTheoThuocTinh <RAM>
                                               (danhSachMayTinh, MayTinh.Tinh.sCapacity, XuLyDuLieuMayTinh.MinMax.Max).ConvertAll(x => (object)x));
                    break;

                case 4:
                    Clear();
                    WriteLine("\nTìm hãng sản xuất RAM có dung lượng thấp nhất");
                    WriteLine("\nHãng sản xuất RAM có dung lượng thấp nhất");
                    xuLyDuLieuMayTinh.Xuat(xuLyDuLieuMayTinh.DanhSachHangMinMaxThuocTinh <RAM>
                                               (danhSachMayTinh, MayTinh.Tinh.sCapacity, XuLyDuLieuMayTinh.MinMax.Min).ConvertAll(x => (object)x));
                    break;

                case 5:
                    Clear();
                    WriteLine("\nTìm hãng sản xuất RAM có dung lượng lớn nhất");
                    WriteLine("\nHãng sản xuất RAM có dung lượng lớn nhất");
                    xuLyDuLieuMayTinh.Xuat(xuLyDuLieuMayTinh.DanhSachHangMinMaxThuocTinh <RAM>
                                               (danhSachMayTinh, MayTinh.Tinh.sCapacity, XuLyDuLieuMayTinh.MinMax.Max).ConvertAll(x => (object)x));
                    break;

                case 6:
                    Clear();
                    WriteLine("\nTìm máy tính có tốc độc CPU thấp nhất");
                    WriteLine("\nMáy tính có tốc độc CPU thấp nhất");
                    xuLyDuLieuMayTinh.Xuat(xuLyDuLieuMayTinh.DanhSachMayTinhMinMaxTheoThuocTinh <CPU>
                                               (danhSachMayTinh, MayTinh.Tinh.Speed, XuLyDuLieuMayTinh.MinMax.Min).ConvertAll(x => (object)x));
                    break;

                case 7:
                    Clear();
                    WriteLine("\nTìm máy tính có tốc độc CPU lớn nhất");
                    WriteLine("\nMáy tính có tốc độc CPU lớn nhất");
                    xuLyDuLieuMayTinh.Xuat(xuLyDuLieuMayTinh.DanhSachMayTinhMinMaxTheoThuocTinh <CPU>
                                               (danhSachMayTinh, MayTinh.Tinh.Speed, XuLyDuLieuMayTinh.MinMax.Max).ConvertAll(x => (object)x));
                    break;

                case 8:
                    Clear();
                    WriteLine("\nTìm hãng sản xuất CPU có tốc độ thấp nhất");
                    WriteLine("\nHãng sản xuất CPU có tốc độ thấp nhất");
                    xuLyDuLieuMayTinh.Xuat(xuLyDuLieuMayTinh.DanhSachHangMinMaxThuocTinh <CPU>
                                               (danhSachMayTinh, MayTinh.Tinh.Speed, XuLyDuLieuMayTinh.MinMax.Min).ConvertAll(x => (object)x));
                    break;

                case 9:
                    Clear();
                    WriteLine("\nTìm hãng sản xuất CPU có tốc độ lớn nhất");
                    WriteLine("\nHãng sản xuất CPU có tốc độ lớn nhất");
                    xuLyDuLieuMayTinh.Xuat(xuLyDuLieuMayTinh.DanhSachHangMinMaxThuocTinh <CPU>
                                               (danhSachMayTinh, MayTinh.Tinh.Speed, XuLyDuLieuMayTinh.MinMax.Max).ConvertAll(x => (object)x));
                    break;

                case 10:
                    Clear();
                    WriteLine("\nTìm máy tính có dung lượng RAM(Gb) lớn hơn mức dung lượng nhập");
                    Write("\n Nhập vào mức dung lượng RAM(Gb) cần xét >> ");
                    x = float.Parse(ReadLine());
                    WriteLine("\nMáy tính có dung lượng RAM(Gb) lớn hơn mức dung lượng nhập");
                    xuLyDuLieuMayTinh.Xuat(xuLyDuLieuMayTinh.DSMTThuocTinhLonHonX <RAM>
                                               (danhSachMayTinh, MayTinh.Tinh.sCapacity, (float)x).ConvertAll(x => (object)x));
                    break;

                case 11:
                    Clear();
                    WriteLine("\nTìm máy tính có tốc độ CPU(Ghz) lớn hơn mức dung lượng nhập");
                    Write("\n Nhập vào mức tốc độ CPU(Ghz) cần xét >> ");
                    x = float.Parse(ReadLine());
                    WriteLine("\nMáy tính có tốc độ CPU(Ghz) lớn hơn mức dung lượng nhập");
                    xuLyDuLieuMayTinh.Xuat(xuLyDuLieuMayTinh.DSMTThuocTinhLonHonX <CPU>
                                               (danhSachMayTinh, MayTinh.Tinh.Speed, (float)x).ConvertAll(x => (object)x));
                    break;

                case 12:
                    Clear();
                    WriteLine("\nTìm máy tính theo dung lượng RAM và hảng sản xuất");
                    WriteLine("\n\t\tDANH SÁCH MỨC DUNG LƯỢNG RAM TỒN TẠI TRONG DỮ LIỆU");
                    xuLyDuLieuMayTinh.XuatDuLieuDuocCanLe(xuLyDuLieuMayTinh.DanhSachThuocTinhTheoThietBi <RAM>
                                                              (danhSachMayTinh, MayTinh.Tinh.sCapacity).ConvertAll(x => (object)x));
                    Write("\n Nhập vào mức dung lượng RAM(Gb) cần xét >> ");
                    x = float.Parse(ReadLine());
                    WriteLine("\n\t\tDANH SÁCH CÁC HÃNG RAM TỒN TẠI TRONG DỮ LIỆU");
                    xuLyDuLieuMayTinh.XuatDuLieuDuocCanLe(xuLyDuLieuMayTinh.DanhSachHangTheoThietBi <RAM>
                                                              (danhSachMayTinh).ConvertAll(x => (object)x));
                    Write("\n Nhập vào hãng sản xuất RAM tương ứng cần xét >> ");
                    y = ReadLine();
                    WriteLine("\nMáy tính theo dung lượng {0}Gb và hãng sản xuất {1}", x, y);
                    xuLyDuLieuMayTinh.Xuat(xuLyDuLieuMayTinh.DSMTTheoThuocTinh_Hang <RAM>
                                               (danhSachMayTinh, MayTinh.Tinh.sCapacity, (float)x, (string)y).ConvertAll(x => (object)x));
                    break;

                case 13:
                    Clear();
                    WriteLine("\nTìm máy tính theo tốc độ CPU và hảng sản xuất");
                    WriteLine("\n\t\tDANH SÁCH MỨC TỐC ĐỘ CPU TỒN TẠI TRONG DỮ LIỆU");
                    xuLyDuLieuMayTinh.XuatDuLieuDuocCanLe(xuLyDuLieuMayTinh.DanhSachThuocTinhTheoThietBi <CPU>
                                                              (danhSachMayTinh, MayTinh.Tinh.Speed).ConvertAll(x => (object)x));
                    Write("\n Nhập vào mức tốc độ CPU(Ghz) cần xét >> ");
                    x = float.Parse(ReadLine());
                    WriteLine("\n\t\tDANH SÁCH CÁC HÃNG CPU TỒN TẠI TRONG DỮ LIỆU");
                    xuLyDuLieuMayTinh.XuatDuLieuDuocCanLe(xuLyDuLieuMayTinh.DanhSachHangTheoThietBi <CPU>
                                                              (danhSachMayTinh).ConvertAll(x => (object)x));
                    Write("\n Nhập vào hãng sản xuất CPU tương ứng cần xét >> ");
                    y = ReadLine();
                    WriteLine("\nMáy tính theo tốc độ {0}Ghz và hãng sản xuất {1}", x, y);
                    xuLyDuLieuMayTinh.Xuat(xuLyDuLieuMayTinh.DSMTTheoThuocTinh_Hang <RAM>
                                               (danhSachMayTinh, MayTinh.Tinh.sCapacity, (float)x, (string)y).ConvertAll(x => (object)x));
                    break;
                }
                break;

            case XuLyMenu.TuyChon.SapXep:
                switch (menu)
                {
                case 0:
                    WriteLine("\n Bạn đã lựa chọn đi ngủ.\n\tCÚT");
                    Environment.Exit(0);
                    return;

                case 1:
                    WriteLine("\nQuay về trang trước");
                    return;

                case 2:
                    Clear();
                    WriteLine("\nSắp xếp danh sách máy tính tăng dần theo dung lượng RAM(Gb)");
                    WriteLine("\nDanh sách máy tính sau khi tăng dần theo dung lượng RAM(Gb)");
                    xuLyDuLieuMayTinh.SapXepTheoKieuGoi <RAM>
                        (danhSachMayTinh, MayTinh.Tinh.sCapacity, XuLyDuLieuMayTinh.UpDown.Up);
                    danhSachMayTinh.Xuat();
                    break;

                case 3:
                    Clear();
                    WriteLine("\nSắp xếp danh sách máy tính giảm dần theo dung lượng RAM(Gb)");
                    WriteLine("\nDanh sách máy tính sau khi giảm dần theo dung lượng RAM(Gb)");
                    xuLyDuLieuMayTinh.SapXepTheoKieuGoi <RAM>
                        (danhSachMayTinh, MayTinh.Tinh.sCapacity, XuLyDuLieuMayTinh.UpDown.Down);
                    danhSachMayTinh.Xuat();
                    break;

                case 4:
                    Clear();
                    WriteLine("\nSắp xếp danh sách máy tính tăng dần theo tốc độ CPU(Ghz)");
                    WriteLine("\nDanh sách máy tính sau khi tăng dần theo tốc độ CPU(Ghz)");
                    xuLyDuLieuMayTinh.SapXepTheoKieuGoi <CPU>
                        (danhSachMayTinh, MayTinh.Tinh.Speed, XuLyDuLieuMayTinh.UpDown.Up);
                    danhSachMayTinh.Xuat();
                    break;

                case 5:
                    Clear();
                    WriteLine("\nSắp xếp danh sách máy tính giảm dần theo tốc độ CPU(Ghz)");
                    WriteLine("\nDanh sách máy tính sau khi giảm dần theo tốc độ CPU(Ghz)");
                    xuLyDuLieuMayTinh.SapXepTheoKieuGoi <CPU>
                        (danhSachMayTinh, MayTinh.Tinh.Speed, XuLyDuLieuMayTinh.UpDown.Down);
                    danhSachMayTinh.Xuat();
                    break;
                }
                break;

            case XuLyMenu.TuyChon.Khac:
                switch (menu)
                {
                case 0:
                    WriteLine("\n Bạn đã lựa chọn đi ngủ.\n\tCÚT");
                    Environment.Exit(0);
                    return;

                case 1:
                    WriteLine("\nQuay về trang trước");
                    return;

                case 2:
                    Clear();
                    WriteLine("\nXóa máy tính theo thuộc tính");
                    x = (MayTinh.Tinh) int.MaxValue;
                    while ((MayTinh.Tinh)x < MayTinh.Tinh.Speed || (MayTinh.Tinh)x < MayTinh.Tinh.sCapacity)
                    {
                        Clear();
                        WriteLine("\n\t\tDANH SÁCH CÁC HÃNG RAM TỒN TẠI TRONG DỮ LIỆU");
                        xuLyDuLieuMayTinh.XuatDuLieuDuocCanLe(xuLyDuLieuMayTinh.DanhSachHangTheoThietBi <RAM>
                                                                  (danhSachMayTinh).ConvertAll(x => (object)x));
                        WriteLine("\n\t\tDANH SÁCH MỨC TỐC ĐỘ CPU TỒN TẠI TRONG DỮ LIỆU");
                        xuLyDuLieuMayTinh.XuatDuLieuDuocCanLe(xuLyDuLieuMayTinh.DanhSachThuocTinhTheoThietBi <CPU>
                                                                  (danhSachMayTinh, MayTinh.Tinh.Speed).ConvertAll(x => (object)x));
                        WriteLine("\n\n\tBẠN MUỐN XÓA THEO KIỂU THUỘC TÍNH NÀO (RAM - CPU) ?");
                        WriteLine("\nBạn phải nhập trong phạm vi quy định!");
                        WriteLine("\nVD: RAM nhập 0\tCPU nhập 1");
                        Write("\nXin mời nhập kiểu thuộc tính để xóa (RAM = 0 or CPU = 1)? >> ");
                        x = (MayTinh.Tinh) int.Parse(ReadLine());
                    }
                    if ((MayTinh.Tinh)x == MayTinh.Tinh.sCapacity)
                    {
                        while ((int)x < 0 || (int)x > xuLyDuLieuMayTinh.MinMaxThuocTinhThietBi <RAM>
                                   (danhSachMayTinh, MayTinh.Tinh.sCapacity, XuLyDuLieuMayTinh.MinMax.Max))
                        {
                            Clear();
                            WriteLine("\n\t\tDANH SÁCH MỨC DUNG LƯỢNG RAM TỒN TẠI TRONG DỮ LIỆU");
                            xuLyDuLieuMayTinh.XuatDuLieuDuocCanLe(xuLyDuLieuMayTinh.DanhSachThuocTinhTheoThietBi <RAM>
                                                                      (danhSachMayTinh, MayTinh.Tinh.sCapacity).ConvertAll(x => (object)x));
                            WriteLine("\n\nVD: 4Gb RAM thì nhập 4");
                            Write("\n\tMời nhập dữ liệu tương ứng với kiểu thuộc tính đã chọn ở trên >> ");
                            x = float.Parse(ReadLine());
                        }
                        xuLyDuLieuMayTinh.XoaMayTinhTheoThuocTinh <RAM>(danhSachMayTinh, MayTinh.Tinh.sCapacity, (float)x);
                        Clear();
                        WriteLine("\nDanh sách sau khi xóa");
                        danhSachMayTinh.Xuat();
                    }
                    else
                    {
                        while ((int)x < 0 || (int)x > xuLyDuLieuMayTinh.MinMaxThuocTinhThietBi <RAM>
                                   (danhSachMayTinh, MayTinh.Tinh.Speed, XuLyDuLieuMayTinh.MinMax.Max))
                        {
                            Clear();
                            WriteLine("\n\t\tDANH SÁCH MỨC TỐC ĐỘ CPU TỒN TẠI TRONG DỮ LIỆU");
                            xuLyDuLieuMayTinh.XuatDuLieuDuocCanLe(xuLyDuLieuMayTinh.DanhSachThuocTinhTheoThietBi <CPU>
                                                                      (danhSachMayTinh, MayTinh.Tinh.Speed).ConvertAll(x => (object)x));;
                            WriteLine("\n\nVD: 3.2Ghz Speed thì nhập 3.2");
                            Write("\n\tMời nhập dữ liệu tương ứng với kiểu thuộc tính đã chọn ở trên >> ");
                            x = float.Parse(ReadLine());
                        }
                        xuLyDuLieuMayTinh.XoaMayTinhTheoThuocTinh <CPU>(danhSachMayTinh, MayTinh.Tinh.Speed, (float)x);
                        Clear();
                        WriteLine("\nDanh sách sau khi xóa");
                        danhSachMayTinh.Xuat();
                    }
                    break;

                case 3:
                    Clear();
                    WriteLine("Cập nhập máy tính theo thuộc tính");
                    x = (MayTinh.Tinh) int.MaxValue;
                    while ((MayTinh.Tinh)x < MayTinh.Tinh.Speed || (MayTinh.Tinh)x > MayTinh.Tinh.sCapacity)
                    {
                        Clear();
                        WriteLine("\n\t\tDANH SÁCH CÁC HÃNG RAM TỒN TẠI TRONG DỮ LIỆU");
                        xuLyDuLieuMayTinh.XuatDuLieuDuocCanLe(xuLyDuLieuMayTinh.DanhSachHangTheoThietBi <RAM>
                                                                  (danhSachMayTinh).ConvertAll(x => (object)x));
                        WriteLine("\n\t\tDANH SÁCH CÁC HÃNG CPU TỒN TẠI TRONG DỮ LIỆU");
                        xuLyDuLieuMayTinh.XuatDuLieuDuocCanLe(xuLyDuLieuMayTinh.DanhSachHangTheoThietBi <CPU>
                                                                  (danhSachMayTinh).ConvertAll(x => (object)x));
                        WriteLine("\n\n\tBẠN MUỐN NHẬP THEO KIỂU THUỘC TÍNH NÀO (RAM - CPU) ?");
                        WriteLine("\nBạn phải nhập trong phạm vi quy định!");
                        WriteLine("\nVD: RAM nhập 0\tCPU nhập 1");
                        Write("\nXin mời nhập kiểu thuộc tính để nhập (RAM = 0 or CPU = 1)? >> ");
                        x = (MayTinh.Tinh) int.Parse(ReadLine());
                    }
                    if ((MayTinh.Tinh)x == MayTinh.Tinh.sCapacity)
                    {
                        Clear();
                        WriteLine("\n\t\tDANH SÁCH MỨC DUNG LƯỢNG RAM TỒN TẠI TRONG DỮ LIỆU");
                        xuLyDuLieuMayTinh.XuatDuLieuDuocCanLe(xuLyDuLieuMayTinh.DanhSachThuocTinhTheoThietBi <RAM>
                                                                  (danhSachMayTinh, MayTinh.Tinh.sCapacity).ConvertAll(x => (object)x));
                        WriteLine("\n\nVD: 4Gb RAM thì nhập 4");
                        WriteLine("\n\tMời nhập dữ liệu tương ứng với kiểu thuộc tính đã chọn ở trên");
                        Write("\nNhập mức dung lượng RAM muốn thay đổi >> ");
                        x = float.Parse(ReadLine());
                        Write("\nThay đổi thành mức dung lượng? Nhập vào mức dung lượng >> ");
                        y = float.Parse(ReadLine());
                        while ((int)x < 0 || (int)x > xuLyDuLieuMayTinh.MinMaxThuocTinhThietBi <RAM>
                                   (danhSachMayTinh, MayTinh.Tinh.sCapacity, XuLyDuLieuMayTinh.MinMax.Max) ||
                               (int)y < 0 || (int)y > xuLyDuLieuMayTinh.MinMaxThuocTinhThietBi <RAM>
                                   (danhSachMayTinh, MayTinh.Tinh.sCapacity, XuLyDuLieuMayTinh.MinMax.Max))
                        {
                            Clear();
                            WriteLine("\n\t\tDANH SÁCH MỨC DUNG LƯỢNG RAM TỒN TẠI TRONG DỮ LIỆU");
                            xuLyDuLieuMayTinh.XuatDuLieuDuocCanLe(xuLyDuLieuMayTinh.DanhSachThuocTinhTheoThietBi <RAM>
                                                                      (danhSachMayTinh, MayTinh.Tinh.sCapacity).ConvertAll(x => (object)x));
                            WriteLine("\n\n\nBạn đã nhập sai 1 trong 2 dữ liệu! Vui lòng kiểm tra lại và nhập đúng 2 trường dữ liệu này!!!");
                            WriteLine("\n\nVD: 4Gb RAM thì nhập 4");
                            WriteLine("\n\tMời nhập dữ liệu tương ứng với kiểu thuộc tính đã chọn ở trên");
                            Write("\nNhập mức dung lượng RAM muốn thay đổi >> ");
                            x = float.Parse(ReadLine());
                            Write("\nThay đổi thành mức dung lượng? Nhập vào mức dung lượng >> ");
                            y = float.Parse(ReadLine());
                        }
                        Clear();
                        WriteLine("\n\t\tDANH SÁCH TRƯỚC KHI CẬP NHẬP");
                        danhSachMayTinh.Xuat();
                        WriteLine("\n\t\tDANH SÁCH TRƯỚC KHI CẬP NHẬP");
                        Write("\nNhấn phím bất kì để bắt đầu cập nhập >> ");
                        ReadLine();
                        xuLyDuLieuMayTinh.CapNhapMayTinhTheoThuocTinh <RAM>(danhSachMayTinh, MayTinh.Tinh.sCapacity, (float)x, (float)y);
                        Clear();
                        WriteLine("\nDanh sách sau khi cập nhập");
                        danhSachMayTinh.Xuat();
                    }
                    else
                    {
                        Clear();
                        WriteLine("\n\t\tDANH SÁCH MỨC TỐC ĐỘ CPU TỒN TẠI TRONG DỮ LIỆU");
                        xuLyDuLieuMayTinh.XuatDuLieuDuocCanLe(xuLyDuLieuMayTinh.DanhSachThuocTinhTheoThietBi <CPU>
                                                                  (danhSachMayTinh, MayTinh.Tinh.Speed).ConvertAll(x => (object)x));
                        WriteLine("\n\nVD: 3.2Ghz Speed thì nhập 3.2");
                        WriteLine("\n\tMời nhập dữ liệu tương ứng với kiểu thuộc tính đã chọn ở trên");
                        Write("\nNhập mức tốc độ CPU muốn thay đổi >> ");
                        x = float.Parse(ReadLine());
                        Write("\nThay đổi thành mức tốc độ? Nhập vào mức tốc độ CPU >> ");
                        y = float.Parse(ReadLine());
                        while ((int)x < 0 || (int)x > xuLyDuLieuMayTinh.MinMaxThuocTinhThietBi <RAM>
                                   (danhSachMayTinh, MayTinh.Tinh.Speed, XuLyDuLieuMayTinh.MinMax.Max) ||
                               (int)y < 0 || (int)y > xuLyDuLieuMayTinh.MinMaxThuocTinhThietBi <RAM>
                                   (danhSachMayTinh, MayTinh.Tinh.Speed, XuLyDuLieuMayTinh.MinMax.Max))
                        {
                            Clear();
                            WriteLine("\n\t\tDANH SÁCH MỨC TỐC ĐỘ CPU TỒN TẠI TRONG DỮ LIỆU");
                            xuLyDuLieuMayTinh.XuatDuLieuDuocCanLe(xuLyDuLieuMayTinh.DanhSachThuocTinhTheoThietBi <CPU>
                                                                      (danhSachMayTinh, MayTinh.Tinh.Speed).ConvertAll(x => (object)x));
                            WriteLine("\n\n\nBạn đã nhập sai 1 trong 2 dữ liệu! Vui lòng kiểm tra lại và nhập đúng 2 trường dữ liệu này!!!");
                            WriteLine("\n\nVD: 3.2Ghz Speed thì nhập 3.2");
                            WriteLine("\n\tMời nhập dữ liệu tương ứng với kiểu thuộc tính đã chọn ở trên");
                            Write("\nNhập mức tốc độ CPU muốn thay đổi >> ");
                            x = float.Parse(ReadLine());
                            Write("\nThay đổi thành mức tốc độ? Nhập vào mức tốc độ >> ");
                            y = float.Parse(ReadLine());
                        }
                        Clear();
                        WriteLine("\n\t\tDANH SÁCH TRƯỚC KHI CẬP NHẬP");
                        danhSachMayTinh.Xuat();
                        WriteLine("\n\t\tDANH SÁCH TRƯỚC KHI CẬP NHẬP");
                        Write("\nNhấn phím bất kì để bắt đầu cập nhập >> ");
                        ReadLine();
                        xuLyDuLieuMayTinh.CapNhapMayTinhTheoThuocTinh <CPU>(danhSachMayTinh, MayTinh.Tinh.Speed, (float)x, (float)y);
                        Clear();
                        WriteLine("\nDanh sách sau khi cập nhập");
                        danhSachMayTinh.Xuat();
                    }
                    break;

                case 4:
                    Clear();
                    WriteLine("Lưu dữ liệu hiện tại vào tệp mới với đúng cấu trúc của dữ liệu hiện tại");
                    Write("\n Nhấn phím bất kì để bắt đầu ghi file >> ");
                    ReadLine();
                    xuLyDuLieuMayTinh.GhiFile(danhSachMayTinh);
                    WriteLine("\nGhi file hoàn tất! Kiểm tra lại trong đường dẫn chứa Solution...");
                    break;
                }
                break;
            }
            ReadLine();
        }
示例#2
0
        public void XuLyChucNang(XuLyMenu.TuyChon tuyChon, int menu, DanhSachDanhBa danhSachDanhBa)
        {
            Object x;

            switch (tuyChon)
            {
            case XuLyMenu.TuyChon.TimKiem:
                switch (menu)
                {
                case 0:
                    WriteLine("\n Bạn đã lựa chọn đi ngủ.\n\tCÚT");
                    Environment.Exit(0);
                    return;

                case 1:
                    WriteLine("\nQuay về trang trước");
                    return;

                case 2:
                    Clear();
                    WriteLine("\nTìm thành phố có nhiều thuê bao nhất");
                    WriteLine("\nThành phố có nhiều thuê bao nhất");
                    xuLyDuLieuDanhBa.ThanhPhoNhieuThueBaoNhat(danhSachDanhBa.thueBao).ForEach(x => Write("{0, 5}", x));
                    break;

                case 3:
                    Clear();
                    WriteLine("\nTìm thành phố có ít thuê bao nhất");
                    WriteLine("\nThành phố có ít thuê bao nhất");
                    xuLyDuLieuDanhBa.ThanhPhoItThueBaoNhat(danhSachDanhBa.thueBao).ForEach(x => Write("{0, 5}", x));
                    break;

                case 4:
                    Clear();
                    WriteLine("\nTìm thuê bao sở hữu ít số điện thoại nhất");
                    WriteLine("\nThuê bao sở hữu ít số điện thoại nhất");
                    xuLyDuLieuDanhBa.ThueBaoItSDTNhat(danhSachDanhBa.thueBao).ForEach(x => Write("{0, 5}", x));
                    break;

                case 5:
                    Clear();
                    WriteLine("\nTìm thuê bao sở hữu nhiều số điện thoại nhất");
                    WriteLine("\nThuê bao sở hữu nhiều số điện thoại nhất");
                    xuLyDuLieuDanhBa.ThueBaoNhieuSDTNhat(danhSachDanhBa.thueBao).ForEach(x => Write("{0, 5}", x));
                    break;

                case 6:
                    Clear();
                    WriteLine("\nTìm ngày có nhiều thuê bao đăng ký nhất");
                    WriteLine("\nNgày có nhiều thuê bao đăng ký nhất");
                    result = new Dictionary <int, int>(xuLyDuLieuDanhBa.MinMaxNgayThueBaoDangKy(danhSachDanhBa.thueBao, XuLyDuLieuDanhBa.MinMax.Max));
                    foreach (KeyValuePair <int, int> item in result)
                    {
                        Write("Ngày {0}, ", item.Key);
                    }
                    break;

                case 7:
                    Clear();
                    WriteLine("\nTìm ngày có ít thuê bao đăng ký nhất");
                    WriteLine("\nNgày có ít thuê bao đăng ký nhất");
                    result = new Dictionary <int, int>(xuLyDuLieuDanhBa.MinMaxNgayThueBaoDangKy(danhSachDanhBa.thueBao, XuLyDuLieuDanhBa.MinMax.Min));
                    foreach (KeyValuePair <int, int> item in result)
                    {
                        Write("Ngày {0}, ", item.Key);
                    }
                    break;

                case 8:
                    Clear();
                    WriteLine("\nTìm tháng không có thuê bao nào đăng ký");
                    WriteLine("\nTháng không có thuê bao nào đăng ký");
                    xuLyDuLieuDanhBa.ThangKhongCoThueBaoDangKy(danhSachDanhBa.thueBao).ForEach(x => Write("Tháng {0}, ", x));
                    break;

                case 9:
                    Clear();
                    WriteLine("\nTìm thuê bao theo giới tính");
                    WriteLine("\n Thuê bao theo giới tính Nam");
                    xuLyDuLieuDanhBa.TimThueBaoTheoGioiTinh(danhSachDanhBa.thueBao, GioiTinh.Nam).ForEach(x => WriteLine(x));
                    WriteLine("\n Thuê bao theo giới tính Nữ");
                    xuLyDuLieuDanhBa.TimThueBaoTheoGioiTinh(danhSachDanhBa.thueBao, GioiTinh.Nu).ForEach(x => WriteLine(x));
                    break;

                case 10:
                    Clear();
                    WriteLine("\n\nnTìm thành phố có nhiều thuê bao cố định nhất");
                    WriteLine("\nThành phố có nhiều thuê bao cố định nhất");
                    xuLyDuLieuDanhBa.ThanhPhoNhieuThueBaoCoDinhNhat(danhSachDanhBa.thueBao).ForEach(x => Write("{0, 5}, ", x));
                    break;

                case 11:
                    Clear();
                    WriteLine("\nTìm thành phố có ít thuê bao cố định nhất");
                    WriteLine("\nTìm thành phố có ít thuê bao cố định nhất");
                    xuLyDuLieuDanhBa.ThanhPhoItThueBaoCoDinhNhat(danhSachDanhBa.thueBao).ForEach(x => Write("{0, 5}, ", x));
                    break;

                case 12:
                    Clear();
                    WriteLine("\nTìm thành phố có nhiều thuê bao di động nhất");
                    WriteLine("\nThành phố có nhiều thuê bao di động nhất");
                    xuLyDuLieuDanhBa.ThanhPhoNhieuThueBaoDiDong(danhSachDanhBa.thueBao).ForEach(x => Write("{0, 5}, ", x));
                    break;

                case 13:
                    Clear();
                    WriteLine("\nTìm thành phố có ít thuê bao di động nhất");
                    WriteLine("\nThành phố có ít thuê bao di động nhất");
                    xuLyDuLieuDanhBa.ThanhPhoItThueBaoDiDong(danhSachDanhBa.thueBao).ForEach(x => Write("{0, 5}, ", x));
                    break;

                case 14:
                    Clear();
                    WriteLine("\nTìm thuê bao sở hữu nhiều số điện thoại cố định nhất");
                    WriteLine("\nThuê bao sở hữu nhiều số điện thoại cố định nhất");
                    xuLyDuLieuDanhBa.ThueBaoNhieuSDTCoDinh(danhSachDanhBa.thueBao).ForEach(x => Write("{0, 5}", x));;
                    break;

                case 15:
                    Clear();
                    WriteLine("\nTìm thuê bao sở hữu ít số điện thoại cố định nhất");
                    WriteLine("\nThuê bao sở hữu ít số điện thoại cố định nhất");
                    xuLyDuLieuDanhBa.ThueBaoItSDTCoDinh(danhSachDanhBa.thueBao).ForEach(x => Write("{0, 5}", x));;
                    break;

                case 16:
                    Clear();
                    WriteLine("\nTìm thuê bao sở hữu nhiều số điện thoại di động nhất");
                    WriteLine("\nThuê bao sở hữu nhiều số điện thoại di động nhất");
                    xuLyDuLieuDanhBa.ThueBaoNhieuSDTDiDong(danhSachDanhBa.thueBao).ForEach(x => Write("{0, 5}", x));;
                    break;

                case 17:
                    Clear();
                    WriteLine("\nTìm thuê bao sở hữu ít số điện thoại di động nhất");
                    WriteLine("\nThuê bao sở hữu ít số điện thoại di động nhất");
                    xuLyDuLieuDanhBa.ThueBaoItSDTDiDong(danhSachDanhBa.thueBao).ForEach(x => Write("{0, 5}", x));;
                    break;

                case 18:
                    Clear();
                    WriteLine("\nTìm tháng không có thuê bao nào đăng ký số cố định");
                    xuLyDuLieuDanhBa.ThangKhongCoDangKyCoDinh(danhSachDanhBa.thueBao).ForEach(x => Write("Tháng {0}, ", x));
                    break;

                case 19:
                    Clear();
                    WriteLine("\nTìm tháng không có thuê bao nào đăng ký số di động");
                    xuLyDuLieuDanhBa.ThangKhongCoDangKyDiDong(danhSachDanhBa.thueBao).ForEach(x => Write("Tháng {0}, ", x));
                    break;

                case 20:
                    Clear();
                    WriteLine("\nTìm thuê bao di động theo giới tính");
                    WriteLine("\n Thuê bao cố định theo giới tính Nam");
                    xuLyDuLieuDanhBa.ThueBaoCoDinhTheoGioiTinh(danhSachDanhBa.thueBao, GioiTinh.Nam).ForEach(x => WriteLine(x));
                    WriteLine("\n Thuê bao cố định theo giới tính Nữ");
                    xuLyDuLieuDanhBa.ThueBaoCoDinhTheoGioiTinh(danhSachDanhBa.thueBao, GioiTinh.Nu).ForEach(x => WriteLine(x));
                    break;

                case 21:
                    Clear();
                    WriteLine("\nTìm thuê bao cố định theo giới tính");
                    WriteLine("\n Thuê bao theo giới tính Nam");
                    xuLyDuLieuDanhBa.ThueBaoDiDongTheoGioiTinh(danhSachDanhBa.thueBao, GioiTinh.Nam).ForEach(x => WriteLine(x));
                    WriteLine("\n Thuê bao theo giới tính Nữ");
                    xuLyDuLieuDanhBa.ThueBaoDiDongTheoGioiTinh(danhSachDanhBa.thueBao, GioiTinh.Nu).ForEach(x => WriteLine(x));
                    break;
                }
                break;

            case XuLyMenu.TuyChon.SapXep:
                switch (menu)
                {
                case 0:
                    WriteLine("\n Bạn đã lựa chọn đi ngủ.\n\tCÚT");
                    Environment.Exit(0);
                    return;

                case 1:
                    WriteLine("\nQuay về trang trước");
                    return;

                case 2:
                    Clear();
                    WriteLine("\nSắp xếp danh sách thuê bao tăng theo họ tên");
                    danhSachDanhBa.XuatThongTinThueBao();
                    WriteLine("\n Danh sách sau khi sắp xếp thuê bao tăng theo họ tên");
                    xuLyDuLieuDanhBa.TangTheoHoTen(danhSachDanhBa.thueBao);
                    danhSachDanhBa.XuatThongTinThueBao();
                    break;

                case 3:
                    Clear();
                    WriteLine("\nSắp xếp danh sách thuê bao giảm theo họ tên");
                    danhSachDanhBa.XuatThongTinThueBao();
                    WriteLine("\n Danh sách sau khi sắp xếp thuê bao giảm theo họ tên");
                    xuLyDuLieuDanhBa.GiamTheoHoTen(danhSachDanhBa.thueBao);
                    danhSachDanhBa.XuatThongTinThueBao();
                    break;

                case 4:
                    Clear();
                    WriteLine("\nSắp xếp danh sách thuê bao tăng theo số lượng điện thoại sở hữu");
                    danhSachDanhBa.XuatThongTinThueBao();
                    WriteLine("\n Danh sách sau khi sắp xếp thuê bao tăng theo số lượng điện thoại sở hữu");
                    xuLyDuLieuDanhBa.TangTheoSLDT(danhSachDanhBa.thueBao);
                    danhSachDanhBa.XuatThongTinThueBao();
                    break;

                case 5:
                    Clear();
                    WriteLine("\nSắp xếp danh sách thuê bao giảm theo số lượng điện thoại sở hữu");
                    danhSachDanhBa.XuatThongTinThueBao();
                    WriteLine("\n Danh sách sau khi sắp xếp thuê bao giảm theo số lượng điện thoại sở hữu");
                    xuLyDuLieuDanhBa.GiamTheoSLDT(danhSachDanhBa.thueBao);
                    danhSachDanhBa.XuatThongTinThueBao();
                    break;

                case 6:
                    Clear();
                    WriteLine("\nSắp xếp danh sách các thành phố tăng theo số lượng thuê bao");
                    danhSachDanhBa.XuatThongTinThueBao();
                    WriteLine("\n Danh sách sau khi sắp xếp danh sách các thành phố tăng theo số lượng thuê bao");
                    xuLyDuLieuDanhBa.TangThanhPhoTheoSLTB(danhSachDanhBa.thueBao);
                    danhSachDanhBa.XuatThongTinThueBao();
                    break;

                case 7:
                    Clear();
                    WriteLine("\nSắp xếp danh sách các thành phố giảm theo số lượng thuê bao");
                    danhSachDanhBa.XuatThongTinThueBao();
                    WriteLine("\n Danh sách sau khi sắp xếp danh sách các thành phố giảm theo số lượng thuê bao");
                    xuLyDuLieuDanhBa.GiamThanhPhoTheoSLTB(danhSachDanhBa.thueBao);
                    danhSachDanhBa.XuatThongTinThueBao();
                    break;
                }
                break;

            case XuLyMenu.TuyChon.Xoa:
                switch (menu)
                {
                case 0:
                    WriteLine("\n Bạn đã lựa chọn đi ngủ.\n\tCÚT");
                    Environment.Exit(0);
                    return;

                case 1:
                    WriteLine("\nQuay về trang trước");
                    return;

                case 2:
                    Clear();
                    WriteLine("\nXóa thuê bao theo địa chỉ");
                    danhSachDanhBa.XuatThongTinThueBao();
                    Write("\n Nhập vào địa chỉ của thuê bao cần xóa >> ");
                    x = ReadLine();
                    xuLyDuLieuDanhBa.XoaTheoDiaChi(danhSachDanhBa.thueBao, (string)x);
                    WriteLine("\n Danh sách sau khi xóa các thuê bao có địa chỉ {0}", x);
                    danhSachDanhBa.XuatThongTinThueBao();
                    break;

                case 3:
                    Clear();
                    WriteLine("\nXóa thuê bao theo ngày lắp đặt");
                    danhSachDanhBa.XuatThongTinThueBao();
                    Write("\n Nhập vào ngày lắp đặt của thuê bao cần xóa >> ");
                    x = int.Parse(ReadLine());
                    xuLyDuLieuDanhBa.XoaTheoNgayLapDat(danhSachDanhBa.thueBao, (int)x);
                    WriteLine("\n Danh sách sau khi xóa các thuê bao có ngày lắp đặt là {0}", x);
                    danhSachDanhBa.XuatThongTinThueBao();
                    break;

                case 4:
                    Clear();
                    WriteLine("\nXóa thuê bao theo nhà dịch vụ");
                    danhSachDanhBa.XuatThongTinThueBao();
                    Write("\n Nhập vào nhà dịch vụ của thuê bao cần xóa >> ");
                    x = ReadLine();
                    xuLyDuLieuDanhBa.XoaTheoNhaDichVu(danhSachDanhBa.thueBao, (string)x);
                    WriteLine("\n Danh sách sau khi xóa các thuê bao có nhà dịch vụ là {0}", x);
                    danhSachDanhBa.XuatThongTinThueBao();
                    break;
                }
                break;

            case XuLyMenu.TuyChon.Khac:
                switch (menu)
                {
                case 0:
                    WriteLine("\n Bạn đã lựa chọn đi ngủ.\n\tCÚT");
                    Environment.Exit(0);
                    return;

                case 1:
                    WriteLine("\nQuay về trang trước");
                    return;

                case 2:
                    Clear();
                    WriteLine("\nTất cả khách hàng nào sinh tháng 1 thì được tặng thêm một số điện thoại mới có số là số CMND");
                    danhSachDanhBa.XuatThongTinThueBao();
                    xuLyDuLieuDanhBa.ThemSDTNeuSinhThang1(danhSachDanhBa.thueBao);
                    danhSachDanhBa.XuatThongTinThueBao();
                    break;

                case 3:
                    Clear();
                    WriteLine(@"Thống kê và hiển thị dữ liệu theo từng tỉnh và mỗi tỉnh hiển thị theo thành phố theo mẫu sau
							Tỉnh: Lâm Đồng(tổng số thuê bao: 4)
								Thành Phố: Dalat(tổng số thuê bao: 2)
									1)  001, nguyen van a, 01 PDTV, Dalat, Lam Dong, 123
									2)	002, nguyen van b, 01 PDTV, Dalat, Lam Dong, 123
									Thành phố bảo lộc: (Tổng số thuê bao: 2)
									---Hiển thị danh sách thuê bao ở thành phố bảo lộc ---
									Tỉnh Khánh Hòa(Tổng số….)
										Thành Phố: Nha Trang(tổng số thuê bao:……)
										---Danh sách thuê bao-- - "                                        );
                    xuLyDuLieuDanhBa.ThongKeDuLieu(danhSachDanhBa.thueBao);
                    break;
                }
                break;
            }
            ReadLine();
        }
示例#3
0
        public void XuLyChucNang(XuLyMenu.TuyChon tuyChon, int menu, XuLyMangPhanSo xuLyMangPhanSo)
        {
            PhanSo phanSo = new PhanSo();
            Object x;
            int    location;

            switch (tuyChon)
            {
            case XuLyMenu.TuyChon.TimKiem:
                switch (menu)
                {
                case 0:
                    WriteLine("\n Bạn đã lựa chọn đi ngủ.\n\tCÚT");
                    Environment.Exit(0);
                    return;

                case 1:
                    WriteLine("\nQuay về trang trước");
                    return;

                case 2:
                    Clear();
                    WriteLine("\nTìm phân số lớn nhất");
                    xuLyMangPhanSo.Xuat(xuLyMangPhanSo.a);
                    WriteLine("\n Phân số lớn nhất trong mảng là {0}...", xuLyMangPhanSo.PhanSoDuongMax());
                    break;

                case 3:
                    Clear();
                    WriteLine("\nTìm phân số âm lớn nhất");
                    xuLyMangPhanSo.Xuat(xuLyMangPhanSo.a);
                    WriteLine("\n Mảng phân số âm...");
                    xuLyMangPhanSo.Xuat(xuLyMangPhanSo.PhanSoAm());
                    WriteLine("\n Phân số âm lớn nhất trong mảng là {0}...", xuLyMangPhanSo.PhanSoAmMax());
                    break;

                case 4:
                    Clear();
                    WriteLine("\nTìm phân số âm nhỏ nhất");
                    xuLyMangPhanSo.Xuat(xuLyMangPhanSo.a);
                    WriteLine("\n Mảng phân số âm...");
                    xuLyMangPhanSo.Xuat(xuLyMangPhanSo.PhanSoAm());
                    WriteLine("\n Phân số âm nhỏ nhất trong mảng là {0}...", xuLyMangPhanSo.PhanSoAmMin());
                    break;

                case 5:
                    Clear();
                    WriteLine("\nTìm phân số dương lớn nhất");
                    xuLyMangPhanSo.Xuat(xuLyMangPhanSo.a);
                    WriteLine("\n Mảng phân số dương...");
                    xuLyMangPhanSo.Xuat(xuLyMangPhanSo.PhanSoDuong());
                    WriteLine("\n Phân số dương lớn nhất trong mảng là {0}...", xuLyMangPhanSo.PhanSoDuongMax());
                    break;

                case 6:
                    Clear();
                    WriteLine("\nTìm phân số dương nhỏ nhất");
                    xuLyMangPhanSo.Xuat(xuLyMangPhanSo.a);
                    WriteLine("\n Mảng phân số dương...");
                    xuLyMangPhanSo.Xuat(xuLyMangPhanSo.PhanSoDuong());
                    WriteLine("\n Phân số dương nhỏ nhất trong mảng là {0}...", xuLyMangPhanSo.PhanSoDuongMin());
                    break;

                case 7:
                    Clear();
                    WriteLine("\nTìm tất cả các phân số âm trong mảng");
                    xuLyMangPhanSo.Xuat(xuLyMangPhanSo.a);
                    WriteLine("\n Mảng phân số dương...");
                    xuLyMangPhanSo.Xuat(xuLyMangPhanSo.PhanSoDuong());
                    break;

                case 8:
                    Clear();
                    WriteLine("\nTìm tất cả các phân số dương trong mảng");
                    xuLyMangPhanSo.Xuat(xuLyMangPhanSo.a);
                    WriteLine("\n Mảng phân số dương...");
                    xuLyMangPhanSo.Xuat(xuLyMangPhanSo.PhanSoDuong());
                    break;

                case 9:
                    Clear();
                    WriteLine("\nTìm tất cả vị trí của phân số x trong mảng");
                    xuLyMangPhanSo.Xuat(xuLyMangPhanSo.a);
                    Write("\n Nhập vào phân số x:");
                    phanSo.Nhap();
                    WriteLine("\n Vị trí của phân số {0}...", phanSo);
                    xuLyMangPhanSo.ViTriPhanSoX(phanSo).ForEach(x => Write("{0, 10}", x));
                    break;

                case 10:
                    Clear();
                    WriteLine("\nTìm tất cả vị trí của phân số âm trong mảng");
                    xuLyMangPhanSo.Xuat(xuLyMangPhanSo.a);
                    WriteLine("\n Vị trí của phân số âm");
                    xuLyMangPhanSo.ViTriPhanSoAm().ForEach(x => Write("{0, 10}", x));
                    break;

                case 11:
                    Clear();
                    WriteLine("\nTìm tất cả vị trí của phân số dương trong mảng");
                    xuLyMangPhanSo.Xuat(xuLyMangPhanSo.a);
                    WriteLine("\n Vị trí của phân số dương");
                    xuLyMangPhanSo.ViTriPhanSoDuong().ForEach(x => Write("{0, 10}", x));
                    break;
                }
                break;

            case XuLyMenu.TuyChon.Xoa:
                switch (menu)
                {
                case 0:
                    WriteLine("\n Bạn đã lựa chọn đi ngủ.\n\tCÚT");
                    Environment.Exit(0);
                    return;

                case 1:
                    WriteLine("\nQuay về trang trước");
                    return;

                case 2:
                    Clear();
                    WriteLine("\nXóa phân số đầu tiên trong mảng");
                    xuLyMangPhanSo.Xuat(xuLyMangPhanSo.a);
                    xuLyMangPhanSo.XoaDau();
                    WriteLine("\n Mảng sau khi xóa phân số đầu tiên");
                    xuLyMangPhanSo.Xuat(xuLyMangPhanSo.a);
                    break;

                case 3:
                    Clear();
                    WriteLine("\nXóa phân số cuối cùng trong mảng");
                    xuLyMangPhanSo.Xuat(xuLyMangPhanSo.a);
                    xuLyMangPhanSo.XoaCuoi();
                    WriteLine("\n Mảng sau khi xóa phân số cuối cùng");
                    xuLyMangPhanSo.Xuat(xuLyMangPhanSo.a);
                    break;

                case 4:
                    Clear();
                    WriteLine("\nXóa phân số x trong mảng");
                    xuLyMangPhanSo.Xuat(xuLyMangPhanSo.a);
                    Write("\n Nhập vào phân số:");
                    phanSo.Nhap();
                    xuLyMangPhanSo.XoaX(phanSo);
                    WriteLine("\n Mảng sau khi xóa phân số {0}", phanSo);
                    xuLyMangPhanSo.Xuat(xuLyMangPhanSo.a);
                    break;

                case 5:
                    Clear();
                    WriteLine("\nXóa tất cả phân số có tử là x");
                    xuLyMangPhanSo.Xuat(xuLyMangPhanSo.a);
                    Write("\n Nhập vào tử >> ");
                    x = int.Parse(ReadLine());
                    xuLyMangPhanSo.XoaPhanSoTuX((int)x);
                    WriteLine("\n Mảng sau khi xóa phân số có tử là {0}", x);
                    xuLyMangPhanSo.Xuat(xuLyMangPhanSo.a);
                    break;

                case 6:
                    Clear();
                    WriteLine("\nXóa tất cả phân số có mẫu là x");
                    xuLyMangPhanSo.Xuat(xuLyMangPhanSo.a);
                    Write("\n Nhập vào mẫu >> ");
                    x = int.Parse(ReadLine());
                    xuLyMangPhanSo.XoaPhanSoMauX((int)x);
                    WriteLine("\n Mảng sau khi xóa phân số có mẫu là {0}", x);
                    xuLyMangPhanSo.Xuat(xuLyMangPhanSo.a);
                    break;

                case 7:
                    Clear();
                    WriteLine("\nXóa tất cả phân số chẵn");
                    xuLyMangPhanSo.Xuat(xuLyMangPhanSo.a);
                    xuLyMangPhanSo.XoaPhanSoChan();
                    WriteLine("\n Mảng sau khi xóa phân số chẵn");
                    xuLyMangPhanSo.Xuat(xuLyMangPhanSo.a);
                    break;

                case 8:
                    Clear();
                    WriteLine("\nXóa tất cả phân số lẻ");
                    xuLyMangPhanSo.Xuat(xuLyMangPhanSo.a);
                    xuLyMangPhanSo.XoaPhanSoLe();
                    WriteLine("\n Mảng sau khi xóa phân số lẻ");
                    xuLyMangPhanSo.Xuat(xuLyMangPhanSo.a);
                    break;

                case 9:
                    Clear();
                    WriteLine("\nXóa một phân số tại vị trí x trong mảng");
                    xuLyMangPhanSo.Xuat(xuLyMangPhanSo.a);
                    Write("\n Nhập vào vị trí >> ");
                    location = int.Parse(ReadLine());
                    xuLyMangPhanSo.XoaTaiViTri(location);
                    WriteLine("\n Mảng sau khi xóa phân số tại vị trí {0}", location);
                    xuLyMangPhanSo.Xuat(xuLyMangPhanSo.a);
                    break;

                case 10:
                    Clear();
                    WriteLine("\nXóa tất cả phân số âm trong mảng");
                    xuLyMangPhanSo.Xuat(xuLyMangPhanSo.a);
                    xuLyMangPhanSo.XoaPhanSoAm();
                    WriteLine("\n Mảng sau khi xóa tất phân số âm");
                    xuLyMangPhanSo.Xuat(xuLyMangPhanSo.a);
                    break;

                case 11:
                    Clear();
                    WriteLine("\nXóa tất cả phân số dương trong mảng");
                    xuLyMangPhanSo.Xuat(xuLyMangPhanSo.a);
                    xuLyMangPhanSo.XoaPhanSoDuong();
                    WriteLine("\n Mảng sau khi xóa tất phân số dương");
                    xuLyMangPhanSo.Xuat(xuLyMangPhanSo.a);
                    break;

                case 12:
                    Clear();
                    WriteLine("\nXóa tất cả các phân số nhỏ nhất");
                    xuLyMangPhanSo.Xuat(xuLyMangPhanSo.a);
                    WriteLine("\n Mảng sau khi xóa tất phân số nhỏ nhất {0}", xuLyMangPhanSo.PhanSoAmMin());
                    xuLyMangPhanSo.XoaPhanSoMin();
                    xuLyMangPhanSo.Xuat(xuLyMangPhanSo.a);
                    break;

                case 13:
                    Clear();
                    WriteLine("\nXóa tất cả các phân số lớn nhất");
                    xuLyMangPhanSo.Xuat(xuLyMangPhanSo.a);
                    WriteLine("\n Mảng sau khi xóa tất phân số lớn nhất {0}", xuLyMangPhanSo.PhanSoDuongMax());
                    xuLyMangPhanSo.XoaPhanSoMax();
                    xuLyMangPhanSo.Xuat(xuLyMangPhanSo.a);
                    break;

                case 14:
                    Clear();
                    WriteLine("\nXóa tất cả phân số có giá trị giống phân số đầu tiên trong mảng");
                    xuLyMangPhanSo.Xuat(xuLyMangPhanSo.a);
                    xuLyMangPhanSo.XoaPhanSoGiongDau();
                    WriteLine("\n Mảng sau khi xóa tất phân số có giá trị giống phân số đầu tiên trong mảng");
                    xuLyMangPhanSo.Xuat(xuLyMangPhanSo.a);
                    break;

                case 15:
                    Clear();
                    WriteLine("\nXóa tất cả phân số có giá trị giống phân số cuối cùng trong mảng");
                    xuLyMangPhanSo.Xuat(xuLyMangPhanSo.a);
                    xuLyMangPhanSo.XoaPhanSoGiongCuoi();
                    WriteLine("\n Mảng sau khi xóa tất phân số có giá trị giống phân số cuối cùng trong mảng");
                    xuLyMangPhanSo.Xuat(xuLyMangPhanSo.a);
                    break;

                case 16:
                    Clear();
                    WriteLine("\nXóa các phần tử tại các vị trí (vị trí được lưu trong mảng)");
                    xuLyMangPhanSo.Xuat(xuLyMangPhanSo.a);
                    List <int> position = xuLyMangPhanSo.XacDinhViTri();
                    WriteLine("\n Các vị trí được xác định");
                    position.ForEach(x => Write("{0, 10}", x));
                    position.Sort();
                    position.Reverse();
                    xuLyMangPhanSo.XoaTaiCacViTri(position);
                    WriteLine("\n Mảng sau khi xóa tất phân số có các vị trí được xác định trong mảng");
                    xuLyMangPhanSo.Xuat(xuLyMangPhanSo.a);
                    break;
                }
                break;

            case XuLyMenu.TuyChon.Dem:
                switch (menu)
                {
                case 0:
                    WriteLine("\n Bạn đã lựa chọn đi ngủ.\n\tCÚT");
                    Environment.Exit(0);
                    return;

                case 1:
                    WriteLine("\nQuay về trang trước");
                    return;

                case 2:
                    Clear();
                    WriteLine("\nĐếm số phân số âm trong mảng");
                    xuLyMangPhanSo.Xuat(xuLyMangPhanSo.a);
                    WriteLine("\n Mảng phân số âm...");
                    xuLyMangPhanSo.Xuat(xuLyMangPhanSo.PhanSoAm());
                    WriteLine("\n Có {0} phân số âm trong mảng", xuLyMangPhanSo.DemPhanSoAm());
                    break;

                case 3:
                    Clear();
                    WriteLine("\nĐếm số phân số dương trong mảng");
                    xuLyMangPhanSo.Xuat(xuLyMangPhanSo.a);
                    WriteLine("\n Mảng phân số dương...");
                    xuLyMangPhanSo.Xuat(xuLyMangPhanSo.PhanSoDuong());
                    WriteLine("\n Có {0} phân số dương trong mảng", xuLyMangPhanSo.DemPhanSoDuong());
                    break;

                case 4:
                    Clear();
                    WriteLine("\nĐếm phân số có tử là x trong mảng");
                    xuLyMangPhanSo.Xuat(xuLyMangPhanSo.a);
                    Write("\n Nhập vào tử số để kiểm tra >> ");
                    x = float.Parse(ReadLine());
                    WriteLine("\n Có {0} phân số có tử số là {1} trong mảng...", xuLyMangPhanSo.DemTuSoX((float)x), x);
                    break;

                case 5:
                    Clear();
                    WriteLine("\nĐếm phân số có mẫu là x trong mảng");
                    xuLyMangPhanSo.Xuat(xuLyMangPhanSo.a);
                    Write("\n Nhập vào mẫu số để kiểm tra >> ");
                    x = float.Parse(ReadLine());
                    WriteLine("\n Có {0} phân số có mẫu số là {1} trong mảng...", xuLyMangPhanSo.DemMauSoX((float)x), x);
                    break;
                }
                break;

            case XuLyMenu.TuyChon.Them:
                switch (menu)
                {
                case 0:
                    WriteLine("\n Bạn đã lựa chọn đi ngủ.\n\tCÚT");
                    Environment.Exit(0);
                    return;

                case 1:
                    WriteLine("\nQuay về trang trước");
                    return;

                case 2:
                    Clear();
                    WriteLine("\nThêm phân số đầu tiên trong mảng");
                    xuLyMangPhanSo.Xuat(xuLyMangPhanSo.a);
                    Write("\n Nhập phân số cần thêm:");
                    phanSo.Nhap();
                    xuLyMangPhanSo.ThemDau(phanSo);
                    WriteLine("\n Danh sách sau khi thêm phân số {0} vào đầu", phanSo);
                    xuLyMangPhanSo.Xuat(xuLyMangPhanSo.a);
                    break;

                case 3:
                    Clear();
                    WriteLine("\nThêm phân số cuối cùng trong mảng");
                    xuLyMangPhanSo.Xuat(xuLyMangPhanSo.a);
                    Write("\n Nhập phân số cần thêm:");
                    phanSo.Nhap();
                    xuLyMangPhanSo.ThemCuoi(phanSo);
                    WriteLine("\n Danh sách sau khi thêm phân số {0} vào cuối", phanSo);
                    xuLyMangPhanSo.Xuat(xuLyMangPhanSo.a);
                    break;

                case 4:
                    Clear();
                    WriteLine("\nThêm một phân số tại vị trí trong mảng");
                    xuLyMangPhanSo.Xuat(xuLyMangPhanSo.a);
                    Write("\n Nhập phân số cần thêm:");
                    phanSo.Nhap();
                    Write("\n Nhập vào vị trí cần thêm >> ");
                    location = int.Parse(ReadLine());
                    xuLyMangPhanSo.ThemTaiViTri(location, phanSo);
                    WriteLine("\n Danh sách sau khi thêm phân số {0} vào danh sách tại vị trí {1}", phanSo, location);
                    xuLyMangPhanSo.Xuat(xuLyMangPhanSo.a);
                    break;
                }
                break;

            case XuLyMenu.TuyChon.SapXep:
                switch (menu)
                {
                case 0:
                    WriteLine("\n Bạn đã lựa chọn đi ngủ.\n\tCÚT");
                    Environment.Exit(0);
                    return;

                case 1:
                    WriteLine("\nQuay về trang trước");
                    return;

                case 2:
                    Clear();
                    WriteLine("\nSắp xếp phân số theo chiều tăng của tử");
                    xuLyMangPhanSo.Xuat(xuLyMangPhanSo.a);
                    WriteLine("\n Danh sách sau khi sắp xếp tăng theo chiều tăng của tử");
                    xuLyMangPhanSo.TangTheoTu();
                    xuLyMangPhanSo.Xuat(xuLyMangPhanSo.a);
                    break;

                case 3:
                    Clear();
                    WriteLine("\nSắp xếp phân số theo chiều tăng của mẫu");
                    xuLyMangPhanSo.Xuat(xuLyMangPhanSo.a);
                    WriteLine("\n Danh sách sau khi sắp xếp tăng theo chiều tăng của mẫu");
                    xuLyMangPhanSo.TangTheoMau();
                    xuLyMangPhanSo.Xuat(xuLyMangPhanSo.a);
                    break;

                case 4:
                    Clear();
                    WriteLine("\nSắp xếp phân số theo chiều giảm của mẫu");
                    xuLyMangPhanSo.Xuat(xuLyMangPhanSo.a);
                    WriteLine("\n Danh sách sau khi sắp xếp giảm theo chiều giảm của tử");
                    xuLyMangPhanSo.GiamTheoTu();
                    xuLyMangPhanSo.Xuat(xuLyMangPhanSo.a);
                    break;

                case 5:
                    Clear();
                    WriteLine("\nSắp xếp phân số theo chiều giảm của mẫu");
                    xuLyMangPhanSo.Xuat(xuLyMangPhanSo.a);
                    WriteLine("\n Danh sách sau khi sắp xếp giảm theo chiều giảm của mẫu");
                    xuLyMangPhanSo.GiamTheoMau();
                    xuLyMangPhanSo.Xuat(xuLyMangPhanSo.a);
                    break;
                }
                break;

            case XuLyMenu.TuyChon.Tong:
                switch (menu)
                {
                case 0:
                    WriteLine("\n Bạn đã lựa chọn đi ngủ.\n\tCÚT");
                    Environment.Exit(0);
                    return;

                case 1:
                    WriteLine("\nQuay về trang trước");
                    return;

                case 2:
                    Clear();
                    WriteLine("\nTổng tất cả các phân số âm trong mảng");
                    xuLyMangPhanSo.Xuat(xuLyMangPhanSo.a);
                    WriteLine("\n Tổng tất cả các phân số âm trong mảng là {0}", xuLyMangPhanSo.TongAm());
                    break;

                case 3:
                    Clear();
                    WriteLine("\nTổng tất cả các phân số dương trong mảng");
                    xuLyMangPhanSo.Xuat(xuLyMangPhanSo.a);
                    WriteLine("\n Tổng tất cả các phân số dương trong mảng là {0}", xuLyMangPhanSo.TongDuong());
                    break;

                case 4:
                    Clear();
                    WriteLine("\nTổng tất cả phân số có tử là x");
                    xuLyMangPhanSo.Xuat(xuLyMangPhanSo.a);
                    Write("\n Nhập vào tử số >> ");
                    x = int.Parse(ReadLine());
                    WriteLine("\n Tổng tất cả các phân số có tử là {0} trong mảng là {1}", x, xuLyMangPhanSo.TongTuX((int)x));
                    break;

                case 5:
                    Clear();
                    WriteLine("\nTổng tất cả phân số có mẫu là x");
                    xuLyMangPhanSo.Xuat(xuLyMangPhanSo.a);
                    Write("\n Nhập vào mẫu số >> ");
                    x = int.Parse(ReadLine());
                    WriteLine("\n Tổng tất cả các phân số có mẫu là {0} trong mảng là {1}", x, xuLyMangPhanSo.TongMauX((int)x));
                    break;
                }
                break;
            }
            ReadLine();
        }
示例#4
0
        public void XuLyChucNang(XuLyMenu.TuyChon tuyChon, int menu, DanhSachHinhHoc danhSachHinhHoc)
        {
            Object x;

            switch (tuyChon)
            {
            case XuLyMenu.TuyChon.TimKiem:
                switch (menu)
                {
                case 0:
                    WriteLine("\n Bạn đã lựa chọn đi ngủ.\n\tCÚT");
                    Environment.Exit(0);
                    return;

                case 1:
                    WriteLine("\nQuay về trang trước");
                    return;

                case 2:
                    Clear();
                    WriteLine("\nTìm hình vuông có diện tích x");
                    xuLyDuLieuHinhHoc.Xuat(
                        xuLyDuLieuHinhHoc.DanhSachTheoKieuHinh <HinhVuong>(danhSachHinhHoc));
                    Write("\n Nhập vào diện tích >> ");
                    x = float.Parse(ReadLine());
                    WriteLine("\n Hình vuông có diện tích {0}", x);
                    xuLyDuLieuHinhHoc.Xuat(xuLyDuLieuHinhHoc.TimHinhTheoKieuGoi <HinhVuong>
                                               (danhSachHinhHoc, XuLyDuLieuHinhHoc.TypeCal.DienTich, (float)x));
                    break;

                case 3:
                    Clear();
                    WriteLine("\nTìm hình vuông có chu vi x");
                    xuLyDuLieuHinhHoc.Xuat(
                        xuLyDuLieuHinhHoc.DanhSachTheoKieuHinh <HinhVuong>(danhSachHinhHoc));
                    Write("\n Nhập vào chu vi >> ");
                    x = float.Parse(ReadLine());
                    WriteLine("\n Hình vuông có chu vi {0}", x);
                    xuLyDuLieuHinhHoc.Xuat(xuLyDuLieuHinhHoc.TimHinhTheoKieuGoi <HinhVuong>
                                               (danhSachHinhHoc, XuLyDuLieuHinhHoc.TypeCal.ChuVi, (float)x));
                    break;

                case 4:
                    Clear();
                    WriteLine("\nTìm hình vuông có diện tích nhỏ nhất");
                    xuLyDuLieuHinhHoc.Xuat(
                        xuLyDuLieuHinhHoc.DanhSachTheoKieuHinh <HinhVuong>(danhSachHinhHoc));
                    WriteLine("\nHình vuông có diện tích nhỏ nhất");
                    xuLyDuLieuHinhHoc.Xuat(xuLyDuLieuHinhHoc.TimHinhTheoKieuTinh <HinhVuong>
                                               (danhSachHinhHoc, XuLyDuLieuHinhHoc.TypeMinMax.MinDienTich, XuLyDuLieuHinhHoc.TypeCal.DienTich));
                    break;

                case 5:
                    Clear();
                    WriteLine("\nTìm hình vuông có diện tích lớn nhất");
                    xuLyDuLieuHinhHoc.Xuat(
                        xuLyDuLieuHinhHoc.DanhSachTheoKieuHinh <HinhVuong>(danhSachHinhHoc));
                    WriteLine("\nHình vuông có diện tích lớn nhất");
                    xuLyDuLieuHinhHoc.Xuat(xuLyDuLieuHinhHoc.TimHinhTheoKieuTinh <HinhVuong>
                                               (danhSachHinhHoc, XuLyDuLieuHinhHoc.TypeMinMax.MaxDienTich, XuLyDuLieuHinhHoc.TypeCal.DienTich));
                    break;

                case 6:
                    Clear();
                    WriteLine("\nTìm hình vuông có chu vi nhỏ nhất");
                    xuLyDuLieuHinhHoc.Xuat(
                        xuLyDuLieuHinhHoc.DanhSachTheoKieuHinh <HinhVuong>(danhSachHinhHoc));
                    WriteLine("\nHình vuông có chu vi nhỏ nhất");
                    xuLyDuLieuHinhHoc.Xuat(xuLyDuLieuHinhHoc.TimHinhTheoKieuTinh <HinhVuong>
                                               (danhSachHinhHoc, XuLyDuLieuHinhHoc.TypeMinMax.MinChuVi, XuLyDuLieuHinhHoc.TypeCal.ChuVi));
                    break;

                case 7:
                    Clear();
                    WriteLine("\nTìm hình vuông có chu vi lớn nhất");
                    xuLyDuLieuHinhHoc.Xuat(
                        xuLyDuLieuHinhHoc.DanhSachTheoKieuHinh <HinhVuong>(danhSachHinhHoc));
                    WriteLine("\nHình vuông có chu vi lớn nhất");
                    xuLyDuLieuHinhHoc.Xuat(xuLyDuLieuHinhHoc.TimHinhTheoKieuTinh <HinhVuong>
                                               (danhSachHinhHoc, XuLyDuLieuHinhHoc.TypeMinMax.MaxChuVi, XuLyDuLieuHinhHoc.TypeCal.ChuVi));
                    break;

                case 8:
                    Clear();
                    WriteLine("\nTìm hình vuông có cạnh nhỏ nhất");
                    xuLyDuLieuHinhHoc.Xuat(
                        xuLyDuLieuHinhHoc.DanhSachTheoKieuHinh <HinhVuong>(danhSachHinhHoc));
                    WriteLine("\nHình vuông có cạnh nhỏ nhất");
                    xuLyDuLieuHinhHoc.Xuat(xuLyDuLieuHinhHoc.TimHinhTheoKieuTinh <HinhVuong>
                                               (danhSachHinhHoc, XuLyDuLieuHinhHoc.TypeMinMax.MinCanh, XuLyDuLieuHinhHoc.TypeCal.Canh));
                    break;

                case 9:
                    Clear();
                    WriteLine("\nTìm hình vuông có cạnh lớn nhất");
                    xuLyDuLieuHinhHoc.Xuat(
                        xuLyDuLieuHinhHoc.DanhSachTheoKieuHinh <HinhVuong>(danhSachHinhHoc));
                    WriteLine("\nHình vuông có cạnh lớn nhất");
                    xuLyDuLieuHinhHoc.Xuat(xuLyDuLieuHinhHoc.TimHinhTheoKieuTinh <HinhVuong>
                                               (danhSachHinhHoc, XuLyDuLieuHinhHoc.TypeMinMax.MaxCanh, XuLyDuLieuHinhHoc.TypeCal.Canh));
                    break;

                case 10:
                    Clear();
                    WriteLine("\nTìm hình tròn có diện tích x");
                    xuLyDuLieuHinhHoc.Xuat(
                        xuLyDuLieuHinhHoc.DanhSachTheoKieuHinh <HinhTron>(danhSachHinhHoc));
                    Write("\n Nhập vào diện tích >> ");
                    x = float.Parse(ReadLine());
                    WriteLine("\n Hình tròn có diện tích {0}", x);
                    xuLyDuLieuHinhHoc.Xuat(xuLyDuLieuHinhHoc.TimHinhTheoKieuGoi <HinhTron>
                                               (danhSachHinhHoc, XuLyDuLieuHinhHoc.TypeCal.DienTich, (float)x));
                    break;

                case 11:
                    Clear();
                    WriteLine("\nTìm hình tròn có chu vi x");
                    xuLyDuLieuHinhHoc.Xuat(
                        xuLyDuLieuHinhHoc.DanhSachTheoKieuHinh <HinhTron>(danhSachHinhHoc));
                    Write("\n Nhập vào chu vi >> ");
                    x = float.Parse(ReadLine());
                    WriteLine("\n Hình tròn có chu vi {0}", x);
                    xuLyDuLieuHinhHoc.Xuat(xuLyDuLieuHinhHoc.TimHinhTheoKieuGoi <HinhTron>
                                               (danhSachHinhHoc, XuLyDuLieuHinhHoc.TypeCal.ChuVi, (float)x));
                    break;

                case 12:
                    Clear();
                    WriteLine("\nTìm hình tròn có diện tích nhỏ nhất");
                    xuLyDuLieuHinhHoc.Xuat(
                        xuLyDuLieuHinhHoc.DanhSachTheoKieuHinh <HinhTron>(danhSachHinhHoc));
                    WriteLine("\nHình tròn có diện tích nhỏ nhất");
                    xuLyDuLieuHinhHoc.Xuat(xuLyDuLieuHinhHoc.TimHinhTheoKieuTinh <HinhTron>
                                               (danhSachHinhHoc, XuLyDuLieuHinhHoc.TypeMinMax.MinDienTich, XuLyDuLieuHinhHoc.TypeCal.DienTich));
                    break;

                case 13:
                    Clear();
                    WriteLine("\nTìm hình tròn có diện tích lớn nhất");
                    xuLyDuLieuHinhHoc.Xuat(
                        xuLyDuLieuHinhHoc.DanhSachTheoKieuHinh <HinhTron>(danhSachHinhHoc));
                    WriteLine("\nHình tròn có diện tích lớn nhất");
                    xuLyDuLieuHinhHoc.Xuat(xuLyDuLieuHinhHoc.TimHinhTheoKieuTinh <HinhTron>
                                               (danhSachHinhHoc, XuLyDuLieuHinhHoc.TypeMinMax.MaxDienTich, XuLyDuLieuHinhHoc.TypeCal.DienTich));
                    break;

                case 14:
                    Clear();
                    WriteLine("\nTìm hình tròn có chu vi nhỏ nhất");
                    xuLyDuLieuHinhHoc.Xuat(
                        xuLyDuLieuHinhHoc.DanhSachTheoKieuHinh <HinhTron>(danhSachHinhHoc));
                    WriteLine("\nHình tròn có chu vi nhỏ nhất");
                    xuLyDuLieuHinhHoc.Xuat(xuLyDuLieuHinhHoc.TimHinhTheoKieuTinh <HinhTron>
                                               (danhSachHinhHoc, XuLyDuLieuHinhHoc.TypeMinMax.MinChuVi, XuLyDuLieuHinhHoc.TypeCal.ChuVi));
                    break;

                case 15:
                    Clear();
                    WriteLine("\nTìm hình tròn có chu vi lớn nhất");
                    xuLyDuLieuHinhHoc.Xuat(
                        xuLyDuLieuHinhHoc.DanhSachTheoKieuHinh <HinhTron>(danhSachHinhHoc));
                    WriteLine("\nHình tròn có chu vi lớn nhất");
                    xuLyDuLieuHinhHoc.Xuat(xuLyDuLieuHinhHoc.TimHinhTheoKieuTinh <HinhTron>
                                               (danhSachHinhHoc, XuLyDuLieuHinhHoc.TypeMinMax.MaxChuVi, XuLyDuLieuHinhHoc.TypeCal.ChuVi));
                    break;

                case 16:
                    Clear();
                    WriteLine("\nTìm hình tròn có bán kính nhỏ nhất");
                    xuLyDuLieuHinhHoc.Xuat(
                        xuLyDuLieuHinhHoc.DanhSachTheoKieuHinh <HinhTron>(danhSachHinhHoc));
                    WriteLine("\nHình tròn có bán kính nhỏ nhất");
                    xuLyDuLieuHinhHoc.Xuat(xuLyDuLieuHinhHoc.TimHinhTheoKieuTinh <HinhTron>
                                               (danhSachHinhHoc, XuLyDuLieuHinhHoc.TypeMinMax.MinBanKinh, XuLyDuLieuHinhHoc.TypeCal.BanKinh));
                    break;

                case 17:
                    Clear();
                    WriteLine("\nTìm hình tròn có bán kính lớn nhất");
                    xuLyDuLieuHinhHoc.Xuat(
                        xuLyDuLieuHinhHoc.DanhSachTheoKieuHinh <HinhTron>(danhSachHinhHoc));
                    WriteLine("\nHình tròn có bán kính lớn nhất");
                    xuLyDuLieuHinhHoc.Xuat(xuLyDuLieuHinhHoc.TimHinhTheoKieuTinh <HinhTron>
                                               (danhSachHinhHoc, XuLyDuLieuHinhHoc.TypeMinMax.MaxBanKinh, XuLyDuLieuHinhHoc.TypeCal.BanKinh));
                    break;

                case 18:
                    Clear();
                    WriteLine("\nTìm hình chữ nhật có diện tích x");
                    xuLyDuLieuHinhHoc.Xuat(
                        xuLyDuLieuHinhHoc.DanhSachTheoKieuHinh <HinhChuNhat>(danhSachHinhHoc));
                    Write("\n Nhập vào diện tích >> ");
                    x = float.Parse(ReadLine());
                    WriteLine("\n Hình chữ nhật có diện tích {0}", x);
                    xuLyDuLieuHinhHoc.Xuat(xuLyDuLieuHinhHoc.TimHinhTheoKieuGoi <HinhChuNhat>
                                               (danhSachHinhHoc, XuLyDuLieuHinhHoc.TypeCal.DienTich, (float)x));
                    break;

                case 19:
                    Clear();
                    WriteLine("\nTìm hình chữ nhật có chu vi x");
                    xuLyDuLieuHinhHoc.Xuat(
                        xuLyDuLieuHinhHoc.DanhSachTheoKieuHinh <HinhChuNhat>(danhSachHinhHoc));
                    Write("\n Nhập vào chu vi >> ");
                    x = float.Parse(ReadLine());
                    WriteLine("\n Hình chữ nhật có chu vi {0}", x);
                    xuLyDuLieuHinhHoc.Xuat(xuLyDuLieuHinhHoc.TimHinhTheoKieuGoi <HinhChuNhat>
                                               (danhSachHinhHoc, XuLyDuLieuHinhHoc.TypeCal.ChuVi, (float)x));
                    break;

                case 20:
                    Clear();
                    WriteLine("\nTìm hình chữ nhật có diện tích nhỏ nhất");
                    xuLyDuLieuHinhHoc.Xuat(
                        xuLyDuLieuHinhHoc.DanhSachTheoKieuHinh <HinhChuNhat>(danhSachHinhHoc));
                    WriteLine("\nHình chữ nhật có diện tích nhỏ nhất");
                    xuLyDuLieuHinhHoc.Xuat(xuLyDuLieuHinhHoc.TimHinhTheoKieuTinh <HinhChuNhat>
                                               (danhSachHinhHoc, XuLyDuLieuHinhHoc.TypeMinMax.MinDienTich, XuLyDuLieuHinhHoc.TypeCal.DienTich));
                    break;

                case 21:
                    Clear();
                    WriteLine("\nTìm hình chữ nhật có diện tích lớn nhất");
                    xuLyDuLieuHinhHoc.Xuat(
                        xuLyDuLieuHinhHoc.DanhSachTheoKieuHinh <HinhChuNhat>(danhSachHinhHoc));
                    WriteLine("\nHình chữ nhật có diện tích lớn nhất");
                    xuLyDuLieuHinhHoc.Xuat(xuLyDuLieuHinhHoc.TimHinhTheoKieuTinh <HinhChuNhat>
                                               (danhSachHinhHoc, XuLyDuLieuHinhHoc.TypeMinMax.MaxDienTich, XuLyDuLieuHinhHoc.TypeCal.DienTich));
                    break;

                case 22:
                    Clear();
                    WriteLine("\nTìm hình chữ nhật có chu vi nhỏ nhất");
                    xuLyDuLieuHinhHoc.Xuat(
                        xuLyDuLieuHinhHoc.DanhSachTheoKieuHinh <HinhChuNhat>(danhSachHinhHoc));
                    WriteLine("\nHình chữ nhật có chu vi nhỏ nhất");
                    xuLyDuLieuHinhHoc.Xuat(xuLyDuLieuHinhHoc.TimHinhTheoKieuTinh <HinhChuNhat>
                                               (danhSachHinhHoc, XuLyDuLieuHinhHoc.TypeMinMax.MinChuVi, XuLyDuLieuHinhHoc.TypeCal.ChuVi));
                    break;

                case 23:
                    Clear();
                    WriteLine("\nTìm hình chữ nhật có chu vi lớn nhất");
                    xuLyDuLieuHinhHoc.Xuat(
                        xuLyDuLieuHinhHoc.DanhSachTheoKieuHinh <HinhChuNhat>(danhSachHinhHoc));
                    WriteLine("\nHình chữ nhật có chu vi lớn nhất");
                    xuLyDuLieuHinhHoc.Xuat(xuLyDuLieuHinhHoc.TimHinhTheoKieuTinh <HinhChuNhat>
                                               (danhSachHinhHoc, XuLyDuLieuHinhHoc.TypeMinMax.MaxChuVi, XuLyDuLieuHinhHoc.TypeCal.ChuVi));
                    break;

                case 24:
                    Clear();
                    WriteLine("\nTìm hình chữ nhật có cạnh nhỏ nhất");
                    xuLyDuLieuHinhHoc.Xuat(
                        xuLyDuLieuHinhHoc.DanhSachTheoKieuHinh <HinhChuNhat>(danhSachHinhHoc));
                    WriteLine("\nHình chữ nhật có cạnh nhỏ nhất");
                    xuLyDuLieuHinhHoc.Xuat(xuLyDuLieuHinhHoc.TimHinhTheoKieuTinh <HinhChuNhat>
                                               (danhSachHinhHoc, XuLyDuLieuHinhHoc.TypeMinMax.MinCanhHCN, XuLyDuLieuHinhHoc.TypeCal.CanhHCN));
                    break;

                case 25:
                    Clear();
                    WriteLine("\nTìm hình chữ nhật có cạnh lớn nhất");
                    xuLyDuLieuHinhHoc.Xuat(
                        xuLyDuLieuHinhHoc.DanhSachTheoKieuHinh <HinhChuNhat>(danhSachHinhHoc));
                    WriteLine("\nHình chữ nhật có cạnh lớn nhất");
                    xuLyDuLieuHinhHoc.Xuat(xuLyDuLieuHinhHoc.TimHinhTheoKieuTinh <HinhChuNhat>
                                               (danhSachHinhHoc, XuLyDuLieuHinhHoc.TypeMinMax.MaxCanhHCN, XuLyDuLieuHinhHoc.TypeCal.CanhHCN));
                    break;

                case 26:
                    Clear();
                    WriteLine("\nTìm hình có diện tích nhỏ nhất");
                    danhSachHinhHoc.Xuat();
                    WriteLine("\nHình có diện tích nhỏ nhất");
                    xuLyDuLieuHinhHoc.Xuat(xuLyDuLieuHinhHoc.TimHinhMinMaxKieuTinh <HinhHoc>
                                               (danhSachHinhHoc, XuLyDuLieuHinhHoc.TypeMinMax.MinDienTich, XuLyDuLieuHinhHoc.TypeCal.DienTich));
                    break;

                case 27:
                    Clear();
                    WriteLine("\nTìm hình có diện tích lớn nhất");
                    danhSachHinhHoc.Xuat();
                    WriteLine("\nHình có diện tích lớn nhất");
                    xuLyDuLieuHinhHoc.Xuat(xuLyDuLieuHinhHoc.TimHinhMinMaxKieuTinh <HinhHoc>
                                               (danhSachHinhHoc, XuLyDuLieuHinhHoc.TypeMinMax.MaxDienTich, XuLyDuLieuHinhHoc.TypeCal.DienTich));
                    break;

                case 28:
                    Clear();
                    WriteLine("\nTìm hình có chu vi nhỏ nhất");
                    danhSachHinhHoc.Xuat();
                    WriteLine("\nHình có chu vi nhỏ nhất");
                    xuLyDuLieuHinhHoc.Xuat(xuLyDuLieuHinhHoc.TimHinhMinMaxKieuTinh <HinhHoc>
                                               (danhSachHinhHoc, XuLyDuLieuHinhHoc.TypeMinMax.MinChuVi, XuLyDuLieuHinhHoc.TypeCal.ChuVi));
                    break;

                case 29:
                    Clear();
                    WriteLine("\nTìm hình có chu vi lớn nhất");
                    danhSachHinhHoc.Xuat();
                    WriteLine("\nHình có chu vi lớn nhất");
                    xuLyDuLieuHinhHoc.Xuat(xuLyDuLieuHinhHoc.TimHinhMinMaxKieuTinh <HinhHoc>
                                               (danhSachHinhHoc, XuLyDuLieuHinhHoc.TypeMinMax.MaxChuVi, XuLyDuLieuHinhHoc.TypeCal.ChuVi));
                    break;

                case 30:
                    Clear();
                    WriteLine("\nTìm hình có tổng diện tích nhỏ nhất");
                    danhSachHinhHoc.Xuat();
                    WriteLine("\nHình có tổng diện tích nhỏ nhất");
                    WriteLine(xuLyDuLieuHinhHoc.HinhCoTongPhepTinhMinMax(danhSachHinhHoc, XuLyDuLieuHinhHoc.TypeMinMax.MinDienTich));
                    break;

                case 31:
                    Clear();
                    WriteLine("\nTìm hình có tổng diện tích lớn nhất");
                    danhSachHinhHoc.Xuat();
                    WriteLine("\nHình có tổng diện tích lớn nhất");
                    WriteLine(xuLyDuLieuHinhHoc.HinhCoTongPhepTinhMinMax(danhSachHinhHoc, XuLyDuLieuHinhHoc.TypeMinMax.MaxDienTich));
                    break;

                case 32:
                    Clear();
                    WriteLine("\nTìm hình có tổng chu vi nhỏ nhất");
                    danhSachHinhHoc.Xuat();
                    WriteLine("\nHình có tổng chu vi nhỏ nhất");
                    WriteLine(xuLyDuLieuHinhHoc.HinhCoTongPhepTinhMinMax(danhSachHinhHoc, XuLyDuLieuHinhHoc.TypeMinMax.MinChuVi));
                    break;

                case 33:
                    Clear();
                    WriteLine("\nTìm hình có tổng chu vi lớn nhất");
                    danhSachHinhHoc.Xuat();
                    WriteLine("\nHình có tổng chu vi lớn nhất");
                    WriteLine(xuLyDuLieuHinhHoc.HinhCoTongPhepTinhMinMax(danhSachHinhHoc, XuLyDuLieuHinhHoc.TypeMinMax.MaxChuVi));
                    break;
                }
                break;

            case XuLyMenu.TuyChon.SapXep:
                switch (menu)
                {
                case 0:
                    WriteLine("\n Bạn đã lựa chọn đi ngủ.\n\tCÚT");
                    Environment.Exit(0);
                    return;

                case 1:
                    WriteLine("\nQuay về trang trước");
                    return;

                case 2:
                    Clear();
                    WriteLine("\nSắp xếp hình vuông tăng theo chu vi");
                    danhSachHinhHoc.Xuat();
                    WriteLine("\nDanh sách hình vuông sau khi sắp xếp tăng theo chu vi");
                    xuLyDuLieuHinhHoc.SapXepTheoCachGoi <HinhVuong>(danhSachHinhHoc, XuLyDuLieuHinhHoc.SortBy.SortUpByCV);
                    xuLyDuLieuHinhHoc.Xuat(xuLyDuLieuHinhHoc.SapXepTheoCachGoi <HinhVuong>
                                               (danhSachHinhHoc, XuLyDuLieuHinhHoc.SortBy.SortUpByCV));
                    break;

                case 3:
                    Clear();
                    WriteLine("\nSắp xếp hình vuông giảm theo chu vi");
                    danhSachHinhHoc.Xuat();
                    WriteLine("\nDanh sách hình vuông sau khi sắp xếp giảm theo chu vi");
                    xuLyDuLieuHinhHoc.Xuat(xuLyDuLieuHinhHoc.SapXepTheoCachGoi <HinhVuong>
                                               (danhSachHinhHoc, XuLyDuLieuHinhHoc.SortBy.SortDownByCV));
                    break;

                case 4:
                    Clear();
                    WriteLine("\nSắp xếp hình vuông tăng theo diện tích");
                    danhSachHinhHoc.Xuat();
                    WriteLine("\nDanh sách hình vuông sau khi sắp xếp tăng theo diện tích");
                    xuLyDuLieuHinhHoc.Xuat(xuLyDuLieuHinhHoc.SapXepTheoCachGoi <HinhVuong>
                                               (danhSachHinhHoc, XuLyDuLieuHinhHoc.SortBy.SortUpByDT));
                    break;

                case 5:
                    Clear();
                    WriteLine("\nSắp xếp hình vuông giảm theo diện tích");
                    danhSachHinhHoc.Xuat();
                    WriteLine("\nDanh sách hình vuông sau khi sắp xếp giảm theo diện tích");
                    xuLyDuLieuHinhHoc.Xuat(xuLyDuLieuHinhHoc.SapXepTheoCachGoi <HinhVuong>
                                               (danhSachHinhHoc, XuLyDuLieuHinhHoc.SortBy.SortDownByDT));
                    break;

                case 6:
                    Clear();
                    WriteLine("\nSắp xếp hình tròn tăng theo chu vi");
                    danhSachHinhHoc.Xuat();
                    WriteLine("\nDanh sách hình tròn sau khi sắp xếp tăng theo chu vi");
                    xuLyDuLieuHinhHoc.Xuat(xuLyDuLieuHinhHoc.SapXepTheoCachGoi <HinhTron>
                                               (danhSachHinhHoc, XuLyDuLieuHinhHoc.SortBy.SortUpByCV));
                    break;

                case 7:
                    Clear();
                    WriteLine("\nSắp xếp hình tròn giảm theo chu vi");
                    danhSachHinhHoc.Xuat();
                    WriteLine("\nDanh sách hình tròn sau khi sắp xếp giảm theo chu vi");
                    xuLyDuLieuHinhHoc.Xuat(xuLyDuLieuHinhHoc.SapXepTheoCachGoi <HinhTron>
                                               (danhSachHinhHoc, XuLyDuLieuHinhHoc.SortBy.SortDownByCV));
                    break;

                case 8:
                    Clear();
                    WriteLine("\nSắp xếp hình tròn tăng theo diện tích");
                    danhSachHinhHoc.Xuat();
                    WriteLine("\nDanh sách hình tròn sau khi sắp xếp tăng theo diện tích");
                    xuLyDuLieuHinhHoc.Xuat(xuLyDuLieuHinhHoc.SapXepTheoCachGoi <HinhTron>
                                               (danhSachHinhHoc, XuLyDuLieuHinhHoc.SortBy.SortUpByDT));
                    break;

                case 9:
                    Clear();
                    WriteLine("\nSắp xếp hình tròn giảm theo diện tích");
                    danhSachHinhHoc.Xuat();
                    WriteLine("\nDanh sách hình tròn sau khi sắp xếp giảm theo diện tích");
                    xuLyDuLieuHinhHoc.Xuat(xuLyDuLieuHinhHoc.SapXepTheoCachGoi <HinhTron>
                                               (danhSachHinhHoc, XuLyDuLieuHinhHoc.SortBy.SortDownByDT));
                    break;

                case 10:
                    Clear();
                    WriteLine("\nSắp xếp hình chữ nhật tăng theo chu vi");
                    danhSachHinhHoc.Xuat();
                    WriteLine("\nDanh sách hình chữ nhật tăng theo chu vi");
                    xuLyDuLieuHinhHoc.Xuat(xuLyDuLieuHinhHoc.SapXepTheoCachGoi <HinhChuNhat>
                                               (danhSachHinhHoc, XuLyDuLieuHinhHoc.SortBy.SortUpByCV));
                    break;

                case 11:
                    Clear();
                    WriteLine("\nSắp xếp hình chữ nhật giảm theo chu vi");
                    danhSachHinhHoc.Xuat();
                    WriteLine("\nDanh sách hình chữ nhật giảm theo chu vi");
                    xuLyDuLieuHinhHoc.Xuat(xuLyDuLieuHinhHoc.SapXepTheoCachGoi <HinhChuNhat>
                                               (danhSachHinhHoc, XuLyDuLieuHinhHoc.SortBy.SortUpByCV));
                    break;

                case 12:
                    Clear();
                    WriteLine("\nSắp xếp hình chữ nhật tăng theo diện tích");
                    danhSachHinhHoc.Xuat();
                    WriteLine("\nDanh sách hình chữ nhật tăng theo diện tích");
                    xuLyDuLieuHinhHoc.Xuat(xuLyDuLieuHinhHoc.SapXepTheoCachGoi <HinhChuNhat>
                                               (danhSachHinhHoc, XuLyDuLieuHinhHoc.SortBy.SortUpByDT));
                    break;

                case 13:
                    Clear();
                    WriteLine("\nSắp xếp hình chữ nhật giảm theo diện tích");
                    danhSachHinhHoc.Xuat();
                    WriteLine("\nDanh sách hình chữ nhật giảm theo diện tích");
                    xuLyDuLieuHinhHoc.Xuat(xuLyDuLieuHinhHoc.SapXepTheoCachGoi <HinhChuNhat>
                                               (danhSachHinhHoc, XuLyDuLieuHinhHoc.SortBy.SortDownByDT));
                    break;
                }
                break;

            case XuLyMenu.TuyChon.Xoa:
                switch (menu)
                {
                case 0:
                    WriteLine("\n Bạn đã lựa chọn đi ngủ.\n\tCÚT");
                    Environment.Exit(0);
                    return;

                case 1:
                    WriteLine("\nQuay về trang trước");
                    return;

                case 2:
                    Clear();
                    WriteLine("\nXóa hình có diện tích lớn nhất");
                    danhSachHinhHoc.Xuat();
                    WriteLine("\nDanh sách sau khi xóa hình có diện tích lớn nhất");
                    xuLyDuLieuHinhHoc.XoaTheoCachGoi <HinhHoc>(danhSachHinhHoc, XuLyDuLieuHinhHoc.TypeMinMax.MaxDienTich);
                    xuLyDuLieuHinhHoc.Xuat(danhSachHinhHoc.ListHinhHoc);
                    break;

                case 3:
                    Clear();
                    WriteLine("\nXóa hình có diện tích nhỏ nhất");
                    danhSachHinhHoc.Xuat();
                    WriteLine("\nDanh sách sau khi xóa hình có diện tích nhỏ nhất");
                    xuLyDuLieuHinhHoc.XoaTheoCachGoi <HinhHoc>(danhSachHinhHoc, XuLyDuLieuHinhHoc.TypeMinMax.MinDienTich);
                    xuLyDuLieuHinhHoc.Xuat(danhSachHinhHoc.ListHinhHoc);
                    break;

                case 4:
                    Clear();
                    WriteLine("\nXóa hình có chu vi lớn nhất");
                    danhSachHinhHoc.Xuat();
                    WriteLine("\nDanh sách sau khi xóa hình có chu vi lớn nhất");
                    xuLyDuLieuHinhHoc.XoaTheoCachGoi <HinhHoc>(danhSachHinhHoc, XuLyDuLieuHinhHoc.TypeMinMax.MaxChuVi);
                    xuLyDuLieuHinhHoc.Xuat(danhSachHinhHoc.ListHinhHoc);
                    break;

                case 5:
                    Clear();
                    WriteLine("\nXóa hình có chu vi nhỏ nhất");
                    danhSachHinhHoc.Xuat();
                    WriteLine("\nDanh sách sau khi xóa hình có chu vi nhỏ nhất");
                    xuLyDuLieuHinhHoc.XoaTheoCachGoi <HinhHoc>(danhSachHinhHoc, XuLyDuLieuHinhHoc.TypeMinMax.MinChuVi);
                    xuLyDuLieuHinhHoc.Xuat(danhSachHinhHoc.ListHinhHoc);
                    break;

                case 6:
                    Clear();
                    WriteLine("\nXóa hình tại vị trí");
                    danhSachHinhHoc.Xuat();
                    Write("\n Nhập vào vị trí cần xóa >> ");
                    x = int.Parse(ReadLine());
                    WriteLine("\nDanh sách sau khi xóa hình tại vị trí {0}", x);
                    xuLyDuLieuHinhHoc.XoaHinhTaiViTri(danhSachHinhHoc, (int)x);
                    danhSachHinhHoc.Xuat();
                    break;
                }
                break;

            case XuLyMenu.TuyChon.Khac:
                switch (menu)
                {
                case 0:
                    WriteLine("\n Bạn đã lựa chọn đi ngủ.\n\tCÚT");
                    Environment.Exit(0);
                    return;

                case 1:
                    WriteLine("\nQuay về trang trước");
                    return;

                case 2:
                    Clear();
                    WriteLine("\nThêm 1 hình học tại vị trí");
                    Write("\nNhập vào vị trí để thêm >> ");
                    x = int.Parse(ReadLine());
                    Write("\nBạn muốn thêm hình gì?\nNhập vào số tương ứng ( 0 - Hình Vuông, 1 - Hình Tròn, 2 - Hình Chữ Nhật ) >> ");
                    XuLyDuLieuHinhHoc.TypeList typeList = (XuLyDuLieuHinhHoc.TypeList) int.Parse(ReadLine());
                    xuLyDuLieuHinhHoc.ThemHinhTaiViTri(danhSachHinhHoc, typeList, (int)x);
                    Clear();
                    WriteLine("\n Danh sách hiện hành");
                    danhSachHinhHoc.Xuat();
                    break;

                case 3:
                    Clear();
                    WriteLine("Đếm số lượng các loại hình học");
                    Write("\n\nSố lượng hình vuông là >> " + xuLyDuLieuHinhHoc.DemTheoHinh <HinhVuong>(danhSachHinhHoc));
                    Write("\n\nSố lượng hình tròn là >> " + xuLyDuLieuHinhHoc.DemTheoHinh <HinhTron>(danhSachHinhHoc));
                    Write("\n\nSố lượng hình chữ nhật là >> " + xuLyDuLieuHinhHoc.DemTheoHinh <HinhChuNhat>(danhSachHinhHoc));
                    Write("\n\nTổng số lượng hình học là >> " + xuLyDuLieuHinhHoc.DemTheoHinh <HinhHoc>(danhSachHinhHoc));
                    break;

                case 4:
                    Clear();
                    WriteLine("Ghi file các hình xuống file riêng");
                    WriteLine("Nhan phim bat ki de bat dau thuc hien >> ");
                    xuLyDuLieuHinhHoc.GhiFile <HinhVuong>(danhSachHinhHoc, XuLyDuLieuHinhHoc.TypeList.HinhVuong);
                    xuLyDuLieuHinhHoc.GhiFile <HinhTron>(danhSachHinhHoc, XuLyDuLieuHinhHoc.TypeList.HinhTron);
                    xuLyDuLieuHinhHoc.GhiFile <HinhChuNhat>(danhSachHinhHoc, XuLyDuLieuHinhHoc.TypeList.HinhChuNhat);
                    xuLyDuLieuHinhHoc.GhiFile <HinhHoc>(danhSachHinhHoc, XuLyDuLieuHinhHoc.TypeList.TatCaHinh);
                    ReadLine();
                    WriteLine("Ghi file hoan tat !");
                    break;
                }
                break;
            }
            ReadLine();
        }