bai2
unknown
c_cpp
2 years ago
9.8 kB
12
Indexable
using System; using System.Xml; class Program { static void Main(string[] args) { HoaDon hd = new HoaDon(); int choice = 0; while (choice != 8) { Console.WriteLine("============== MENU =============="); Console.WriteLine("1. Tao hoa don moi"); Console.WriteLine("2. Xem thong tin hoa don"); Console.WriteLine("3. Them san pham"); Console.WriteLine("4. Xoa san pham"); Console.WriteLine("5. Tinh tong tien"); Console.WriteLine("6. Xuat mat hang thanh tien lon nhat"); Console.WriteLine("7. Sap xep chi tiet ban hang theo thu tu giam dan cua thanh tien"); Console.WriteLine("8. Thoat"); Console.Write("Nhap lua chon cua ban: "); choice = int.Parse(Console.ReadLine()); switch (choice) { case 1: hd = TaoHoaDonMoi(); break; case 2: hd.XemThongTinHoaDon(); break; case 3: hd.ThemSanPham(); break; case 4: hd.XoaSanPham(); break; case 5: Console.WriteLine("Tong tien hoa don: {0}", hd.TinhTongTien()); break; case 6: hd.XuatMatHangThanhTienLonNhat(); break; case 7: hd.SapXepTheoThanhTienGiamDan(); break; case 8: Console.WriteLine("Hen gap lai!"); break; default: Console.WriteLine("Lua chon khong hop le!"); break; } Console.WriteLine(); } Console.ReadKey(); } } public class HoaDon { public string MaHD { get; set; } public string TenKH { get; set; } public ChiTietBanHang[] DanhSachCTBH { get; set; } public HoaDon(string maHD, string tenKH, ChiTietBanHang[] dsCTBH) { MaHD = maHD; TenKH = tenKH; DanhSachCTBH = dsCTBH; } } public class ChiTietBanHang { public string MaSP { get; set; } public string TenSP { get; set; } public int SoLuong { get; set; } public double GiaBan { get; set; } public ChiTietBanHang(string maSP, string tenSP, int soLuong, double giaBan) { MaSP = maSP; TenSP = tenSP; SoLuong = soLuong; GiaBan = giaBan; } public double Tongtien() { int tongTien = 0; foreach (var ctbh in DanhSachChiTietBanHang) { tongTien += ctbh.SoLuong * ctbh.GiaBan; } return tongTien; } public void XuatMatHangThanhTienLonNhat() { // Kiểm tra nếu danh sách chi tiết bán hàng rỗng, không có sản phẩm nào if (DanhSachChiTietBanHang.Count == 0) { Console.WriteLine("Không có sản phẩm nào trong hoá đơn."); return; } int maxTien = int.MinValue; ChiTietBanHang maxCTBH = null; // Duyệt qua từng chi tiết bán hàng của hoá đơn và tìm sản phẩm có tiền lớn nhất foreach (var ctbh in DanhSachChiTietBanHang) { int tien = ctbh.SoLuong * ctbh.GiaBan; if (tien > maxTien) { maxTien = tien; maxCTBH = ctbh; } } // Hiển thị thông tin sản phẩm có tiền lớn nhất Console.WriteLine("Sản phẩm có tiền lớn nhất:"); Console.WriteLine("Mã sản phẩm: " + maxCTBH.MaSanPham); Console.WriteLine("Tên sản phẩm: " + maxCTBH.TenSanPham); Console.WriteLine("Số lượng: " + maxCTBH.SoLuong); Console.WriteLine("Giá bán: " + maxCTBH.GiaBan); Console.WriteLine("Thành tiền: " + maxTien); } public void XuatThongTin() { Console.WriteLine("Mã hoá đơn: " + MaHoaDon); Console.WriteLine("Tên khách hàng: " + TenKhachHang); Console.WriteLine("Danh sách chi tiết bán hàng:"); // Sắp xếp danh sách chi tiết bán hàng theo thứ tự giảm dần của thành tiền var dsChiTietBanHang = DanhSachChiTietBanHang.OrderByDescending(ctbh => ctbh.ThanhTien); foreach (var ctbh in dsChiTietBanHang) { Console.WriteLine("\tMã sản phẩm: " + ctbh.MaSanPham); Console.WriteLine("\tTên sản phẩm: " + ctbh.TenSanPham); Console.WriteLine("\tSố lượng: " + ctbh.SoLuong); Console.WriteLine("\tGiá bán: " + ctbh.GiaBan); Console.WriteLine("\tThành tiền: " + ctbh.ThanhTien); } TinhTongTien(); Console.WriteLine("Tổng tiền: " + TongTien); XuatMatHangThanhTienLonNhat(); } public void TimSanPhamTheoMa(string maSanPham) { // Tìm kiếm sản phẩm trong danh sách chi tiết bán hàng của hoá đơn var sanPham = DanhSachChiTietBanHang.FirstOrDefault(ctbh => ctbh.MaSanPham == maSanPham); // Nếu sản phẩm tồn tại, xuất thông tin sản phẩm if (sanPham != null) { Console.WriteLine("Thông tin sản phẩm có mã '" + maSanPham + "':"); Console.WriteLine("\tTên sản phẩm: " + sanPham.TenSanPham); Console.WriteLine("\tGiá bán: " + sanPham.GiaBan); Console.WriteLine("\tSố lượng: " + sanPham.SoLuong); Console.WriteLine("\tThành tiền: " + sanPham.ThanhTien); } else { Console.WriteLine("Không tìm thấy sản phẩm có mã '" + maSanPham + "'."); } } } public class HoaDonXMLReader { public static HoaDon[] DocTuFile(string path) { var listHoaDon = new System.Collections.Generic.List<HoaDon>(); using (XmlReader reader = XmlReader.Create(path)) { while (reader.Read()) { if (reader.NodeType == XmlNodeType.Element && reader.Name == "HD") { string maHD = ""; string tenKH = ""; var listCTBH = new System.Collections.Generic.List<ChiTietBanHang>(); while (reader.Read()) { if (reader.NodeType == XmlNodeType.EndElement && reader.Name == "HD") { break; } if (reader.NodeType == XmlNodeType.Element && reader.Name == "MaHD") { reader.Read(); maHD = reader.Value; } if (reader.NodeType == XmlNodeType.Element && reader.Name == "TenKH") { reader.Read(); tenKH = reader.Value; } if (reader.NodeType == XmlNodeType.Element && reader.Name == "CTBH") { string maSP = ""; string tenSP = ""; int soLuong = 0; double giaBan = 0; while (reader.Read()) { if (reader.NodeType == XmlNodeType.EndElement && reader.Name == "CTBH") { break; } if (reader.NodeType == XmlNodeType.Element && reader.Name == "Masp") { reader.Read(); maSP = reader.Value; } if (reader.NodeType == XmlNodeType.Element && reader.Name == "tensp") { reader.Read(); tenSP = reader.Value; } if (reader.NodeType == XmlNodeType.Element && reader.Name == "SL") { reader.Read(); soLuong = int.Parse(reader.Value); } if (reader.NodeType == XmlNodeType.Element && reader.Name == "gia") { reader.Read(); giaBan = double.Parse(reader.Value); } } var ctbh = new ChiTietBanHang(maSP, tenSP, soLuong, giaBan); listCTBH.Add(ctbh); } } var hoaDon = new HoaDon(maHD, tenKH, listCTBH.ToArray()); listHoaDon.Add(hoaDon); } } } // Trả về danh sách hoá đơn đọc được từ file XML return listHoaDon.ToArray(); }
Editor is loading...