基于Java技术的即时聊天系统实现

更新时间:2024-07-05 19:25:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

2015届本科毕业论文(设计)

基于Java技术的 即时聊天系统实现

代码:http://download.csdn.net/detail/syqwe/8869057

姓 名:____ XXXX _______

系 别:计算机与信息技术学院

专 业: 网络安全 _

学 号:____XXXXXXXX_ ____

指导教师:____ XXXXX ______

2015年 5月8日

目 录

1 绪论 ............................................................................................................................................................. 1

1.1 背景 ................................................................................................................................................. 1 1.2 论文研究内容与方法 ..................................................................................................................... 1 2 开发环境介绍 ............................................................................................................................................. 1

2.1 Java技术简介 ................................................................................................................................ 1 2.2 开发工具简介 ................................................................................................................................. 1 3 需求分析 ..................................................................................................................................................... 1

3.1 功能性需求分析 ............................................................................................................................. 2 3.2 非功能性需求分析 ......................................................................................................................... 2 4 总体设计 ..................................................................................................................................................... 2

4.1 功能模块设计 ................................................................................................................................. 2 4.2 数据库设计 ..................................................................................................................................... 3 5 系统详细设计与实现 ................................................................................................................................. 5

5.1 界面设计 ......................................................................................................................................... 5

5.1.1 登录界面 ............................................................................................................................... 5 5.1.2 注册界面 ............................................................................................................................... 5 5.1.3 修改密码界面 ....................................................................................................................... 6 5.1.4 好友列表界面 ....................................................................................................................... 7 5.1.5 聊天窗口界面 ....................................................................................................................... 8 5.1.6 服务器端界面 ....................................................................................................................... 9 5.2 功能实现 ......................................................................................................................................... 9

5.2.1 实现登录 ............................................................................................................................... 9 5.2.2 实现注册 ............................................................................................................................. 10 5.2.3 实现修改密码 ..................................................................................................................... 10 5.2.4 添加、删除好友 ................................................................................................................. 11 5.2.5 移动黑名单 ......................................................................................................................... 11 5.2.6 多对多聊天 ......................................................................................................................... 12 5.2.7 显示表情 ............................................................................................................................. 12 5.2.8 文件的发送 ......................................................................................................................... 13 5.2.9 历史记录 ............................................................................................................................. 14

6 测试阶段 ................................................................................................................................................... 15 总 结 ............................................................................................................................................................. 15 参考文献 ....................................................................................................................................................... 15 致 谢 ............................................................................................................................................................. 15

I

基于Java技术的即时聊天系统实现

摘要

基于Java技术的即时聊天系统采用C/S架构,MyEclipse集成开发环境和MySQL数据库为开发环境,在Window7系统下使用Java程序设计语言开发的一款聊天系统。系统主要分为:用户注册、用户登录、修改密码、好友列表、聊天等五大模块;在功能上用户能够进行添加删除好友,移动黑名单,一对一、多对多的聊天,发送表情,传送文件等操作。

关键词

Java;即时聊天系统;C/S;MyEclipse;MySQL;

Implementation of Instant Messaging System Based on Java Technology

Abstract

Java technology and C/S architecture is used in the instant messaging system, the MyEclipse integrated development environment and MySQL database as a development environment based

on Java programming language, the use of Window7 system in the development of a chat system. The system is mainly divided into: user registration,user login, change password, list of friends, chat and other five modules; in function, users can add and delete friends, mobile blacklist, one to one, many to many chat, send expression, transfer files and other operations.

Keywords

Java; instant messaging system; C/S ; MyEclipse; MySQL;

II

商丘师范学院2015届本科毕业论文(设计)

1 绪论

1.1 背景

随着互联网的蓬勃发展,即时聊天已经成为如今最流行的通讯方式,尤其在移动互联网方面,即时聊天已经与我们的生活息息相关。同时,Java是一种非常流行的程序设计语言,可以用来开发面向对象、跨平台的应用程序。 即时聊天已经与我们的生活不可分割,利用自己学习到的Java语言开发一款自己的聊天软件是一个非常不错的选择,既能够检验自己对Java技术的掌握,同时又能够开发一款自己的聊天软件。

1.2 论文研究内容与方法

