今天为大家分享一个java语言编写的图书管理程序-020,目前系统功能已经很全面,后续会进一步完善。整个系统界面漂亮,有完整得源码,希望大家可以喜欢。喜欢的帮忙点赞和关注。一起编程、一起进步
开发环境
开发语言为Java,开发环境Eclipse或者IDEA都可以。数据库采用:MySQL。运行主程序,或者执行打开JAR文件即可以运行本程序。
系统框架
利用JDK自带的SWING框架开发。纯窗体模式,直接运行Main文件即可以。同时带有详细得设计文档。
主要功能
项目背景
随着社会的进步,信息技术的广泛应用,数字管理的优势日趋显著。针对中小型图书馆或图书室管理落后的情况,设计实现一个图书信息管理系统,通过与计算机的结合使用对中小型图书馆或图书室的各种图书信息进行管理可以给管理员和用户带来以下不同的方便:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高工作效率,也是图书馆等部门管理科学化、正规化的重要标志之一。而且计算机管理的成本不断降低。因此,开发一这样的中小型图书管理软件已经很有必要,并且实现研究服务于实践的原则。随着社会经济的迅速发展和科学技术的全面进步,计算机事业的飞速发展,以计算机与通信技术为基础的信息系统正处于蓬勃发展的时期。我国的学校的图书管理也正在逐步与国际接轨。图书管理环节、图书管理方式以及管理的理念都在发生深刻的变化,图书管理工作当然也在变化,因此就要求图书管理工作者学会和掌握计算机应用技术,实现图书管理工作信息化管理,因此很有必须开发一个基于窗体的的图书管理系统。
主要模块
管理员模块
用户管理:用户增加,删除,修改
图书分类管理:图书分类增加、图书分类删除、图书分类修改
图书管理:图书增加,图书删除,图书修改
用户借阅图书统计:查看图书馆图书借阅情况
普通用户模块:
用户登陆:通过输入用户名和密码,系统校验进入主界面;否则提示用户名或者密码错,重新输入
用户借阅图书:选择查询出来的图书,进行借阅
用户归还图书:归还借阅的图书
修改密码:修改自己的密码信息
实现效果
1 用户登陆
![](https://img-blog.csdnimg.cn/img_convert/455860a9c2427a97dfc27b85c7675c07.jpeg)
2 系统主界面
![](https://img-blog.csdnimg.cn/img_convert/3165a4975ea1adc56401e6adde61188a.jpeg)
3 图书信息管理界面
![](https://img-blog.csdnimg.cn/img_convert/881b82f48046ec27dcfbe5a6631d38ac.jpeg)
4 读者信息管理
![](https://img-blog.csdnimg.cn/img_convert/d802c8848f390d9d9a1eb5b021efc03c.jpeg)
5 修改个人信息
![](https://img-blog.csdnimg.cn/img_convert/450e95a1a25de96172d2a37e4cdb99f7.jpeg)
6 查找图书
![](https://img-blog.csdnimg.cn/img_convert/bd74d586a1e0fdc899bc64f6eefaa14c.jpeg)
7 借阅图书
![](https://img-blog.csdnimg.cn/img_convert/442782b4959351088f1f22884227a019.jpeg)
8 归还图书
![](https://img-blog.csdnimg.cn/img_convert/8de785747d1105402d541b38934937c4.jpeg)
9 管理员管理
![](https://img-blog.csdnimg.cn/img_convert/c6dd01379c3b9f030e1aab20f4ae57af.jpeg)
核心代码
package cn.zld.dao;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
import java.util.List;
import cn.zld.pojo.Constants;
import cn.zld.pojo.ManagerInfo;
/**
* 管理员数据处理
*
* @author
* @project:图书管理系统
*
*/
public class ManagerDao {
public static List<ManagerInfo> managers;
/**
* 增加一个新管理员
*
* @param manager
*/
public static boolean registerNewManager(ManagerInfo manager) {
try {
if (managers == null) {
managers = getAllManager();
}
for(int i=0;i<managers.size();i++){
if(managers.get(i).getManagerName().equals(manager.getManagerName())){
javax.swing.JOptionPane.showMessageDialog(null, "管理员的名字已存在,无法添加!");
return false;
}
}
managers.add(manager);
File file = new File(Constants.MANAGERFILEPATH);
FileOutputStream fout = new FileOutputStream(file);
// 将文件流转成对象流
ObjectOutputStream objectOutputStream = new ObjectOutputStream(fout);
objectOutputStream.writeObject(managers);
fout.close();
return true;
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
return false;
}
/**
* 获取所有的管理员
*
* @param managers
*/
@SuppressWarnings("unchecked")
public static List<ManagerInfo> getAllManager() {
managers = new ArrayList<ManagerInfo>();
ManagerInfo manager=new ManagerInfo();//初始化一个管理员,并使得该管理员为超级管理员
manager.setManagerName("admin");
manager.setPwd("admin");
manager.setId(Constants.ID);
manager.setAge(20);
manager.setLevel("超级管理员");
manager.setSex("男");
managers.add(manager);
try {
File file = new File(Constants.MANAGERFILEPATH);
if (!file.exists()) {// 初始化文件不存在的话则创建该文件
System.out.println("文件不存在,创建新初始化文件!");
file.getParentFile().mkdirs();
file.createNewFile();
FileOutputStream fout = new FileOutputStream(file);
// 将文件流转成对象流,并写入初始化对象
ObjectOutputStream objectOutputStream = new ObjectOutputStream(
fout);
objectOutputStream.writeObject(managers);
}
FileInputStream fin = new FileInputStream(file);
// 将文件流转成对象流
ObjectInputStream objectOutputStream = new ObjectInputStream(
fin);
managers = (List) objectOutputStream.readObject();
fin.close();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
return managers;
}
/**
* 更新管理员的信息
*
* @param reader:要更新的管理员对象
* @return:操作成功返回true,操作失败返回false
*/
public static boolean updateManager(ManagerInfo manager) {
// 对其进行异常处理
try {
if (managers == null) {
managers = getAllManager();
}
for (int i=0;i<managers.size();i++) {
ManagerInfo managerinfo=managers.get(i);
if (managerinfo.getId() == manager.getId()) {
managers.remove(managerinfo);// 将旧对象删除
managers.add(manager);// 将新对象加入
File file = new File(Constants.MANAGERFILEPATH);
FileOutputStream fout = new FileOutputStream(file);
// 将文件流转成对象流
ObjectOutputStream objectOutputStream = new ObjectOutputStream(
fout);
objectOutputStream.writeObject(managers);
fout.close();
managers=getAllManager();
}
}
return true;
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
return false;
}
}
/**
* 删除一个管理员
*
* @param manager:要删除的管理员对象
* @return:操作成功返回true,操作失败返回false
*/
public static boolean deleteManager(ManagerInfo manager) {
// 对其进行异常处理
try {
if (managers == null) {
managers = getAllManager();
}
for (int i=0;i<managers.size();i++) {
ManagerInfo managerinfo=managers.get(i);
if (managerinfo.getId() == manager.getId()) {
managers.remove(managerinfo);// 将旧对象删除
File file = new File(Constants.MANAGERFILEPATH);
FileOutputStream fout = new FileOutputStream(file);
// 将文件流转成对象流
ObjectOutputStream objectOutputStream = new ObjectOutputStream(
fout);
objectOutputStream.writeObject(managers);
fout.close();
}
}
return true;
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
return false;
}
}
}
package cn.zld.component;
import java.awt.Graphics;
import java.awt.Image;
import javax.swing.JPanel;
/**
* 图片panel控件
*
* @author
* @project:图书管理系统
*
*/
public class Panel extends JPanel {
private static final long serialVersionUID = -8251916094895167058L;
/** * 居中 */
public static final String CENTRE = "Centre";
/** * 平铺 */
public static final String TILED = "Tiled";
/** * 拉伸 */
public static final String SCALED = "Scaled";
/** * 背景图片 */
private Image backgroundImage;
/** * 背景图片显示模式 */
private String imageDisplayMode;
/** * 背景图片显示模式索引(引入此属性有助于必要时扩展) */
private int modeIndex;
/** * 构造一个没有背景图片的JImagePane */
public Panel() {
this(null, CENTRE);
}
/**
* * 构造一个具有指定背景图片和指定显示模式的JImagePane *
*
* @param image
* 背景图片 *
* @param modeName
* 背景图片显示模式
*/
public Panel(Image image, String modeName) {
super();
setBackgroundImage(image);
setImageDisplayMode(modeName);
}
/**
* * 设置背景图片
*
* @param image
* 背景图片
*/
public void setBackgroundImage(Image image) {
this.backgroundImage = image;
this.repaint();
}
/**
* * 获取背景图片 *
*
* @return 背景图片
*/
public Image getBackgroundImage() {
return backgroundImage;
}
/**
* * 设置背景图片显示模式 *
*
* @param modeName
* 模式名称,取值仅限于 ImagePane.TILED ImagePane.SCALED ImagePane.CENTRE
*
*/
public void setImageDisplayMode(String modeName) {
if (modeName != null) {
modeName = modeName.trim(); // 居中
if (modeName.equalsIgnoreCase(CENTRE)) {
this.imageDisplayMode = CENTRE;
modeIndex = 0;
} // 平铺
else if (modeName.equalsIgnoreCase(TILED)) {
this.imageDisplayMode = TILED;
modeIndex = 1;
} // 拉伸
else if (modeName.equalsIgnoreCase(SCALED)) {
this.imageDisplayMode = SCALED;
modeIndex = 2;
}
this.repaint();
}
}
/**
* * 获取背景图片显示模式 *
*
* @return 显示模式
*/
public String getImageDisplayMode() {
return imageDisplayMode;
}
/***************************************************************************
* * 绘制组件
*
* @see javax.swing.JComponent#paintComponent(Graphics)
*/
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g); // 如果设置了背景图片则显示
if (backgroundImage != null) {
int width = this.getWidth();
int height = this.getHeight();
int imageWidth = backgroundImage.getWidth(this);
int imageHeight = backgroundImage.getHeight(this);
switch (modeIndex) {
// 居中
case 0: {
int x = (width - imageWidth) / 2;
int y = (height - imageHeight) / 2;
g.drawImage(backgroundImage, x, y, this);
break;
} // 平铺
case 1: {
for (int ix = 0; ix < width; ix += imageWidth) {
for (int iy = 0; iy < height; iy += imageHeight) {
g.drawImage(backgroundImage, ix, iy, this);
}
}
break;
}
// 拉伸
case 2: {
g.drawImage(backgroundImage, 0, 0, width, height, this);
break;
}
}
}
}
}
项目总结
经过半个月的熬夜编码,我终于完成图书管理系统的设计与开发,达到了预期的目标。在开发的过程中过程中遇到不少困难,通过查阅相关资料,反复琢磨,请教同学,问题最终都得以解决。虽然系统的基本功能都已实现,但还是存在系统不稳定,操作提示操作不够友好等多个问题尚待解决。这个系统主要是我自己开发的,但也得到了老师和同学的很大帮助,在此对他们表示感谢。