《Java课程设计》需求分析文档要求文档格式.docx

上传人:b****6 文档编号:19634384 上传时间:2023-01-08 格式:DOCX 页数:17 大小:308.73KB
下载 相关 举报
《Java课程设计》需求分析文档要求文档格式.docx_第1页
第1页 / 共17页
《Java课程设计》需求分析文档要求文档格式.docx_第2页
第2页 / 共17页
《Java课程设计》需求分析文档要求文档格式.docx_第3页
第3页 / 共17页
《Java课程设计》需求分析文档要求文档格式.docx_第4页
第4页 / 共17页
《Java课程设计》需求分析文档要求文档格式.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

《Java课程设计》需求分析文档要求文档格式.docx

《《Java课程设计》需求分析文档要求文档格式.docx》由会员分享,可在线阅读,更多相关《《Java课程设计》需求分析文档要求文档格式.docx(17页珍藏版)》请在冰豆网上搜索。

《Java课程设计》需求分析文档要求文档格式.docx

4.1登录界面功能表

表4-1登录功能表

序号

功能内容

控件

对象名

备注

1.

用户名输入框

JTextField

textfield

2.

密码输入框

JPasswordField

password

3.

登录

JButton

b1

4.

取消

b2

5.

注册

b3

6.

存放组件的容器

JPanel

P1

存放b1b2b3

7.

盒式容器

Box

baseBox

存box1box2

8.

box1box2

9.

标签

JLabel

标记用户名密码

4.2注册界面功能表

表4-2注册功能表

TextField

textfield1

Pw1

确认密码输入框

Pw2

年龄输入框

textfield2

复选框男

JCheckBox

C1

选定

复选框女

C2

注册按钮

bsubmit

取消按钮

bcancel

存放信息

10.

P2

存放两个提交取消按钮

11.

P3

存放性别选项

4.3聊天界面功能表

表4-3聊天功能表

12.

聊天内容显示框

TextArea

textareaMessage

13.

用户列表显示框

textareaList

14.

发送内容输入框

15.

用户列表标签

userlist

16.

聊天室标签

chatroom

17.

退出按钮

buttonout

18.

发送按钮

buttonsent

19.

JPanel

panelout

存放退出按钮

20.

p

21.

显示指定组件内容

JScrollPane

messagepanel

22.

listpanel

23.

sendpanel

24.

格式布局

GridBagLayout()

25.

GridBagLayout类布置的组件的约束

GridBagConstraints

bgc

4.4文件功能表

表4-4文件功能表

指定流里面读取对象

ObjectInputStream

br

从流里读取内容

getInputStream

文件写

PrintWriter

pw

读对象

readObject

客户端套接字

Socket

fromClient

建立连接

服务器端套接字

ServerSocket

server

5.系统流程分析

5.1系统总体设计流程图

聊天应用程序包括登录界面和注册界面,当启动登录界面,用户填写信息后登录,登录的信息将反馈给聊天服务器,服务器验证用户信息,若验证成功则跳到聊天界面,否则,服务器反馈给登录界面拒绝登录消息。

启动注册界面,用户在界面填写注册信息,注册信息反馈给服务器,服务器要验证用户信息,验证成功,跳到登录界面,否则,服务器反馈给注册界面,显示错误消息。

图5-1系统总体流程图

5.2详细设计流程图

1.服务器结构

服务器端,处理用户的请求,当收到“来自定时器”消息时,服务器给客户反馈,客户端在聊天界面更新消息和在线用户信息;

服务器收到“登录信息”请求时,验证登录信息,验证成功则更新聊天界面里的消息和在线用户信息,否则给客户端反馈“用户不存在”消息;

当服务器端接收到“注册消息”请求时,服务器验证注册信息,若验证成功,将注册信息写入文件保存,并反馈给客户端“注册成功”信息,跳到登录界面,否则在注册界面给客户端反馈“用户已经存在”消息。

图5-2服务器结构流程图

2.客户端结构

登录界面,将登录消息发送给聊天服务器,聊天服务器验证登录消息,如果验证成功将“欢迎”消息发送给登录界面,登录界面向用户显示聊天界面;

如果验证不成功,则将拒绝消息发送给登录界面,登录界面显示错误对话框。

注册界面,同登录界面。

图5-3登录界面流程图

聊天界面,服务器接收“来自定时器”的消息,随时更新消息和在线用户信息,若用户在聊天界面中单击“发送”按钮,服务器接收用户“发送”请求,服务器将用户的发送信息保存,向聊天界面,若用户退出,服务器收到用户“用户退出”请求,将在线列表中删除用户,并更新聊天界面里的消息和在线用户信息。

图5-4聊天界面流程图

6.界面设计

6.1登录界面

运行Login.java程序会出现如下界面。

图6-1登录界面

6.2注册界面

运行Resigter.java可出现如下界面,注册信息时,用户名不能为中文,程序采用了RandomAccessFile来随机读取文件,为单独设置类来处理中文字符,用户若注册用户名信息含有中文将无法读取,尽管注册成功,登录时将报错:

用户名或密码错误。

图6-2注册界面

6.3聊天界面

用户先注册,在登录,登录成功可以出现如下界面。

图6-3聊天界面

7.系统测试

用户xiaowang和wang注册后登录聊天室,xiaowang在聊天室里发送消息:

你好;

wang发送消息:

好。

两个用户都能看到彼此所发的信息。

图7-1系统测试

图7-2系统测试

8.关键代码说明

表8-1关键代码表

事件内容

事件名

1

2

3

聊天

4

发送

publicConnect(SocketinFromClient){//建立一个用户

//vcList=newVector<

String>

();

Stringmsg="

"

;

Stringmesg="

try{

//服务器端先读再写

streamFromClient=newBufferedReader(newInputStreamReader(

inFromClient.getInputStream()));

//System.out.println("

客户端连接成功"

);

streamtoClient=newObjectOutputStream(

inFromClient.getOutputStream());

服务器反馈信息给用户"

msg=streamFromClient.readLine();

System.out.println("

从客户获得的信息为:

+msg);

if(msg.equals("

来自定时器"

)){

streamtoClient.writeObject(vector);

//将指定的对象写入

//ObjectOutputStream

streamtoClient.writeObject(vcList);

}

elseif(msg.equals("

登录消息"

msg=streamFromClient.readLine();

System.out.println("

客户信息为:

intver=verify(msg);

验证消息为:

+ver);

if(ver==1){

Stringcolon=newString("

:

"

intindex=msg.lastIndexOf(colon);

Stringusername=msg.substring(0,index);

System.out.println("

usernaem-->

>

+username);

if(!

(vcList.indexOf(username)>

=0)){//如果用户列表中不存在该用户则在列表中添加该用户

streamtoClient.writeObject("

欢迎"

//addElement将指定的组件添加到此向量的末尾,将其大小增加

//1。

如果向量的大小比容量大,则增大其容量。

vcList.addElement((String)username);

System.out.println("

用户列表人数为:

+vcList.size());

}else{//已经登录了

//System.out.println("

拒绝登录"

//给客户端反馈信息

}

}else{

streamtoClient.writeObject("

该用户不存在"

}

注册消息"

从客户端接收的信息为:

intret=checkFile(msg);

用户存在为0"

+ret);

if(ret==0){

用户已经存在"

if(ret==1){

//创建在文件中写入的文件流

System.out.println("

在文件中写入信息"

FileOutputStreamout=newFileOutputStream("

UsrPwd.txt"

true);

PrintStreamp=newPrintStream(out);

p.println();

p.println(msg);

p.close();

注册成功"

用户退出"

System.out.println("

Stringremuser=streamFromClient.readLine();

//booleanb=vcList.removeElement(remuser);

//移除退出用户

vcList.removeElement(remuser);

else{//发送信息

message=message+msg;

message:

+message);

vector.addElement(message);

//向聊天列表中添加用户发送的聊天信息

//反馈给用户现在的向量集合

}

catch(Exceptione1){

e1.printStackTrace();

无法获取客户端的流对象"

+e1);

}//try...catch结束

finally{

try{

inFromClient.close();

}catch(IOExceptione2){

e2.printStackTrace();

发生异常"

+e2);

小结

本次系统设计总结,我将对我在做这次系统设计中遇到过的问题以及新学的内容进行总结。

本系统的登录界面,我采用了Box容器来排版界面格式,注册界面与聊天界面采用了GirdBagLayout()布局格式,来排版界面。

用Vector类来实现添加、删除用户的操作,Vector类可以实现可增长的对象数组。

与数组一样,它包含可以使用整数索引进行访问的组件。

但是,Vector的大小可以根据需要增大或缩小,以适应创建Vector后进行添加或移除项的操作。

用RandomAccessFile来实现文件内容的读取,RandomAccessFile创建从中读取和向其中写入的随机访问文件流,类里面有getFilePointer方法来返回文件中的当前偏移量,到此文件开头的偏移量,在该位置发生下一个读取或写入操作。

采用objectOutputStream类来读取流里的对象,用其中的writerObject()方法来向流里传递(写入)一个对象。

最重要的一点,在调用close()方法关闭读写流之前一定要先flush(),flush是清空而不是刷新,一般主要用在Io中,即清空缓冲区数据,当我们用读写流的时候,数据先被读到了内存,然后用数据写到文件中,当数据读完,数据并没有写完,还有一部分可能留在内存这个缓冲区中,如果你调用了close()方法关闭了读写流,那么这部分数据就会丢失,所以应该在关闭读写流之前先flush()(把缓冲区中的内容强制写出),先清空数据。

参考文献

[1]王雷,潘英.J2EE专业项目实例开发[M].北京:

中国水利水电出版社,2006

[2]耿祥义,张跃平.Java程序设计实用教程[M].北京:

电子工业出版社,2007

[3]王保罗.Java面向对象程序设计[M].北京:

清华大学出版社,2003

[4]张珣,杨三成.关键技术JSP与JDBC应用详解[M].中国铁道出版,2010

[5]刘腾红,孙细明.信息系统分析与设计[M].北京:

科学出版社,2003

[6]林邦杰.彻底研究Java[M].北京:

电子工业出版社,2002

[7]毕广吉.Java程序设计实例教程[M].北京:

冶金工业出版社,2007

[8]王保罗.Java面向对象程序设计[M].北京:

[9]耿祥义,张跃平.Java设计模式[M].北京:

清华大学出版社,2009

[10]BruceEckel.Java编程思想[M].北京:

机械工业出版社,2003

Java程序设计课程设计成绩评定

成绩评定:

指导教师签字:

年月日

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

当前位置:首页 > 考试认证 > IT认证

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

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