图书信息管理系统
一、前言
实现一个简单的图书管理的程序BookManager。要求系统能为客户提供下列各项服务:
- 管理人员能够使用BookManager程序对图书基本信息、图书类别进行管理,包括数据的添加、修改、删除和浏览;
- 能够使用查询功能,快速查看到指定图书或图书种类的基本信息。
- 提供友好的交互界面,可以方便用户进行功能选择,实现信息的管理和查询,并可清晰地显示相关信息。
二、基本流程
三、连接数据库
首先在workbench创建数据库db_book,以及三个表格t_user、t_booktype、t_user分别作为图书、图书类别以及管理员登录的数据保存。
并给它们配置相应的属性与参数。
随后就可以在eclipse中,连接数据库。
/**
* 数据库工具类
* @author
*
*/
public class DbUtil {
private String dbUrl="jdbc:mysql://localhost:3306/db_book?serverTimezone=UTC";//数据库连接地址
private String dbUserName="root";//用户名
private String dbPassword="1234";//密码
private String jdbcName="com.mysql.cj.jdbc.Driver";//驱动名称
/**
* 获取数据库连接
* @return
* @throws Exception
*/
public Connection getCon()throws Exception{
Class.forName(jdbcName);
Connection con=DriverManager.getConnection(dbUrl,dbUserName,dbPassword);
return con;
}
/**
* 关闭数据库连接
* @param con
* @throws Exception
*/
public void closeCon(Connection con)throws Exception{
if(con!=null) {
con.close();
}
}
/**
* 主函数测试
* @param args
*/
public static void main(String[] args) {
DbUtil dbUtil=new DbUtil();
try {
dbUtil.getCon();
System.out.println("数据库连接成功!");
}catch(Exception e) {
e.printStackTrace();
System.out.println("数据库连接失败!");
}
}
连接成功
四、界面设计(以图书类别为例
界面包括登录初始界面、主页面、图书新增/维护页面、图书类别新增/维护页面。
其中的逻辑都是相通的。这里以图书类别维护页面为例。
在design中加入必要控件后,对其界面进行简单调整,使其更加美观。
并加入一些响应函数
/**
* 表格行点击事件处理
* @param e
*/
private void bookTypeMousePressed(MouseEvent evt) {
int row=bookTypeTable.getSelectedRow();//获取选中行,返回行号
idTxt.setText((String)bookTypeTable.getValueAt(row,0));
bookTypeNameTxt.setText((String)bookTypeTable.getValueAt(row,1));
bookTypeDescTxt.setText((String)bookTypeTable.getValueAt(row,2));
}
/**
* 重置表单
*/
private void resetValue() {
this.idTxt.setText("");
this.bookTypeNameTxt.setText("");
this.bookTypeDescTxt.setText("");
}
五、增查改删功能实现(以图书类别为例
1. 新增图书类别
/**
* 图书类别添加事件处理
* @param e
*/
private void bookTypeAddActionPerformed(ActionEvent evt) {
//获取文本
String bookTypeName=this.bookTypeNameTxt.getText();
String bookTypeDesc=this.bookTypeDescTxt.getText();
//判断图书类别名称是否为空
if(StringUtil.isEmpty(bookTypeName)) {
JOptionPane.showMessageDialog(null,"图书类别名称不能为空!");
return;
}
//封装实体
BookType bookType=new BookType(bookTypeName,bookTypeDesc);
//功能实现
Connection con=null;
try {
con=dbUtil.getCon();
int n=bookTypeDao.add(con,bookType);
if(n==1) {
JOptionPane.showMessageDialog(null,"图书类别添加成功!");
resetValue();
}else {
JOptionPane.showMessageDialog(null,"图书类别添加失败!");
}
}catch(Exception e) {
e.printStackTrace();
JOptionPane.showMessageDialog(null,"图书类别添加失败!");
}finally {
try {
dbUtil.closeCon(con); //关闭数据库
}catch(Exception e) {
e.printStackTrace();
}
}
}
2. 删除图书类别
/**
* 图书类别删除事件处理
* @param e
*/
private void bookTypeDeleteActionEvent(ActionEvent e) {
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();
boolean flag=bookDao.existBookByBookTypeId(con,id);
if(flag) {
JOptionPane.showMessageDialog(null,"当前图书下类别有图书,不能删除此类别");
return ;
}
int deleteNum=bookTypeDao.delete(con,id);
if(deleteNum==1) {
JOptionPane.showMessageDialog(null,"删除成功");
this.resetValue();
this.fillTable(new BookType());
}else {
JOptionPane.showConfirmDialog(null,"删除失败");
}
}catch(Exception m) {
m.printStackTrace();
JOptionPane.showMessageDialog(null,"删除失败");
}finally {
try {
dbUtil.closeCon(con); //关闭数据库
}catch(Exception s) {
s.printStackTrace();
}
}
}
}
3. 修改图书类别
/**
* 图书类别修改事件处理
* @param evt
*/
private void bookTypeUpdateActionEvent(ActionEvent evt) {
//获取三个数据
String id=idTxt.getText();
String bookTypeName=bookTypeNameTxt.getText();
String bookTypeDesc=bookTypeDescTxt.getText();
//对id进行判断,如果id是空的,则不能进行修改
if(StringUtil.isEmpty(id)) {
JOptionPane.showMessageDialog(null,"请选择要修改的记录");
return ;
}
//判断bookTypeName
if(StringUtil.isEmpty(bookTypeName)) {
JOptionPane.showMessageDialog(null,"图书类别名称不能为空");
return ;
}
//实例化
BookType bookType=new BookType(Integer.parseInt(id),bookTypeName,bookTypeDesc);
//功能实现
Connection con=null;//开始连接
try {
con=dbUtil.getCon();
int modifyNum=bookTypeDao.Update(con,bookType);
if(modifyNum==1) {
JOptionPane.showMessageDialog(null,"修改成功");
this.resetValue();//重置
this.fillTable(new BookType());//重现显示一个实例
}else {
JOptionPane.showMessageDialog(null,"修改失败");
}
}catch(Exception e) {
e.printStackTrace();
JOptionPane.showMessageDialog(null,"修改失败");
}finally {
try {
dbUtil.closeCon(con); //关闭数据库
}catch(Exception e) {
e.printStackTrace();
}
}
4. 查询图书类别
/**
* 图书类别搜索事件处理
* @param evt
*/
private void bookTypeSearchActionPerformed(ActionEvent evt) {
String s_bookTypeName=this.s_bookTypeNameTxt.getText();//获取用户输入的图书类别
BookType bookType=new BookType();
bookType.setBookTypeName(s_bookTypeName);//把图书类别设置进去
this.fillTable(bookType);
}
六、功能呈现
1. 点击进入登录页面
2. 登录后进入主页面
3. 图书类别新增
点击“添加”后
4. 图书类别修改
点击表格中想要修改的行,即可在下方白色框中进行修改,点击“修改”保存。
5. 图书类别查询
在上方搜索框输入“自然”并点击查询,出现以下结果
6. 图书新增、修改、删除、查询
新增图书,点击“添加”保存
删除图书信息
点击删除后
点击是-确定
删除成功
修改图书信息
修改图书详情说明,并点击“修改”
顶部输入“算法”进行查询
7. 关于我们
8. 退出软件
点击安全退出
点击“是”,则退出软件。
——12月25日02:53。软件实习再见啦!