C#windows图书信息管理系统

摘 要

在目前社会,有很大一部分的图书馆或者商店书籍更新不断,有时候很难进行高效简单的管理,甚至不进行入库登记管理,这给日后管理统计查看书籍存量和馆藏书籍目录带来了相当大的麻烦,因此图书管理显得尤为重要,图书管理系统可以很好的解决书籍检索、查看、统计问题,从而做到对馆藏图书情况的掌握。

论文针对市面上已有的图书管理存在着操作繁琐、对于使用者要求较高、不适合普通的书店使用等问题,开发设计了一种基于Windows系统的图书管理系统,利用Visual studio工具开发完成的系统。经过测试,管理者可使用系统对书籍添加、删除、查找、修改以及对书籍借出、归还库存数量进行有效管理。这样对书籍库存,书籍检索有着很直观的把握。表明了本文所设计的系统能够达到一般管理者对于图书信息的管理,达到了最初的设计要求。

关键词:Windows窗体;图书管理系统;管理系统;数据库
更多源码和原文档获取:winform之家

1、序言

1.1研究的目的及意义

1.2国内外研究现状

1.3研究内容及章节安排

2、需求分析

2.1可行性分析

2.2功能需求分析

2.2.2其他要求

操作系统:Windows10

运行环境:VisualStudio

数据库环境:SQL Server

3、系统总体设计

3.1功能模块设计

本图书信息管理系统主要为登录注册,图书信息的增加、删除、查找、修改,图书借阅和归还库存的统计等。

系统功能模块图如图3-1所示。

在这里插入图片描述

图3-1系统功能模块图

1)管理员登录、注册:管理员可以注册和登录使用该系统。

2)图书增加:当有新书籍引入时,管理员可以将图书信息全部录入系统。

3)图书修改:当图书有变动,如库存总量变化等管理员可修改系统数据。

4)图书查找:管理员可以对系统内的图书查找,可以通过类型、书名、图书编号分别进行不同需要的查找。

5)图书删除:对销毁或者淘汰书籍进行删除出系统。

6)图书借出:当图书被借出,对应书籍系统中库存减少

7)图书归还:当图书被归还时,对应书籍系统中库存增加

4、数据库设计

  1. 数据库设计

  2. E-R图

5、系统详细设计

5.1登录模块

(1)登录模块设计

在这里插入图片描述

5-1.1登录窗口

此窗体界面用于管理员的登录,无账号的用户可点击注册。

登录窗口实现的功能逻辑部分代码如下:

private void btnLogin_Click(object sender, EventArgs e)
{
    if (textBox1.Text == "" || textBox2.Text == "")
    {
        MessageBox.Show("请输入完整信息!!!");
        return;
    }
    string count = textBox1.Text;
    string pwd = textBox2.Text;
    User user = new User { account = count, password = pwd };
    bool result = ma.Login(user);
    if (result)
    {
        this.Hide();
        frmMain mainForm = new frmMain(textBox1.Text, pwd);
        mainForm.StartPosition = FormStartPosition.CenterScreen;
        mainForm.Show();
    }
    else
    {
        MessageBox.Show("账号或密码错误!!!");
    }
}

(2)注册模块设计

在这里插入图片描述

5-1.2注册窗口

此窗体界面用于管理员注册。

注册窗口实现的功能逻辑部分代码如下:

 private void btnSubmit_Click(object sender, EventArgs e)
 {
     string count = txt_count.Text;
     string pwd = txt_pwd.Text;
     string nc = txt_name.Text;
     string rePwd = txt_submit.Text;
     if (count == "" || pwd == "" || nc == "" || rePwd == "")
     {
         MessageBox.Show("请输入完整信息!!!");
         return;
     }
     if (!ver.IsCode(txt_count.Text))//验证账号是否正确
     {
         MessageBox.Show("请输入4位数字账号!!!");
         return;
     }

     if (!ver.IsChinese(txt_name.Text))//验证账号是否正确
     {
         MessageBox.Show("请输入中文昵称!!!");
         return;
     }

     if (pwd == rePwd)
     {
         User user = new User { account = count, password = pwd, name = nc };
         bool result = ma.Register(user);

         if (result)
         {
             MessageBox.Show("注册成功!!!");
         }
         else
         {
             MessageBox.Show("账号已存在!!!");
         }
     }
     else
     {
         MessageBox.Show("两次输入不一致!!!");
     }
 }

