Java Swing 圖形界面開發通訊錄管理系統

目 錄

末尾下載源碼

1實習目的............................................... 2

2實習內容............................................... 2

3總體設計方案........................................... 2

3.1總統功能結構圖...................................................... 2

3.2各子功能的主要算法流程圖............................................ 3

4系統實現............................................... 4

4.1通訊錄管理模塊...................................................... 4

4.1.1用戶註冊...................................................... 4

4.1.2用戶登錄...................................................... 7

4.1.3修改個人信息以及密碼.......................................... 8

4.2聯繫人管理......................................................... 10

4.2.1聯繫人信息瀏覽............................................... 10

4.2.2聯繫人信息查詢............................................... 10

4.2.3聯繫人新增................................................... 11

4.2.4聯繫人信息修改............................................... 12

4.2.5聯繫人刪除................................................... 12

4.2.6添加羣組..................................................... 13

4.2.7羣發郵件..................................................... 14

5總結.................................................. 15

6參考文獻.............................................. 15

1實習目的

通過“通信錄管理系統”課程設計實習過程,進一步鞏固《Java程序設計》課程所學的理論知識,增強學生利用所學內容獲取相關知識,以解決實習過程中所面臨的問題:良好的人機界面的佈局設置,數據庫連接,Java訪問修改數據庫,實現通訊錄管理系統等的設計功能和技術難點:使用Java連接數據庫,難度較大,這要求對Idea和相關數據庫的熟練使用,對數據庫要有一定的設計和使用能力,以提高利用Java語言實際動手進行程序設計的能力。

2實習內容

分析設計背景和現有系統的優缺點,說明進行系統設計的必要性。站在用戶的角度,詳細分析系統的功能需求。

3總體設計方案

3.1總統功能結構圖

 

3.2各子功能的主要算法流程圖

 

用戶進入登錄主界面,若選擇登錄,則在該界面輸入賬號以及密碼,之後系統驗證,驗證通過,用戶進入系統界面,若驗證不成功,系統顯示提示框,用戶重新輸入賬號密碼登錄該系統;若是新用戶,點擊註冊按鈕,進入註冊界面,填寫相關注冊信息。登錄成功後,用戶可以根據自己的需要來管理通訊錄,流程圖如圖所示:

 

  1. 聯繫人流程圖如圖所示

  1. 聯繫人查詢流程圖如圖所示

  1. 修改聯繫人信息流程圖如圖所示

 

4系統實現

4.1通訊錄管理模塊

4.1.1用戶註冊

未進行註冊的用戶,在登錄時,點擊“註冊按鈕”,系統顯示註冊界面,用戶註冊時需要填寫相應的用戶名、密碼、確認密碼、地址、手機號以及電子郵箱,填寫完成後,點擊提交,系統驗證。以下是註冊主界面圖:

 

用戶註冊成功時系統彈出提示框提示用戶註冊成功,以下是“註冊成功”提示窗口圖:

當用戶輸入密碼與確認密碼不一致時,系統提示“密碼不一致,請重新輸入”。以下是用戶輸入密碼不一致時,提示窗口圖:

實現以上功能主要代碼如下:

  if (action == 0) {
            JOptionPane.showMessageDialog(
null, "註冊失敗");
        }
else {
            JOptionPane.showMessageDialog(
null, "註冊成功");
           
this.setVisible(false);
        }
    }
