这个图书管理系统是我在B站观看详细的教学视频制作的,B站的那位老师讲的十分的详细,大家可以去看B站那位老师的讲解

视频网址:C# 图书管理系统 winform 入门教程 SqlServer数据库_哔哩哔哩_bilibili

一.Dao类

using System.Data.SqlClient;

namespace BOOK
{
    class Dao
    {
        SqlConnection sc;
        public SqlConnection connect()
        {
            string str = @"Data Source=127.0.0.1;Initial Catalog=student;User ID=sa;Pwd=123456";//注意前面是Data不是Date
            //链接数据库字符串
            SqlConnection 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)//更新操作
        {
            return command(sql).ExecuteNonQuery();
        }
        public SqlDataReader read(string sql)//读取操作
        {
            return command(sql).ExecuteReader();
        }
        public void DaoClose()
        {
            //sc.Close();//关闭数据库链接
        }
    }
}

二.Data类

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

namespace BOOK
{
    class Data
    {
        public static string UID = "", UName = "";//登录用户的id和姓名
    }
}

三·登录界面

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 BOOK
{
    public partial class login : Form
    {
        public login()
        {
            InitializeComponent();
        }

        private void label1_Click(object sender, EventArgs e)
        {

        }

        private void label2_Click(object sender, EventArgs e)
        {

        }

        private void radioButton1_CheckedChanged(object sender, EventArgs e)
        {

        }

        private void button1_Click(object sender, EventArgs e)
        {
            if (textBox1.Text != "" && textBox2.Text != "")//判断是否为空
            {
                Login();
            }
            else
            {
                MessageBox.Show("输入有空项,请重新输入");
            }
        }
        public void Login()
        {    //用户
            if (radioButtonUser.Checked == true)
            {
                Dao dao = new Dao();
                string sql = "select * from t_user where id='" + textBox1.Text + "' and psw='" + textBox2.Text + "'";
                IDataReader dc = dao.read(sql);
                if (dc.Read())
                {
                    Data.UID = dc["id"].ToString();
                    Data.UName = dc["name"].ToString();

                    MessageBox.Show("yes");
                    user1 user = new user1();
                    this.Hide();//隐藏旧窗体
                    user.ShowDialog();
                    this.Show();
                    
                }
                else
                {
                    MessageBox.Show("no");
                    
                }
                dao.DaoClose();
            }
            //管理员
            if (radioButtonAdmin.Checked == true)
            {
               
                    Dao dao = new Dao();
                    string sql = "select * from t_admin where id='" + textBox1.Text + "' and psw='" + textBox2.Text + "'";
                    IDataReader dc = dao.read(sql);
                    if (dc.Read())
                    {
                        MessageBox.Show("yes");
                        admin1 admin= new admin1();
                        this.Hide();//隐藏旧窗体
                        admin.ShowDialog();
                        this.Show();

                    }
                    else
                    {
                        MessageBox.Show("no");
                        
                    }
                    dao.DaoClose();
                }
                
                
            }

        private void login_Load(object sender, EventArgs e)
        {

        }
    }
    }

四·管理员主界面

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 BOOK
{
    public partial class admin1 : Form
    {
        public admin1()
        {
            InitializeComponent();
        }

        private void admin1_Load(object sender, EventArgs e)
        {

        }

        private void 图书管理ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            admin2 admin = new admin2();
            admin.ShowDialog();
        }

        private void 图书管理ToolStripMenuItem_Click_1(object sender, EventArgs e)
        {
            admin2 admin = new admin2();
            admin.ShowDialog();
        }
    }
}

五·图书管理界面

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 BOOK
{
    public partial class admin2 : Form
    {
        public admin2()
        {
            InitializeComponent();
            
        }

        private void admin2_Load(object sender, EventArgs e)
        {
            Table();
            label2.Text = dataGridView1.SelectedRows[0].Cells[0].Value.ToString()+ dataGridView1.SelectedRows[0].Cells[1].Value.ToString();//获取书号
        }
        //从数据库读取数据显示在表中
        public void Table()
        {
            dataGridView1.Rows.Clear();//清空控件旧数据
            Dao dao = new Dao();
            string sql = "select * from t_book";
            IDataReader dc = dao.read(sql);
            while(dc.Read())
            {
                dataGridView1.Rows.Add(dc[0].ToString(),dc[1].ToString(),dc[2].ToString(),dc[3].ToString(),dc[4].ToString());
            }
            dc.Close();
            dao.DaoClose();
        }
        //根据书号显示数据
        public void TableID()
        {
            dataGridView1.Rows.Clear();//清空控件旧数据
            Dao dao = new Dao();
            string sql = $"select * from t_book where id='{textBox1.Text}'";
            IDataReader dc = dao.read(sql);
            while (dc.Read())
            {
                dataGridView1.Rows.Add(dc[0].ToString(), dc[1].ToString(), dc[2].ToString(), dc[3].ToString(), dc[4].ToString());
            }
            dc.Close();
            dao.DaoClose();
        }
        //根据书名显示数据
        public void TableName()
        {
            dataGridView1.Rows.Clear();//清空控件旧数据
            Dao dao = new Dao();
            string sql = $"select * from t_book where name like'%{textBox2.Text}%'";
            IDataReader dc = dao.read(sql);
            while (dc.Read())
            {
                dataGridView1.Rows.Add(dc[0].ToString(), dc[1].ToString(), dc[2].ToString(), dc[3].ToString(), dc[4].ToString());
            }
            dc.Close();
            dao.DaoClose();
        }
        private void button3_Click(object sender, EventArgs e)
        {
            try
            {
                string id = dataGridView1.SelectedRows[0].Cells[0].Value.ToString();//获取书号
                label2.Text=id+ dataGridView1.SelectedRows[0].Cells[0].Value.ToString();
                DialogResult dr = MessageBox.Show("确认删除吗","信息提示",MessageBoxButtons.OKCancel,MessageBoxIcon.Question);
                if(dr==DialogResult.OK)
                {
                    string sql = $"delete from t_book where id='{id}'";
                    Dao dao = new Dao();
                    if(dao.Execute(sql)>0)
                    {
                        MessageBox.Show("删除成功");
                        Table();
                    }
                    else
                    {
                        MessageBox.Show("删除失败"+sql);
                    }
                    dao.DaoClose();
                }
            }
            catch
            {
                MessageBox.Show("请先在表格中选中要删除的图书记录!","信息提示",MessageBoxButtons.OK,MessageBoxIcon.Error);
            }
        }

        private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {

        }

        private void dataGridView1_Click(object sender, EventArgs e)
        {
            label2.Text = dataGridView1.SelectedRows[0].Cells[0].Value.ToString() + dataGridView1.SelectedRows[0].Cells[1].Value.ToString();//获取书号
        }

        private void button5_Click(object sender, EventArgs e)
        {
            TableID();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            admin21 admin = new admin21();
            admin.ShowDialog();
        }

        private void button6_Click(object sender, EventArgs e)
        {
            TableName();
        }

        private void button4_Click(object sender, EventArgs e)
        {
            Table();
            textBox1.Text = "";
            textBox2.Text = "";
        }
    }
}

