图书管理系统
摘 要
图书馆作为一种信息资源的集散地,图书和用户借阅资料繁多,包含很多的信息数据的管理,现今,有很多的图书馆都是初步开始使用,甚至尚未使用计算机进行信息管理。图书馆若采取手工方式对图书资料和图书借阅情况进行人工管理,由于资料繁多,手工处理的工作量大,整体管理效率低下,也不方便读者对图书资料的查阅。为了提高日常的图书管理效率,本文针对通常的图书管理流程,以C/S模式设计了一个图书管理系统,可满足大多数中小型的图书管理要求。
本文首先探讨了SQL语言接口和Delphi软件开发工具的技术特点以及结合SQL 和Delphi的数据库访问方法,在此基础上,利用Delphi 7 和 Access 2002实现了一个通用的图书管理系统。在本文的后半部分,给出了该系统的整个系统分析、设计以及实现的过程,包括需求分析、功能模块的分析与设计、数据模式的分析与设计,最后是系统的Delphi实现。
系统的运行结果表明,所设计的图书管理系统可以满足读者,图书馆工作人员,系统管理员三者的共同需求。
关键词: 图书管理系统,SQL语言
LIBRARY MANAGEMENT SYSTEM
ABSTRACT
Since volumes of book management activities have to take place daily in library, it will be a hard work and be low efficiency if only manual operations are adopted in the management. To upgrade their management efficiency, people would like to develop various Book Management Systems to help their daily work. In this paper a book management system built in Client/Server model is designed, which can meet requirements of most library management for its integration of general library transaction management processes.
SQL database access interface and Delphi RAD tool as well as the combination of the two are firstly discussed in the paper. In the latter part of the paper, the whole design of a general Book Management System built with Delphi 7 and Access 20## is presented, including the system’s requirement analysis, function modules design, data model design and its Delphi implementation.
The running of the system proves that it could meet the common usage for various kinds of users including readers, library staffs and system administrators.
KEY WORDS: Book Management System, SQL language
目 录
中文摘要.................................................................................................... 1
英文摘要.................................................................................................... 2
1系统功能设计.................................................................................... 5
1.1 设计背景.................................................................................. 5
1.2 系统设计目标........................................................................ 5
1.3 系统功能设计........................................................................ 6
1.4开发工具的选择..................................................................... 7
2系统数据库设计与实现............................................................... 7
2.1 信息需求.................................................................................. 7
2.2 数据库E-R图........................................................................ 8
2.2.1 图书基本信息E-R图................................................ 8
2.2.2借阅信息类型E-R图................................................. 9
2.2.3用户信息E-R图........................................................... 9
2.2.4读者信息E-R图......................................................... 10
3 窗体设计........................................................................................... 10
3.1登陆窗口设计........................................................................ 10
3.2 图书信息管理模块设计................................................... 12
3.3 读者信息管理模块设计................................................... 16
3.4 图书借阅处理模块设计................................................... 19
3.5 图书查询处理模块设计................................................... 24
结束语...................................................................................................... 26
致 谢...................................................................................................... 26
参考文献................................................................................................. 27
1 系统功能设计
1.1 设计背景
当今时代是飞速发展的信息时代。在各行各业中离不开信息处理,这正是计算机被广泛应用于信息管理系统的环境。计算机的最大好处在于利用它能够进行信息管理。使用计算机进行信息控制,不仅提高了工作效率,而且大大的提高了其安全性。尤其对于复杂的信息管理,计算机能够充分发挥它的优越性。图书管理系统(电子阅览室)主要提供网上的电子图书阅览平台,读者可以通过该系统阅览丰富的电子资源。在图书管理系统中,读者可以方便地对书目进行检索和阅览,足不出户便可尽览群书。图书管理系统主要提供网上的图书阅览平台。电子阅览室可提供24小时的在线服务,最大限度的利用了当前互联网的各种优势,使得您无论身在何处,只要能接入互联网就可以享受到它所提供的方便,快捷的服务。它既具有传统图书馆的大部分功能,像图书的查阅及阅览,又新增了基于现有网络技术的许多实用的功能,像用户注册,书签,书评等。它充分的利用了互联网资源,使商家和用户都能从中获得益处。
1.2 系统设计目标
系统功能依据用户需求而设计,主要包括信息管理对象的特征、事物流程的内容和数据流量,根据用户需求和方便用户使用的原则确定相应的功能模块。
本系统为学校的图书馆信息而设计,实现信息处理的自动化、规范化,主要用于处理图书日常借阅和还书、图书入库、各种查询操作,系统具有以下功能。
1)图书借阅处理
2)图书与读者信息查询与修改、删除
3)图书入库与图书的信息修改、删除
4)员工信息的修改、删除
1.3 系统功能设计
要求系统实现图书馆日常管理事务最主要的功能,包括图书的借出于还回,图书信息的录入、修改和查询,读者信息的录入、修改和查询,员工信息的录入、修改和查询。实现这些基本功能,组建了图书管理系统的基本框架,根据功能的关联关系和集中分组的原则,将系统细化如图1-1所示的结构图。
图1-1 系统功能结构图
1.4开发工具的选择
本系统采用sql server创建后台数据库,前台开发工具采用的Visual Studio 2005,编程语言为C#,
2 系统数据库设计与实现
数据库设计得合理与否,对数据库的完整性、安全性、程序运行的效率和程序设计的复杂程度有着十分密切的关系。数据库设计的内容包括数据库管理系统的选择、数据实体的确定、数据实体的E-R图和数据库的实现。
2.1 信息需求
在数据库中需要设计如下所示的数据字段和数据表:
(1)图书信息表---dbo.tbbook,包括:图书编号、图书名称、出版社、作者、出版日期、价格、图书类型和简介。
(2)借阅登记表---dbo.bookout,包括:读者编号、图书编号、借书日期、是否归还。
(3)系统用户表---dbo.tbuser,包括:密码、用户名和用户类型。
(4)读者表----dbo.person,包括:读者编号、读者姓名、性别、电话号码、罚款、读者身份和注释。
2.2 数据库E-R图
通过上面对系统的总体分析,可以得到大概的实体—关系模型(E-R模型),如下:
2.2.1 图书基本信息E-R图
1图书基本信息:{图书编号、图书名称、作者、出版日期、出版社和简介
2.2.2借阅信息类型E-R图
2借阅信息类型:{读者编号、图书编号、借书日期、应还书日期}
2.2.3用户信息E-R图
3用户信息:{用户名,密码}
2.2.4读者信息E-图
4读者信息:{读者编号、读者姓名、性别、所在系、年龄}
3、窗体设计
3.1登陆窗口设计
首先,启动程序“Microsoft Visual Studio 2005”,选择“文件”——“新建”——“项目”,打开“新建项目”对话框,输入项目名称为“hello1”,并指定文件位置。
将项目中的默认添加的第1个Windows窗体文件名称改为“Login.cs”,并将其作为主窗体。在主窗体中先进行界面设计,然后再编写其相应的事件方法代码,主窗体的执行效果如图所示。
主要代码:
private void button1_Click(object sender, EventArgs e)
{
UserClass.UesrName = textBox1.Text;
//if(comboBox1.SelectedIndex==0)
//{
String sql1 = "select count(*) from tbUser where userId=@tb1";
String sql2 = "select count(*) from tbUser,UserType where tbUser.userType=UserType.userType and userId=@tb1 and userPs=@tb2 and userType.TypeName='"+comboBox1.Text+"'";
SqlParameter[] par = new SqlParameter[2];
par[0] = new SqlParameter("@tb1",textBox1.Text.Trim());
par[1] = new SqlParameter("@tb2",textBox2.Text.Trim());
int s=Int32.Parse(DBHelper.GetSingle(sql1,par).ToString());
if (s > 0)
{
int c = Int32.Parse(DBHelper.GetSingle(sql2,par).ToString());
if (c > 0)
{
LibraryManage lbm = new LibraryManage();
lbm.Show();
this.Visible = false;
}
else
{
MessageBox.Show("密码错误");
}
}
else
{
MessageBox.Show("用户名错误");
}
}
3.2 图书信息管理模块设计
图书信息管理模块的内容包括图书入库和修改图书信息等。该功能模块主要负责图书信息的相关操作,保证数据库中的完整、规范和准确,使用户可以方便快捷地来管理图书信息。该模块主要操作针对数据库的的图书信息表“”进行添加、修改和删除记录。
(1)主窗体设计,其运行效果如图下所示。
窗体设计:
主要代码:
private void LibraryManage_Load(object sender, EventArgs e)
{
String s = UserClass.UesrName;
string sql = "select userType from tbUser where userId='"+s+"'";
int t = Int32.Parse(DBHelper.GetSingle(sql).ToString());
if(t==2)
{
管理员权限ToolStripMenuItem.Enabled = false;
图书操作ToolStripMenuItem.Enabled = false;
添加操作ToolStripMenuItem.Enabled = false;
}
toolStripStatusLabel4.Text = s;
}
(2) 图书入库窗体,其运行效果如图下所示。
窗体设计:
主要代码:
private void button1_Click(object sender, EventArgs e)
{
String sql = "insert into tbBook (ISBN,bName,bPublish,bAuthor,bPublishTime,bPrice,bid,bcount,bRemark) values(@ISBN,@bName,@bPublish,@bAuthor,@bPublishTime,@bPrice,@bid,@bSum,@bRemark)";
SqlParameter[] par = new SqlParameter[9];
if (textBox1.Text == "")
{
MessageBox.Show("输入信息不完整!");
}
else
{
par[0] = new SqlParameter("@ISBN", textBox1.Text.Trim());
par[1] = new SqlParameter("@bName", textBox2.Text.Trim());
par[2] = new SqlParameter("@bPublish", textBox3.Text.Trim());
par[3] = new SqlParameter("@bAuthor", textBox4.Text.Trim());
par[4] = new SqlParameter("@bPublishTime", textBox5.Text.Trim());
par[5] = new SqlParameter("@bPrice", textBox7.Text.Trim());
String sql1 = "select bid from tbbookType where bookType='" + comboBox1.Text + "'";
int t = Int32.Parse(DBHelper.GetSingle(sql1).ToString());
par[6] = new SqlParameter("@bid", t);
par[7] = new SqlParameter("@bSum", textBox6.Text.Trim());
par[8] = new SqlParameter("@bRemark", richTextBox1.Text.Trim());
int count = DBHelper.ExecuteSql(sql, par);
if (count > 0)
{
MessageBox.Show("添加成功");
}
else
{
MessageBox.Show("添加失败");
}
}
}
(3) 图书管理窗体,其运行效果如下所示。
窗体设计:
主要代码:
private void button1_Click(object sender, EventArgs e)
{
string sql = "select ISBN ,PID as 学号, outdate as 借阅时间 from bookOut";
DataTable dt = new DataTable();
dt = DBHelper.Query(sql).Tables[0];
dataGridView1.DataSource = dt;
}
3.3 读者信息管理模块设计
每年都有新生入校和老生毕业,作为一个学校的图书馆,读者信息需要实时的更新。读者信息管理包括添加读者信息、修改读者信息和删除读者信息。
(1) 添加读者信息窗体,其运行效果如图下所示。
窗体设计:
主要代码:
private void button1_Click(object sender, EventArgs e)
{
String sql = "insert into person (PID,Pname,Psex,Pphone,Pidenum,PRemark) values(@PID,@Pname,@Psex,@Pphone,@Pidenum,@PRemark)";
SqlParameter[] par = new SqlParameter[6];
par[0] =new SqlParameter("@PID",textBox1.Text.Trim());
par[1] = new SqlParameter("@Pname",textBox2.Text.Trim());
par[2] = new SqlParameter("@Pphone", textBox4.Text.Trim());
par[3] = new SqlParameter("@Psex", comboBox1.Text);
string sql1 = "select idNum from identy where idNmae='"+comboBox2.Text+"'";
int t =Int32.Parse(DBHelper.GetSingle(sql1).ToString());
par[4] = new SqlParameter("@Pidenum", t);
par[5] = new SqlParameter("@PRemark",richTextBox1.Text.Trim());
int count = DBHelper.ExecuteSql(sql, par);
if (count > 0)
{
MessageBox.Show("添加成功");
}
else
{MessageBox.Show("添加失败");}
}
(2) 添加用户窗体,其运行效果如图下所示。
窗体设计:
主要代码:
private void button1_Click(object sender, EventArgs e)
{
int a = 0;
if (textBox1.Text == "" && textBox2.Text == "")
{MessageBox.Show("用户名或密码不能为空");}
else
{string sql1 = "select usertype from usertype where typename='" + comboBox1.Text + "'";
int b = Int32.Parse(DBHelper.GetSingle(sql1).ToString());
string sql = "insert into tbuser(userid,userps,usertype) values('" + textBox1.Text + "','" + textBox2.Text + "'," + b + ")";
a = DBHelper.ExecuteSql(sql);
if (a > 0)
{
MessageBox.Show("添加成功");
}
else { MessageBox.Show("添加失败"); }
}
}
3.4 图书借阅处理模块设计
图书借阅处理模块的本系统的核心模块,包括借书窗体和还书窗体的设计。
(1)借书和续借图书处理窗体,其运行效果如下所示。
借阅窗体设计:
续借图窗体设计:
主要代码:
private void button1_Click(object sender, EventArgs e)
{
string sq1l = "select bigNum from identy,person where person.pidenum=identy.idNum and person.idName='"+textBox4.Text+"'";
string sql2 = "select bigNum from identy where idnmae='"+textBox4.Text+"'";
string sql = "insert into bookout(ISBN,PID,Outdate)values(@ISBN,@PID,@Outdate) ";
if (textBox1.Text != "")
{
if (textBox7.Text != "")
{
int t = Int32.Parse(DBHelper.GetSingle(sql2).ToString());
if (Int32.Parse(textBox5.Text) <= t)//设置最多借阅量
{
SqlParameter[] par = new SqlParameter[3];
par[0] = new SqlParameter("@ISBN", textBox7.Text.Trim());
par[1] = new SqlParameter("@PID", textBox1.Text.Trim());
par[2] = new SqlParameter("@Outdate", comboBox1.Text);
int count = DBHelper.ExecuteSql(sql, par);
if (count > 0)
{
MessageBox.Show("借阅成功");
}
else { MessageBox.Show("借阅失败"); }
}
else
{
MessageBox.Show("你不能再借了");
}
bindgrid();
}
else { MessageBox.Show("请输入书的ISBN号"); }
}
else { MessageBox.Show("请输入借阅证号"); }
}
(2)还书处理窗体,其运行效果如下图所示。
窗体设计:
主要代码:
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar==13)
{
DataTable dt = new DataTable();
string sql = "select bookout.ISBN,person.PID as 学号,person.Pname as 借阅者, Outdate as 借阅时间,bName as书名 from bookout,person,tbbook where bookOut.PID=person.PID and bookOut.ISBN=tbbook.ISBN and person.Pname in (select person.Pname from person,bookOut where person.PID=bookOut.PID and bookOut.ISBN='"+textBox1.Text.Trim()+"')";
dt = DBHelper.Query(sql).Tables[0];
dataGridView1.DataSource = dt;
textBox2.Text = dt.Rows.Count.ToString();
}
}
private void button1_Click(object sender, EventArgs e)
{
string sql = "update bookout set isreturn ='1' where isbn='"+textBox1.Text+"'";
int t=Int32.Parse( DBHelper.ExecuteSql(sql).ToString());
if (t>0)
{
MessageBox.Show("归还成功");
}
}
3.5图书查询处理模块设计
查询功能是十分重要的功能,读者需要查询他所借的书和以还的书,图书馆工作人员需要查询本馆的图书、借阅信息和员工信息。查询功能仅仅需要显示符合条件的数据,并不需要对数据进行复杂的处理。
图书信息查询窗体,其运行效果如下图所示。
窗体设计:
主要代码:
//删除操作
private void bindingNavigatorDeleteItem_Click(object sender, EventArgs e)
{
if (MessageBox.Show("是否确定删除", "提示信息", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes)
{
int t = Int32.Parse(dataGridView1.SelectedRows[0].Cells[0].Value.ToString());
string sql = "delete from tbBook where id='"+t+"'";
int count=Int32.Parse( DBHelper.GetSingle(sql).ToString());
if (count > 0)
{
MessageBox.Show("删除成功");
}
else {
MessageBox.Show("删除失败");
}
}
}
private void button1_Click(object sender, EventArgs e)
{ del()
}
public void del()
{
if (MessageBox.Show("是否确定删除", "提示信息", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes)
{
string t =dataGridView1.SelectedRows[0].Cells[0].Value.ToString();
string sql = "delete from tbBook where ISBN='" + t + "'";
int count = Int32.Parse(DBHelper.ExecuteSql(sql).ToString());
if (count > 0)
{
MessageBox.Show("删除成功");
}
else
{
MessageBox.Show("删除失败");
}
}
}
结束语
经过几周的设计和开发,图书管理信息系统基本开发完毕。其功能基本符合用户需求,能够完成管理主界面与登录程序设计,系统管理模块,图书信息管理模块,读者信息管理模块,还借信息管理模块等。并提供部分系统测试功能,使用户方便进行数据添加、数据查询、数据修改。由于时间较短和本人水平所限,该系统必然会存在一些缺陷和不足。但其功能全面、易于日后程序更新、数据库管理容易、界面友好、操作方便、效率高、安全性好等优点是本管理系统所必需的。相信本图书管理信息系统是一套学校在日常管理中必不可少的管理软件。
致 谢
首先诚挚的感谢指导老师黄老师,老师悉心的教导使我得以通过开发这个系统,从以前的理论上升到实践,真正做到学有所用,虽然在设计中我遇到了不少问题,而且往往一个小小的错误都会使我花很多的时间和精力去寻找和修正,但在老师竭尽全力的帮助下和自己的努力下,最终还是一一克服了.通过这次设计,使我学到了很多东西,收益非浅,我感觉理论到实践是一个艰难的过程,必须勤动手,才能发现问题,使自己得到真正的提高.经过了这次 的设计使我学到了很多知识,给我今后在工作和学习上也提供了不少宝贵的经 验.并且通过这次设计也使我也发现了自己在学习上的不足,主要是动手能力的不足,我会努力在以后的工作道路上继续充实自我,完善自我.但在这次课程设计中的最大收获并不是掌握这几门开发工具的应用,而是学会了设计系统的思维方法,以及与同学们之间相互帮助的精神。
参考文献
[1] 萨师煊,王珊. 数据库系统概论. 北京:高等教育出版社,2002
[2] 孙明丽 王斌,sql server 20## 数据库系统开发.北京:人民邮电出版社.2007.7
[3] 苗雪兰.数据库系统原理及应用教程[M].北京:机械工业出版社.2007.8
[4] 李敏波,黄静,张少华.C#高级编程(第3版),北京:清华大学出版社.2005.6