学习WinForm窗体程序也有一段时间了,今天就来尝试着来一个项目热热身~

在我们通常使用的MySchool管理中,不外乎这几种功能:增、删、改、查、改密码

在过去的C#中确实是挺简单的,但是在学习了WinForm的各种控件以后,我们就能

彻底摆脱控制台程序的low!走上高大上的道路!~

>切记:每个控件的使用前都要先修改他们的Name属性

虽然连接数据库的代码都已经很熟了,但是还是要再次强调一下!

string str = "Data source=.;initial catalog=MySchool;uid=sa";
SqlConnection con = new SqlConnection(str);

>>>验证数据库中的账户和密码来登录,从而才能显示主菜单

再次强调下,连接到功能窗口的方法,比如是连接到新建学生用户的

eg:

  //在单击"新建学生用户"的Click事件的方法中添加如下代码

  FormStudent frm = new FormStudent();

  frm.Show(); 

既然说到了新增学生信息,那么就来认真的解说下具体的步骤吧

//在Student窗体的Load事件中就要把应填入数据信息的text文本框绑定到数据库上

public void LoadAllGrade()
{
//拿到所有的年级
string str = "Data source=.;initial catalog=MySchool;uid=sa";
SqlConnection con = new SqlConnection(str);
string sql = "select gradename from grade";
SqlCommand cmd = new SqlCommand(sql, con);
try
{
con.Open();
SqlDataReader dr = cmd.ExecuteReader();
if (dr != null)
{
if (dr.HasRows)
{
while (dr.Read())
{
string gname = dr["gradename"].ToString();
//每读到一个年级名称,我就将"S1",添加到下拉框
cboGrade.Items.Add(gname);
}
}
}
}
catch (Exception)
{
MessageBox.Show("网络异常");
}
finally
{
con.Close();
}
}

上面简单的介绍了怎么把复杂的年级下拉框从数据库中读取出来并绑定到下拉框上

接下就随便找俩个普通的文本框来进行传值吧

使用insert语句向MySchool中添加学生信息

          //编辑学生信息并保存     
      //将获取的学号转化为int类型
int non = Convert.ToInt32(txtStuno.Text);
//添加学生密码
string stupwd = TextNewPwd.Text;
string sql = "insert into Student values('" + stupwd + "','" + stuname + "','" + stugender + "');

接下来就是按照学生姓名来进行模糊查询学生信息了

主要就是在窗体的Load事件中就要遍历Myschool,将所有的学生信息读取到ListView中.

       //加载出所有的学生信息
       string str = "Data source=.;initial catalog=MySchool;uid=sa";
SqlConnection con = new SqlConnection(str);
string sql = "select * from Student;
SqlCommand cmd = new SqlCommand(sql, con);
try
{
con.Open();
SqlDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
//将读取出来的信息赋值给对应的TextBox
//姓名
string StuName = dr["studentname"].ToString();
gbStuN.Text = StuName;
//密码
string StuPwd = dr["LoginPwd"].ToString();
TextName.Text = StuPwd;
TextNewPwd.Text = StuPwd;
//电话
string StuPhone = dr["Phone"].ToString();
TextPhone.Text = StuPhone;
//邮箱
string StuEmail = dr["Email"].ToString();
TextEmail.Text = StuEmail;
//地址
string StuAdress = dr["Address"].ToString();
Address.Text = StuAdress; //年级编号
int gid = Convert.ToInt32(dr["gradeid"]);
//- - - 根据年级编号获取对应的年级名称
string gradename = GetGradeNameByGradeId(gid);
cboGrade.Text = gradename; //性别
string gender = dr["gender"].ToString();
if (gender.Equals(""))
{
raonan.Checked = true;
}
else if (gender.Equals(""))
{
raonv.Checked = true;
}
//出生日期
DateTime dt = Convert.ToDateTime(dr["birthday"]);
Dt.Value = dt;
}
dr.Close();
}
catch (Exception)
{
MessageBox.Show("检查代码3333333333!");
}
finally
{
con.Close();
}

那么接下来就只需要在查询语句后面加上where条件就可以进行判断查询了,那么相应的修改和删除也就解决了,具体的就不多说了,抓紧时间进行下一步!

接下来就是修改当前用户的密码了,当然了,也要进行相应的一些判断语句是吧,不然随便就可以更改岂不是乱套了?!~

就像酱紫:

  

判定一下用户输入的原密码是否是正确的,然后在进行相应的操作!,接下来就一起来见证吧~

我们新创建一个窗体添上相应的控件,更改其属性即可,主要代码如下:

 //在单击修改的Click事件中进行判定
//判断原密码是否输入正确来
if (tboldpwd.Text == pwd)
{
//第二次的密码tbpwd第一次的密码tbnewpwd
if (tbpwd.Text == tbnewpwd.Text)
{
string str = "Data Source=.;initial catalog=MySchool;uid=sa";
SqlConnection con = new SqlConnection(str);
con.Open();
string sql = "update Student set LoginPwd='" + tbnewpwd.Text + "' where LoginPwd='" + tboldpwd.Text + "'";
SqlCommand cmd = new SqlCommand(sql, con);
int count = Convert.ToInt32(cmd.ExecuteNonQuery());
if (count > )
{
MessageBox.Show("修改成功!");
}
else
{
MessageBox.Show("修改失败!");
}
}
else
{
MessageBox.Show("两次密码不一致!");
}
}
else
{
MessageBox.Show("请输入正确的原密码!","温馨提示");
}

最主要的就是在用户登录的FormLogin窗体中将用户用来进行登录的密码付给一个公有的变量,

