热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

图书馆管理系统功能详解及主要代码

本文介绍了一款功能强大的图书馆管理系统,包括系统的概述、技术实现、功能详解等内容。其中包括基础维护、读者维护、借阅管理、查询管理和系统管理等功能。同时还提供了系统的运行截图和主要代码。通过本文的介绍,读者可以了解到该图书馆管理系统的具体功能和实现方式。

查看更多系统:系统大全,课程设计、毕业设计,请点击这里查看

01 概述

一款功能强大的图书馆管理系统,功能齐全,小白/大学生项目实训,学习的不二之选。

02 技术

此系统使用 java awt 实现。java.awt是一个软件包,包含用于创建用户界面和绘制图形图像的所有分类。在AWT术语中,诸如按钮或滚动条之类的用户界面对象称为组件。Component类是所有 AWT 组件的根。

03 功能详解

基础维护

图书维护
  • 添加:输入图书编号、图书名称、图书页数、图书作者、出版社、库存数量、所属类型等图书信息,点击Save按钮添加新图书。
  • 修改:首先根据图书编号查询到所要修改的图书,然后对图书的名称、图书页数、作者、出版时间、定价、库存等信息进行修改。
  • 删除:首先根据图书编号查询到所要删除的图书,然后进行删除操作。
读者维护
  • 添加:输入读者编号、读者姓名、读者类别、读者性别、可借天数等信息,然后点击“Add”按钮添加新读者。
  • 修改:首先根据读者编号查询到要修改的读者信息,再对读者编号、读者姓名、读者类别、读者性别、可借天数等信息进行修改,修改完成点击“保存”按钮完成修改。
  • 删除:首先根据读者编号查询到要删除的读者信息,然后进行删除操作。

借阅管理

  • 借书管理:首先根据图书编号和读者编号查询到图书和读者信息,在点击“借出”按钮完成借书。
  • 还书管理:首先根据图书编号和读者编号查询到图书和读者信息,在点击“还书”按钮完成还书。

查询管理

  • 图书查询:输入图书名称、作者、出版时间中的任意一项,点击“查询”按钮查询图书。
  • 读者查询:输入读者姓名、读者类型中的任意一项,点击“查询”按钮查询读者。

系统管理

  • 修改密码:首先输入旧密码等待校验,旧密码输入正确后即可设定新的密码。
  • 退出系统:退出图书管理系统程序。

04 运行截图

添加图书

在这里插入图片描述

添加读者

在这里插入图片描述

借书管理

在这里插入图片描述

图书查询

在这里插入图片描述

修改密码

在这里插入图片描述

05 主要代码

添加图书

package com.jason.frame;//com.jason.frame.BookAdd.java import java.awt.*; import java.awt.event.*; import java.sql.ResultSet; import java.sql.SQLException; import java.text.ParseException; import java.text.SimpleDateFormat; import javax.swing.JOptionPane; public class BookAdd extends Frame implements ActionListener{ Toolkit tool= getToolkit(); String url="src/bookbk.png"; Image img=tool.getImage(url); public void paint(Graphics g){ g.drawImage(img,0,0,this); } public void clearAndSetBookId(){ for(int j=0;j240){ lx=50; ly=ly+30; } booklb[i]=new Label(lbname[i]); booklb[i].setBounds(lx,ly,50,20); booktxt[i]=new TextField(); booktxt[i].setBounds(lx+60,ly,100,20); lx=lx+190; add(booklb[i]);add(booktxt[i]); } booktxt[0].setEditable(false); booktxt[0].setText(str); booktxt[9].setVisible(false); booktype.setBounds(300,170,100,20); add(booktype); savebtn.setBounds(150,210,80,25); closebtn.setBounds(280,210,80,25); add(savebtn);add(closebtn); addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ DbOp.close(); dispose(); } }); savebtn.addActionListener(this); closebtn.addActionListener(this); setLocationRelativeTo(null); setVisible(true); } public static String getInsertOrderedList(){ String returnstring=""; String sql="select * from book"; try{ int count=0; ResultSet rs=DbOp.executeQuery(sql); while(rs.next()){ count++; } String[] allid=new String[count]; int[] intofid=new int[count]; int i=0; ResultSet rs1=DbOp.executeQuery(sql); while(rs1.next()){ allid[i]=rs1.getString("id"); String mystr=allid[i].substring(1); intofid[i]=Integer.parseInt(mystr); i++; } int temp=-1; for(int j=0;jtemp){ temp=intofid[j]; } } returnstring=String.valueOf(temp+1); int len=returnstring.length(); for(int f=0;f<5-len;f++){ returnstring="0"+returnstring; } returnstring="A"+returnstring; DbOp.close(); }catch(SQLException ee){ } return returnstring; } public void actionPerformed(ActionEvent e){ Object ob=e.getSource(); if(ob==savebtn){ savebtnActionPerformed(); clearAndSetBookId(); } if(ob==closebtn){ DbOp.close(); dispose(); } } public void savebtnActionPerformed(){ String id=booktxt[0].getText(); String typestr=booktype.getSelectedItem().toString(); String[] inputstring=new String[9]; boolean emptyequals=false; for(int i=0;i

添加读者