else {
        JOptionPane.showMessageDialog(
null, "密碼不一致重新輸入");
       
return;
    }
}
else {
   
usernameinput.setText("");
   
userpsdinput.setText("");
   
userpsdconfirminput.setText("");
   
userphoneinput.setText("");
   
useraddressinput.setText("");
   
useremailinput.setText("");

當某個用戶名已經被註冊時,系統提示“用戶名已存在”,功能實現主要代碼如下:

   if (!userDao.checkusername(usernameinput.getText())) {
        JOptionPane.showMessageDialog(
null, "用戶名已存在,請重新輸入");
       
usernameinput.setText("");
       
return;
    }

以下爲提示“用戶名已存在”窗口圖:
 

用戶在進行註冊的時候,未將所有需要註冊的信息添加完整,系統將提示“信息輸入不完整”,功能實現主要代碼如下:

 if(usernameinput.getText().equals("") || psd.equals("") ||      psdcomfirm.equals("") ||
      
useraddressinput.getText().equals("")||     userphoneinput.getText().equals("")||        useremailinput.getText().equals("")) {
        JOptionPane.showMessageDialog(
null, "信息輸入不完整");
       
return;
    }

   以下爲提示“信息輸入不完整”窗口圖:

 

除此之外,對用戶密碼的進行加密也是一個基礎重要的功能,以下爲對用戶註冊時,輸入的密碼進行加密的功能,功能實現的主要代碼如下:

 if (psd.equals(psdcomfirm)) {
        MD5Util md5Util =
new MD5Util();
       
try {
            psd = md5Util.encode(psd);
        }
catch (Exception ex) {
            ex.printStackTrace();
        }

int action= userDao.insetuser(usernameinput.getText(),psd,psdcomfirm
                
useraddressinput.getText(),userphoneinput.getText(),

userem ailinput.getText());

4.1.2用戶登錄

用戶登錄界面主要包括主界面歡迎語的展示,用戶名、密碼輸入,登錄、註冊按鈕以及取消按鈕,以下爲登錄主界面窗口圖:

用戶登錄時,要輸入的用戶名或密碼爲空時,系統提示“登錄名和密碼不能爲空”,以下爲系統提示“登錄名和密碼不能爲空”窗口圖:

當用戶輸入的密碼或用戶名錯誤時,系統提示“用戶名或密碼錯誤”,以下爲系統提示“用戶名或密碼錯誤”窗口圖:

以下爲實現以上功能的主要代碼:

if (username_input.getText().equals("") || userpsd_input.getText().equals("")) {
          JOptionPane.showMessageDialog(
null, "登錄名和密碼不能爲空!");
      }
else {
          
userid = userDao.checkpsd(username_input.getText(), new String(userpsd_input.getPassword()));
          
if (userid == 0) {
              JOptionPane.showMessageDialog(
null, "用戶名或密碼錯誤");
          }
else {
              System.
out.println("登錄成功" + userid);
              
new Home(userid);
              
this.setVisible(false);
          }
         }
            }
else if (source == register) {
                 
new register(userid);
            }
else {
                 
username_input.setText("");
                 
userpsd_input.setText("");
            }

 

4.1.3修改個人信息以及密碼

用戶可以根據自己的需要來修改用用戶名、地址、手機號、電子郵箱以及修改密碼等個人信息,修改個人信息主界面如下圖所示:

修改個人信息功能實現的代碼如下:

String sql = "update user set user_psd = ? where user_id = ? ";
   
int action = 0;
   
try {
        
conn = dbUtils.getConnection();
       
ps = conn.prepareStatement(sql);
       
ps.setString(1, psd);
       
ps.setInt(2, userid);
        action =
ps.executeUpdate();
        System.
out.println("修改成功 用戶編號" + userid);
       
dbUtils.freeConn(conn, ps, rs);
    }
catch (SQLException e) {
        e.printStackTrace();
    }
   
return action;
   點擊修改密碼按鈕,進入修改密碼主界面,用戶需要輸入舊密碼、新密碼以及確認密碼,修改密碼界面如下圖:

當輸入的舊密碼與之前的密碼不一致時,系統提示“舊密碼輸入錯誤”,如下圖:

當輸入的新密碼與下面的輸入的確認密碼不一致時,系統提示“兩次密碼不一樣”,如下圖:

實現以上功能主要代碼如下:

if (!md5Util.encode(oldpsdinput.getText()).equals(userspsd)) {
      JOptionPane.showMessageDialog(
null, "舊密碼輸入錯誤");
       
return;
    }
   
if (userspsd == null || psd == null) {
      JOptionPane.showMessageDialog(
null, "信息輸入不完整");
       
return;
    }
    
if (psd.equals(psdcomfirm)) {
      
if (userDao.setpsd(md5Util.encode(psd), userid) == 1) {
         JOptionPane.showMessageDialog(
null, "修改成功");
        
this.setVisible(false);
        
selfinfo.setVisible(false);
        
home.setVisible(false);
        
new Login();
        }
else {
                      JOptionPane.showMessageDialog(
null, "密碼錯誤");
        }
            }
else {
        JOptionPane.showMessageDialog(
null, "兩次密碼不一致");
            }
               }
