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(防止失效)

 

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