目录

S1:创建新项目

 S2:修改窗体名字

S3 拉出大致登录框架

(一)lable

(二)textbox

(三)Button

(四)radioButtonl

 S4  若是Microsoft SQL Sever 链接数据库则是这一步

  S4  若是MySQL 链接数据库则是这一步

S5 创建数据库


PS:本系列文章基于B站UP主“面朝星海我心澎湃”的视频,时空门:   P1 登录页面设计和数据库设计
区别在①up主用的SQLserver,但是本文章是MySQL
           ②本文章的数据库表比up主复杂一点,以及表里的内容不一样(本文章无论用户表还是管                   理员表都是海贼王滴,没办法,海米一枚~)

S1:创建新项目

 S2:修改窗体名字

右侧->属性->Font->Text->改为"Login"

S3 拉出大致登录框架

左侧->工具箱

(一)lable

再修改lable相关属性:
   ①右侧->属性->Font->Text->改为"欢迎登录图书管理系统"
   ②Font旁点一下,字体大小改为‘一号’,其他按照个人喜好

在拉两个lable,一个属性->Font->Text->改为"ID:",另外一个属性->Font->Text->改为"PassWord:"至于美化,不急,把所有的拉出来了再一起设置字体,大小啥的(虽然你可以先把它两lable对齐)

(二)textbox

①拉两个textbox一个分别放ID: 和 PassWord: 的lable后面

 ②修改两个文本框的Name
ID右边的文本框,点击
右侧->属性->设计->Name->"textBoxID"(其实就是后面 删去1,加了一个ID)
同理,PassWord右边的 文本框Name改为"textBoxPassWord"

(三)Button

拉两个Button 放左/右下角

①左下角的:右侧->属性->Font->Text->改为"Login",右下角的:Font->Text->改为"Cancel"

②修改两个Button_Click的Name
单击Login Button->右侧->属性->设计->Name->"ButtonLogin"(其实就是后面 删去1,加了一个Login)
同理,Cancel Name改为"ButtonCancel"

(四)radioButtonl

拉两个radioButtonl放左/右下角(分别放在Login 和 Cancel 上面),用来表示选择身份

 ①左:右侧->属性->Font->Text->改为"User",右下角的:Font->Text->改为"Admin"

②左:右侧->属性->外观->Checked>改为"True",这样相当于默认是选中用户

 

 ② 除“欢迎。。系统”外其他的全部框中,统一修改字体和大小->再浅浅修改一下布局(按照喜好,对齐)

 S4  若是Microsoft SQL Sever 链接数据库则是这一步

①存登陆者的信息——Data类

添加名为Data的类

 ②对数据库进行链接和操作

添加名为Dao的类

分解:
public SqlConnection connection():
①:数据库服务器名称
②:数据库的名字
③:一个参数(暂时不知道做什么用)
(ps:下图代码只是过程代码,以最终代码为准)

using System.Data.SqlClient;

namespace WindowsFormsApp1
{
    class Dao
    {
        SqlConnection sc;
        //数据库连接
        public SqlConnection connect()
        {
            string str = @"Data Source=LAPTOP-HCLU4VVJ;Initial Catalog=ksdb;Integrated Security=True";//数据库连接字符串
            sc = new SqlConnection(str);//创建数据库连接对象
            sc.Open();//打开数据库
            return sc;//返回数据库连接对象
        }

        public SqlCommand command(string sql)
        {
            SqlCommand cmd = new SqlCommand(sql, connect());
            return cmd;
        }

        public int Execute(string sql)// 更新操作  //返回int类型,告诉你受影响的行数  //传入对应的sql语句
        {
            return command(sql).ExecuteNonQuery();
        }

        public SqlDataReader read(string sql)//读取操作
        {
            return command(sql).ExecuteReader();
        }
        public void DaoClose()
        {
            sc.Close();//关闭数据库连接
        }
    }
}

  S4  若是MySQL 链接数据库则是这一步

MySQL 链接的Data类步骤与SQL Server相同

①存登陆者的信息——Data类

添加名为Data类

②对数据库进行链接和操作

添加名为Dao的类,添加类时步骤一样,但是代码不同

 

ps:以下代码仅供学习,最终代码以实际为准

1:输入头文件:    using MySql.Data.MySqlClient;(这一步如果发现报错,说明是C#连接MySQL  未 添加连接MySQL的引用,可看我上一篇文章《用VS2019(C#)连接MYSQL(从0入门,手把手教学)》里面的S3-5有3种不同的解决方法)

2:connect()函数:
public MySqlConnection connect():

	string strcon = "Database=Book;Data Source=localhost;User Id=root;Password=123456";//连接数据库的参数
	MySqlConnection mysqlcon = new MySqlConnection(strcon);//连接数据库
	mysqlcon.Open();

【Database】: 数据库名称
【Data Source】 :服务器IP地址 ,一般为localhost 或者 127.0.0.1
【User Id】 :数据库用户名 (由于连自己电脑,就是root)
【Password】: 数据库密码

 

进化:

 //改进
            string str = "Database=ksdb;Data Source=localhost;User Id=root;Password=ww8888";//连接数据库的参数
            try
            {
                sc.Open();//打开数据库
                MessageBox.Show("数据库连接成功");
            }
            catch (System.Exception)
            {
                MessageBox.Show("数据库连接失败");
                throw;
            }
using System.Data.SqlClient;  //应该不需要了,因为这个是连sql Server用的
using MySql.Data.MySqlClient;


namespace WindowsFormsApp1
{
    class Dao
    {
        MySqlConnection sc;
        //数据库连接
        public MySqlConnection connect()
        {
            string str = "Database=ksdb;Data Source=localhost;User Id=root;Password=ww8888";//连接数据库的参数
            sc = new MySqlConnection(str);//连接数据库
            sc.Open();//打开数据库
            return sc;//返回数据库连接对象

            //SQL Server 的连接方法
           /* string str = @"Data Source=LAPTOP-HCLU4VVJ;Initial Catalog=ksdb;Integrated Security=True";//数据库连接字符串
            sc = new SqlConnection(str);//创建数据库连接对象
            sc.Open();//打开数据库
            return sc;//返回数据库连接对象*/
        }

        public MySqlCommand command(string sql)
        {
            MySqlCommand cmd = new MySqlCommand(sql, connect());
            return cmd;
        }

        public int Execute(string sql)// 更新操作  //返回int类型,告诉你受影响的行数  //传入对应的sql语句
        {
            return command(sql).ExecuteNonQuery();
        }

        public MySqlDataReader read(string sql)//读取操作  SqlDataReader->MySqlDataReader
        {
            return command(sql).ExecuteReader();//通过输入的ID和密码讲在数据库里查询出来的结果 显示出来
        }
        public void DaoClose()
        {
            sc.Close();//关闭数据库连接
        }
    }
}

S5 创建数据库

①读者类型表

-- 一、选择数据库
USE ksdb;

-- 二、创建数据表
-- 1、创建读者类别表并插入测试数据
CREATE TABLE KS_ReaderType
(
 rdType SMALLINT PRIMARY KEY, -- 读者类别
 rdTypeName VARCHAR(20) NOT NULL UNIQUE,  -- 读者姓名
 CanLenQty int,  -- 可借书数目
 CanLendDay int,  -- 可借书天数
 CanContinueTimes int,
 PunishRate float,  -- 惩罚钱
 DateValid SMALLINT DEFAULT(0)  -- 有效日期
)

show TABLES; -- 查看所有表
DESC KS_ReaderType; -- 查看数据表的结构

INSERT INTO KS_ReaderType VALUES
(10,'教师',12,60,2,0.05,0),
(20,'本科生',8,30,1,0.05,4),
(21,'专科生',8,30,1,0.05,3),
(30,'硕士研究生',8,30,1,0.05,3),
(31,'博士研究生',8,30,1,0.05,4);

SELECT * FROM KS_ReaderType;



②读者表

-- 2、创建读者表并插入测试数据
CREATE TABLE KS_Reader
(
 rdID int PRIMARY KEY,
 rdName VARCHAR(20),
 rdSex CHAR(1),
 rdType SMALLINT REFERENCES KS_ReaderType(rdType),
 rdDept VARCHAR(20),
 rdPhone VARCHAR(25),    -- 1
 rdEmail VARCHAR(25),  -- 1
 -- rdDateReg datetime DEFAULT getdate(),
 -- rdPhoto image,
 rdStatus CHAR(2) DEFAULT'有效',  -- 1
 rdBorrowQty int DEFAULT 0,   -- 1
 rdPwd VARCHAR(20),
 rdAdminRoles SMALLINT DEFAULT 0
)

show TABLES; -- 查看所有表
DESC KS_Reader; -- 查看数据表的结构


INSERT INTO ks_reader(rdID,rdName,rdPwd,rdType,rdDept,rdAdminRoles)VALUES
(1,'路飞','123',10,'图书馆',8),  -- 系统管理员
(2,'索隆','123',10,'图书馆',1),  -- 读者(借书证)管理员
(3,'乔巴','123',10,'图书馆',2),  -- 图书管理员
(4,'娜美','123',10,'图书馆',4),  -- 接还书管理员
(5,'乌索普','123',10,'图书馆',6),  -- 图书、接还书管理员
(6,'香吉士','123',10,'图书馆',7),  -- 读者、图书、接还书管理员
(7,'骷髅','123',10,'图书馆',15);  -- 读者、图书、接还书、系统管理员
SELECT * FROM ks_reader;

INSERT INTO ks_reader(rdID,rdName,rdPwd,rdSex,rdType,rdDept)VALUES
(100,'白胡子','123','男',10,'计科院'),   -- 读者,教师
(101,'红发','123','男',20,'计科11001班'),   -- 读者,本科生
(102,'凯多','123','男',30,'硕计11201班'),   -- 读者,硕士研究生
(103,'夏洛特.玲玲','123','女',20,'计科11001班');  -- 读者,本科生

③图书表

-- 3、创建图书表并插入测试数据
CREATE TABLE KS_Book
(
  -- bkID int identity(1,1)PRIMARY KEY,
 bkCode VARCHAR(20)NOT NULL,
 bkName VARCHAR(50),
 bkAuthor VARCHAR(30),
 bkPress VARCHAR(50),
  -- bkDatePress datetime,
 bkISBN VARCHAR(15),
 bkCatalog VARCHAR(30),
  -- bkLanguage smallint,
  -- bkPages int,
 bkPrice FLOAT,
  -- bkDateln datetime DEFAULT getdate(),
  -- bkBrief text,
  -- bkCover image,
 bkStatus char(2) DEFAULT'在馆'
)

show TABLES; -- 查看所有表
DESC KS_Book; -- 查看数据表的结构


INSERT INTO ks_book VALUES
(1000,'如何成为海贼王','罗杰','集英社','1-111-1','TP312/12-3',59.0,NULL),
(1001,'如何成为海贼王','罗杰','集英社','1-111-1','TP312/12-3',59.0,NULL),
(1002,'如何成为海贼王','罗杰','集英社','1-111-1','TP312/12-3',59.0,NULL),
(1003,'迷','龙','革命军',NULL,NULL,59.0,NULL),
(1004,'迷','龙','革命军',NULL,NULL,59.0,NULL),
(1005,'迷','龙','革命军',NULL,NULL,59.0,NULL),
(1006,'迷','龙','革命军',NULL,NULL,59.0,NULL);

SELECT * FROM ks_book;

UPDATE ks_book SET bkStatus = '在馆';

④借阅表

-- 4、创建借阅表
CREATE TABLE KS_Borrow
(
 -- BorrowID numeric(12,0) IDENTIFIED(1,1)PRIMARY KEY,
 rdID int not null REFERENCES ks_reader(rdID),
 bkID int not null REFERENCES ks_book(bkID),
 idContinueTimes int,
 idDateOut datetime not null,
 idDateRetPlan datetime,
 idDateReAct datetime,
 idOverDay int,
 idOverMoney DOUBLE,
 idPunishMoney DOUBLE,
 isHasReturn bit,
 OperatorLend VARCHAR(20),
 OperatorRet  VARCHAR(20)
)

⑤管理员(admin)表

-- 5、创建管理员表并插入测试数据
CREATE TABLE KS_admin
(
 adID int PRIMARY KEY,
 adName VARCHAR(20),
 adSex CHAR(1),
 -- adType SMALLINT REFERENCES KS_ReaderType(rdType),
 -- adDept VARCHAR(20),
 -- adPhone VARCHAR(25),    -- 1
 -- adEmail VARCHAR(25),  -- 1
 -- rdDateReg datetime DEFAULT getdate(),
 -- rdPhoto image,
 -- adStatus CHAR(2) DEFAULT'有效',  -- 1
 -- adBorrowQty int DEFAULT 0,   -- 1
 adPwd VARCHAR(20)
 -- adAdminRoles SMALLINT DEFAULT 0
)

show TABLES; -- 查看所有表
DESC KS_admin; -- 查看数据表的结构

-- 把四皇弄成管理员
DELETE FROM ks_reader WHERE rdID=100;
DELETE FROM ks_reader WHERE rdID=101;
DELETE FROM ks_reader WHERE rdID=102;
DELETE FROM ks_reader WHERE rdID=103;
SELECT * FROM ks_reader;

INSERT INTO ks_admin VALUES
(10000,'白胡子','男','123'),   -- 
(10001,'红发','男','123'),   -- 
(10002,'凯多','男','123'),   -- 
(10003,'夏洛特.玲玲','女','123');  -- 
SELECT * FROM ks_admin;
SELECT * FROM ks_admin WHERE adID='10000' AND adPwd='123';

Logo

本社区面向用户介绍CSDN开发云部门内部产品使用和产品迭代功能,产品功能迭代和产品建议更透明和便捷

更多推荐