QQ聊天交互平台.docx

上传人:b****4 文档编号:24598943 上传时间:2023-05-29 格式:DOCX 页数:19 大小:430.05KB
下载 相关 举报
QQ聊天交互平台.docx_第1页
第1页 / 共19页
QQ聊天交互平台.docx_第2页
第2页 / 共19页
QQ聊天交互平台.docx_第3页
第3页 / 共19页
QQ聊天交互平台.docx_第4页
第4页 / 共19页
QQ聊天交互平台.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

QQ聊天交互平台.docx

《QQ聊天交互平台.docx》由会员分享,可在线阅读,更多相关《QQ聊天交互平台.docx(19页珍藏版)》请在冰豆网上搜索。

QQ聊天交互平台.docx

QQ聊天交互平台

长治学院

课程设计报告

课程名称:

TCP/IP协议与分析课程设计

 

设计题目:

QQ聊天交互平台

系别:

计算机系

专业:

网络工程

组别:

第一组

学生姓名:

学号:

起止日期:

2015年7月10日~2015年7月15日

指导教师:

目录

1.需求分析1

1.1课程设计题目1

1.2课程设计任务及要求1

1.3课程设计思想1

1.4软硬件运行环境及开发工具1

2.概要设计1

2.1方法及原理1

2.2概要设计思想1

2.3功能设计图2

3.详细设计2

3.1登录界面2

3.1.1部分代码2

3.1.2实现结果分析3

3.2用户界面4

3.2.1部分代码4

3.2.2实现结果5

3.3聊天界面5

3.3.1部分代码5

3.3.2实现结果7

3.4监听分析8

3.5线程分析9

3.5.1ThreadServer类9

3.5.2ReadContent类10

3.5.3SecondServer类10

4.调试与操作说明11

4.1调试11

4.2操作说明11

5.课程设计总结与体会11

6.致谢12

7.参考文献12

QQ聊天交互平台

1.需求分析

1.1课程设计题目

QQ聊天交互平台

1.2课程设计任务及要求

本次课程设计主要任务是利用java语言,完成QQ聊天交互平台的设计,该图片浏览器所具有的功能有:

登录界面,好友列表,聊天界面,数据库对数据的存储等功能。

1.3课程设计思想

要使用面向对象的方法完成QQ聊天交互平台的各种功能,首先对软件功能分解为不同的类,大体上将程序分为程序入口类main,程序界面设计JFrame及事件监听类ActionListen,事件监听处理方法actionPerfirmed(),程序功能实现类ServerSocket类和Socket类;其次,对各个类内部实现进行具体设计,并编程实现;最后对程序进行测试。

1.4软硬件运行环境及开发工具

开发环境:

Eclipse8.5java6.0

运行环境:

JRE6.0

采用技术:

AWT、Swing、IO、事件监听

2.概要设计

2.1方法及原理

AWT(AbstractWindowingTooklit):

抽象窗口工具包,是Java提供的用来建立和设置Java的图形用户界面的基本工具。

Swing是一个用于开发Java应用程序用户界面的开发工具包。

它以抽象窗口工具包(AWT)为基础使跨平台应用程序可以使用任何可拔插的外观风格。

IO包括输入和输出流,输入流指的是将数据以字符或字节形式从外部媒介读取到内存中,输出流指的是将内存中的数据写入外部媒介。

Java中的事件监听是整个Java消息传递的基础和关键。

2.2概要设计思想

(1)框架设计:

对软件的界面框架设计放在JFrame里面。

在软件窗口中主要分为三部分:

登录部分、好友列表和聊天界面;登录部分使用LoginView类实现,好友列表使用UserList类实现,聊天界面使用ChatView类实现;

(2)事件监听:

事件的实现是在ActionListen类里面,当所监听到的事件被触发时会自动转入该类中的相应处理方法;

(3)功能实现:

功能的实现是在利用网络编程类ServerSocket类,Socket类和线程Thread以及实现接口。

2.3功能设计图

 

图1功能设计图

3.详细设计

3.1登录界面

3.1.1部分代码