catch (Exception ex) {
            ex.printStackTrace();
               }

 

 

4.2聯繫人管理

 

4.2.1聯繫人信息瀏覽

用戶登錄成功後,進入到界面,主界面主要包括:查找所有聯繫人、查找聯繫人(按照用戶信息查找)、添加羣組、新建聯繫人、退出以及查看個人信息、刪除、更新以及發送郵件按鈕。主界面如下圖:

4.2.2聯繫人信息查詢

用戶點擊“查找聯繫人”按鈕之後,系統彈出,查找“查找聯繫人”窗口,用戶可以在窗口中填寫(至少一項)聯繫人的信息,系統返回符合用戶所填信息的聯繫人,查找聯繫人窗口如下:

例如,選擇羣組,同事,系統查詢數據庫中所有在同事羣組中的聯繫人的信息並返回:

實現查找聯繫人主要代碼如下:

       ContactsDao contactsDao = new ContactsDao();
              
int index =                groups.get(contactgroupinput.getSelectedIndex()).getGroupid();
               ArrayList<Contacts> contactsArrayList =
new ArrayList<>();
               contactsArrayList = contactsDao.selectcontacts(
contactnameinput.getText().trim(),                contactphoneinput.getText().trim(),         contacttephoneinput.getText().trim(),
       
contactsexinput.getText().trim(),              contactaddressinput.getText().trim(),                contactemailinput.getText().trim(),          contactbeizhuinput.getText().trim(), index, userid);
              
this.setVisible(false);
              
if (selectresu != null) {
                          
selectresu.setVisible(false);
               }
else {
                          
home.setVisible(false);
                              }
              
new selectresu(userid, contactsArrayList);

 

4.2.3聯繫人新增

用戶在主界面點擊“新建聯繫人”按鈕,系統彈出新建聯繫人窗口,用戶可以在該窗口中,填寫將要添加的聯繫人的各項信息,填寫完畢後點擊“添加”,系統提示“添加成功”,即可新增一個聯繫人。用戶也可以選擇點擊“重置”按鈕,重新填寫聯繫人信息,新增聯繫人窗口如下圖:

實現新增聯繫人功能主要代碼如下:

ContactsDao contactsDao = new ContactsDao();
int index = groups.get(contactgroupinput.getSelectedIndex()).getGroupid();
int action = contactsDao.insetcontacts(contactnameinput.getText(), contactphoneinput.getText(), contacttephoneinput.getText(),
contactsexinput.getText(), contactaddressinput.getText(), contactemailinput.getText(), contactbeizhuinput.getText(), index, userid);
if (action == 1) {
    JOptionPane.showMessageDialog(
null, "添加成功");
   
this.setVisible(false);
}

 

4.2.4聯繫人信息修改

用戶可以根據自己的需要來更改某個聯繫人的信息,選擇要進行信息更改的聯繫人,點擊界面下方的“更新”按鈕,系統彈出“更新聯繫人”窗口,在該窗口用戶可以進行信息的修改,修改信息完成後,點擊提交,系統提示“更新成功”即可完成修改聯繫人信息,同時,用戶也可以選擇“重置”,來清空當前信息,重新填寫。修改聯繫人信息窗口如下:

實現聯繫人信息修改的主要代碼如下:

ContactsDao contactsDao = new ContactsDao();
int index = groups.get(contactgroupinput.getSelectedIndex()).getGroupid();
int action = contactsDao.updatecontact(contacts.getContactid(), contactnameinput.getText(), contactphoneinput.getText(), contacttephoneinput.getText(),contactsexinput.getText(),

contactaddressinput.getText(), contactemailinput.getText(), contactbeizhuinput.getText(), index, userid);
if (action == 1) {
    JOptionPane.showMessageDialog(
null, "更新成功");
   
this.setVisible(false);
}

4.2.5聯繫人刪除

與修改聯繫人信息類似,用戶可以選擇某個聯繫人或者多個聯繫人,點擊“刪除”按鈕來刪除選中的聯繫人及其信息,點擊“刪除”按鈕,系統將彈出確認窗口,系統提示“刪除成功”。刪除聯繫人界面如下圖:

