1、(word完整版)JAVA的图书管理系统的设计与实现摘 要随着计算机及网络技术的飞速发展,Internet/Intranet应用在全球范围内日益普及,当今社会正快速向信息化社会前进,信息自动化的作用也越来越大。从而使我们从繁杂的事务中解放出来,提高了我们的工作效率。目前学校图书馆的借阅工作部分还是手工管理,工作效率很低,并且不能及时了解图书的种类和学生们比较需求的图书等,不能更好的适应当前学生的借阅要求。手工管理还存在这许多弊端,由于不可避免的人为因素,造成数据的遗漏、误报.计算机信息化管理有着储存量大,速度快等许多优点,提供给我们的处理信息及时快捷,因此我们利用计算机提供给我们的信息对学生们
2、的借阅过程形成一整套动态的管理。本系统将会涉及到图书馆日常管理工作的基本常见细节,诸如新图书的入库登记,图书馆所有书籍的分类管理,图书的查询,图书的借阅、退还手续的登记,费旧图书的清理撤除等,本系统所要实现的这些功能基本上涵盖了图书馆的日常管理工作,基本能够满足校园图书馆的工作人员的管理需要.在对本系统的具体开发过程当中,将采用Java语言进行开发,以Access实现后台数据库,本系统是完全基于图形化用户界面(GUI)的单机版本。【关键字】信息化 软件工程 软件生命周期 图形化用户界面AbstractThe full name of our System is: The Management
3、Information System of Campuss Library. At present, the computer technology is developing ever-growing, and the campuss information construction also have pushing on, by contrast, the method of management in many university library is still by man, the libraryworkers must face to the large number of
4、books, and also face to fall into the trouble。 Actually, the work can be done by the computer which have a management information system. Then the heavy work will not be done by people, the libraryworkers can use computer to manage the books, and the everyday work will be easy。This is the goal which
5、 our system want to achieve finally。The principle of development to our system will be following with Software Engineering, we use the traditional model which be called Waterfall, and the course of development will be divided into six stage。 We will develop the system in sequence。Our system contains
6、 many operations about librarys everyday work, such as Register New Books, Classify Books according to their subjects, Find Books, Dispose old books, and so on, our system can finish all of the work, and can meet the requirements of the librarysworkers。During the development of our system, we use th
7、e tool of JAVA to develop it, our system is on the basis of the Access Database.【KeyWords】Management Information System, Software Engineering, Ja 一 引论(一)问题的定义首先,图书馆的管理直接关系到在校大学生如何更好的使用图书,更充分的利用现有资源学习,提高自身素质。针对当今的大学图书馆藏书越来越多,学生借书越来越频繁,图书管理较为繁琐,图书馆管理工作人员付出的工作时间越来越多,得到的效率却很低这个现状.为提高工作效率,减轻图书馆工作人员的工作负担,
8、决定开发学校图书馆管理系统软件,以帮助更好的实现图书馆的管理,让我们能更便捷的借阅图书,让老师能花最少的时间办理好借阅图书手续。 开发此图书馆管理系统软件,以供图书馆工作人员管理使用及学生和老师查询或者借书使用,方便操作者随时添加、查询、修改等。为了我们提高软件开发的能力,学习JAVA编程的技巧,提高工作设计思想,通过本次的软件工程开发,开发人员与指导老师,能从中学习知识吸取经验,在技术和软件思想上同时得到锻炼和提高,从而使总体水升到一个新的高度.开发此图书馆管理系统软件,也是对实现数字化图书馆管理的支持,现今各大学普遍存在着一个现象,图书的借阅手续都是由专门的老师来实现办理的,每当借阅高峰期
9、时,排队借书的场面屡见不鲜,这样即耗费时间又使原本不太大的借书大厅拥挤不堪。图书馆管理系统的实现,可以着眼于数字化借阅,简化学生图书查询流程,简化图书外借登记手续,即提高借阅效率又可实现图书借阅的完整进出记录,保证图书的合理使用,让广大师生受益. (二) 可行性分析(1) 技术可行性图书借阅系统的建立,需要进行用户需求调查与分析,以确定系统目标,提出解决问题的详细方案,这是系统建设的重要环节。要想使学生能够有效的借阅,功能上对系统的要求是全面的.因此对用户的需求可分为三个方面:一方面是图书管理人员对需要进行图书借阅的同学进行信息注册,获得借书证;二方面是学生通过计算机进行图书浏览;三方面是学生
10、通过计算机进行图书借阅。这三个方面形成了图书借阅的一个工作整体,利用计算机的自动化处理,可方便快捷地共享信息、交流信息,高效地协同工作.在软硬件方面对系统的需求,软件要求易学,界面友好,容易掌握,可以很简单方便的进行图书借阅信息管理.硬件的配置要求不能太高,这样可以很好的适应当前的学校图书馆的借阅。图书馆长期的人工管理工作所投入的人力物力财力是相当之多的,本系统的建设成功,将在这几个方面大大节省资源,更重要的是,系统带来的轻松、便捷,使图书馆的日常管理工作不再那么烦琐。从个人价值上看,本系统的开发成功亦是对本人长期学习成果的一种检验和一次实践,在个人能力水平上得到了很好的锻炼和提高,其价值也是
11、明显的。由于本系统管理的对象单一,都是校图书馆里的书,且每个数据内容具有较强的关联性,涉及的计算过程不是很复杂。因此,比较适合于采用数据库管理。且学校用于图书馆管理的都是个人计算机,在存储量、速度方面都能满足数据库运行的要求。在技术难度方面,由于有指导老师的指导和相关参考文献,特别是网上资料,特别是参考其它程序的功能,因此完全可以实现。本系统的设计是在Windows XP中文版操作系统环境下,使用 Java中文版开发成功的。数据库是MIS中的重要支持技术,在MIS开发过程中,如何选择数据库管理是一个重要的问题,目前,数据库产品较多,每种产品都具有各自的特点和适用范围,因此,在选择数据库时,应考
12、虑数据库应用的特点及适用范围,本系统所使用的后台数据库是Access数据库。本系统选用的开发语言介绍如下:选择了美国SUN公司推出的Java开发工具。Java 是第一个全面支持面向对象程序设计的数据库语言工具。Java的主要特点有:1、语言是简单的、小型的、结构中性的2、强大的数据库开发功能3、扩大了对SQL语言的支持4、是面向对象的、高性能的、多线程的5、是分布式的、面向网络6、具有平台无关性7、语言具有可移植性、是动态的(2) 经济可行性此系统在开发方式上对系统的需求,由于学校图书馆的借阅是一种无商业利益的,所以系统设计开发的周期要短,在短时间内完成,减少开发成本,提高开发效率,方便、简单
13、、实用是作为系统开发的指导思想.本系统完全能够在校园图书馆管理工作中发挥重要作用,而作为个人,能在软件开发能力方面得到锻炼和提高也是十分重要的,本系统在此不注重任何社会经济目标。二 需求分析设计数据库系统时,应该充分了解用户各方面需求,包括现有的以及将来可能增加的需求,数据库设计一般包括以下几个步骤:1、数据库需求分析2、数据库概念结构设计3、数据库逻辑结构设计数据库需求分析用户的需求具体体现在各种信息的提供,保存,更新和查询。这就要求数据库的结构能充分满足各种信息的输入和输出。在仔细分析调查有关图书馆管理信息需求的基础上设计出如图所示的数据流程。(1) 数据流图(1)、顶 层 数 据 流 图
14、 查 询图书名/号图书库图书名/号 借 书注册信息借书证学生注册图书名/号学生库图书名/号 还 书 学 生借 书 证 图3-1 数据流图(2)、0层数据流图毕业生借书证注销借书证借书库将借书证设置为借书状态可借书 学生信息是否有效有 效图书名/号图书名/号图书名/号借书证无效办理借书证有效还书库 可还书当前日期 图32 数据流图针对图书馆管理系统的需求,通过对图书馆管理工作过程的内容和数据流程分析,设计出如下的数据项、图书入库信息,包括数据项有:图书编号、书名、图书类别、出版日期、出版社名称、作者、定价、入库总数。学生信息,包括数据项有:学生学号、姓名、性别、系别、班级、图书查询信息,包括数据
15、项有:图书编号、书名、图书类别、出版日期、出版社名称、作者、定价、入库总数。、借书信息,包括数据项有:图书编号、书名、学生学号、姓名、系别、班级、是否归还。(2) 数据库逻辑结构设计图书馆管理系统中数据库的各个表格设计结果如下:(1)、图书入库信息表列名数据类型说明BookNoChar图书编号BookNameText书名BookClassText图书类别BookPubText出版社AuthorText作者BookTotalInt入库总数PriceCurrency图书定价IsorinBoolean是否在书库中的标志BookbirthDate图书入库的日期BookdemoText图书的简单介绍 表
16、3-1 图书入库信息表(2)、学生信息表列名数据类型说明StuNOInt学生的学号,唯一StuNaneChar学生姓名StuSexBoolean性别StuSpecialText学生系别StuClassChar学生所在班级 表3-2学生信息表(3)、用户信息表列名数据类型说明UserNameChar用户姓名PasswordChar用户密码UserTypeChar用户类型 表33 用户信息表(4)、图书信息表列名数据类型说明BookNOInt图书编号BookNameText图书名称BookTotalInt剩余库存量BookDateDate借书日期ReaderNoInt图书证号码 表3-4图书信息表
17、(3) 数据库概念结构设计得到上面的数据项就能够设计出以下各种实体以及它们的关系。设计规划出的实体有:图书信息实体、学生信息实体、管理员信息实体。E-R图如下:学生姓名学生学号系别班级性别借图书书名入库总数作者出版社名称出版日期定价图书类别图书编号办理管理员姓名编号性别 图33 E-R图三 系统设计(一)总体设计本课题设计在充分进行用户需求分析的基础上把系统划分为九个子模块:用户登陆、学生注册、图书入库、图书查询、图书删除、图书借阅、办理登记、借书证注销、用户退出。这九个模块之间,紧密结合,共享信息资源,形成一种完美的学校图书馆借阅管理的解决方案。如图41图书馆管理信息系统图书删除图书查询图书
18、入库图书借阅办理登记借书证注销用户退出用户登陆用户注册读者还书图4-1 系统功能结构图(二)详细设计(1)各个模块的介绍1、 学生注册:工作人员通过本系统对学生进行信息注册,发放借书证;2、 用户登陆:工作人员用管理员用户登陆,学生用普通用户登陆;3、 图书入库:工作人员通过本系统输入图书信息;4、 图书删除:工作人员通过此模块删除无用的图书信息;5、 图书查询:学生们通过此模块来查询自己所需要的图书;6、 读者借书:学生通过此模块来完成借阅图书;7、 读者还书:学生通过此模块来完成退还图书;8、 办理登记:图书管理人员通过此模块来完成借书证办理;9、 借书证注销:图书管理人员通过此模块来完成
19、借书证注销;10、用户退出:退出此系统.(2)流程图 start 学生注册填写注册表 图书入库 学生库 图书信息录入发放借书证N 借书 还书 图书信息管理Y输入图书名/号 图书库此书是否存在NY正常借书,并将借书证设置为借书状态 end 图5-1 系统流程图(3)数据字典(1)、名字:注册信息别名: 描述:定义:注册信息=学生学号+ 系+级+班+姓名 位置:学生信息表(2)、名字:图书别名:图书信息描述:标识图书的一些相关信息定义:图书信息=书名+作者+出版社名+出版日期+图书编号+图书类别+入库总数+定价位置:图书信息表(3)、名字:入库总数别名:描述:图书管所买进图书的总数定义:入库总数=
20、1数字100位置:图书信息表(4)、名字:剩余库存量别名:描述:在书被借出时,图书库里所剩的图书总数定义:剩余库存量=1数字100位置:图书信息表(5)、名字:图书证号码别名:借书证编号描述:唯一标识借书证的关键字定义:图书证号码=1数字8位置:图书信息表(6)、名字:用户姓名别名:用户名描述:用户的登录名定义:用户姓名=字母字符+字母数字串位置:用户信息表(7)、名字:图书编号别名:ISBN描述:图书的条形码定义:图书编号=字符串+字母数字串 字母数字串=0字母或数字9位置:图书信息表(8)、名字:学生的学号别名:学号描述:唯一标识学生的关键字定义:学生的学号=1数字8位置:学生信息表(4)
21、代码实现1、系统默认界面2、系统登陆界面部分代码如下: public Login() JLabel l1=new JLabel(用户名:”); JLabel l2=new JLabel(密 码:”); JLabel l3=new JLabel(”请选择用户类型:”); JButton b1=new JButton(”确定”); JButton b2=new JButton(”取消”); JButton b3=new JButton(”新用户注册); t1.setText(”); t1.setEditable(false); t2。setEditable(false); t2.setText(”
22、); t2。setEchoChar(); ch.add(”-); ch.add(系统管理员); ch。add(普通用户”); JPanel p=new JPanel(new BorderLayout(); JPanel g=new JPanel(new GridLayout(4,1); JPanel j=new JPanel(new FlowLayout(); j。add(b1); j.add(b2); j。add(b3); p.add(j,BorderLayout。SOUTH);3、登陆后的界面4、图书录入界面部分代码:public InputBook() JLabel l1=new JLa
23、bel(图书编号:”); JLabel l2=new JLabel(图书名称:”); JLabel l3=new JLabel(图书类别:”); JLabel l4=new JLabel(图书出版日期:”); JLabel l5=new JLabel(”出版社名称:); JLabel l6=new JLabel(”图书入库总数:); JButton b1=new JButton(”入库登记”); JButton b2=new JButton(”重 置); ch.add(”-”); ch.add(”计算机类); ch。add(医学类”); ch。add(农业类); ch。add(”文学类); c
24、h.add(工程类”); Container c=f.getContentPane(); c.setLayout(new BorderLayout(); JPanel p=new JPanel(new BorderLayout()); JPanel g=new JPanel(new GridLayout(7,1)); JPanel j=new JPanel(new FlowLayout());5、图书查询界面部分代码:try Class。forName(”sun。jdbc.odbc.JdbcOdbcDriver”); catch(ClassNotFoundException e) System
25、.out.println(”SQLException:”+e.getMessage(); try Connection conn=DriverManager.getConnection(”jdbc:odbc:Library); Statement stmt=conn.createStatement(); ResultSet rs=stmt.executeQuery(select * from book”); while(rs.next() if(t1。getText().equals(rs。getString(BookNo”) t2.setText(rs.getString(BookName)
26、; t3.setText(rs。getString(”BookBirth); t4。setText(rs。getString(”BookTotal”); t5.setText(”); else if(t1。getText()。equals(”)) JOptionPane.showMessageDialog(null,”请输入您要查找的图书!, 警告,JOptionPane.WARNING_MESSAGE); break; rs.close(); stmt。close(); conn.close(); catch(SQLException ex) JOptionPane.showMessageD
27、ialog(null,ex.getMessage(), 警告,JOptionPane.WARNING_MESSAGE); 6、图书删除界面部分代码:/删除图书按钮事件 bt2.addActionListener(new ActionListener() public void actionPerformed(ActionEvent E) tryClass.forName(”sun。jdbc.odbc.JdbcOdbcDriver”); catch(ClassNotFoundException e)System.out.println(”SQLException: +e。getMessage()
28、; tryif(t1。getText().equals(”)) JOptionPane.showMessageDialog(null,删除失败!请输入您要删除的图书, 提示信息,JOptionPane.INFORMATION_MESSAGE);elseConnection conn = DriverManager。getConnection(jdbc:odbc:Library);Statement stmt = conn。createStatement();if(JOptionPane.showConfirmDialog(null,”单击是删除该记录,单击否取消该操作!”,警告”,JOptio
29、nPane。YES_NO_OPTION,JOptionPane.WARNING_MESSAGE)=JOptionPane.YES_OPTION)String sql = delete from book where BookNo=+t1。getText()+;stmt.executeUpdate(sql);JOptionPane.showMessageDialog(null,该条记录已被删除成功!”, ”提示信息”,JOptionPane。INFORMATION_MESSAGE);stmt.close();conn.close();7、办理图书证界面部分代码:/登记按钮事件 b1.addAct
30、ionListener(new ActionListener() public void actionPerformed(ActionEvent e) try Class。forName(sun.jdbc.odbc.JdbcOdbcDriver); catch(ClassNotFoundException ex) System.out.println(SQLException:+ex。getMessage(); try if(t1。getText()。equals(”)|t2。getText().equals(”)|t4.getText()。equals(”)|t5。getText()。equ
31、als(”)|t6.getText().equals(”)) JOptionPane。showMessageDialog(null,请输完该学生的完整信息!, 警告”,JOptionPane.WARNING_MESSAGE); else Connection conn=DriverManager。getConnection(”jdbc:odbc:Library); Statement stmt=conn。createStatement(); String sqlstr=insert into student values(”+t1。getText()+,”+t2.getText()+,+get
32、text()+”,”+t4.getText()+,+t5。getText()+”,+t6。getText()+); stmt.executeUpdate(sqlstr); stmt.close(); conn。close(); JOptionPane。showMessageDialog(null,”注册登记办理成功!”,提示信息”,JOptionPane.INFORMATION_MESSAGE); 8、借阅管理界面部分代码: public ReadBook() JLabel l1=new JLabel(请输入借阅图书的学生学号:”); JLabel l2=new JLabel(请输入退还图书的
33、学生学号:”); JButton b1=new JButton(借 书”); JButton b2=new JButton(还 书”); Container c=f。getContentPane(); c.setLayout(new BorderLayout()); JPanel p=new JPanel(new BorderLayout()); JPanel g=new JPanel(new GridLayout(2,1)); JPanel p1=new JPanel(new FlowLayout(); JPanel p2=new JPanel(new FlowLayout();9、借阅管理
34、界面部分代码:bt。addActionListener(new ActionListener() public void actionPerformed(ActionEvent E) tryClass。forName(”sun。jdbc。odbc。JdbcOdbcDriver”);catch(ClassNotFoundException e)System.out。println(”SQLException: ”+e。getMessage());tryif(t。getText().equals(”))JOptionPane.showMessageDialog(null,”删除失败!请输入您要注销
35、的学生学号!”, ”提示信息”,JOptionPane.INFORMATION_MESSAGE);elseConnection conn = DriverManager。getConnection(”jdbc:odbc:Library”);Statement stmt = conn。createStatement();if(JOptionPane。showConfirmDialog(null,单击是注销该记录,单击否取消该操作!”,”警告”,JOptionPane。YES_NO_OPTION,JOptionPane。WARNING_MESSAGE)=JOptionPane.YES_OPTION
36、)String sql = ”delete from student where StuNo=”+t.getText()+;stmt。executeUpdate(sql);JOptionPane.showMessageDialog(null,该学生的借阅证注销成功!, ”提示信息”,JOptionPane.INFORMATION_MESSAGE);f。setVisible(false);stmt.close();conn。close();10、菜单界面四 总 结在本系统的开发过程中,由于是初次开发软件,在知识、经验方面都存在着不足.另外,在整个开发的过程中,时间也比较仓促。因此,该系统必然会存
37、在一些缺陷和不足。因为对校园图书馆管理的整个流程不够熟悉,在需求分析时未能做到完全满足用户的需求.尽管本管理系统存在着很多不足,但其功能全面、易于日后程序更新、数据库管理容易、界面友好、操作方便、效率高、安全性好等优点是本管理系统所必需的。相信本图书馆管理信息系统是一套学校图书馆在日常管理中必不可少的管理软件,通过开发这个系统,我掌握了的项目开发过程,进一步熟练了专业基本知识,巩固了我对Java和Access的掌握毕业。设计中的最大收获并不是掌握开发工具的应用,而是学会了设计系统的思维方法。 致 谢一个多月的毕业设计已经结束了.无论我的设计是否能够真的投入使用,这里面每一个控件的绘制,每一行语句的调试,每一段文本的输入之中都有我辛勤的汗水。一个多月的设计时间虽然短暂,我却从中学到了很多的东西。在设计过程中,我结合自己学习过的基础和专业课理论,较好的解决了工程实际问题,为今后走向工作岗位打下了坚实的基础。在这,特别向我的指导老师胡亚平老师以及在毕业设计过程中给予我很大帮助的老师们表示衷心的感谢,谢谢!六 参考文献1 朱喜福 林建民 唐永新JAVA程序设计 人民邮电出版社2 周佩德数据库原理及应用 电子工业出版社3 张海藩软件工程 清华大学出版社 第四版 - 20 -