C#实现图书管理系统(课程设计)——第二步、登陆界面

C#实现图书管理系统(课程设计)——第二步、登陆界面

(1)整体设计方案

C#实现图书管理系统(课程设计)——第二步、登陆界面_第1张图片

划红线的地方是登录界面方案

主要参考:https://blog.csdn.net/weixin_43209848/article/details/89322755?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.nonecase

(2)界面

C#实现图书管理系统(课程设计)——第二步、登陆界面_第2张图片

(3)Util.cs将数据库连接写成函数形式便于后续操作
using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;


namespace Util
{
    public class DbUtil
    {
        //数据库连接
        public static SqlConnection getConnection()
        {
            string strCon = @"Data Source=.;Initial Catalog=For_Login;Integrated Security=True";
            SqlConnection sqlCon = new SqlConnection(strCon);

            return sqlCon;
        }
    }
}

注意:这里的Data Source是链接地址,点开服务器资源管理器,单击你所要连接的数据库,在VS右侧的属性当中找到连接字符串

C#实现图书管理系统(课程设计)——第二步、登陆界面_第3张图片

将框内内容全选复制到引号内即可。

(4)Dao.cs进行登录的数据库数据对比操作

目的:写成函数以便阅读,此内容也可直接放在框架button代码中

using System;
using System.Collections.Generic;
using System.Data.OleDb;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Util;

namespace Dao
{
    public class UserDao
    {

        public UserDao()
        {

        }
        public Boolean Login(string userName, string passward)
        {
            bool flag = false;
            SqlConnection sqlCon;
            sqlCon = DbUtil.getConnection();
            sqlCon.Open();
            try
            {
                string sql = "SELECT * FROM member WHERE mname='" + userName + "' AND passwords='" + passward + "'";
                SqlCommand command = new SqlCommand(sql, sqlCon);
                SqlDataReader reader = command.ExecuteReader();
                if (reader.Read())
                {
                    flag = true;
                }
                else
                {
                    flag = false;
                }
            }
            catch (Exception ex)
            {
            }
            sqlCon.Close();
            return flag;
        }
    }
}
(5)Model.cs创建为用户类,便于后序实例化地调用函数

这一步可做可不做,后续讲解。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Model
{
    //用户类
    public class User
    {
        private int id;                 //用户编号
        private string userName;        //用户名
        private string password;        //用户密码
        private string email;           //用户邮箱
        private string phoneNumber;     //用户手机号

        public int Id
        {
            get { return id; }
            set { id = value; }
        }

        public string UserName
        {
            get { return userName; }
            set { userName = value; }

        }

        public string Password
        {
            get { return password; }
            set { password = value; }
        }

        public string Email
        {
            get { return email; }
            set { email = value; }
        }

        public string PhoneNumber
        {
            get { return phoneNumber; }
            set { phoneNumber = value; }

        }


        public User()
        {

        }

        public User(string userName, string password)
        {
            this.userName = userName;
            this.password = password;
        }

        public User(int id, string userName, string password)
        {
            this.id = id;
            this.userName = userName;
            this.password = password;
        }

    }
}
(6)框架register.cs的代码内容
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;
using Model;
using Util;
using Dao;

namespace LogIn
{
    public partial class Form3 : Form
    {
        public Form3()
        {
            InitializeComponent();
        }

        private void Form3_Load(object sender, EventArgs e)
        {

        }

        private void button1_Click(object sender, EventArgs e)
        {
            //获取文本框的内容
            string userName = userNameTxt.Text;
            string password = passwordTxt.Text;
            bool flag;
            if (String.IsNullOrEmpty(userName))
            {
                MessageBox.Show("用户名不能为空!");
                return;
            }
            if (String.IsNullOrEmpty(password))
            {
                MessageBox.Show("密码不能为空!");
                return;
            }
            //此处可见下方注释1
            //实例化用户
            User user = new User(userName, password);


            if (!String.IsNullOrEmpty(userName) && !String.IsNullOrEmpty(password))
            {
                UserDao userDao = new UserDao();
                //将用户的用户名和密码传入
                flag = userDao.Login(user.UserName, user.Password);

                if (flag)
                {
                    MessageBox.Show("登陆成功!!!");
                    //userNameTxt.Text = "";
                    //passwordTxt.Text = "";
                    
                    //下方注释2
                    //this.Close();
                    
                    //打开下一个窗口
                    manage f = new manage();
                    f.Show();
                }
                else
                {
                    MessageBox.Show("登陆失败!!!");
                }
            }
        }

        private void button2_Click(object sender, EventArgs e)
        {
            userNameTxt.Text = "";
            passwordTxt.Text = "";
        }

        private void textBox1_TextChanged(object sender, EventArgs e)
        {

        }

        private void textBox2_TextChanged(object sender, EventArgs e)
        {

        }
    }
}

注释1:理清关系Login函数属于UserDao类(Dao),而userName, password应该被传入User类(Model)。假如不在Model进行实例化,直接使用userName, password传入userDao.Login()是可行的。但是会报错,需要你在Login()函数之前加上static。也就是说加上了static 就可以少写一个类的代码,自行取舍。

注释2:这里的this.close()是实现了打开第二个manage窗口,关闭登录窗口并且不会退出程序的操作。通常情况下关闭主窗口(登录窗口)会直接退出程序,也就是只写this.close()会直接退出程序,所以注释掉;需要在入口program.cs中进行修改才会发挥作用,后续文章会再讲。

这里最后说一句:如果出现System.Data.SqlClient;报错的情况,参考第一篇,已经进行修改。

链接:下一篇

你可能感兴趣的:(C#课程设计)