学习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. vue 刷新当前页面的时候重新调用新的cookie

    data() { return{ AdminToken: this.getCookie('token'), } }, updated() { //刷新当前页面的时候重新调用新的cookie this. ...

  2. CSS3制作404立体字体

    CSS3制作404立体字体页面效果     鼠标移动上去,背景色变白.       动态效果:     .demo p:first-child span:hover { text-shadow:0px ...

  3. Css学习总结(3)——CSS布局解决方案 - 水平、垂直居中、多列布局、全屏布局

    居中布局 水平居中 子元素于父元素水平居中且其(子元素与父元素)宽度均可变. inline-block + text-align <div class="parent"> ...

  4. noip模拟赛 天天和不可描述

    分析:直接就这么翻肯定是不行的,换一种想法:有括号就是把括号里的字符串倒着输出,如果在括号里又遇到了括号就继续倒着输出,相当于递归. 我们可以用递归直接做,也可以用一层循环搞定,每次从左括号跳到右括号 ...

  5. C++ - 一个构造函数调用构造函数的问题

          今天做C++的实验,题目是写一个二维点的类,然后让一个三维点的类继承它然后扩展.题目是一般学面向对象语言的常用例子.       然后遇到一个这样的问题:之前用Java的时候写构造方法的时 ...

  6. scrapy的User-Agent中间件、代理IP中间件、cookies设置、多个爬虫自定义settings设置

    在scrapy的反爬中,常用的几个配置,简单总结了下: User-Agent中间件: from fake_useragent import UserAgent class RandomUserAgen ...

  7. 兼容IE8 addEventListener、removeEventListener 函数

    //兼容bind函数 if(!Function.prototype.bind){ Function.prototype.bind = function(){ if(typeof this !== 'f ...

  8. 洛谷——P2212 [USACO14MAR]浇地Watering the Fields

    P2212 [USACO14MAR]浇地Watering the Fields 题目描述 Due to a lack of rain, Farmer John wants to build an ir ...

  9. 为什么Linux下的环境变量要用大写而不是小写

    境变量的名称通常用大写字母来定义.实际上用小写字母来定义环境变量也不会报错,只是习惯上都是用大写字母来表示的. 首先说明一下,在Windows下是不区分大小写的,所以在Windows下怎么写都能获取到 ...

  10. Unity3D Asset文件导出3DMax 可编辑格式

    本文章由cartzhang编写,转载请注明出处. 全部权利保留. 文章链接:http://blog.csdn.net/cartzhang/article/details/60878354 作者:car ...