目录

已经实现的功能

DAO.cs

Data.cs

Program.cs

login.cs

admin.cs

①admin1.cs【管理员主页面】

②admin2.cs【图书管理页面】​编辑

1.添加图书

2.修改图书

User

① user1.cs【用户主界面】

② user2.cs【查看和借阅】

③ user3.cs【归还】

MySQL all代码


已经实现的功能

①数据库连接相关相关文档【DAO.cs】

②login:
1.用户/管理员登录
2.登录成功/报错提醒

③管理员:

1.图书管理:增删查改,刷新,当前选中的图书

④用户:

1.系统的“帮助”、退出、“联系管理员”
2.欢迎语
3.图书查看和借阅:实时更新借阅图书的相关信息【pd:不在馆则无法借阅】
4.图书借阅和归还情况:查看已经借阅的图书,并且可以实时归还

DAO.cs

using System.Data.SqlClient;  //应该不需要了,因为这个是连sql Serve用的
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)//sql 是mysql语句 eg:sql = select * from book;{MySqlCommand cmd = new MySqlCommand(sql, connect());return cmd;}public int Execute(string sql)// 更新操作  //执行sql语句 ,返回int类型,告诉你受影响的行数  //传入对应的sql语句{return command(sql).ExecuteNonQuery();}public MySqlDataReader read(string sql)//读取操作  SqlDataReader->MySqlDataReader{return command(sql).ExecuteReader();//通过输入的ID和密码讲在数据库里查询出来的结果 显示出来}public void DaoClose(){sc.Close();//关闭数据库连接}}
}

