基于java技术的即时聊天系统实现_第1页
基于java技术的即时聊天系统实现_第2页
基于java技术的即时聊天系统实现_第3页
基于java技术的即时聊天系统实现_第4页
基于java技术的即时聊天系统实现_第5页
已阅读5页,还剩105页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、2015届本科毕业论文(设计)基于java技术的即时聊天系统实现代码:/detail/syqwe/8869057姓 名:_ xxxx _系 别:计算机与信息技术学院专 业: 网络安全 _学 号:_xxxxxxxx_ _指导教师:_ xxxxx _2015年 5月8日目 录1 绪论11.1 背景11.2 论文研究内容与方法12 开发环境介绍12.1 java技术简介12.2 开发工具简介13 需求分析13.1 功能性需求分析23.2 非功能性需求分析24 总体设计24.1 功能模块设计24.2 数据库设计35 系统详细设计与实现55.1 界面设计55

2、.1.1 登录界面55.1.2 注册界面55.1.3 修改密码界面65.1.4 好友列表界面75.1.5 聊天窗口界面85.1.6 服务器端界面95.2 功能实现95.2.1 实现登录95.2.2 实现注册95.2.3 实现修改密码105.2.4 添加、删除好友105.2.5 移动黑名单115.2.6 多对多聊天125.2.7 显示表情125.2.8 文件的发送135.2.9 历史记录136 测试阶段14总 结14参考文献15致 谢15基于java技术的即时聊天系统实现摘要基于java技术的即时聊天系统采用c/s架构,myeclipse集成开发环境和mysql数据库为开发环境,在window7

3、系统下使用java程序设计语言开发的一款聊天系统。系统主要分为:用户注册、用户登录、修改密码、好友列表、聊天等五大模块;在功能上用户能够进行添加删除好友,移动黑名单,一对一、多对多的聊天,发送表情,传送文件等操作。关键词java;即时聊天系统;c/s;myeclipse;mysql; implementation of instant messaging system based on java technologyabstractjava technology and c/s architecture is used in the instant messaging system,the m

4、yeclipse integrated development environmentandmysql database as a development environment based onjava programming language,the use of window7 system in the developmentof achat system. the systemis mainly divided into:user registration,user login,change password,list of friends,chat and otherfive mo

5、dules;in function,users canadd and delete friends,mobileblacklist,one to one,many to many chat,send expression,transfer files and otheroperations.keywordsjava; instant messaging system; c/s ;myeclipse;mysql;ii1 绪论1.1 背景随着互联网的蓬勃发展,即时聊天已经成为如今最流行的通讯方式,尤其在移动互联网方面,即时聊天已经与我们的生活息息相关。同时,java是一种非常流行的程序设计语言,可

6、以用来开发面向对象、跨平台的应用程序。 即时聊天已经与我们的生活不可分割,利用自己学习到的java语言开发一款自己的聊天软件是一个非常不错的选择,既能够检验自己对java技术的掌握,同时又能够开发一款自己的聊天软件。1.2 论文研究内容与方法基于java技术的聊天系统主要是探索如何在java技术下能够实现即时聊天的一些基本功能:用户注册,用户登录,添加删除好友,移动黑名单,实现一对一、多对多的聊天,能够发送表情,传送图片、视频等1。论文的设计主要采用了两种研究方法:一是文献资料研究的方法。在研究聊天系统现实中,本人通过图书馆、电子图书馆学习了java语言中的一些编程技术;二是理论与实际相结合,

7、既然掌握了技术与方法,那么就应该快速的进行实践,在软件的设计过程中,才能够理解到理论与现实的差距,遇到棘手问题,应该快速查阅资料快速攻破。2 开发环境介绍本聊天系统是基于java技术的,采用c/s结构,采用mvc的开发框架,利用myeclipse、mysql数据库作为开发工具。2.1 java技术简介java是一种程序设计语言, 主要应用于android 应用、jsp网站、pc和游戏控制台等领域。java语言能够使开发者在设计程序的时候能够根据自己的情况自定义数据类型和关联操作,对于程序中的数据结构的改变或者代码的改变进行相应的操作;java语言编写的程序编译后无需再次编译,可以在任何硬件设备