package com.jason.frame;//com.jason.frame.ReaderAdd.java import java.awt.*; import java.awt.event.*; import java.sql.ResultSet; import java.sql.SQLException; import javax.swing.JOptionPane; public class ReaderAdd extends Frame{ Toolkit tool= getToolkit(); String url="src/bookbk.png"; Image img=tool.getImage(url); public void paint(Graphics g){ g.drawImage(img,0,0,this); } public void clearAndSetReaderId(){ for(int j=0;j240){ ly=ly+30; lx=50; } readerlb[i]=new Label(labelsign[i]); readertxt[i]=new TextField(); readerlb[i].setBounds(lx,ly,50,20); readertxt[i].setBounds(lx+60,ly,100,20); lx=lx+190; add(readerlb[i]); add(readertxt[i]); } readertxt[0].setEditable(false); readertxt[0].setText(str); readertype=new Choice(); readertype.add("教师"); readertype.add("学生"); readertype.add("作家"); readertype.add("职工"); readertype.add("其他"); readersex=new Choice(); readersex.add("男"); readersex.add("女"); readertxt[2].setVisible(false); readertxt[3].setVisible(false); readertype.setBounds(110,80,100,20); readersex.setBounds(300,80,100,20); add(readertype);add(readersex); querybtn=new Button("Add"); closebtn=new Button("Close"); querybtn.setBounds(130,140,50,20); closebtn.setBounds(310,140,50,20); add(querybtn);add(closebtn); querybtn.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ updateActionPerformed(e); clearAndSetReaderId(); } }); closebtn.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ DbOp.close(); dispose(); //System.exit(0); } }); addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ DbOp.close(); dispose(); //System.exit(0); } }); setLocationRelativeTo(null); setVisible(true); } public static String getInsertOrderedList(){ String returnstring=""; String sql="select * from reader"; try{ int count=0; ResultSet rs=DbOp.executeQuery(sql); while(rs.next()){ count++; } String[] allid=new String[count]; int[] intofid=new int[count]; int i=0; ResultSet rs1=DbOp.executeQuery(sql); while(rs1.next()){ allid[i]=rs1.getString("id"); intofid[i]=Integer.parseInt(allid[i]); i++; } int temp=-1; for(int j=0;jtemp){ temp=intofid[j]; } } returnstring=String.valueOf(temp+1); int len=returnstring.length(); for(int f=0;f<5-len;f++){ returnstring="0"+returnstring; } DbOp.close(); }catch(SQLException ee){ } return returnstring; } public static void updateActionPerformed(ActionEvent e){ String[] readerstr=new String[6]; readerstr[2]=readertype.getSelectedItem().toString(); readerstr[3]=readersex.getSelectedItem().toString(); for(int i=0;i

修改密码

package com.jason.frame;//com.jason.frame.ChangePassWord.java; import java.awt.*; import java.awt.event.*; import java.sql.ResultSet; import java.sql.SQLException; import javax.swing.JOptionPane; public class ChangePassWord extends Frame{ String[] sign={"旧密码:","设定新密码:","重复新密码:"}; Label[] textlb=new Label[3]; TextField[] passtxt=new TextField[3]; Button reset=new Button("新密码设定"); public ChangePassWord(){ setTitle("修改密码"); setSize(300,250); setLayout(null); setResizable(false); int y=50; for(int i=0;i<3;i++){ textlb[i]=new Label(sign[i]); passtxt[i]=new TextField(); textlb[i].setBounds(50,y,80,20); passtxt[i].setBounds(130,y,100,20); passtxt[i].setEchoChar('●'); add(textlb[i]);add(passtxt[i]); y=y+50; } reset.setBounds(110,200,80,20); add(reset); setLocationRelativeTo(null); reset.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ setNewPassWord(e); } }); addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ System.exit(0); } }); setVisible(true); } public void setNewPassWord(ActionEvent e){ String[] password=new String[3]; String sql; for (int i=0;i

06 源码下载

关注公众号【C you again】,回复“Java GUI图书管理系统”免费领取。
亦可直接扫描主页二维码关注,回复“Java GUI图书管理系统”免费领取,点此打开个人主页

说明:此源码来源于网络,若有侵权,请联系删除!!

作者: C you again,从事软件开发 努力在IT搬砖路上的技术小白
公众号:C you again】,分享计算机类毕业设计源码、IT技术文章、游戏源码、网页模板、程序人生等等。公众号回复 【粉丝】进博主技术群,与大佬交流,领取干货学习资料
关于转载:欢迎转载博主文章,转载时表明出处
求赞环节:创作不易,记得 点赞+评论+转发> 谢谢你一路支持


推荐阅读
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 关键词:Golang, Cookie, 跟踪位置, net/http/cookiejar, package main, golang.org/x/net/publicsuffix, io/ioutil, log, net/http, net/http/cookiejar ... [详细]
  • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
  • 本文详细介绍了Spring的JdbcTemplate的使用方法,包括执行存储过程、存储函数的call()方法,执行任何SQL语句的execute()方法,单个更新和批量更新的update()和batchUpdate()方法,以及单查和列表查询的query()和queryForXXX()方法。提供了经过测试的API供使用。 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • JavaSE笔试题-接口、抽象类、多态等问题解答
    本文解答了JavaSE笔试题中关于接口、抽象类、多态等问题。包括Math类的取整数方法、接口是否可继承、抽象类是否可实现接口、抽象类是否可继承具体类、抽象类中是否可以有静态main方法等问题。同时介绍了面向对象的特征,以及Java中实现多态的机制。 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
author-avatar
苦柚甜甜
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有