计算机网络课程设计—通讯录软件系统设计Word文件下载.docx

上传人:b****1 文档编号:13104339 上传时间:2022-10-05 格式:DOCX 页数:50 大小:1.38MB
下载 相关 举报
计算机网络课程设计—通讯录软件系统设计Word文件下载.docx_第1页
第1页 / 共50页
计算机网络课程设计—通讯录软件系统设计Word文件下载.docx_第2页
第2页 / 共50页
计算机网络课程设计—通讯录软件系统设计Word文件下载.docx_第3页
第3页 / 共50页
计算机网络课程设计—通讯录软件系统设计Word文件下载.docx_第4页
第4页 / 共50页
计算机网络课程设计—通讯录软件系统设计Word文件下载.docx_第5页
第5页 / 共50页
点击查看更多>>
下载资源
资源描述

计算机网络课程设计—通讯录软件系统设计Word文件下载.docx

《计算机网络课程设计—通讯录软件系统设计Word文件下载.docx》由会员分享,可在线阅读,更多相关《计算机网络课程设计—通讯录软件系统设计Word文件下载.docx(50页珍藏版)》请在冰豆网上搜索。

计算机网络课程设计—通讯录软件系统设计Word文件下载.docx

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("

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("

sf.text.append("

客户登录成功"

+"

\n"

}else{

//发送错误信号到客户端

error"

}

响应客户端备份和更新指令的代码:

//响应客户端备份命令

if(message.equals("

备份"

备份联系人信息"

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("

"

Stringtelephone=string.split("

PreparedStatementps=cn.prepareStatement("

insertinto联系人(name,telephone)values(?

?

)"

ps.setString(1,desPlus.encrypt(name));

ps.setString(2,desPlus.encrypt(telephone));

ps.executeUpdate();

string=br.readLine();

}

备份成功"

}

//响应客户端更新的命令

更新"

更新联系人信息"

Co

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1