You are on page 1of 12

namespace wfQuanlyHoadon

{
[Serializable]
class CChitietHoadon
{
private int m_soluong;
private double m_dongia;
private CHangHoa m_hanghoa;
public int soluong
{
get { return m_soluong; }
set { m_soluong = value; }
}
public double dongia
{
get { return m_dongia; }
set { m_dongia = value; }
}
public CHangHoa hanghoa
{
get { return m_hanghoa; }
set { m_hanghoa = value; }
}
public CChitietHoadon()
{
m_hanghoa = null;
m_soluong = 0;
m_dongia = 0;
}
public CChitietHoadon(CHangHoa hanghoa,int soluong,double dongia)
{
m_hanghoa = hanghoa;
m_soluong = soluong;
m_dongia = dongia;
}
public double thanhtien()
{
return m_dongia * m_soluong;
}
}
}
namespace wfQuanlyHoadon
{
[Serializable]
class CHangHoa
{
private string m_mahang;
private string m_tenhang;
private string m_dvt;
private double m_dongia;
public string mahang
{
get { return m_mahang; }
set { m_mahang = value; }
}
public string tenhang
{
get { return m_tenhang; }
set { m_tenhang = value; }
}
public string dvt
{
get { return m_dvt; }
set { m_dvt = value; }
}
public double dongia
{
get { return m_dongia; }
set { m_dongia = value; }
}
public CHangHoa(string mahang,string tenhang,string dvt,double dongia)
{
m_mahang = mahang;
m_tenhang = tenhang;
m_dvt = dvt;
m_dongia = dongia;
}
public CHangHoa()
{
m_mahang = "";
m_tenhang = "";
m_dvt = "";
m_dongia = 0.0;
}
}
}
namespace wfQuanlyHoadon
{
[Serializable]
class CTruycapDulieu
{
private static CTruycapDulieu m_data = null;
private List<CHangHoa> m_dsHH;
private List<CHoadon> m_dsHD;
private CTruycapDulieu()
{
m_dsHH = new List<CHangHoa>();
m_dsHD = new List<CHoadon>();
}
public static CTruycapDulieu khoitao()
{
if (m_data == null) m_data = new CTruycapDulieu();
return m_data;
}
public List<CHangHoa> getDSHanghoa()
{
return m_dsHH;
}
public List<CHoadon> getDSHoadon()
{
return m_dsHD;
}
public bool ghiDulieu(string tenfile)
{
try
{
FileStream f = new FileStream(tenfile, FileMode.Create);
BinaryFormatter bf = new BinaryFormatter();
bf.Serialize(f, m_data);
f.Close();
return true;
}catch(Exception)
{
return false;
}
}
public bool docDulieu(string tenfile)
{
try
{
FileStream f = new FileStream(tenfile, FileMode.Open);
BinaryFormatter bf = new BinaryFormatter();
m_data = bf.Deserialize(f) as CTruycapDulieu;
f.Close();
return true;
}
catch (Exception)
{
return false;
}
}
}
}

namespace wfQuanlyHoadon
{

class CXulyHanghoa
{
private List<CHangHoa> data;
public CXulyHanghoa()
{
CTruycapDulieu xl = CTruycapDulieu.khoitao();
data = xl.getDSHanghoa();
}
public List<CHangHoa> getDSHanghoa()
{
return data;
}
public CHangHoa tim(string mahang)
{
foreach(CHangHoa a in data)
{
if (a.mahang == mahang) return a;
}
return null;
}
public bool them(CHangHoa a)
{
CHangHoa b = tim(a.mahang);
if(b==null)
{
data.Add(a);
return true;
}
return false;
}
public bool xoa(string mahang)
{
CHangHoa b = tim(mahang);
if(b!=null)
{
data.Remove(b);
return true;
}
return false;
}
public bool sua(CHangHoa a)
{
CHangHoa b = tim(a.mahang);
if (b != null)
{
b.tenhang = a.tenhang;
b.dvt = a.dvt;
b.dongia = a.dongia;
return true;
}
return false;
}
}
}

