目 录
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
通过“通信录管理系统”课程设计实习过程,进一步巩固《Java程序设计》课程所学的理论知识,增强学生利用所学内容获取相关知识,以解决实习过程中所面临的问题:良好的人机界面的布局设置,数据库连接,Java访问修改数据库,实现通讯录管理系统等的设计功能和技术难点:使用Java连接数据库,难度较大,这要求对Idea和相关数据库的熟练使用,对数据库要有一定的设计和使用能力,以提高利用Java语言实际动手进行程序设计的能力。
分析设计背景和现有系统的优缺点,说明进行系统设计的必要性。站在用户的角度,详细分析系统的功能需求。
用户进入登录主界面,若选择登录,则在该界面输入账号以及密码,之后系统验证,验证通过,用户进入系统界面,若验证不成功,系统显示提示框,用户重新输入账号密码登录该系统;若是新用户,点击注册按钮,进入注册界面,填写相关注册信息。登录成功后,用户可以根据自己的需要来管理通讯录,流程图如图所示:
未进行注册的用户,在登录时,点击“注册按钮”,系统显示注册界面,用户注册时需要填写相应的用户名、密码、确认密码、地址、手机号以及电子邮箱,填写完成后,点击提交,系统验证。以下是注册主界面图:
用户注册成功时系统弹出提示框提示用户注册成功,以下是“注册成功”提示窗口图:
当用户输入密码与确认密码不一致时,系统提示“密码不一致,请重新输入”。以下是用户输入密码不一致时,提示窗口图:
实现以上功能主要代码如下:
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());
用户登录界面主要包括主界面欢迎语的展示,用户名、密码输入,登录、注册按钮以及取消按钮,以下为登录主界面窗口图:
用户登录时,要输入的用户名或密码为空时,系统提示“登录名和密码不能为空”,以下为系统提示“登录名和密码不能为空”窗口图:
当用户输入的密码或用户名错误时,系统提示“用户名或密码错误”,以下为系统提示“用户名或密码错误”窗口图:
以下为实现以上功能的主要代码:
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("");
}
用户可以根据自己的需要来修改用用户名、地址、手机号、电子邮箱以及修改密码等个人信息,修改个人信息主界面如下图所示:
修改个人信息功能实现的代码如下:
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.2联系人信息查询
用户点击“查找联系人”按钮之后,系统弹出,查找“查找联系人”窗口,用户可以在窗口中填写(至少一项)联系人的信息,系统返回符合用户所填信息的联系人,查找联系人窗口如下:
例如,选择群组,同事,系统查询数据库中所有在同事群组中的联系人的信息并返回:
实现查找联系人主要代码如下:
ContactsDao contactsDao = new ContactsDao();
int index = groups.get(contactgroupinput.getSelectedIndex()).getGroupid();
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);
}
用户可以根据自己的需要来更改某个联系人的信息,选择要进行信息更改的联系人,点击界面下方的“更新”按钮,系统弹出“更新联系人”窗口,在该窗口用户可以进行信息的修改,修改信息完成后,点击提交,系统提示“更新成功”即可完成修改联系人信息,同时,用户也可以选择“重置”,来清空当前信息,重新填写。修改联系人信息窗口如下:
实现联系人信息修改的主要代码如下:
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);
}
与修改联系人信息类似,用户可以选择某个联系人或者多个联系人,点击“删除”按钮来删除选中的联系人及其信息,点击“删除”按钮,系统将弹出确认窗口,系统提示“删除成功”。删除联系人界面如下图:
在弹出的窗口中,用户选择“是”按钮后,系统将选中的用户的信息删除并且提示“删除成功”,提示框如下图:
实现删除联系人主要代码如下:
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);
}
该系统还提供了群组的功能,将多个联系人划归到某个分组中,用户可以在主界面点击“添加群组”,进行分组的添加,系统弹出添加分组对话框,用户在该对话框中,输入要添加的群组的名称。添加群组窗口如下图:
输入群组名称后,用户点击“添加”按钮,系统提示,群组添加成功,同样的,用户也可以选择重置,此时所输入的群组名称将被清空,待用户重新填写。添加成功窗口如下图:
实现添加群组功能主要代码如下:
GroupDao groupDao = new GroupDao();
int action = groupDao.insetgroup(groupnameinput.getText(),userid);
if(action==1){
JOptionPane.showMessageDialog(null,"群组"+groupnameinput.getText()+"添加成功");
this.setVisible(false);
}
除了以上的联系人管理功能外,本系统还具有群发邮件的功能,用户可以在主界面选择多个用户,点击“发送邮件”按钮,系统将弹出“输入”窗口,用户在此窗口中输入要发送的信息内容。电子邮件输入框如下图:
邮件内容输入完毕后,点击“确定”,系统将提示“发送成功”。邮件发送成功界面如下图:
实现群发邮件功能主要代码如下:
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;
}
[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