




已阅读5页,还剩11页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
甘肃政法学院计算机科学学院Java程序设计课程设计题 目 网络聊天程序开发设计与实现计算机科学学院信息管理与信息系统专业10级信管班学 号:8 2姓 名: 贾 燚 李 思 敏 指导教师: 李 瑞 生 成 绩:_完成时间:2011年 12月 目录1.摘要22.绪论02.开发环境03.需求分析13.1程序简介13.2程序功能14.系统设计24.1概要设计24.2详细设计25.测试86.结论11参考文献12摘要 本次训练主要是考查了对JAVA程序设计的综合运用,设计一个Socket通信的聊天程序,用户可以通过程序进行聊天通信,但不支持用户自定义表情及图片的发送。本程序设计也用到了一些相关的标准Java的类,给程序设计带来了许多的方便,但用那些要切记加相应的类的包,还有一些构造方法和个别接口方法。本程序可以实现用户之间的一些简单的交互,虽然功能较少,但是我想通过这次程序设计来熟悉并且学习更多关于JAVA编程的东西,来便于以后可以使用。关键词:java聊天1.绪论对于一个选择网络编程的人来说,必须要有足够的细心和耐心,因为编程一般来说是很枯燥的乏味的,而且程序会越来越复杂,它所用到的符号、标记很多,所以不能出点小错误的。还有,我们不能只是看程序,要学会把自己学的自己拿去实践,自己去编一些程序,培养自己的动手能力,掌握一些编程技巧,熟练运用自己学到的理论知识,这样在以后才能开发出属于自己的东西。如今,随着科学技术的发展,计算机已成为了我们生活中必不可少的设备了,而掌握计算机知识和运用,又成了我们每一个人的目标了。现在IT行业的飞速发展,无不应正了以前、现在、将来计算机行业都是科学发展的主导行业。而这些基本上都建立在程序上的,所以程序员对计算机行业来说,可想而知有多么的重要了,他们所付出的每一滴汗水都将推动这个行业的发展。现在我就用JAVA语言编写一个简单的程序Java聊天程序。将所学的基本知识用到其中去,这里包括了构造方法,创建图形界面,引用类等等。这不仅能锻炼我的实践能力,同时也进一步复习和巩固了我所学的理论知识。对以前没有学好的还有督促和促进作用。而且,根据需要,还可以了解一些课外的知识。增加自己的知识面。2.开发环境在开发此聊天程序时,该项目所使用的软件开发环境如下: 操作系统:Windows XP 开发工具:eclipse3.2及其VE插件 Eclipse简介 Eclipse 是一个开放源代码的、基于 Java 的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括 Java 开发工具。 Eclipse是著名的跨平台的自由集成开发环境(IDE)。最初主要用来Java语 言开发,但是目前亦有人通过插件使其作为其他计算机语言比如C+和Python的开发工具。Eclipse的本身只是一个框架平台,但是众多插件的支持 使得Eclipse拥有其他功能相对固定的IDE软件很难具有的灵活性。许多软件开发商以Eclipse为框架开发自己的IDE。 Eclipse 最初由OTI和IBM两家公司的IDE产品开发组创建,起始于1999年4月。IBM提供了最初的Eclipse代码基础,包括Platform、JDT 和PDE。目前由IBM牵头,围绕着Eclipse项目已经发展成为了一个庞大的Eclipse联盟,有150多家软件公司参与到Eclipse项目中, 其中包括Borland、Rational Software、Red Hat及Sybase等。Eclipse是一个开发源码项目,它其实是 Visual Age for Java的替代品,其界面跟先前的Visual Age for Java差不多,但由于其开放源码,任何人都可以免费得到,并可以在此基础上开发各自的插件,因此越来越受人们关注。近期还有包括Oracle在内的许多 大公司也纷纷加入了该项目,并宣称Eclipse将来能成为可进行任何语言开发的IDE集大成者,使用者只需下载各种语言的插件即可。3.需求分析3.1程序简介随着网络技术的发展,人们越来越多的依赖于网络,为了方便人们的生活,网络聊天自然成为了热点,各种工具到处都是。此程序便是模仿其他聊天工具设计的,当然只是实现了比较少的功能,可以进行基本的聊天。3.2 程序功能该程序功能:该程序分为2个部分,一个是客户端程序,一个是服务端程序,需要先开启服务器,再开启客户端才能使用,客户端程序提供了相互通信、清空聊天记录的等功能,服务端则用于接受客户端的请求,记录客户端的信息等。 4.系统设计4.1概要设计此聊天程序共有2个部分,客户端和服务器。客户端中包含了3个Java文件,分别为主类Chat.java,登陆窗口类LoginFrame.java,聊天窗口类ChatFrame.java;服务器端只有一个主类Server.java。程序流程图: 服务器程序结构 客户端程序结构4.2详细设计 (1)服务器程序实现 本程序采用的是Socket通信来设计的,建立一个主类Server.java,其中主类中还包括服务器线程类CreateServerThread.java然后在其构造方法加载程序所需的组件,构造方法如下:public class Server extends ServerSocket static final int SERVER_PORT = 10000; /定义端口 Vector vector1 =new Vector(); Vector vector2 =new Vector(); public Server() throws IOException super(SERVER_PORT); try while (true) System.out.println(等待客户连接.); Socket socket = accept(); new CreateServerThread(socket, vector1, vector2); catch (IOException e) System.out.println(客户连接错误); finally close(); public static void main(String args) throws IOException new Server(); 其运行截图如下图所示:(2)、客户端主程序本程序使用了默认的卡片布局方式,对窗口的大小进行设置,让聊天窗口能够居中显示,以及调用注册类和登录主窗口类。实现窗口布局功能和类的调用功能的主要代码如下: public class Chat boolean packFrame = false; Chat() chatFrame frame = new chatFrame(); Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); Dimension frameSize = frame.getSize(); if (frameSize.height screenSize.height) frameSize.height = screenSize.height; if (frameSize.width screenSize.width) frameSize.width = screenSize.width; frame.setLocation(screenSize.width - frameSize.width) / 2, (screenSize.height - frameSize.height) / 2); public static void main(String args) SwingUtilities.invokeLater(new Runnable() public void run() new Chat(); ); (3)、登录界面的设计 程序提供了注册窗口,用户可以对用户名和性别进行填写,同时,可以接受几个用户的注册,但用户名不能相同。 实现注册功能的主要代码如下: public class LoginFrame extends JFrame implements ActionListener JPanel contentPane; JLabel jLabel1 = new JLabel(); JTextField jTextField1 = new JTextField(); ButtonGroup buttonGroup1 = new ButtonGroup(); JRadioButton jRadioButton1 = new JRadioButton(男); JRadioButton jRadioButton2 = new JRadioButton(女); JLabel jLabel2 = new JLabel(性别:); JButton jButton1 = new JButton(); JButton jButton2 = new JButton(); String sex = 男; String name=null; boolean bool=false; Socket socket; DataInputStream in; DataOutputStream out; public LoginFrame() setSize(new Dimension(400, 210); setTitle(登录界面); setVisible(true);contentPane = (JPanel) getContentPane(); contentPane.setLayout(null); this.setResizable(false); jLabel1.setFont(new Font(Dialog, 15, 15); jLabel1.setText(请输入您的昵称:); jLabel1.setBounds(53, 20, 113, 44); jTextField1.setBounds(182, 25, 154, 33); /输入客户昵称 jRadioButton1.setFont(new Font(Dialog, Font.PLAIN, 13); jRadioButton1.setSelected(true); /输入客户性别 jRadioButton1.setBounds(186, 64,91,25); jRadioButton1.addActionListener(this); jRadioButton2.setFont(new Font(Dialog, Font.PLAIN, 13); jRadioButton2.setBounds(187,90,91,25); jRadioButton2.addActionListener(this); jLabel2.setFont(new Font(Dialog, Font.PLAIN, 15); jLabel2.setBounds(136, 80, 34,16); jButton1.setBounds(182,138,71,25); /确定与取消按钮 jButton1.setText(确定); jButton1.addActionListener(this); jButton2.setBounds(264,138,71,25); jButton2.setText(取消); jButton2.addActionListener(this); contentPane.add(jLabel1); contentPane.add(jTextField1); contentPane.add(jRadioButton1); contentPane.add(jRadioButton2); contentPane.add(jLabel2); contentPane.add(jButton2); contentPane.add(jButton1); buttonGroup1.add(jRadioButton1); buttonGroup1.add(jRadioButton2); Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); Dimension frameSize = getSize(); if (frameSize.height screenSize.height) frameSize.height = screenSize.height; if (frameSize.width screenSize.width) frameSize.width = screenSize.width; setLocation(screenSize.width - frameSize.width) / 2, (screenSize.height - frameSize.height) / 2); setVisible(true); 其运行截图如下图所示: (5)、 聊天窗口程序设计 程序提供了发送文字和清空聊天记录的的简单功能。以下是实现程序的主要方法: public chatFrame() setTitle(JY聊天室); setSize(602, 515); this.setResizable(false); this.setVisible(false);try setDefaultCloseOperation(EXIT_ON_CLOSE); addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) try out.writeUTF(下线了:++/+frame.sex); out.close() ; in.close() ; socket.close(); catch(Exception ee) finally frame.dispose() ; dispose(); ); jbInit(); catch (Exception exception) exception.printStackTrace(); void jbInit() throws Exception jScrollPane1.setBounds(2, 2, 445, 320); jScrollPane2.setBounds(1, 333, 448, 95); jScrollPane3.setBounds(458, 6, 139, 424); jBtnSend.setBounds(93, 441, 78, 31); jBtnClear.setBounds(185, 441, 76, 31); frame.setVisible(true); jTextArea1.setEditable(false); contentPane = (JPanel) getContentPane(); contentPane.setLayout(null); contentPane.add(jScrollPane2); contentPane.add(jScrollPane1, null); contentPane.add(jScrollPane3); contentPane.add(jBtnSend); contentPane.add(jBtnClear); contentPane.add(jBtnBiaoQing); jScrollPane1.getViewport().add(jTextArea1); jScrollPane2.getViewport().add(jTextArea2); jScrollPane3.getViewport().add(jList1); jBtnClear.addActionListener(this); jBtnSend.addActionListener(this);try InetAddress address=InetAddress.getLocalHost(); socket = new Socket(address.getHostAddress(), port); / socket = new Socket(, port); in = new DataInputStream(socket.getInputStream(); out = new DataOutputStream(socket.getOutputStream(); catch (Exception e) setVisible(true); jTextArea2.setText(无法与服务器联接,请退出.) ; if (thread = null) thread = new Thread(this); thread.start(); frame.setClection(socket, in, out); public void actionPerformed(ActionEvent e) if(e.getSource() = jBtnSend) sendStr(); if(e.getSource() = jBtnClear) jTextArea1.setText(); 其运行截图如下图所示:5.测试 程序在编码过程中,出现了许多的问题,有的是因为程序的完善性不够好而造成的,有的是因为技术不够而无法解决。通过不停的调试,修改,多数已发现的问题都已完善,但依然存在少数的问题无法解决。例如,在用户注册这个功能中,当用户的用户名重复时,服务器会出现用户名重复的异常,服务器就不会响应。6.结论通过这次程序的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 鱼我所鱼也课件
- 魅力昆虫课件
- 济南市2024-2025学年七年级上学期语文月考模拟试卷
- 济南市2025-2026学年八年级上学期语文期中模拟试卷
- 高速铁路运行管理课件
- 高速收费站安全知识培训课件
- 工程造价咨询及财务审计项目服务方案
- 电脑课件保存至U盘无法打开问题
- 2025年公路水运工程施工企业安全生产管理人员考试题库
- 设备检测技术服务合同
- 一年级体育上册教案
- 农村集体经济合同签订中存在的问题对策建议
- JTS∕T 159-2021 水运工程模袋混凝土应用技术规范
- 2024年(高级)网络规划设计师考试题库大全(含真题、典型题等)
- 环境空气和废气 氯化氢的测定 离子色谱法(征求意见稿)
- 历史有关的书籍
- 2024年度新版中华人民共和国传染病防治法课件
- 精度班组安全标准化汇报
- 2024年国家电网招聘之法学类题库附参考答案【精练】
- 铅锌矿选矿过程中的水污染防治与治理
- 2024上海市奉贤区第八批储备人才及定向选调生招募91人高频考题难、易错点模拟试题(共500题)附带答案详解
评论
0/150
提交评论