在修改密码的窗体中进行调用,用来和用户输入的原密码进行匹配,当然了,这样的修改密码确实有些鸡肋,

但是我们同样的可以依照这样的方法来把用户输入的密码和数据库中的密码值进行匹配,在这里就不细说了...

时间问题,今天就到这里,明天继续更新!敬请期待

WinForm窗体项目 之 MySchool管理系统终极版的更多相关文章

  1. Winform开发框架之客户关系管理系统(CRM)的开发总结系列4-Tab控件页面的动态加载

    在前面介绍的几篇关于CRM系统的开发随笔中,里面都整合了多个页面的功能,包括多文档界面,以及客户相关信息的页面展示,这个模块就是利用DevExpress控件的XtraTabPage控件的动态加载实现的 ...

  2. Winform开发框架之客户关系管理系统(CRM)的开发总结系列2-基于框架的开发过程

    在上篇随笔<Winform开发框架之客户关系管理系统(CRM)的开发总结系列1-界面功能展示>中介绍了我的整个CRM系统的概貌,本篇继续本系列的文章,介绍如何基于我的<winform ...

  3. 【转】WinForm窗体显示和窗体间传值

    以前对WinForm窗体显示和窗体间传值了解不是很清楚 最近做了一些WinForm项目,把用到的相关知识整理如下 A.WinForm中窗体显示 显示窗体可以有以下2种方法: Form.ShowDial ...

  4. C#实现WinForm窗体逐渐显示效果

    C#实现WinForm窗体逐渐显示效果,这个博客园里面已经有其它人已经实现了,原理很简单,就是通过定时改变窗体的透明度(从0到1,即透明度从完全透明到不透明),我这里也是按照这个思路来实现的,但是我做 ...

  5. .NET vs2010中使用IrisSkin2.dll轻松实现winForm窗体换肤功能

    IrisSkin2.dll是一款很不错的免费皮肤控件,利用它可以轻松的实现winForm窗体换肤! 网上很多朋友说在VS2010中不能使用IrisSkin2.dll,我这里提供一个取巧的办法. Iri ...

  6. Winform开发框架之客户关系管理系统(CRM)的开发总结系列3-客户分类和配置管理实现

    我在本系列随笔的开始,介绍了CRM系统一个重要的客户分类的展示界面,其中包含了从字典中加载分类.从已有数据中加载分类.以及分组列表中加载分类等方式的实现,以及可以动态对这些节点进行配置,实现客户分类的 ...

  7. 客户端(Winform窗体)上传文件到服务器(web窗体)简单例子

    客户端:先创建一个winform窗体的应用程序项目 项目结构

  8. Winform窗体实现简单的二维码生成和保存

    二维码的生成需要用到二维码生成的类库,ThoughtWorks.QRCode.dll 步骤: 第一步:下载二维码生成类库,ThoughtWorks.QRCode.dll 第二步:新建winform项目 ...

  9. 关于WinForm引用WPF窗体---在Winform窗体中使用WPF控件

    项目中有个界面展示用WPF实现起来比较简单,并且能提供更酷炫的效果,但是在WinForm中使用WPF窗体出现了问题,在网上找了一下有些人说Winform不能引用WPF的窗体,我就很纳闷,Win32都能 ...

随机推荐

  1. 最长上升子序列的回溯 ZOJ 2432

    题目大意: 找一组最长上升公共子序列,并把任意一组满足的情况输出出来 最长公共上升子序列不清楚可以先看这篇文章 http://www.cnblogs.com/CSU3901130321/p/41826 ...

  2. I - Navigation Nightmare 并查集

    Farmer John's pastoral neighborhood has N farms (2 <= N <= 40,000), usually numbered/labeled 1 ...

  3. bbed改动undo段状态(ORA-01578)

    ZBDBA@orcl11g>select * from zbdba; select * from zbdba * ERROR at line 1: ORA-01578: ORACLE data ...

  4. ORA-00600: internal error code, arguments: [kkqtSetOp.1]

    新数据库从32升级到64位的11G 11 2 0 3 有条SQL 语句运行的时候会导致内部错误. 使用PL/SQL DEVELOPER 查询该语句的运行机会 按F5键 就激发了这个ORA600 单击此 ...

  5. [学习笔记]JavaScript基础

    JavaScript概述 1. JavaScript定义 JavaScript是Netscape公司开发的一种基于对象和事件驱动的脚本语言.它是弱类型语言.仅仅能由浏览器解释运行. 当中: 脚本语言: ...

  6. error: &#39;for&#39; loop initial declarations are only allowed in C99 mode

    error: 'for' loop initial declarations are only allowed in C99 mode 使用gcc编译代码是报出 error: 'for' loop i ...

  7. Android学习之仿QQ側滑功能的实现

    如今项目越来越多的应用了滑动删除的功能,Android本来遵循的是长按删除,IOS定制的是滑动删除,不可否认滑动删除确实在客户体验上要好一点,所以看了非常多关于仿QQ滑动删除的样例,还是感觉代码家的A ...

  8. 如何在 webpack 项目中使用绝对路径

    react 小白编程 本项目是使用 create-react-app 脚手架构建的react项目 找到 config 配置文件下的 webpack.config.dev.js 和 webpack.co ...

  9. SQL SERVER学习笔记:临时表与表变量

    本文主要摘自徐海蔚的<Microsoft SQL SERVER企业级平台管理实践> 表变量可以作为存储过程的返回参数,而临时表不行.(存疑?表值参数只在SQL SERVER2008才开始支 ...

  10. HDU 1299Diophantus of Alexandria

    Diophantus of Alexandria Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java ...