8、下运行1。本次课题中主要用到swing工具包中jframe类,采用java和windows混合界面风格,作为开发程序的外观风格来设计聊天系统界面;其次,使用java socket编程技术实现系统之间的网络通信2。2.2 开发工具简介myeclipse是一种集成开发软件。myeclipse的功能强大,可以集成多种语言开发插件,进行相应开发语言的开发工作。mysql是一个关系数据库,底层代码是c、c+编写的,通过编译测试达到代码的可移植;而且,它支持支持linux、windows、msc os等多种操作系统,支持多线程。它的代码是开源的,用户可以在其基础上根据自己的需要进行二次开发;mysql的体

9、积小、速度快、成本低,因此一些小型网站的开发都选择 mysql 作为其网站的数据库。3 需求分析软件系统的开发是根据用户的需求来设计开发出用户需要的软件系统或者系统中的软件部分的过程。项目流程化能够促进项目的监管、人员的合理分配。需求分析是指对即时聊天系统的功能、非功能进行全面分析的过程,对以后开发出来的软件应该实现什么样的功能,具有什么样的界面以及软件能够达到什么样的性能等。3.1 功能性需求分析即时聊天系统在功能上主要能够实现如今人们经常用到的各种即时通讯软件的一些基本交流聊天的功能,主要的功能性需求如下:1. 登录界面:注册用户能够进行登录,通过连接数据库进行判断用户是否能够进入好友列表

10、界面。2. 注册界面:用户可以注册,注册信息可以被添加到数据库,然后用于确定用户的登录。3. 好友列表界面:用户能够自由添加、删除好友,移动黑名单等;同时能够实现双击好友,能够进入对应好友聊天窗口等4. 聊天界面:能够将聊天的信息、表情等显示到对应的聊天界面上;能够发送文件、音乐、视频等;能够对聊天的历史记录进行简单的查看、翻页等。5. 修改密码界面:让用户在忘记密码或者想修改密码时候,能够进行修改密码操作。3.2 非功能性需求分析1. 操作系统:windows7旗舰版;2. 硬盘:500g;3. 开发平台:myeclipse2014;4. 数据库:mysql。4 总体设计软件设计是从软件的用

11、户的需求出发,根据需求分析来确定软件系统功能设计的整体结构,然后划分各个功能模块,最后确定每个模块的实现算法以及编写具体的代码,最终形成了软件的具体设计方案3。4.1 功能模块设计根据系统分析的结果画出系统功能模块图,对各个模块进行细分,确定模块相互结构关系。 图4- 1系统功能模块图4.2 数据库设计通过用户的注册,聊天等形成初步的数据需求;对数据需求进行概念上的设计,得到对应的e-r图;其次选择合适的方法,将e-r图转化为关系模型;然后对关系模型进行物理设计4。1. e-r图设计:分析确定各个数据表的字段、数据类型、关系等,画出e-r图。 图4- 2用户属性图4- 3好友属性图4- 4历史

12、记录属性2. 物理设计:根据系统的数据类型,我们可以选择为数据库表中字段最合适的数据类型,字段大小,索引结构等5。表4- 1用户信息表序列号字段描述类型空额外1id用户编号int(11)否主键(自增)2name用户名varchar(16)否3zhanghao用户帐号varchar(11)否唯一4password用户密码varchar(32)否5sex性别varchar(2)否6birthday出生年月varchar(32)否7address地址varchar(32)否表4- 2好友信息表序列号字段描述类型空额外1id编号int(11)否主键(自增)2zhanghao用户帐号varchar(11

13、)否外键3friendid好友帐号varchar(255)4blackname黑名单varchar(255)表4- 3历史记录表序列号字段描述类型空额外1id编号int(11)否主键(自增)2zhanghao用户帐号varchar(32)否3who属于者varchar(11)否外键4sendtime发送时间varchar(32)否5font字体类型varchar(64)否6record发送类容varchar(255)否7pic表情varchar(255)5 系统详细设计与实现编码阶段是将软件设计阶段的各种描述转变成程序代码,在编码阶段应该注意编程语言的选择,在本次课题中,我们使用的是java语