基于Java技术的聊天系统主要是探索如何在Java技术下能够实现即时聊天的一些基本功能:用户注册,用户登录,添加删除好友,移动黑名单,实现一对一、多对多的聊天,能够发送表情,传送图片、视频等[1]。 论文的设计主要采用了两种研究方法:一是文献资料研究的方法。在研究聊天系统现实中,本人通过图书馆、电子图书馆学习了Java语言中的一些编程技术;二是理论与实际相结合,既然掌握了技术与方法,那么就应该快速的进行实践,在软件的设计过程中,才能够理解到理论与现实的差距,遇到棘手问题,应该快速查阅资料快速攻破。

2 开发环境介绍

本聊天系统是基于Java技术的,采用C/S结构,采用MVC的开发框架,利用MyEclipse、MySQL数据库作为开发工具。

2.1 Java技术简介

Java是一种程序设计语言, 主要应用于Android 应用、JSP网站、PC和游戏控制台等领域。Java语言能够使开发者在设计程序的时候能够根据自己的情况自定义数据类型和关联操作,对于程序中的数据结构的改变或者代码的改变进行相应的操作;Java语言编写的程序编译后无需再次编译,可以在任何硬件设备下运行[1]。

本次课题中主要用到Swing工具包中JFrame类,采用Java和Windows混合界面风格,作为开发程序的外观风格来设计聊天系统界面;其次,使用Java Socket编程技术实现系统之间的网络通信[2]。

2.2 开发工具简介

MyEclipse是一种集成开发软件。MyEclipse的功能强大,可以集成多种语言开发插件,进行相应开发语言的开发工作。

MySQL是一个关系数据库,底层代码是C、C++编写的,通过编译测试达到代码的可移植;而且,它支持支持Linux、Windows、Msc OS等多种操作系统,支持多线程。它的代码是开源的,用户可以在其基础上根据自己的需要进行二次开发;MySQL的体积小、速度快、成本低,因此一些小型网站的开发都选择 MySQL 作为其网站的数据库。

3 需求分析

软件系统的开发是根据用户的需求来设计开发出用户需要的软件系统或者系统中的软件部分的过程。项目流程化能够促进项目的监管、人员的合理分配。

1

商丘师范学院2015届本科毕业论文(设计)

需求分析是指对即时聊天系统的功能、非功能进行全面分析的过程,对以后开发出来的软件应该实现什么样的功能,具有什么样的界面以及软件能够达到什么样的性能等。

3.1 功能性需求分析

即时聊天系统在功能上主要能够实现如今人们经常用到的各种即时通讯软件的一些基本交流聊天的功能,主要的功能性需求如下:

1. 登录界面:注册用户能够进行登录,通过连接数据库进行判断用户是否能够进入好

友列表界面。

2. 注册界面:用户可以注册,注册信息可以被添加到数据库,然后用于确定用户的登

录。

3. 好友列表界面:用户能够自由添加、删除好友,移动黑名单等;同时能够实现双击

好友,能够进入对应好友聊天窗口等

4. 聊天界面:能够将聊天的信息、表情等显示到对应的聊天界面上;能够发送文件、

音乐、视频等;能够对聊天的历史记录进行简单的查看、翻页等。

5. 修改密码界面:让用户在忘记密码或者想修改密码时候,能够进行修改密码操作。

3.2 非功能性需求分析

1. 2. 3. 4.

操作系统:Windows7旗舰版; 硬盘:500G;

开发平台:MyEclipse2014; 数据库:MySQL。

4 总体设计

软件设计是从软件的用户的需求出发,根据需求分析来确定软件系统功能设计的整体结构,然后划分各个功能模块,最后确定每个模块的实现算法以及编写具体的代码,最终形成了软件的具体设计方案[3]。

4.1 功能模块设计

根据系统分析的结果画出系统功能模块图,对各个模块进行细分,确定模块相互结构关系。

2

商丘师范学院2015届本科毕业论文(设计)

图4- 1系统功能模块图

4.2 数据库设计

通过用户的注册,聊天等形成初步的数据需求;对数据需求进行概念上的设计,得到对应的E-R图;其次选择合适的方法,将E-R图转化为关系模型;然后对关系模型进行物理设计[4]。

1. E-R图设计:分析确定各个数据表的字段、数据类型、关系等,画出E-R图。

图4- 2用户属性

3

商丘师范学院2015届本科毕业论文(设计)

图4- 3好友属性

图4- 4历史记录属性

2. 物理设计:根据系统的数据类型,我们可以选择为数据库表中字段最合适的数据类型,字段大小,索引结构等[5]。

表4- 1用户信息表

