ImageVerifierCode 换一换
格式:DOCX , 页数:23 ,大小:462.77KB ,
资源ID:7310722      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7310722.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(即时通网络通信系统的设计与开发.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

即时通网络通信系统的设计与开发.docx

1、即时通网络通信系统的设计与开发Java课程设计报告题 目 “即时通”网络通信系统的设计与开发 课程设计报告单学号姓名专业班级软件工程(莱)12-2考 核 项 目评分备注1平时工作态度及遵守纪律情况(10分)2掌握基本理论、关键知识、基本技能的程度和阅读参考资料的水平(10分)3独立工作能力、综合运用所学知识分析和解决问题能力及实际工作能力提高的程度(20分)4完成课程设计说明书及软件的情况与水平(小组分工情况、规范性、整洁清楚、叙述完整性、思路清晰程度、工作量及实际运行情况和创新性)(60分)总评成绩综 合 评 定:(优、良、中、及格、不及格) 指导教师签字:2014年12月26日Java课程

2、设计任务书一、课程设计任务及要求:任务:针对小型信息管理系统或若干综合性设计题目,选择一种软件开发模型,完成从需求分析、系统设计、系统实现,软件测试的全过程。要求:(1)根据软件系统开发的一般原则,完成相应系统的功能设计,完成主要功能模块的程序实现并进行测试训练,给出代码运行结果和相应的设计文档。可以分组进行,但所有学生必须经历整个系统的开发全过程,以便加深对系统开发全过程的认识。(2)提交课程设计报告。(3)指标: 要求完成课程设计报告3000字以上(约二十页);完成所设计的题目,设计题目的语句行数的和在200行语句以上。二、工作量2周(10个工作日)时间三、计划安排第1个工作日第2个工作日

3、:查找相关资料、书籍,阅读示例文档;设计程序结构、模块图、完成类的设计。第3个工作日第7个工作日:完成程序的编码,并且自己调试、测试。穿插进行项目文档的撰写。第8个工作日第9个工作日:撰写和整理项目文档。第10个工作日:由教师检查软件测试效果、项目文档,给出学生本课程成绩。指导教师签字:2014年12月15日目录题目: 11.需求分析 12.概要设计 12.1系统总的设计思路 12.2体系结构 12.3功能模块图 13.详细设计 34.编码 34.1在登陆界面设置用户名和密码不能为空并给出提示 34.2如果用户登陆成功如何直接进入聊天界面. 34.3如何设置性别,是用户注册后性别显示在数据库表

4、中 45.调试分析 56.测试结果及运行效果 57.系统开发所用到的技术 88.课程设计总结 8参考文献 9附录 全部代码 10题目:“即时通”网络通信系统的设计与开发1.需求分析即时通,是一个类似于QQ的网络通讯软件,系统包含了登陆界面,注册界面和聊天界面。用户通过登陆进入聊天界面和好友进行聊天,用户如果没登陆的用户名和密码可以通过注册后再登录进入聊天界面和好友聊天。2.概要设计使用JAVA开发一个类似QQ的网络通讯系统,该系统能够进行用户管理,聊天通讯及系统管理。 该聊天室系统包括客户端和服务器端。本系统使用JAVA SWING技术进行前台界面的设计和开发, 使用Socket 与 Serv

5、erSocket网络编程进行客户端与服务器端的连接与通信,使用Java输入输出流进行客户端与服务器端之间的数据传输,使用JDBC技术与后台数据库进行连接和访问。该系统将能够实现用户登录功能,并能对用户信息进行增加,删除,修改和查询。登录的用户将可以进行群发,私聊及文件发送和接收。系统总体架构如下:图2-1 即时通总体框架图2.1系统总的设计思路首先设计系统管理,其次设计用户管理,再次设计通讯,最后设计数据库操作。2.2体系结构具体为客户端的设计,服务端的设计和公共端的设计。2.3功能模图2-2各功能模块流程图编号功能名操作组件程序1系统管理登录界面LoginGui.java登录处理LoginM

6、anager.java 2用户管理创建用户界面UserAddGui.java维护用户界面UserEditGui.java用户管理处理UserManager.java 3通讯聊天主界面MainChatGui.java聊天界面ChatGui.java文件发送界面FileSendGui.java文件接收界面FileReceiverGui.java通讯处理ChatManager.java4数据库操作数据操作封装JDBCUtil.java表2-1 个模块主要任务3.详细设计1 “即时通”系统包括三个工程,工程一包括四个程序,分别为:登陆(Login.java),注册(Register.java),聊天(

7、Chat.java),客户工作者(ClientWorker.java);工程二包括四个程序,分别为:DB帮助者(DBHelper.java),信息(Message.java),信息服务(MessageService.java),用户(User.java);工程三包括两个程序,分别为:服务器(QQServer.java),服务器(ServerWorker.java)。2 运行服务器 QQServer.java程序,在运行客户端的登陆,客户可以在登陆界面输入自己的用户名和密码点击“登陆”,如果用户名和密码都正确,点击“登陆”按钮会弹出提示框“登陆成功”,点击“确定”按钮将会进入到聊天界面;如果用户

8、名或密码错误点击“登陆”按钮会弹出提示框“登陆失败”,如果用户名或密码为空点击“登陆”按钮会弹出提示框“用户名或密码不能为空”,如果点击“取消”按钮,你的用户名和密码将会被清空,点击“注册”,会直接进入注册界面。3 运行服务器QQServer.java程序,在运行客户端的注册,客户可以在注册界面输入自己的用户名,密码,确认密码,昵称,性别,爱好,城市,职称。如果用户名和密码错误会弹出注册失败,如果用户名写了,密码没写会弹出提示框“密码不能为空”,如果密码写了,密码没写会弹出提示框“用户名不能为空”,如果用户名和密码注册过,会弹出提示框该“用户已存在,请更换用户名”。如果用户名,密码,确认密码都

9、正确会弹出提示框“注册成功”。昵称,性别,爱好,城市,职称可以不写。4 运行服务器QQServer.java程序,在运行客户端的登陆,登陆成功后,客户进入到聊天界面。可以连续登陆无数个用户,他们可以同时和其他的人聊天,输入要发送的内容再选中对象即可,如果在输入内容没有选择发送的对象将会弹出提示框“请选择好友”,如果没有输入内容就发送给好友将会弹出提示框“输入内容不能为空”。4.编码4.1在登陆界面设置用户名和密码不能为空并给出提示?解决方案:用if语句写一段代码: String name = nameItem1.getText(); if(name= null |.equals(name) J

10、OptionPane.showMessageDialog(this,用户名不能为空,请重新输入。,异常提示,JOptionPane.ERROR_MESSAGE); return; char pwd=pwdItem1.getPassword(); String pwd1 = new String(pwd); if(pwd.length=0) JOptionPane.showMessageDialog(this,密码不能为空,请重新输入。,异常提示,JOptionPane.ERROR_MESSAGE); return; 4.2如果用户登录成功如何直接进入聊天界面?解决方案:在点击“确定”按钮事件,

11、加上聊天界面的代码,代码如下: String r=(String)result11.getBody(); if(r=null)/登陆成功 JOptionPane.showMessageDialog(this,登陆成功,弹出提示, JOptionPane.INFORMATION_MESSAGE); java.awt.EventQueue.invokeLater(new Runnable() public void run() new Chat(u,s).setVisible(true); ); this.dispose(); 4.3如何设置性别,使用户注册后性别显示在数据库表中?解决方案:在登录

12、代码final User u = new User(name,pwd1l);中填入null,在注册代码 添加: String Sex=null; if(Item1.isSelected() Sex=Item1.getText(); else if (Item2.isSelected() Sex=Item2.getText(); else if (Item3.isSelected() Sex=Item3.getText(); else if(Item4.isSelected() Sex=Item4.getText(); 在DBHelper.java代码 pstm=con.prepareState

13、ment(insert into modo (userName,userPwd,userSex) + values(?,?,?);modo中添加userSex,values中加入? 在代码 pstm.setString(1, u.getUserName(); pstm.setString(2,u.getUserPwd(); 中加入pstm.setString(4,u.getUserSex();在User.java中加入 private String userSex; public User(String userName, String userPwd ,String userSex) thi

14、s.userSex = userSex; public String getUserSex() return userSex; public void setUserSex(String userSex) this.userSex = userSex; 在数据库表设计表中加userSex即可。测试:用Access数据库制作表格,配置数据源,运行QQserver,在运行登陆,注册,聊天。问题1:如果该用户已经登陆成功没有下怎么能使该用户不能再次登陆。解决方案:用if语句判断该用户是否已登录,若已登录则再次登陆时显示登陆失败。代码如下: if(usersOnLine.containsKey(u)

15、return 用户已经登陆; /检测用户名是否存在 if(!DBHelper.getInstance().isUserExistes(u.getUserName() return 用户已存在; 问题2:若用户输入的消息后没有选中好友就发送怎么提示用户没有选中好友?解决方案:用数组合if语句来编写如下代码 String Username; Object listname=usersListItem.getSelectedValues(); if(listname.length=0) JOptionPane.showMessageDialog(this,请选择聊天好友。,异常提示,JOptionP

16、ane.INFORMATION_MESSAGE); return;5.调试分析在用户登陆的过程中,若用户输入的密码错误,则给出提示并让用户重新输入密码;在用户注册的过程中,若用户不小心把注册信息填写错误,则给出提示并让用户重新填写注册信息;在通讯过程中,聊天内容发送错误系统不会给出提示,如果是文件发送错误,在没有发送成功是用户可以主动的取消发送,经过一系列的分析调试最终把问题解决了6.测试结果及运行效果(1)程序运行时,则系统管理界面显示如图6-1所示: 图6-1系统广利界面的显示效果(2)程序运行时,则用户管理界面显示如图6-2所示: 图6-2 用户注册的界面(3)程序运行时,则用户聊天界面

17、显示如图6-3所示: 7.系统开发所用到的技术Microsoft Windows XPNetBeans IDEAccess数据库Java程序组件8.课程设计总结经过两周的JAVA课程设计的实习,在老师的细心指导下,我发现了JAVA语言的价值所在,尽管上了十五周的JAVA课,但是我觉得我没学到什么东西,有的代码还看不懂,更不用说写一个好的程序出来。老师从设计界面开始,一直教到我们把基本程序都做出来,我们就像刚出生的孩子一样什么都不会,如果没有老师的指导,我觉得我们绝不可能设计开发出这个程序。网上说JAVA语言很有前景,未来的市场很好,现在很多地方都应用了,之前都不知道它到底是怎么创出那么多的财富

18、的,书上写的都是代码。一直对着书看代码还真看不出它的作用。现在的大型银行和企业的系统都是用JAVA语言设计开发出发的。老师鼓励我们好好学它对我们今后的生活有利,学好了我们今后将会容易找到工作。参考文献1 吕凤翥,马皓. Java语言程序设计(第2版)M.北京:清华大学出版社,2010 期刊 2 石振国. 用JSP实现对Web数据库的访问J. 计算机应用,2010(05):5-8.4 萨师煊,王珊.数据库系统概论高等教育出版社,2002年2月5 耿祥义,张跃平。java2实用教程第四版清华大学出版社2012年8月第4版附录 全部代码ChartGui.javapublic class ChartG

19、ui extends javax.swing.JFrame private User u; private Socket s;/就是登陆成功的管道 final static int MAXUSER=100; /最多可同时聊天一百个人 public ChartGui() initComponents(); public JList getUsersList() return ListItem; public void setchat2Item(String usersChart) String s=this.chat2Item.getText()+usersChart; this.chat2It

20、em.setText(s); /* Creates new form ChartGui */ public ChartGui(User u,Socket s) initComponents(); this.u=u; this.s=s; this.setTitle(u.getUserName(); /秘书类,用以不断的接收消息 new ClientWorker(s,this).start(); public void addUsers(List list) DefaultListModel dlm=(DefaultListModel)ListItem.getModel(); for(User u

21、:list) dlm.addElement(u); public void addNewUser(User u) DefaultListModel dlm=(DefaultListModel)ListItem.getModel(); dlm.addElement(u); public void delUser(User curu) DefaultListModel dlm=(DefaultListModel)ListItem.getModel(); dlm.removeElement(curu); private void jButton4ActionPerformed(java.awt.ev

22、ent.ActionEvent evt) / TODO add your handling code here: User NUser=new UserMAXUSER;String UsersName;int i=0;/ =usersList.getSelectedValues();for(Object a:ListItem.getSelectedValues()NUseri=(User)a;i+;int j=0;UsersName=NUserj.getUserName();j+;for(;NUserj!=null;j+)UsersName=UsersName+,+NUserj.getUser

23、Name();String text= chatItem.getText();if(NUser=null)JOptionPane.showMessageDialog(this, 请在在线好友中选择你要聊天的好友, 异常提示, JOptionPane.INFORMATION_MESSAGE);return;if(text=null)JOptionPane.showMessageDialog(this, 发送信息不能为空!, 异常提示, JOptionPane.INFORMATION_MESSAGE);return;elseString UsersText=this.chat2Item.getTe

24、xt()+n+您对+UsersName+说:n+this.chatItem.getText()+n;chatItem.setText(null);this.chat2Item.setText(UsersText);Message chartM=new Message(4,u,NUser,text);MessageService.getInstance().sendMsg(chartM, s);public JList getListItem() return ListItem; public void setUsersChartText(String usersChart) String s=

25、this.chat2Item.getText()+usersChart; this.chat2Item.setText(s); LoginGui public Socket connectServer() Socket s=null; try s=new Socket(127.27.21.21,6666); catch(Exception e) e.printStackTrace(); return s; private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) / TODO add your handling c

26、ode here: final LoginGui gui=this; java.awt.EventQueue.invokeLater(new Runnable() public void run() RegisterGUI dialog = new RegisterGUI(gui, true); dialog.setLocationRelativeTo(gui); dialog.setVisible(true); private void jButton3MouseClicked(java.awt.event.MouseEvent evt) / TODO add your handling c

27、ode here: private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) / TODO add your handling code here: nameItem.setText(null); pwdItem.setText(null); this.dispose(); private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) String name=nameItem.getText(); System.out.println(用户

28、名:+name); char pwd=pwdItem.getPassword(); String pwd1=new String(pwd); System.out.println(密码:+pwd1); if(name=null|.equals(name ) JOptionPane.showMessageDialog(this,用户名不可为空,异常提示,JOptionPane.ERROR_MESSAGE); return; / TODO add your handling code here: if(pwd=null|.equals(pwd1) JOptionPane.showMessageDi

29、alog(this,密码不可为空,异常提示,JOptionPane.ERROR_MESSAGE); return; /发送name 和pwd到服务器 /连接服务端 final Socket s=this.connectServer(); /构造消息 final User u=new User(name,pwd1,null,null,null); /以后只发送u代表它们 Message msg=new Message(1,u); /0 代表登陆 /执行发送 MessageService.getInstance().sendMsg(msg,s); /接受消息【接收登陆结果】 Message result=MessageService.getInstance().receiveMsg(s);/收消息只传管道Sokect s / 取出登陆成功的标志 String r=(Str

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

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