还剩30页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
摘要随着信息技术的发展,计算机已被广泛的应用于社会的各个领域,成为推动社会发展的技术动力而在计算机应用中,软件的作用十分突出,软件已经发展成为信息技术的核心,主导着信息产品的开发和信息技术市场的进一步的开拓软件产业已成为社会信息化进程中的一个战略性产业在软件技术的应用中软件的开发技术尤其是应用型软件产品的开发技术成了重中之重不断开发适应用户需求、市场需要的新型软件产品尤其是在校园里,各种软件的应用无处不在,为我们的学习和生活提供了方便学校的图书馆不仅给我们提供看书学习的地方,还给我们提供了一套功能齐全的图书馆系统,方便我们搜索书籍、借阅图书我们本次的Java课程设计的最终目标是实现一个图书馆管理系统,使其具有一般图书管理系统所具有的功能,可以实现管理员日志、管理员添加、管理员退出、读者添加、读者修改、读者查询、读者删除、新书入库、书籍查询、书籍借阅与归还等功能因为Java是一门很优秀的编程语言,具有面向对象、与平台无关、安全、稳定和多线程等特点,所以用Java编程为我们本次程序的编写提供了方便关键字图书馆管理系统,Java,Access数据库目录
一、课程设计目的1
二、设计方案的论证
22.1背景及意义
22.2技术路线2
三、设计实现过程
33.
1、概要设计
33.
2、详细设计
43.
3、数据库设计7
四、调试运行及结果分析10
五、测试及问题探讨
135.1系统测试分析
135.2问题探讨16
六、课设总结与体会17
七、致谢18
八、参考文献19
九、附录1课程设计目的根据整个课程设计的要求,设计一个图书管理系统必不可少的必须对全管书籍进行分类汇总而这就是我们所说的数据库设计的第一阶段需求分析在这一阶段除了对具体情况诸如实行对管理员的管理、对读者的管理、书籍管理、书籍的借阅与归还、借阅超时等功能的实现,还需要对用户的需求进行调查和分析,否则就失去了设计这个系统的意义了对于界面的设计我们应该追求的是美观、易读性强、清晰度高;原则是不能因为刻意追求美观而以整个界面的清晰度的牺牲作为代价,不能为了清晰度而抛弃对易读性的追求再设计的过程中我们应该根据实际的情况进行设计,做到具体问题具体分析,不刻意追求原则在对应的界面与Access数据库建立连接,并实现对应的SQL语句进行实现将产生的结果显示出来并运用捕捉异常的方法,将异常信息显示出来通过此课程设计,能够达到巩固Java基础,运用Java编写相应的前台以及后台的程序熟练掌握JDK、Editplus、Eclipse、JCreator等开发工具的运用,拓宽常用类库的应用
二、设计方案的论证
2.1背景及意义随着社会经济的迅速发展和科学技术的全面进步,计算机事业的飞速发展,以计算机与通信技术为基础的信息系统正处于蓬勃发展的时期随着经济文化水平的显著提高,人们对生活质量及工作环境的要求也越来越高书籍做为人类的精神食粮,在现代社会中越来越受到重视,大量的书籍出现在市场上,人们有了各种各样不同的选择与此同时,为了管理大量的图书,图书管理系统也大量的出现,随着图书的大量增加,其管理难度也越来越大,如何优化管理也就成为了一个大众化的问题现已有的图书管理系统,其功能已十分强大,为了便于管理员对图书管理系统进行妥善的管理和读者的查询,图书管理系统为管理员提供了管理日志、管理员添加、管理员切换、读者添加、读者修改、读者查询、读者删除、新书入库等功能,为读者提供了书籍查询、读者借阅信息查询、图书网上续借等很多功能
2.2技术路线开发环境的选择会影响到数据库的设计,所以在这里给出图书管理系统开发与运行环境的选择如下开发环境Window7旗舰版开发工具MyEclipse
7.0
三、设计实现过程
3.
1、概要设计系统管理模块分为管理员、读者管理、书籍管理、书籍借阅归还系统体系结构框图如下图图书馆管理系统管理员读者管理书籍管理书籍借阅归还管理员管理日志管理员添加管理员切换读者添加读者信息修改读者删除新书入库书籍查询借阅书籍归还书籍借阅超时读者信息查询图3-1图书管理系统功能模块图
3.
2、详细设计由于本课程设计涉及的模块比较多,流程大致相同,所以我们只展示图书管理模块和读者管理模块的流程图,首先是创建图书的流程图,首先要按照提示对各个数据进行输入,系统判断,输入是否合法,如果不合法,不显示信息且不录入数据库,反之,录入数据库,流程图如下开始创建图书Y是否合法N结束图3-2创建图书处理流程图借阅功能,输入图书编号,确定是否借阅不借阅则返回,借阅则继续流程图如下开始输入图书编号Y是否借阅N结束图3-3图书借阅处理流程图退还功能,输入图书编号,确定是否退还,退还则继续,不退还则返回,流程图如下开始输入图书编号Y是否退还N结束图3-4图书退还处理流程图读者的管理主要分为增,删,改,查四个部分,以图书证号为凭据,添加读者流程图开始创建读者Y是否合法N结束图3-5创建读者处理流程图修改读者信息,确定是否要修改读者信息,确定则继续,不确定则返回,流程图如下开始修改读者信息Y是否合法N结束图3-6修改读者信息的处理流程图删除读者信息流程图确定要删除的读者信息,开始输入,确定是否要删除读者信息图如下开始删除读者信息Y是否删除N结束图3-7删除读者信息的处理流程图
3.
3、数据库设计药品管理系统主要涉及到几个表,即管理员信息表,管理日志表,图书表,读者表,借阅表管理员信息表,设置了用户名,密码二个列,管理员信息表设计如下表表3-1管理员信息表管理日志表中记录借还书日志,用于存下所有对图书操作的记录,以便以后可以翻阅和查找表3-2管理日志表图书表中记录了库内所有图书的所有资料,书名、书号、作者、出版社等信息,如下图表3-3图书表表中记录库中所有读者的相关信息,如图书证号、姓名、性别、系别、班级这五项表3-4读者表表内记录了此时图书的借阅情况,有图书证号、书号、借阅日期、应还日期
四、调试运行及结果分析图书管理系统管理员模块是整个系统最主要的部分,管理员可以通过此模块实现进入其余各个模块如管理日志、管理员添加、管理员切换、读者添加、读者修改、读者查询、读者删除、新书入库、书籍查询、借阅书籍、归还书籍、借阅超时及退出的功能图书管理系统管理员界面如图4-1所示图4-1图书管理系统管理员界面管理日志模块通过定义类WinTable继承顶层容器JFrame,再添加普通容器JScrollPane、Jpanel,然后通过BorderLayout布局创建界面,最后主要通过数组利用while循环在连接好的数据库中查找表Admirz中的内容,从而实现了可以清楚的显示出书籍借阅与归还信息的功能管理日志界面如图4-2所示图4-2管理日志界面图书入库模块主要完成的功能是往数据库book表中添加新书的记录,在book表中可查看最新的记录在新书信息输入的过程中,会出现一些异常处理,如某个字段的信息没有填写;新书信息输入字段的过程中,输入的字段类型与给定的字段类型与输入不匹配(如货币、日期);输入的信息长度超过给定的字段长度等如果填写的内容正确则可以成功将新书添加入库图4-3图书入库界面查询功能统包含两项一是检索项令一个是检索词,在检索项中用户可以根据自己的需求来选择所要查询的项目并在检索词中添写自己所要查询的内容本系统副带四个按钮确定、取消、查看全库图4-4图书查询界面在该系统中为了用户使用方便还设有查看全库一项,用户可以通过这一功能来查看全库的图书,所查询的内容将在下方的文本区中显示图4-5图书查询界面
五、测试及问题探讨
5.1系统测试分析软件测试的本质是针对要测试的内容确定一组测试用例在讨论之前,我先把要测试各个模块的计划和要点列出
1、借阅书籍功能输入图书编号错误,按回车键则会弹出图书编号错误对话框点击借阅按钮则会弹出图书借阅成功对话框.
2、归还书籍功能,归还书籍时确定书名书号符合不符合点击还书按钮会弹出归还成功对话框归还书籍功能
3、借阅超时功能,数据库borrowbook(借书表)表中的“应还日期”字段中的时间与当前时间相比较,若比当前时间早则说明该书借阅超时,那么该条记录将在此被显示出来下面是测试的几种情况,首先是借阅书籍功能的测试,输入图书证号“0001”后点击查看按钮,可显示该读者信息,若输入图书证号错误,点击查看按钮则会弹出借书证错误对话框输入图书编号“0000003”按回车键,可显示该图书信息,若输入图书编号错误,按回车键则会弹出图书编号错误对话框所示点击借阅按钮则会弹出图书借阅成功对话框借阅书籍功能的具体实现图5-1借书证、图书编号错误图图5-2借阅书籍图归还书籍功能,输入图书编号“0000003”点击回车键,则该界面右侧会显示借书者的信息,若图书编号错误则会弹出图书编号错告对话框点击还书按钮会弹出归还成功对话框归还书籍功能的具体实现图5-3图书名字错误图5-4归还图书借阅超时功能数据库borrowbook(借书表)表中的“应还日期”字段中的时间与当前时间相比较,若比当前时间早则说明该书借阅超时,那么该条记录将在此被显示出来借阅超时功能具体实现图5-5过期图书信息图
5.2问题探讨连接数据库是思路不够清晰,导致连接数据库出现问题,在初期的开发过程中,这样的问题困扰我很久,后来查询资料发现数据库的连接和对应数据的操作是有一定的思路的,需要打开,操作,然后关闭在有思路的情况下,后面的编写工作也变得相对比较容易了由此发现,编写代码时,思路很重要,没有思路,整个系统开发会相当费时费力在程序中我主要用了awt包和swing包,界面排版主要用轻量级容器box来实现,页面位置、大小是通过设置setbounds来控制的我不但成功的连接了数据库,也成功实现了很多功能在管理员方面实现了管理员登陆、管理日志、管理员添加、管理员切换四个功能,在读者管理方面实现了读者添加、读者修改、读者查询、读者删除四个功能,在书籍管理方面实现了新书入库、书籍查询两个功能,在书籍借阅与归还方面实现了借阅书籍、归还书籍两个功能,在借阅超时方面也成功实现了此功能在众多功能中刚开始时借阅书籍方面出了问题,但最后在我认真思考、仔细研究下终于改正了错误,使此功能终于可以正常使用了
六、课设总结与体会这次的课程设计可以看作是一次理论与实践相结合的桥梁,通过这次的课程设计,我学习到了许多的知识,也认识到了自己目前的不足,那就是缺乏相应的知识与经验,所以在运用和操作方面都不是那么的得心应手但是,经过这段时间对相关书籍的阅读和分析,我组顺利的完成了设计,我还明白了在编写程序的时候,应该尽量使界面简洁大方,布局统一变量类型的定义,一定要够用就好,这样程序就可以尽可能的减少对系统资源的占用在设计时也免不了存在着一些不足,所以在今后的学习中我会努力取得更大的进步,对于我不足的地方希望老师能够及时给予批评,以便我在今后的学习或工作中能够及时的改正总之,这次课程设计为我提供了与众不同的学习方法,在书本中面对现实,为我将来在社会上立足提供了良好的前提在这次课程设计中我通过努力完成了任务,学习到了很多知识虽然只是短短的几天时间,可是在这几天我把课堂里老师讲的知识用到实践中去了,感到非常高兴在这次课设中我不仅学到了知识,还锻练了自己动手去做一些东西的能力,在这次课设中我真正体会到了动手实践的重要性,这对我以后的工作有很大的帮助
七、致谢课程设计虽然结束了,但我感觉要想把课程设计做好,那必须把基础知识学透彻,当然更离不开老师的指导,因为老师的教导是做有用的人生有数,学无止境,学习生活是无穷尽的,只有掌握更多的、更新的知识才能使自己始终立于不败之地如果只为现在所取得的成绩而沉浸于喜悦、骄傲之中的话,那么,我想我不会前进,只能停留在原来的地方,甚至还会倒退所以我应该从这几天的课程设计中所暴露出的问题入手,不断完善自己的欠缺和不足相信此次课程设计为我以后继续从事计算机工作打下了扎实的基础,也明确了以后的学习方向虽然这几天的时间很短暂,但是我相信在这次课程设计中学到的东西会是我永远的珍藏最后再次感谢在课程设计过程中给予我帮助的老师和同学们,他们的帮助不仅使我开阔了视野,拓宽了思路,增长了学识,为我今后的工作和学习打下了牢固的基础,也使我增强了对系统开发的兴趣,特别是Java语言的系统开发在这里再一次表示衷心的感谢
八、参考文献
[1]耿祥义.JAVA2实用教程.北京清华大学出版社,2006
[2]朱仲杰.JAVA2全方位学习.北京机械工业出版社,2006
[3]张思民.JAVA程序设计实践教程.北京清华大学出版社,2006
[4]汤一平.Java语言程序设计.北京科学出版社,2006
[5]刘艺.Java程序设计大学教程.北京机械工业出版社,2006
[6]耿祥义.Java课程设计.北京清华大学出版社,2003
[7]SharonZakhour.Java教程.北京人民邮电出版社,2007
九、附录主要程序代码如下publicvoidactionPerformedActionEvente{ife.getSource==itemAdmiqh{this.dispose;Inwinin=newIn系统登陆;}ife.getSource==itemtc{System.exit0;}ife.getSource==itemAdmixj{CreatAdmicreatAdmi=newCreatAdmi管理员添加;}ife.getSource==itemAdmirz{WinTablewintable=newWinTable管理日志;}ife.getSource==itemBookrk{AddInfyaddInfy=newAddInfy;}ife.getSource==itemPersonlr{Winpersonaddwinperson=newWinpersonadd读者添加;}ife.getSource==itemPersoncx{Winpersonsearchwinperson=newWinpersonsearch读者信息查询;}ife.getSource==itemPersonxg{Winpersonmodifywinperson=newWinpersonmodify读者信息修改;}ife.getSource==itemPersonsc{Winpersondeletewinperson=newWinpersondelete读者删除;}ife.getSource==itemBookcx{Windowjjok=newWindowjj;}ife.getSource==itemchaoshi{daywin=newday;}ife.getSource==itemBorrowjs{Borrowbookwin=newBorrowbook;}ife.getSource==itemBorrowhs{Returnbookwin=newReturnbook;}}WinTableStrings{supers;try{Class.forNamesun.jdbc.odbc.JdbcOdbcDriver;}catchClassNotFoundExceptione{System.out.println+e;}try{con=DriverManager.getConnectionjdbc:odbc:sun123123;sql=con.createStatement;rs=sql.executeQuerySELECT*FROMAdmirz;whilers.next{k++;}}catchSQLExceptione{System.out.println+e;}try{con=DriverManager.getConnectionjdbc:odbc:sun123123;sql=con.createStatement;rs=sql.executeQuerySELECT*FROMAdmirz;a=newObject[k]
[6];whilers.next{forintj=0;j6;j++{ifj5a[i][j]=rs.getStringj+1;else{a[i][j]=rs.getDoublej+1;i++;}}}con.close;}catchSQLExceptione{System.out.println+e;}table=newJTableaname;Containercon=getContentPane;getContentPane.addnewJScrollPanetableBorderLayout.CENTER;setBounds120125700500;setVisibletrue;validate;addWindowListenernewDisposeListener;}}publicvoidactionPerformedActionEventc{Stringb=textUser.getText;Stringd=textPassword
1.getText;Stringg=textPassword
2.getText;ifc.getSource==buttonqk{textUser.setTextnull;textPassword
1.setTextnull;textPassword
2.setTextnull;}ifc.getSource==buttonEnter||c.getSource==textPassword2{ifb.length3||b.length10{JOptionPane.showMessageDialognull用户名应在3~10个字符之间;textUser.setTextnull;}else{try{Class.forNamesun.jdbc.odbc.JdbcOdbcDriver;}catchClassNotFoundExceptione{System.out.println+e;}try{con=DriverManager.getConnectionjdbc:odbc:sun123123;sql=con.createStatement;rs=sql.executeQuerySELECT*FROMAdmiWHERE用户名=++b+;ifrs.next{Stringuser=rs.getString1;ifb.equalsuser{JOptionPane.showMessageDialognull此管理员已被注册警告JOptionPane.WARNING_MESSAGE;}}else{ifd.equalsg{sql.executeUpdateINSERTINTOAdmiVALUES+++b++++d++;this.dispose;JOptionPane.showMessageDialognull管理员注册成功;}elseJOptionPane.showMessageDialognull两次输入密码不一致警告JOptionPane.ERROR_MESSAGE;}con.close;}catchSQLExceptione{System.out.println+e;}}}}publicvoidactionPerformedActionEvente{ife.getSource==button1//添加{Stringch=text
1.getText;ifch.length!=5{JOptionPane.showMessageDialognull请输入5位图书证号!;text
1.setTextnull;}else{……//连接数据库StringnumbernamesexdeptclassesrecordinsertStr;number=text
1.getText;name=text
2.getText;ifbox
1.getState==true{sex=box
1.getLabel;}else{sex=box
2.getLabel;}dept=text
3.getText;classes=text
4.getText;rs=sql.executeQuerySELECT*FROMpersonWHERE图书证号=++number+;ifrs.next{JOptionPane.showMessageDialognull此图书证号已存在警告JOptionPane.WARNING_MESSAGE;text
1.setTextnull;}record=++number++++name++++sex++++dept++++classes++;insertStr=INSERTINTOpersonVALUES+record;sql.executeUpdateinsertStr;JOptionPane.showMessageDialognull添加成功!;con.close;}publicvoidactionPerformedActionEvente{ife.getSource==button1//修改{Stringch=text
1.getText;ifch.length!=5{JOptionPane.showMessageDialognull请输入5位图书证号!;text
1.setTextnull;}else{try{……//连接数据库StringnumbernamesexdeptclassesnewnumrecordupdateStr;newnum=text
5.getText;number=text
1.getText;name=text
2.getText;ifbox
1.getState==true{sex=box
1.getLabel;}else{sex=box
2.getLabel;}dept=text
3.getText;classes=text
4.getText;sql=con.createStatement;rs=sql.executeQuerySELECT*FROMpersonwhere图书证号=++newnum+;ifrs.next{rs1=sql.executeQuerySELECT*FROMpersonwhere图书证号=++number+;ifrs
1.next{JOptionPane.showMessageDialognull此图书证号已存在警告JOptionPane.WARNING_MESSAGE;text
1.setTextnull;}else{updateStr=UPDATEpersonSET图书证号=++number+++姓名=++name+++性别=++sex+++系别=++dept+++班级=++classes++WHERE图书证号=++newnum+;sql.executeUpdateupdateStr;JOptionPane.showMessageDialognull修改成功!;}}else{JOptionPane.showMessageDialognull查无此人!;}……//连接数据库con.close;}字段名称数据类型长度备注用户名文本10密码文本15字段名称数据类型长度备注书号文本10书名文本15作者文本15出版社文本15入库时间DATE15已付款额文本10字段名称数据类型长度备注书号文本10书名文本15作者文本15出版社文本15入库时间DATE15是否借出文本10价格文本10字段名称数据类型长度备注图书证号文本10姓名文本15性别文本15系别文本15班级文本15。