14、言。5.1 界面设计软件界面的设计是非常重要的,对于各个模块采用不同的组件进行设计。下面简单的介绍下如何设计软件的界面。5.1.1 登录界面本即时聊天系统的登录界面(图:3-5),采用jfram容器,使用默认布局,通过setbounds()方法自定义位置。上部是一个jpanel,内置一个jlabel;中间是根据需要放置jlabel、jtextfield、jpasswordfield;最下方放置一个jbutton。具体代码如下:sjp1_jbl=new jlabel(new imageicon(image/login.jpg);s jp1_jbl.setbounds(0,-5,428,159);

15、sjbl1=new jlabel(zhanghao);sjbl1.setbounds(70, 165, 30, 30);sjtf=new jtextfield();sjtf.setbounds(110, 163, 130, 30);sjbl2=new jlabel(mima);sjbl2.setbounds(70, 200, 30, 30);sjbl3=new jlabel(zhuce);sjbl3.setbounds(255, 163, 52, 30);sjpf=new jpasswordfield();sjpf.setbounds(110, 200, 130, 30);sjbl4=new

16、jlabel(xiugai);sjbl4.setbounds(255, 200, 52, 30);sjp3_jb1=new jbutton(new imageicon(image/denglu.png); sjp3_jb1.setbounds(85, 270, 195, 30);图5- 1登录界面5.1.2 注册界面在注册界面(3-6)中同样采用默认布局自定义位置。对于jlabel、jtextfield、jpasswordfield如何放置就不讲太多了,在这里主要讲下新引入的知识点hashmap集合和graphics绘画技术。hashmap是集合类,我们可以通过put、get方法向其中添值、取

17、值,其最重要的一点是它是键值对形式的,通过一个键就能取出相应的值,对于本界面的全国省市联动,正好可以用到地址的灵活变动。通过for循环创建每个省份按钮,并添加addactionlistener监听器,获取其对应省份代号,再通过get方法向hashmap索要其对应的id值。代码如下:添加:hashmap hm=new hashmap();for(int i=0;iprovince.length;i+)hm.put(provincei, ari);获取:if(hm.containskey(s)registeraddress address=(registeraddress) hm.get(s);s

18、ystem.arraycopy(address.getcity(), 0, city, 0, address.getcity().length);for(int i=0;iaddress.getcity().length;i+)addr_jb3.additem(cityi);graphics可以对其进行重写,调用其方法进行绘画,对于本界面中的验证码,正是运用到此类,可以根据自己想要的样式进行绘制。代码如下:stringbuffer randomrecv = new stringbuffer();for (int i = 0; i recv; i+) /通过循环绘制验证码string stm =

19、 string.valueof(codesequencerandom.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)是一个重要的组成部分,用户在此能够进行密码修改、重置密码;在本界面中同样的运用到以上界面的基本布局界面的组件,同

20、样的引入了新的组件jtabbedpane。jtabbedpane提供add方法允许设计者向其中添加标题,通过添加addchangelistener监视器,当触发时候进行页面的跳转。从密码修改界面能够开出它拥有两个界面提供用户使用。代码如下:sjp0=new jpanel();sjp0.setlayout(null);sjp1=new jpanel();sjp1.setlayout(null);sjtp=new jtabbedpane();sjtp.add(修改密码,sjp0);sjtp.add(忘记密码,sjp1);图5- 3密码修改界面5.1.4 好友列表界面在好友列表界面(图3-8)中,引

21、入一个新的组件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.setcl

22、osedicon(close)return this;);图5- 4好友列表界面5.1.5 聊天窗口界面聊天窗口界面(3-9)是即时聊天系统里最重要的部位,在这我们能够进行交流,发送表情,发送文件,音乐,视频等,它是软件中的灵魂。从图片上看它只是个普通的界面,但是它拥有很多没有展示的部分,例如表情窗口、聊天记录界面、字体样式选框等。在这个普通的界面中运用到了jwindow、jtextpane、和jsplitpane组件。jtextpane是一个可以编辑和显示图片、文本html等的富文本组件。jwindow是一个窗口容器。但是它不像jfram那样,它不具有标题栏、窗口管理按钮等,我自认为它是做表

23、情窗口最佳的选择。jsplitpane分隔组件。两个组件图形化分隔以外观实现为基础,并且这个组件可以由用户自由调整大小。代码如下:jlabel jl=new jlabel105;string file_names=;for(i=0;ijl.length;i+)file_names=img/+i+.gif;jli=new jlabel(new chaticon(qqchatfacewindow.class.getresource(file_names),i), swingconstants.center);jli.settooltiptext(i+);jli.addmouselistener(n

24、ew mouseadapter() public void mouseclicked(mouseevent e)if(e.getbutton()=1) jlabel facelabel = (jlabel)(e.getsource();chatframe.insertface(facelabel.geticon(););jp.add(jli);图5- 5聊天窗口界面5.1.6 服务器端界面服务端仅是用来开启socket,界面并没有什么太多的功能,只是两个按钮而已,在这里就不做过多的介绍了。5.2 功能实现在实现功能之前我们需要做一些必要的共同类。首先我们需要做一个用户信息类(user),接着是

25、信息类(message),其次是消息类型类(messagetype),它们不需要做过多的设计,只需要定义一些需要的变量,然后对其进行set和get即可。5.2.1 实现登录实现登录功能还是一个比较简单的功能,只需要我们获取到用户的登录帐号和登录密码,通过对象流将对象(u)给传递给服务器,服务器通过get方法获取帐号和密码,然后从数据库中查询用户的密码字段信息进行对比,将对比的后的信息再通过对象流的方式传递给客户端,再进行相应的处理。代码如下:user m=new user();m.setuserno(sjtf.gettext().trim();m.setpasswd(md5.getmd5cod

26、e(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 oo

27、s = null;try oos=newobjectoutputstream(m.getuserno ().gets().getoutputstream(); catch (ioexception e1) e1.printstacktrace();msges s=new msges ();/做一个messages.setmestype(msges.message_get_allfriend);s.setsender(m.getuserno();/指明我要的是这个帐号的全部好友5.2.2 实现注册注册功能需要将用户在注册界面的填写信息和相应的选择信息,通过对象流的形式将对象(u)传递给服务器,服

28、务器调用数据库插入代码即可。代码如下:messagearray r=new messagearray();string str=new string6;md5 getmd5 = new md5();str0=nick_jtf.gettext();str1=num_jtf.gettext();str2=getmd5.getmd5code(string.valueof(jpf1.getpassword();str3=sex;str4=bir_jb1.getselecteditem().tostring()+bir_jb2.getselecteditem().tostring()+bir_jb3.g

29、etselecteditem().tostring();str5=addr_jb1.getselecteditem().tostring()+ +addr_jb2.getselecteditem().tostring()+addr_jb3.getselecteditem().tostring();r.setstr(str);user m=new user();m.setstr(str);u.settype(messagetype.message_ret_register);clientuser qqclientuser=new clientuser();if(qqclientuser.regi

30、ster(m)dispose();new clientlogin();5.2.3 实现修改密码密码的修改相对的简单,用户只需要根据相应的选项卡填写,就能够进行密码的修改,至于实现的代码如下:user m=new user();m.setuserid(m0);m.setnick(1);m.setpasswd(md5.getmd5code(m1);m.setnewpassword(md5.getmd5code(m2);m.settype(messagetype.message_rel_password);clientuser qqclientuser=new clientuser();if(qqc

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

32、的帮我们想要传递的信息转发给相应的好友。代码如下: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 移动黑名单黑名单功能是每个即时聊天软件必不可少的功能,对于

33、本系统的黑名单功能,那么我又是如何实现的呢?其实在方法是比较简单的,jtree提供一个自带的方法,它允许子节点进行移动,我们能够在界面上看到相互之间的移动,那么剩下的问题就是数据库存储的问题了。对于通常系统的黑名单,你将对方添加至黑名单,但对方并未将你删除或者也添加至黑名单;而且本系统的数据库中的好友字段在添加好友的时候只是将要添加好友的帐号追加到自己的好友字段中,好友的字段不做任何的处理,所以在添加黑名单的时候,你不知道自己的好友字段中是否有此帐号;本着简单的原则,我们只要将你想添加黑名单的帐号追加到你的黑名单字段,对于其在你好友字段中不做任何的处理。只需要在提取好友id信息的时候把存在黑名

34、单中的好友id移出即可。代码如下:public arraylist getfriend(string userid)string sql1=select friendid from friend where zhanghao=+userid+ limit 1;string sql2=select zhanghao from friend where friendid like %+userid+%;string sql3=select blackname from friend where zhanghao=+userid+ limit 1;sqlhelper sqlhelp=new sqlh

35、elper();arraylist str=sqlhelp.execute_getfriends(sql1, sql2,sql3);arraylist al=new arraylist();objecttr1=(object)tr.get(0);objecttr2=(object)tr.get(1);for(int i=0;itr1.length;i+)/system.out.println(tr1i);al.add(tr1i);for(int j=0;jtr2.length;j+)/system.out.println(tr2i);if(tr1i.equals(tr2j)al.remove(

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

37、(s.get msges ().equals( 3)if(qqchat.getchat(m.getgetter()+ +m.getsender()=null)qqfriendchatframe friendchat=new qqfriendchatframe(m.getgetter(),m.getsender();qqchat.addqqchat(m.getgetter()+ +m.getsender(), qqchat);qqfriendchatframe friendchat=qqchat.getqqchat(m.getsender()+ m.getgetter();if(!qqchat.

38、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架构的,每一个客户端都是一样的,系统内存放着这些表情图片,而且

39、每一个表情图片都有自己相应的id;因此,我们只需要提取到使用的表情图片的id,以及获得它在发送信息的位置即可,到时我们只需要将发送的文本和表情的id及其在发送信息的位置发送过去即可,客户端内置一些专门处理表情的函数,代码如下:重组发送表情:private string buildpicinfo()stringbuilder all = new stringbuilder();for(int i = 0; i this.jtp2.gettext().length(); i+) if(dmsg.getname().equals(icon) icon icon = styleconstants.ge

40、ticon(jtp2.getstyleddocument().getattributes(); friendchaticon fch = (friendchaticon)icons; pictureinfo pictureinfo= new pictureinfo (i,string.valueof(fch.getid(); allpictureinfo.add(pictureinfo); all.append(i+#+ fch.getid()+); 重组收到的表情信息串:public void receivedpicinfo(string pic)string picinfo = pic.s

41、plit(+);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中,它提供了很多能够发送文

42、件的方法,例如字符流、字节流、对象流等,但是在服务器端、客户端我们一直使用的是对象流进行数据的接受、发送,从而使发送的信息不至于错乱。考虑到我们不可能专门为发送文件再写一个服务器端,因此,对于文件的发送我们再次的使用对象流的形式进行发送,同样文件的发送也可以多对多的发送,不会造成错乱。文件的发送方式已经解决,那么对于文件的读取方式我们需要再次进行思考,由于发送的文件除了有文本文件,还有音乐、视频等,我们不可能直接使用字符流的方式进行读取,因此,我们只能采用字节流的形式读取文件。此时,文件的读取方式、发送方式已经确定,剩下的就是写入方式了,既然我们采用的是字节流的方式读取的,就应该用字节流的方式

43、进行写入,如何采用字符流的方式写入,会出现一些意想不到的问题,例如:文本文件可能会有乱码,一些图片、exe文件等打不开的问题。代码如下:文件的读取和发送:fileinputstream fis =new fileinputstream(filepath);byte bytes=new byte1024*4;while(fis.read(bytes)!=-1)sm.setbytes(bytes);objectoutputstream pos=new objectoutputstream(getoutputstream();pos.writeobject(sm);文件的写入:fileoutputs

44、tream ps=new fileoutputstream(sm.getsavepath()+sm.getfilename(),true);ps.write(sm.bytes();5.2.9 历史记录历史记录是每一个即时聊天系统必备的功能,本系统的历史记录做的相对比较简单,除了能够在每一页显示规定的记录条数之外,还能够显示当前页数和总页数,用户能够通过点击上一页和下一页进行翻看历史记录。代码如下:public void appendreceivechatrecord(arraylist list) /接受到的聊天历史信息追加jtp3.settext();for(int i=0;i list.s

45、ize();i+)string str=(string) al.get(i);system.out.println(str0+str1+str2+str3+str4);string msg=str0+ +str1;datefont.setmessage(msg);insertrecord(datefont);/插入标题string s=str2;string fmsg=s.split(+);string ss=fmsg3.substring(17, fmsg3.length()-1).split(,);int r=integer.parseint(ss0);int g=integer.pars

46、eint(ss1.substring(2);int b=integer.parseint(ss2.substring(2);myfont=getrecivedfont(str3,fmsg0,integer.parseint(fmsg1), integer.parseint(fmsg2), new color(r, g, b);pos3 = jtp3.getcaretposition();insertrecord(myfont);receivedpicinfo(str4);insertchatpic();6 测试阶段软件测试不是等到开发完成以后才进行的,而是伴随着软件生命周期的整个过程,判断软件

47、是否达到要求等。对于本软件的测试情况,我本着一个经过惠普软件测试培训者的心态,对即时聊天系统进行了相对全面的测试,各个界面的功能全部实现,从登录到注册再到修改密码,完全的没有问题,从用户添加好友、删除好友,移动黑名单,多人聊天,到发送文件等都已经实现了软件需求的功能,因此,对于此次设计的软件我还是相对比较满意的。对于软件中存在的bug已经进行了相对的修改,对于可能隐藏的问题,我只能在后续的发现后立即进行修改;没有一个软件是没有绝对没有漏洞的,唯有我们慢慢的去发现。总 结通过本次毕业设计,能够从中学到很多以前在课堂上学不到的知识。我们在大学的前三年中学到了很多编程语言知识,无论从最初的c语言,接

48、着c+,后来的vb,到最后的java等,虽然我们学了很多理论上的知识,但是很少有时间去付诸实践。这次设计让我真正的感觉到自己学到了一些东西,并且功能设计出自己想要的软件。虽然在设计的过程中,难免会遇到问题难以解决,通过查阅资料上网查找答案等,让我知道这些问题并不是只有自己遇到,同样的在学习的过程中别人也遇到过,我们应该将其攻破克服,只有这样我们才能够掌握更多的知识,对知识更加的理解,不能因为一个小小的问题就轻言放弃。在开发的时候发现java语言有些地方让自己感到头痛,动不动就要重写类,而且重写之后系统还不稳定,例如:jtree的节点图标和把柄图标的修改,前期修改的时候,图标完全是叠加在一起的,

49、现如今虽然稳定了一些,但是有时还是会出来这样的问题。对于如果想要实现自己的方法,就有重写java类,而且有些自己还不会重写,这是最让人烦恼的;曾经想过要放弃,重新选择一个设计,最后终于还是坚持过来了。学习编程语言本来就是一件不容易的事情,我们不能遇到问题就轻言的放弃,而是要坚持到底,我们才能够学到知识,学到比别人好,懂的比别人多。总之,本次课题设计的研究让我懂得了更多的知识,对java语言有了进一步的了解;同时觉得自己运用到自己学习到的知识能够设计出自己想要的东西,这是自己感觉最高兴的事情。希望在以后能够学的更多,学到更好!参考文献1 印旻,王行言java语言与面向对象程序设计(第二版)m.北

50、京:清华大学出版社,2007.112 辛运帏,饶一梅java语言程序设计m.北京:人民邮电出版社,2009.103 张晓龙,刘钊java程序设计基础m.北京:清华大学出版社,2010.74 邱李华sql server 2008数据库应用教程(第二版)m.北京:人民邮电出版社,2012.85 王珊,萨师煊数据库系统概论(第四版)m北京:高等教育出版社,2006.5致 谢在论文即将完成时候,我有种如释重负的感觉。从选择这个课题之后,我就在为完成它而不停的努力着,无论是从最基础的java知识点开始学起,还是到如今将整个系统开发完成,这里不仅仅有我个人的辛苦努力,同时还有指导老师的帮忙,还有那些帮助我

51、的朋友们,在这里我向你们送上最真挚的谢意,谢谢你们的帮忙,让我能够从当初的一无所知,到整个论文的完成,这里不只有我个人的功劳,同时还有你们的功劳,谢谢! 2*本科毕业设计(论文)管理暂行规定毕业设计(论文)是本科人才培养的重要实践性教学环节,也是学士学位评定的重要依据。为了切实做好我校的毕业设计(论文)工作,规范毕业设计(论文)工作的管理,提高毕业设计(论文)的质量,特制定本规定。一、毕业设计(论文)的主要目的(一)培养学生运用所学知识独立地分析和解决本专业范围内一般问题的能力,培养学生的创新意识和实践能力,使学生从事学术研究的能力得到初步的训练;(二)培养学生理论联系实际的工作作风和严谨认真

52、的科学态度;(三)培养学生分析设计能力、研究实验能力、工程实践能力、经济分析能力、外文阅读能力和计算机的运用能力,以及社会调查、文献资料查阅和论文写作能力。二、毕业设计(论文)的基本要求(一)按照各专业“毕业设计(论文)教学大纲”的要求进行;(二)要具有学术性,要对自然科学或社会科学内某一领域进行专门、系统的研究,并表达其研究成果;(三)要具有创见性,要对学术或工程的某个问题有新的发现、新的构想或新的发展和完善;(四)要具有科学性,要求论述系统而完整,首尾一贯而不前后矛盾,实事求是而不主观臆造;(五)要具应用性,要能解决生产实际问题,在技术改造、生产管理等通过方面有所创造;(六)应做到观点正确

53、、论据充分、推理严密、计算准确,层次分明、条理清楚、语言精炼,有必要的图表和相关资料等;(七)应参阅一定数量的外文资料,并要求在毕业设计(论文)中反映出来。三、毕业设计(论文)的工作程序毕业设计(论文)工作程序分为选题、开题、撰写论文或设计、中期检查、答辩、归档等环节。四、毕业设计(论文)的时间安排毕业设计(论文)工作时间为812周,时间安排应按*本科生毕业设计(论文)工作流程执行,集中用于毕业设计(论文)的时间不得少于专业培养计划规定的周数。五、毕业设计(论文)的领导与管理全校毕业设计(论文)在分管教学副校长领导下进行,分级管理,层层负责。(一)教务处毕业设计(论文)管理工作职责:1、汇总各

54、院(部)毕业设计(论文)题目和指导教师安排,协调有关问题;2、做好毕业设计(论文)前期、中期、后期检查工作,对未达到各阶段进度、质量要求或违反有关规定的院(部)提出整改要求;3、开展学校毕业设计(论文)工作评估和研究工作。(二)院(部)毕业设计(论文)管理工作职责:各院(部)成立毕业设计(论文)工作领导小组,确定毕业设计(论文)指导教师,布置毕业设计(论文)工作任务,检查本院(部)毕业设计(论文)工作落实情况。院(部)毕业设计(论文)管理工作职责为: 1、审查毕业设计(论文)选题、下达任务书,安排指导教师,布置毕业设计(论文)有关工作;2、定期检查毕业设计(论文)工作进展情况,协调处理毕业设计(论文)中

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论