swing·图书管理系统项目回顾之主界面和图书类别添加

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     }

 

posted @ 2013-05-31 20:26  Hipk  阅读(503)  评论(0编辑  收藏  举报