目 錄
末尾下載源碼
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各子功能的主要算法流程圖
用戶進入登錄主界面,若選擇登錄,則在該界面輸入賬號以及密碼,之後系統驗證,驗證通過,用戶進入系統界面,若驗證不成功,系統顯示提示框,用戶重新輸入賬號密碼登錄該系統;若是新用戶,點擊註冊按鈕,進入註冊界面,填寫相關注冊信息。登錄成功後,用戶可以根據自己的需要來管理通訊錄,流程圖如圖所示:
- 聯繫人流程圖如圖所示
- 聯繫人查詢流程圖如圖所示
- 修改聯繫人信息流程圖如圖所示
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(防止失效)