Bài thực hành viết chương trình phần mềm quản lý sản phẩm bằng linq c#.
Yêu cầu viết chương trình phần mềm quản lý sản phẩm:
Áp dụng những kiến thức đã học về linq với các hàm: Foreach, exists, TruForAll, Find, FindAll, Remove, Remove all, where…
Thông tin phần mềm như hình trên có (Mã Sản Phẩm, Tên Sản Phẩm, Đơn Giá, Số Lương, Xuất xứ, Hạn Dùng)
+ Thêm, Sửa, Xóa Sản Phẩm
+ Tìm sản phẩm hết hạn
+ Xóa Sản Phẩm hết hạn
+ Tìm giá sản phẩm
+ Kiểm tra và xóa sản phẩm theo yêu cầu…
Tạo lớp sản phẩm: SanPham
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Phan_mem_Quan_Ly_San_Pham
{
public class SanPham
{
public string Ma { get; set; }
public string Ten { get; set; }
public int Soluong { get; set; }
public int DonGia { get; set; }
public string Xuatxu { get; set; }
public DateTime HanDung { get; set; }
}
}
Phần code chương trình phần mềm quản lý sản phẩm:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Phan_mem_Quan_Ly_San_Pham
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
List<SanPham> dssp = new List<SanPham>();
private void btnLuu_Click(object sender, EventArgs e)
{
SanPham sp = new SanPham();
sp.Ma = txtMa.Text;
sp.Ten = txtTen.Text;
sp.Soluong = int.Parse(txtSoLuong.Text);
sp.DonGia = int.Parse(txtDonGia.Text);
sp.Xuatxu = txtXuatXu.Text;
sp.HanDung = dtHanDung.Value;
// đẩy sản phẩm vào dssp
dssp.Add(sp);
xoatext();
hienthilistview(dssp, lvDsSanPham);// hiên thị danh sách gốc, hiện thị lên listview sản phẩm
}
void xoatext()
{
txtMa.Clear();
txtTen.Clear();
txtSoLuong.Clear();
txtDonGia.Clear();
txtXuatXu.Clear();
txtMa.Focus();
}
void hienthilistview(List<SanPham>ds, ListView lvsp )
// hiện sách nào ; lên listview nào: ta có 2 listview nên ta làm hàm chung để sử chung toàn phần mềm.
{
lvsp.Items.Clear();
ds.ForEach(x =>
{
ListViewItem lvi = new ListViewItem(x.Ma);
lvi.SubItems.Add(x.Ten);
lvi.SubItems.Add(x.Soluong + “”);
lvi.SubItems.Add(x.DonGia + “”);
lvi.SubItems.Add(x.Xuatxu);
lvi.SubItems.Add(x.HanDung.ToString(“dd/MM/yyyy”));
lvsp.Items.Add(lvi);
if (x.HanDung<DateTime.Now)
{
lvi.ForeColor = Color.Red;
}
}
);
}
private void btnXoa_Click(object sender, EventArgs e)
{
if (lvDsSanPham.SelectedIndices.Count==0)
{
MessageBox.Show(” vui lòng chọn sản phẩm”);
return;
}
int spxoa = lvDsSanPham.SelectedIndices[0];
dssp.RemoveAt(spxoa);
hienthilistview(dssp, lvDsSanPham);
}
private void btnxoaxuxuat_Click(object sender, EventArgs e)
{
for (int i = dssp.Count – 1; i >=0 ; i–)
{
if (string.Compare(dssp[i].Xuatxu,txtXoaxx.Text,true)==0)
// xuatxu trong danh sach so với xuất xứ nhập vào: True là không phân biệt chữ hoa chư thường.
{
dssp.RemoveAt(i);
}
}
hienthilistview(dssp, lvDsSanPham);
}
private void btnKiemSPquahan_Click(object sender, EventArgs e)
{
// dùng any hoặc exits đê kiểm tra tất sản phẩm thõa mãn 1 điều kiện
bool kqhd = dssp.Any(x => x.HanDung < DateTime.Now);
if (kqhd)
{
MessageBox.Show(” Có sản phẩm hết hạn”);
}
else
{
MessageBox.Show(” Không có sản phẩm hết hạn”);
}
}
private void btnXoaSPquahan_Click(object sender, EventArgs e)
{
dssp.Clear();// xóa toàn bộ sản phẩm trong danh sách
hienthilistview(dssp, lvDsSanPham);// hiện thị lại sản phẩm
}
private void btnXoatoanboSp_Click(object sender, EventArgs e)
{
// removeAll xóa có điều kiện
dssp.RemoveAll(x => x.HanDung < DateTime.Now);
hienthilistview(dssp, lvDsSanPham);
}
private void btnMax_Click(object sender, EventArgs e)
{
//cách 1: Dùng max linq để thông báo sản phẩm giá lớn nhất
//int spmax = dssp.Max(x => x.DonGia);
//MessageBox.Show(“Sản phẩm lớn nhất=” + spmax);
// cacsh2: dùng có truyền thống hiện sản phẩm lên list
SanPham sp = dssp[0];// lấy sản đầu tiền là lớn nhất
for (int i = 0; i < dssp.Count; i++)// duyệt từ trên xuống
{
if (sp.DonGia<dssp[i].DonGia)// nếu sản thứ i lớn hơn những sản phẩm còn lại
{
sp = dssp[i];
}
}
List<SanPham> dsspmax = new List<SanPham>() { sp};
hienthilistview(dsspmax, lvDSSanphamloc);
}
private void Form1_Load(object sender, EventArgs e)
{
dssp.Add(new SanPham() { Ma = ” SP1″, Ten = “Ken”,Soluong=15 ,DonGia = 20000, Xuatxu =”Mỹ”, HanDung= new DateTime(2017,1,12)});
dssp.Add(new SanPham() { Ma = ” SP2″, Ten = “Bia 333”, Soluong = 10, DonGia = 10000, Xuatxu = “viêt Nam”, HanDung = new DateTime(2022, 1, 12) });
dssp.Add(new SanPham() { Ma = ” SP3″, Ten = “Tiger”, Soluong = 20, DonGia = 15000, Xuatxu = “Mỹ”, HanDung = new DateTime(2017, 1, 05) });
dssp.Add(new SanPham() { Ma = ” SP4″, Ten = “colala”, Soluong = 50, DonGia = 5000, Xuatxu = “China”, HanDung = new DateTime(2030, 1, 11) });
dssp.Add(new SanPham() { Ma = ” SP6″, Ten = “Pepsi”, Soluong = 1, DonGia = 11000, Xuatxu = “Mỹ”, HanDung = new DateTime(2019, 1, 12) });
dssp.Add(new SanPham() { Ma = ” SP7″, Ten = “Nước Suối”, Soluong = 5, DonGia = 6000, Xuatxu = “Mỹ”, HanDung = new DateTime(2019, 1, 12) });
dssp.Add(new SanPham() { Ma = ” SP8″, Ten = “Redbull”, Soluong = 8, DonGia = 15000, Xuatxu = “China”, HanDung = new DateTime(2019, 1, 12) });
dssp.Add(new SanPham() { Ma = ” SP9″, Ten = “7up”, Soluong = 3, DonGia = 70000, Xuatxu = “Lào”, HanDung = new DateTime(2023, 1, 12) });
dssp.Add(new SanPham() { Ma = ” SP10″, Ten = “Pepsi”, Soluong = 25, DonGia = 6000, Xuatxu = “Việt Nam”, HanDung = new DateTime(2019, 1, 12) });
dssp.Add(new SanPham() { Ma = ” SP10″, Ten = “Bia Hà Nội”, Soluong = 70, DonGia = 12000, Xuatxu = “Mỹ”, HanDung = new DateTime(2019, 1, 12) });
dssp.Add(new SanPham() { Ma = ” SP12″, Ten = “Bia Sài Gòn”, Soluong = 4, DonGia = 10000, Xuatxu = “Việt nam”, HanDung = new DateTime(2023, 1, 12) });
lvDsSanPham.Items.Clear();
hienthilistview(dssp, lvDsSanPham);
}
private void btnSPhethan_Click(object sender, EventArgs e)
{
// dùng hàm where để lọc sản phẩm hết hạn hiên lên listw
var dssphethan = dssp.Where(x => x.HanDung DateTime.Now).ToList();
hienthilistview(dssphethan, lvDSSanphamloc);
}
private void btnLocGia_Click(object sender, EventArgs e)
{
int min = int.Parse(txtGiatu.Text);
int max = int.Parse(txtGiaden.Text);
var dsgialoc = from x in dssp// query syntax
where x.DonGia >= min && x.DonGia <= max
select x;
hienthilistview(dsgialoc.ToList(), lvDSSanphamloc);
}
private void btnXuatXu_Click(object sender, EventArgs e)
{
string t = txtTimXuatXu.Text;
var dsxx = dssp.Where(x => x.Xuatxu == t).ToList();
hienthilistview(dsxx, lvDSSanphamloc);
}
private void button1_Click(object sender, EventArgs e)
{
// findall tìm sản phẩm theo ngày hết hạn hoặc ngày bán
DateTime tu = dtNgayTu.Value.Date;
DateTime den = dtNgayDen.Value.Date;
var dstimngay = dssp.FindAll(x => x.HanDung >= tu && x.HanDung <= den );
hienthilistview(dstimngay, lvDSSanphamloc);
}
private void btntimsoluong_Click(object sender, EventArgs e)
{
int sltu = int.Parse(txtSltu.Text);
int slden = int.Parse(txtSlden.Text);
var dstimSoLuong = from x in dssp// query syntax
where x.Soluong >= sltu && x.Soluong <= slden
select x;
hienthilistview(dstimSoLuong.ToList(), lvDSSanphamloc);
}
}
}