1.闲话
我做的是手机百科系统(什么玩意。。。)主要是学生管理系统什么的做的人太多了,所以随便选了一个题材
2.界面展示

(数据随便插的勿喷)

3.所用控件
datagridview输出数据,combobox作为选项卡,linklabel超链接。

4.代码分析并展示各控件的作用
4.1 combobox
combobox可以利用其中的数据对数据库进行操作,也可以输出数据库中的内容,这里我主要利用的是利用其中的数据对数据库进行select
大部分没什么好说的,比较值得注意的一点是第一个和第二个combobox的作用,如果我第一个选了华为,那么第二个只会显示华为的系列,若我选择小米,则只显示小米的系列,实现代码如下

private void company_SelectedIndexChanged(object sender, EventArgs e){series.Items.Clear();if (company.SelectedItem == "全部"){series.Items.Add("全部");}if (company.SelectedItem == "华为"){series.Items.Add("全部");series.Items.Add("p系列");series.Items.Add("荣耀系列");series.Items.Add("mate系列");series.Items.Add("青春系列");series.Items.Add("保时捷系列");}if (company.SelectedItem == "苹果"){series.Items.Add("全部");series.Items.Add("max系列");series.Items.Add("plus系列");series.Items.Add("苹果系列");series.Items.Add("X系列");}if (company.SelectedItem == "小米"){series.Items.Add("全部");series.Items.Add("max系列");series.Items.Add("红米系列");series.Items.Add("小米系列");}if (company.SelectedItem == "三星"){series.Items.Add("全部");series.Items.Add("note系列");series.Items.Add("A系列");series.Items.Add("S系列");}}

值得注意的一点是这些代码要放在第一个combobox里,因为这些事件的函数关系问题,如果把代码放到series里的话,添加出来的项目显示不出来,所以实现不了后续功能。
linklabel
linklabel可以实现超链接,本身相当于一个点击事件,我把它设了一个超链接

     private void linkLabel2_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e){Process.Start("http://detail.zol.com.cn/cell_phone/index1175779.shtml");}

4.2datagridview控件
这个控件可以实现很多的功能,可以用它向数据库输入信息,可以添加按钮,可以展示信息,相当imba的控件
可惜由于时间原因(其实是懒),我最后只利用了它的展示信息的功能,是我这个项目的遗憾之一。
代码如下:

         sql = sql5;//sql是最终的查询语句SqlDataAdapter output = new SqlDataAdapter(sql, mycon);DataSet sdt = new DataSet();output.Fill(sdt);DataTable stable = sdt.Tables[0];result.Rows.Clear();string toall = Convert.ToString(sdt.Tables[0].Rows.Count);//统计查询出来的数目textBox2.Text = toall;//展示查询出来的数目for (int i = 0; i < sdt.Tables[0].Rows.Count; i++){result.Rows.Add( sdt.Tables[0].Rows[i][0], sdt.Tables[0].Rows[i][1], sdt.Tables[0].Rows[i][2], sdt.Tables[0].Rows[i][3], sdt.Tables[0].Rows[i][4], sdt.Tables[0].Rows[i][5]);}

