商丘师范学院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
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库基于Java技术的即时聊天系统实现(4)在线全文阅读。
相关推荐: