1、图书管理系统的设计和开发目 录第 1 章 概论 . 11.1 背景及目的 . 11.2 系统功能模块设计简介 1第 2 章 图书管理系统需求分析 . 22.1 应用需求分析 22.2 功能需求分析 22.3 数据需求分析 3第 3 章 数据库设计 43.1 数据库设计平台 . 43.2 数据库 ER 模型图 43.3 数据库的设计及内容简介 . 5第 4 章 功能模块概要设计 . 84.1 功能模块开发平台 . 84.2 功能模块设计及内容简介 . 84.3 功能模块设计图 . 8第 5 章 功能模块详细设计 . 95.1 借阅图书模块设计. 95.1 归还图书模块设计 . 14论文总结 .
2、18 致谢 错误!未定义书签。 参考文献 .错误!未定义书签。第 1 章 概论1.1 背景及目的当今时代是飞速发展的信息时代,各行各业都离不开信息处理,这正是计算机被广泛应用于社会各行各业的原因。使用计算机进行信息管理是行业现代化的一个标志,此举不仅提高了工作效率,而且大大的提高了其安全性。尤其对于复杂的信息管理,计算机能够充分发挥它的优越性:快速操作、智能分析、海量存储和长期保存等等。使用计算机进行信息管理与信息管理系统的开发密切相关,因为信息管理系统的开发是利用信息管理系统进行管理的前提。本系统就是为了进行现代化图书馆信息管理而设计的。本系统是一个针对大中专院校图书馆的图书信息管理系统,着
3、力于解决原来手工管理出现的问题,如效率低、易出错、手续繁琐,还耗费大量的人力和物力,旨在实现现代化的信息管理。1.2 系统功能模块设计简介本系统包含读者登记、添加新书、读者借书、读者还书、图书注销、查询读者、查询图书等等功能。 读者登记时要为读者编制读者卡号,包括读者的具体信息(包括读者编号、姓名、性别、类别、有效证件、联系电话、联系地址等),写入读者文件中。 添加新书时要为该书编制图书卡片(包括分类图书编号、图书书名、作者、类别、图书单价和入库日期等信息),写入图书文件中。 读者借书时,先检查该读者是否为有效的读者,若无效则拒绝借书,然后检查该读者所借图书是否超过最大限制数,若超过则拒绝借书
4、,再检查有尚未归还的过期图书,若有则拒绝借书,最后查找要借的图书是否还有,如果有则办理借出手续,登记图书分类号、读者号和借阅日期等。 读者还书时,根据书号,从借书文件中读出有关记录,标明还书日期,如果图书过期,则处以罚款。 系统还应提供图书清理的功能,对无价值的和过时的图书可以进行注销。 查询要求分为查询某位读者、某种图书和全局图书三种情况。第 2 章 图书管理系统需求分析2.1 应用需求分析图书馆管理系统开发的总的设计目标是实现图书管理的系统化、规范化和自动化,实现对图书资料的集中统一的管理。本系统主要实现对图书馆信息的管理,主要功能为管理有关读者、图书、借阅、查询、删除和管理员的信息等。本
5、系统结构分为读者类别管理、读者档案管理、图书类型管理、图书档案管理以及图书流程管理,读者管理可以浏览读者的信息,可以对读者信息进行维护。图书管理可以浏览图书的信息,可以对图书信息进行维护。借阅管理可以显示当前数据库中书籍借阅情况,可以对借阅信息进行维护。本系统主要解决的问题是利用关键字对数据库进行查询。图书管理系统需要满足来自二方面的需求,这二个方面分别是图书借阅者和图书管理系统管理人员。图书借阅者的需求是查询图书馆所存的图书、个人借阅情况及个人信息的修改;图书管理系统管理人员对图书借阅者的借阅及还书要求进行操作,同时形成借书或还书情况给借阅者查看确认,对工作人员、图书借阅者、图书进行管理和维
6、护,及系统状态的查看。图书管理系统管理人员有修改图书借阅者借书和还书记录的权限,所以需对工作人员登陆本模块进行更多的考虑。在此模块中,图书管理系统管理人员可以为图书借阅者加入借书记录或是还书记录,并给用户查看和确认。管理员可以对图书的基本信息进行浏览、查询、添加、删除、修改和统计。还可以对借阅者的基本信息进行浏览和查询以及对图书馆的借阅信息进行统计。2.2 功能需求分析1.管理者登录2.系统设置:管理员设置、图书馆信息设置、罚金设置3.图书管理:添加、浏览、修改、删除、借阅、归还、挂失、详细查看、检索4.读者管理:添加、浏览、删除、修改、详情查看、检索5.信息查询:查询2.3 数据需求分析1.
7、管理员信息:用户名、密码、权限、编号。2.图书信息:除读者需要的信息以外,还需要录入时间、产品的编号以及图书是否挂失的信息。3.读者信息:读者编码、姓名、性别、类别、联系电话、联系地址、注册时间、是否挂失。4.借还书信息:读者编码、图书编码、借书数量、借阅时间、还书时间第 3 章 数据库设计3.1 数据库设计平台本数据库设计采用了 Microsoft SQL Server 2000 作为开发平台。 3.2 数据库3.3 数据库的设计及内容简介打开 Microsoft SQL Server 2000,因为我设计是图书管理系统,所以为了方便,命名数据库的名称为 tsglxt。然后新建表,主要包括图
8、书馆信息表(tsgxx表)、管理员表(admin 表)、图书表(book 表)、借书表(Jhbook 表)、借书人表(borrow_reader 表)、图书挂失表(tsgs 表)、图书注销表(tszx 表)、出版社表(cbs 表)、图书存放位置表(cfwz 表)、读者类别表(dzlb 表)、用户表(users 表)、读者挂失表(dzgs 表)、有效证件表(yxzj 表)、图书类别表(booklb 表)等。(1) 名称:管理员表 表名称标识:admin 表字段名admin_idadmin_xmadmin_nameadmin_password字段类型 char char char char 主/外
9、键 p(2) 名称:图书表表名称标识:book 表字段名Book_idBook_nameauthorpublishclassbookdjinputtimesjmcnrjjsfgskcsljcsl 字段类型 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) 名称:图书挂失表表名称标
10、识: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)
11、 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_idBook_name 字段类型 Char(10) Nvarchar(50) 主/外键 p(10) 名称:读者挂失表表名称标识:dzgs 表字段
12、名User_idsfgsUser_name 字段类型 Char(10) Char(10) Char(10) 主/外键 P(11) 名称:读者表表名称标识:users 表字段名User_idUser_nameUser_xbUser_lbPhotoAddressYxzjZj_numberDj_timesfgs 字段类型 Char(10) Char(10) Char(10) Char(10) Nvarchar(50) Nvarchar(50) Char(10) Nvarchar(50) Char(10) Char(10) 主/外键 P(12) 名称:有效证件表表名称标识:yxzj 表字段名yxzj
13、字段类型 Char(10) 主/外键(13) 名称:图书类别表表名称标识:booklb 表字段名class 字段类型 Char(10) 主/外键(14) 名称:借书人表表名称标识:borrow_reader 表 字段名User_idKjslYjsl 字段类型 Char(10) Int(4) Int(4) 主/外键 P/外键第 4 章 功能模块概要设计4.1 功能模块开发平台本功能模块应用软件的开发采用了 Microsoft.Visual.Studio.2005 C#作为软件设计和开发平台。功能应用软件的界面采用菜单方式进行操作,具有操作方便、直观,功能明确、统一,对各界面的调用均在程序的主窗口
14、下进行操作。 4.2 功能模块设计及内容简介打开 Microsoft.Visual.Studio.2005 C#,新建项目并命名为图书管理系统。新建窗体,拖入空间设计窗体。本系统主要包括 Welcome 登录模块、系统设置模块、图书设置模块、读者管理模块、图书管理模块、系统查询模块、帮助模块等模块。 4.3 功能模块设计图第 5 章 功能模块详细设计5.1 借阅图书模块设计5.1.1 界面设计5.1.2 算法设计在“更新”按钮的 Click 事件代码中编写代码,采用 ADO.Net 技术实现数据库的访问,在数据库的 book 表中查询图书信息记录,用SqlDataReader 对象读取,然后显
15、示出所有的图书信息记录。在“查询”按钮的 Click 事件代码中编写代码,采用 ADO.Net 技术实现数据库的访问,在数据库的 book 表中查询图书信息记录,用SqlDataReader 对象读取,然后显示出查询的图书信息记录。在“借阅图书”按钮的 Click 事件代码中编写代码,将读者要借的图书信息与读者的信息绑定写入数据库借还书表(jhbook 表)中 。5.1.3 代码实现using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Dr
16、awing;using System.Text;using System.Windows.Forms;using System.Data.SqlClient;namespace WindowsApplication1public partial class 借阅图书 : Formpublic 借阅图书()InitializeComponent();private void 借阅图书_Load(object sender, EventArgs e)/ TODO: 这行代码将数据加载到表“tsglxtDataSet.JHbook”中。您可以根据需要移动或移除它。 this.jHbookTableA
17、dapter.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(“Dat
18、a 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() + “;
19、 ada.SelectCommand = new SqlCommand(sql, con);dataGridView1.DataSource = null;ada.Fill(ds, “users“);bs.DataSource = ds;bs.DataMember = “users“;if (bs.Count = 0)MessageBox.Show(“表中无此读者“);elsedataGridView1.DataSource = bs;private void button2_Click(object sender, EventArgs e)string sql = “select * fro
20、m users where user_name=“ + textBox1.Text.Trim() + “; ada.SelectCommand = new SqlCommand(sql, con);dataGridView1.DataSource = null;ada.Fill(ds, “users“);bs.DataSource = ds;bs.DataMember = “users“;if (bs.Count = 0)MessageBox.Show(“表中无此读者“);elsedataGridView1.DataSource = bs;private void button3_Click(
21、object sender, EventArgs e)string sql = “select * from book where book_id=“ + textBox3.Text.Trim() + “; ada.SelectCommand = new SqlCommand(sql, con);dataGridView2.DataSource = null;ada.Fill(ds, “book“);bs.DataSource = ds;bs.DataMember = “book“;if (bs.Count = 0)MessageBox.Show(“表中无此图书“);elsedataGridV
22、iew2.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
23、= null;ada.Fill(ds, “book“);bs.DataSource = ds;bs.DataMember = “book“;if (bs.Count = 0)MessageBox.Show(“表中无类别“);elsedataGridView2.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(
24、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“;dataGri
25、dView1.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
26、= “select kcsl-jcsl from book where book_id=“ + textBox3.Text.Trim() + “; SqlCommand cmd = new SqlCommand(_sql, con);int b = cmd.ExecuteScalar();if(b=0)MessageBox.Show(“此书已全部被借出,不能借阅“);elsestring sql = “insert into jhbook(user_id, user_name, book_id, jstime) Values(user_id, user_name, book_id, jstim
27、e)“;SqlCommand sqlcmd = new SqlCommand(sql, con);sqlcmd.Parameters.AddWithValue(“user_id“, textBox1.Text);sqlcmd.Parameters.AddWithValue(“user_name“, textBox2.Text);sqlcmd.Parameters.AddWithValue(“book_id“, textBox3.Text);sqlcmd.Parameters.AddWithValue(“jstime“, dateTimePicker1.Value);string sqlstr=
28、“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(“
29、book_id“, textBox3.Text);trycon.Open();sqlcmd.ExecuteNonQuery();cmd.ExecuteNonQuery();ddd.ExecuteNonQuery();con.Close();MessageBox.Show(“借阅成功“);catch (DataException ex) MessageBox.Show(ex.Message); finallydataGridView3.DataSource = bs;private void button8_Click(object sender, EventArgs e)this.Close(
30、);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;bs.DataMember = “book“;if (bs.Count = 0)MessageB
31、ox.Show(“表中无此书籍“);elsedataGridView2.DataSource = bs;5.1 归还图书模块设计5.1.1 界面设计5.1.2 算法设计在“更新”按钮的 Click 事件代码中编写代码,采用 ADO.Net 技术实现数据库的访问,在数据库的 jhbook 表中查询读者信息记录,用SqlDataReader 对象读取,然后显示出所有的读者借阅图书信息记录。在“查询”按钮的 Click 事件代码中编写代码,采用 ADO.Net 技术实现数据库的访问,在数据库的 jhbook 表中查询读者信息记录,用SqlDataReader 对象读取,然后显示出查询的读者借阅图书信
32、息记录。在“归还图书”按钮的 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 WindowsApplication1pub
33、lic partial class 归还图书 : Formpublic 归还图书()InitializeComponent();private void 归还图书_Load(object sender, EventArgs e)/ TODO: 这行代码将数据加载到表“tsglxtDataSet.borrower_reader”中。您可以根据需要移动或移除它。this.borrower_readerTableAdapter.Fill(this.tsglxtDataSet.borrower_reader);/ TODO: 这行代码将数据加载到表“tsglxtDataSet.book”中。您可以根据
34、需要移动或移除它。 this.bookTableAdapter.Fill(this.tsglxtDataSet.book);/ TODO: 这行代码将数据加载到表“tsglxtDataSet.JHbook”中。您可以根据需要移动或移除它。 this.jHbookTableAdapter.Fill(this.tsglxtDataSet.JHbook);SqlConnection con = new SqlConnection(“Data Source=.;Initial Catalog=tsglxt;Integrated Security=True“);DataSet ds = new Data
35、Set();SqlDataAdapter ada = new SqlDataAdapter();BindingSource bs = new BindingSource();private void button1_Click(object sender, EventArgs e)string sql = “select * from jhbook where user_id=“ + textBox2.Text.Trim() + “; ada.SelectCommand = new SqlCommand(sql, con);dataGridView1.DataSource = null;ada
36、.Fill(ds, “jhbook“);bs.DataSource = ds;bs.DataMember = “jhbook“;if (bs.Count = 0)MessageBox.Show(“表中无此读者“);elsedataGridView1.DataSource = bs;private void button2_Click(object sender, EventArgs e)string sql = “select * from jhbook where user_name=“ + textBox1.Text.Trim() + “; ada.SelectCommand = new
37、SqlCommand(sql, con);dataGridView1.DataSource = null;ada.Fill(ds, “jhbook“);bs.DataSource = ds;bs.DataMember = “jhbook“;if (bs.Count = 0)MessageBox.Show(“表中无此读者“);elsedataGridView1.DataSource = bs;private void button3_Click(object sender, EventArgs e)string sql = “select * from jhbook“;ada.SelectCom
38、mand = new SqlCommand(sql, con);ds.Clear();ada.Fill(ds, “jhbook“);bs.DataSource = ds;bs.DataMember = “jhbook“;dataGridView1.DataSource = bs;private void button4_Click(object sender, EventArgs e)this.Close();private void button5_Click(object sender, EventArgs e)string sql = “update jhbook set hstime=
39、hstime where user_id=“+dataGridView2.CurrentRow.Cells0.Value.ToString()+“and book_id=“+dataGridView2.CurrentRow.Cells2.Value.ToString()+“;string sqlstr=“update borrow_reader set Yjsl=Yjsl-1 where book_id=“+dataGridView3.CurrentRow.Cells2.Value.ToString()+“;string _sql=“update book set jcsl=jcsl-1 wh
40、ere book =“+dataGridView1.CurrentRow.Cells1.Value.ToString()+“;SqlCommand cmd = new SqlCommand(sql, con);SqlCommand CMD = new SqlCommand(sqlstr, con);SqlCommand ddd = new SqlCommand(sqlstr, con);cmd.Parameters.AddWithValue(“hstime“, dateTimePicker1.Value); con.Open();cmd.ExecuteNonQuery();CMD.Execut
41、eNonQuery();ddd.ExecuteNonQuery();con.Close();ds.Clear();dataGridView1.DataSource = bs;MessageBox.Show(“归还图书“, “确认“, MessageBoxButtons.OK);第 18 / 20 页论文总结本系统能帮助图书馆管理员实现对书籍的流通情况的全面了解。而且还能够对读者信息进行添加、注销、查询和修改,对图书信息进行添加、查询、修改和注销。在读者查询图书、借阅图书、归还图书以及挂失图书的过程中实现了简单、方便、快捷的功能。制作本系统,虽然遇到了很多的问题,但在指导老师和同学们的帮助之下都得到了解决。而且也使我学到很多的知识。让我了解到了图书管理系统的操作过程。明白了.net 与数据库的绑定过程以及代码的实现。古诗说的好“温故而知新”,制作这个图书管理系统唤醒了以前模糊记忆的知识,而且让我对以前没有明白的代码有了重新的认识和深刻的了解。我也发现我有很多的地方都不懂,要加强学习和多阅读一些相关的书籍来丰富的我视野。使我在以后道路中如果遇到相同或者相关问题的时候能够迎刃而解。图书管理系统毕业论文设计,让我清楚的了解到我大学 3 年在信管系学到了什么,还有什么不足。让我知道要往哪个方向去学习,要学些什么东西。在学习的过程要有一种坚持不放弃的精神。