学习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. at24c02系列和at24c256系列的比较

    编号的含义: at24c02系列包括的有: 128(1K),256(2K),512(4K),1024(8K),2048(16K)字节(B) at24c256系列包括的有: 16384(128K),32 ...

  2. Ubuntu 16.04安装设备管理器Hardinfo和lshw设备信息命令

    安装: sudo apt-get install hardinfo 启动: 实际上这些信息都可以通过lshw进行查看,参考:https://linux.die.net/man/1/lshw

  3. Ubuntu 16.04切换/home中文目录为英文目录

    其实这个方法是具有技巧性的,不建议使用. 1.先转换成英文 sudo gedit /etc/default/locale 将内容改为: LANG=”en_US.UTF-8″ LANGUAGE=”en_ ...

  4. Mybatis在Spring环境下的启动顺序

    主要看三个类: mybatis-spring-1.2.2.jar包 -> org.mybatis.spring.SqlSessionFactoryBean mybatis-3.2.6.jar包 ...

  5. ci get_instance()

    你随便下个CI框架的源码都会看到很多的get_instance() 函数,这个函数是用来获取CI 的全局超级对象,CI 是单例模式的框架,所有全局有一个超级对象.因为只有一个实例,所以无论这个函数使用 ...

  6. zoj 月赛

    Wumpus Time Limit: 2 Seconds      Memory Limit: 65536 KB One day Leon finds a very classic game call ...

  7. 百度LBS云搜索时报错 &quot;filter:area is not filteable field, please set property in the cloud-storage

    {"status":2,"message":"filter:area is not filteable field, please set prope ...

  8. Java与设计模式-适配器模式

    适配器模式是开发中常常会用到的模式,Android开发中常常常使用到的各种adapter就属于适配器模式,连接各种数据库时也要用到适配器模式. 适配器模式在生活中的实例也随处可见,你托人在日本买了个电 ...

  9. express 与 mvc

    听人介绍,说express.js是一个for nodejs的mvc框架. 既然是MVC,那么,express里面,什么是M,什么是V,又什么是C? C,很容易看出来,就是路由.express的路由机制 ...

  10. imagebutton 设置了src属性的图片更换

    <ImageButton android:id="@+id/mediacontroller_play_pause" android:layout_width="wr ...