图书馆小型管理系统_第1页
图书馆小型管理系统_第2页
图书馆小型管理系统_第3页
图书馆小型管理系统_第4页
图书馆小型管理系统_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、专 科 毕 业 大 作 业 毕业大作业题目名称图书管理系统设计专业班级11级计算机教育学生姓名刘冬学 号61102110004指导教师刘娟二一四年五月六日 目录第一章 前言31.1数据库应用系统简介31.2Visual Studio 2008 开发平台31.3图书管理系统3第二章 数据库设计42.1 数据库分析42.2 E-R模型设计52.2.1 实体列表5系统的E-R模型52.3 设计数据库6创建数据库6创建数据表6第三章 界面设计73.1 主界面73.2 用户登录界面83.3 图书查询界面83.4 图书入库界面93.5 图书借阅界面9第四章 通用类的生成104.1 连接数据库104.2 操

2、作数据库中的数据104.3 用户登录代码、图书查询代码等的实现12第五章 连接数据库13第六章 系统测试136.1 开发与测试环境136.2 程序调试情况136.3 功能显示136.3.1 运行主窗口136.3.2 图书查询功能146.3.3 图书入库功能156.3.4 图书借阅功能15第七章 问题分析与解决方法167.1 定义连接数据库字符串的技巧167.2 图书查询功能的友好交互性16第八章 总结17附录17附录A 主窗口实现代码17附录B 图书查询实现代码20附录C 图书借阅功能实现代码21参考文献23第一章 前言1.1数据库应用系统简介SQL Server 2005数据库是微软公司精心

3、打造的企业级数据库平台产品,该产品不仅包含了丰富的企业及数据管理功能,还集成了商业智能等特性。数据库由DBMS(数据库管理系统)处理,DBMS则由开发人员和用户通过应用程序直接或间接地使用。它主要包括四个要素:用户数据、元数据、索引和应用元数据。1.2Visual Studio 2008 开发平台Visual Studio 是一套完整的开发工具集,用于生成 ASP.NET Web 应用程序、XML Web Services、桌面应用程序和移动应用程序。Visual Basic、Visual C+、Visual C# 和 Visual J# 全都使用相同的集成开发环境 (IDE),利用此 IDE

4、 可以共享工具且有助于创建混合语言解决方案。另外,这些语言利用了 .NET Framework 的功能,通过此框架可使用简化 ASP Web 应用程序和 XML Web Services 开发的关键技术。1.3图书管理系统当今时代是飞速发展的信息时代。在各行各业中离不开信息处理,这正是计算机被广泛应用于信息管理系统的环境。计算机的最大好处在于利用它能够进行信息管理。使用计算机进行信息控制,不仅提高了工作效率,而且大大的提高了其安全性。图书馆作为一种信息资源的集散地,图书和用户借阅资料繁多,包含很多的信息数据的管理,现今,有很多的图书馆都是初步开始使用,甚至尚未使用计算机进行信息管理。根据调查得

5、知,他们以前对信息管理的主要方式是基于文本、表格等纸介质的手工处理,对于图书借阅情况(如借书天数、超过限定借书时间的天数)的统计和核实等往往采用对借书卡的人工检查进行,对借阅者的借阅权限、以及借阅天数等用人工计算、手抄进行。数据信息处理工作量大,容易出错;由于数据繁多,容易丢失,且不易查找。总的来说,缺乏系统,规范的信息管理手段。尽管有的图书馆有计算机,但是尚未用于信息管理,没有发挥它的效力,资源闲置比较突出,这就是管理信息系统的开发的基本环境。数据处理手工操作,工作量大,出错率高,出错后不易更改。图书馆采取手工方式对图书借阅情况进行人工管理,由于信息比较多,图书借阅信息的管理工作混乱而又复杂

6、;一般借阅情况是记录在借书证上,图书的数目和内容记录在文件中,图书馆的工作人员和管理员也只是当时对它比较清楚,时间一长,如再要进行查询,就得在众多的资料中翻阅、查找了,造成查询费时、费力。如要对很长时间以前的图书进行更改就更加困难了。基于这此问题,我认为有必要建立一个图书管理系统,使图书管理工作规范化,系统化,程序化,避免图书管理的随意性,提高信息处理的速度和准确性,能够及时、准确、有效的查询和修改图书情况。第二章 数据库设计2.1 数据库分析本系统利用Visual Studio 2008处理数据库的功能,实现对图书馆信息的管理。主要功能为管理有关用户、管理员、书籍和借阅的信息等。本系统的结构

