JavaJ2SE程序设计实训任务书.docx

上传人:b****0 文档编号:10044928 上传时间:2023-05-23 格式:DOCX 页数:42 大小:320.53KB
下载 相关 举报
JavaJ2SE程序设计实训任务书.docx_第1页
第1页 / 共42页
JavaJ2SE程序设计实训任务书.docx_第2页
第2页 / 共42页
JavaJ2SE程序设计实训任务书.docx_第3页
第3页 / 共42页
JavaJ2SE程序设计实训任务书.docx_第4页
第4页 / 共42页
JavaJ2SE程序设计实训任务书.docx_第5页
第5页 / 共42页
JavaJ2SE程序设计实训任务书.docx_第6页
第6页 / 共42页
JavaJ2SE程序设计实训任务书.docx_第7页
第7页 / 共42页
JavaJ2SE程序设计实训任务书.docx_第8页
第8页 / 共42页
JavaJ2SE程序设计实训任务书.docx_第9页
第9页 / 共42页
JavaJ2SE程序设计实训任务书.docx_第10页
第10页 / 共42页
JavaJ2SE程序设计实训任务书.docx_第11页
第11页 / 共42页
JavaJ2SE程序设计实训任务书.docx_第12页
第12页 / 共42页
JavaJ2SE程序设计实训任务书.docx_第13页
第13页 / 共42页
JavaJ2SE程序设计实训任务书.docx_第14页
第14页 / 共42页
JavaJ2SE程序设计实训任务书.docx_第15页
第15页 / 共42页
JavaJ2SE程序设计实训任务书.docx_第16页
第16页 / 共42页
JavaJ2SE程序设计实训任务书.docx_第17页
第17页 / 共42页
JavaJ2SE程序设计实训任务书.docx_第18页
第18页 / 共42页
JavaJ2SE程序设计实训任务书.docx_第19页
第19页 / 共42页
JavaJ2SE程序设计实训任务书.docx_第20页
第20页 / 共42页
亲,该文档总共42页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

JavaJ2SE程序设计实训任务书.docx

《JavaJ2SE程序设计实训任务书.docx》由会员分享,可在线阅读,更多相关《JavaJ2SE程序设计实训任务书.docx(42页珍藏版)》请在冰点文库上搜索。

JavaJ2SE程序设计实训任务书.docx

JavaJ2SE程序设计实训任务书

《J2SE程序设计》课程

“网络聊天室”的设计与实现

 

 

2016年10月

“网络聊天室”的设计与实现(共26学时)

任务一:

“网络聊天室”需求分析

一、任务内容

1、“网络聊天室”业务、技术背景分析。

2、“网络聊天室”需求分析。

二、任务目标

1、知道需求分析的主要内容;

2、掌握需求分析的主要原则及方法;

3、能按软件工程规范进行应用系统需求分析;

4、能根据需求分析选择合适的开发技术;

5、提升学生自主学习和团队合作的意识;

6、帮助学生养成良好严谨的工作习惯。

三、任务环境

1、操作系统:

WindowsXP或Windows7

2、开发环境:

MyEclipse8.5,RationalRose2003

3、数据库服务器:

SQLServer2005或MySQL5.0

4、任务实施

1、业务背景分析

随着网络社会的不断发展,具有相同兴趣的网民需要互相远程交流,既要能省钱又要能即时交互,电话太贵、email又嫌慢,所以开发一个类似QQ的及时通讯系统就变得非常有意义了。

“HappyChat”聊天系统应运而生,它较之QQ的唯一好处是自主开发,用的放心,更适合在局域网内使用。

它提供的功能远不如QQ丰富,但应具有如下功能:

(1)与聊天室成员一起聊天;

(2)可以与聊天室成员私聊;(3)用户注册、登录;(4)服务器监控聊天内容;(5)服务器发送通知;(6)服务器踢人;(7)保存服务器日志。

(8)保存用户聊天信息。

2、技术背景分析

本系统要求使用java技术开发,使用文件保存数据,集成开发环境使用eclipse。

开发者应有java程序设计语言、SWING基本GUI组件、多线程、文件使用、socket编程、使用eclipse的基本知识和技能。

系统采用两层C/S体系结构,C端通过GUI与客户交互,实现注册、登陆、收发信息、退出等功能;S端是聊天系统的应用服务器,主要有处理用户注册、登录、用户收发信息、用户退出等功能。

C端和S端是通过网络交互的,其基本原理如图1所示:

图1C/S通讯基本原理图

首先服务器启动,它会建立一个专门用于接收客户端连接请求的“倾听Socket”(相当于总服务台,有固定的IP地址和端口号),然后等待客户的连接请求。

当用户想聊天时,从界面输入信息,然后与服务器建立Socket连接(连接时应指定服务器的IP地址和端口号,而客户端socket的端口由本方操作系统从空闲端口中确定),服务器端的“倾听Socket”收到连接请求后,一般会接受连接请求,并生成一个服务端socket(其端口号由服务端操作系统从空闲端口中确定),专门负责与此客户端socket的通信。

一旦连接请求成功,客户端将信息及请求通过本方socket的输出流发送给服务器端的相应socket,服务端则通过服务器端Socket的输入流接受客户端传输过来的信息及请求,分析是何请求,然后根据请求类型,进行相应的处理(如登录、转发信息等)。

服务方也可以根据需要,通过socket输出流发送信息和请求给客户端(公告)。

客户方和服务方都可以通过关闭本方的socket而结束一次通讯过程。

不难发现服务器需要能同时接受多个客户的请求,为了实现这一点,一般使用多线程机制来处理,对每一个客户端连接通讯,服务器端都有一个线程专门负责处理(相当于一个服务员专门服务一个以IP地址和端口号唯一标识的客户)。

上述方式两个聊天者之间通信必须通过服务器进行转发,聊天者多时,显然服务器是个性能瓶颈。

能不能聊天者之间直接通信?

当然可以,这是所谓的P2P聊天室,缺点是对聊天者缺乏集中监管的手段。

也有界于二者之间的,即有一服务器,接受注册和登录,实际聊天双方通信时,仍然是直接通信,此时服务器相当于一个婚姻介绍所,只管牵线搭桥,具体谈还是聊天者自己的事。

本系统采用聊天信息通过服务器转发的方式,而且只支持一个聊天室。

因为其他典型系统如电子邮件系统,FTP系统均采用类似结构,WEB服务系统本质上也是C/S系统,只不过其客户端是浏览器,采用了HTTP通信协议和HTML,所以变成了B/S结构,可以认为是C/S的一个具体应用,其机理是相似的。

3、需求分析

请根据业务分析中关于系统主要功能的介绍,从系统使用者(客户端和服务器端)角度进行具体需求分析,确定主要用例描述。

(1)客户端

功能名称

具体需求

用例描述

用户注册

(1)客户启动程序,显示出登陆界面

(2)客户选择其中的注册按钮,系统显示注册界面

(3)客户填写用户名、密码、确认密码、性别、年龄、电子邮件,按确定按钮

(4)系统验证密码和确认密码是否相符、用户名(不能重复)、电子邮件格式、年龄(大于10小于100)

(5)系统发送上述信息及“注册请求”到服务端,等待服务端返回“注册成功”消息

(6)系统提示注册成功

(7)系统返回登陆界面

若验证失败,提示“重新输入”

若服务端返回“注册失败”,提示“注册失败”

若服务端返回“注册失败用户名重名”,则提示“注册失败用户重名”。

用户登录

发送信息

接收信息

(2)服务器端

功能名称

具体需求

用例描述

用户注册

用户登录

发送信息

接收信息

用户退出

 

五、评价

评价内容

具体要求

分值

评分

自评

互评

师评得分

A

B

C

D

E

得分

得分

文档质量

结构严谨,逻辑性强,论述层次清晰;文字通顺,技术用语准确;设计思路阐述清晰,格式符合要求。

使用说明描述及使用步骤全面准确。

15

15

13

11

9

≦7

答辩水平

思路清晰,语言表达准确;基础理论知识扎实。

回答问题有理论根据,基本概念清楚。

主要问题回答准确、有深度。

有较强的实际动手能力和计算机应用能力。

40

40

36

32

28

≦24

程序功能

能运用所学知识技能去发现与解决实际问题;达到设计目标符合设计要求,功能齐全完善;能正确处理实验数据。

10

10

8

6

5

≦4

创新能力

系统设计与实现方法有技巧性、新颖性、有创新意识;有一定的理论或应用价值,有难度。

设计思路新颖,对问题有较深刻的认识。

20

20

18

16

14

≦12

综合素养

学习态度端正;主动参与性强,能够与指导教师及时沟通;学风严谨务实;按期圆满完成规定的任务。

15

15

13

11

9

≦7

总分

指导教师

签名

任务二:

“网络聊天室”总体设计

一、任务内容

1、“网络聊天室”系统总体结构分析。

2、“网络聊天室”服务器端、客户端总体设计。

二、任务目标

1、了解网络应用系统的体系结构;

2、知道网络应用系统服务器端的总体设计方法;

3、知道网络应用系统客户端的总体设计方法;

4、能进行网络应用系统服务器端、客户端总体设计;

5、帮助学生养成良好严谨、精益求精的工作作风。

三、任务环境

1、操作系统:

Windows XP 或Windows7

2、开发环境:

MyEclipse 8.5 ,RationalRose2003

3、数据库服务器:

SQL Server2005或MySQL 5.0 

四、任务实施

1、系统总体结构分析

总体设计阶段主要是确定系统的体系结构和主要模块,显然系统分客户端子系统和服务器子系统。

系统体系结构如图1所示:

收发界面

业务逻辑

网络通信

聊天服务器

监管界面

 

聊天业务处理

数据

网络通信访问

客户B

客户A

客户C

数据库/文件

TCP/IP

TCP/IP

TCP/IP

图1系统体系结构图

客户端可以划分成三子层,服务端也可以划分出三个子层,客户和服务器间通信采用的是可靠的TCP协议。

请确定基本的聊天过程:

(1)

(2)

(3)

(4)

(5)

(6)

2、服务器端总体设计

服务器端主要的模块和结构如图2所示,请确定各个.java主要功能:

图2服务器端结构图

(1)AppServer.java

(2)ServerFrame.java

(3)Connection.java

(4)WordFilter.java

3、客户端总体设计

客户端主要模块和结构如图3所示,请确定各个.java主要功能:

图3客户端结构图

(1)ChatClient.java

(2)Login.java

(3)ChatRoom.java

(4)Clock.java

 

五、评价

评价内容

具体要求

分值

评分

自评

互评

师评得分

A

B

C

D

E

得分

得分

文档质量

结构严谨,逻辑性强,论述层次清晰;文字通顺,技术用语准确;设计思路阐述清晰,格式符合要求。

使用说明描述及使用步骤全面准确。

15

15

13

11

9

≦7

答辩水平

思路清晰,语言表达准确;基础理论知识扎实。

回答问题有理论根据,基本概念清楚。

主要问题回答准确、有深度。

有较强的实际动手能力和计算机应用能力。

40

40

36

32

28

≦24

程序功能

能运用所学知识技能去发现与解决实际问题;达到设计目标符合设计要求,功能齐全完善;能正确处理实验数据。

10

10

8

6

5

≦4

创新能力

系统设计与实现方法有技巧性、新颖性、有创新意识;有一定的理论或应用价值,有难度。

设计思路新颖,对问题有较深刻的认识。

20

20

18

16

14

≦12

综合素养

学习态度端正;主动参与性强,能够与指导教师及时沟通;学风严谨务实;按期圆满完成规定的任务。

15

15

13

11

9

≦7

总分

指导教师

签名

任务三:

“网络聊天室”客户端详细设计

一、任务内容

1、“网络聊天室”客户端用户注册子模块的设计与实现。

2、“网络聊天室”客户端用户登录子模块的设计与实现。

3、“网络聊天室”客户端收发信息子模块的设计与实现。

二、任务目标

1、理解网络应用系统客户端设计的基本方法;

2、知道J2SE应用程序GUI界面设计步骤;

3、能进行J2SE应用程序界面设计;

4、能根据实际需求,完成应用程序模块代码编写与调试;

5、提升应用系统开发过程中学生自主学习和团队合作的意识;

6、培养学生良好严谨的工作作风和软件开发可持续发展能力。

三、任务环境

1、操作系统:

Windows XP 或Windows7

2、开发环境:

MyEclipse 8.5 ,RationalRose2003

3、数据库服务器:

SQL Server2005或MySQL 5.0 

5、任务实施

1、“用户注册”子模块的设计与实现。

程序将通过Register.java用户注册界面收集用户的用户名、密码、年龄、电子邮箱等。

参考界面如图1。

图1客户端注册界面

处理过程:

当用户注册时,客户端的Register.java界面收集并验证了用户的注册信息后,封装成Register_Customer类然后通过建立在Socket的连接之上的对象输出流将用户注册信息发送给服务器端,服务器端将请求转发给Connection处理,Connection在收到信息后将验证数据的完整性并在数据库中查找该用户名是否已经注册,然后将注册信息加入数据库,最后将注册结果返回给客户端。

客户端显示结果(重名、成功、失败),并断开连接。

验证要求:

(1)验证用户名是否为空:

即用户名的字符长度不为0,如果验证通过,就继续下面验证,否则返回“用户名为空”错误。

(2)验证密码是否为空:

即密码的字符长度不为0,如果验证通过,就继续下面验证,否则返回“用户密码为空”错误。

(3)验证密码的一致性:

验证密码两次输入是否一致,如果验证通过,就继续下面验证,否则返回“密码两次输入不一致,请重新输入”错误。

(4)验证年龄是否为空:

即用户年龄的字符长度不为0,如果验证通过,就继续下面验证,否则返回“用户名为空错误”

(5)验证年龄的合法性:

即用户年龄介于10到100之间,如果验证通过,就进行继续下面验证,否则返回“用户年龄为空”

(6)验证电子邮箱的合法性:

即电子邮箱字符串必须有“@”,如果验证通过,就进行继续下面验证,否则返回“电子邮箱不合法”。

在“用户注册”模块开发过程中,你遇到了哪些问题?

是怎么解决的?

遇到的问题:

解决方法:

2、“用户登录”子模块的设计与实现。

程序将通过Login.java用户登录界面收集用户的用户名、密码,如图2所示。

图2客户端登录界面

处理过程:

当用户登录时,客户端由Login.java界面收集并验证用户登录信息后,封装成Customer对象类然后通过建立在Socket的连接之上的对象输出流将用户登录信息发送给服务器端,服务器端将请求转发给Connection处理,Connection在收到信息后将验证数据的完整性并在对象型数据库中查找该用户名是否已经注册,然后将注册用户的信息与登录请求信息进行密码验证,在登录成功后将该用户添加到在线用户列表,最后将登录结果返回给客户端。

如果登录成功,客户端将继续启动聊天室主界面。

验证要求:

(1)验证用户名是否为空:

即用户名的字符长度不为0,如果验证通过,就进行继续下面验证,否则返回“用户名为空”错误,

(2)验证密码是否为空:

即密码的字符长度不为0,如果验证通过,就进行继续下面验证,否则返回“用户密码为空”错误

当以上信息验证成功时,客户端将打开与服务之间的Socket连接,用对象输出流包装后将用户登录的信息发送给服务器端,并接收服务器处理完用户登录的信息。

当客户端收到服务器返回的信息时,将会用信息对话框的形式告知用户是否注册成功,若成功则显示收发主界面ChatRoom,关闭Socket连接。

在“用户登录”模块开发过程中,你遇到了哪些问题?

是怎么解决的?

遇到的问题:

解决方法:

3、“收发信息”子模块的设计与实现。

当用户登录成功后,用户的登录界面将会消失,然后创建用户聊天室窗口,如图3所示:

图3收发信息界面

1用户发送信息

当用户需要发送聊天信息时,可以在在线列表中选中聊天对象或者“所有人”,选择发言的语气,和是否私聊就可以发送聊天信息了。

当用户点击完发送按钮后,程序开始将当前用户名、聊天对象、聊天内容、聊天语气和是否私聊进行封装,然后获取Socket连接,再用对象输出流包装Socket的输出流将聊天信息对象发送给服务器端。

2接收聊天信息

接收用户的聊天信息是用一个单独的接收线程实现的,因为客户端必须随时接收服务器发来的消息,而读取消息的方法采用的一般是读直到有消息到来的“阻塞读”方式,若在事件处理程序中读(占用的是事件处理线程)则会使程序在此后无法响应用户操作,所以需要生成一个单独的线程专门用于读取处理消息。

而发送消息的方法则是将消息放入操作系统的发送缓冲区后就返回的,所以发送执行的相当快,可以在事件处理线程中直接调用。

发送和接收可以同时进行。

在“收发信息”模块开发过程中,你遇到了哪些问题?

是怎么解决的?

遇到的问题:

解决方法:

 

五、评价

评价内容

具体要求

分值

评分

自评

互评

师评得分

A

B

C

D

E

得分

得分

文档质量

结构严谨,逻辑性强,论述层次清晰;文字通顺,技术用语准确;设计思路阐述清晰,格式符合要求。

使用说明描述及使用步骤全面准确。

15

15

13

11

9

≦7

答辩水平

思路清晰,语言表达准确;基础理论知识扎实。

回答问题有理论根据,基本概念清楚。

主要问题回答准确、有深度。

有较强的实际动手能力和计算机应用能力。

40

40

36

32

28

≦24

程序功能

能运用所学知识技能去发现与解决实际问题;达到设计目标符合设计要求,功能齐全完善;能正确处理实验数据。

25

25

22

18

15

≦12

创新能力

系统设计与实现方法有技巧性、新颖性、有创新意识;有一定的理论或应用价值,有难度。

设计思路新颖,对问题有较深刻的认识。

10

10

9

8

7

≦6

综合素养

学习态度端正;主动参与性强,能够与指导教师及时沟通;学风严谨务实;按期圆满完成规定的任务。

10

10

9

8

7

≦6

总分

指导教师

签名

任务四:

“网络聊天室”服务器端详细设计

一、任务内容

1、“网络聊天室”服务器端用户注册子模块的设计与实现。

2、“网络聊天室”服务器端用户登陆子模块的设计与实现。

3、“网络聊天室”服务器端收发信息子模块的设计与实现。

4、“网络聊天室”服务器端用户退出子模块的设计与实现。

二、任务目标

1、理解网络应用系统服务器端设计的基本方法;

2、知道J2SE应用程序GUI界面设计步骤;

3、能进行J2SE应用程序界面设计;

4、能根据实际需求,完成应用程序模块代码编写与调试;

5、提升应用系统开发过程中学生自主学习和团队合作的意识;

6、培养学生良好严谨的工作作风和软件开发可持续发展能力。

三、任务环境

1、操作系统:

Windows XP 或Windows7

2、开发环境:

MyEclipse 8.5 ,RationalRose2003

3、数据库服务器:

SQL Server2005或MySQL 5.0 

6、任务实施

1、“用户注册”子模块的设计与实现。

处理过程或步骤:

(1)从数据库读取数据:

首先创建一个File文件类,载入“user.txt”,再用对象输入流ObjectInputStream包装File文件类,将存储在“user.txt”得向量对象Vector中载入内存中,现在系统中的向量就是对象型数据库,存储着每条用户信息对象。

(2)判断是否是第一个注册用户:

检测内存中的数据库对象集的当前容量是否为空,如果是,将收集的注册用户信息对象添加到数据库对象集中,然后直接写入数据库,否则继续进行其他判断。

(3)判断用户名是否已经存在:

检测内存中的数据库对象集的中有没有和当前收集的注册用户名相同的记录,如果有,就退出检测,否则继续下一个检测。

(4)判断用户名是否为系统关键字:

检测当前收集的用户名是否为“所有人”,如果是,就退出检测,否则继续下一个检测。

因为“所有人”这个名字会和系统发生冲突,用户发给所有人的信息将会使用“所有人”这个特殊用户名。

(5)用户名有效后写入数据库:

当前面的验证全部都通过的时候,将用户的注册信息对象添加到用户数据库中,然后创建文件输出流,再用对象输出流包装后写入本地文件将其持久化。

最后关闭对象输出流和文件输入流。

(6)给客户端返回信息:

将用户注册成功或失败的信息用打印流包装Socket以后,输出给客户端注册结果的详细信息。

(7)在监管界面上显示信息,如图1所示。

图1服务器管理界面

(8)关闭Socket连接:

当以上的程序都正常运行后,需要关闭Socket连接,否则将会浪费服务器与客户端之间的资源。

在“用户注册”模块开发过程中,你遇到了哪些问题?

是怎么解决的?

遇到的问题:

解决方法:

2、“用户登陆”子模块的设计与实现。

处理过程或步骤:

(1)去数据库读用户数据:

打开用户数据库文件“user.txt”,将用户数据对象集载入内存,以供下面的程序使用。

(2)验证用户名是否存在:

在对象数据库中查找是否有与登陆用户的用户名相同的记录,如果有继续验证,否则退出验证处理,返回“没有此用户”错误。

(3)验证用户密码是否正确:

如果有与登录用户的用户名相同的记录,接着判断密码是否正确。

如果密码正确,继续验证,否则退出验证处理,返回“用户密码错误”。

(4)验证用户是否已经登录:

在服务器的已登录用户列表中查找是否有该用户,如果有该用户,退出验证处理返回“该用户已经登录”错误。

否则继续下面的验证。

(5)验证是否已经超过最大登录人数:

检测服务器的在线人数是否已经达到限制的最大人数,如果是,退出验证处理返回“当前服务器人数已满,请稍后再试”错误。

否则继续下面的验证。

(6)返回客户端信息:

如果以上验证全部正确,就返回客户端“用户登录成功”。

(7)在监控界面显示信息。

(8)关闭Socket连接:

当以上的程序都正常运行后,需要关闭Socket连接,否则将会浪费服务器与客户端之间的资源。

在“用户登陆”模块开发过程中,你遇到了哪些问题?

是怎么解决的?

遇到的问题:

解决方法:

3、“收发信息”子模块的设计与实现。

处理过程或步骤:

(1)接收用户聊天信息:

当用户发送聊天信息时,服务端将会收到客户端用Socket传输过来的聊天信息对象,然后将其强制转换为Message对象。

(2)过滤用户聊天内容的非法信息(可选):

分析聊天信息对象的聊天内容,用语言过滤类将非法字符过滤掉。

语言过滤的时候将会打开“badword.txt”文件,不允许出现的关键词将会存储在文件中,关键字之间以逗号分割。

当聊天内容中出现要过滤的关键字是将会被系统屏蔽,而聊天内容也将替换成“非法内容,系统屏蔽”。

(3)返回聊天信息:

系统从Message中提出消息类型,再根据类型将消息强制转化ChatMessage,调用ChatMeaage中方法,获取目的客户名称列表,根据目的地用户名从用户名、socket键值表中获取socket,再通过socket将Message转发到目的客户。

Message定义如下:

1消息类型

接收消息请求,登录请求,登录响应,注册请求,注册响应

2获取类型方法getTypeChatMessage继承自Message,增加如下属性:

(1).目的用户名列表;

(2)用户聊天内容;相应的还有LoginMessage、LoginACKMessage、RegisterMessage,RegisterACKMessage.LogoutMessage(客户退出)等。

在“收发信息”模块开发过程中,你遇到了哪些问题?

是怎么解决的?

遇到的问题:

解决方法:

LogoutMsg

QuitMsg

AcceptMsg

AcceptMsg

LoginMsg

LogoutMsg

LogoutMsg

AcceptMsg

AcceptMsg

LoginACKMsg

RegisterACKMsg

RegisterMsg

客户方

A

服务方

LoginMsg

客户方

X

图2通信协议交互图

4、“用户退出”子模块的设计与实现。

处理过程或步骤:

(1)接收退出信息:

当用户退出时,客户端将会用基于Socket的对象输出流发给服务器退出对象。

(2)在线列表中删除用户:

用户退出后

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

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2