图书管理系统的设计和开发 -王富岩
目录
1 概论....................................................3 1.1 背景及目的…………………………………………………………3 1.2 系统功能模块设计简介…………………………………………....3 2 图书管理需求系统分析........................................................................ 5 2.1 应用需求分析....................................................................................5 2.2 功能需求分析....................................................................................5 2.3 数据需求分析....................................................................................6 3 数据库设计……………………………………………………………7 3.1 数据库设计平台…………………………………………………....7 3.2 数据库ER 模型图…………………………………………………..7 3.3 数据库的设计及内容简介………………………………………....8 4功能模块概要设计……………………………………………………11 4.1 功能模块开发平台...........................................................................11 4.2 功能模块设计及内容简介...............................................................11 4.3功能模块设计图……………………………………………………12 5 功能模块详细设计…………………………………………………...13 5.1 借阅与归还图书模块设计… ……………………………………..13 5.1.1界面设计…………………………………………………………13 5.1.2 算法设计……………………………………………………... …13 5.1.3代码实现………………………... ………………………………14
6 论文总结…………………………………………………………….. 致谢…………………………………………………………………….. 参考文献…………………………………………………………………..
1 概论
1.1背景及目的
当今时代是飞速发展的信息时代,各行各业都离不开信息处理,这正是计算机被广泛应用于社会各行各业的原因。使用计算机进行信息管理是行业现代化的一个标志,此举不仅提高了工作效率,而且大大的提高了其安全性。尤其对于复杂的信息管理,计算机能够充分发挥它的优越性:快速操作、智能分析、海量存储和长期保存等等。使用计算机进行信息管理与信息管理系统的开发密切相关,因为信息管理系统的开发是利用信息管理系统进行管理的前提。本系统就是为了进行现代化图书馆信息管理而设计的。
本系统是一个针对大中专院校图书馆的图书信息管理系统,着力于解决原来手工管理出现的问题,如效率低、易出错、手续繁琐,还耗费大量的人力和物力,旨在实现现代化的信息管理。
1.2 系统功能模块设计简介
本系统包含读者登记、添加新书、读者借书、读者还书、图书注销、查询读者、查询图书等等功能。
读者登记时要为读者编制读者卡号,包括读者的具体信息(包括读者编号、姓名、性别、类别、有效证件、联系电话、联系地址等),写入读者文件中。 添加新书时要为该书编制图书卡片(包括分类图书编号、图书书名、作者、类别、图书单价和入库日期等信息),写入图书文件中。
读者借书时,先检查该读者是否为有效的读者,若无效则拒绝借书,然后检查该读者所借图书是否超过最大限制数,若超过则拒绝借书,再检查有尚未归还的过期图书,若有则拒绝借书,最后查找要借的图书是否还有,如果有则办理借出手续,登记图书分类号、读者号和借阅日期等。
读者还书时,根据书号,从借书文件中读出有关记录,标明还书日期,如果图书过期,则处以罚款。
系统还应提供图书清理的功能,对无价值的和过时的图书可以进行注销。 查询要求分为查询某位读者、某种图书和全局图书三种情况。
2 图书管理系统需求分析 2.1 应用需求分析
图书馆管理系统开发的总的设计目标是实现图书管理的系统化、规范化和自动化,实现对图书资料的集中统一的管理。本系统主要实现对图书馆信息的管理,主要功能为管理有关读者、图书、借阅、查询、删除和管理员的信息等。本系统结构分为读者类别管理、读者档案管理、图书类型管理、图书档案管理以及图书流程管理,读者管理可以浏览读者的信息,可以对读者信息进行维护。图书管理可以浏览图书的信息,可以对图书信息进行维护。借阅管理可以显示当前数据库中书籍借阅情况,可以对借阅信息进行维护。本系统主要解决的问题是利用关键字对数据库进行查询。
图书管理系统需要满足来自二方面的需求,这二个方面分别是图书借阅者和图书管理系统管理人员。图书借阅者的需求是查询图书馆所存的图书、个人借阅情况及个人信息的修改;图书管理系统管理人员对图书借阅者的借阅及还书要求进行操作,同时形成借书或还书情况给借阅者查看确认,对工作人员、图书借阅者、图书进行管理和维护,及系统状态的查看。
图书管理系统管理人员有修改图书借阅者借书和还书记录的权限,所以需对工作人员登陆本模块进行更多的考虑。在此模块中,图书管理系统管理人员可以为图书借阅者加入借书记录或是还书记录,并给用户查看和确认。管理员可以对图书的基本信息进行浏览、查询、添加、删除、修改和统计。还可以对借阅者的基本信息进行浏览和查询以及对图书馆的借阅信息进行统计。
2.2 功能需求分析
1. 管理者登录
2. 系统设置:管理员设置、图书馆信息设置、罚金设置
3. 图书管理:添加、浏览、修改、删除、借阅、归还、挂失、详细查看、检索
4. 读者管理:添加、浏览、删除、修改、详情查看、检索 5. 信息查询:查询
2.3 数据需求分析
1. 管理员信息:用户名、密码、权限、编号。
2. 图书信息:除读者需要的信息以外,还需要录入时间、产品的编号以及图书是否挂失的信息。
3. 读者信息:读者编码、姓名、性别、类别、联系电话、联系地址、注册时间、是否挂失。
4. 借还书信息:读者编码、图书编码、借书数量、借阅时间、还书时间
3数据库设计 3.1数据库设计平台
本数据库设计采用了Microsoft SQL Server 2000作为开发平台
3.2数据库ER 模型图
3.3数据库的设计及内容简介
打开Microsoft SQL Server 2000,因为我设计是图书管理系统,所以为了方便,命名数据库的名称为tsglxt 。然后新建表,主要包括图书馆信息表(tsgxx表) 、管理员表(admin表) 、图书表(book表) 、借书表(Jhbook表) 、借书人表(borrow_reader表) 、图书挂失表(tsgs表) 、图书注销表(tszx表) 、出版社表(cbs表) 、图书存放位置表(cfwz表) 、读者类别表(dzlb表) 、用户表(users表) 、读者挂失表(dzgs表) 、有效证件表(yxzj表) 、图书类别表(booklb表) 等。 (1) 名称:管理员表
表名称标识:admin 表
字段名 admin_id admin_xm admin_name admin_password
字段类型 char char char char
主/外键 p
(2) 名称:图书表
表名称标识:book 表
字段名 Book_id Book_name author publish class bookdj inputtime sjmc nrjj sfgs kcsl jcsl
字段类型 Char(10)
Nvarchar(50) Char(10)
Nvarchar(50) Char(10) Char(10)
Nvarchar(50) Char(10)
Nvarchar(50) Char(10) Int(4) Int(4)
主/外键 p
(3) 名称:出版社表
表名称标识:cbs 表
字段名
字段类型
主/外键
publish Nvarchar(50)
(4) 名称:图书挂失表
表名称标识:tsgs 表
字段名 Book_id sfgs Book_name
字段类型 Char(10) Char(10) Nvarchar(50)
主/外键 p
(5) 名称:存放位置(书架名称)表
表名称标识:cfwz 表
字段名 sjmc
字段类型 Char(10)
主/外键
(6) 名称:读者类别表
表名称标识:dzlb 表
字段名 dzlb kjsl zcqx
字段类型 Char(10) Char(10) Char(10)
主/外键
(7) 名称:借还书表
表名称标识:jhbook 表
字段名 User_id User_name Book_id Jstime hstime
字段类型 Char(10) Varchar(20) Char(10) Datatime datatime
主/外键
(8) 名称:图书馆信息表
表名称标识:tsgxx 表
字段名 Tsg_name Tsg_admin B_time Photo Emile Address Nrjj
字段类型 Nvarchar(50) Char(10) Char(10) Nvarchar(50) Nvarchar(50) Nvarchar(50) Char(10)
主/外键
(9) 名称:注销图书表
表名称标识:zxts 表
字段名 Book_id Book_name
字段类型 Char(10) Nvarchar(50)
主/外键 p
(10) 名称:读者挂失表
表名称标识:dzgs 表
字段名 User_id sfgs User_name
字段类型 Char(10) Char(10) Char(10)
主/外键 P
(11) 名称:读者表
表名称标识:users 表
字段名 User_id User_name User_xb User_lb Photo Address Yxzj Zj_number Dj_time sfgs
字段类型 Char(10) Char(10) Char(10) Char(10) Nvarchar(50) Nvarchar(50) Char(10) Nvarchar(50) Char(10) Char(10)
主/外键 P
(12) 名称:有效证件表
表名称标识:yxzj 表
字段名 yxzj
字段类型 Char(10)
主/外键
(13) 名称:图书类别表
表名称标识:booklb 表
字段名 class
字段类型 Char(10)
主/外键
(14) 名称:借书人表
表名称标识:borrow_reader表
字段名 User_id Kjsl Yjsl
字段类型 Char(10) Int(4) Int(4)
主/外键 P
4 功能模块概要设计
4.1功能模块开发平台
本功能模块应用软件的开发采用了Microsoft.Visual.Studio.2005 C#作为软件设计和开发平台。功能应用软件的界面采用菜单方式进行操作,具有操作方便、直观,功能明确、统一,对各界面的调用均在程序的主窗口下进行操作
4.2功能模块设计及内容简介
打开Microsoft.Visual.Studio.2005 C#,新建项目并命名为图书管理系统。新建窗体,拖入空间设计窗体。本系统主要包括Welcome 登录模块、系统设置模块、图书设置模块、读者管理模块、图书管理模块、系统查询模块、帮助模块等模块。
4.3功能模块设计图
5 功能模块详细设计
5.1 借阅图书模块设计 5.1.1界面设计
5.1.2算法设计
在“更新”按钮的Click 事件代码中编写代码,采用ADO.Net 技术实现数据库
的访问,在数据库的book 表中查询图书信息记录,用SqlDataReader 对象读取,然后显示出所有的图书信息记录。
在“查询”按钮的Click 事件代码中编写代码,采用ADO.Net 技术实现数据库的访问,在数据库的book 表中查询图书信息记录,用SqlDataReader 对象读取,然后显示出查询的图书信息记录。
在“借阅图书”按钮的Click 事件代码中编写代码,将读者要借的图书信息与读者的信息绑定写入数据库借还书表(jhbook表) 中 。
5.1.3代码实现
using System;
using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text;
using System.Windows.Forms; using System.Data.SqlClient; namespace WindowsApplication1 public partial class 借阅图书 : Form public 借阅图书( InitializeComponent()
private void 借阅图书_Load(object sender, EventArgs e)
// TODO: 这行代码将数据加载到表“tsglxtDataSet.JHbook ”中。您可以根据需要移动或移除它。this .jHbookTableAdapter.Fill(this .tsglxtDataSet.JHbook);
// TODO: 这行代码将数据加载到表“tsglxtDataSet.book ”中。您可以根据需要移动或移除它。 this .bookTableAdapter.Fill(this .tsglxtDataSet.book);
// TODO: 这行代码将数据加载到表“tsglxtDataSet.users ”中。您可以根据需要移动或移除它。 this .usersTableAdapter.Fill(this .tsglxtDataSet.users);
SqlConnection con = new SqlConnection ("Data Source=.;Initial Catalog=tsglxt;Integrated Security=True");
DataSet ds = new DataSet ();
SqlDataAdapter ada = new SqlDataAdapter (); BindingSource bs = new BindingSource ();
private void button1_Click(object sender, EventArgs e)
{string sql = "select * from users where user_id='" + textBox2.Text.Trim() + "'" ; ada.SelectCommand = new SqlCommand (sql, con); dataGridView1.DataSource = null ; ada.Fill(ds, "users" ); bs.DataSource = ds; bs.DataMember = "users" ; if (bs.Count
MessageBox .Show(" 表中无此读者" ); else
dataGridView1.DataSource = bs;
private void button2_Click(object sender, EventArgs e)
string sql = "select * from users where user_name='" + textBox1.Text.Trim() + "'" ; ada.SelectCommand = new SqlCommand (sql, con); ada.Fill(ds, "users" ); bs.DataSource = ds; bs.DataMember = "users" ; if (bs.Count
MessageBox .Show(" 表中无此读者" ); dataGridView1.DataSource = bs;
private void button3_Click(object sender, EventArgs e)
string sql = "select * from book where book_id='" + textBox3.Text.Trim() + "'" ; ada.SelectCommand = new SqlCommand (sql, con); dataGridView2.DataSource = null ; bs.DataSource = ds; bs.DataMember = "book" ; if (bs.Count
MessageBox .Show(" 表中无此图书" ); else
dataGridView2.DataSource = bs;
private void button4_Click(object sender, EventArgs e)
string sql = "select * from book where class='" + comboBox1.SelectedItem.ToString() + "'" ; ada.SelectCommand = new SqlCommand (sql, con);
ada.SelectCommand.Parameters.AddWithValue("class" , comboBox1.Text); dataGridView2.DataSource = null ; ada.Fill(ds, "book" ); bs.DataSource = ds; bs.DataMember = "book" ; MessageBox .Show(" 表中无类别" ); else
dataGridView2.DataSource = bs;
private void button5_Click(object sender, EventArgs e) string sql = "select * from users";
ada.SelectCommand = new SqlCommand (sql, con); ds.Clear();
ada.Fill(ds, "users" ); bs.DataSource = ds; bs.DataMember = "users" ; dataGridView1.DataSource = bs;
private void button6_Click(object sender, EventArgs e) string sql = "select * from book";
ada.SelectCommand = new SqlCommand (sql, con);
ds.Clear();
ada.Fill(ds, "book" ); bs.DataSource = ds; bs.DataMember = "book" ; dataGridView1.DataSource = bs;
private void button7_Click(object sender, EventArgs e)
string sql = "select kjsl-yjsl from borrow_reader where user_id='" + textBox1.Text.Trim() + "'" ; SqlCommand cmd = new SqlCommand (sql, con); int a = cmd.ExecuteScalar(); if (a=0)
MessageBox .Show(" 借书数量已满,请还书后再借!" ); return ;
string _sql = "select kcsl-jcsl from book where book_id='" + textBox3.Text.Trim() + "'" ; SqlCommand cmd = new SqlCommand (_sql, con); int b = cmd.ExecuteScalar();
MessageBox .Show(" 此书已全部被借出,不能借阅" ); else
string sql = "insert into jhbook(user_id, user_name, book_id, jstime) Values(@user_id, @user_name, @book_id, @jstime)";
SqlCommand sqlcmd = new SqlCommand (sql, con);
sqlcmd.Parameters.AddWithValue("@user_name", textBox2.Text); sqlcmd.Parameters.AddWithValue("@book_id", textBox3.Text); sqlcmd.Parameters.AddWithValue("@jstime", dateTimePicker1.Value);
string sqlstr="update borrow_reader set Yjsl=Yjsl+1 where user_id= @user_id "; string _sql="update book set jcsl=jcsl+1 where book_id= @book_id "; SqlCommand cmd = new SqlCommand (sqlstr, con); SqlCommand ddd = new SqlCommand (_sql,con);
cmd.Parameters.AddWithValue("@user_id", textBox1.Text); ddd.Parameters.AddWithValue("@book_id", textBox3.Text); try con.Open();
sqlcmd.ExecuteNonQuery(); cmd.ExecuteNonQuery(); ddd.ExecuteNonQuery(); con.Close();
MessageBox .Show(" 借阅成功" ); }
catch (DataException ex) dataGridView3.DataSource = bs;
private void button8_Click(object sender, EventArgs e) this .Close();
private void button9_Click(object sender, EventArgs e)
string sql = "select * from book where book_name='" + textBox4.Text.Trim() + "'" ; ada.SelectCommand = new SqlCommand (sql, con);
dataGridView2.DataSource = null ; ada.Fill(ds, "book" ); bs.DataSource = ds; if (bs.Count
MessageBox .Show(" 表中无此书籍" ); else
dataGridView2.DataSource = bs;
论文总结
本系统能帮助图书馆管理员实现对书籍的流通情况的全面了解。而且还能够对读者信息进行添加、注销、查询和修改,对图书信息进行添加、查询、修改和注销。在读者查询图书、借阅图书、归还图书以及挂失图书的过程中实现了简单、方便、快捷的功能。
制作本系统,虽然遇到了很多的问题,但在指导老师和同学们的帮助之下都得到了解决。而且也使我学到很多的知识。让我了解到了图书管理系统的操作过程。明白了.net 与数据库的绑定过程以及代码的实现。古诗说的好“温故而知新”,制作这个图书管理系统唤醒了以前模糊记忆的知识,而且让我对以前没有明白的代码有了重新的认识和深刻的了解。我也发现我有很多的地方都不懂,要加强学习和多阅读一些相关的书籍来丰富的我视野。使我在以后道路中如果遇到相同或者相关问题的时候能够迎刃而解。
图书管理系统毕业论文设计,让我清楚的了解到我大学3年在信管系学到了什么,还有什么不足。让我知道要往哪个方向去学习,要学些什么东西。在学习的过程要有一种坚持不放弃的精神。
致谢
本设计在导师XX 教授的悉心指导和严格要求下业已完成,从课题选择、方案论证到具体设计和调试,无不凝聚着XX 导师的心血和汗水,在四年的本科学习和生活期间,也始终感受着导师的精心指导和无私的关怀,我受益匪浅。在此向导师表示深深的感谢和崇高的敬意。
本设计的完成也凝聚了XX 老师的辛勤汗水,是他无私的帮助和支持,才使我的毕业论文工作顺利完成,在此向X 老师表示由衷的谢意。
参考文献
[1] Graeme Malcolm.SQL Server 2000 with XML[M].清华大学出版社,2003 [2] 艾德才. 计算机信息管理基础[M].中国水利水电出版社,2001
[3] Jeff Robin.Management of Information System[M].机械工业出版社,2002
[4] Tim F Lee.Implement MIS[M].北京出版社,2001
[5] G. B. Davis, G. Everest. Introduction to Management Information Systems[M ]. McGraw - Hill. 1974