C#学生管理系统——班级管理的班级列表(查询功能)

上次的年级列表做好了,今天就来做班级管理中的班级列表,与年级列表不同的是,班级列表增加了查询功能,如下图:

界面布局部分:

简单写下,查询这个浅色的框框是GroupBox,其功能是带有标题的框框(只是为了美观,没啥卵用),年级这些都是Label标签,选择年级的下拉菜单框用combobox,班级textbox,查询按钮button。
下半部分因为要显示出来表格的样子,和上次年级列表的界面设置一样,不多写,控件Datagridview。

给要用到的几个控件起名字:
年级的下拉菜单——cmbgrade
班级的textbox——textclass
下半部分信息展示的表格Datagridview——dgvclass

数据库:
数据库起名为class,有4个关键信息,如下图:
cid——班级编号,
cname——班级名称,
gid——年级编号(后面要与年级表连接),
remark——备注。

功能实现部分:

首先当我们点开班级列表这个界面的时候,就要自动加载出班级的下拉菜单和总的班级列表,调用两个初始化函数:

private void list_class_Load(object sender, EventArgs e){initgrade();   //初始化加载年级列表initclass();   //初始化加载班级列表}

初始化年级列表:
大致思路是:下拉菜单需要Datatable来获取,指定给cmbclass
1.写sql语句来获取年级信息,Datatable来获取sql语句:

 string sql = "select * from [grade]";DataTable dtgrade = sqlhelper.getDataTable(sql);

2.获取grade表中数据

 //获取grade表中数据cmbgrade.DataSource = dtgrade;        //comboBox来获取datatable cmbgrade.DisplayMember = "gname";       //设置绑定的数据库对应的名称,显示的内容cmbgrade.ValueMember = "gid";

3.(附加步骤)默认情况下显示“请选择“;

 //默认“请选择“;添加一行DataRow drow = dtgrade.NewRow();drow["gid"] = 0;drow["gname"] = "请选择";dtgrade.Rows.InsertAt(drow, 0); //使dt.Rows.Add(dr)只是把选项追加到最后,而使用dt.Rows.InsertAt(dr, 0)可以把增加的选项插入到相应的位置上

初始化班级列表:
这里初始化加载要显示出编号,班级,年级信息,需要数据库中表class的gid和表grade中的gid相匹配进而展示出年级名称,数据库用到了inner join…on来关联两个表。

         string sql = "SELECT cid, cname, gname FROM class c INNER JOIN grade g ON c.gid = g.gid ORDER BY c.cid";DataTable dclass = sqlhelper.getDataTable(sql);dgvclass.DataSource = dclass;

初始化完成后只剩下查询功能了,接下来写复杂的查询按钮:

查询按钮功能设计:

1.获取用户输入信息
注意这里!!!用SelectedValue获取下拉菜单框的数据是object类型,你可以强制转换下试试,但我的VS不识别总报错,费了很大功夫查到可以ToString来获取string格式,最后再转化为int类型,实在想不到其他方法了,如果有人看到后,有高见,请私信我呀。

int setid=(int)cmbgrade.SelectedValue

  string _value = cmbgrade.SelectedValue.ToString();int setgid = int.Parse(_value);string setclass = textclass.Text.Trim();

2.判断获取的数据是否为空

不管是否为空,我们都要用到初始化班级的sql语句,因为展示的内容一样,所以上个sql语句后加个where 1=1来表示该sql语句恒成立
判断获取的setid是否为0,不为0,则在sql语句加上条件,输入的年级id与表中年级id匹配,同理判断获取的setclass是否为空,进行模糊查询。

 string sql = "select c.cid, c.cname, g.gname from (class  c INNER JOIN grade g ON c.gid = g.gid) where 1=1 ";//判断if (setgid != 0){sql += " and c.gid=@gid";}if (!string.IsNullOrEmpty(setclass)){sql += " and cname like @cname";}//定义参数数组 进行传参OleDbParameter[] paras ={new OleDbParameter("@gid",setgid),new OleDbParameter("@cname","%"+setclass+"%")};DataTable dclass = sqlhelper.getDataTable(sql,paras);dgvclass.DataSource = dclass;

注意这里模糊查询的问题:在sql语句中不加%,最后在传参时加%才有效。
到这里这部分就写完了,运行:
学生列表与班级列表相似,下次只写一点心得,布局和功能实现不多写。
附:今天的完整代码:

   private void list_class_Load(object sender, EventArgs e){initgrade();   //初始化加载年级列表initclass();   //初始化加载班级列表}private void initgrade(){//下拉菜单也要datatable来获取,然后指定给comboBox//用displaymember来show显示的值string sql = "select * from [grade]";DataTable dtgrade = sqlhelper.getDataTable(sql);//默认“请选择“;添加一行DataRow drow = dtgrade.NewRow();drow["gid"] = 0;drow["gname"] = "请选择";dtgrade.Rows.InsertAt(drow, 0); //使用dt.Rows.Add(dr)只是把选项追加到最后,而使用dt.Rows.InsertAt(dr, 0)可以把增加的选项插入到相应的位置上//获取grade表中数据cmbgrade.DataSource = dtgrade;        //comboBox来获取datatable cmbgrade.DisplayMember = "gname";       //设置绑定的数据库对应的名称,显示的内容cmbgrade.ValueMember = "gid";}private void initclass(){string sql = "SELECT cid, cname, gname FROM class c INNER JOIN grade g ON c.gid = g.gid ORDER BY c.cid";DataTable dclass = sqlhelper.getDataTable(sql);dgvclass.DataSource = dclass;}//查询private void btncha_Click(object sender, EventArgs e){//获取输入信息string _value = cmbgrade.SelectedValue.ToString();int setgid = int.Parse(_value);string setclass = textclass.Text.Trim();string sql = "select c.cid, c.cname, g.gname from (class  c INNER JOIN grade g ON c.gid = g.gid) where 1=1 ";//判断if (setgid != 0){sql += " and c.gid=@gid";}if (!string.IsNullOrEmpty(setclass)){sql += " and cname like @cname";}//定义参数数组 进行传参OleDbParameter[] paras ={new OleDbParameter("@gid",setgid),new OleDbParameter("@cname","%"+setclass+"%")};DataTable dclass = sqlhelper.getDataTable(sql,paras);dgvclass.DataSource = dclass;}

C#学生管理系统——班级列表(查询功能)相关推荐

  1. 【C 语言】文件操作 ( 学生管理系统 | 插入数据 | 查询数据 | 删除数据 )

    文章目录 一.学生管理系统 1.插入数据 2.查询数据 3.删除数据 二.完整代码 一.学生管理系统 实现一个简易学生管理系统 , 验证文件操作 ; 1.插入数据 从命令行接收数据 , 放入结构体成员 ...

  2. 图书管理系统——图书的查询功能/图书的添加功能

    1图书的查询功能 1.1点击图书馆里进行页面的跳转 Controller.java /**图书首页*/@GetMapping("/bookIndex")public String ...

  3. layui列表显示缩略图_layUI实现列表查询功能

    layUI可以直接使用本地的json文件进行列表数据渲染,但,我们会发现,官网ctr+c ctr+v 过来的代码在做查询时每次看起来都有列表刷新的动作,但实际操作无效,百度了一大圈也没找到具体的原因, ...

  4. python学生管理系统用列表_史上最全面的python学生管理系统教程(二)

    序言 这篇我们来讲该软件的数据保存方式,由于想到要简便快捷,所以我采用了sqlite3数据库,该数据库操作简单方便,而且易于管理,并且SQLite是一个进程内的库,实现了自给自足的.无服务器的.零配置 ...

  5. layui列表筛选列_layUI实现列表查询功能

    layUI可以直接使用本地的json文件进行列表数据渲染,但,我们会发现,官网ctr+c ctr+v 过来的代码在做查询时每次看起来都有列表刷新的动作,但实际操作无效,百度了一大圈也没找到具体的原因, ...

  6. J2SE图书管理系统(8)——图书查询功能

    1.数据访问层:com.java.dao;  先在BookDao里面写图书查询的方法: //图书查询方法public ResultSet list(Connection con,Book book) ...

  7. 【JAVA项目实战】【图书管理系统】用户查询功能【Servlet】+【Jsp】+【Mysql】

  8. Python实现学生管理系统(功能全面)

    标题Python实现学生管理系统 功能描述 1.分为两个界面:(1)登录和注册界面 (2)学生管理系统界面 2.登录功能和之前发布的图书管理系统相同,登录成功后可进入学生管理系统界面,这里不再叙述 3 ...

  9. 学生信息管理系统----班级信息管理

    嵌入班级信息到System页面   这一部分要实现班级信息的相关操作.   还是在名为servlet的package下创建一个显示班级列表的Servlet--ClazzServlet.这样取名字是避免 ...

最新文章

  1. 【CV】Anaconda 安装教程|CSDN创作打卡
  2. 引用(Reference)
  3. 数据库高可用和分区解决方案-MySQL 篇
  4. 常见挖矿 cpu 算力单位:EH/s 、PH/s、TH/s、Msol/s、Mgps、Kgps
  5. 领扣(LeetCode)最长公共前缀 个人题解
  6. VS.NET中的一些拖放操作
  7. 宿舍助手app——个人工作第四天
  8. 上海交大MBA学费与资助
  9. C#LeetCode刷题之#67-二进制求和(Add Binary)
  10. Vue3 + Typescript + Node.js 搭建elementUI使用环境
  11. txt代码文件怎么转换_pdf怎么转换成txt格式?小说党速来get
  12. unity2d物体3d效果
  13. win10修改保存的git用户名和密码
  14. 城链科技董事长肖金伟:践行数据经济系国家战略,引领数字时代新消费发展!
  15. 百行代码手撸扫雷(下)c/c++
  16. UC浏览器电脑版来了:用了有快感?
  17. BP神经网络的数学表达式
  18. 电脑计算机工具计算,计算机的计算器在哪 自己的电脑上的计算器在哪里找
  19. C++/QT生成二维码和扫瞄二维码
  20. HTML如何设置复选框、单选框以及默认选项?

热门文章

  1. 一种构建网络安全知识图谱的实用方法——贾焰
  2. 2006河北高考五分一档统计表
  3. 联想小新2018 拆机换屏幕
  4. H5移动端rem布局还原750px设计稿方案。
  5. 一生情缘繫交大——卢善栋老学长
  6. php将微信绑定到账号上,微信通帐户绑定
  7. 新买的阿里云ECS基本安全运维
  8. 给中国学生的第七封信--21世纪最需要的7种人才
  9. 女性创业加速器计划成立一周年声明
  10. CNN手写识别体识别