提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
此图书管理系统实现了一个系统的基本功能,是一种流程简单,效率较高的查询系统。
项目具体要求
1、设计一个简单的图书管理系统,可以对图书的相关信息进行一些基本操作,包括数据的添加、修改,删除和浏览;能使用查询功能,快速查看到指定的图书信息。
2、在添加图书类别基本信息、图书基本信息相关数据时,图书类别号不能重复,不能添加重复的图书信息。
3、 应用程序提供操作界面,可以方便用户进行功能选择,实现信息的管理和查询,并可以清晰地显示相关信息。
二、项目实现过程
1.项目相关
技术:Swing+jdbc+MySQL
开发工具:Java2020,提前添加插件windowbuilder
2.数据库相关操作
①建立名为db_book的数据库,字符集选择utf8,方便数据库可以正常显示中文字符。
②在名为db_book的数据库下创建三个表。
创建t_book表
t_book表中的相关属性如下:
bookDesc属性为图书内容描述,所有将其数据类型设为varchar(1000)
创建t_booktype表
t_booktype表中的相关属性如下:
注意将id的约束设为主键,非空并且可以自增。
创建t_user表
t_user表中的相关属性如下:
注意将id的约束设为主键,非空并且自增。
③创建一个model,将t_book表与t_booktype进行主外键关联。
首先打开架构设计器,添加要建立关联的两个表。
分别添加两个表的属性。
进入EER界面,将两个表要关联的属性进行连线。
以上为数据库的相关操作。
3.Java相关操作
①首先建立一个project,命名为BookManager
②添加MySQL连接驱动
③创建四个包,分别用来实现与MySQL的连接以及图书管理实体和图书管理界面。
④在第一个包下创建三个类,分别用来实现图书类别,图书信息的增查改删以及用户登录验证。
例如:
图书信息的修改
/**
* 图书信息修改
* @param con
* @param book
* @return
* @throws Exception
*/
public int update(Connection con,Book book)throws Exception{
String sql="update t_book set bookName=?,author=?,sex=?,price=?,bookDesc=?,bookTypeId=? where id=?";
PreparedStatement pstmt=con.prepareStatement(sql);
pstmt.setString(1,book.getBookName());
pstmt.setString(2,book.getAuthor());
pstmt.setString(3,book.getSex());
pstmt.setFloat(4,book.getPrice());
pstmt.setString(5,book.getBookDesc());
pstmt.setInt(6,book.getBookTypeId());
pstmt.setInt(7,book.getId());
return pstmt.executeUpdate();
}
⑤在第二个包下创建三个类,分别用来实现图书信息,图书类别和用户实体的定义。
例如:
用户实体的实现:
/**
* 用户实体
* @author WenRan
*
*/
public class User {
private int id;//编号
private String userName;//用户名
private String password;//密码
//用来辅助LogOnFrm,连接到数据库
public User() {
super();
// TODO Auto-generated constructor stub
}
public User(String userName, String password) {
super();
this.userName = userName;
this.password = password;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
⑥在第三个包下创建两个类,分别是数据库工具类和字符串工具类
例如:
字符串工具类
/**
* 字符串工具类
* @author WenRan
*
*/
public class StringUtil {
/**
* 判断登陆界面输入的字符串是否为空
* @param str
* @return
*/
public static boolean isEmpty(String str) {
if(str==null||"".equals(str.trim())) {
return true;
}else {
return false;
}
}
/**
* 判断登陆界面输入的字符串是否不为空
* @param str
* @return
*/
public static boolean isNotEmpty(String str) {
if(str!=null && !"".equals(str.trim())) {
return true;
}else {
return false;
}
}
}
⑦在第四个包下创建多个类,分别实现图书管理系统各个界面的设计:
图书添加内部窗体,图书管理内部窗体,图书类型内部窗体等
以图书管理内部窗体为例:
图书事件的删除处理:
/**
* 图书删除事件处理
* @param evt
*/
private void bookDeleteActionPerformed(ActionEvent evt) {
String id=idTxt.getText();//获取id
if(StringUtil.isEmpty(id)) {//id为空
JOptionPane.showMessageDialog(null,"请选择要删除的记录");
return ;
}
//为防止用户误点,要进行一个确认设置
int n=JOptionPane.showConfirmDialog(null,"确定要删除该记录吗?");
if(n==0) {
Connection con=null;//开始连接
try {
con=dbUtil.getCon();
int deleteNum=bookDao.delete(con,id);
if(deleteNum==1) {
JOptionPane.showMessageDialog(null,"删除成功");
this.resetValue();
this.fillTable(new Book());
}else {
JOptionPane.showConfirmDialog(null,"删除失败");
}
}catch(Exception m) {
m.printStackTrace();
JOptionPane.showMessageDialog(null,"删除失败");
}finally {
try {
dbUtil.closeCon(con); //关闭数据库
}catch(Exception s) {
s.printStackTrace();
}
}
}
}
打开windowbuilder编辑界面可以对相关界面进行设计,如下:
经过以上操作,与管理员,图书,图书类别这三个实体的相关操作均已实现,界面也通过windowbuilder进行了相关设计,完成了图书管理系统的基本功能。在界面设计的部分也可以添加相应图标,让界面不会太单调。
项目实现界面
①登录,输入用户名和密码进行登录。
②图书管理主界面
③图书类别添加界面
④图书类别维护界面(包含图书类别的查询修改删除)
⑤图书添加界面
⑥图书维护界面(包含图书信息的查询修改删除)
⑦关于我们(简要介绍)
⑧退出系统
总结
以上即为图书管理系统的详细实现步骤,还存在相关细节问题,会继续改善。