图书馆管理系统程序设计 |
您所在的位置:网站首页 › 系统处理流程设计 › 图书馆管理系统程序设计 |
图书馆管理系统程序设计
代码地址: https://github.com/yranqiu/tushuguanguanlixitong/tree/master
一. 简 介
大学为我们提供了自由的学习环境,使我们有更多的时间到图书馆借阅书籍,让我们可以随时掌握各方面的知识,不断提高自我、充实自我,但由于图书馆藏书成千上万,我们很难一本一本的去查找自己感兴趣的书籍,因此我们会经常用到学校为我们提供的图书管理系统,用时间长了便对此产生了兴趣,正好本次课程设计为我们提供了良好的机会,让我们亲自设计并实现了图书管理系统的部分功能。 现已有的图书管理系统,其功能已十分强大,为了便于管理员对图书管理系统进行妥善的管理和读者的查询,图书管理系统为管理员提供了管理日志、管理员添加、管理员切换、读者添加、读者修改、读者查询、读者删除、新书入库等功能,为读者提供了书籍查询、读者借阅信息查询、图书网上续借等很多功能。 在对应的界面与Access数据库建立连接,并实现对应的SQL语句进行实现将产生的结果显示出来。并运用捕捉异常的方法,将异常信息显示出来。 实现SQL语句的时候借助前台开发工具中关于数据处理的控件来完成。对于读者而言他们的需求是了解图书的基本情况,自己的借阅情况。总而言之就是实现对各个信息表的查询。对于图书管理员而言要实现的功能相对而言比较多,例如实现新书入库、Access数据库表的创建、系统的维护等等,这些都需要设计和实现的。 二. 系统功能介绍 2.1系统功能总框图
图书馆管理系统功能总框图,如图2-1所示。
图2-1 系统功能框架图 2.2 模块功能介绍 2.2.1 管理员模块功能介绍 1. 管理员登陆 此模块主要是利用MenuBar添加菜单条,利用Menu和MenuItem添加菜单和菜单的各个参数,通过事件ActionEvent 可以实现进入各个模块如管理日志、管理员添加、管理员切
换、读者添加、读者修改、读者查询、读者删除、新书入库、书籍查询、借阅书籍、归还书 籍、借阅超时及退出的功能。 2. 管理日志 此模块可以清楚的显示出书籍借阅与归还的信息,包括书号、书名、图书证号、借/还、操作日期、已付款额。读者可以通过此模块实现的功能清楚的了解图书被借阅和归还的详细信息,从而给读者带来了很多方便。 3. 管理员添加功能介绍 此模块功能是增加新管理员的登陆帐户。在图书馆管理系统中必须有每一个管理者的帐户让其可以正常进行新图书证的办理、借阅书籍和归还书籍等系统管理。所以在管理员功能模块中增加了管理员添加这个功能。 4. 管理员切换 此模块的主要功能是进行管理员之间的切换,即单击管理员菜单下的管理员切换,就会退出当前管理员界面,从而出现管理员切换窗口,而另一管理员就可以在管理员切换窗口中的用户名和密码两栏中通过输入自己的用户名和密码直接进入该系统。 2.2.2 读者管理1. 读者添加 此模块主要的实现功能是添加新的读者信息,即当有新的读者要看查看本图书馆中的书藉,可以通过此功能实现,当数据库中存在其新信息,即成为本图书馆的新一位读者。其中信息分别包括图书证号、学生姓名、性别、系别、班级,同时可有三项功能在此处实现,即添加、重置以及返回。 2.读者修改 此模块主要的实现功能对有信息更新的读者进行即时修改,以随时更新读者在数据库中的信息。本模块通过图书证号确定读者,可对读者信息的新图书证号、学短姓名、性别、系别、班级。此处可分别实现对该功能的修改、重置、返回。 3. 读者查询 此模块主要可对所要了解的读者信息。即把读者的信息从数据库调出来,显示在该窗口中的文字区域。查询方式分别有按图书证查询、按姓名查询、按班级查询、按年级查询,并可通过办理入相应的关键字,更加缩小查询范围。此处可实现查询和返回功能。 4. 读者删除 此模块可以删除一些不再使用本系统的读者资料,从而达到对数据库中的清理,即清除一些不必要资料,此处有四种删除途径,分别为按图书证号删除、按姓名删除、按班级删除、安年级删除,并可通过所输入的关键字尽快找到所要删除的资料。此处可分别实现对该功能的修改、重置、返回。 2.2.3书籍管理模块功能介绍1. 新书入库功能介绍 此模块主要的实现功能是将新来的图书输入到图书馆管理系统的书库当中,其中主要按如下信息往书库中输入,这部分的操作主要是便于书库合理的管理,有利于读者能够对新书有
一个更详细的了解。其中包括如下信息:新书书号、新书名称、新书出版日期、新书出版社、入库数量、编写作者、新书单价。 2. 书籍查询功能介绍 在图书馆管理系统中书籍查询是最基本的功能,读者可以根据自己的需求来查询想要借阅的书籍。本系统是用Java应用程序和Access数据库一起开发的其中利用Java来编程实现功能的代码和布置运行界面。界面是由检索项、检索词和显示文本区三个部分组成的用户根据自己的需要在检索项中选择自己所要按什么字段进行查询,其中书籍查询功能的检索项中可以按书号查询、按书名查询、按作者名查询、按出版社查询、按入库时间查询等基础查询。选择检索项后用户只要在检索词中添写自己所要查询的内容并确定键确认后用户要查询的内容就可以在显示文本区中显示出来。用户可以根据显示的信息得知自己所要借阅书籍的情况。 2.2.4 书籍借阅与归还功能介绍1. 借阅书籍功能介绍 此模块主要实现读者可凭有效的图书证号,借阅图书馆内未借出的图书。 输入图书证号后,可显示了该图书证持有者的全部信息(包括借书证号、姓名、性别、所在班级、所属系部、当前可借阅图书个数),供读者确认信息。通过输入有效的图书编号,查询该图书的全部信息(包括书号、书名、作者、出版社、是否借出、价格)。借阅成功后,将该图书证号、书号、借阅日期、应还日期信息插入到数据库的表中进行记录。 2. 归还书籍功能介绍 此模块主要实现读者凭所要归还图书的图书证号归还图书。 输入所要归还的图书编号后,可显示了该图书证持有者的全部信息(包括借书证号、姓名、性别、所在班级、所属系部、当前可借阅图书个数),供读者确认信息。还书成功后,从数据库中删除该书的借出记录,并修改数据库中的相应信息。 2.2.5 借阅超时功能介绍此模块主要实现显示过期图书的信息(包括图书证号、书号、借阅日期、应还日期)提醒读者还书。 2.3 组内任务分工
组内分工情况如下表2-1所示。 表2-1 组内分工情况表 组长 张燕 读者添加、查询、修改、删除。
组员 丁从从 书籍借阅与归还模块、借书超期限子系统。 初冬瑞 管理员添加、新书入库、按指定条件进行图书查询。
数据库创建、登陆界面设计、管理员模块。
三. 数据库设计
在此图书馆管理系统中,使用到了一个重要的连接,即与数据库Accesss相连。数据库中存有图书馆中所信息,包括读者信息、管理员资料、借阅与退还记录。所有与管理有关的数据皆在其中,是保证系统能够正常实现各种功能的一架桥。 3.1 数据库需求分析
⒈ Admi表,即管理员表,记录了用户名和密码。 ⒉ Admirz表,即管理日志表,记录了书号、书名、图书证号、借/还、操作日期、已付款额。 ⒊ book表,即图书表,记录了书号、书名、作者、出版社、入库时间、是否借出、价格。 ⒋ borrowbook表,即借阅表,记录了图书证号、书号、借阅日期、应还日期。 ⒌ person表,即读者表,记录了图书证号、姓名、性别、系别、班级。 3.2 数据库表的设计
⒈Admi表 表中记录了可以使管理员进入该系统的用户名及密码,如表3-1所示。
表3-1 管理员信息表 字段名称 数据类型 长 度 备 注 用户名 文 本 10
密 码 文 本 15
⒉Admirz表 表中记录借还书日志,用于存下所有对图书操作的记录,以便以后可以翻阅和查找,如表3-2所示。
表3-2 管理日志表 字段名称 数据类型 长 度 备 注 书号 文 本 10
书名 文 本 15
作者 文 本 15
出版社 文 本 15
入库时间 DATE 15
已付款额 文 本 10
⒊book表 表中记录了库内所有图书的所有资料,如表3-3。
表3-3 图书表 字段名称 数据类型 长 度 备 注 书号 文 本 10
书名 文 本 15
作者 文 本 15
出版社 文 本 15
入库时间 DATE 15
是否借出 文 本 10
价格 文 本 10
⒋person表 表中记录库中所有读者的相关信息,如表3-4所示。
表3-4 读者表 字段名称 数据类型 长 度 备 注 图书证号 文 本 10
姓名 文 本 15
性别 文 本 15
系别 文 本 15
班级 文 本 15
⒌borrowbook表 表内记录了此时图书的借阅情况,如表3-5所示。
表3-5 借阅表 字段名称 数据类型 长 度 备 注 图书证号 文 本 10
书号 文 本 15
借阅日期 DATE 15
应还日期 DATE 15
四. 系统功能实现 4.1 管理员模块功能实现 4.1.1 管理员登陆 此模块是整个系统最主要的部分,管理员可以通过此模块实现进入其余各个模块如管理日志、管理员添加、管理员切换、读者添加、读者修改、读者查询、读者删除、新书入库、书籍查询、借阅书籍、归还书籍、借阅超时及退出的功能。图书管理系统管理员界面如图4-1所示。
图4-1 图书管理系统管理员
主要程序代码如下: public void actionPerformed(ActionEvent e) { if(e.getSource()==itemAdmiqh) { 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) { Winpersonadd 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.getSource()==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(); } } 4.1.2 管理日志 此模块通过定义类WinTable继承顶层容器JFrame,再添加普通容器 JScrollPane、Jpanel,然后通过BorderLayout布局创建界面,最后主要通过数组利用while循环在连接好的数据库中查找表Admirz中的内容,从而实现了可以清楚的显示出书籍借阅与归还信息的功能。管理日志界面如图4-2所示。
图4-2 管理日志 主要程序代码如下: WinTable(String s) { super(s); try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); } catch(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"); sql=con.createStatement(); rs=sql.executeQuery("SELECT * FROM Admirz"); a=new Object[k][6]; while(rs.next()) { for(int j=0;jmm) { …//计算还书时间 } day=day+d; if(day>0) { JOptionPane.showMessageDialog(this,"您比应还日期晚了"+String.valueOf(day)+"天归还,请交付相应滞纳金","延期还书",JOptionPane.WARNING_MESSAGE); money=day/10; tsid.setText(null); } } 4.5 借阅超时功能实现
数据库borrowbook(借书表)表中的“应还日期”字段中的时间与当前时间相比较,若比当前时间早则说明该书借阅超时,那么该条记录将在此被显示出来。借阅超时功能具体实现如图4-18所示。
图4-18 借阅超时
主要程序代码如下: ……//连接数据库 Date nowtime=new Date();//当前日期 SimpleDateFormat matter1=new SimpleDateFormat("yyyy-MM-dd"); String stime=matter1.format(nowtime); String dyear=stime.substring(0,4); year2=Integer.parseInt(dyear);//年 String dmoon=stime.substring(5,7); moon2=Integer.parseInt(dmoon);//月 String dday=stime.substring(8,10); day2=Integer.parseInt(dday);//日 rs=sql.executeQuery("SELECT * FROM borrowbook"); while(rs.next()){x=x+1;} rs.beforeFirst(); a=new Object[x][4]; while(rs.next()) { ……//计算还书超过的天数 table=new JTable(a,name); sPanel.add(new JScrollPane(table),BorderLayout.CENTER); sPanel.setEnabled(false); setBounds(0,0,700,400); setVisible(true); validate(); addWindowListener(new WindowAdapter()
{ public void windowClosing(WindowEvent e) {dispose(); } } }
五.总结
一周的java课程设计已经结束了,在这次课程设计中我组成员共同努力完成了任务,共同学习知识。虽然只是短短的两周时间,可是在这两周我们把课堂里老师讲的知识用到实践中去了,感到非常高兴。在这次课设中我们不仅学到了知识,还锻练了团体合作的能力,在这次课设中我们真正体会到了小组合作精神的重要性,就如古语所说的“万众同心,齐力断金”,这对我们以后的工作有很大的帮助。 这次的课程设计可以看作是一次理论与实践相结合的桥梁,通过这次的课程设计,我们学习到了许多的知识,也认识到了自己目前的不足,那就是缺乏相应的知识与经验,所以在运用和操作方面都不是那么的得心应手。但是,经过这段时间对相关书籍的阅读和分析,我们组顺利的完成了设计,我还明白了在编写程序的时候,应该尽量使界面简洁大方,布局统一。变量类型的定义,一定要够用就好,这样程序就可以尽可能的减少对系统资源的占用。在设计时也免不了存在着一些不足,所以在今后的学习中我们会努力取得更大的进步,对于我们不足的地方希望老师能够及时给予批评,以便我们在今后的学习或工作中能够及时的改正。
|
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |