计算机网络课程设计—通讯录软件系统设计.docx
- 文档编号:172749
- 上传时间:2022-10-05
- 格式:DOCX
- 页数:50
- 大小:1.38MB
计算机网络课程设计—通讯录软件系统设计.docx
《计算机网络课程设计—通讯录软件系统设计.docx》由会员分享,可在线阅读,更多相关《计算机网络课程设计—通讯录软件系统设计.docx(50页珍藏版)》请在冰豆网上搜索。
《计算机网络》
课程设计报告
题目:
通讯录软件系统
学生姓名:
指导老师:
学院:
信息科学与工程学院
专业班级:
物联网工程1402班
完成时间:
2016年10月16日
目录
第一章需求分析 3
1.1服务器端功能要求 3
1.2客户端功能要求 3
第二章总体设计 3
2.1总体结构 3
2.2模块关系 3
2.3流程图 4
第三章详细设计 5
3.1客户端 5
3.2服务器端 8
3.3函数调用关系 11
第四章调试分析 12
第五章运行结果 13
5.1登录功能 13
5.2查询本机通讯录 14
5.3备份每个用户的通讯录 15
5.4更新每个用户的通讯录 16
5.5加密功能 18
第六章课程设计总结 18
参考文献 20
附录 20
第一章需求分析
本设计要求完成一个基于C/S模式的通讯录备份软件。
采用C/S架构。
应该具有易用、美观的图形界面。
1.1服务器端功能要求
(1)能够验证客户身份,接收客户端的备份通讯录的请求,能够实时备份和更新客户的通讯录。
(2)加密存储每个用户的通讯录
1.2客户端功能要求
(1)能登陆连接到服务器,回应:
连接成功/失败。
(2)能备份本机通讯录。
(3)能实时更新本机通讯录。
(4)能查询本机通讯录。
第二章总体设计
2.1总体结构
客户端建立一个本地文件存储本地数据,通过对文件进行读写操作,实现本地数据的增、删、查等功能。
登录成功后,可以将本地联系人信息备份到服务器,当本地文件中的联系人信息意外丢失时,可以将服务器端的备份内容更新到本地联系人信息,类似于微信的联系人备份和导出功能。
服务器负责验证客户端的登录账号和密码,并通过JDBC与Mysql建立连接。
在客户登录成功后,响应客户端的备份请求,实现联系人数据的加密存储;响应客户端的更新要求,将客户联系人信息导入到本地文件中。
2.2模块关系
本地增删查改
图2.2通讯录系统模块关系图
2.3流程图
图2.3通讯录系统流程图
第三章详细设计
如图3.1所示,一共建立了两个包,客户端和服务器。
图3.1通讯录软件工程包展开图
3.1客户端
客户端的三个类分别为Login,LoginListener,Operation。
3.1.1Login类
实现登录界面,如图3.2所示,并实例化LoginListener类给登录按钮添加ActionListner监听方法。
图3.2通讯录系统客户端登录界面
3.1.2LoginListener类
实现ActionListener类,重写抽象函数ActionPerformed。
当单击登录按钮时,利用Socket连接到服务器,将客户的账号和密码传给服务器,等待服务器传来的验证结果。
验证通过则弹出操作主界面,失败则弹出用户名或密码错误的窗体。
响应单击登录按钮的代码如下所示。
publicvoidactionPerformed(ActionEvente){
try{
//发送密码和用户名到客户端
Stringuser=text.getText();
Stringpass=pw.getText();
Sockets=newSocket("127.0.0.1",8000);
OutputStreamos=s.getOutputStream();
OutputStreamWriterosw=newOutputStreamWriter(os);
PrintWriterpw=newPrintWriter(osw,true);
pw.println(user+"%"+pass);
//接收服务器发回来的确认信息
InputStreamis=s.getInputStream();
InputStreamReaderisr=newInputStreamReader(is);
BufferedReaderbr=newBufferedReader(isr);
Stringyorn=br.readLine();
//显示登录成功界面或密码错误界面
if(yorn.equals("ok")){
Operationo=newOperation();
o.SetSocket(s);
frame.dispose();
}
else{
JTextFieldtext=newJTextField("用户名或密码错误");
JFrameframe=newJFrame();
frame.setTitle("错误");
frame.setLocation(550,300);
frame.setSize(200,100);
frame.setDefaultCloseOperation
(2);
frame.add(text);
frame.setVisible(true);
}
}catch(Exceptione1){}
}
3.1.3Operation类
实现操作主界面,如图3.3所示,同样implementsActionListener类,重写抽象方法ActionPerfomed。
实现监听的代码风格不同于登录按钮,没有重新创建一个类,直接在构造方法中实现。
图3.3通讯录系统客户端主界面
Operation中重要的一点是实现Socket的传递,在单击登录后,客户端会实Socket对象而不能重新实例化一个新的对象,实现值传递的方法如下。
在Operation中定义一个方法SetSocket,在LoginListener中收到服务器传来验证成功的指令后,实例化Operation对象,并调用SetSocket函数实现Socket的传递。
SetSocket方法及其调用如下所示。
publicSockets;
publicvoidSetSocket(Sockets){
this.s=s;
}
if(yorn.equals("ok")){
Operationo=newOperation();
o.SetSocket(s);
frame.dispose();
}
3.2服务器端
服务器端的三个类分别实现为ServerFrame、Sever、DESPlus。
3.2.1SeverFrame类
简单实现了一个服务器端的窗体,用来显示客户端是否登录成功和客户端发来的指令。
如图3.4所示。
图3.4通讯录备份软件服务器端显示窗体
3.2.2Server类
是服务器端的主体部分,实现的功能有响应客户端的登录请求,连接Mysql,响应客户端的备份、更新请求。
响应登录代码:
//服务器在8000端口监听
@SuppressWarnings("resource")
ServerSocketss=newServerSocket(8000);
System.out.println("服务器正在8000端口监听……");
Sockets=ss.accept();
//接收用户名和密码
InputStreamis=s.getInputStream();
InputStreamReaderisr=newInputStreamReader(is);
BufferedReaderbr=newBufferedReader(isr);
Stringuandp=br.readLine();
Stringu=uandp.split("%")[0];
Stringp=uandp.split("%")[1];
//将用户名密码的验证结果传送到客户端
OutputStreamos=s.getOutputStream();
OutputStreamWriterosw=newOutputStreamWriter(os);
PrintWriterpw=newPrintWriter(osw,true);
if(u.equals("siru")&&p.equals("123")){
pw.println("ok");
sf.text.append("客户登录成功"+"\n");
}else{
//发送错误信号到客户端
pw.println("error");
}
响应客户端备份和更新指令的代码:
//响应客户端备份命令
if(message.equals("备份")){
sf.text.append("备份联系人信息"+"\n");
Class.forName("org.gjt.mm.mysql.Driver");
Connectioncn=DriverManager.getConnection("jdbc:
mysql:
//127.0.0.1:
3306/通讯录","root","");
Statementst=cn.createStatement();
st.executeUpdate("deletefrom联系人wherenameisnotnull");
Stringstring=br.readLine();
while(!
string.equals("end")){
Stringname=string.split("")[0];
Stringtelephone=string.split("")[1];
PreparedStatementps=cn.prepareStatement("insertinto联系人(name,telephone)values(?
?
)");
ps.setString(1,desPlus.encrypt(name));
ps.setString(2,desPlus.encrypt(telephone));
ps.executeUpdate();
string=br.readLine();
}
pw.println("备份成功");
}
//响应客户端更新的命令
if(message.equals("更新")){
sf.text.append("更新联系人信息"+"\n");
Class.forName("org.gjt.mm.mysql.Driver");
Co
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机网络 课程设计 通讯录 软件 系统 设计