Code C#: Mô hình lập trình 3 lớp - 3 Tiers (Phần 3)

Trong bài viết Mô hình lập trình 3 lớp - 3 Tiers (Phần 2), các bạn đã xây dựng được các lớp căn bản phục vụ cho bảng benhnhan. Trong phần 3, các bạn sẽ xây dựng form giao diện và hoàn thiện mã nguồn cho các chức năng chính.
8. Giao diện trang quản lý thông tin bệnh nhân:
Form quản lý bệnh nhân
Hình 1. Thiết kế giao diện form quản lý bệnh nhân

9. Lớp frmBN.cs 
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using BusinessLogicLayer;
using Entities;

namespace PresentationLayer
{
    public partial class frmBN : Form
    {
        public frmBN()
        {
            InitializeComponent();
        }
        public static int ktShow = 0;

        private BacSyBLL bllBS;
        private BenhNhanBLL bllBN;
        private BindingSource bsBN;
        private BLL bll;
        private List<BenhNhanEntity> lst;

        private void frmBN_Load(object sender, EventArgs e)
        {
            try
            {
                bllBN = new BenhNhanBLL();
                bllBS = new BacSyBLL();
                bll = new BLL();
                bll.BuildTree(bllBS, trwBacSy);
                KhoaText(false);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }       

        private void basyTreeView_AfterSelect(object sender, TreeViewEventArgs e)
        {
            try
            {
                if (trwBacSy.SelectedNode.Level == 1)
                {
                    string maBS = e.Node.Tag.ToString();//mã số BS
                    updateDataGridView(maBS);
                    lblMaBS.Text = maBS;            
                }

            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
        }
        private void updateDataGridView(string maBS)
        {
            lst = bllBN.getBenhNhanOfBacSy(maBS);
            bsBN = new BindingSource();
            bsBN.DataSource = lst;
            dgBenhNhan.DataSource = bsBN;
        }
        private void bnDataGridView_RowStateChanged(object sender, DataGridViewRowStateChangedEventArgs e)
        {
            try
            {
                BenhNhanEntity bn = (BenhNhanEntity)bsBN.Current;
                txtCMND.Text = bn.SoCMND;
                txtHoTen.Text = bn.TenBN;
                txtDiaChi.Text = bn.DiaChiBN;
            }
            catch (Exception)
            {
                throw;
            }
        } 
       
private string validateInputData()  {
            if (txtCMND.Text == "")
            {
                txtCMND.Focus();
                return "CMND không được để trống!";
            }
            if (txtDiaChi.Text == "")
            {
                txtDiaChi.Focus();
                return "Địa chỉ không được để trống!";
            }
            if (txtHoTen.Text == "")
            {
                txtHoTen.Focus();
                return "Họ tên không được để trống!";
            }
            return "OK";
        }

        private void btnLuu_Click(object sender, EventArgs e)  {  
            try
            {
                string tmp = validateInputData();
                if (tmp == "OK")
                {
                    BenhNhanEntity bs = new BenhNhanEntity(txtCMND.Text, txtHoTen.Text, txtDiaChi.Text, lblMaBS.Text);
                    bllBN.UpdateBenhNhan(bs);
                    btnLuu.Enabled = false;
                    btnThem.Text = "Thêm";
                    KhoaText(false);
                    MessageBox.Show("Thêm thành công!", "Chương trình QL Bệnh nhân", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    updateDataGridView(lblMaBS.Text);
                }
                else
                {
                    MessageBox.Show(tmp, "Chương trình QL Bệnh nhân", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
        }

        private void btnXoa_Click(object sender, EventArgs e)
        {
            if (lblMaBS.Text == "Mã BS")
                MessageBox.Show("Chọn BN trước khi xoá", "Chương trình QL bệnh nhân.", MessageBoxButtons.OK, MessageBoxIcon.Information);
            else
                if (MessageBox.Show("Bạn có muốn xoá hay không?", "Chương trình quản lý bệnh nhân", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) == DialogResult.Yes)
                {
                    if (!bllBN.xoaBenhNhan(txtCMND.Text))
                        MessageBox.Show("Không thành công", "Chương trình QL Bệnh nhân", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    updateDataGridView(lblMaBS.Text);
                }
        }

        private void frmBN_FormClosing(object sender, FormClosingEventArgs e)
        {
            DialogResult ask;
            ask = MessageBox.Show("Bạn có muốn thoát khỏi chương trình không?", "Chương trình QL Bệnh nhân", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1);
            if (ask == DialogResult.No)
                e.Cancel = true;
        }

        private void btnThoat_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void KhoaText(bool k)
        {
            txtDiaChi.Enabled = k;
            txtHoTen.Enabled = k;
            txtCMND.Enabled = k;       
        }

        private void XoaText()
        {
            txtDiaChi.Text = "";
            txtHoTen.Text = "";
            txtCMND.Text = "";
        }

        private void btnThem_Click(object sender, EventArgs e)
        {
            if (lblMaBS.Text == "Mã BS")
                MessageBox.Show("Chọn BS trước khi nhấn thêm BN", "Chương trình QL bệnh nhân.", MessageBoxButtons.OK, MessageBoxIcon.Information);
            else
                if (btnThem.Text == "Thêm")
                {
                    btnLuu.Enabled = true;
                    btnThem.Text = "Huỷ";
                    XoaText();
                    KhoaText(true);
                    trwBacSy.Enabled = false;
                    dgBenhNhan.Enabled = false;
                }
                else
                {
                    btnLuu.Enabled = false;
                    btnThem.Text = "Thêm";
                    KhoaText(false);
                    trwBacSy.Enabled = true;
                    dgBenhNhan.Enabled = true;
                }
        }

        private void frmBN_Activated(object sender, EventArgs e)
        {
            if (ktShow == 1)
            {
                bll.BuildTree(bllBS, trwBacSy);
            }
        }

        private void btnXemTTBSDT_Click(object sender, EventArgs e)
        {
            MessageBox.Show("Tự viết thêm cái form nữa, thêm phần xử lý trong BLL","Chương trình QL bệnh nhân.", MessageBoxButtons.OK,MessageBoxIcon.Information);
        }
  
        private void txtCMND_KeyPress(object sender, KeyPressEventArgs e)
        {          
            if ((Keys)e.KeyChar == Keys.Enter)
                txtDiaChi.Focus();
        }
}}
Tags: Visual Studio, Windows Form, 3 tiers, Mô hình 3 lớp

Related Posts
Previous
« Prev Post