publicclassLoginView{

publicstaticvoidmain(String[]args){

//实例化对象

LoginViewclient=newLoginView();

//调用创建窗体的方法

client.creatFrame();

}

privateJLabelbuttomLabel;

privateFillitFrameframe;

publicvoidcreatFrame(){

//弹出窗体并指定窗体的大小为380*292

frame=newFillitFrame(380,292);

//取得背景图片资源noon.jpg

ImageIconbg=newImageIcon("Image\\login\\0001.png");

//将背景图片添加到主界面

MainPanelcenterPanel=newMainPanel(bg);

//设置主界面的布局为BorderLayout

centerPanel.setLayout(newBorderLayout());

//窗体添加主界面centerPanel

frame.add(centerPanel);

//取得背景图片资源texture.png

ImageIconbuttomIcon=newImageIcon("Image\\login\\texture.png");

//将图片资源添加最总添加其他组件的容器里

buttomLabel=newJLabel(buttomIcon);

//在主界面上添加容器

centerPanel.add(buttomLabel);

//调用添加其他组件的方法

addButton();

//让界面可视

frame.setVisible(true);

}

3.1.2实现结果分析

本方法所在类为:

LoginView,在系统打开窗口调用成功后,进入该方法的具体实现。

首先,利用FillitFrame创建一个窗体,然后在窗体上添加主界面centerPanel,并在主界面上添加容器JBabel。

对面板进行布局实现各组件的合理规划,如:

按钮JButton,复选框JCheckBox,输入框JTextField等。

布局有空布局null、流布局FlowLayout、方位布局BorderLayout等。

本功能相关实现截图如下:

图2账号登录界面

3.2用户界面

3.2.1部分代码

publicclassUserList{

privateStringqqname;

privateStringqqnum;

privateStringheadurl;

publicUserList(Stringqqname,Stringqqnum,Stringheadurl){

this.qqname=qqname;

this.qqnum=qqnum;

this.headurl=headurl;

createFrame();

}

//窗体

privateFillitFrameframe;

//包含界面背景、包含其他组件

privateImageIconbg;

privateMainPanelmainPanel;

publicvoidcreateFrame(){

//窗体

frame=newFillitFrame(280,678,7,7);

//中部面板

bg=newImageIcon("Image\\user\\未标题-2.jpg");

mainPanel=newMainPanel(bg,7,7);

mainPanel.setLayout(newBorderLayout());

frame.add(mainPanel);

//构建头部

createTop();

//头像区块

createHeadDistrict();

//构建中部

createCenter();

//构建底部

createButtom();

frame.setVisible(true);

}

3.2.2实现结果

输入“1”登录骨头账号,输入“2”登录小龙女账号。

图3用户列表界面

3.3聊天界面

3.3.1部分代码

publicclassChatView{

privateStringqqname;

privateStringqqnum;

privateStringheadurl;

privateFriendItemModelchatFriend;

publicChatView(Stringqqname,Stringqqnum,Stringheadurl,FriendItemModelchatFriend){

this.qqname=qqname;

this.qqnum=qqnum;

this.headurl=headurl;

this.chatFriend=chatFriend;

createFrame();

}

//窗体,

privateFillitFrameframe;

//包含界面背景、包含其他组件

privateImageIconbg;

privateMainPanelmainPanel;

//构建

publicvoidcreateFrame(){

//窗体

frame=newFillitFrame(591,482,9,9);

//主面板

bg=newImageIcon("Image\\chat\\bg2.jpg");

mainPanel=newMainPanel(bg,9,9);

mainPanel.setLayout(newBorderLayout());

mainPanel.setBackground(newColor(75,153,202));

frame.add(mainPanel);

//构建头部

createTop();

//中部

createCenterPanel();

frame.setVisible(true);

}

3.3.2实现结果

图4聊天界面

3.4监听分析

privateActionListeneractionListener=newActionListener(){

@Override

publicvoidactionPerformed(ActionEvente){

if(e.getSource()==closeBtn){

System.exit(0);

}

if(e.getSource()==minBtn){

frame.setExtendedState(JFrame.ICONIFIED);

}

if(e.getSource()==setBtn){

System.out.println("点击了设置按钮");

}

if(e.getSource()==loginBtn){

Stringusername=usernameField.getText().trim();

Stringpassword=passwordField.getText().trim();

//用户名为:

1239017440密码为:

ch123昵称:

骨头头像:

杀姐姐

if("1".equals(username)&&"ch123".equals(password)){

frame.dispose();

//frame.setVisible(false);

UserListuserList=newUserList("骨头","1239017440","Image\\login\\杀姐姐.jpg");

//用户名为:

322587421密码为:

ch456昵称:

小龙女

}elseif("2".equals(username)&&"ch456".equals(password)){

frame.dispose();

//frame.setVisible(false);

UserListuserList=newUserList("小龙女","322587421","Image\\login\\201.png");

}else{

System.out.println("用户名或者密码错误...");

}

}

}

};

3.5线程分析

3.5.1ThreadServer类

publicclassThreadServerimplementsRunnable{

privateSocketclient;

publicThreadServer(Socketclient){

this.client=client;

}

@Override

publicvoidrun(){

BufferedReaderbreader=null;

try{

breader=newBufferedReader(newInputStreamReader(client.getInputStream()));

booleanf=true;

Stringstr=null;

while(f){

str=breader.readLine();

if("1".equals(str)){

SecondServer.map.put("userA",client);

}elseif("2".equals(str)){

SecondServer.map.put("userB",client);

}elseif(client.getPort()==SecondServer.map.get("userA").getPort()){

PrintStreamprintStream=newPrintStream(SecondServer.map.get("userB").getOutputStream());

printStream.println(str);

}else{

PrintStreamprintStream=newPrintStream(SecondServer.map.get("userA").getOutputStream());

printStream.println(str);

}

}

client.close();

}catch(Exceptione){

}

}

}

3.5.2ReadContent类

publicclassReadContentimplementsRunnable{

privateSocketclient;

publicReadContent(Socketclient){

super();

this.client=client;

}

@Override

publicvoidrun(){

//TODOAuto-generatedmethodstub

try{

BufferedReaderreader=newBufferedReader(newInputStreamReader(client.getInputStream()));

Stringstr=reader.readLine();

System.out.println(str);

}catch(Exceptione){

}

}

}

3.5.3SecondServer类

publicclassSecondServer{

publicstaticHashMapmap=newHashMap();

publicstaticvoidmain(String[]args)throwsException{

ServerSocketserver=newServerSocket(7777);

Socketclient=null;

booleanflag=true;

while(flag){

System.out.println("服务端已经启动,等待客户端连接......");

client=server.accept();

newThread(newThreadServer(client)).start();

}

server.close();

}

}

4.调试与操作说明

4.1调试

在系统的制作过程中,我们遇到了很多错误.出现错误时,按提示进行初步定位错误在什么地方进而仔细检查是代码错误还是其他系统性的错误从而根据错误进行修改,操作时一定要注意规范程度免的带来不必要的麻烦,给系统的正常运行又设置了障碍。

调试时出现没参数之类的错误,经发现是代码出错。

4.2操作说明

本软件简单易用,关于打开操作,只需要在软件成功运行后,输入帐号和密码,即可登录。

登录后可查看好友列表,并与好友进行聊天。

5.课程设计总结与体会

经过一周的努力,终于完成了这次学期的《TCP/IP协议与分析》科目的课程设计.虽然只有短短的一周,但是感觉学到了很多东西,尤其是java语言。

通过此次课程设计,使我更加扎实的掌握了有关网络编程方面的知识,在编程理解过程中虽然遇到了一些问题,但经过一次又一次的思考,一遍又一遍的检查终于找出了原因所在,也暴露出了前期我在这方面的知识欠缺和经验不足。

实践出真知,通过亲自动手制作,使我们掌握的知识不再是纸上谈兵。

这次的课程设计使我懂得了理论与实际相结合是很非常重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。

在整个设计过程中,构思是很花费时间的。

在做前期工作时,窗体、监听、容器、组件很麻烦的,但通过这些我们了解了程序的要领。

当然,有时少了参数与构造方法不符,总是运行不了。

此次课程设计,学到了很多课内学不到的东西,比如独立思考解决问题,出现差错的随机应变,这些都让我受益非浅。

这次课程设计使我了解到,java不可缺少,要想成为一个有能力的人,必须懂得java语言。

在这次课程设计中,虽然我编写的程序还有很多的不足之处,但在整个设计的过程中,我不断的上网查资料以及翻阅相关书籍以及和小组的同学讨论,通过不断的摸索、测试、发现问题、解决问题和在老师的帮助下一步一步慢慢的正确运行程序,终于完成了这次的课程设计,我也意识到了自己懂得的知识还不是很多,学无止境,以后还会更加的努力学习。

这期间,我更意识到编程是多么困难,它需要你不断的努力,不断的写,不断的改,才能从不会到会,俗话说的好没有苦哪有甜呀!

还有就是我比以前更加的有耐心,可以坐在那一动不动坐一天编程。

虽然现在要达到那个好的水准还有一段长的路要走,但我会更加努力的去学习,去练习,希望自己有一天也可以像那些好的程序员一样。

理论知识与实践相结合起来,从理论中得出结论,从而提高自己的实际动手能力和独立思考的能力。

同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,对软件、硬件方面的许多知识掌握得不够牢固。

我会在以后的学习中不断学习,积累经验,超越自己。

6.致谢

在老师和同学的帮助下我终于完成课程设计了,在这里非常感谢老师对我的严格要求和辛勤指导,同时也感谢小组成员对我的帮助。

7.参考文献

[1]马晓敏肖明姜远明齐永波,《Java网络编程原理与JSPWeb开发核心技术》[M].北京:

中国铁道出版社,2010年1月

[2]李遵朝苏军,《Java语言程序设计(第二版)》[M].北京:

中国铁道出版社,2007年10月

[3]JDKAPI文档1.6.0

 

指导教师评语:

 

指导教师签名:

年月日

成绩评定

项目

权重

成绩

1.设计过程中出勤、学习态度等方面

0.1

2.设计技术水平

0.4

3.编程风格

0.2

4.设计报告书写及图纸规范程度

0.3

总成绩

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

当前位置:首页 > 工程科技 > 信息与通信

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

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