namespace wfQuanlyHoadon
{

class CXulyHoadon
{
private List<CHoadon> dsHD;
public CXulyHoadon()
{
CTruycapDulieu data = CTruycapDulieu.khoitao();
dsHD = data.getDSHoadon();
}
public List<CHoadon> getDSHoadon()
{
return dsHD;
}
public CHoadon tim(string sohd)
{
foreach(CHoadon a in dsHD)
{
if (a.sohd == sohd) return a;
}
return null;
}
public bool them(CHoadon x)
{
CHoadon t = tim(x.sohd);
if (t == null)
{
dsHD.Add(x);
return true;
}
return false;
}
}
}

namespace wfQuanlyHoadon
{
public partial class FormHanghoa : Form
{
private CXulyHanghoa xl;
public FormHanghoa()
{
InitializeComponent();
}

private void FormHanghoa_Load(object sender, EventArgs e)


{
xl = new CXulyHanghoa();
hienthi(xl.getDSHanghoa());
}
private void hienthi(List<CHangHoa> ds)
{
BindingSource bs = new BindingSource();
bs.DataSource = ds;
dgv.DataSource = bs;
}

private void btnThem_Click(object sender, EventArgs e)


{
CHangHoa a = new CHangHoa();
a.mahang = txtMahang.Text;
a.tenhang = txtTenhang.Text;
a.dvt = txtDvt.Text;
a.dongia = double.Parse(txtDongia.Text);
xl.them(a);
hienthi(xl.getDSHanghoa());
}

private void btnXoa_Click(object sender, EventArgs e)


{
foreach(DataGridViewRow r in dgv.SelectedRows)
{
string mahang = r.Cells[0].Value.ToString();
xl.xoa(mahang);
}
hienthi(xl.getDSHanghoa());
}

private void btnSua_Click(object sender, EventArgs e)


{
CHangHoa a = new CHangHoa();
a.mahang = txtMahang.Text;
a.tenhang = txtTenhang.Text;
a.dvt = txtDvt.Text;
a.dongia = double.Parse(txtDongia.Text);
xl.sua(a);
hienthi(xl.getDSHanghoa());
}

private void dgv_SelectionChanged(object sender, EventArgs e)


{
foreach (DataGridViewRow r in dgv.SelectedRows)
{
string mahang = r.Cells[0].Value.ToString();
CHangHoa a= xl.tim(mahang);
txtMahang.Text = a.mahang;
txtTenhang.Text = a.tenhang;
txtDvt.Text = a.dvt;
txtDongia.Text = a.dongia.ToString();
break;
}
}
}
}
namespace wfQuanlyHoadon
{
public partial class FormHoadon : Form
{
private CXulyHanghoa xlHH;
private CXulyHoadon xlHD;
private CHoadon hd;
public FormHoadon()
{
InitializeComponent();
}

private void FormHoadon_Load(object sender, EventArgs e)


{
xlHH = new CXulyHanghoa();
xlHD = new CXulyHoadon();

hd = new CHoadon();
hienthiCombo(xlHH.getDSHanghoa());
hienthiDSHD(xlHD.getDSHoadon());
}
private void hienthiCombo(List<CHangHoa> ds)
{
cmbMahang.DisplayMember = "mahang";
cmbMahang.ValueMember = "mahang";
cmbMahang.DataSource = ds;
}
private void hienthiDSHD(List<CHoadon> ds)
{
BindingSource bs = new BindingSource();
bs.DataSource = ds;
dgvDMHD.DataSource = bs;
}
private void cmbMahang_SelectedIndexChanged(object sender, EventArgs e)
{
string mahang=cmbMahang.SelectedValue.ToString();
CHangHoa a = xlHH.tim(mahang);
txtTenhang.Text = a.tenhang;
txtDvt.Text = a.dvt;
txtDongia.Text = a.dongia.ToString();
txtSoluong.Text = "1";
}
private void btbChonhh_Click(object sender, EventArgs e)
{
CChitietHoadon ct = new CChitietHoadon();
string mahang = cmbMahang.SelectedValue.ToString();
ct.hanghoa = xlHH.tim(mahang);
ct.dongia = ct.hanghoa.dongia;
ct.soluong = int.Parse(txtSoluong.Text);

hd.chitietHoadon.Add(ct);
hienthiHD(hd);
}
private void hienthiHD(CHoadon x)
{
BindingSource bs = new BindingSource();
bs.DataSource = HoadonView.chuyendoi(x);
dgv.DataSource = bs;
}
private void btnLaphd_Click(object sender, EventArgs e)
{
hd.sohd = txtSohd.Text;
hd.tenkh = txtTenKH.Text;
hd.ngaylaphd = dtpNgaylaphd.Value;
if(xlHD.them(hd)==true)
{
hienthiDSHD(xlHD.getDSHoadon());
hd = new CHoadon();
hienthiHD(hd);
}
else
{
MessageBox.Show("Thêm hóa đơn không thành công!");
}
}
private void btnXem_Click(object sender, EventArgs e)
{
foreach(DataGridViewRow r in dgvDMHD.SelectedRows)
{
string sohd = r.Cells[0].Value.ToString();
CHoadon x = xlHD.tim(sohd);
if(x!=null)
{
FormXemHoadon f = new FormXemHoadon();
f.m_hoadon = x;
f.ShowDialog();
break;
}
}
}
}
}
namespace wfQuanlyHoadon
{
public partial class FormMain : Form
{
public FormMain()
{
InitializeComponent();
}
private void FormMain_Load(object sender, EventArgs e)
{
CTruycapDulieu data = CTruycapDulieu.khoitao();
if (data.docDulieu("hoadon.dat") == true)
MessageBox.Show("Đọc dữ liệu thành công!");
else MessageBox.Show("Không đọc được dữ liệu!");
}
private void hanghoaToolStripMenuItem_Click(object sender, EventArgs e)
{
FormHanghoa f = new FormHanghoa();
f.MdiParent = this;
f.Show();
}

private void ghiToolStripMenuItem_Click(object sender, EventArgs e)


{
CTruycapDulieu data = CTruycapDulieu.khoitao();
if (data.ghiDulieu("hoadon.dat") == true)
MessageBox.Show("Ghi dữ liệu thành công!");
else MessageBox.Show("Không ghi được dữ liệu!");
}

private void hoadonToolStripMenuItem_Click(object sender, EventArgs e)


{
FormHoadon f = new FormHoadon();
f.MdiParent = this;
f.Show();
}

}
}
namespace wfQuanlyHoadon
{
public partial class FormXemHoadon : Form
{
public object m_hoadon;
public FormXemHoadon()
{
InitializeComponent();
}
private void hienthiHD(CHoadon x)
{
BindingSource bs = new BindingSource();
bs.DataSource = HoadonView.chuyendoi(x);
dgv.DataSource = bs;
}
private void FormXemHoadon_Load(object sender, EventArgs e)
{
CHoadon x = m_hoadon as CHoadon;
txtSohd.Text = x.sohd;
txtTenKH.Text = x.tenkh;
dtpNgaylaphd.Value = x.ngaylaphd;
hienthiHD(x);
}
private void btnDong_Click(object sender, EventArgs e)
{
this.Close();
}
}
}

namespace wfQuanlyHoadon
{

class HoadonView
{
public string sohd { get; set; }
public string ngaylaphd { get; set; }
public string tenkh { get; set; }
public string mahang { get; set; }
public string tenhang { get; set; }
public string dvt { get; set; }
public string dongia { get; set; }
public string soluong { get; set; }
public string thanhtien { get; set; }
public static List<HoadonView> chuyendoi(CHoadon hd)
{
List<HoadonView> ds = new List<HoadonView>();
foreach(CChitietHoadon a in hd.chitietHoadon)
{
HoadonView b = new HoadonView();
b.sohd = hd.sohd;
b.ngaylaphd = hd.ngaylaphd.ToString();
b.tenkh = hd.tenkh;
b.mahang = a.hanghoa.mahang;
b.tenhang = a.hanghoa.tenhang;
b.dvt = a.hanghoa.dvt;
b.dongia = a.dongia.ToString();
b.soluong = a.soluong.ToString();
b.thanhtien = a.thanhtien().ToString();
ds.Add(b);
}
return ds;
}

}
}

You might also like