《书籍借阅管理系统的分析与设计》一、开发背景本系统是为了方便用户对图书的管理开发的。
要求系统界面友好,使用简单,提供对图书信息、读者信息和图书流通情况的编辑、查询、统计报表等全面的数据管理功能,同时使用户能方便的进行图书的出借、返还等操作,并提供预约、续借,馆际互借等功能。
此外系统还具有一定的安全性和可维护性。
可行性分析:(1)技术可行性近几年来计算机技术发展异常迅猛,高速度大容量的电脑已成为许多学校里日常工作必不可少的设备,随着办公自动化的软件不断涌现,微机的普及为该系统的开发奠定了坚实的基础。
(2)经济可行性一方面,系统的开发不需要额外增加设备购置费、软件开发费、管理和维护费用。
另一方面,系统的开发可以较好地解决图书馆因日常事务繁杂而造成的处理效率低,出错率偏高的局面,并可以及时了解各项日常事务的进展情况,为及时调整库存资料提供可靠的数据支持,从而明确工作目标,同时还可以减少人工劳动、提高工作效率、增加书本流通量。
(3)操作可行性计算机以强大的信息处理能力作为人类脑力劳动的有利助手登上历史舞台后,已渗透到社会生活的各个领域,使现代社会组织、特别是企业,学校的信息处理能力适应现代化管理的要求,且系统逐步从单项事务信息处理系统迅速向综合服务(决策支持系统)的管理信息系统发展。
本系统使用界面良好,易于操作。
图书馆拥有一批较高素质的员工,只需了解相关知识,就可熟练操作本系统了。
通过以上分析,图书馆管理信息系统的开发在经济上、技术上、操作上都是可行的。
二、需求分析系统协助图书馆管理员实现各种日常事务的管理。
系统维护数据库,保存图书和读者的资料以及图书流通情况的资料,便于管理员管理图书和读者的有关数据,还可根据需要随时进行数据的查询和统计并按所需格式和方式输出。
利用这些数据,系统可协助管理员进行读者的图书出借、返还、预约和续借等操作,读者身份认证和借书权限认证等都可由系统承担,大大减轻了管理员的工作量。
此外,对于系统本身的维护,系统具备一定的安全机制和信息备份机制,对用户分级管理,设置用户权限,保证系统安全性;提供数据库文件的备份功能,按用户要求备份,防止意外数据丢失影响系统工作。
通过需求分析,系统应具备以下功能,具体描述如下:(1)图书信息维护:主要完成图书馆新进图书的编号、登记、入馆等操作。
(2)读者信息维护:主要是完成读者信息的添加、修改和删除等操作,只有是系统中的合法读者才有资格进行图书的借阅活动。
(3)借书/还书处理:主要完成读者的借书和还书活动,记录读者借还书情况并及时反映图书的在库情况。
(4)读者借阅记录:让每位读者能及时了解自己的借书情况,包括曾经借阅记录以及未还书记录。
(5)图书书目检索:读者能够根据不同的信息(如书名、作者、关键词等)对图书馆的存书情况进行查找,以便快速的找到自己希望的图书。
(6)图书超期通知:为图书管理员提供一个统计信息,能够统计出到目前为止逾期未归还的图书及相应的读者信息。
三、业务流程图四、数据流图与数据字典根据系统功能描述,采用面向数据流的分析方法,绘制出系统的数据流图。
1、数据流图(1)借阅系统的数据流图:(2)归还系统的数据流图:(3)图书档案管理数据流图:(4)读者档案管理数据流图:2、数据字典数据流的描述:数据流编号: D001数据流名称:借阅信息简述:读者所要借阅的图书信息单数据流来源:读者数据流去向:读者信息判断数据流组成:读者号+索书号+书名等数据流量:1000/天高峰流量:3000/天数据流编号: D002数据流名称:还书信息简述:读者归还所借图书的信息单数据流来源:读者信息判断数据流去向:库存表数据流组成:读者号+读者名+图书信息等等数据流量:100/天高峰流量:500/天......数据流编号: D003数据流名称:图书档案信息简述:管理员对图书档案库进行更新的信息单数据流来源:管理员信息判断数据流去向:图书档案库数据流组成:管理员+图书档案信息等数据流量:1000/天高峰流量:3000/天......数据流编号: D004数据流名称:读者档案信息简述:管理员对读者档案库进行更新的信息单数据流来源:读者信息判断数据流去向:读者档案库数据流组成:管理员+读者信息等数据流量:50/天高峰流量:300/天五、系统功能设计根据数据流图,绘制出系统功能的层次图各功能模块的功能描述:读者管理子系统:用于管理读者的信息包括合法读者和非法读者的信息。
图书管理子系统:用于管理图书档案及图书类型。
图书借还管理子系统:用于管理被借图书及归还图书和借阅者的信息。
查询服务子系统:用于查询图书档案及借阅信息。
六、数据库设计1、E-R图根据系统数据流图和数据字典,得出系统的各局部概念模型(E-R)和总体概念模型(E-R)如下图所示。
图书信息实体属性E-R图:读者信息实体属性E-R图:管理员实体属性E-R图:名称编号管理员密码全局各E-R图各实体的属性如下所示:图书:(图书图书条形码, 图书名称, 作者, ,译者,价格,图书类型, 页码,书架,入馆时间, 存储数量, 操作员)读者:(读者编号, 名称, 性别, 读者类型, 生日,证件类型,证件号,,E-MAIL,注册日期,操作员,备注,借阅次数)管理员:(管理员编号, 名称, 密码)各E-R图中联系的属性如下所示:借还:(借阅时间, 还书时间 )管理:(添加,修改,删除)2、关系模式的3NF设计根据系统的总体概念设计模型、E-R图向关系模式的转化规则和数据库的式理论,得到系统优化后的逻辑模型。
图书信息表(图书图书条形码, 图书名称, 作者, ,译者,价格,图书类型, 页码,书架,入馆时间, 存储数量, 操作员)读者信息表(读者编号, 名称, 性别, 读者类型, 生日,证件类型,证件号,,E-MAIL,注册日期,操作员,备注,借阅次数)管理员信息表(管理员编号, 名称, 密码)借阅信息表(借书编号,读者编号,图书条形码,借书时间,还书时间,借书操作,还书操作,是否归还)七、系统实施1、系统界面遵循人-机界面的设计原则设计应用系统界面。
本系统主要界面运行实时截图如下:当输入正确的用户名,会进入系统:输入图书的编号,查询相关信息:主界面运行情况:修改图书信息:借书处理:2、系统的主要源代码:登陆代码:private void button1_Click(object sender, System.EventArgs e) {if (userid.Text == ""){MessageBox.Show(this, " 用户名不能为空 ", "提示信息", MessageBoxButtons.OK, rmation);}else{string url = "DataSource=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\数据库\book_Data.MDF;Integrated Security=True;User Instance=True";string sql = "Select* from username where username=name and password=password";SqlConnection conn = new SqlConnection(url);SqlCommand cmd = new SqlCommand(sql, conn);SqlDataReader red = null;cmd.Parameters.Add("name", SqlDbType.VarChar, 30);cmd.Parameters.Add("password", SqlDbType.Char, 30);cmd.Parameters["name"].Value = userid.Text;cmd.Parameters["password"].Value = textboxpass.Text;try{conn.Open();red = cmd.ExecuteReader();if (red.Read()){try{MessageBox.Show(this, " 欢迎进入本系统 ", "提示信息", MessageBoxButtons.OK, rmation);FormMain fmMain = new FormMain();fmMain.ShowDialog();erid.Text = "";this.textboxpass.Text = "";erid.Focus();this.Close();}catch (Exception e2){System.Console.WriteLine(e2);}}else{MessageBox.Show(this, " 密码有误 ", "提示信息",MessageBoxButtons.OK, rmation);}}catch (Exception e1){MessageBox.Show(e1.Message);}}}查询代码:private void button6_Click(object sender, System.EventArgs e) {int n=0;switch(tabControl1.SelectedTab.Text){case"按编号查询":n=dataGrid6.CurrentRowIndex;if(n!=-1)booknum=dataSet41.Tables["book"].Rows[n]["图书编号"].ToString().Trim();break;case"按书名查询":n=dataGrid2.CurrentRowIndex;if(n!=-1)booknum=dataSet41.Tables["book"].Rows[n]["图书编号"].ToString().Trim();break;case"按类别查询":n=dataGrid3.CurrentRowIndex;if(n!=-1)booknum=dataSet41.Tables["book"].Rows[n]["图书编号"].ToString().Trim();break;case"按作者查询":n=dataGrid4.CurrentRowIndex;if(n!=-1)booknum=dataSet41.Tables["book"].Rows[n]["图书编号"].ToString().Trim();break;case"按查询":n=dataGrid5.CurrentRowIndex;if(n!=-1)booknum=dataSet41.Tables["book"].Rows[n]["图书编号"].ToString().Trim();break;}this.DialogResult=DialogResult.OK;this.Close();}private void textBox2_TextChanged(object sender, System.EventArgs e) {}private void button2_Click(object sender, System.EventArgs e){SqlCommand mycomm=sqlConnection1.CreateCommand();if(textBox2.Text==""){mandText="select * from book";}else{string bookName="%"+textBox2.Text.Trim()+"%";mandText="select * from book where 书名like'"+bookName+"'";}sqlDataAdapter2.SelectCommand=mycomm;dataSet41.Clear();sqlConnection1.Open();int n=sqlDataAdapter2.Fill(dataSet41,"book");sqlConnection1.Close();if(n==0){MessageBox.Show("无此书名!","查询信息");textBox2.Text="";textBox2.Focus();}}private void textBox1_TextChanged_1(object sender, System.EventArgs e) {}private void button1_Click(object sender, System.EventArgs e){SqlCommand mycomm=sqlConnection1.CreateCommand();if(textBox1.Text==""){mandText="select * from book";}else{string bookNo=textBox1.Text;mandText="select * from book where 书名=bookNo";}sqlDataAdapter2.SelectCommand=mycomm;dataSet41.Clear();sqlConnection1.Open();int n=sqlDataAdapter2.Fill(dataSet41,"book");sqlConnection1.Close();if(n==0){MessageBox.Show("无此图书编号!","查询信息");textBox1.Text="";textBox1.Focus();}}}}…………3、开发过程中遇到的技术问题以及解决方法开发过程中遇到要建立数据库的问题,采用的解决方法是用SQL Server 软件来完成。