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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

本文(java课设聊天程序说明书解析.docx)为本站会员(b****5)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

java课设聊天程序说明书解析.docx

1、java课设聊天程序说明书解析*实践教学* 兰州理工大学计算机与通信学院2013年秋季学期 Java 课程设计题 目: 聊天程序 专业班级:计算机科学与技术班 姓 名: 学 号: 指导教师: 成 绩: 摘要Java是一种重要的、流行的计算机程序设计语言。Java课程设计要求学生利用图形用户界面,实现一个聊天室中多人聊天;两人私聊等功能。主要技术利用Java的Socket通信。设计、开发一套简单的聊天程序软件。Java是一个面向对象的程序设计软件,它将重点放在数据和对象的接口上,与C+相比的主要不同在于多继承,在Java中,取而代之的是简单的接口,以及Java的元类模型。这也很大程度上给我们初学

2、编程的人带来很呆的方便,也使我们更容易掌握Java编程的一些基本要领和深层知识。通过该题目的设计,培养学生面向对象程序设计的思想,要求学生达到熟练掌握Java语言的基本知识和技能,基本掌握面向对象程序设计的基本思路和方法,能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。同时强调好的程序设计风格,提高解决实际问题的能力。关键词:类;可视化界面;聊天程序;Java 序言Java不仅是一门最为流行的计算机语言,而且已经形成一种专门的技术,带来了20世纪末和本世纪初网络科技和网络经济超常发展。Java的与平台无关性、高可靠性、安全机制和内嵌网络支持等特性使它成为编写网络应用程序的首选工具

3、之一。从另一方面来看,软件开发的规模也日渐扩大,对软件质量的要求越来越高,与之相对应的是,各种软件技术和工具层出不穷,各种软件开发、软件质量控制、软件管理法方法学业日渐成熟。面对软件发展的这一现状和趋势,无论是拥有计算机基础知识的学生还是IT领域的起步者,熟练掌握一门语言都是至关重要的。Java是一个面向对象的程序设计软件,它将重点放在数据和对象的接口上,与C+相比的主要不同在于多继承,在Java中,取而代之的是简单的接口,以及Java的元类模型。这也很大程度上给我们初学编程的人带来很呆的方便,也使我们更容易掌握Java编程的一些基本要领和深层知识。该程序是利用文件来实现的,程序的重要作用是利

4、用图形用户界面,设计一个简单的聊天程序,实现一个聊天室中多人聊天;两人私聊等功能。通过该题目的设计,培养学生面向对象程序设计的思想,要求学生达到熟练掌握Java语言的基本知识和技能,基本掌握面向对象程序设计的基本思路和方法,能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。同时强调好的程序设计风格,提高解决实际问题的能力。目录一、分析与设计 41.1问题描述 41.2需求分析 41.3功能模块图 41.4系统类层次 5二、 详细设计 62.1聊天室客户端类 62.2聊天线程类的实现 62.3接收服务器发送的信息类的实现 72.4处理系统信息的实现 82.5私聊窗口类的实现 10三、

5、 系统测试 123.1测试方案 123.2测试用例 123.3测试结果 123.4软件可靠性分析 18四、 软件使用说明书 19设计总结 20主要参考文献 21致谢 22附录:源程序 23一、分析与设计1.1问题描述 该设计要求设计、开发一套简单聊天程序软件,主要实现一个聊天室中两人私聊,多人聊天两大功能。通过该题目的设计,培养面向对象程序设计的思想,要求达到熟练掌握Java语言的基本知识和技能,基本掌握面向对象程序设计的基本思路和方法,能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。同时强调好的程序设计风格,提高解决实际问题的能力。1.2需求分析 聊天程序要求实现最基本的功能,

6、包括一个聊天室中多人聊天;两人私聊等功能,主要技术利用Java的Socket通信。聊天程序主要包括以下功能:(1). 登录:新用户登录。(2). 私聊:两人私聊。(3). 群聊:一个聊天室中多人聊天。(4). 退出:已在聊天室用户退出。 1.3功能模块图总体功能模块图,如图1.1所示:图1.1 聊天程序模块示意图 1.4系统类层次 定义聊天室客户端类:public class Client定义聊天室服务器端类:public class Server implements Protocol定义用户线程类:static class UserThread extends Thread私聊窗口类:pr

7、ivate class ChatWindow接收服务器发送的信息类:class GetMsgThread extends Thread登陆线程类:public class LoginThread extends Thread implements Protocol聊天线程类:class ChatThread extends Thread implements Protocol检查信息是否允许发送,包括检查敏感词汇/空信息/刷屏:private boolean isAllowed(String msg, String msgto)2、详细设计2.1聊天室客户端类public class Clie

8、nt /主方法:启动登陆线程 public static void main(String args) throws Exception Thread login = new LoginThread(); login.start(); 2.2聊天线程类的实现 class ChatThread extends Thread implements Protocol private Map users = new HashMap(); private String name; private Socket s; private BufferedReader in; private PrintWrit

9、er out; private JComboBox cb; private JFrame f; private JTextArea ta; private JTextField tf; private static long time;/ 上一条信息的发出时间 private static int total;/ 在线人数统计 public ChatThread(String name, Socket s, BufferedReader in, PrintWriter out) this.name = name; this.s = s; this.in = in; this.out = out