4.3查询功能的实现:
由于我设计项目的原因,手机有多个属性,用户查询可能只需要其中两三个属性就可以进行查询了,那么查询语句怎么写?要写多少个if?其中几个空白的怎么搞,不能查询语句中间放个*吧。
想了想,也没太简单的办法,但是多重查询下来代码可能会过长,所以我用sql1,2,3,4,5等作为中间查询语句,把查询结果继承下来,并用变量代替语句解决了代码过长问题
其中代码如下

         if (company.SelectedItem == "全部"|| company.SelectedItem == null){sql1 = "select 手机名称,cpu,系统,价格,摄像头,内存 from [phone]";sql11= "select 手机名称 from [phone]";}else{sql1 = "select 手机名称,cpu,系统,价格,摄像头,内存 from [phone],[pandc] where [pandc].厂商名 ='" + company.SelectedItem + "'and [phone].手机名称=[pandc].手机名";sql11= "select 手机名称 from [phone],[pandc] where [pandc].厂商名 ='" + company.SelectedItem + "'and [phone].手机名称=[pandc].手机名";}if (series.SelectedItem =="全部"||series.SelectedItem == null){sql2 = sql1;sql22 = sql11;}else{sql2 = "select 手机名称,cpu,系统,价格,摄像头,内存 from [phone],[pandc] where [pandc].所属系列 ='" + series.SelectedItem + "'and [phone].手机名称=[pandc].手机名 and [phone].手机名称 in ("+ sql11 +")";sql22= "select 手机名称 from [phone],[pandc] where [pandc].所属系列 ='" + series.SelectedItem + "'and [phone].手机名称=[pandc].手机名 and [phone].手机名称 in (" + sql11 + ")";}if(price.SelectedItem== "1000以下"){sql3 = "select 手机名称,cpu,系统,价格,摄像头,内存 from [phone] where [phone].价格 <1000 and [phone].手机名称 in (" + sql22 + ")";sql33= "select 手机名称 from [phone] where [phone].价格 <1000 and [phone].手机名称 in (" + sql22 + ")";}else if(price.SelectedItem=="1000-2000"){sql3 = "select 手机名称,cpu,系统,价格,摄像头,内存 from [phone] where  [phone].价格>=1000 and [phone].价格<=2000  and [phone].手机名称 in (" + sql22 + ")";sql33 = "select 手机名称 from [phone] where [phone].价格>=1000 and [phone].价格<=2000 and [phone].手机名称 in (" + sql22 + ")";}else if (price.SelectedItem == "2000-3000"){sql3 = "select 手机名称,cpu,系统,价格,摄像头,内存 from [phone] where  [phone].价格>=2000 and [phone].价格<=3000  and [phone].手机名称 in (" + sql22 + ")";sql33 = "select 手机名称 from [phone] where [phone].价格>=2000 and [phone].价格<=3000 and [phone].手机名称 in (" + sql22 + ")";}else if (price.SelectedItem == "3000-4000"){sql3 = "select 手机名称,cpu,系统,价格,摄像头,内存 from [phone] where  [phone].价格>=3000 and [phone].价格<=4000  and [phone].手机名称 in (" + sql22 + ")";sql33 = "select 手机名称 from [phone] where [phone].价格>=3000 and [phone].价格<=4000 and [phone].手机名称 in (" + sql22 + ")";}else if (price.SelectedItem == "4000-5000"){sql3 = "select 手机名称,cpu,系统,价格,摄像头,内存 from [phone] where  [phone].价格>=4000 and [phone].价格<=5000  and [phone].手机名称 in (" + sql22 + ")";sql33 = "select 手机名称 from [phone] where [phone].价格>=4000 and [phone].价格<=5000 and [phone].手机名称 in (" + sql22 + ")";}else if (price.SelectedItem == "5000以上"){sql3 = "select 手机名称,cpu,系统,价格,摄像头,内存 from [phone] where  [phone].价格>=5000 and [phone].手机名称 in (" + sql22 + ")";sql33 = "select 手机名称 from [phone] where [phone].价格>=5000 and [phone].手机名称 in (" + sql22 + ")";}else if(price.SelectedItem == "全部"|| price.SelectedItem == null){sql3 = sql2;sql33 = sql22;}if(CPU.SelectedItem=="全部"|| CPU.SelectedItem == null){sql4 = sql3;sql44 = sql33;}else{sql4 = "select 手机名称,cpu,系统,价格,摄像头,内存 from [phone] where  [phone].cpu='"+ CPU.SelectedItem +"'  and [phone].手机名称 in (" + sql33 + ")";sql44= "select 手机名称 from [phone] where  [phone].cpu='" + CPU.SelectedItem + "'  and [phone].手机名称 in (" + sql33 + ")";}if(photo.SelectedItem=="全部"|| photo.SelectedItem == null){sql5 = sql4;}else{sql5= "select 手机名称,cpu,系统,价格,摄像头,内存 from [phone] where  [phone].摄像头='" + photo.SelectedItem + "'  and [phone].手机名称 in (" + sql44 + ")";}sql = sql5;

ps:之所以引入sql11,22,33等是因为出现了这个错误
System.Data.SqlClient.SqlException:“当没有用 EXISTS 引入子查询时,在选择列表中只能指定一个表达式。”
这个错误就是说如果select A,B,C from table where A in ()的话就会出错,所以只能select A from table where A in ()这个样子,但是我输出结果肯定是要ABCDE的,所以我取了个中间变量解决了这个问题。
4.4按名字查找
到这里就简单多了,直接放button事件的代码

         string constr = "server=.;database=housework;integrated security=SSPI";SqlConnection mycon = new SqlConnection(constr);SqlCommand checkCmd = mycon.CreateCommand();mycon.Open();string name = textBox1.Text;string sql = "select 手机名称,cpu,系统,价格,摄像头,内存 from [phone] where  手机名称='"+ name +"'";SqlDataAdapter output = new SqlDataAdapter(sql, mycon);DataSet sdt = new DataSet();output.Fill(sdt);DataTable stable = sdt.Tables[0];result.Rows.Clear();for (int i = 0; i < sdt.Tables[0].Rows.Count; i++){result.Rows.Add(sdt.Tables[0].Rows[i][0], sdt.Tables[0].Rows[i][1], sdt.Tables[0].Rows[i][2], sdt.Tables[0].Rows[i][3], sdt.Tables[0].Rows[i][4], sdt.Tables[0].Rows[i][5]);}

到这里用户界面的基本功能就结束了,下面一篇我将展示我的管理界面的窗口,并简单介绍其中所用到的控件的用法等