序列号 1 2 3 4 5 6 7 字段 id name zhanghao password sex birthday address 描述 用户编号 用户名 用户帐号 用户密码 性别 出生年月 地址 类型 int(11) varchar(16) varchar(11) varchar(32) varchar(2) varchar(32) varchar(32) 空 否 否 否 否 否 否 否 额外 主键(自增) 唯一 表4- 2好友信息表

序列号 1 2 3 4

字段 id zhanghao friendId blackname 描述 编号 用户帐号 好友帐号 黑名单 类型 int(11) varchar(11) varchar(255) varchar(255) 空 否 否 额外 主键(自增) 外键 表4- 3历史记录表

序列号 1 2 字段 id zhanghao 描述 编号 用户帐号 4

类型 int(11) varchar(32) 空 否 否 额外 主键(自增)

商丘师范学院2015届本科毕业论文(设计)

3 4 5 6 7

who sendtime font record pic 属于者 发送时间 字体类型 发送类容 表情 varchar(11) varchar(32) varchar(64) varchar(255) varchar(255) 否 否 否 否 外键 5 系统详细设计与实现

编码阶段是将软件设计阶段的各种描述转变成程序代码,在编码阶段应该注意编程语言的选择,在本次课题中,我们使用的是Java语言。

5.1 界面设计

软件界面的设计是非常重要的,对于各个模块采用不同的组件进行设计。下面简单的介绍下如何设计软件的界面。 5.1.1 登录界面

本即时聊天系统的登录界面(图:3-5),采用JFram容器,使用默认布局,通过setBounds()方法自定义位置。上部是一个JPanel,内置一个JLabel;中间是根据需要放置JLabel、JTExtField、JPasswordField;最下方放置一个JButton。具体代码如下:

Sjp1_jbl=new JLabel(new ImageIcon(\Sjbl1=new JLabel(\Sjtf=new JTextField();Sjtf.setBounds(110, 163, 130, 30); Sjbl2=new JLabel(\Sjbl3=new JLabel(\Sjpf=new JPasswordField();Sjpf.setBounds(110, 200, 130, 30); Sjbl4=new JLabel(\Sjp3_jb1=new JButton(new ImageIcon(\ Sjp3_jb1.setBounds(85, 270, 195, 30);

图5- 1登录界面

5.1.2 注册界面 在注册界面(3-6)中同样采用默认布局自定义位置。对于JLabel、JTExtField、JPasswordField如何放置就不讲太多了,在这里主要讲下新引入的知识点HashMap集合和Graphics绘画技术。

HashMap是集合类,我们可以通过put、get方法向其中添值、取值,其最重要的一点

5

商丘师范学院2015届本科毕业论文(设计)

是它是键值对形式的,通过一个键就能取出相应的值,对于本界面的全国省市联动,正好可以用到地址的灵活变动。通过For循环创建每个省份按钮,并添加addActionListener监听器,获取其对应省份代号,再通过get方法向HashMap索要其对应的ID值。代码如下: 添加:

HashMap hm=new HashMap<>();

FOR(INT i=0;i

if(hm.containsKey(s)){RegisterAddress Address=(RegisterAddress) hm.get(s); System.arraycopy(Address.getCity(), 0, City, 0, Address.getCity().length); for(int i=0;i

} } Graphics可以对其进行重写,调用其方法进行绘画,对于本界面中的验证码,正是运用到此类,可以根据自己想要的样式进行绘制。代码如下: StringBuffer randomRecv = new StringBuffer();

FOR (INT i = 0; i

String stm = String.valueOf(codeSequence[random.nextInt(codeSequence.length)]); red = random.nextInt(255);green = random.nextInt(255);

blue = random.nextInt(255);g.drawString(stm, (i + 1) * X, CodeY); }

code= randomRecv.toString();

图5- 2注册界面

5.1.3 修改密码界面 密码修改界面(图3-7)是一个重要的组成部分,用户在此能够进行密码修改、重置密码;在本界面中同样的运用到以上界面的基本布局界面的组件,同样的引入了新的组件JTabbedPane。

6

商丘师范学院2015届本科毕业论文(设计)

JTabbedpane提供add方法允许设计者向其中添加标题,通过添加addChangeListener监视器,当触发时候进行页面的跳转。从密码修改界面能够开出它拥有两个界面提供用户使用。代码如下:

Sjp0=new JPanel();Sjp0.setLayout(null); Sjp1=new JPanel();Sjp1.setLayout(null);

Sjtp=new JTabbedPane();Sjtp.add(\修改密码\忘记密码\

图5- 3密码修改界面

5.1.4 好友列表界面

在好友列表界面(图3-8)中,引入一个新的组件JTree。JTree是树形组件,能够添加删除子节点,子节点同样能够添加子节点。JTree是许多初学者在做类似系统软件的首选,对于Java默认的Tree节点、把柄的图标是不美观的,我们需要对其进行重写。代码如下: tree.setCellRenderer(new DefaultTreeCellRenderer() {

public getStreeRendererComponent(JTree stree,string val,boolean bool, int cow, boolean havefoc) { if (leaf) {this.setIcon(title);

this.setClosedIcon(close) }return this; }});

7

商丘师范学院2015届本科毕业论文(设计)

图5- 4好友列表界面

5.1.5 聊天窗口界面 聊天窗口界面(3-9)是即时聊天系统里最重要的部位,在这我们能够进行交流,发送表情,发送文件,音乐,视频等,它是软件中的灵魂。从图片上看它只是个普通的界面,但是它拥有很多没有展示的部分,例如表情窗口、聊天记录界面、字体样式选框等。在这个普通的界面中运用到了JWindow、JTextPane、和JSplitPane组件。 JTextPane是一个可以编辑和显示图片、文本Html等的富文本组件。 JWindow是一个窗口容器。但是它不像JFram那样,它不具有标题栏、窗口管理按钮等,我自认为它是做表情窗口最佳的选择。 JSplitPane分隔组件。两个组件图形化分隔以外观实现为基础,并且这个组件可以由用户自由调整大小。 代码如下:

JLabel jl[]=new JLabel[105]; String file_names=\for(i=0;i

file_names=\

jl[i]=new JLabel(new ChatIcon(QqChatFaceWindow.class.getResource(file_names),i), SwingConstants.CENTER); jl[i].setToolTipText(i+\ jl[i].addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e){

if(e.getButton()==1){

JLabel facelabel = (JLabel)(e.getSource());

ChatFrame.insertFace(facelabel.getIcon()); }

8

商丘师范学院2015届本科毕业论文(设计)

}

}

});

jp.add(jl[i]);

图5- 5聊天窗口界面

5.1.6 服务器端界面 服务端仅是用来开启Socket,界面并没有什么太多的功能,只是两个按钮而已,在这里就不做过多的介绍了。

5.2 功能实现

在实现功能之前我们需要做一些必要的共同类。首先我们需要做一个用户信息类(User),接着是信息类(Message),其次是消息类型类(MessageType),它们不需要做过多的设计,只需要定义一些需要的变量,然后对其进行Set和Get即可。 5.2.1 实现登录 实现登录功能还是一个比较简单的功能,只需要我们获取到用户的登录帐号和登录密码,通过对象流将对象(u)给传递给服务器,服务器通过Get方法获取帐号和密码,然后从数据库中查询用户的密码字段信息进行对比,将对比的后的信息再通过对象流的方式传递给客户端,再进行相应的处理。 代码如下:

User M=new User();

M.setUserNo(Sjtf.getText().Trim());

M.setPasswd(MD5.GetMD5Code(new String(jpf.getPassword()))); M.setType(MessageType.message_login);

QqClientUser qqClientUser=new QqClientUser(); if(qqClientUser.checkUser(M)){

QqFriendListFrame PeopleList =new QqFriendListFrame(M. getUserNo ()); //将好友聊天窗口添加到集合中 QqFriendList.AddFriendPeople(M.getUserNo(), PeopleList); ObjectOutputStream oos = null; try {

9

商丘师范学院2015届本科毕业论文(设计)

oos=newObjectOutputStream(M.getUserNo ().getS().getOutputStream()); } catch (IOException e1) { e1.printStackTrace(); } Msges S=new Msges ();//做一个Message S.setMesType(Msges.message_get_allFriend); S.setSender(M.getUserNo());//指明我要的是这个帐号的全部好友 }

5.2.2 实现注册 注册功能需要将用户在注册界面的填写信息和相应的选择信息,通过对象流的形式将对象(u)传递给服务器,服务器调用数据库插入代码即可。代码如下: MessageArray R=new MessageArray(); String []Str=new String[6]; MD5 getMD5 = new MD5(); Str[0]=nick_jtf.getText(); Str[1]=num_jtf.getText();

Str[2]=getMD5.GetMD5Code(String.valueOf(jpf1.getPassword())); Str[3]=SEX;

Str[4]=bir_jb1.getSelectedItem().toString()+bir_jb2.getSelectedItem().toString()+bir_jb3.getSelectedItem().toString();

Str[5]=addr_jb1.getSelectedItem().toString()+\

\ R.setStr(Str);

User M=new User();

M.setStr(Str);u.setType(MessageType.message_ret_register); ClientUser qqClientUser=new ClientUser(); if(qqClientUser.register(M)){ dispose(); new ClientLogin(); }

5.2.3 实现修改密码 密码的修改相对的简单,用户只需要根据相应的选项卡填写,就能够进行密码的修改,至于实现的代码如下: User M=new User(); M.setUserId(m[0]); M.setNick(\

M.setPasswd(MD5.GetMD5Code(m[1]));

M.setNewpassword(MD5.GetMD5Code(m[2])); M.setType(MessageType.message_rel_password); ClientUser qqClientUser=new ClientUser(); if(qqClientUser.relpasswored(M)){ dispose(); new ClientLogin(); }

10

商丘师范学院2015届本科毕业论文(设计)

5.2.4 添加、删除好友 添加好友相对于删除好友,是一件比较麻烦的事情,具体的思路是:当用户在添加好友输入框中输入想要添加好友的帐号,然后通过对象流将对象(m)传送给服务器,服务器通过后台HashMap集合获取好友的线程,然后将对象传递给好友。对于如何获取到好友的线程呢?在这里就粗略的讲述一下:本系统在每个用户登录的时候,服务器都会为每个用户新建一个线程,同时将每个用户的线程和其帐号通过HashMap进行键值对的绑定,到使用的时候服务器只需通过帐号就能获取到相应的帐号线程,这样就能够很简单的帮我们想要传递的信息转发给相应的好友。代码如下:

public HashMap Thread=new HashMap(); //向hm中添加一个客户端通讯线程

public static void SetClients (String No, ServerConnecClient Sct){ Thread.put(No, Sct); }

public static ServerConnectClient getClient(String No){ return Thread.get(No); }

图5- 6添加、删除好友选项框

图5- 7添加好友提示框

5.2.5 移动黑名单 黑名单功能是每个即时聊天软件必不可少的功能,对于本系统的黑名单功能,那么我又是如何实现的呢?其实在方法是比较简单的,JTree提供一个自带的方法,它允许子节点进行移动,我们能够在界面上看到相互之间的移动,那么剩下的问题就是数据库存储的问题了。对于通常系统的黑名单,你将对方添加至黑名单,但对方并未将你删除或者也添加至黑名单;而且本系统的数据库中的好友字段在添加好友的时候只是将要添加好友的帐号追加到自己的好友字段中,好友的字段不做任何的处理,所以在添加黑名单的时候,你不知道自己的好友字段中是否有此帐号;本着简单的原则,我们只要将你想添加黑名单的帐号追加到你的黑名单字段,对于其在你好友字段中不做任何的处理。只需要在提取好友ID信息的时候把存在黑名单中的好友ID移出即可。代码如下: public ArrayList getfriend(String userId){ String sql1=\ String sql2=\ String sql3=\ SqlHelper sqlhelp=new SqlHelper(); ArrayList str=sqlhelp.execute_getfriends(sql1, sql2,sql3); ArrayList al=new ArrayList(); Object[]tr1=(Object[])tr.get(0); Object[]tr2=(Object[])tr.get(1);

11

商丘师范学院2015届本科毕业论文(设计)

for(int i=0;i

5.2.6 多对多聊天 多对多的聊天是本系统的一个比较亮点的设计,用户能够在同一时间跟多个用户进行聊天,对于聊天的内容不会错乱。同绑定线程一样,在用户开启好友聊天界面的时候,客户端将你的帐号同聊天好友的帐号组合在一起,通过HashMap的键值对的形式将组合后的字符串和这个窗口进行绑定,每开启一个窗口都进行绑定,等到客户端接受到服务器发送来的信息,进行相应的处理,即可将信息追加到对应的聊天窗口中。 代码如下:

Msges S=new Msges ();

if(S.get Msges ().equals(\ if(QqChat.getChat(m.getGetter()+\ QqFriendChatFrame FriendChat=new QqFriendChatFrame(m.getGetter(),m.getSender()); QqChat.addQqChat(m.getGetter()+\

}

QqFriendChatFrame FriendChat=QqChat.getQqChat(m.getSender()+\if(!qqChat.isVisible()){ qqChat.setVisible(true);

}

FriendChat.AddMeg(m.getSender(), m.getCon(), m.getPic(), m.getFname(), m.getFSize(), m.getFstyle(), m.getFColor());//显示 }

5.2.7 显示表情 在本聊天系统中,用户能够发送表情图片,然而图片跟文字是不一样的,不能够直接的显示在聊天窗口上的,也不能直接的传送给好友,也不能将其直接的存放在数据库中;因此,我专门给显示表情编写了一些必要的函数。由于本系统是C/S架构的,每一个客户端都是一样的,系统内存放着这些表情图片,而且每一个表情图片都有自己相应的Id;因此,我们只需要提取到使用的表情图片的Id,以及获得它在发送信息的位置即可,到时我们只需要将发送的文本和表情的Id及其在发送信息的位置发送过去即可,客户端内置一些专门处理表情的函数,代码如下:

12

商丘师范学院2015届本科毕业论文(设计)

重组发送表情:

private String buildPicInfo(){ StringBuilder all = new StringBuilder(\ for(int i = 0; i < this.jtp2.getText().length(); i++){ if(DMsg.getName().equals(\

Icon icon = StyleConstants.getIcon(jtp2.getStyledDocument().getAttributes()); FriendChatIcon Fch = (FriendChatIcon)icons;

PictureInfo pictureInfo= new PictureInfo (i,String.valueOf(Fch.getId())); AllPictureInfo.add(pictureInfo); all.append(i+\ }

} }

重组收到的表情信息串:

public void receivedPicInfo(String pic){

String[] PicInfo = pic.split(\ FOR(Int i = 0 ; i < PicInfo.length ; i++){ String[] pp = PicInfo [i].split(\ if(pp.length==2){ PicInfo Spic = new PicInfo(Integer.parseInt(pp [0]), pp [1]); AddreceivdPicture.add(Spic);//将表情添加到滚动列表中 } } }

图5-8表情窗口

5.2.8 文件的发送 发送文件是很多聊天系统都拥有的功能,在本系统中我们能够发送文本文件、音乐、视频等,能够给用户提供更多的服务。对于如何发送文件,这是个值得探讨的问题。在Java中,它提供了很多能够发送文件的方法,例如字符流、字节流、对象流等,但是在服务器端、客户端我们一直使用的是对象流进行数据的接受、发送,从而使发送的信息不至于错乱。考虑到我们不可能专门为发送文件再写一个服务器端,因此,对于文件的发送我们再次的使用对象流的形式进行发送,同样文件的发送也可以多对多的发送,不会造成错乱。文件的发送方式已经解决,那么对于文件的读取方式我们需要再次进行思考,由于发送的文件除了有文本文件,还有音乐、视频等,我们不可能直接使用字符流的方式进行读取,因此,我们只能

13

商丘师范学院2015届本科毕业论文(设计)

采用字节流的形式读取文件。此时,文件的读取方式、发送方式已经确定,剩下的就是写入方式了,既然我们采用的是字节流的方式读取的,就应该用字节流的方式进行写入,如何采用字符流的方式写入,会出现一些意想不到的问题,例如:文本文件可能会有乱码,一些图片、exe文件等打不开的问题。代码如下: 文件的读取和发送:

FileInputStream fis =new FileInputStream(filePath); byte []bytes=new byte[1024*4]; while((fis.read(bytes))!=-1){ sm.setBytes(bytes);

ObjectOutputStream pos=new ObjectOutputStream(getOutputStream()); pos.writeObject(sm); }

文件的写入:

FileOutputStream ps=new FileOutputStream(sm.getSavepath()+\ps.write(sm.Bytes()); 5.2.9 历史记录 历史记录是每一个即时聊天系统必备的功能,本系统的历史记录做的相对比较简单,除了能够在每一页显示规定的记录条数之外,还能够显示当前页数和总页数,用户能够通过点击上一页和下一页进行翻看历史记录。代码如下:

public void AppendReceiveChatRecord(ArrayList List){ //接受到的聊天历史信息追加

jtp3.setText(\ For(Int i=0;i< List.size();i++){ String []str=(String[]) al.get(i); System.out.println(str[0]+\ String msg=str[0]+\ dateFont.setMessage(msg); insertrecord(dateFont);//插入标题 String s=str[2]; String []Fmsg=s.split(\ String []ss=Fmsg[3].substring(17, Fmsg[3].length()-1).split(\ int r=Integer.parseInt(ss[0]); int g=Integer.parseInt(ss[1].substring(2)); int b=Integer.parseInt(ss[2].substring(2));

myFont=getRecivedFont(str[3],Fmsg[0],Integer.parseInt(Fmsg[1]), Integer.parseInt(Fmsg[2]), new Color(r, g, b)); pos3 = jtp3.getCaretPosition(); insertrecord(myFont); receivedPicInfo(str[4]); insertchatpic(); } }

14

商丘师范学院2015届本科毕业论文(设计)

6 测试阶段

软件测试不是等到开发完成以后才进行的,而是伴随着软件生命周期的整个过程,判断软件是否达到要求等。对于本软件的测试情况,我本着一个经过惠普软件测试培训者的心态,对即时聊天系统进行了相对全面的测试,各个界面的功能全部实现,从登录到注册再到修改密码,完全的没有问题,从用户添加好友、删除好友,移动黑名单,多人聊天,到发送文件等都已经实现了软件需求的功能,因此,对于此次设计的软件我还是相对比较满意的。对于软件中存在的Bug已经进行了相对的修改,对于可能隐藏的问题,我只能在后续的发现后立即进行修改;没有一个软件是没有绝对没有漏洞的,唯有我们慢慢的去发现。

总 结

通过本次毕业设计,能够从中学到很多以前在课堂上学不到的知识。我们在大学的前三年中学到了很多编程语言知识,无论从最初的C语言,接着C++,后来的VB,到最后的Java等,虽然我们学了很多理论上的知识,但是很少有时间去付诸实践。这次设计让我真正的感觉到自己学到了一些东西,并且功能设计出自己想要的软件。虽然在设计的过程中,难免会遇到问题难以解决,通过查阅资料上网查找答案等,让我知道这些问题并不是只有自己遇到,同样的在学习的过程中别人也遇到过,我们应该将其攻破克服,只有这样我们才能够掌握更多的知识,对知识更加的理解,不能因为一个小小的问题就轻言放弃。在开发的时候发现Java语言有些地方让自己感到头痛,动不动就要重写类,而且重写之后系统还不稳定,例如:JTree的节点图标和把柄图标的修改,前期修改的时候,图标完全是叠加在一起的,现如今虽然稳定了一些,但是有时还是会出来这样的问题。对于如果想要实现自己的方法,就有重写Java类,而且有些自己还不会重写,这是最让人烦恼的;曾经想过要放弃,重新选择一个设计,最后终于还是坚持过来了。学习编程语言本来就是一件不容易的事情,我们不能遇到问题就轻言的放弃,而是要坚持到底,我们才能够学到知识,学到比别人好,懂的比别人多。总之,本次课题设计的研究让我懂得了更多的知识,对Java语言有了进一步的了解;同时觉得自己运用到自己学习到的知识能够设计出自己想要的东西,这是自己感觉最高兴的事情。希望在以后能够学的更多,学到更好!

参考文献

[1] 印旻,王行言.Java语言与面向对象程序设计(第二版)[M].北京:清华大学出版社,2007.11

[2] 辛运帏,饶一梅.Java语言程序设计[M].北京:人民邮电出版社,2009.10 [3] 张晓龙,刘钊.JAVA程序设计基础[M].北京:清华大学出版社,2010.7

[4] 邱李华.SQL Server 2008数据库应用教程(第二版)[M].北京:人民邮电出版社,2012.8 [5] 王珊,萨师煊.数据库系统概论(第四版)[M].北京:高等教育出版社,2006.5

致 谢

在论文即将完成时候,我有种如释重负的感觉。从选择这个课题之后,我就在为完成它而不停的努力着,无论是从最基础的Java知识点开始学起,还是到如今将整个系统开发完

15

商丘师范学院2015届本科毕业论文(设计)

成,这里不仅仅有我个人的辛苦努力,同时还有指导老师的帮忙,还有那些帮助我的朋友们,在这里我向你们送上最真挚的谢意,谢谢你们的帮忙,让我能够从当初的一无所知,到整个论文的完成,这里不只有我个人的功劳,同时还有你们的功劳,谢谢!

16

本文来源:https://www.bwwdw.com/article/ac4.html

Top