C#基础知识及题目练习 Day18 实例:学校信息管理系统

一、学校信息的添加、修改、删除

首先,建一个学校School类和一个公共类Common静态类

在Common中创建一个Dictionary集合,用于存储所有学校

        public static Dictionary<int, School> dicSchool = new Dictionary<int, School>();

创建一个方法,用于获取新的编号:

        public static int GetNum(List<int> lst)
        {
            if (lst.Count > 0)
            {
                return lst.Max() + 1;
            }
            return 1;
        }

代码如下:

    class School
    {
        private int _schNum;
        /// <summary>
        /// 学校编号
        /// </summary>
        public int SchNum
        {
            get { return _schNum; }
            set { _schNum = value; }
        }
        private string _schName;
        /// <summary>
        /// 学校名称
        /// </summary>
        public string SchName
        {
            get { return _schName; }
            set { _schName = value; }
        }
        private string _schAddress;
        /// <summary>
        /// 学校地址
        /// </summary>
        public string SchAddress
        {
            get { return _schAddress; }
            set { _schAddress = value; }
        }

    }

 

    static class Common
    {
        /// <summary>
        /// 创建一个集合,用于存储所有学校
        /// key:学校编号    value:学校类
        /// </summary>
        public static Dictionary<int, School> dicSchool = new Dictionary<int, School>();
        /// <summary>
        /// 获取一个新编号
        /// </summary>
        /// <param name="lst">已有编号</param>
        /// <returns></returns>
        public static int GetNum(List<int> lst)
        {
            if (lst.Count > 0)
            {
                return lst.Max() + 1;
            }
            return 1;
        }
    }

1、添加

将新创建的学校添加到集合中,并且绑定到DataGridView控件中进行显示

           //1、获取控件上输入的学校名称和地址
            string schoolNme = txtSchoolName.Text.Trim();   //学校名称
            string schAddress = txtAddress.Text.Trim();     //学校地址

            //2、为该学校取一个编号
            //获取学校集合目前的编号集合
            List<int> lstNums = Common.dicSchool.Keys.ToList();
            //调用获取编号的方法,取得新编号
            int schNo = Common.GetNum(lstNums);

            //3、创建一个学校对象
            School sch = new School();
            sch.SchoolName = schoolNme;
            sch.SchoolNum = schNo;
            sch.Address = schAddress;

            //4、把该学校对象添加到集合中
            Common.dicSchool.Add(schNo, sch);

如何将集合添加到DataGridView控件中进行显示?
            //创建BindingSource对象
            BindingSource bind = new BindingSource();
            //为该对象绑定数据源
            bind.DataSource = Common.dicSchool.Values;
            //为DataGridView控件绑定数据源
            dataGridView1.DataSource = bind;

            //更改表头的名字
            dataGridView1.Columns[0].HeaderText = "学校编号";
            dataGridView1.Columns[1].HeaderText = "学校名称";
            dataGridView1.Columns[2].HeaderText = "学校地址";

Form1:

    private void ToolStripSchool_Click(object sender, EventArgs e)
        {
            //显示学校信息界面
            SchFrm sch = new SchFrm();
            DialogResult reslt=sch.ShowDialog();
            if (reslt == DialogResult.OK)
            {
                //为学校的ComboBox赋数据源
                cmbSchool.DataSource = Common.dicSchool.Values.ToList();
                cmbSchool.DisplayMember = "Address";
            }
        }

