管理系统的开发实战C#、VS2022、SQL Server(3)——学生信息管理界面功能实现

本次完成学生信息管理界面的实现,

注意!!

控件的名字一定要重命名,如果在重命名之前双击了,就会导致加入到代码里面的函数名称很不好辨认 。

对于消除这种无用函数的方法在文末。

下图是界面的展示:

 学生信息管理界面的功能包括:

可以在数据列表中显示、增加、修改、删除学生信息;

首先需要链接数据表,如下是链接数据表函数:

 SqlConnection Con = new SqlConnection(@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=""F:\Microsoft Visual Studio\Project\Bookshop\DataBase\Regedit.mdf"";Integrated Security=True;Connect Timeout=30"); //新建一个全局数据库对象,使用该对象来操作全局的,@""是连接字符串,用于获取/打开SQLserver

接着在界面上显示出已有数据表:

 private void populate()   //数据表函数
        {
            Con.Open();
            string query = "select * from StudentTable";   //SQL语句,查询数据表中的信息
            SqlDataAdapter sda = new SqlDataAdapter(query,Con);      //创建批量抓取
            SqlCommandBuilder builder = new SqlCommandBuilder(sda);  //Adapter通常与commandbuilder配合使用,便于批量处理数据库
            var ds = new DataSet();         //创建虚拟表
            sda.Fill(ds);
            StudentDGV.DataSource = ds.Tables[0];    //把列表显示出来
            Con.Close();
            
        }

1、增加数据

数据增加通过这个SQL语句实现

注意区分:SClass.SelectedItem与SClass.SelectedIndex;

前者表示:下拉列表的整体组件

后者表示:下拉列表本体中的某一条被选中的内容

string query = "insert into StudentTable values('" + SName.Text + "','" + STeachers.Text + "','" + SClass.SelectedItem.ToString() + "')";

这里' " " '的方式表示插入的数据类型是字符串类型,要和数据库里定义的数据类型一致!

增加数据后伴随着保存数据

这里的  ||  和C语言的  &&  一样

private void Administar_Click(object sender, EventArgs e)
        {
            if (SName.Text == "" || STeachers.Text == "" || SClass.SelectedIndex == -1)  //有一个没填上都不行
            {
                MessageBox.Show("信息不足,请填写完整");
            }
            else
            {
                //在进行保存之前要先打开数据库,之后要关闭
                //为了捕捉异常,把代码放在try里面,代码会运行try里的所有语句
                //没有异常就会一个接一个运行,出现异常就会跳出try进入catch
                try
                {
                    Con.Open();
                    string query = "insert into StudentTable values('" + SName.Text + "','" + STeachers.Text + "','" + SClass.SelectedItem.ToString() + "')";
                    SqlCommand cmd = new SqlCommand(query,Con);    //SQL语句,插入命令
                    cmd.ExecuteNonQuery();                         //使用更新数据库命令
                    //保存操作完成后,弹出消息框提示保存完成
                    MessageBox.Show("信息保存成功!");
                    
                    Con.Close();
                    populate();
                    Reseinput();
                }
                catch (Exception Ex)   //catch捕捉异常
                {
                    MessageBox.Show(Ex.Message);
                }
            } 
        }

2、修改数据

//按键:修改
private void button2_Click(object sender, EventArgs e)
        {
            if (SName.Text == "" || STeachers.Text == "" || SClass.SelectedIndex == -1)  //有一个没填上都不行
            {
                MessageBox.Show("信息不足,请填写完整");
            }
            else
            {
                //在进行保存之前要先打开数据库,之后要关闭
                //为了捕捉异常,把代码放在try里面,代码会运行try里的所有语句
                //没有异常就会一个接一个运行,出现异常就会跳出try进入catch
                try
                {
                    Con.Open();
                    string query = "update StudentTable set SName = ('" + SName.Text + "') ,STeachers = ('" +  STeachers.Text+ "') ,SClass   = ('" + SClass.SelectedItem.ToString() + "') where SId = "+key+"";   //删除Id是key的那条记录
                    SqlCommand cmd = new SqlCommand(query, Con);    //SQL语句,插入命令
                    cmd.ExecuteNonQuery();                         //使用更新数据库命令
                    //保存操作完成后,弹出消息框提示保存完成
                    MessageBox.Show("信息修改完成!");

                    Con.Close();
                    Reseinput();
                }
                catch (Exception Ex)   //catch捕捉异常
                {
                    MessageBox.Show(Ex.Message);
                }
            }

3、查询函数

这里需要一个过滤函数,使用于搜索下拉列表中选定的信息

 private void Fileter()   
        {
            Con.Open();
            string query = "select * from StudentTable where SClass = '"+Catsearch.SelectedItem.ToString()+"'";   //SQL语句,查询和选定类别一致的数据
            SqlDataAdapter sda = new SqlDataAdapter(query, Con);      //创建批量抓取
            SqlCommandBuilder builder = new SqlCommandBuilder(sda);  //Adapter通常与commandbuilder配合使用,便于批量处理数据库
            var ds = new DataSet();         //创建虚拟表
            sda.Fill(ds);
            StudentDGV.DataSource = ds.Tables[0];    //把列表显示出来
            Con.Close();
        }

之后引入查询函数

 //函数:选定分类,进行查询
private void Catsearch_SelectionChangeCommitted(object sender, EventArgs e)
        {
            Fileter();
        }

4、重置输入数据

这里需要一个重置函数

int key = 0;
        //事件:把选中的列表信息填入上方的文本输入框和下拉列表中
        private void StudentDGV_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            SName.Text = StudentDGV.SelectedRows[0].Cells[1].Value.ToString();
            STeachers.Text = StudentDGV.SelectedRows[0].Cells[2].Value.ToString();
            SClass.SelectedItem = StudentDGV.SelectedRows[0].Cells[3].Value.ToString();
            //删除功能
            if (SName.Text == "")   //判断是否选定了一条数据
            {
                key = 0;
            }
            else        //如果选定了数据,就捕获第一列的SId,赋值给key
            {
                key = Convert.ToInt32(StudentDGV.SelectedRows[0].Cells[0].Value.ToString());        
            }
        }
//按键:搜索/更新
        private void button3_Click(object sender, EventArgs e)
        {
            populate();
            this.Catsearch.SelectedIndex = -1;      //清除原搜索类别
        }

5、删除数据

数据删除的功能由SQL语句实现

//按键:删除
        private void Delete_Click(object sender, EventArgs e)
        {
            if (key == 0)         //姓名没填写
            {
                MessageBox.Show("信息不足,请填写完整");
            }
            else
            {
                //在进行保存之前要先打开数据库,之后要关闭
                //为了捕捉异常,把代码放在try里面,代码会运行try里的所有语句
                //没有异常就会一个接一个运行,出现异常就会跳出try进入catch
                try
                {
                    Con.Open();
                    string query = "delete from StudentTable where SId = ('" + key + "')";   //删除Id是key的那条记录
                    SqlCommand cmd = new SqlCommand(query, Con);    //SQL语句,插入命令
                    cmd.ExecuteNonQuery();                         //使用更新数据库命令
                    //保存操作完成后,弹出消息框提示保存完成
                    MessageBox.Show("信息删除完成!");

                    Con.Close();
                    Reseinput();
                }
                catch (Exception Ex)   //catch捕捉异常
                {
                    MessageBox.Show(Ex.Message);
                }
            }

6、在数据表中按照学生类别筛选信息

在开启下拉列表时,开启过滤函数

//函数:选定分类,进行查询
        private void Catsearch_SelectionChangeCommitted(object sender, EventArgs e)
        {
            Fileter();
        }

可以选定一条信息的基础上,获取数据表信息加入输入框进行修改。

PS:消除冗余函数的方法

如果不小心双击了某个控件,添加了不必要的函数,说明是触发了这个控件的"事件"。

例如我双击了这些控件但是并没有用:

只需选中目标控件,在“事件”里重置事件即可;

 

  • 4
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值