C#编程基础——综合项目实践:KTV点歌系统项目第三课:辅助类开发及登录窗体制作

该篇博客介绍了C#编程中如何创建KTV点歌系统的辅助类,包括UserUtil类和DatabaseHelper类的开发,用于账号信息存储和数据库操作。同时详细讲解了登录窗体的设计过程,包括窗体属性设置、控件布局以及功能测试的重要性。此外,还强调了在项目中创建新窗体时命名规范的必要性。
摘要由CSDN通过智能技术生成

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。

 

 

 

=================这里是结束分割线====================

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

逍遥小丸子

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值