Data.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace WindowsFormsApp1
{class Data{public static string UID = "", UName = "";//登录用户的ID和姓名}
}

Program.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;namespace WindowsFormsApp1
{static class Program{/// <summary>/// 应用程序的主入口点。/// </summary>[STAThread]static void Main(){Application.EnableVisualStyles();Application.SetCompatibleTextRenderingDefault(false);Application.Run(new login());//Application.Run(new admin21());//指定从那个窗体启动//Application.Run(new admin2());//指定从那个窗体启动}}
}

login.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;namespace WindowsFormsApp1
{public partial class login : Form{public login(){InitializeComponent();}private void label2_Click(object sender, EventArgs e){}private void label3_Click(object sender, EventArgs e){}private void radioButton1_CheckedChanged(object sender, EventArgs e){}private void button1_Click(object sender, EventArgs e){//登录  首先判断是否为空if(textBoxID.Text!=""&&textBoxPassWord.Text!=""){Login();}else{MessageBox.Show("鼠鼠我呀,不喜欢ID或者PassWord是空的嘞");//此处的弹出框可以弄的很炫,图标啥 的,通过输入参数实现}}//登录方法,验证是否允许登录,允许返回真public void Login(){//用户if(radioButtonUser.Checked==true){Dao dao = new Dao();//sql 写法1//string sql = "SELECT * FROM ks_reader WHERE rdID='"+textBoxID.Text+"' AND rdPwd='"+textBoxPassWord.Text+"';";//验证是否允许登录,PT:这里的sql语句是从navicat(sql编译器)上copy下来的//sql 写法2                                                                                                             //sql 写法2//string sql2 = string.Format("SELECT * FROM ks_reader WHERE rdID='{0}' AND rdPwd='{1}';",textBoxID.Text,textBoxPassWord.Text);//sql 写法3string sql = $"SELECT * FROM ks_reader WHERE rdID='{textBoxID.Text}' AND rdPwd='{textBoxPassWord.Text}';" ;//MessageBox.Show(sql);//判断是否出错,弄一个弹窗,看自己login写对没有IDataReader dc = dao.read(sql);//将输入的ID,密码 所形成的sql 语句输入,以此进行查询/* dc.Read();//读取一行数据MessageBox.Show(dc[0].ToString(),dc["rdName"].ToString());*///①将读取的第0行数据显示(从第0行开始计数)  ②如果只有这一行代码,那么查询结果为空时会报错if(dc.Read())//考虑到会因为查询结果(返回值)为空而出的改进,使当查询结果为空时出现可爱的报错{/* Data.UID = dc["id"].ToString();Data.UName = dc["name"].ToString();*/Data.UID = dc["rdID"].ToString();//这里的idID是你自己数据库给读者ID的命名Data.UName = dc["rdName"].ToString();string login_wel = "吹灭读书灯,一身都是月\n欢迎:";MessageBox.Show(login_wel+dc[0].ToString()+dc["rdName"].ToString());//return true;//窗体跳转user1 user = new user1();//用户登录后,弹出用户登录的窗口this.Hide();//隐藏原来的login窗体,this 指登录(login)窗体user.ShowDialog();//这里如果是user.show()的话,虽然也会弹出窗体,但是对于由这种形式弹出的窗体,会使在user窗体出现后仍然能够对login窗体操作,这样会使一个login窗体同时登录多个用户,不好。同时使用showdialog()也可以避免很多奇奇怪怪的bugthis.Show();//当对话框窗体关掉后,就显示登录(login)窗体}else{string id_or_pwd_wrong = "鼠鼠我呀,觉得你应该是输入错误呢";MessageBox.Show(id_or_pwd_wrong);//return false;}dao.DaoClose();//关闭数据库连接}//管理员if(radioButtonAdmin.Checked==true){Dao dao = new Dao();string sql = $"SELECT * FROM ks_admin WHERE adID='{textBoxID.Text}' AND adPwd='{textBoxPassWord.Text}';";IDataReader dc = dao.read(sql);//将输入的ID,密码 所形成的sql 语句输入,以此进行查询if (dc.Read())//考虑到会因为查询结果(返回值)为空而出的改进,使当查询结果为空时出现可爱的报错{string login_wel = "书卷多情似故人,晨昏忧乐每相亲\n欢迎:";MessageBox.Show(login_wel + dc[0].ToString() + dc["adName"].ToString());//return true;//窗体跳转admin1 ad = new admin1();//用户登录后,弹出用户登录的窗口this.Hide();//隐藏原来的login窗体,this 指登录(login)窗体ad.ShowDialog();this.Show();//当对话框窗体关掉后,就显示登录(login)窗体}else{string id_or_pwd_wrong = "鼠鼠我呀,觉得你应该是输入错误呢";MessageBox.Show(id_or_pwd_wrong);//return false;}dao.DaoClose();//关闭数据库连接}//return true;//MessageBox.Show("鼠鼠我呀,觉得单选框没选呢");//两个radioButton(用户,管理员)都失败了,即单选框失效 其实这两行不会生效,因为我前面已经默认选了user的radioButton为true了//return false;//两个radioButton(用户,管理员)都失败了,即单选框失效}private void textBoxPassWord_TextChanged(object sender, EventArgs e){}private void login_Load(object sender, EventArgs e){}}
}

admin.cs

①admin1.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;namespace WindowsFormsApp1
{public partial class admin1 : Form{public admin1(){InitializeComponent();}private void 图书管理ToolStripMenuItem_Click(object sender, EventArgs e){admin2 admin = new admin2();admin.ShowDialog();}private void admin1_Load(object sender, EventArgs e){}}
}

②admin2.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;namespace WindowsFormsApp1
{public partial class admin2 : Form{public admin2()//admin2的构造方法,实例化的时候就会执行,即new admin2()的时候就执行了{InitializeComponent();}private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e){}private void admin2_Load(object sender, EventArgs e)//当整个窗体构建完了后就会执行这个函数{this.Width = 1000;//修改运行时显示的界面大小this.Height = 550;this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;Table();label_chose.Text = dataGridView1.SelectedRows[0].Cells[0].Value.ToString()+ dataGridView1.SelectedRows[0].Cells[1].Value.ToString();//获取书号/选中行数的第0行的 第0个单元格 它的值转换成字符串}//从数据库读取数据显示在表格控件中public void Table(){dataGridView1.Rows.Clear();//将控件中已经有的旧数据全部清空Dao dao = new Dao();string sql = "SELECT * FROM ks_book;";//要执行的sql语句,建议从编译器上copy该语句再黏贴到此处IDataReader dc = dao.read(sql);while(dc.Read())//当查询结果到达末尾后跳出while循环{//将读到的数据添加到dataGridView控件中//这里几个dc[]取决于你在页面的那里设置了几个属性dataGridView1.Rows.Add(dc[0].ToString(), dc[1].ToString(), dc[2].ToString(), dc[3].ToString(), dc[4].ToString(), dc[5].ToString(), dc[6].ToString(), dc[7].ToString());}dc.Close();dao.DaoClose();}private void button_add_book_Click(object sender, EventArgs e){admin21 a = new admin21();//连接admin2【图书管理页面】和admin21【添加图书】,实现界面跳转a.ShowDialog();}private void button_delete_book_Click(object sender, EventArgs e){try//防止索引超出范围,这里就用try...catch{string id = dataGridView1.SelectedRows[0].Cells[0].Value.ToString();//获取书号/选中行数的第0行的 第0个单元格 它的值转换成字符串label_chose.Text=id+ dataGridView1.SelectedRows[0].Cells[1].Value.ToString();//显示正在选中的书号+书名DialogResult dr = MessageBox.Show("多笋啊~你真的想删书咩?", "消息提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);if(dr==DialogResult.OK){string sql = $"DELETE FROM ks_book WHERE bkCode= '{id}';";Dao dao = new Dao();if(dao.Execute(sql)>0){MessageBox.Show("滴!知识的财富-1");Table();}else{MessageBox.Show("鼠鼠我呀,删除失败了呢~" + sql);}dao.DaoClose();}}catch (Exception){MessageBox.Show("鼠鼠我呀,觉得你连想删除的都还没有选中呢", "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Error);}}private void dataGridView1_Click(object sender, EventArgs e){label_chose.Text= dataGridView1.SelectedRows[0].Cells[0].Value.ToString()+ dataGridView1.SelectedRows[0].Cells[1].Value.ToString();//获取书号/选中行数的第0行的 第0个单元格 它的值转换成字符串}private void button_alter_book_Click(object sender, EventArgs e){try//双击tab  可直接补全{string id = dataGridView1.SelectedRows[0].Cells[0].Value.ToString();string name = dataGridView1.SelectedRows[0].Cells[1].Value.ToString();string author = dataGridView1.SelectedRows[0].Cells[2].Value.ToString();string press = dataGridView1.SelectedRows[0].Cells[3].Value.ToString();string ISBN = dataGridView1.SelectedRows[0].Cells[4].Value.ToString();string catalog = dataGridView1.SelectedRows[0].Cells[5].Value.ToString();string price = dataGridView1.SelectedRows[0].Cells[6].Value.ToString();string status = dataGridView1.SelectedRows[0].Cells[7].Value.ToString();admin22 a2 = new admin22(id,name,author,press,ISBN,catalog,price,status);//连接admin2【图书管理页面】和admin22【修改图书信息】,实现界面跳转a2.ShowDialog();Table();//刷新数据}catch (Exception){MessageBox.Show("鼠鼠我呀,不知道你哪里错了,\n但是肯定的是现在修改不了啦\n\t哈哈哈~~");}}//从数据库根据书号读取数据 显示在表格控件中public void TableID(){dataGridView1.Rows.Clear();//将控件中已经有的旧数据全部清空Dao dao = new Dao();string sql = $"SELECT * FROM ks_book WHERE bkCode='{textBox_bkNum_find.Text}';";//要执行的sql语句,建议从编译器上copy该语句再黏贴到此处IDataReader dc = dao.read(sql);while (dc.Read())//当查询结果到达末尾后跳出while循环{//将读到的数据添加到dataGridView控件中//这里几个dc[]取决于你在页面的那里设置了几个属性dataGridView1.Rows.Add(dc[0].ToString(), dc[1].ToString(), dc[2].ToString(), dc[3].ToString(), dc[4].ToString(), dc[5].ToString(), dc[6].ToString(), dc[7].ToString());}dc.Close();dao.DaoClose();}//书号查询private void button_bkNum_find_Click(object sender, EventArgs e){textBox_bkName_find.Text = "";//查询时,若书名查询有内容,将其为空TableID();}//从数据库根据书名读取数据 显示在表格控件中  模糊查询public void TableName(){dataGridView1.Rows.Clear();//将控件中已经有的旧数据全部清空Dao dao = new Dao();string sql = $"SELECT * FROM ks_book WHERE bkName LIKE '%{textBox_bkName_find.Text}%';";//要执行的sql语句,建议从编译器上copy该语句再黏贴到此处IDataReader dc = dao.read(sql);while (dc.Read())//当查询结果到达末尾后跳出while循环{//将读到的数据添加到dataGridView控件中//这里几个dc[]取决于你在页面的那里设置了几个属性dataGridView1.Rows.Add(dc[0].ToString(), dc[1].ToString(), dc[2].ToString(), dc[3].ToString(), dc[4].ToString(), dc[5].ToString(), dc[6].ToString(), dc[7].ToString());}dc.Close();dao.DaoClose();}//书名查询  模糊查询private void button_bkName_find_Click(object sender, EventArgs e){textBox_bkNum_find.Text = "";//查询时,若书号查询有内容,将其为空TableName();}private void button_flash_book_Click(object sender, EventArgs e){textBox_bkNum_find.Text = "";//刷新时,若书名/号查询有内容,将其为空textBox_bkName_find.Text = "";Table();}}
}

1.添加图书

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 WindowsFormsApp1
{public partial class admin21 : Form{public admin21(){InitializeComponent();}private void admin21_Load(object sender, EventArgs e){}private void button_add_book_Click(object sender, EventArgs e)//添加图书按钮的事件{if(textBox1.Text!=""&& textBox2.Text != ""  ){Dao dao = new Dao();textBox8.Text = "";textBox7.Text = "0";string sql = $"INSERT INTO ks_book VALUES('{textBox1.Text}','{textBox2.Text}','{textBox3.Text}','{textBox4.Text}','{textBox5.Text}','{textBox6.Text}',{textBox7.Text},'{textBox8.Text}');";int n = dao.Execute(sql);//dao.Execute(sql)返回受影响的行数if (n > 0)//受影响行数大于1,即添加成功{MessageBox.Show("Added successfully!");}else//受影响行数小于1,即添加失败{MessageBox.Show("I am sorry,but you fail~~");}//添加成功后清空界面框//法1 遍历所有TextBox,将其赋值为空foreach (System.Windows.Forms.Control control in this.Controls){if (control is System.Windows.Forms.TextBox){System.Windows.Forms.TextBox tb = (System.Windows.Forms.TextBox)control;tb.Text = String.Empty;}}//法2 一条一条写,赋值为空 /*textBox1.Text = "";textBox2.Text = "";textBox3.Text = "";textBox4.Text = "";textBox5.Text = "";textBox6.Text = "";textBox7.Text = "";textBox8.Text = "";*/}else{MessageBox.Show("鼠鼠我呀,不喜欢输入为空呢");}}private void button_empty_Click(object sender, EventArgs e){//点击“取消”button后 清空界面框foreach (System.Windows.Forms.Control control in this.Controls){if (control is System.Windows.Forms.TextBox){System.Windows.Forms.TextBox tb = (System.Windows.Forms.TextBox)control;tb.Text = String.Empty;}}}}
}

2.修改图书

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 WindowsFormsApp1
{public partial class admin22 : Form{string ID = "";//ID是主键,用于修改检索目标课本public admin22(){InitializeComponent();}public admin22(string id,string name,string author,string press,string ISBN,string catalog,string price,string status)//这里的8个参数是数据库表book的8个属性{InitializeComponent();//传值ID=textBox1.Text = id;textBox2.Text = name;textBox3.Text = author;textBox4.Text = press;textBox5.Text = ISBN;textBox6.Text = catalog;textBox7.Text = price;textBox8.Text = status;}private void button_alter_book_Click(object sender, EventArgs e)//调用MySQL语句,开始修改{//pt:下面的sql语句是直接从编译器navicat上C V的string sql = $"UPDATE ks_book SET bkCode='{textBox1.Text}',bkName='{textBox2.Text}',bkAuthor='{textBox3.Text}',bkPress='{textBox4.Text}',bkISBN='{textBox5.Text}',bkCatalog='{textBox6.Text}',bkPrice={textBox7.Text},bkStatus='{textBox8.Text}' WHERE bkCode='{ID}';";Dao dao = new Dao();if(dao.Execute(sql)>0){MessageBox.Show("Alter successfully");this.Close();}}private void button_empty_Click(object sender, EventArgs e){//点击“取消”button后 清空界面框foreach (System.Windows.Forms.Control control in this.Controls){if (control is System.Windows.Forms.TextBox){System.Windows.Forms.TextBox tb = (System.Windows.Forms.TextBox)control;tb.Text = String.Empty;}}}private void admin22_Load(object sender, EventArgs e){}}
}

User

① user1.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;namespace WindowsFormsApp1
{public partial class user1 : Form{public user1(){InitializeComponent();label_user_lg_wel.Text = $"欢迎{Data.UName}登陆";}private void 图书借阅ToolStripMenuItem_Click(object sender, EventArgs e){user2 u2 = new user2();u2.Show();}private void 当前借阅和归还情况ToolStripMenuItem_Click(object sender, EventArgs e){user3 u3 = new user3();u3.Show();}private void 帮助ToolStripMenuItem_Click(object sender, EventArgs e){//先随便弹个窗意思意思MessageBox.Show("V鼠鼠50,鼠鼠帮你解决障碍");}private void 退出ToolStripMenuItem_Click(object sender, EventArgs e){this.Close();}private void user1_Load(object sender, EventArgs e){}}
}

② user2.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;namespace WindowsFormsApp1
{public partial class user2 : Form{public user2(){InitializeComponent();Table();}private void user2_Load(object sender, EventArgs e){}public void Table(){dataGridView1.Rows.Clear();//将控件中已经有的旧数据全部清空Dao dao = new Dao();string sql = "SELECT * FROM ks_book;";//要执行的sql语句,建议从编译器上copy该语句再黏贴到此处IDataReader dc = dao.read(sql);while (dc.Read())//当查询结果到达末尾后跳出while循环{//将读到的数据添加到dataGridView控件中//这里几个dc[]取决于你在页面的那里设置了几个属性dataGridView1.Rows.Add(dc[0].ToString(), dc[1].ToString(), dc[2].ToString(), dc[3].ToString(), dc[4].ToString(), dc[5].ToString(), dc[6].ToString(), dc[7].ToString());}dc.Close();dao.DaoClose();}private void button_lend_bk_Click(object sender, EventArgs e)//还书button{string id = dataGridView1.SelectedRows[0].Cells[0].Value.ToString();//获取书号string bkName = dataGridView1.SelectedRows[0].Cells[1].Value.ToString();//获取书号string ku_chun= dataGridView1.SelectedRows[0].Cells[7].Value.ToString();//获取库存,即是否在馆if(ku_chun=="在馆"){string sql = $"INSERT INTO ks_borrow VALUES({Data.UID},{id},'{bkName}',CURDATE());UPDATE ks_book SET bkStatus='不在' WHERE bkCode='{id}';";//更新borrow、book.status表Dao dao = new Dao();if (dao.Execute(sql) > 1){MessageBox.Show($"Congratulations {Data.UName}:\nhas borrowed {bkName}!");Table();}else{MessageBox.Show("鼠鼠我呀\n觉得你的sql语句可能错了呢\n所以借书失败了哦");}}else{MessageBox.Show("鼠鼠我呀,没有书了呢\n这边建议您联系管理员哈\n虽然可能联系不到\n因为他应该在某一个小角落看书呢");}}}
}

③ user3.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;namespace WindowsFormsApp1
{public partial class user3 : Form{public user3(){InitializeComponent();Table();}private void user3_Load(object sender, EventArgs e){}//从数据库读取数据显示在表格控件中public void Table(){dataGridView1.Rows.Clear();//将控件中已经有的旧数据全部清空Dao dao = new Dao();string sql = $"SELECT * FROM KS_Borrow WHERE rdID='{Data.UID}';";//要执行的sql语句,建议从编译器上copy该语句再黏贴到此处IDataReader dc = dao.read(sql);while (dc.Read())//当查询结果到达末尾后跳出while循环{//将读到的数据添加到dataGridView控件中//这里几个dc[]取决于你在页面的那里设置了几个属性dataGridView1.Rows.Add(dc[0].ToString(), dc[1].ToString(), dc[2].ToString(), dc[3].ToString());}dc.Close();dao.DaoClose();}private void button1_Click(object sender, EventArgs e)//还书Button{string id = dataGridView1.SelectedRows[0].Cells[1].Value.ToString();//获取书号string bkName = dataGridView1.SelectedRows[0].Cells[2].Value.ToString();//获取书号//还书时间:string sql = $"DELETE FROM ks_borrow WHERE bkID= '{id}';UPDATE ks_book SET bkStatus='在馆' WHERE bkCode='{id}';";//用图书ID 更新borrow、book.status表Dao dao = new Dao();if (dao.Execute(sql) > 1){MessageBox.Show($"Congratulations {Data.UName}:\nhas return {bkName}!");Table();}else{MessageBox.Show("鼠鼠我呀\n觉得你的sql语句可能错了呢\n所以还书失败了哦");}}private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e){}}
}

MySQL all代码

-- 一、选择数据库
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),    -- 1rdEmail VARCHAR(25),  -- 1-- rdDateReg datetime DEFAULT getdate(),-- rdPhoto image,rdStatus CHAR(2) DEFAULT'有效',  -- 1rdBorrowQty int DEFAULT 0,   -- 1rdPwd 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、创建图书表并插入测试数据
-- bkCode,bkName,bkAuthor,bkPress,bkISBN,bkCatalog,bkPrice,bkStatus
CREATE TABLE KS_Book
(-- bkID int identity(1,1)PRIMARY KEY,bkCode VARCHAR(20)NOT NULL,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 = '在馆';-- VS图书插入测试
-- bkCode,bkName,bkAuthor,bkPress,bkISBN,bkCatalog,bkPrice,bkStatus
INSERT INTO ks_book VALUES(1007,'VStest','龙','革命军',NULL,NULL,59.0,'在馆');
SELECT * FROM ks_book;DELETE FROM ks_book WHERE bkCode= '1006';
SELECT * FROM ks_book;-- VS图书修改测试
-- bkCode,bkName,bkAuthor,bkPress,bkISBN,bkCatalog,bkPrice,bkStatus
INSERT INTO ks_book VALUES(1007,'VStest','龙','革命军',NULL,NULL,59.0,'在馆');
UPDATE ks_book SET bkCode='1008',bkName='VStest',bkAuthor='龙',bkPress='革命军',bkISBN='',bkCatalog='',bkPrice=99,bkStatus='在馆' WHERE bkCode='1007';
SELECT * FROM ks_book;-- VS书号查询测试
SELECT * FROM ks_book WHERE bkCode='1001';-- VS书名查询测试 模糊查询
SELECT * FROM ks_book WHERE bkName LIKE '%海%';-- 4、创建借阅表
CREATE TABLE KS_Borrow
(-- BorrowID numeric(12,0) IDENTIFIED(1,1)PRIMARY KEY,rdID int not null REFERENCES ks_reader(rdID),-- 读者IDbkID int not null REFERENCES ks_book(bkID),-- 书籍IDidContinueTimes int,   -- 可借阅时间idDateOut datetime not null,  -- 借出的日期idDateRetPlan datetime,     -- 预计归还日期idDateReAct datetime,   -- 实际归还日期idOverDay int,    -- 延时idOverMoney DOUBLE,idPunishMoney DOUBLE, -- 罚钱数isHasReturn bit,OperatorLend VARCHAR(20),OperatorRet  VARCHAR(20),)SELECT * FROM ks_reader WHERE rdID='100' AND rdPwd='123';
SELECT * FROM KS_Borrow;-- VS借/还书表的测试
DROP TABLE ks_borrow;CREATE TABLE KS_Borrow
(rdID int not null REFERENCES ks_reader(rdID),-- 读者IDbkID int not null REFERENCES ks_book(bkID),-- 书籍IDbkName VARCHAR(50) REFERENCES ks_book(bkName),-- 书名idDateOut date not null  -- 借出的日期)SELECT * FROM KS_Borrow;SELECT * FROM ks_reader;SELECT * FROM ks_book;show TABLES; -- 查看所有表
DESC ks_borrow; -- 查看数据表的结构INSERT INTO ks_borrow VALUES(1,1001,'如何成为海贼王',CURDATE());
UPDATE ks_book SET bkStatus='不在' WHERE bkCode='1001';-- 还书
DELETE FROM ks_borrow WHERE bkID= '1002';UPDATE ks_book SET bkStatus='在馆' WHERE bkCode='1002';SELECT * FROM KS_Borrow WHERE rdID='1';-- 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,   -- 1adPwd 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';

用vs2019使用C#连接MySQL创建图书管理系统(1-7)源码集,未优化,未美化相关推荐

  1. java毕业设计图书管理系统演示录像源码+lw文档+mybatis+系统+mysql数据库+调试

    java毕业设计图书管理系统演示录像源码+lw文档+mybatis+系统+mysql数据库+调试 java毕业设计图书管理系统演示录像源码+lw文档+mybatis+系统+mysql数据库+调试 本源 ...

  2. MySQL医疗信息管理系统数据库(源码)

    MySQL医疗信息管理系统数据库(源码) 友情连接 1.学生成绩管理系统数据库设计--MySQL 2.邮件管理数据库设计--MySQL 3.SQL Server医疗信息管理系统数据库[英文版-源码]- ...

  3. 视频教程-手把手实现Java图书管理系统(附源码)-Java

    手把手实现Java图书管理系统(附源码) 南京大学软件工程硕士,曾就职于擎天科技.中软国际.华为等上市公司,擅长Java开发.Web前端.Python爬虫.大数据等领域技术. 全栈工程师,从事软件开发 ...

  4. 图书管理系统(附带源码 )

    简单的图书管理系统(附带源码 ) 因为在实训中心经理布置的一个小项目,自己就写了一个简单的图书管理,写下来和有兴趣的分享一下 这个图书管理有管理员和普通会员两种: 普通会员: 1.可以登录.注册,修改 ...

  5. springboot+乡村图书管理系统 毕业设计-附源码191505

    基于java的乡村图书馆管理系统的设计与实现 摘 要 信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术 ...

  6. ssm+mysql实验室耗材管理系统-计算机毕业设计源码13205

    摘 要 本课题研究的实验室耗材管理系统,主要功能模块包括用户管理.耗材管理.入库记录.出库记录.报废登记.供应商管理.耗材类别.实验室管理等,采取面对对象的开发模式进行软件的开发和硬体的架设,能很好的 ...

  7. springboot+mysql长江航运管理系统-计算机毕业设计源码54774

    摘  要 随着科学技术的飞速发展,社会的方方面面.各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,长江航运公司当然也不例外.长江航运管理系统是以实际运用为开发背景,运用软件工程原理 ...

  8. springboot+mysql养老院信息管理系统-计算机毕业设计源码27500

    摘  要 随着互联网趋势的到来,各行各业都在考虑利用互联网将自己推广出去,最好方式就是建立自己的互联网系统,并对其进行维护和管理.在现实运用中,应用软件的工作规则和开发步骤,采用Springboot框 ...

  9. springboot+mysql大学班级管理系统-计算机毕业设计源码82358

    摘 要 随着科学技术的飞速发展,社会的方方面面.各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,高校当然也不例外.班级管理系统是以实际运用为开发背景,运用软件工程原理和开发方法,采 ...

最新文章

  1. JS判断滚动条到底部
  2. OKR让伟大的企业愿景成为可能
  3. python使用matplotlib可视化、自定义移除Y轴指定轴刻度标签(removing specific axis ticks in matplotlib y axis)
  4. Java Semaphore 信号量
  5. 连续性的设计——改善产品的体验
  6. android8 测试,Android 8.0 Oreo 国内可用测试平台上线
  7. Fiddler使用教程(收藏)
  8. struts的输入验证服务器端与客户端
  9. FFmpeg学习之QT音频播放
  10. 当您尝试加入域时,出现“Network Location Cannot be Reached”(不能访问网络位置)错误信息...
  11. 74cms v5.0.1漏洞
  12. Java实现socket 客户端 长连接
  13. 11、深圳经济特区数据条例
  14. 我的所有的浏览器被hao123 挟持了,终极解决方案
  15. (Window环境) curl: (6) Could not resolve host: application curl: (6) Could not resolve host: ‘localhos
  16. php代码纵向排列文字怎么写,css里怎么文字纵向排列?
  17. 超高颜值高性价比蓝牙耳机,2021学生党最爱平价蓝牙耳机推荐
  18. 面试算法———回溯经典题目
  19. 华为任正非会见马云_什么让华为任正非怒骂“还过个屁年”!连马云、李彦宏都沉思!...
  20. 我的物联网项目(五)下单渠道

热门文章

  1. 测绘—matlab—坐标正反算
  2. 为什么说云正在改变制造业和分销商流程
  3. 计算机毕业设计java+ssm水果蔬菜销售系统(源码+系统+mysql数据库+Lw文档)
  4. php fieldset,html fieldset标签的用法详解
  5. stick和stuck的区别_strike(struck)及stick (stuck)區別
  6. python在txt文件中提取段落_如何使用python从.txt文件中提取段落?
  7. Matlab中writetable函数的使用
  8. 程序员学炒股(2) 个股和大盘的关系
  9. CoRR和arXiv到底是什么?
  10. 赚钱 36 计 - 第九计:入口计