在彈出的窗口中,用戶選擇“是”按鈕後,系統將選中的用戶的信息刪除並且提示“刪除成功”,提示框如下圖:

實現刪除聯繫人主要代碼如下:

for (int i = 0; i < selectrows.length; i++) {
      name = name +
contactss.get(selectrows[i]).getContactsname() + ",";
    }
   
int valuex = JOptionPane.showConfirmDialog(

                 null, "你確認要刪除" + name + "這幾個聯繫人嗎?", "請確認",
          JOptionPane.
YES_NO_OPTION, JOptionPane.WARNING_MESSAGE);
  
if (valuex == JOptionPane.YES_OPTION) {
      
for (int i = 0; i < selectrows.length; i++) {
          action = contactsDao.deletecontact(
contactss.get(selectrows[i]).

getContactid(), userid);
      }
      
if (action == 1) {
          JOptionPane.showMessageDialog(
null, "刪除成功");
          
this.setVisible(false);
          
new Home(userid);
    }

 

4.2.6添加羣組

該系統還提供了羣組的功能,將多個聯繫人劃歸到某個分組中,用戶可以在主界面點擊“添加羣組”,進行分組的添加,系統彈出添加分組對話框,用戶在該對話框中,輸入要添加的羣組的名稱。添加羣組窗口如下圖:

輸入羣組名稱後,用戶點擊“添加”按鈕,系統提示,羣組添加成功,同樣的,用戶也可以選擇重置,此時所輸入的羣組名稱將被清空,待用戶重新填寫。添加成功窗口如下圖:

實現添加羣組功能主要代碼如下:

GroupDao groupDao = new GroupDao();
int action =  groupDao.insetgroup(groupnameinput.getText(),userid);
if(action==1){
    JOptionPane.showMessageDialog(
null,"羣組"+groupnameinput.getText()+"添加成功");
   
this.setVisible(false);
}

 

4.2.7羣發郵件

除了以上的聯繫人管理功能外,本系統還具有羣發郵件的功能,用戶可以在主界面選擇多個用戶,點擊“發送郵件”按鈕,系統將彈出“輸入”窗口,用戶在此窗口中輸入要發送的信息內容。電子郵件輸入框如下圖:

郵件內容輸入完畢後,點擊“確定”,系統將提示“發送成功”。郵件發送成功界面如下圖:

實現羣發郵件功能主要代碼如下:

public  boolean sendEmail(String emailaddress,String code){
      
try {
          HtmlEmail email =
new HtmlEmail();
          email.setHostName(
"smtp.163.com");
          email.setCharset(
"UTF-8");
          email.addTo(emailaddress);
          email.setFrom(
"[email protected]", "通訊錄管理系統");
          email.setAuthentication(
"[email protected]", "522672296q");
          email.setSubject(
"通訊錄管理系統");
          email.setMsg(code);
          email.send();
          
return true;
      }
      
catch(Exception e){
          e.printStackTrace();
          
return false;
      }

5總結

 

 

6參考文獻

[1] 王國輝,王易.JSP數據庫系統開發案例精選[M].北京:人民郵電出版社.2006.5 

[2] 王家華.軟件工程[M].瀋陽:東北大學出版社.2005 

[3] 周影.網絡編程語言JSP實例教程[M].北京:電子工業出版社.2003.6

[4] 薩師煊,王珊.數據庫系統概論(第三版)[M].北京:高等教育出版社.2000

[5] 張新曼.精通JSP-Web開發技術與典型應用[M].北京:人民郵電出版社.2007

[6] 張海藩.軟件工程導論[M].北京:清華大學出版社.2003

[7] 武延軍,黃飛躍.精通JSP編程技術[M].北京:人民郵電出版社.2001.8

[8] 鄒竹彪.JSP網絡編程從入門到精通[M].北京:清華大學出版社.2007

[9] 黃理,李積善,曹林有,張勇.用JSP輕鬆開發Web網站(第一版)[M].北京:北京希望電子出版社.2001

 

 

下載地址(點擊下載)

下載地址2(防止失效)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章