swing·第八讲·学习总结

swing图书管理系统视频来自这里

http://www.java1234.com/a/yuanchuang/swing/

一,代码的重用性和面向对象思想

  明确面向对象的一个特点:低耦合高内聚,相似功能代码尽量封装到一块。

  例如,第八讲中图书查询和表单维护这两块都有一个图书类别下拉框,代码实现用一个函数搞定

 1 private void fillBookType(String type) {
 2         Connection conn = null;
 3         BookType bookType = null;
 4         try {
 5             conn = dbUtil.getCon();
 6             ResultSet rs = (ResultSet) bookTypeDao.bookTypeList(conn,
 7                     new BookType());
 8             bookType = new BookType();
 9             bookType.setBookTypeName("请选择...");
10             bookType.setId(-1);
11             if ("search".equals(type)) {
12                 this.s_jcbBookType.addItem(bookType);
13             } else if ("modify".equals(type)) {
14                 this.jcb_bookTypeName.addItem(bookType);
15             }
16             while (rs.next()) {
17                 bookType = new BookType();
18                 bookType.setId(rs.getInt("id"));
19                 bookType.setBookTypeName(rs.getString("bookTypeName"));
20                 if ("search".equals(type)) {
21                     this.s_jcbBookType.addItem(bookType);
22                 } else if ("modify".equals(type)) {
23                     this.jcb_bookTypeName.addItem(bookType);
24                 }
25             }
26             dbUtil.conClose(conn);
27         } catch (Exception e) {
28             e.printStackTrace();
29         }

图书查询这块调用发方法时传递变量“search”,表单操作这一块调用时传递参数“modify”

1 this.fillBookType("search");
2 this.fillBookType("modify");

代码的重用性的另一个好处是:图书类别和图书的修改,删除这两个功能上的相似,当前者相应功能代码编写完成后,后者代码编写时可以完全copy过来,只需修改少许变量名称,增删少许语句即可,可以大大提高项目代码的编写效率。

看代码说话,下面的是图书类别的修改删除功能代码块

private void jb_deleteActionPerformed(java.awt.event.ActionEvent evt) {
        String id = idTxt.getText();
        if (StrUtil.isEmpty(id)) {
            JOptionPane.showMessageDialog(null, "请选择您要删除的图书类别");
            return;
        }
        Connection conn = null;
        try {
            conn = dbUtil.getCon();
            if(bookDao.getBookList(conn, Integer.parseInt(id))){
                JOptionPane.showMessageDialog(null, "该图书类下包含有图书,不能删除");
                return;
            }
            int deleteNum = bookTypeDao.bookTypeDelete(conn, id);
            if (deleteNum == 1) {
                JOptionPane.showMessageDialog(null, "删除成功");
                resertValues();
                fillTable(new BookType());
            }else{
                JOptionPane.showMessageDialog(null, "删除失败");
            }
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            JOptionPane.showMessageDialog(null, "删除成功");
        } finally {
            try {
                dbUtil.conClose(conn);
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }

    private void jb_modfiyActionPerformed(java.awt.event.ActionEvent evt) {
        //通过插件搞的swing组件默认都是当前类容器的属性对象,都可以通过this.来调用
        String id = idTxt.getText();
        String bookTypeName = bookTypeNameTxt.getText();
        String bookTypeDesc = bookTypeDescTxt.getText();
        if (StrUtil.isEmpty(id)) {
            JOptionPane.showMessageDialog(null, "请选择您要修改的图书类别");
            return;
        }
        BookType bookType = new BookType(Integer.parseInt(id), bookTypeName,
                bookTypeDesc);
        Connection conn = null;
        try {
            conn = dbUtil.getCon();
            
            int modifyNum = bookTypeDao.bookTypeModify(conn, bookType);
            if (modifyNum == 1) {
                JOptionPane.showMessageDialog(null, "修改成功");
                resertValues();
                fillTable(new BookType());
            }else{
                JOptionPane.showMessageDialog(null, "修改失败");
            }
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            JOptionPane.showMessageDialog(null, "修改失败");
        } finally {
            try {
                dbUtil.conClose(conn);
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }

下面的则是图书的修改和删除的代码块

 1 private void jb_deleteActionPerformed(java.awt.event.ActionEvent evt) {
 2         String id = idTxt.getText();
 3         if (StrUtil.isEmpty(id)) {
 4             JOptionPane.showMessageDialog(null, "请选择您要删除的图书类别");
 5             return;
 6         }
 7         Connection conn = null;
 8         try {
 9             conn = dbUtil.getCon();
10             int deleteNum = bookDao.bookDelete(conn, Integer.parseInt(id));
11             if (deleteNum == 1) {
12                 JOptionPane.showMessageDialog(null, "删除成功");
13                 resertValues();
14                 fillTable(new Book());
15             }else{
16                 JOptionPane.showMessageDialog(null, "删除失败");
17             }
18         } catch (Exception e) {
19             // TODO Auto-generated catch block
20             e.printStackTrace();
21             JOptionPane.showMessageDialog(null, "删除成功");
22         } finally {
23             try {
24                 dbUtil.conClose(conn);
25             } catch (Exception e) {
26                 // TODO Auto-generated catch block
27                 e.printStackTrace();
28             }
29         }
30     }
31 
32     private void jb_modifyActionPerformed(java.awt.event.ActionEvent evt) {
33         String id = idTxt.getText();
34         String bookName = bookNameTxt.getText();
35         String author = this.authorTxt.getText();
36         String sex = "";
37         if (this.jrbmale.isSelected()) {
38             sex = "男";
39         } else if (this.jrbfemale.isSelected()) {
40             sex = "女";
41         }
42         float price = Float.valueOf(this.priceTxt.getText());
43         String bookDesc = bookDescTxt.getText();
44         if (StrUtil.isEmpty(id)) {
45             JOptionPane.showMessageDialog(null, "请选择您要修改的图书类别");
46             return;
47         }
48         BookType bookType = (BookType) this.jcb_bookTypeName.getSelectedItem();
49         String bookTypeName = bookType.getBookTypeName();
50         Book book = new Book(Integer.parseInt(id), bookName, author, sex,
51                 price, bookDesc, bookTypeName);
52         Connection conn = null;
53         try {
54             conn = dbUtil.getCon();
55             int modifyNum = bookDao.bookModify(conn, book);
56             if (modifyNum == 1) {
57                 JOptionPane.showMessageDialog(null, "修改成功");
58                 resertValues();
59                 fillTable(new Book());
60             } else {
61                 JOptionPane.showMessageDialog(null, "修改失败");
62                 return;
63             }
64         } catch (Exception e) {
65             // TODO Auto-generated catch block
66             e.printStackTrace();
67             JOptionPane.showMessageDialog(null, "修改失败");
68         } finally {
69             try {
70                 dbUtil.conClose(conn);
71             } catch (Exception e) {
72                 // TODO Auto-generated catch block
73                 e.printStackTrace();
74             }
75         }
76     }

代码的重用性和面向对象编程的思想很重要,很重要!!!

二,数据库实现多表操作时注意主外键关联的问题,例如本讲删除某个图书类别时应该考虑该类别是否包含有图书数据,有相应的数据时就应提示用户不能实现删除操作

1 if(bookDao.getBookList(conn, Integer.parseInt(id))){
2     JOptionPane.showMessageDialog(null, "该图书类下包含有图书,不能删除");
3     return;
4 }

三,人每天都应该反省下今天的自己,今天的时间是否花费在高效率的工作当中,今天为人处事是否有哪一点不很合理,该怎样做才更合理...自我约束,戒急戒躁。

转载于:https://www.cnblogs.com/hipk/articles/3105280.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值