10、; 2.3接收服务器发送的信息类的实现 class GetMsgThread extends Thread public void run() try String msg, name; while (!s.isClosed() /* * 不断接受服务器信息,外层循环防止读到null跳出循环 */ while (!s.isClosed() & (msg = in.readLine() != null) msg = specialMsg(msg);/ 系统信息处理 if (msg.startsWith(MSG_FROM) msg = msg.replaceFirst(MSG_FROM, ); n

11、ame = msg.substring(0, msg.indexOf(NAME_END); msg = msg.replaceFirst(name + NAME_END, ); JTextArea tas = (ChatWindow) users.get(name).tas; tas.append(name + 说: + msg + n); tas.setCaretPosition(tas.getText().length(); ta.append(name + 悄悄地对你说: + msg + n); else if (msg.contains(NAME_END) name = msg.sub

12、string(0, msg.indexOf(NAME_END); msg = msg.replaceFirst(name + NAME_END, ); ta.append(name + 说: + msg + n);/ 在窗口显示信息 else ta.append(msg + n); ta.setCaretPosition(ta.getText().length();/ 自动滚动到底部 catch (Exception e) out.println(SYSTEM_MSG + USER_LOGOUT);/ 当异常产生时向系统发出退出信息 finally try s.close(); catch (

13、IOException e) GetMsgThread gt = new GetMsgThread(); gt.start();2.4处理系统信息的实现 private String specialMsg(String msg) if (msg.startsWith(SYSTEM_MSG) msg = msg.replaceFirst(SYSTEM_MSG, ); /* * 当有人进入聊天室 */ if (msg.startsWith(ADD_USER) msg = msg.replaceFirst(ADD_USER, ); cb.addItem(msg); users.put(msg, ne

14、w ChatWindow(msg);/ total+; msg += 进入聊天室; /* * 当有人离开聊天室 */ else if (msg.startsWith(DELETE_USER) msg = msg.replaceFirst(DELETE_USER, ); cb.removeItem(msg); (ChatWindow) users.get(msg).tas.append(msg + 退出聊天室n); users.remove(msg); total-; msg += 退出聊天室; /* * 登陆时获得的在线用户列表信息 */ else if (msg.startsWith(EXI

15、ST_USERS) msg = msg.replaceFirst(EXIST_USERS, ); cb.addItem(msg); users.put(msg, new ChatWindow(msg); total+; msg += 正在聊天室; /* * 即时显示在线人数 */ f.setTitle(SOFTWARE + - + name + 当前在线人数: + total); return msg; return msg; /* * 检查信息是否允许发送,包括检查敏感词汇/空信息/刷屏 */ private boolean isAllowed(String msg, String msgt

16、o) /* * 过滤空信息 */ if (msg.length() = 0) return false; String errmsg = null; /* * 过滤敏感词汇 */ for (int i = 0; i -1) errmsg = 包含敏感信息,信息发送失败!n; break; long timenow = (new Date().getTime();/ 获得当前时间信息 /* * 防刷屏 */ if (timenow - time TIME_BETWEEN_MSG * 1000) errmsg = 发送信息的最短间隔为 + TIME_BETWEEN_MSG + 秒,请勿刷屏!n;

17、if (errmsg = null) time = timenow;/ 记录发送信息时间 return true; else if (msgto = null) ta.append(errmsg); else (ChatWindow) users.get(msgto).tas.append(errmsg); return false; 2.5私聊窗口类的实现 private class ChatWindow JFrame fs; JTextArea tas; String name; public ChatWindow(String username) this.name = username

18、; fs = new JFrame(); fs.setSize(400, 200); fs.setTitle(SOFTWARE + - + 与 + name + 私聊); fs.setLocation(300, 200); tas = new JTextArea(); JScrollPane sps = new JScrollPane(tas); tas.setEditable(false); final JTextField tfs = new JTextField(); JPanel ps = new JPanel(new BorderLayout(); / JComboBox cbs =

19、 new JComboBox(); / cbs.addItem(name); / ps.add(cbs, BorderLayout.WEST); ps.add(tfs); fs.getContentPane().add(ps, BorderLayout.SOUTH); fs.getContentPane().add(sps); /* * 监听用户在私聊窗口输入的信息(匿名内部类) */ tfs.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) if (users.containsK

20、ey(name) / if (isAllowed(e.getActionCommand(), name) sendMsg(name, e.getActionCommand(), true); tfs.setText(null); else tas.append(信息发送失败,用户已经离开聊天室.n); ); 3、系统测试3.1测试方案 采用白盒测试,也称为结构化测试、基于代码的测试,是一种测试用例设计方法,它从程序的控制结构导出测试用例。 由于测试采用的是白盒单元测试,所以,我们的测试原则是: 1.准备测试数据和预期结果 2.调用测试单元对测试数据进行处理,得到处理结果 3.比较处理结果和预期

21、结果是否匹配3.2测试用例测试所用数据:用户总数4名,分别为:冰玉翔翎、只为你写诗、四季如春、陌北北13.3测试结果用户登录界面如图3.1所示: 图3.1用户登录界面两人私聊界面如图3.2所示: 图3.2两人私聊界面群聊界面如图3.3所示: 图3.3群聊界面用户退出聊天室界面如图3.4所示: 图3.4用户退出聊天室界面3.4软件可靠性分析利用计算机进行聊天程序,其系统为C/S模式。首先根据功能模块将系统分为两部分:服务端(Server)和客户端(Client)。然后构造可以序列化的类,这是本系统的对象。根据功能细分类和方法,建立文件和网络的传输通信,实现聊天室的基本功能。4、软件使用说明书4.

22、1用户登录:打开登录界面,输入用户名,点击登录按钮,进入聊天室。4.2两人私聊:选择已在聊天室且想私聊的用户,发送并接受消息。4.3群聊:选择群聊功能,发送并接受消息。4.4退出:关闭聊天界面,退出聊天室。设计总结通过这次的课设我收获了许多,首先使我提高了分析问题,并根据需求转化成相应的程序结构的能力;其次也丰富了自己编写程序,调试程序的经验,这使得我认识到编程时可能出现的错误,并对如何去避免产生了新的认识。总的来说这次课设比较成功,虽然在课设过程中遇到了很多棘手的问题,比如编了好几天的程序却一大堆的错误,又得改好长时间。经过这次Java课程设计,发现了自己Java方面的好的不足,加深我对Ja

23、va语言的理解,同时也提高了自己的编程的能力,编程是个长久的过程,平时要多去动手实践,去提高自己分析问题、发现问题、解决问题的能力。通过该题目的设计,培养面向对象程序设计的思想,要求达到熟练掌握Java语言的基本知识和技能,基本掌握面向对象程序设计的基本思路和方法,能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。同时强调好的程序设计风格,提高解决实际问题的能力。这次Java实习计终于顺利完成了,在设计中遇到了很多的问题,也学会了很多很多在学校里面无法学到的东西。比如团队合作等等。Java课设让我受益匪浅!使我充分的认识到了课设的重要性和自己在Java学习方面的优缺点!最后对于给过

24、我帮助的老师和同学表示衷心的感谢!同时也感谢老师为我们提供了一个了解自己检验自己知识水平的平台!主要参考文献1曲朝阳,杨杰明等.Java程序设计. 北京: 清华大学出版社,2008.102耿祥以,张跃平.Java大学生实用教程. 北京: 电子工业出版社,2012.6 3明日科技.Java经典编程.北京:清华大学出版社,2012.104李尊朝,苏军.Java语言程序设计.北京:中国铁道出版社,2004.25王博. 面向对象的建模、设计技术与方法. 北京希望电脑公司,1990.6 张桂元,贾燕枫.Eclipse开发入门与项目实践M.北京:人民邮电出版社,2006 7 赵强.基于开源软件的J2EE企

25、业级应用开发M.北京:电子工业出版社,20058 (美)John Hunt,Chris Loftus著.精通J2EEJava企业级应用M.周立斌,杨飞等译.北京:清华大学出版社. 20049 曹广鑫,王谢华,王建凤等.Struts数据库项目开发宝典M.北京:电子工业出版社,200610 施伯乐、丁宝康. 数据库系统教程,高等教育出版社,2008年7月;11 邵丽萍.软件开发技术M.北京:清华大学出版社,200512 谢星星,沈懿卓.UML基础与ROSE建模实用教程.北京:清华大学出版社,200913 邵丽萍.软件开发技术M.北京:清华大学出版社,200514 郭兴成.PowerBuilder9

26、.0实用教程M.北京:清华大学出版社,2003 致谢对于这次Java课设,我感慨颇多。首先感谢我的指导老师,她在我的课程设计过程中提出了指导性的方案和架构,并指引我阅读相关的资料和书籍,使我在不熟悉的领域中仍能迅速掌握新的技术,理论联系实际,完成这一设计。同时也感谢我的Java任课老师,感谢她在基础课学习中为我打下良好的基础,这是我这次课程设计能够顺利完成的前提。我的同学在设计过程中,给我提出了许多建设性的意见和建议,并在最后的调试程序的过程中帮我找出了一些潜在的错误,没有他们,我也许发现不了这些错误,在此一并表示感谢。 的确,在这两周的课程设计日子里,可以说是苦多于甜,但是可以学到很多很多的

27、东西,不仅可以巩固了以前所学过的知识,而且还学到了很多在书本上没有学到过的知识。这次课程设计使我对图形化界面有了充分的了解,以前上课的时候对知识的掌握只是理论性的,没有通过自己动手实践,当真正的自己动手操作的时候才会感觉到理论的知识太片面,通过实践,我也解决了很多困我很久的问题,以前看似很难理解的问题,在实践的过程中都有了充分的理解和认识,我发现了自己很多的缺点和错误,并且改正了不好的习惯,养成了遇事要认真的态度,使我认识到无论做什么事都要持之以恒,只要自己努力就会成功!通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学过的理论知识与实践相结合起来,从理论中得出结论,才能真正的为社会服务,从而提高自己的实际动手能力和独立思考问题的能力。在设计的过程中遇到问题,我学会了自己进行独立的思考和解决。通过课程设计之后,把以前所学过的知识重新温故。附录:源程序import .*;import java.io.*;import java.util.*;public class Server implements Protocol /* * 用户名存入key,线程存入对应value */ private static Map users = new HashMap(

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2