7、分为用户信息管理模块、书籍信息管理模块、借阅信息管理模块、管理者管理信息模块和查询处理模块。图书馆管理系统框图如图2.1所示成功进入图书馆管理系统管理员用户查询图书借阅图书图书管理查询图书增加图书修改图书删除图书登录失败 图2.1 图书馆管理系统框图2.2 E-R模型设计 实体列表实    体描     述用 户所有借阅者,查阅者,以及系统管理员,由用户ID标识图 书图书馆所有图书,由图书ID标识借    阅图书ID、借阅ID、借书日期、借阅证号等属性,由借阅ID标识系统的E-R模型该图书管理系

8、统的E-R模型,如图2.2所示用户图书借阅图书管理管理员UIDUNameUPwdUBookIDUStateBookIDBookNameBookTypeBookAuthorBookPriceBookPicBookContentBookIssueIssIDBookIDIssBookIDIssDateTimemN1m2.2 系统的E-R模型2.3 设计数据库创建数据库(1)在服务器资源管理器中的任一节点右击。 (2)执行快捷菜单中的“新建数据库”命令,并在打开的“创建数据库”对话框中输入数据库名BookManage,其他可采用默认值。 (3)单击“确定”按钮,则新建的数据库就会出现在服务器上。创建数

9、据表创建数据库后,为BookManage数据库添加数据表,步骤如下。 (1)在服务器资源管理器中右击数据库BookManage下的“表”文件夹在弹出的快捷菜单中执行“新建表”命令。 (2)添加表的字段和其他详细资料。各表数据结构如下表所示。表2-1用户信息(userinfo)列  名含 义数据类型说明UID用户IDint自动,主键UName用户名vchar(50)不为空UPwd密码vchar(50)不为空UState用户权限,管理员=1,普通用户=2int不为空,默认值为2UBookID借阅证号bigint可以为空表2-2图书信息(bookinfo)列  名含 义数据类型主

10、  键BookID图书IDbigint自动,主键BookName图书名称Varchar(50)不为空BookType类别Varchar(100)不为空BookAuthor作者Varchar(100)不为空BookPrice价格smallmoney不为空BookPic封面Varchar(200)允许为空BookContent内容简介text不为空BookIssue图书制定访问码Varchar(50)不为空表2-3借阅信息(issueinfo)列  名含 义数据类型说明IssID借阅IDbigint自动,主键BookID图书IDbigint外键IssBookID借阅证号bigi

11、nt不为空IssDateTime借书日期datetime不为空2.4 数据库中表的关系在数据库中新建BookManage数据库的数据库关系图如图2.4所示图 2.4 数据库关系图第三章 界面设计3.1 主界面进入Visual Studio 2008,创建一个新的“Windows应用程序”类型的项目,名为“图书馆管理”。将默认创建的窗体命名为“图书馆管理系统”,把“图书馆管理系统”作为本系统中的主界面。在窗体中添加一个菜单(MenuStrip)控件,一个工具栏(ToolStrip)控件。MenuStrip中的菜单项,子菜单项如图3.1所示图3.1 主界面3.2 用户登录界面本系统的用户非为普通用

12、户和管理用户,管理用户具有系统提供的所有权限,普通用户可以查询图书、借阅图书。在窗体中添加3个标签(Label)控件,2个按钮(Button)控件,1个组合框(ComboBox)控件,2个文本框(TextBox)控件。用户类型分为管理用户和普通用户,在组合窗口中添加这两项。3.3 图书查询界面图书查询提供组合查询的方式,界面窗体名称为“frmSearchBook.cs”,图书类别组合框中的项是从数据库中获取的,在设计时不需要添加内容。在条件组合框中输入“or”和“and”,来动态实现条件组合。在窗体中添加2个分组框(GroupBox)控件:搜索条件、搜索结果,各种控件的添加如图3.3所示图3.

13、3 图书查询界面在右边的分组框中添加DataGridView控件,单击右上角的黑色三角,选择“在父容器中停靠”选项。3.4 图书入库界面管理员有权限将图书添加到数据库中,图书入库界面的设计如图3.4所示图3.4 图书入库界面在窗体的左边的分组框中添加标签和文本框,用来接收管理员输入的图书信息,以便保存到数据库中。在右边的分组框中添加DataGridView控件,可以显示数据库中的图书信息,新添加的图书信息也可以显示出来。管理员可以在DataGridView控件中直接修改数据,也可以通过右边的分组框实现图书信息的修改。3.5 图书借阅界面根据图书馆中已有的图书信息,用户可以通过图书证号实现借阅。

