Quản lý Hóa đơn Bán hàng

Đề bài

Viết một chương trình để quản lý hóa đơn bán hàng bao gồm các lớp sau:

Lớp SanPham:

Thuộc tính:
ten: tên sản phẩm.
maSanPham: mã sản phẩm.
gia: giá của sản phẩm.
Phương thức:
hienThiThongTin(): hiển thị thông tin của sản phẩm.
Lớp ChiTietHoaDon:

Thuộc tính:
sanPham: đối tượng sản phẩm.
soLuong: số lượng sản phẩm.
Phương thức:
tinhTongTien(): tính tổng tiền cho chi tiết hóa đơn.
hienThiChiTiet(): hiển thị thông tin chi tiết của hóa đơn.
Lớp HoaDon:

Thuộc tính:
soHoaDon: số hóa đơn.
ngayLap: ngày lập hóa đơn.
danhSachChiTiet: danh sách các chi tiết hóa đơn.
Phương thức:
themChiTiet(ChiTietHoaDon chiTiet): thêm một chi tiết vào hóa đơn.
tinhTongHoaDon(): tính tổng số tiền của hóa đơn.
hienThiHoaDon(): hiển thị thông tin của hóa đơn và các chi tiết của nó.
Yêu cầu:

Viết chương trình chính để thử nghiệm các phương thức trên.
Hiển thị menu cho người dùng lựa chọn các chức năng: thêm sản phẩm, thêm chi tiết hóa đơn, tính tổng hóa đơn và hiển thị hóa đơn.

Cách làm

using System;
using System.Collections.Generic;

// Lop SanPham
public class SanPham
{
    public string ten { get; set; }
    public string maSanPham { get; set; }
    public double gia { get; set; }

    // Hien thi thong tin san pham
    public void hienThiThongTin()
    {
        Console.WriteLine($"Ten: {ten}");
        Console.WriteLine($"Ma San Pham: {maSanPham}");
        Console.WriteLine($"Gia: {gia}");
    }
}

// Lop ChiTietHoaDon
public class ChiTietHoaDon
{
    public SanPham sanPham { get; set; }
    public int soLuong { get; set; }

    // Tinh tong tien cho chi tiet hoa don
    public double tinhTongTien()
    {
        return sanPham.gia * soLuong;
    }

    // Hien thi chi tiet hoa don
    public void hienThiChiTiet()
    {
        sanPham.hienThiThongTin();
        Console.WriteLine($"So Luong: {soLuong}");
        Console.WriteLine($"Tong Tien: {tinhTongTien()}");
    }
}

// Lop HoaDon
public class HoaDon
{
    public string soHoaDon { get; set; }
    public DateTime ngayLap { get; set; }
    private List<ChiTietHoaDon> danhSachChiTiet = new List<ChiTietHoaDon>();

    // Them chi tiet vao hoa don
    public void themChiTiet(ChiTietHoaDon chiTiet)
    {
        danhSachChiTiet.Add(chiTiet);
    }

    // Tinh tong so tien cua hoa don
    public double tinhTongHoaDon()
    {
        double tongTien = 0;
        foreach (ChiTietHoaDon chiTiet in danhSachChiTiet)
        {
            tongTien += chiTiet.tinhTongTien();
        }
        return tongTien;
    }

    // Hien thi thong tin hoa don
    public void hienThiHoaDon()
    {
        Console.WriteLine($"So Hoa Don: {soHoaDon}");
        Console.WriteLine($"Ngay Lap: {ngayLap.ToShortDateString()}");
        Console.WriteLine("Danh Sach Chi Tiet Hoa Don:");
        foreach (ChiTietHoaDon chiTiet in danhSachChiTiet)
        {
            chiTiet.hienThiChiTiet();
            Console.WriteLine();
        }
        Console.WriteLine($"Tong Hoa Don: {tinhTongHoaDon()}");
    }
}

class Program
{
    static void Main()
    {
        // Tao san pham
        SanPham sp1 = new SanPham { ten = "San Pham A", maSanPham = "SP001", gia = 100 };
        SanPham sp2 = new SanPham { ten = "San Pham B", maSanPham = "SP002", gia = 150 };

        // Tao chi tiet hoa don
        ChiTietHoaDon chiTiet1 = new ChiTietHoaDon { sanPham = sp1, soLuong = 2 };
        ChiTietHoaDon chiTiet2 = new ChiTietHoaDon { sanPham = sp2, soLuong = 1 };

        // Tao hoa don
        HoaDon hoaDon = new HoaDon { soHoaDon = "HD001", ngayLap = DateTime.Now };
        hoaDon.themChiTiet(chiTiet1);
        hoaDon.themChiTiet(chiTiet2);

        // Hien thi hoa don
        Console.WriteLine("Thong tin hoa don:");
        hoaDon.hienThiHoaDon();
    }
}

Bình luận