swing图书管理系统项目视频来自这里
一.主界面MainFrm
主界面的布局应根据功能需求分析这一步确定,对于一个简单的图书管理系统来说,主要应实现两大类的功能:图书类别类的添加和维护,以及图书的添加和维护
即确定的项目功能菜单:
1.图书类别的添加
2.图书类别的维护
3.图书的添加
4.图书的维护
5.退出系统选项
6.关于作者[也即关于java1234.com]
实现步骤:创建主界面JFrame--->添加菜单栏 JMenuBar--->添加JMenu[分别命名为 基本数据维护,图书类别管理,图书管理,关于我们]--->添加JMenuItem[图书类别管理下两个:添加图书类别,图书类别维护;图书管理下两个:添加图书,图书维护;退出系统和关于java1234]
MainFrm中添加JDestop pane,方便显示各个功能界面
二.图书类别添加
图书类别添加功能总的设计思路是:获取用户输入--->向数据库插入数据--->返回操作信息(成功或失败)。
细化:
第一步,先数据库建表。创建db_book数据库,然后建表t_bookType,主要包含id,bookTypeName,bookTypeDesc三个字段,且id为主键。
第二步,获取用户输入。
1.获取用户输入后应该先判断插入的数据是否有效,就像登录验证时的判断一样,后续功能也会有类似判断语句,故此时我们可以考虑将实现判断输入是否为空的代码单独搞进StrUtil类,该类向外提供接口String str为带判断的字符串对象或Object对象变量名是否指向null
1 public class StrUtil {
2 public static boolean isEmpty(String str){
3 if("".equals(str)||str==null){
4 return true;
5 }
6
7 return false;
8 }
9
10 public static boolean isNotEmpty(String str){
11 if(!"".equals(str)&&str!=null){
12 return true;
13 }
14 return false;
15 }
16 }
2.封装bookType的属性和成员方法---BookType.java,至于为什么封装到回顾修改功能时再说。根据获取的用户输入创建bookType对象。
1 package com.java1234.model;
2
3 public class BookType {
4 private int id;
5 private String bookTypeName;
6 private String bookTypeDesc;
7
8 public BookType() {
9 super();
10 // TODO Auto-generated constructor stub
11 }
12 public int getId() {
13 return id;
14 }
15 public void setId(int id) {
16 this.id = id;
17 }
18 public BookType(int id, String bookTypeName, String bookTypeDesc) {
19 super();
20 this.id = id;
21 this.bookTypeName = bookTypeName;
22 this.bookTypeDesc = bookTypeDesc;
23 }
24 public BookType(String bookTypeName, String bookTypeDesc) {
25 super();
26 this.bookTypeName = bookTypeName;
27 this.bookTypeDesc = bookTypeDesc;
28 }
29 public String getBookTypeName() {
30 return bookTypeName;
31 }
32 public void setBookTypeName(String bookTypeName) {
33 this.bookTypeName = bookTypeName;
34 }
35 public String getBookTypeDesc() {
36 return bookTypeDesc;
37 }
38 public void setBookTypeDesc(String bookTypeDesc) {
39 this.bookTypeDesc = bookTypeDesc;
40 }
41 @Override
42 public String toString() {
43 return this.getBookTypeName();
44 }
45 }
第三步,向数据库插入数据
包com.java1234.dao下面的bookTypeDao.java中编写数据库插入数据的方法实现代码
1 public int bookTypeAdd(Connection conn, BookType bookType) throws Exception{
2
3 String sql = "insert into t_bookType values(null, ?, ?)";
4 PreparedStatement pst = conn.prepareStatement(sql);
5 pst.setString(1, bookType.getBookTypeName());
6 pst.setString(2, bookType.getBookTypeDesc());
7
8 return pst.executeUpdate();
9 }
添加按钮的事件监听器,返回操作结果信息
1 private void jb_bookTypeAddActionPerformed(java.awt.event.ActionEvent evt) {
2 String bookTypeName = bookTypeNameTxt.getText();
3 String bookTypeDesc = bookTypeDescArea.getText();
4
5 if(StrUtil.isEmpty(bookTypeName)){
6 JOptionPane.showMessageDialog(null, "图书类别名称不能为空");
7 return;
8 }
9
10 BookType bookType = new BookType(bookTypeName, bookTypeDesc);
11 Connection conn = null;
12 try {
13 conn = dbUtil.getCon();
14 if(1 == bookTypeDao.bookTypeAdd(conn, bookType)){
15 resertValues();
16 JOptionPane.showMessageDialog(null, "添加成功");
17 }else{
18 JOptionPane.showMessageDialog(null, "添加失败");
19 }
20 } catch (Exception e) {
21 JOptionPane.showMessageDialog(null, "添加失败");
22 e.printStackTrace();
23 }finally{
24 try {
25 dbUtil.conClose(conn);
26 } catch (Exception e) {
27 // TODO Auto-generated catch block
28 e.printStackTrace();
29 }
30 }
31 }
1 private void jb_resertActionPerformed(java.awt.event.ActionEvent evt) {
2 resertValues();
3 }
一定要注意驱动程序与数据库的连接的关闭操作,否则将耗费系统资源。
最后,在主界面的 添加图书类别 菜单项添加事件监听器
1 private void bt_AddActionPerformed(java.awt.event.ActionEvent evt) {
2 JIBookTypeAddInterFrm jiBookTypeAddInterFrm = new JIBookTypeAddInterFrm();
3 jiBookTypeAddInterFrm.setVisible(true);
4 this.table.add(jiBookTypeAddInterFrm);
5
6 }