LINQ

Phần mềm quản lý sản phẩm viết bằng linq c#

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…

Phần mềm quản lý sản phẩm viết bằng linq c#

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

        }

    }

}