14、界面设计如图3.6所示图 3.6 图书借阅界面第四章 通用类的生成本系统的主要操作都需要与数据库发生交互,为了提高代码的重用性和规范性,把与数据库交互的功能单独放在一个类中,在该类中实现数据库的增加、删除、修改、查询等通用功能。4.1 连接数据库(1)定义数据库连接字符串,代码如下:Private static string ConnectString = "Data Source= (local)sqlexpress;DataBase=BookManage.mdf"(2)创建Connection对象,代码如下:SqlConnection con = new SqlConn

15、ection(ConnectString);(3)打开连接,代码如下:con.Open();(4)关闭连接,代码如下:con.Close();4.2 操作数据库中的数据using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Data;using System.Data.SqlClient;namespace BookManage class DataAccess private static string ConnectString = "Data S

16、ource =A20SQLEXPRESS;AttachDbFilename=F:BookManagedataBookManage.mdf;Integrated Security=False"/数据库连接字符串 / <summary> / 根据表名获取数据集的表 / </summary> / <param name="table"></param> / <returns></returns>public static DataTable GetDataSetByTableName(string

17、table) using (SqlConnection con = new SqlConnection(ConnectString)/创建数据库连接对象 string sql = "select * from " + table + ""/查询sql语句try SqlDataAdapter adapter = new SqlDataAdapter(sql, con);/创建适配器对象 DataSet ds = new DataSet();/创建数据集对象 adapter.Fill(ds, "table");/填充数据集 return

18、ds.Tables0;/返回数据表 catch (SqlException ex) throw new Exception(ex.Message); ; public static DataSet GetDataSetBySql(string sql) using (SqlConnection con = new SqlConnection(ConnectString)/创建数据库连接对象 SqlDataAdapter adapter = new SqlDataAdapter(sql,con);/创建适配器对象 DataSet ds = new DataSet();/创建数据集对象 try a

19、dapter.Fill(ds);/填充数据集 return ds;/返回数据集 catch (SqlException ex) throw new Exception(ex.Message) public static SqlDataReader GetDataReaderByID(int id) using (SqlConnection con = new SqlConnection(ConnectString) string sql = "select * from bookinfo where bookid=" + id;/sql语句 try SqlCommand c

20、omm = new SqlCommand(sql, con);/创建Command对象 con.Open();/打开连接 SqlDataReader reader = comm.ExecuteReader();/创建DataReader对象 reader.Read();/读取数据 return reader;/返回DataReader catch (SqlException ex) throw new Exception(ex.Message); public static bool UpdateDataTable(string sql) using (SqlConnection con =

21、new SqlConnection(ConnectString) try con.Open();/打开连接 SqlCommand comm = new SqlCommand(sql, con);/创建Command对象 if (comm.ExecuteNonQuery() > 0) /执行更新 return true; else return false; catch (SqlException ex) throw new Exception(ex.Message); public static void UpdateDataSet(DataSet ds,string sql) usin

22、g (SqlConnection con = new SqlConnection(ConnectString) try SqlDataAdapter adapter = new SqlDataAdapter(sql, con);/创建适配器 SqlCommandBuilder builder = new SqlCommandBuilder(adapter);/根据适配器自动生成表单 adapter.Update(ds, "table");/更新数据库 catch (SqlException ex) throw new Exception(ex.Message);4.3 用户

23、登录代码、图书查询代码等的实现以上代码的实现都是C#语言和Sql语言的使用,此处由于代码篇幅较长,此处不再说明,祥见附录。第五章 连接数据库为数据库BookManage和本系统之间建立一个数据连接。(1)在服务器资源管理器中右击“数据连接”节点(VS 2008中操作)。在弹出的快捷菜单中执行“添加连接”命令,打开Data Link Properties对话框。切换到Provider选项卡,选中列表框中的Microsoft OLE DB Provider for SQL Server项。单击“下一步”切换到Connection选项卡。(2)在其中的第一个下拉列表框中选择数据库所在服务器名称。输入

24、登录服务器信息后选择数据库BookManage,然后单击测试按钮。如果测试成功,单击“确定”按钮。第六章 系统测试6.1 开发与测试环境 本系统使用C#3.0语言进行开发。需要Microsoft .NET Framework的支持。适用内存不低于256M配备有Windows2000,Windows2003,WindowsXP系统的计算机。6.2 程序调试情况 在数据连接时一定要注意窗体和相应显示控件的绑定关系。在把系统从一台计算机移植到另一台计算机时一定要把数据文件BookManage.mdf和BookManage_log.LDF同时移植,并对相应的提供服务的SQL Server服务器进行相应

25、的修改,否则数据正确连接并显示。6.3 功能显示 运行主窗口运行程序后首先显示主窗体,如图6.1所示单击“登录”按钮,就会弹出登录窗体,管理用户具有系统提供的所有权限,普通用户可以查询图书、借阅图书。图 6.1 主窗口在登录对话框中输入用户姓名和密码,单击“确认”按钮,就会对用户身份进行认证,如果认证通过,那么就会弹出如图6.2所示的图书馆管理系统的界面:管理员和普通用户进入此窗体后,系统所提供的操作权限是不同的 图书查询功能图书查询可以实现组合查询,将查询结果显示在DataGridView控件中。窗体载入时,对图书类别组合框中的项进行了初始化,通过查询语句“select distinct B

26、ookType from bookinfo”,调用DataAccess类中的GetDataSetBySql方法获取数据库Bookinfo表中的图书类别,使用distinct关键字去掉重复项。使用查询功能示例如图6.2所示图6.2 图书查询 图书入库功能管理员登录系统后,可以为数据库添加新的图书信息。如图6.3所示如图6.3 图书入库 图书借阅功能用户登录系统后,可以借阅不同的书籍,通过选择组合框中的书名,该书的图书访问代码和作者将显示在文本框中。如图6.5所示图6.5 图书借阅第七章 问题分析与解决方法7.1 定义连接数据库字符串的技巧(1)string conString 

27、;= "provider=sqloledb.1;data source=.;initial catalog=capucivar;user id=sa;pwd="/连接数据库的字符串(2)private static string ConnectString = "server=(local)sqlexpress;database=Book_Data;user=sa;pwd=1234"/数据库连接字符串(3)Private static string ConnectString = "Data Source

28、= (local)sqlexpress;DataBase=BookManage.mdf"7.2 图书查询功能的友好交互性对于一个藏书量很大的图书馆,一本图书可能有好几种版本,即作者不同、出版社不同、价格不同;或者同一类型的书:如计算机类的书有很多本。这时不同的用户就需要查询自己所需的书,在查询时就需要同时根据多项图书的信息进行关联性的查找,所以在查询功能这一块要用相应的算法解决这一问题,如下面的代码所示,已经实现了图书的关联性查找:private void btnSerch_Click(object sender, EventArgs e) string cbo1 = this.cb

29、oOR.Text; string cbo2 = this.cboAnd.Text; string booktype = cboType.Text; string bookname = this.txtName.Text; string bookcontent = this.txtContent.Text; /定义sql语句 string sql = "select * from bookInfo where BookType='" + booktype + "' " + cbo1 + " BookName like '%

30、" + bookname + "%' " + cbo2 + " BookContent like '%" + bookcontent + "%'" /调用DataAccess.GetDataSetBySql方法 DataSet Myds = DataAccess.GetDataSetBySql(sql); DataTable table = Myds.Tables0; /指定数据源 this.dgvSearchBook.DataSource = table; 图 7.1 关联查找如图7.1所示 若要查

31、询“爱情 情感”类中的“明晓溪”著作的心之萌这本书 就要同时对图书类别和图书名称这两个信息进行关联查找:在图书类别下的组合框中选中“and”,图书类别中输入 爱情 情感,图书名称中输入 心之萌。第八章 总结通过近两周的课程设计,我有了很多的收获,首先这次课程设计使用到了很多的C#和SQL编程语言,由于之前学的不好,在程序的代码实现中遇到了很多的问题,使得设计的中期阶段显得很困难,但是经过组员们的共同努力均被一一解决;其次是作为学习软件专业的我们,要有良好的学习心态和严谨的态度,因为编程这一块真的很不容易,一不小心就会出错,而且很是乏味;最后,我还是很顺利的完成了这次课程设计,在这里我要特别感谢

32、刘娟老师在软件使用和数据库设计上对我们的指导。附录附录A 主窗口实现代码using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;namespace BookManage public partial class FrmMain : Form public static DialogResult resu

33、lt; public FrmMain() InitializeComponent(); /查询子窗体是否存在 public bool checkchildfrm(string childfrmname) foreach (Form childFrm in this.MdiChildren) if (childFrm.Name = childfrmname) if(childFrm.WindowState =FormWindowState.Minimized) childFrm.WindowState = FormWindowState.Normal; childFrm.Activate();

34、return true; return false;/用户登录菜单的事件处理private void 用户登录ToolStripMenuItem_Click(object sender, EventArgs e) /检测该窗口是否处于打开状态 if (this.checkchildfrm("frmLogin") = true) return; /窗口已经打开,返回 frmLogin user = new frmLogin();/实例化登录窗体 user.ShowDialog(); /登录窗体以模式对话框的方式的打开 /判断是否登录成功,登录成功则启用相应的菜单和按钮 if

35、(result = DialogResult.OK) this.tsbtnAddBook.Enabled = true; this.mnuUpdateBook.Enabled = true; this.mnuAddBook.Enabled = true; /登录按钮事件处理 private void tsbtnLogin_Click(object sender, EventArgs e) if (this.checkchildfrm("frmLogin") = true) return; frmLogin user = new frmLogin(); user.ShowDi

36、alog(); if (result = DialogResult.OK) this.tsbtnAddBook.Enabled = true; this.mnuUpdateBook.Enabled = true; this.mnuAddBook.Enabled = true; /图书查询按钮Click事件处理 private void tsbtnSearch_Click(object sender, EventArgs e) if (this.checkchildfrm("frmSearchBook") = true) return; frmSearchBook book

37、= new frmSearchBook(); book.MdiParent = this; /设置为当前窗体的子窗体 book.Show(); /图书检索菜单Click事件处理private void 图书检索ToolStripMenuItem_Click(object sender, EventArgs e) if (this.checkchildfrm("frmSearchBook") = true) return; frmSearchBook book = new frmSearchBook(); book.MdiParent = this; book.Show();

38、 /图书入库菜单Click事件处理private void 图书入库ToolStripMenuItem1_Click(object sender, EventArgs e) if (this.checkchildfrm("frmAddBook") = true) return; frmAddBook objbook = new frmAddBook(); objbook.MdiParent= this; objbook.Show(); /图书入库按钮Click事件处理 private void tsbtnAddBook_Click(object sender, EventA

39、rgs e) if (this.checkchildfrm("frmUpdateBook") = true) return; frmUpdateBook objbook = new frmUpdateBook(); objbook.MdiParent = this; objbook.Show(); /图书更新菜单Click事件处理 private void 图书修改ToolStripMenuItem_Click(object sender, EventArgs e) if (this.checkchildfrm("frmUpdateBook") = tr

40、ue) return; frmUpdateBook objbook = new frmUpdateBook(); objbook.MdiParent= this; objbook.Show(); /图书借阅按钮事件处理 private void tsbtnIssue_Click(object sender, EventArgs e) if (this.checkchildfrm("frmIssueBook") = true) return; frmIssueBook issuebook = new frmIssueBook(); issuebook.MdiParent= t

41、his; issuebook.Show(); private void tsbtnExit_Click(object sender, EventArgs e) Application.Exit(); private void 退出ToolStripMenuItem1_Click(object sender, EventArgs e) Application.Exit(); private void 退出ToolStripMenuItem_Click(object sender, EventArgs e) Application.Exit(); /窗体载入时事件处理 private void F

42、rmMain_Load(object sender, EventArgs e) this.tsbtnAddBook.Enabled = false; this.mnuAddBook.Enabled = false; this.mnuUpdateBook.Enabled = false;附录B 图书查询实现代码using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.T

43、ext;using System.Windows.Forms;namespace BookManage public partial class frmSearchBook : Form public frmSearchBook() InitializeComponent(); private void btnSerch_Click(object sender, EventArgs e) string cbo1 = this.cboOR.Text; string cbo2 = this.cboAnd.Text; string booktype = cboType.Text; string bo

44、okname = this.txtName.Text; string bookcontent = this.txtContent.Text; /定义sql语句 string sql = "select * from bookInfo where BookType='" + booktype + "' " + cbo1 + " BookName like '%" + bookname + "%' " + cbo2 + " BookContent like '%&quo

45、t; + bookcontent + "%'" /调用DataAccess.GetDataSetBySql方法 DataSet Myds = DataAccess.GetDataSetBySql(sql); DataTable table = Myds.Tables0; /指定数据源 this.dgvSearchBook.DataSource = table; private void frmSearchBook_Load(object sender, EventArgs e) /图书类别组合框初始化 DataSet Myds = DataAccess.GetDat

46、aSetBySql("select distinct BookType from bookInfo"); DataTable table = Myds.Tables0; for (int i = 0; i < table.Rows.Count; i+) this.cboType.Items.Add(table.Rowsi0.ToString().Trim(); cboType.SelectedIndex = 0; this.cboOR.SelectedIndex = 0; this.cboAnd.SelectedIndex = 0; private void btnC

47、lose_Click(object sender, EventArgs e) this.Close(); 附录C 图书借阅功能实现代码using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;namespace BookManage public partial class frmIssueBook : Form DataSet da; public frmIssueBook() nitializeComponent(); private void frmIssueBook_Load(object

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论