Form2:

    public partial class SchFrm : Form
    {
        public SchFrm()
        {
            InitializeComponent();
        }

        /// <summary>
        /// 将新创建的学校添加到集合中,并且绑定到DataGridView控件中进行显示
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnAdd_Click(object sender, EventArgs e)
        {
            //1、获取控件上输入的学校名称和地址
            string schoolNme = txtSchoolName.Text.Trim();   //学校名称
            string schAddress = txtAddress.Text.Trim();     //学校地址

            //2、为该学校取一个编号
            //获取学校集合目前的编号集合
            List<int> lstNums = Common.dicSchool.Keys.ToList();
            //调用获取编号的方法,取得新编号
            int schNo = Common.GetNum(lstNums);

            //3、创建一个学校对象
            School sch = new School();
            sch.SchoolName = schoolNme;
            sch.SchoolNum = schNo;
            sch.Address = schAddress;

            //4、把该学校对象添加到集合中
            Common.dicSchool.Add(schNo, sch);

            //5、将集合添加到DataGridView控件中进行显示
            //创建BindingSource对象
            BindingSource bind = new BindingSource();
            //为该对象绑定数据源
            bind.DataSource = Common.dicSchool.Values;
            //为DataGridView控件绑定数据源
            dataGridView1.DataSource = bind;

            //更改表头的名字
            dataGridView1.Columns[0].HeaderText = "学校编号";
            dataGridView1.Columns[1].HeaderText = "学校名称";
            dataGridView1.Columns[2].HeaderText = "学校地址";


        }

        /// <summary>
        /// 修改学校
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnModify_Click(object sender, EventArgs e)
        {
            if (txtNum.Text == "")
            {
                MessageBox.Show("请选中要修改的行!");
                return;
            }
            //从控件上获取修改以后的值。要注意的是,学校编号是不允许修改的
            string strName = txtSchoolName.Text.Trim(); //学校名称
            string strAddr = txtAddress.Text.Trim();    //学校地址

            //根据学校编号找到该条学校信息,将新值更新回集合,
            int num = Convert.ToInt32(txtNum.Text);
            //创建一个修改后的学校对象
            School schNew = new School();
            schNew.SchoolName = strName;
            schNew.Address = strAddr;
            schNew.SchoolNum = num;
            //用新的School对象更新集合中该编号对应的学校对象
            Common.dicSchool[num] = schNew;
            //重新绑定数据源
            BindDataSource();
        }

        /// <summary>
        /// 绑定数据源
        /// </summary>
        private void BindDataSource()
        {
            //创建BindingSource对象
            BindingSource bind = new BindingSource();
            //为该对象绑定数据源
            bind.DataSource = Common.dicSchool.Values;
            //为DataGridView控件绑定数据源
            dataGridView1.DataSource = bind;

            //更改表头的名字
            dataGridView1.Columns[0].HeaderText = "学校编号";
            dataGridView1.Columns[1].HeaderText = "学校名称";
            dataGridView1.Columns[2].HeaderText = "学校地址";
        }

        private void dataGridView1_MouseDoubleClick(object sender, MouseEventArgs e)
        {
            
        }

        /// <summary>
        /// DataGridView单元格点击事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            //当前选中行的索引
            int index = e.RowIndex;
            if (index < 0)  //没有选取任何行
            {
                return;
            }
            //根据索引得到该行的值(该行的学校信息)
            //取到学校编号
            string strId=dataGridView1.Rows[index].Cells["SchoolNum"].Value.ToString();
            txtNum.Text = strId;    //将学校编号回显到控件上

            //取学校名称
            string strName = dataGridView1.Rows[index].Cells[1].Value.ToString();
            txtSchoolName.Text = strName;

            //取学校地址
            string strAddress = dataGridView1.Rows[index].Cells[2].Value.ToString();
            txtAddress.Text = strAddress;
        }

        /// <summary>
        /// 删除
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnDel_Click(object sender, EventArgs e)
        {
            //判断学校编号有没有
            if (txtNum.Text == "")
            {
                MessageBox.Show("请选中一条记录进行删除!");
                return;
            }

            //取得要删除的编号
            int num = Convert.ToInt32(txtNum.Text);
            DialogResult result=MessageBox.Show("你确定要删除该条记录吗?","确认信息",MessageBoxButtons.OKCancel,MessageBoxIcon.Warning);
           if(result==DialogResult.OK)
            {
                //从集合中删除该编号对应的记录
                Common.dicSchool.Remove(num);

                //重新绑定数据源
                BindDataSource();
                txtNum.Text = "";
                txtSchoolName.Text = "";
                txtAddress.Text = "";
            }
           


        }

        /// <summary>
        /// 确定按钮
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnOK_Click(object sender, EventArgs e)
        {
            this.DialogResult = DialogResult.OK;
            this.Close();
        }

        private void btnCancel_Click(object sender, EventArgs e)
        {
            this.DialogResult = DialogResult.Cancel;
            this.Close();
        }
    }

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值