Java GUI窗体开发:简易的图书馆系统(Java+Oracle+JFormDesigner)

项目简介

用到的知识:Java,Oracle,窗体

工具:IDEA、Oracle

项目整体架构

在这里插入图片描述
由此可见,项目也是采用的MVC架构,dao包用于操作数据库,entity包包含本项目的实体类,images包是本项目用到的图片,service包是服务层用于实现一些基本的逻辑操作,util包包含本项目用到的工具类,ui包是本项目的视图层,test包是单元测试。
在这里插入图片描述

功能实现

用户:

  • 简单的登录注册,改密
  • 个人信息管理
  • 书目检索
  • 借书,还书
  • 根据用户平时的借阅喜好推荐类似的数据
  • 查看借阅排行榜
  • 查看借阅记录

管理员(商家):

  • 对图书书进行基本的操作:增加,删除,修改,查询
  • 管理用户
  • 查看借阅记录信息
  • 个人信息的修改

预览效果

登录页

在这里插入图片描述

在这里插入图片描述

用户主页

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

管理员页面

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
本项目采用的MVC架构,dao包用于操作数据库,entity包包含本项目的实体类,images包是本项目用到的图片,META-INF包是生成Jar包时产生的文件夹,util包包含本项目用到的工具类,view包是本项目的视图层,用于设计窗口显示,ui包是本项目的视图层,test包是单元测试。

项目包分析

util包

在这里插入图片描述

项目的工具包,

JdbcUtil.java主要是设计了数据库的驱动,地址,用户名及密码,和控制数据库的连接与断开

StringUtil.java只是用于判断字符串是否为空,只有空格也算为空

email.java 用于发送邮件

entity包

包含了数据库表的实体对象
Lombok是一个Java库,能自动插入编辑器并构建工具,简化Java开发。通过添加注解的方式,不需要为类编写getter或eques方法,同时可以自动化日志变量。

  • @ToString 注解在类,添加toString方法。
  • @NoArgsConstructor 注解在类,生成无参的构造方法。
  • @AllArgsConstructor 注解在类,生成包含类中所有字段的构造方法。
  • @Data
    注解在类,生成setter/getter、equals、canEqual、hashCode、toString方法,如为final属性,则不会为该属性生成setter方法。

在这里插入图片描述

dao包

进行数据库的访问,面向接口编程
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
包含一些基本的用户操作,例如登录,修改信息等等,这里不一一列举。

service包

业务逻辑层,对从数据库拿到的数据进行一些简单的逻辑处理后传到前端展示
在这里插入图片描述

在这里插入图片描述

ui包

视图层是利用的swing组件设计,但这个不是项目的重点,因为Java的swing已经很少有人用了,可以直接使用idea中的JFormDesigner插件进行拖拉控件。

我们只需设计按钮和表格的触发事件

项目总结

项目中使用到了Java的swing技术,但是现在已经很少有人会用Java去写软件界面了,Java不能像C#那样拖拉控件设计界面,但是可以在idea中安装JFormDesigner插件实现C#那样的效果。

MVC全名是Model View
Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。

MVC即围绕着数据库进行操作,本项目只是简单地实现了对数据库的增删改查,比较适合新手练习。

  • 1
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.sql.*; import javax.swing.table.*; import java.util.Vector; public class BorrowBookList extends JFrame implements ActionListener { DataBaseManager db=new DataBaseManager(); ResultSet rs; Container c; JPanel panel1,panel2; JLabel BookNameLabel,StudentNameLabel; JTextField BookNameTextField,StudentNameTextField; JButton SearchBtn,ExitBtn; JTable table=null; DefaultTableModel defaultModel=null; public BorrowBookList() { super("书籍借阅一览!"); c=getContentPane(); c.setLayout(new BorderLayout()); BookNameLabel=new JLabel("书名 ",JLabel.CENTER); StudentNameLabel=new JLabel("借阅者",JLabel.CENTER); BookNameTextField=new JTextField(15); StudentNameTextField=new JTextField(15); SearchBtn=new JButton("查询"); ExitBtn=new JButton("退出"); SearchBtn.addActionListener(this); ExitBtn.addActionListener(this); Box box1=Box.createHorizontalBox(); box1.add(StudentNameLabel); box1.add(StudentNameTextField); box1.add(SearchBtn); Box box2=Box.createHorizontalBox(); box2.add(BookNameLabel); box2.add(BookNameTextField); box2.add(ExitBtn); Box boxH=Box.createVerticalBox(); boxH.add(box1); boxH.add(box2); boxH.add(Box.createVerticalGlue()); panel1=new JPanel(); panel1.add(boxH); panel2=new JPanel(); String[] name={"借阅者","书名","借阅日期","还入日期","备注"}; String[][] data=new String[0][0]; defaultModel=new DefaultTableModel(data,name); table=new JTable(defaultModel); table.setPreferredScrollableViewportSize(new Dimension(400,80)); JScrollPane s=new JScrollPane(table); panel2.add(s); c.add(panel1,BorderLayout.NORTH); c.add(panel2,BorderLayout.SOUTH); } public void actionPerformed(ActionEvent e) { if(e.getSource()==ExitBtn) { db.closeConnection(); this.dispose(); } else if(e.getSource()==SearchBtn) { String strSQL="select studentname,bookname,borrowdate,returndate,com from bookbrowse";
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值