摘 要
在目前社会,有很大一部分的图书馆或者商店书籍更新不断,有时候很难进行高效简单的管理,甚至不进行入库登记管理,这给日后管理统计查看书籍存量和馆藏书籍目录带来了相当大的麻烦,因此图书管理显得尤为重要,图书管理系统可以很好的解决书籍检索、查看、统计问题,从而做到对馆藏图书情况的掌握。
论文针对市面上已有的图书管理存在着操作繁琐、对于使用者要求较高、不适合普通的书店使用等问题,开发设计了一种基于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、数据库设计
-
数据库设计
-
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("两次密码不一致");
}
}
}