




已阅读5页,还剩6页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
JIANGXI AGRICULTURAL UNIVERSITY JAVA 课程设计报告 题目: 聊天室程序设计 学 院: 姓 名: 学 号: 专 业: 年 级: 指导教师: 2011 年 12 月 - 2 - 1、系统需求分析 1、课题背景 在网络越来越发达的今天,人们对网络的依赖越来越多,越来越离不开网络,由此而 产生的聊天工具越来越多,类似 QQ、MSN,网络聊天时一类的聊天系统的发展日新月异, 因此产生了制作一个有简单聊天功能的网络聊天程序;而且通过制作该程序还能更好的学 习网络软件编程知识。 本课程适用于软件工程等本科专业。参加本课程设计的学生,应当认真完成本课程设 计的全部过程。并以最终课程设计成果来证明其独立完成各种实际任务的能力。从而,反 映出理解和运用本课程知识的水平和能力。 2、功能要求 运用 java 程序编写聊天室,实现简单的聊天功能。它是图形界面,线程,流与文件系 统等技术的综合应用。其界面主要采用了 java.awt 包,java.swing 包以及 java.util 包等。程 序实现了聊天室的基本功能,其中有: 1、启动服务器。 2、进入客户端界面。 3、登录聊天室。 4、发送信息(实现按回车键发送消息) 。 5、关闭服务器。 3、运行环境 本程序基于 java 和 UltraEdit 开发环境,可以在一般的装有 windows 系统的主机上运行。 4、功能实现 1、采用套接字实现网络中的数据传输 2、尽量使用某个或某些应用层的协议实现系统的部分功能 3、系统设计规范合理,操作流程方便简单 2、系统总体设计 1、设计思路 聊天系统的设计跟普通网站设计有着许多不同的地方,普通网站设计所考虑的因素, 例如,普通网站需要对布局进入大量美化以及动画设计等等,而聊天室只要提供满足访客 双方直接实时聊天即可。因此,在设计聊天系统的过程中,必须要考虑好以下几个设计要 点: 在 Internet 上的聊天程序一般都是以服务器提供服务端连接响应,使用者通过客户端 程序登录到服务器,就可以与登录在同一服务器上的用户交谈,这是一个面向连接的通信 过程。因此,程序要在 TCP/IP 环境下,实现服务器端和客户端两部分程序。 1首先通过继承 JFrame 类构造服务器界面。 2设计客户端程序使其能够完成正常的通信功能,并且可以更改背景颜色,设置字体颜色。 - 3 - 3设计侦听程序,使其显示登录的 ip 地址端口号,以及用户昵称,通过侦听按钮可以调 用客户端程序,实现聊天功能。 2、各个模块详细的功能描述。 1、服务器端功能描述: 启动服务器端。 2、客户端功能描述: 启动客户端; 显示登录昵称: 显示系统时间: 显示聊天记录: 发送信息(实现按回车键发送消息) ; 退出聊天室。 3、系统详细设计 1、界面设计 主要由类 ChatRoom 来实现,界面实际总体如下:输入昵称的文本框,输入 IP 地址的 文本框以及输入端口的文本框(可设置背景色) ;侦听,连接的按钮(可设置字体) ;推出 按钮;接受消息的文本域(可设置前景色) ;发送消息文本框;发送按钮;插入图片。 2、详细代码设计 聊天室程序设计详细代码如下: import java.awt.*; import java.awt.event.*; import javax.swing.*; import .*; import java.io.*; import java.util.*; public class ChatRoom extends JFrame implements ActionListener, Runnable,KeyListener Image Image; private TextArea ta; private JTextField ip; private JTextField port; private JButton ss_server; private JButton ss_client; private JTextField send_text; private JTextField name; private JButton ss_send; private JButton ss_exit; - 4 - private Socket skt; public void keyReleased(KeyEvent f) public void keyPressed(KeyEvent f) if(f.getKeyCode()= KeyEvent.VK_ENTER) try PrintWriter pw = new PrintWriter(skt.getOutputStream(); String s1=name.getText(); String s = send_text.getText(); if(s=null) return; Calendar ca= new GregorianCalendar(); int hh = ca.get(Calendar.HOUR_OF_DAY); int mm = ca.get(Calendar.MINUTE); int ss = ca.get(Calendar.SECOND); String time = new String(hh + “:“ + mm + “:“ + ss + “ “); ta.append(time+s1+“说 :“+“n“+s+“n“); String s3=time+s1+“说:“+“n“+s; pw.println(s3); pw.flush(); send_text.setText(“); catch(Exception e) ta.append(“发送失败!n“); public void keyTyped(KeyEvent f) public void run() try BufferedReader br = new BufferedReader(new InputStreamReader(skt.getInputStream(); while(true) String s = br.readLine(); if(s=null) break; ta.append(s + “n“); catch(Exception e) e.printStackTrace(); - 5 - public void actionPerformed(ActionEvent e) if(e.getSource()=ss_server) doServer(); if(e.getSource()=ss_client) doClient(); if(e.getSource()=ss_send) doSend(); if(e.getSource()=ss_exit) doexit(); public void doServer() try ServerSocket server = new ServerSocket(Integer.parseInt(port.getText(); skt = server.accept(); ta.append(“连接服务器成功!n“); new Thread(this).start(); catch(Exception e) ta.append(“服务器启动失败!n“); public void doClient() try skt = new Socket(ip.getText(), Integer.parseInt(port.getText(); ta.append(“连接服务器成功!n“); new Thread(this).start(); catch(Exception e) ta.append(“连接失败!n“); public void doSend() - 6 - try PrintWriter pw = new PrintWriter(skt.getOutputStream(); String s1=name.getText(); String s = send_text.getText(); if(s=null) return; Calendar ca= new GregorianCalendar(); int hh = ca.get(Calendar.HOUR_OF_DAY); int mm = ca.get(Calendar.MINUTE); int ss = ca.get(Calendar.SECOND); String time = new String(hh + “:“ + mm + “:“ + ss + “ “); ta.append(time+s1+“说 :“+“n“+s+“n“); String s3=time+s1+“说:“+“n“+s; pw.println(s3); pw.flush(); send_text.setText(“); catch(Exception e) ta.append(“发送失败!n“); public void doexit() System.exit(0); public ChatRoom() Panel a1 = new Panel(); Panel a2 = new Panel(); Panel a3 = new Panel(); this.setTitle(“聊天室“); this.setBounds(200,200,600,500); Container cc = this.getContentPane(); JPanel p1 = new JPanel(); cc.add(p1, BorderLayout.NORTH); p1.setBackground(new Color(200,200,250); ta = new TextArea(); cc.add(ta, BorderLayout.CENTER); JPanel p2 = new JPanel(); cc.add(p2, BorderLayout.SOUTH); - 7 - p2.setBackground(new Color(250,150,200); ta.setForeground(new Color(0,0,250); JLabel p3 = new JLabel(new ImageIcon(“2010.jpg“); cc.add(p3, BorderLayout.EAST); p1.add(new JLabel(“昵称:“); name=new JTextField(“,6); p1.add(name); name.setFont(new Font(“宋体“,Font.BOLD,14); p1.add(new JLabel(“IP: “); ip = new JTextField(““, 15); p1.add(ip); p1.add(new JLabel(“Port: “); port = new JTextField(“7777“, 4); p1.add(port); ss_server = new JButton(“侦听“); ss_server.setForeground(new Color(150,100,250); ss_server.setFont(new Font(“宋体“,Font.BOLD,14); p1.add(ss_server); ss_client = new JButton(“连接“); ss_client.setForeground(new Color(150,100,250); ss_client.setFont(new Font(“宋体“,Font.BOLD,14); p1.add(ss_client); ss_exit = new JButton(“退出“); ss_exit.setForeground(new Color(150,100,250); ss_exit.setFont(new Font(“宋体“,Font.BOLD,14); p1.add(ss_exit); p2.setLayout(new BorderLayout(); p2.add(new JLabel(“发送消息:“),BorderLayout.WEST); p2.setBackground(new Color(200,200,250); send_text = new JTextField(“在?“); p2.add(send_text, BorderLayout.CENTER); ss_send = new JButton(“发送“); p2.add(ss_send, BorderLayout.EAST); ss_exit.addActionListener(this); send_text.addKeyListener(this); ss_server.addActionListener(this); ss_client.addActionListener(this); ss_send.addActionListener(this); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); public static void main(String args) - 8 - new ChatRoom().setVisible(true); 四、出现的问题以及解决办法 1、书上的关于系统时间的显示在本程序中会出错,于是通过在网上找的一种方法实现 了系
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年农业科学研究与试验发展服务合作协议书
- 电子阅读器开发及内容资源整合方案
- 个人工程劳务协议年
- 2025年悬挂式离子风机项目合作计划书
- 农业生态技术应用示范推广协议
- 2025年杀螨隆项目合作计划书
- 高级管理职务任职证明书(7篇)
- 城市智能停车设施采购协议
- 高端职位任职资历证明书(7篇)
- 城市治理与市政发展反馈试题及答案
- 2024至2030年中国动画产业投资分析及前景预测报告
- 2025年中考历史复习专项训练:世界现代史选择题100题(原卷版)
- 四年级下册语文课外阅读题三(5篇含答案)
- 山东省济南市槐荫区2024年五年级数学第二学期期末学业水平测试试题含解析
- 五年级小数乘法练习题300道及答案
- 万达商家入驻商场合同(2024版)
- 【课件】初心与使命-时代的美术担当+课件-高中美术人美版(2019)美术鉴赏
- DLT 722-2014 变压器油中溶解气体分析和判断导则
- 北师大版五年级下册英语教案
- 铝合金薄板的热处理工艺与性能的研究
- 四川省成都市郫都区2023-2024学年数学五下期末调研试题含解析
评论
0/150
提交评论