1、图书馆管理系统【摘要】设计重要是关于图书馆管理信息系统信息,特别是讨论了关于设计该系统时思想、办法和过程,以及在细节上分析函数和办法实现思想。在本论文中讲述图书馆管理信息系统拥有一种交互式界面、逻辑数据库构造。并且在设计数据库时还考虑到了实体完整性约束、参照完整性约束、及尽量减少数据冗余,在数据库里有涉及表、过程、函数、触发器等5个数据库对象。许多涉及到图书、读者信息功能在本系统中均有实现。例如,你可以将新书信息插入到数据库图书基本状况表里;还可以对已经插入关于图书信息进行修改;更重要是,读者可以从图书馆里借阅书籍。通过多次测试和运营,本系统能实现其在设计时所有功能。一需求分析阐明书引言随着计
2、算机技术不断应用和提高,计算机已经进一步到社会生活各个角落。为了满足图书馆管理人员对图书馆书籍,读者资料,借还书等进行高效管理,在工作人员具备一定计算机操作能力前提下,特编此图书管理系统软件以提高图书馆管理效率。1. 1编写目 本需求编写是为了研究图书管理系统软件开发途径和应用办法。同步它也是进行项目策划、概要设计和详细设计基本,是维护人员进行内部维护,信息更新,验收和测试根据。它必要服务于如下目的:(1) 便于顾客,分析人员和软件设计人员进行理解和交流。(2) 支持目的软件系统确认。(3) 控制系统进化过程。1.2 背景(1) 本软件名为”图书管理系统”(2) 提出者: 北京师范大学珠海分校
3、 主开发者:张秋杰(组长) ,刘焕青 实现该软件计算中心或计算机网络:基于各大院校之间BBS电子邮件系统,可与BBS电子邮件系统进行有选取信息互换,以实现网上对图书借阅和归还;并与打印机系统相连,以实现图书和读者记录信息打印1.3 定义 图书管理系统: 图书管理是协助图书馆管理人员对图书信息进行管理软件。1.4 参照资料 实用软件工程 第二版 赵池龙 电子工业出版社 软件工程基本教程郭庚麒 主编 科学出版社PowerDesigner系统分析与建模 赵韶平 罗海燕 李志等 清华大学出版社2 任务概述2.1 目的 该软件是为了能让图书管理员更以便管理图书,读者更以便借阅图书而写, 可应用于个大高校
4、图书馆. 本软件是独立软件。2.2 顾客特点 (1) 本软件最后顾客为个院校学生 (2) 本软件可以以便让借阅者查阅资料和图书信息2.3 假定和约束 假设开发经费不到位,管理不完善,设计时没能周全得到考虑,本项目开发都将受到很大影响。 在各项任务都完毕良好条件下,本系统才具备较强对的性,完善性,可移值性等。 本软件开发期限为 2个月3 需求规定 3.1 对功能规定 (1) 普通读者所具备权限,图书信息查询。(2) 普通读者所具备权限,可查询自己借阅信息,修改密码。(3) 管理员权限,读者信息管理。(4) 管理员权限,借书/还书登记。3.2 对性能规定 3.2.1 精度在精度需求上,依照使用需要
5、,在各项数据输入,输出及传播过程中,可以满足各种精度需求 3.2.2 时间特性规定在软件方面,响应时间,更新解决时间都比较快且迅速,完全满足顾客规定3.3 输入输出规定 (1) 图书书名、作者、或者出版社,即可得到相应图书信息。 读者输入图书书名、作者、或者出版社,系统配备文献为数据库中图书信息,通过查询即可得到该图书所有有关信息。如果输入内容不存在,则提示未找到,请重新输入。 屏幕显示图书所有有关信息。 (2) 输入其顾客名(为其学号),初始密码。即可登陆查看信息或修改密码。 读者输入其顾客名、密码后,系统配备文献为数据库中读者信息,通过比较判断顾客名、密码与否对的,如果对的则显示读者信息或
6、修改密码。如果错误,则提示顾客名或密码错误,请重新输入。 屏幕显示有关读者信息。(3) 输入管理员顾客名和密码登陆,然后即可增长或删除一种读者,查询或修改已有读者信息。管理员输入其顾客名、密码后,系统配备文献为数据库中管理员信息,通过比较判断顾客名、密码与否对的,如果对的则可进行读者信息管理。 屏幕显示读者信息。(4) 管理员权限,图书信息管理。 输入管理员顾客名和密码登陆,然后即可增长或删除一本书,查询或修改已有图书信息。 管理员输入其顾客名、密码后,系统配备文献为数据库中管理员信息,通过比较判断顾客名、密码与否对的,如果对的则可进行图书信息管理。 屏幕显示图书信息。(5) 管理员权限,借书
7、/还书登记。输入 读者学号,书条码。 借书:输入读者学号,从系统配备信息数据库查询读者信息并显示。输入书条码,存入读者信息借阅状况。书状态改为借出。还书:输入书码,从系统配备信息数据库查询读者信息并显示,将读者借阅本书状况删除,并将书状态改为在馆。输出书信息,读者信息。3.4 数据管理能力规定 要管理数据库共5个 表和文卷若干 如果借阅者超过100000人时 可将人员进行分开管理 3.5 其她专门规定3.5.1数据库需求 数据库是实既有组织地,动态地存储大量关联数据,以便多顾客访问计算机软硬自愿构成系统;她与文献系统重要区别是数据充分共享,交叉访问,与应用程序高度独立性。由于本软件整体构造比较
8、简朴,所涉及数据相对来说也较少,构成文献最小单位是记录。3.5.2 顾客操作需求a 初始化操作。b 数据解决操作。c 恢复操作。3.5.3 工作场地需求学校图书馆4 运营环境规定4.1 设备 运营该软件所合用品体设备是cpu 700Mhz 以上、内存64兆以上 4.2 支持软件 系统是 Microsoft windows xp计算机二、管理信息系统设计与开发管理信息系统简介管理信息系统(MIS)是由人,计算机等构成能进行信息收集,传送,存储,维护和使用系统,可以实测公司各种运作状况,并且运用过去历史数据预测将来,从公司全局角度出发辅助公司进行决策,运用信息控制公司行为,协助公司实现其规划目的。
9、管理信息系统重要功能(1) 信息解决 信息解决对组织数据和信息进行收集,存储,传播,加工,查询等操作,以实现向管理人员及时提供所需可靠,精确信息功能。(2) 辅助事务解决,辅助组织管理 辅助事务解决,涉及具备通用性事务管理和各类特殊事务管理。它深层次功能是辅助组织管理,控制组织行为,协助组织实现目的。(3) 支持决策 实测公司运营状况,预测公司将来行为,辅助公司决策人员进行决策是管理信息系统重要功能,管理信息系统重要是辅助构造化决策问题。管理信息系统设计原则(1) 实用性原则(2) 可扩展性原则与可维护性原则(3) 安全可靠性原则(4) 顾客界面设计原则(5) 数据库设计原则管理信息系统设计与
10、开发办法管理信息系统开发办法有软件工程办法,构造化生命周期开发办法,原型发,面向对象办法等。软件工程是指采用工程概念,原理,技术和办法来开发和维护软件,其核心内容是以工程化方式组织软件开发。软件项目开发应当遵循软件工程原则,这样可以提高软件开发效率,减少软件开发与维护中问题。软件生命周期涉及8个阶段:问题定义,可行性研究,需求分析,总体设计,详细设计,编码,综合测试,维护。信息管理系统所涉及数据库设计分五个环节:数据库需求分析、概念设计、逻辑设计、物理设计与加载测试。下面依照管理信息系统软件工程办法进行该系统设计开发平台:JBuilder9.0数据库工具:Oracle第一某些 系统设计一 系统
11、目的设计重要功能:书籍管理,读者信息管理,借书还书管理书籍管理:采购图书时,新书要登记入数据库 浏览数据库中书籍信息,提供各种方式数据查询读者信息管理:新读者加入时,增长一条读者记录 依照读者信息可以查询其有关借阅信息借书还书管理: 实现书籍借出还入管理 对有关信息进行添加,查询与修改二 功能模块划分第二某些 数据库设计1, 需求分析书籍信息:书号,书名,定价,出版社,出版时间,作者读者信息:编号,姓名,性别,工作单位,联系电话,已借册数借阅信息:借阅人,所借书,借出日期,归还日期2概念设计ER图3逻辑构造设计BookBorrow名称字段名称数据类型主键非空标记ID自动编号YesYes读者姓名
12、Studentname文本NoYes书籍名称Bookname文本NoNo借出日期Borrowdate文本NoNo还入日期Returndate文本NoNo备注Comment文本NoNoBooks名称字段名称数据类型主键非空标记ID自动编号Yes Yes书店Bookname文本NoYes出版社Press文本NoNo作者Author文本NoNo出版社地址Address文本NoNo出版日期Pressdate文本NoNo价格Price文本NoNo评论Comment文本NoNoUser名称字段名称数据类型主键非空标记ID文本YesNo顾客名Username文本NoYes密码Password文本NoYes权
13、限种别Power文本NoYes代码某些整体窗口/在窗体被打开时,先设定所有权限为false,使每一种操作员必要先登录才可以进行下一步操作,这样就有效地实现了权限登录某些地功能,保证了应用程序安全Void this_windowOpened(windowEvent e) setEnable(“false”); userLogin dlg=new userLogin(this); Dimension dlgsize=dlg.geyPreferredSize(); Dimension frmSize=getSize();Point loc=getLocation();Dlg.setLocation(
14、frmSize.width-dlgSize.width)/2+loc.x,(frmSize.height-dlgSize.height)/2+loc.y);Dlg.pack();Dlg.show(); /打开登录窗口Void jMenuItemLogin_actionperformed(ActionEvent e) userLogin dlg=new userLogin(this); Dimension dlgsize=dlg.geyPreferredSize(); Dimension frmSize=getSize();Point loc=getLocation();Dlg.setLocat
15、ion(frmSize.width-dlgSize.width)/2+loc.x,(frmSize.height-dlgSize.height)/2+loc.y);Dlg.pack();Dlg.show(); /打开添加顾客窗口Void jMenuItemUserAdd_actionperformed(ActionEvent e) userAdd dlg=new userAdd(); Dimension dlgsize=dlg.geyPreferredSize(); Dimension frmSize=getSize();Point loc=getLocation();Dlg.setLocat
16、ion(frmSize.width-dlgSize.width)/2+loc.x,(frmSize.height-dlgSize.height)/2+loc.y);Dlg.pack();Dlg.show(); /打开顾客密码修改窗口 Void jMenuItemUserUpdate_actionperformed(ActionEvent e) userUpdate dlg=new userUpdate(); Dimension dlgsize=dlg.geyPreferredSize(); Dimension frmSize=getSize();Point loc=getLocation();
17、Dlg.setLocation(frmSize.width-dlgSize.width)/2+loc.x,(frmSize.height-dlgSize.height)/2+loc.y);Dlg.pack();Dlg.show(); /打开顾客删除窗口Void jMenuItemUserUpdate_actionperformed(ActionEvent e) userUpdate dlg=new userUpdate(); Dimension dlgsize=dlg.geyPreferredSize(); Dimension frmSize=getSize();Point loc=getLo
18、cation();Dlg.setLocation(frmSize.width-dlgSize.width)/2+loc.x,(frmSize.height-dlgSize.height)/2+loc.y);Dlg.pack();Dlg.show(); /打开书籍信息添加窗口Void jMenuItemBookAdd_actionperformed(ActionEvent e) bookAdd dlg=new BookAdd(); Dimension dlgsize=dlg.geyPreferredSize(); Dimension frmSize=getSize();Point loc=get
19、Location();Dlg.setLocation(frmSize.width-dlgSize.width)/2+loc.x,(frmSize.height-dlgSize.height)/2+loc.y);Dlg.pack();Dlg.show(); /打开书籍信息更新窗口Void jMenuItemBookUpdate_actionperformed(ActionEvent e) bookUpdate dlg=new bookUpdate(); Dimension dlgsize=dlg.geyPreferredSize(); Dimension frmSize=getSize();Po
20、int loc=getLocation();Dlg.setLocation(frmSize.width-dlgSize.width)/2+loc.x,(frmSize.height-dlgSize.height)/2+loc.y);Dlg.pack();Dlg.show(); 打开书籍删除窗口Void jMenuItemBookDelete_actionperformed(ActionEvent e) userUpdate dlg=new userUpdate(); Dimension dlgsize=dlg.geyPreferredSize(); Dimension frmSize=getS
21、ize();Point loc=getLocation();Dlg.setLocation(frmSize.width-dlgSize.width)/2+loc.x,(frmSize.height-dlgSize.height)/2+loc.y);Dlg.pack();Dlg.show(); 打开书籍借出窗口Void jMenuItemBookBorrow_actionperformed(ActionEvent e) bookBorrow dlg=new bookBorrow(); Dimension dlgsize=dlg.geyPreferredSize(); Dimension frmS
22、ize=getSize();Point loc=getLocation();Dlg.setLocation(frmSize.width-dlgSize.width)/2+loc.x,(frmSize.height-dlgSize.height)/2+loc.y);Dlg.pack();Dlg.show(); 打开书籍借出信息修改窗口Void jMenuItemBookBorrowUpdate_actionperformed(ActionEvent e) bookBorrowUpdate dlg=new bookBorrowrUpdate(); Dimension dlgsize=dlg.gey
23、PreferredSize(); Dimension frmSize=getSize();Point loc=getLocation();Dlg.setLocation(frmSize.width-dlgSize.width)/2+loc.x,(frmSize.height-dlgSize.height)/2+loc.y);Dlg.pack();Dlg.show(); 打开书籍还入窗口Void jMenuItemBookReturn_actionperformed(ActionEvent e) returnBook dlg=new returnBook(); Dimension dlgsize
24、=dlg.geyPreferredSize(); Dimension frmSize=getSize();Point loc=getLocation();Dlg.setLocation(frmSize.width-dlgSize.width)/2+loc.x,(frmSize.height-dlgSize.height)/2+loc.y);Dlg.pack();Dlg.show(); 打开书籍还入信息修改窗口Void jMenuItemBookreturnUpdate_actionperformed(ActionEvent e) returnInfoUpdate dlg=new returnI
25、nfoUpdate(); Dimension dlgsize=dlg.geyPreferredSize(); Dimension frmSize=getSize();Point loc=getLocation();Dlg.setLocation(frmSize.width-dlgSize.width)/2+loc.x,(frmSize.height-dlgSize.height)/2+loc.y);Dlg.pack();Dlg.show(); 打开所有书籍列表窗口Void jMenuItemAllBook_actionperformed(ActionEvent e) bookList dlg=
26、new bookList(); Dimension dlgsize=dlg.geyPreferredSize(); Dimension frmSize=getSize();Point loc=getLocation();Dlg.setLocation(frmSize.width-dlgSize.width)/2+loc.x,(frmSize.height-dlgSize.height)/2+loc.y);Dlg.pack();Dlg.show(); /设立权限Public void setEnable(String powertype) If(powertype.equals(“管理员”);
27、jMenuuserManager.setEnabled(true); jMenuBookManager.setEnabled(true);jMenuBorrowBook.setyEnabled(true);jMenuReturnBook.setyEnabled(true);jMenuAllInfo.setEnabled(true);Else If(powertype.equals(“书籍操作员”); jMenuuserManager.setEnabled(false); jMenuBookManager.setEnabled(true);jMenuBorrowBook.setyEnabled(
28、false);jMenuReturnBook.setyEnabled(false);jMenuAllInfo.setEnabled(true);Else If(powertype.equals(“借阅操作员”); jMenuuserManager.setEnabled(false); jMenuBookManager.setEnabled(false);jMenuBorrowBook.setyEnabled(true);jMenuReturnBook.setyEnabled(true);jMenuAllInfo.setEnabled(true);Else jMenuuserManager.se
29、tEnabled(false); jMenuBookManager.setEnabled(false);jMenuBorrowBook.setyEnabled(false);jMenuReturnBook.setyEnabled(false);jMenuAllInfo.setEnabled(false);Void jMenuFileExit_actionPerformed(ActionEvent e) System.exit(0);一操作员管理/操作员登录模块Import Java.sql;ResultSet rs;Private DBManager db=new DbManager();Bo
30、okManagerMain myMain;Public userLogin(BookManagerMain bMain) This(null,”,false); myMain=bMain;/顾客登录Void jButtonOK_mOuseClicked(MouseEvent e)If(jTextFieldusername.getText.trim().equals(“”) JOptionPane.showMessageDialog(null,”顾客名不可为空”); Return;If(jPassword.getText().trim().equals(“”) JOptionPane.showM
31、essageDialog(null,”密码不可为空”); Return;String strSQL;strSQL=”select *from user where Username=”+ jTextFieldusername.getText.trim()+”and Password=”+(jPassword.getText().trim()+”;rs=db.getResult(strSQL);Boolean isexist=false;Try Isexise=rs.first();Catch(SQLException ex)If(!isexist) JOptionPane.showMessag
32、eDialog(null,”顾客名不可为空或密码不对的”); myMain.setEnabled(“false”);ElseTry Rs.first();myMain.setEnable(rs.getStrin(:Power”.trim();this.dispose();Catch(SQLException ex)Void jButtonCancel_mouseClicked(MouseEvent e) myMain.setEnable(“false”); this.dispose();/操作员密码修改Import java.sql;ResultSet rs;Private DBManager
33、 db=new DBManager;Void jButtonOKClicked(MouseEvent e) String strSQL; If(jFieldusername.getText().trim().equals(“”0) JOptionPane.showMessageDialog(null,”顾客名不许为空”); Return; If(jPassword.getText().trim().equals(“”) JOptionPane.showMessageDialog(null,”密码不可为空”); Return;If(!jPasswordnewconfirm.getText().t
34、rim().equals(jPasswordnew.getText().trim() JOptionPane.showMessageDialog(null,”两次输入密码不一致”); Return;strSQL=”select *from user where Username=”+ jTextFieldusername.getText.trim()+”and Password=”+(jPassword.getText().trim()+”;rs=db.getResult(strSQL);Boolean isexist=false;Try Isexise=rs.first();Catch(SQ
35、LException ex)If(!isexist) JOptionPane.showMessageDialog(null,”顾客名不可为空或密码不对的”); myMain.setEnabled(“false”);Else strSQL=”update user set Password=”+jPasswordnew.getText().trim()+”where Username=”+jFieldusername.getText().trim()+”; if(db.executeSql(strSQL) JOptionPane.showMessageDialog(null,”成功更新”);El
36、se JOptionPane.showMessageDialog(null,”更新失败,请重新操作!”); Void jButtonCancel_mouseClicked(MouseEvent e) This.dispose();二,书籍信息管理/添加书籍信息Private DBManager db=new DBManager();/添加一条新记录Void jButtonAdd_mouseClicked(MouseEvent e)If(jTextFieldname.getText().trim().equals(“ “) JOptionPane.showMessageDlg(null,”书名不
37、许为空”); Return;If(jTextFieldauthor.getText().trim().equals(:J) JOptionPane.showMessageDialog(null,”作者不许为空”); Return;If(jTextFieldpress.getText().trim().equals(“ “) JOptionPane.showMessageDialog(null,”出版社不许为空”); Return;If(jTextFieldprice.getText().trim().equals(“ “) JOptionPane.showMessageDialog(null,
38、”价格不许为空”); Return;String strSQL;strSQL=” insert into Books(Bookname,Press,Authir,Address,Pressdate,Price,Comment)”;strSQL=strSQL+”values(”+jTextFieldname.getText().trim()+”,”+jTExtFieldpress.getText().trim()+”,”;strSQL=strSQL+”+jTExtFieldauthor.getText().trim()+”,”+jTextFieldaddress.getText().trim()
39、+”,”;strSQL=strSQL+”+jTextFieldpressdate.getText().trim()+,”+jTextFieldprice.getText().trim()+”,”;strSQL=strSQL+” ”+jTextFieldcomment.getText().trim(0+”)”;if(db.executeSql(strSQL) JOptionPane.showMessageDialog(null,”成功添加”);ElseJOptionPane.showMessageDialog(null,”添加失败,请重新操作”);/清空Void jButtonClear_mou
40、xeClicked(MouseEvent e) jTextFieldname.setText(“”); jTextFieldperson.setText(“”);jTextFielddep.setText(“”);jTextFielddanwei.setText(“”);jTextFieldprice.setText(“”);jTextFieldcomment.setText(“”);/退出窗口Void jButtonExit_mouseClicked(MouseEvent e) This.dispose();/删除书籍信息Imort java.sql;ResultSet rs;Private
41、 DBManager db=new DBManager();Void jButtonOK-mouseClicked(MouseEvent e) String strSQL; If(jTextFieldname.getText.trim().equals(“”) JOptionPane.showMesageDialog(null,”书名不许为空”); Return; strSQL=”select *from Books where Bookname=”+jTextFieldname.getText().trim()+”; rs=db.getResult(strSQL); Boolean isex
42、ist=false; Try Isexist=rs.first(); Catch(SQLException ex1)If(!isexist)JOptionPane.showMessageDialog(null,”此书不存在”);Else strSQL=”delete from Books where Bookname=”+jTextField.getText().trim()+”;if(db.executeSql(strSQL) JOptionPane.showMessageDialog(null,”成功删除”);Else JOptoinPane.showMesageDialog(null,”删除失败”); /退出此窗口Void jButtonCancel_mouseEvent(MouseEvent e) This.dispose();三 书籍借出管理Import java.sql;ResultSet rs;Private DBManager db=new DBManager();Void jButtondeciside-mouseClicked(MouseEvent e) String sql; If(jTextstudentname.getText().trim().length()=0&jTextbookname.getText90.trim().length()=0)J