六·添加图书界面

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 BOOK
{
    public partial class admin21 : Form
    {
        public admin21()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            if (textBox1.Text != "" && textBox2.Text != "" && textBox3.Text != "" && textBox4.Text != "" && textBox5.Text != "")
            {
                Dao dao = new Dao();
                string sql = $"insert into t_book values('{textBox1.Text}','{textBox2.Text}','{textBox3.Text}','{textBox4.Text}',{textBox5.Text})";
                int n = dao.Execute(sql);
                if (n > 0)
                {
                    MessageBox.Show("添加成功");
                }
                else
                {
                    MessageBox.Show("添加失败");
                }
            }
            else
            {
                MessageBox.Show("输入不允许为空");
            }

        }

        private void button2_Click(object sender, EventArgs e)
        {
            textBox1.Text = "";
            textBox2.Text = "";
            textBox3.Text = "";
            textBox4.Text = "";
            textBox5.Text = "";
        }

        private void admin21_Load(object sender, EventArgs e)
        {

        }
    }
}

七·用户主界面

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 BOOK
{
    public partial class user1 : Form
    {
        public user1()
        {
            InitializeComponent();
        }

        private void 图书查看和借阅ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            user2 admin = new user2();
            admin.ShowDialog();
        }

        private void 我的图书和归还ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            user3 admin = new user3();
            admin.ShowDialog();
        }

        private void 帮助ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            MessageBox.Show("还想要帮助想的美!");
        }

        private void 退出ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            this.Close();
        }
    }
}

八·图书和借阅界面

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 BOOK
{
    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 t_book";
            IDataReader dc = dao.read(sql);
            while (dc.Read())
            {
                dataGridView1.Rows.Add(dc[0].ToString(), dc[1].ToString(), dc[2].ToString(), dc[3].ToString(), dc[4].ToString());
            }
            dc.Close();
            dao.DaoClose();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            string id = dataGridView1.SelectedRows[0].Cells[0].Value.ToString();//获取书号
            int number = int.Parse(dataGridView1.SelectedRows[0].Cells[4].Value.ToString());//库存
            if(number<1)
            {
                MessageBox.Show("库存不足");
            }
            else
            {
                string sql = $"insert into t_lend([uid],bid,[datetime])values('{Data.UID}','{id}',GETDATE());update t_book set number=number-1 where id='{id}'";
                Dao dao = new Dao();
                if (dao.Execute(sql) > 1)//执行两条语句,大于1才是都执行了
                {
                    MessageBox.Show($"用户{ Data.UName}借出了图书{id}!");
                    Table();
                }
            }
        }
    }
}

十·借出和归还界面

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 BOOK
{
    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 [no],[bid],[datetime] from t_lend where[uid]='{Data.UID}'";
            IDataReader dc = dao.read(sql);
            while (dc.Read())
            {
                dataGridView1.Rows.Add(dc[0].ToString(), dc[1].ToString(), dc[2].ToString());
            }
            dc.Close();
            dao.DaoClose();
        }

        private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {

        }

        private void button1_Click(object sender, EventArgs e)
        {
            string no = dataGridView1.SelectedRows[0].Cells[0].Value.ToString();
            string id = dataGridView1.SelectedRows[0].Cells[1].Value.ToString();
            string sql = $"delete from t_lend where[no]={no};update t_book set number=number+1where id='{id}'";
            Dao dao = new Dao();
            if(dao.Execute(sql)>1)
            {
                MessageBox.Show("归还成功");
                Table();
            }
        }
    }
}

SQL Server数据库部分

1.t_admin设计部分

2.t_book设计部分

3.t_lend设计部分

4.t_user设计部分

数据库的数据部分我就不一一展示了。我直接整合在一起发了

最后我把完整的C#项目的百度网盘链接也放在这里。但是我建议还是去看看B站那位老师一步一步来亲手操作一下。

链接: https://pan.baidu/s/1qV0obKTwv8mKhymMZ1DfAg 提取码: f8w6 复制这段内容后打开百度网盘手机App,操作更方便哦

更多推荐

C# SQL简单图书管理系统(自学记录)