《图书馆管理系统课程设计(24页).docx》由会员分享,可在线阅读,更多相关《图书馆管理系统课程设计(24页).docx(23页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、-图书馆管理系统课程设计-第 7 页摘 要随着信息技术的发展,计算机已被广泛的应用于社会的各个领域,成为推动社会发展的技术动力。而在计算机应用中,软件的作用十分突出,软件已经发展成为信息技术的核心,主导着信息产品的开发和信息技术市场的进一步的开拓。软件产业已成为社会信息化进程中的一个战略性产业。在软件技术的应用中软件的开发技术尤其是应用型软件产品的开发技术成了重中之重。不断开发适应用户需求、市场需要的新型软件产品。尤其是在校园里,各种软件的应用无处不在,为我们的学习和生活提供了方便。学校的图书馆不仅给我们提供看书学习的地方,还给我们提供了一套功能齐全的图书馆系统,方便我们搜索书籍、借阅图书。我
2、们本次的Java课程设计的最终目标是实现一个图书馆管理系统,使其具有一般图书管理系统所具有的功能,可以实现管理员日志、管理员添加、管理员退出、读者添加、读者修改、读者查询、读者删除、新书入库、书籍查询、书籍借阅与归还等功能。因为Java是一门很优秀的编程语言,具有面向对象、与平台无关、安全、稳定和多线程等特点,所以用Java编程为我们本次程序的编写提供了方便。关键字:图书馆管理系统,Java,Access数据库目 录一、课程设计目的1二、设计方案的论证22.1 背景及意义22.2技术路线2三、设计实现过程33.1、概要设计33.2、详细设计43.3、数据库设计7四、调试运行及结果分析10五、测
3、试及问题探讨135.1系统测试分析135.2问题探讨16六、课设总结与体会17七、致谢18八、参考文献19九、附录1一、 课程设计目的根据整个课程设计的要求,设计一个图书管理系统必不可少的必须对全管书籍进行分类汇总。而这就是我们所说的数据库设计的第一阶段:需求分析。在这一阶段除了对具体情况诸如实行对管理员的管理、对读者的管理、书籍管理、书籍的借阅与归还、借阅超时等功能的实现,还需要对用户的需求进行调查和分析,否则就失去了设计这个系统的意义了。对于界面的设计我们应该追求的是:美观、易读性强、清晰度高;原则是:不能因为刻意追求美观而以整个界面的清晰度的牺牲作为代价,不能为了清晰度而抛弃对易读性的追
4、求。再设计的过程中我们应该根据实际的情况进行设计,做到具体问题具体分析,不刻意追求原则。在对应的界面与Access数据库建立连接,并实现对应的SQL语句进行实现将产生的结果显示出来。并运用捕捉异常的方法,将异常信息显示出来。通过此课程设计,能够达到巩固Java基础,运用Java编写相应的前台以及后台的程序。熟练掌握JDK、Editplus、Eclipse、JCreator等开发工具的运用,拓宽常用类库的应用。 二、设计方案的论证2.1 背景及意义随着社会经济的迅速发展和科学技术的全面进步,计算机事业的飞速发展,以计算机与通信技术为基础的信息系统正处于蓬勃发展的时期。随着经济文化水平的显著提高,
5、人们对生活质量及工作环境的要求也越来越高。书籍做为人类的精神食粮,在现代社会中越来越受到重视,大量的书籍出现在市场上,人们有了各种各样不同的选择。与此同时,为了管理大量的图书,图书管理系统也大量的出现,随着图书的大量增加,其管理难度也越来越大,如何优化管理也就成为了一个大众化的问题。现已有的图书管理系统,其功能已十分强大,为了便于管理员对图书管理系统进行妥善的管理和读者的查询,图书管理系统为管理员提供了管理日志、管理员添加、管理员切换、读者添加、读者修改、读者查询、读者删除、新书入库等功能,为读者提供了书籍查询、读者借阅信息查询、图书网上续借等很多功能。2.2技术路线开发环境的选择会影响到数据
6、库的设计,所以在这里给出图书管理系统开发与运行环境的选择如下:开发环境:Window 7 旗舰版开发工具:MyEclipse7.0三、设计实现过程3.1、概要设计系统管理模块分为管理员、读者管理、书籍管理、书籍借阅归还。系统体系结构框图如下图图书馆管理系统管理员读者管理书籍管理书籍借阅归还管理员管理日志管理员添加管理员切换读者添加读者信息修改读者删除新书入库书籍查询借阅书籍归还书籍借阅超时读者信息查询图3-1 图书管理系统功能模块图3.2、详细设计由于本课程设计涉及的模块比较多,流程大致相同,所以我们只展示图书管理模块和读者管理模块的流程图,首先是创建图书的流程图,首先要按照提示对各个数据进行
7、输入,系统判断,输入是否合法,如果不合法,不显示信息且不录入数据库,反之,录入数据库,流程图如下:开始创建图书Y是否合法N结束图3-2 创建图书处理流程图借阅功能,输入图书编号,确定是否借阅。不借阅则返回,借阅则继续。流程图如下:开始输入图书编号Y是否借阅N结束图3-3图书借阅处理流程图退还功能,输入图书编号,确定是否退还,退还则继续,不退还则返回,流程图如下:开始输入图书编号Y是否退还N结束图3-4 图书退还处理流程图读者的管理主要分为增,删,改,查四个部分,以图书证号为凭据,添加读者流程图:开始创建读者Y是否合法N结束图3-5 创建读者处理流程图修改读者信息,确定是否要修改读者信息,确定则
8、继续,不确定则返回,流程图如下:开始修改读者信息Y是否合法N结束图3-6 修改读者信息的处理流程图删除读者信息流程图:确定要删除的读者信息,开始输入,确定是否要删除读者信息。图如下:开始删除读者信息Y是否删除N结束图3-7 删除读者信息的处理流程图3.3、数据库设计药品管理系统主要涉及到几个表,即:管理员信息表,管理日志表,图书表,读者表,借阅表。管理员信息表,设置了用户名,密码二个列,管理员信息表设计如下表:表3-1 管理员信息表字段名称数据类型长 度备 注用户名文 本10密 码文 本15管理日志表中记录借还书日志,用于存下所有对图书操作的记录,以便以后可以翻阅和查找。表3-2 管理日志表字
9、段名称数据类型长 度备 注书号文 本10书名文 本15作者文 本15出版社文 本15入库时间DATE15已付款额文 本10图书表中记录了库内所有图书的所有资料,书名、书号、作者、出版社等信息,如下图表3-3 图书表字段名称数据类型长 度备 注书号文 本10书名文 本15作者文 本15出版社文 本15入库时间DATE15是否借出文 本10价格文 本10表中记录库中所有读者的相关信息,如图书证号、姓名、性别、系别、班级这五项。表3-4 读者表字段名称数据类型长 度备 注图书证号文 本10姓名文 本15性别文 本15系别文 本15班级文 本15表内记录了此时图书的借阅情况,有图书证号、书号、借阅日期
10、、应还日期。四、调试运行及结果分析图书管理系统管理员模块是整个系统最主要的部分,管理员可以通过此模块实现进入其余各个模块如管理日志、管理员添加、管理员切换、读者添加、读者修改、读者查询、读者删除、新书入库、书籍查询、借阅书籍、归还书籍、借阅超时及退出的功能。图书管理系统管理员界面如图4-1所示。图4-1图书管理系统管理员界面管理日志模块通过定义类WinTable继承顶层容器JFrame,再添加普通容器 JScrollPane、Jpanel,然后通过BorderLayout布局创建界面,最后主要通过数组利用while循环在连接好的数据库中查找表Admirz中的内容,从而实现了可以清楚的显示出书籍
11、借阅与归还信息的功能。管理日志界面如图4-2所示。图4-2管理日志界面图书入库模块主要完成的功能是往数据库book表中添加新书的记录,在book表中可查看最新的记录。在新书信息输入的过程中,会出现一些异常处理,如某个字段的信息没有填写;新书信息输入字段的过程中,输入的字段类型与给定的字段类型与输入不匹配(如:货币、日期);输入的信息长度超过给定的字段长度等。如果填写的内容正确则可以成功将新书添加入库。图4-3图书入库界面查询功能统包含两项一是检索项令一个是检索词,在检索项中用户可以根据自己的需求来选择所要查询的项目并在检索词中添写自己所要查询的内容。本系统副带四个按钮:确定、取消、查看全库。图
12、4-4图书查询界面在该系统中为了用户使用方便还设有查看全库一项,用户可以通过这一功能来查看全库的图书,所查询的内容将在下方的文本区中显示。图4-5图书查询界面五、测试及问题探讨5.1系统测试分析软件测试的本质是针对要测试的内容确定一组测试用例。在讨论之前,我先把要测试各个模块的计划和要点列出:1、借阅书籍功能, 输入图书编号错误,按回车键则会弹出图书编号错误对话框, 点击借阅按钮则会弹出图书借阅成功对话框.2、归还书籍功能,归还书籍时确定书名书号符合不符合。点击还书按钮会弹出归还成功对话框。归还书籍功能3、借阅超时功能,数据库borrowbook(借书表)表中的“应还日期”字段中的时间与当前时
13、间相比较,若比当前时间早则说明该书借阅超时,那么该条记录将在此被显示出来。下面是测试的几种情况,首先是借阅书籍功能的测试,输入图书证号“0001”后点击查看按钮,可显示该读者信息,若输入图书证号错误,点击查看按钮则会弹出借书证错误对话框。输入图书编号“0000003”按回车键,可显示该图书信息,若输入图书编号错误,按回车键则会弹出图书编号错误对话框所示。点击借阅按钮则会弹出图书借阅成功对话框。借阅书籍功能的具体实现。图5-1借书证、图书编号错误图图5-2借阅书籍图归还书籍功能,输入图书编号“0000003”点击回车键,则该界面右侧会显示借书者的信息,若图书编号错误则会弹出图书编号错告对话框。点
14、击还书按钮会弹出归还成功对话框。归还书籍功能的具体实现。图5-3图书名字错误图5-4归还图书借阅超时功能数据库borrowbook(借书表)表中的“应还日期”字段中的时间与当前时间相比较,若比当前时间早则说明该书借阅超时,那么该条记录将在此被显示出来。借阅超时功能具体实现。图5-5过期图书信息图5.2问题探讨连接数据库是思路不够清晰,导致连接数据库出现问题,在初期的开发过程中,这样的问题困扰我很久,后来查询资料发现数据库的连接和对应数据的操作是有一定的思路的,需要打开,操作,然后关闭。在有思路的情况下,后面的编写工作也变得相对比较容易了。由此发现,编写代码时,思路很重要,没有思路,整个系统开发
15、会相当费时费力。在程序中我主要用了awt包和swing包,界面排版主要用轻量级容器box来实现,页面位置、大小是通过设置setbounds来控制的。我不但成功的连接了数据库,也成功实现了很多功能:在管理员方面实现了管理员登陆、管理日志、管理员添加、管理员切换四个功能,在读者管理方面实现了读者添加、读者修改、读者查询、读者删除四个功能,在书籍管理方面实现了新书入库、书籍查询两个功能,在书籍借阅与归还方面实现了借阅书籍、归还书籍两个功能,在借阅超时方面也成功实现了此功能。在众多功能中刚开始时借阅书籍方面出了问题,但最后在我认真思考、仔细研究下终于改正了错误,使此功能终于可以正常使用了。六、课设总结
16、与体会这次的课程设计可以看作是一次理论与实践相结合的桥梁,通过这次的课程设计,我学习到了许多的知识,也认识到了自己目前的不足,那就是缺乏相应的知识与经验,所以在运用和操作方面都不是那么的得心应手。但是,经过这段时间对相关书籍的阅读和分析,我组顺利的完成了设计,我还明白了在编写程序的时候,应该尽量使界面简洁大方,布局统一。变量类型的定义,一定要够用就好,这样程序就可以尽可能的减少对系统资源的占用。在设计时也免不了存在着一些不足,所以在今后的学习中我会努力取得更大的进步,对于我不足的地方希望老师能够及时给予批评,以便我在今后的学习或工作中能够及时的改正。总之,这次课程设计为我提供了与众不同的学习方
17、法,在书本中面对现实,为我将来在社会上立足提供了良好的前提。在这次课程设计中我通过努力完成了任务,学习到了很多知识。虽然只是短短的几天时间,可是在这几天我把课堂里老师讲的知识用到实践中去了,感到非常高兴。在这次课设中我不仅学到了知识,还锻练了自己动手去做一些东西的能力,在这次课设中我真正体会到了动手实践的重要性,这对我以后的工作有很大的帮助。七、致谢课程设计虽然结束了,但我感觉要想把课程设计做好,那必须把基础知识学透彻,当然更离不开老师的指导,因为老师的教导是做有用的。人生有数,学无止境,学习生活是无穷尽的,只有掌握更多的、更新的知识才能使自己始终立于不败之地。如果只为现在所取得的成绩而沉浸于
18、喜悦、骄傲之中的话,那么,我想我不会前进,只能停留在原来的地方,甚至还会倒退。所以我应该从这几天的课程设计中所暴露出的问题入手,不断完善自己的欠缺和不足。相信此次课程设计为我以后继续从事计算机工作打下了扎实的基础,也明确了以后的学习方向。虽然这几天的时间很短暂,但是我相信在这次课程设计中学到的东西会是我永远的珍藏。最后再次感谢在课程设计过程中给予我帮助的老师和同学们,他们的帮助不仅使我开阔了视野,拓宽了思路,增长了学识,为我今后的工作和学习打下了牢固的基础,也使我增强了对系统开发的兴趣,特别是Java语言的系统开发。在这里再一次表示衷心的感谢。八、参考文献1 耿祥义.JAVA2 实用教程.北京
19、:清华大学出版社,20062 朱仲杰.JAVA2 全方位学习.北京:机械工业出版社,20063 张思民.JAVA程序设计实践教程.北京:清华大学出版社,20064 汤一平.Java 语言程序设计.北京:科学出版社,20065 刘艺.Java 程序设计大学教程. 北京:机械工业出版社,20066 耿祥义.Java课程设计.北京:清华大学出版社,20037 Sharon Zakhour. Java教程. 北京:人民邮电出版社,2007九、附录主要程序代码如下:public void actionPerformed(ActionEvent e)if(e.getSource()=itemAdmiqh)
20、this.dispose();In winin=new In(系统登陆);if(e.getSource()=itemtc)System.exit(0);if(e.getSource()=itemAdmixj)CreatAdmi creatAdmi=new CreatAdmi(管理员添加);if(e.getSource()=itemAdmirz)WinTable wintable=new WinTable(管理日志);if(e.getSource()=itemBookrk)AddInfy addInfy=new AddInfy();if(e.getSource()=itemPersonlr)Wi
21、npersonadd winperson=new Winpersonadd(读者添加);if(e.getSource()=itemPersoncx)Winpersonsearch winperson=new Winpersonsearch(读者信息查询);if(e.getSource()=itemPersonxg)Winpersonmodify winperson=new Winpersonmodify(读者信息修改);if(e.getSource()=itemPersonsc)Winpersondelete winperson=new Winpersondelete(读者删除);if(e.g
22、etSource()=itemBookcx)Windowjj ok=new Windowjj();if(e.getSource()=itemchaoshi)day win=new day(); if(e.getSource()=itemBorrowjs)Borrowbook win=new Borrowbook(); if(e.getSource()=itemBorrowhs)Returnbook win=new Returnbook(); WinTable(String s)super(s);try Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);ca
23、tch(ClassNotFoundException e)System.out.println(+e);try con=DriverManager.getConnection(jdbc:odbc:sun,123,123);sql=con.createStatement();rs=sql.executeQuery(SELECT * FROM Admirz);while(rs.next()k+;catch(SQLException e)System.out.println(+e);try con=DriverManager.getConnection(jdbc:odbc:sun,123,123);
24、sql=con.createStatement();rs=sql.executeQuery(SELECT * FROM Admirz);a=new Objectk6;while(rs.next()for(int j=0;j6;j+)if(j5)aij=rs.getString(j+1);elseaij=rs.getDouble(j+1);i+;con.close();catch(SQLException e)System.out.println(+e);table=new JTable(a,name);Container con=getContentPane();getContentPane(
25、).add(new JScrollPane(table),BorderLayout.CENTER);setBounds(120,125,700,500);setVisible(true);validate();addWindowListener(new DisposeListener();public void actionPerformed(ActionEvent c)String b=textUser.getText();String d=textPassword1.getText();String g=textPassword2.getText();if(c.getSource()=bu
26、ttonqk)textUser.setText(null);textPassword1.setText(null);textPassword2.setText(null);if(c.getSource()=buttonEnter|c.getSource()=textPassword2)if(b.length()10)JOptionPane.showMessageDialog(null,用户名应在310个字符之间);textUser.setText(null);elsetry Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);catch(ClassNotFo
27、undException e)System.out.println(+e);try con=DriverManager.getConnection(jdbc:odbc:sun,123,123);sql=con.createStatement();rs=sql.executeQuery(SELECT * FROM Admi WHERE 用户名=+b+);if(rs.next()String user=rs.getString(1);if(b.equals(user) JOptionPane.showMessageDialog(null,此管理员已被注册,警告,JOptionPane.WARNIN
28、G_MESSAGE);elseif(d.equals(g)sql.executeUpdate(INSERTINTOAdmi VALUES+(+b+,+d+);this.dispose();JOptionPane.showMessageDialog(null,管理员注册成功);else JOptionPane.showMessageDialog(null,两次输入密码不一致,警告,JOptionPane.ERROR_MESSAGE); con.close(); catch(SQLException e)System.out.println(+e);public void actionPerfor
29、med(ActionEvent e)if(e.getSource()=button1) / 添加String ch=text1.getText();if(ch.length()!=5)JOptionPane.showMessageDialog(null,请输入5位图书证号!);text1.setText(null);else/连接数据库String number,name,sex,dept,classes,record,insertStr;number=text1.getText();name=text2.getText();if(box1.getState()=true)sex=box1.g
30、etLabel();elsesex=box2.getLabel();dept=text3.getText();classes=text4.getText();rs=sql.executeQuery(SELECT * FROM person WHERE 图书证号=+number+);if(rs.next()JOptionPane.showMessageDialog(null,此图书证号已存在,警告,JOptionPane.WARNING_MESSAGE);text1.setText(null);record=(+number+,+name+,+sex+,+dept+,+classes+);ins
31、ertStr=INSERT INTO person VALUES+record;sql.executeUpdate(insertStr); JOptionPane.showMessageDialog(null,添加成功!);con.close();public void actionPerformed(ActionEvent e)if(e.getSource()=button1) /修改String ch=text1.getText();if(ch.length()!=5)JOptionPane.showMessageDialog(null,请输入5位图书证号!);text1.setText(
32、null);elsetry/连接数据库String number,name,sex,dept,classes,newnum,record,updateStr;newnum=text5.getText();number=text1.getText();name=text2.getText();if(box1.getState()=true)sex=box1.getLabel();elsesex=box2.getLabel();dept=text3.getText();classes=text4.getText();sql=con.createStatement();rs=sql.executeQ
33、uery(SELECT * FROM person where 图书证号=+newnum+);if(rs.next()rs1=sql.executeQuery(SELECT * FROM person where 图书证号=+number+);if(rs1.next()JOptionPane.showMessageDialog(null,此图书证号已存在,警告,JOptionPane.WARNING_MESSAGE);text1.setText(null);elseupdateStr=UPDATE person SET 图书证号=+number+,+姓名=+name+,+性别=+sex+,+系别=+dept+,+班级=+classes+WHERE 图书证号=+newnum+;sql.executeUpdate(updateStr);JOptionPane.showMessageDialog(null,修改成功!);elseJOptionPane.showMessageDialog(null,查无此人!);/连接数据库con.close();
限制150内