5.2图书信息管理模块设计

(1)图书添加

在这里插入图片描述

5-2.1图书添加窗口

此窗体界面用于图书信息的添加,填写完整数据后可添加进入数据库。

图书添加窗口实现的功能逻辑部分代码如下:

private void btnSubmit_Click(object sender, EventArgs e)
{
    if (checkNull())
    {
        string name = txtName.Text;
        string author = txtAuthor.Text;
        string press = txtPress.Text;
        string bClass = cbClass.Text;
        string number = txtNumber.Text;
        string bfrom = txtFrom.Text;

        if (!ver.IsNumber(txtNumber.Text))
        {
            MessageBox.Show("数量只能为数字计数!!!");
        }

        Book book = new Book
        {
            bookName = name,
            bookAuthor = author,
            bookPress = press,
            bookClass = bClass,
            bookNumber = number,
            bookFrom = bfrom,
            bookPhoto = bytes
        };
        bool result = bk.Addbook(book);
        if (result)
        {
            MessageBox.Show("添加成功");
            getAll();
            ClearAll();
        }
        else
        {
            MessageBox.Show("添加失败");
        }
    }
    else
    {
        MessageBox.Show("请输入完整信息");
    }
    
}

(2)图书图书修改

在这里插入图片描述

5-2.2图书修改窗口

此窗体界面用于管理员修改图书信息

图书修改窗口实现的功能逻辑部分代码如下:

private void btnRevise_Click(object sender, EventArgs e)
{
    if (checkNull())
    {
        int no = int.Parse(bookId);
        string name = txtName.Text;
        string author = txtAuthor.Text;
        string press = txtPress.Text;
        string bClass = cbClass.Text;
        string number = txtNumber.Text;
        string bfrom = txtFrom.Text;
        Book book = new Book
        {
            bookId = no,
            bookName = name,
            bookAuthor = author,
            bookPress = press,
            bookClass = bClass,
            bookNumber = number,
            bookFrom = bfrom,
            bookPhoto = bytes
        };
        bool result = bk.Updatebook(book);
        if (result)
        {
            MessageBox.Show("修改成功");
            getAll();
            ClearAll();
        }
        else
        {
            MessageBox.Show("修改失败");
        }
    }
    else
    {
        MessageBox.Show("请输入完整信息");
    }
}

(3)图书查找和删除

在这里插入图片描述

5-2.3图书查找和删除窗口

此窗体界面用于学生信息的查找和删除,查找可根据书名模糊查找,类型和编号精确查找,可根据图书编号删除书籍。

图书查找和删除窗口实现的功能逻辑部分代码如下:

private void buttonName_Click(object sender, EventArgs e)
{
    if (textBox1.Text.Equals(""))
    {
        MessageBox.Show("请输入书名");
    }
    else
    {
        dataGridView1.DataSource = bk.SelectNameOnes(textBox1.Text);
    }
}

private void buttonClass_Click(object sender, EventArgs e)
{
    if (cbClass.Text.Equals(""))
    {
        MessageBox.Show("请选择类别");
    }
    else
    {
        dataGridView1.DataSource = bk.SelectOneBoook(cbClass.Text);
    }
    
}

private void buttonAll_Click(object sender, EventArgs e)
{
    getAll();
}

private void button4_Click(object sender, EventArgs e)
{
    if (textBox2.Text.Equals(""))
    {
        MessageBox.Show("请输入图书编号");
    }
    else
    {
        int no = int.Parse(textBox2.Text);
        Book book = new Book { bookId = no };
        bool result = bk.Deletebook(book);
        if (result)
        {
            MessageBox.Show("删除成功");
        }
        else
        {
            MessageBox.Show("删除失败");
        }
        getAll();
        textBox2.Text = "";
    }
    
}