如何做一个简单的XX(学生/图书馆)管理系统(二)相关推荐

  1. 利用python做一个简单小应用--学生通讯录管理系统

    该简单学生通讯录管理系统六个可操作过程 1.添加学生 2.删除学生 3.修改学生 4.查询学生 5.获取所有学生通讯信息 6.退出系统 话不多说,上代码 # -*- codeing = utf-8 - ...

  2. 如何做一个简单的XX(学生/图书馆)管理系统(一)

    一.前言 本文背景 老师要求做一个数据库管理系统,虽然数据库课上讲了很多知识,不过操作起来,关于软件,语言等等可以说是一点也没提,只好自己从头摸索,走了很多弯路,现在回头看看自己做好的系统发现真的是不 ...

  3. java制作管理系统视频_阶段1:手把手快速做一个Java swing mysql学生信息管理系统附带完整源码及视频开发教程【猿来入此自营】...

    <p> <span style="color:#666666;font-family:"font-size:16px;background-color:#FFFF ...

  4. HTML做一个简单漂亮的宠图书馆 1页纯html代码实训素材

    ⛵ 源码获取 文末联系 ✈ Web前端开发技术 描述 网页设计题材,DIV+CSS 布局制作,HTML+CSS网页设计期末课程大作业 | | HTML期末大学生网页设计作业 HTML:结构 CSS:样 ...

  5. JSP+Mysql 做一个简单的学生成绩查询web系统

    IDEA基于JSP+Mysql 做一个简单的学生成绩查询web系统 目录 一.相关软件的下载和配置环境 Java环境的下载和配置 (1)IDEA的下载和安装 ​ (2)JdK的安装 Tomcat的下载 ...

  6. c语言设计程序计算器,C语言程序设计,做一个简单计算器

    题目: C语言程序设计,做一个简单计算器 程序内容有:加减乘除和平方,立方,开方等.用if或者swith结构来编程. 算加法时只输出加法的结果,算减法时只出减法的结果,如此类推. 解答: 已发送, # ...

  7. 最年轻院士北大演讲:做一个简单纯粹的自己

    抓住事物的本质,排除干扰,做最简单合理的推断,你们就更有可能做出正确的选择和决定.事实上,最简单的.最纯粹的往往才是最深刻的,也是最持久永恒的. 回归根本,做一个简单纯粹的自己.这也应该是做人做事的指 ...

  8. 做一个幼儿园老师和学生家长互动的app谁才是老大

    章红春(303***632) 15:24:01 现在做一个幼儿园老师和学生家长互动的app,幼儿园出钱 谁才是老大? 走单骑(376***455) 15:24:40 园长 走单骑(376***455) ...

  9. 用c++做一个简单的打飞机小游戏(详细说明与注释)

    用c++做一个简单的打飞机小游戏(详细说明与注释) 说明: 代码长度5k多,行数200多行. 不仅没有压行,反而为了条理清晰一点所以很多中间加空换行,把很多可以写在一起的分割成了几个函数. 为了不会忘 ...

最新文章

  1. 解决linux病毒导致带宽跑满的解决过程 ,可以参考参考
  2. C#GDI+图像处理
  3. android开发实验报告二,《Android 移动应用开发》实验报告-范本2(33页)-原创力文档...
  4. 53个要点提高PHP编程效率
  5. linux hadoop集群搭建,hadoop集群搭建
  6. python控制台输出到文件_Python print 立即打印内容到重定向的文件
  7. Lis(bzoj 3532)
  8. 神经网络模型模型转ONNX
  9. python能做机器人吗_python深度学习 人工智能是做机器人吗?
  10. rust 案例_Rust特殊枚举Option用法
  11. 物联网中无线通信技术
  12. 一则汽车CAN总线的安全渗透题目分析
  13. 浙大计算机学院12月12日毅行,感谢参与lt;2020年秋季浙大飘渺毅行gt;
  14. 英特尔核显驱动hd630_英特尔首款独显 Xe Max 评测出炉:低于移动端 GTX 1050 Ti
  15. DirectAdmin安装Zend Optimizer
  16. iis6 增加PHP+MYSQL等时,记得 PHP目录要给EVERYONE权限
  17. 填万能经营范围模板,避开办理营业执照经营范围的坑
  18. 动态壁纸安卓_酷玩软件第7期:还在用无声的动态壁纸?短视频壁纸软件(Win+安卓版本)...
  19. Altium Designer Summer 09绘制3D封装库
  20. 首席谈判官的定义和职责

热门文章

  1. 文献解读丨利用群体转录组方法和eQTLs寻找水稻抗病转录因子
  2. Convex Optimization-chapter1
  3. 浙大计算机各个实验室 详细介绍(持续更新)
  4. jsp网页嵌入PHP网页,JSP_(jsp/html)网页上嵌入播放器(常用播放器代码整理),这个其实很简单,只要在HTML上 - phpStudy...
  5. 推荐系统 - 基于FM算法的协同召回算法
  6. 弱电人要学习的网络安全基础知识
  7. Java实现 蓝桥杯 算法提高 成绩排名
  8. 后端技术 - 收藏集 - 掘金
  9. 数据标注案例分析-足球比赛时间轴打点标注项目
  10. 纳米数据世界杯足球数据api接口,体育数据api接口,实时比分接口示例演示,数据推送