您好,欢迎访问三七文档
郑州大学ZhengzhouUniversityJAVA课程设计报告题目:JAVA小型聊天室程序设计报告学院:信息工程学院专业:计算机科学与技术年级:大三组长:赵豪学号:20127610559组员:朱建宁学号:20127610661组员:杜旭伟学号:20127611106组员:毛胜火学号:20127610631一、系统需求分析1、课题背景在网络越来越发达的今天,人们对网络的依赖越来越多,越来越离不开网络,由此而产生的聊天工具越来越多,类似QQ、微信、微博、陌陌等网络聊天类的聊天系统的发展日新月异因此产生了制作一个有简单聊天功能的网络聊天程序;而且通过制作该程序还能更好的学习网络软件编程知识。本课程适用于软件工程等本科专业。参加本课程设计的学生,应当认真完成本课程设计全部过程。并以最终课程设计成果来证明其独立完成各种实际任务的能力。从而反映出理解和运用本课程知识的水平和能力。2、功能要求运用java程序编写聊天室,实现简单的聊天功能。它是图形界面,线程,流与文件系统等技术的综合应用。其界面主要采用了java.awt包,java.swing包以及java.util包等。程序实现了聊天室的基本功能,其中有:1、启动服务器端。2、启动客户端3、进入聊天室。4、发送信息(实现按回车键发送消息)5、退出聊天室3、运行环境本程序基于java开发环境,可以在一般的装有windows系统的主机上运行。4、功能实现1、采用套接字实现网络中的数据传输2、尽量使用某个或某些应用层的协议实现系统的部分功能3、系统设计规范合理,操作流程方便简单二、系统总体设计1、设计思路聊天系统的设计跟普通网站设计有着许多不同的地方,普通网站设计所考虑的因素,例如,普通网站需要对布局进入大量美化以及动画设计等等,而聊天室只要提供满足访客双方直接实时聊天即可。因此,在设计聊天系统的过程中,必须要考虑好以下几个设计要点:在Internet上的聊天程序一般都是以服务器提供服务端连接响应,使用者通过客户端程序登录到服务器,就可以与登录在同一服务器上的用户交谈,这是一个面向连接的通信过程。因此,程序要在TCP/IP环境下,实现服务器端和客户端两部分程序。1.首先通过继承JFrame类构造服务器界面。2.设计客户端程序使其能够完成正常的通信功能,并且可以更改背景颜色,设置字体颜色和大小。3.设计侦听程序,使其显示登录的ip地址,通过侦听按钮可以调用客户端程序,实现聊天功能2、各个模块详细的功能描述。1、服务器端功能描述:启动服务器端;显示IP地址;设置聊天字体颜色大小和类型;回复信息(实现按回车键回复消息);查看聊天记录和清屏2、客户端功能描述:启动客户端;显示主机名称和IP地址;设置聊天字体颜色大小和类型发送信息(实现按回车键发送消息);查看聊天记录和清屏退出聊天室;三、系统详细设计1、界面设计主要由类TestServer和TestClient来实现,界面实际总体如下;输入主机名和IP地址以及接受消息的文本域设置字体大小的文本框,设置字体类型的文本框,设置字体颜色的文本框发送消息文本域;发送按钮;清屏按钮;消息记录按钮;2、具体设计实际代码//服务器端:importjava.net.*;importjava.io.*;importjava.awt.event.*;importjavax.swing.*;importjava.awt.*;importjava.text.*;importjava.util.Date;publicclassTestServerextendsJFrameimplementsItemListener{privatestaticfinallongserialVersionUID=1L;publicJPaneljp1;publicJPaneljp2;publicJPaneljp3;publicJButtonjb;publicJButtonjb3;publicJButtonjb4;publicJTextAreajta1;publicJTextAreajta2;publicJScrollPanejsp1;publicJScrollPanejsp2;publicDataOutputStreamdos;publicDataInputStreamdis;publicListlist1;publicListlist2;publicListlist3;publicJLabelimage1;publicJLabelimage2;publicstaticStrings=;publicTestServer(){//主构造方法及布局try{ServerSocketss=newServerSocket(8888);//服务器建立端口号8888Sockets1=ss.accept();//服务器监听是否有连接jp1=newJPanel();jp2=newJPanel();jp3=newJPanel();jp1.setBackground(Color.green);jp3.setBackground(Color.yellow);jp2.setBackground(Color.green);jb=newJButton(发送);jb3=newJButton(清屏);jb4=newJButton(消息记录);list1=newList(3,false);list2=newList(3,false);list3=newList(3,false);this.setLayout(newBorderLayout());this.add(jp1,North);this.add(jp2,South);this.add(jp3,Center);ImageIconicon1=newImageIcon(img2.jpg);ImageIconicon2=newImageIcon(img1.jpg);image1=newJLabel(icon1);image2=newJLabel(icon2);this.setTitle(服务器端);jta1=newJTextArea(12,35);/////////////////////////////jsp1=newJScrollPane(jta1);jta1.setEditable(false);Strings=对方有聊天请求,IP地址为:\n+s1.getInetAddress()+\n;jta1.append(s);jp1.add(jsp1);jp1.add(image1);GraphicsEnvironmentge=GraphicsEnvironment.getLocalGraphicsEnvironment();StringfontName[]=ge.getAvailableFontFamilyNames();intsizeName[]={5,10,13,16,19,21,24,27,30,35,40,45,50,55};StringcolorName[]={红色,黑色,蓝色,绿色,黄色,灰色,青色};for(inti=0;ifontName.length;i++){list1.add(fontName[i]);}for(inti=0;isizeName.length;i++){list2.add(Integer.toString(sizeName[i]));}for(inti=0;icolorName.length;i++){list3.add(colorName[i]);}jp3.add(list1);jp3.add(list2);jp3.add(list3);list1.addItemListener(this);list2.addItemListener(this);list3.addItemListener(this);jta2=newJTextArea(10,30);jsp2=newJScrollPane(jta2);jp2.add(jsp2);jp2.add(jb);jp2.add(image2);jp3.add(jb4);jp3.add(jb3);qingpingqp=newqingping(jta1);jb3.addActionListener(qp);//监听清屏按钮jb4.addActionListener(newxiaoxijilu());//监听消息记录按钮InputStreamis=s1.getInputStream();dis=newDataInputStream(is);//处理输入流对象OutputStreamos=s1.getOutputStream();dos=newDataOutputStream(os);//处理输出流对象newMyThreadRead(dis,jta1).start();//启动从输入流中读数据的线程MyActiont=newMyAction(dos,jta2,jta1);jb.addActionListener(t);//监听发送按钮this.pack();this.setLocation(200,200);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setVisible(true);}catch(IOExceptione){e.printStackTrace();}}publicstaticvoidmain(Stringargs[]){//主方法newTestServer();}publicvoiditemStateChanged(ItemEvente){if(e.getSource()==list1){Stringname=list1.getSelectedItem();Stringsize=list2.getSelectedItem();Fontf=newFont(name,Font.BOLD,Integer.parseInt(size));jta1.setFont(f);jta2.setFont(f);}elseif(e.getSource()==list2){Stringname=list1.getSelectedItem();Stringsize=list2.getSelectedItem();Fontf=newFont(name,Font.BOLD,Integer.parseInt(size));jta1.setFont(f);jta2.setFont(f);}elseif(e.getSource()==list3){Stringcolor=list3.getSelectedItem();if(color.equals(红色)){jta1.setForeground(Color.red);jta2.setForeground(Color.red);}elseif(color.equals(青色)){jta1.setForeground(Color.cyan);jta2.setForeground(Color.cyan);}elseif(color.equals(蓝色)){jta1.setForeground(Color.blue);jta2.setForeground(Color.blue);}elseif(color.equals(绿色)){jta1.setForeground(Color.green);jta2.setForeground(Color.green);}elseif(color.equals(黄色)){jta1.setForeground(Color.yellow);jta2.setForeground(Color.yellow);}elseif(color.equals(灰色)){jta1.setForeground(Color.gray);jta2.setForeground(Color.gray);}else{jta1.setForeground(Color.black);jt
本文标题:java聊天室程序
链接地址:https://www.777doc.com/doc-2881448 .html