5.3借出归还模块设计

在这里插入图片描述

5-3图书借出归还窗口

此窗体界面用于对借出和归还图书在系统中的库存进行修改,并查询是否存在借阅书籍。

图书借出归还窗口实现的功能逻辑部分代码如下:

private void button3_Click(object sender, EventArgs e)
{
    try
    {
        if (textBox3.Text.Equals(""))
        {
            MessageBox.Show("请输入图书编号");
        }
        else
        {
            label18.Text = "";
            //int bID= int.Parse(textBox3.Text);
            dataGridView1.DataSource = bk.SelectBookOne(textBox3.Text);
            MyBook(textBox3.Text);
        }

    }
    catch (Exception ex)
    {
        MessageBox.Show("未找到该编号图书!!!");
    }
}

public void MyBook(string a)
{
    textBox1.Text = textBox3.Text;
    label19.Text = bk.SelectBookOne(a).DataSet.Tables[0].Rows[0]["书名"].ToString();
    label8.Text = bk.SelectBookOne(a).DataSet.Tables[0].Rows[0]["主编"].ToString();
    label9.Text = bk.SelectBookOne(a).DataSet.Tables[0].Rows[0]["出版社"].ToString();
    label11.Text = bk.SelectBookOne(a).DataSet.Tables[0].Rows[0]["分类"].ToString();
    label13.Text = bk.SelectBookOne(a).DataSet.Tables[0].Rows[0]["数量"].ToString();
    label15.Text = bk.SelectBookOne(a).DataSet.Tables[0].Rows[0]["来源"].ToString();
    if (bk.SelectBookOne(a).DataSet.Tables[0].Rows[0]["封面"].ToString() == "")
    {
        pictureBox1.Image = null;
        label18.Text = "该图书暂无图片";
    }
    else
    {
        bytes = (byte[])bk.SelectBookOne(a).DataSet.Tables[0].Rows[0]["封面"];
        pictureBox1.Image = System.Drawing.Image.FromStream(new MemoryStream(bytes));
        pictureBox1.SizeMode = PictureBoxSizeMode.Zoom;
    }
    num = bk.SelectBookOne(textBox3.Text).DataSet.Tables[0].Rows[0]["数量"].ToString();
    label6.Text = num;
}

private void button1_Click(object sender, EventArgs e)
{
   
    if (textBox1.Text == "")
    {
        MessageBox.Show("出库失败!!!");
    }
    else
    {
        int i = int.Parse(num);
        if (i <= 0)
        {
            MessageBox.Show("对不起!库存不足");
        }
        else
        {
            int no = int.Parse(textBox3.Text);
            i= i - 1;
            num = i.ToString();
            Book book = new Book { bookId = no,bookNumber=i.ToString() };
            bool result = bk.UpdateNum(book);
            if (result)
            {
                MessageBox.Show("出库成功!!!");
                label6.Text = num;
                label13.Text = num;
                getAll();
            }
            else
            {
                MessageBox.Show("出库失败");
            }
        }
    }
}

5.4修改密码模块

在这里插入图片描述

5-4修改密码窗口

此窗体界面用于管理员对自己的账号密码修改。

修改密码窗口实现的功能逻辑部分代码如下:

private void button1_Click(object sender, EventArgs e)
{
    if (textBox2.Text == "" || textBox3.Text == "")
    {
        MessageBox.Show("请输入完整");
    }
    else
    {
        if (textBox2.Text.Equals(textBox3.Text))
        {
            string no = SendAccount;
            string pwd = textBox2.Text;
            User u = new User
            {
                account = no,
                password = pwd
            };
            bool result = ma.UpdatePwd(u);
            if (result)
            {
                MessageBox.Show("修改成功");
            }
            else
            {
                MessageBox.Show("修改失败");
            }
        }
        else
        {
            MessageBox.Show("两次密码不一致");
        }
    }
    
}

6、系统测试

6.1测试计划

6.2测试用例设计及执行

6.3测试小结

7、总结

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

大虾写代码

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值