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();
}