1、辅助类开发:
我们需要在多个地方使用用户名和密码,为了减少代码的重复性,我们可以将一些常用的功能写在类里面,以实现代码的重复使用。
准备工作:在VS软件中,新建一个项目KTV_MS
在项目中新添加类的方法:
在【解决方案资源管理器】——右键【项目名称】KTV_MS——【添加】——【类】——在弹出的窗体中,给类起一个名字,然后点击确定。
在给类起名字的时候,注意起一个有意义的名字,而不要使用默认的Class1.css。当项目中用的辅助类较多时,可以根据要实现的功能,通过类的名字,快速找到类并使用它。
1.1 新添加一个UserUtil类,用来存放账号和账号类型信息
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace KTV_MS
{
class UserUtil
{
//在类中声明一个属性,用来存放账号名称
public static string userName;
//在类中声明一个属性,用来存放账号类型
public static string userType;
}
}
1.2 新添加一个DatabaseHelper类,用来进行数据库连接、以及数据操作
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace KTV_MS
{
class DatabaseHelper
{
//声明一个字符串属性,用来连接数据库的信息
private static String connString = "data source=LAPTOP-IN3E6IJP\\SQLEXPRESS; initial catalog=KTV_MS_DB; integrated security=true";
//创建数据库连接对象(需要引用命名空间System.Data.SqlClient)
public static SqlConnection connection=new SqlConnection(connString);
//对数据库里的数据进行增加、删除、修改操作(这里声明了一个方法,通过该方法实现)
public static int executeNonQuery(String sql) //该方法的返回类型是int类型
{
int num = 0; //声明一个int类型变量,用来存放数据操作的结果
try
{
connection.Open();//打开数据库连接
//创建Command对象
SqlCommand cmd = new SqlCommand(sql, connection);
//将Command对象的执行结果(使用ExecuteNonQuery()方法),赋值给变量num
num = cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
finally
{
connection.Close();//关闭数据库连接
}
return num;//最终返回变量num(int类型)
}
//对数据库里的数据执行查询操作,返回DataSet
public static DataSet executeQuery(String sql)//该方法的返回类型是DataSet类型
{
//创建一个数据集,用来存放数据
DataSet dataSet = new DataSet();//这里需要引用命名空间System.Data
try
{
//创建运输车对象
SqlDataAdapter adapter = new SqlDataAdapter(sql, connection);
adapter.Fill(dataSet);//将运输车对象获取的数据,填充到临时仓库dataSet中
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
return dataSet;//最终返回变量dataSet(DataSet类型)
}
}
}
2、制作登录窗体(每完成一个窗体,记得进行功能测试)
第一步:设计Form1窗体,新建项目时,会默认有一个Form1窗体,我们在属性面板,修改窗体的相关属性:
- Name:FrmLogin
- FormBorderStyle:FixedSingle
- StartPostion:CenterScreen
控件设计:
- 填写用户名的TextBox控件——Name属性修改为txtUsername
- 填写密码的TextBox控件——Name属性修改为txtPassword,PassWordChar属性修改为*
- 选择登录界面的ComboBox控件——Name属性修改为cboType,DropDownStyle属性修改为DropDownList,Items属性中添加两个选项:前台点歌界面、 后台管理界面(两个选项各占一行)
- 登录按钮Button控件——Name属性修改为btnLogin
第二步:给【登录】按钮添加点击事件,可以在窗体界面上,双击按钮,进入代码编写。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace KTV_MS
{
public partial class FrmLogin : Form
{
public FrmLogin()
{
InitializeComponent();
}
private void btnLogin_Click(object sender, EventArgs e)
{
//点击登录按钮后,先验证用户是否在相关输入框里输入内容
if (txtUsername.Text.Trim()=="")
{
MessageBox.Show("请填写账号");
return;
}
if (txtPassword.Text.Trim() == "")
{
MessageBox.Show("请填写密码");
return;
}
if (cboType.Text.Trim() == "")
{
MessageBox.Show("请选择登录类型");
return;
}
//如果三个选项都输入了内容,则与数据库连接,进行账号密码验证查询
String sql = String.Format("select * from tb_users where username='{0}' and password='{1}' ",txtUsername.Text,txtPassword.Text);
DataSet dataSet = DatabaseHelper.executeQuery(sql); //将使用上一行声明的变量(sql 查询语句)查询的结果存在数据集dataSet里
//根据查询结果,进行处理
if (dataSet.Tables[0].Rows.Count>0)//如果查询有结果大于0,说明能够匹配到正确的账号密码
{
//保存账号和登录类型,因为后面要用来判断(将它们保存在辅助类UserUtil里)
UserUtil.userName = txtUsername.Text;
UserUtil.userType = dataSet.Tables[0].Rows[0]["userType"].ToString();
//如果用户在登录界面的登录类型里选择了“后台管理界面”,需要判断数据库里该用户的类型,只有管理员才可以进入后台管理界面
if(cboType.Text == "后台管理界面")
{
if (UserUtil.userType == "admin")
{
//进入后台管理界面(窗体跳转的步骤,注意:这里要在项目里提前添加一个窗体FrmAdmin)
FrmAdmin frmAdmin = new FrmAdmin();//创建窗体对象
frmAdmin.Show();//调用窗体对象的Show()方法,打开窗体
this.Hide();//隐藏当前窗体
}
else
{
MessageBox.Show("只有管理员才能进入后台管理界面");
}
}
else
{
//进入点歌界面(窗体跳转的步骤,注意:这里要在项目里提前添加一个窗体FrmKtvMain)
FrmKtvMain frmKtv = new FrmKtvMain();
frmKtv.Show();
this.Hide();
}
}
else
{
MessageBox.Show("账号或密码错误");
}
}
}
}
注意:这里有两个地方涉及到了新窗体的添加。添加新窗体时,注意起名字的规范,比如FrmAdmin、FrmKtvMain等。而不要使用默认的Form2、Form3等,这样当我们一个项目中窗体较多的时候,会带来很大的麻烦。你不知道Form2代表的是哪个窗体,当你想打开某个窗体的时候,需要一个个的点开,看到窗体界面,才能确认。
第三步:回到SSMS软件,给自己的数据库表里添加两行数据,用来进行窗体功能测试
--登录窗体做好以后,向用户表tb_users中插入几行数据,登录窗体写好后,进行验证使用
insert into tb_users (username,password,usertype)
select 'admin','123','admin' union
select 'kehu','123','user';
注意:因为第二步我们在进行用户类型验证的时候,只有当用户类型是admin的时候,才可以登录后台界面。因此这里插入数据的时候,插入两种类型用户,分别是admin和user。
=================这里是结束分割线====================