北邮java期末大作业--聊天室开发文档

合集下载

JavaWeb期末大作业

JavaWeb期末大作业

西安欧亚学院2015—2016学年第二学期考试成绩评定表专业:软件工程课程:Web开发技术(Java)年级:14级《Web开发技术(Java)》大作业姓名:题目:Web开发技术大作业专业:软件工程班级:日期:目录1.JSP开发概述 (1)1.1.JSP M ODEL1 (1)1.2.JSP M ODEL2 (1)1.3.MVC设计模式 (2)2.JSP MODEL1案例 (4)2.1功能描述 (4)2.2C ACULATOR类分析 (4)2.3JSP页面代码分析 (4)2.4功能实现 (4)2.5测试用例设计 (6)3.JSP MODEL2案例 (7)3.1功能描述 (7)3.2MVC架构分析 (7)3.3M ODEL层类分析 (8)3.4控制类分析 (8)3.5V IEW层界面分析 (8)3.6功能实现 (8)3.7测试用例设计 (10)1. JSP 开发概述1.1. JSP Model1JSP Model 1采用了JSP+JavaBean 的技术,将页面显示和业务逻辑分开。

其中,JSP 实现流程控制和页面显示,JavaBean 对象封装数据和业务逻辑。

接下来通过一张图来描述JSP Model 1的工作原理,如图1-1所示。

图1-1 JSP Model 1模型的工作原理图从图1-1中可以看出,JSP Model 1模型将封装数据以及处理数据的业务逻辑的任务交给了JavaBean 组件,JSP 只负责接受用户请求和调用JavaBean 的组件来响应用户的请求,这种设计实现了数据,业务逻辑和页面显示的分离,在一定程度上实现了程序开发的模块化,降低了程序修改和维护的难度。

1.2. JSP Model2JSP Model 2架构模型采用JSP+Servlet+JavaBean 的技术,此技术将原本JSP 页面中的流程控制代码提取出来,封装到Servlet 中,从而实现了整个程序页面显示、流程控制和业务逻辑的分离。

Java聊天室程序设计报告

Java聊天室程序设计报告

《Java之聊天室制作》总结报告姓名 __赵其国___________________学号 __2_____________班级 __嵌入式一班__ _____________二〇一二年十二月二十日一,设计目的为了更好的巩固输入输出流,窗体设计,多线程运用,网络通信设计方面的知识。

把所学的课程及相关知识加以融会贯通。

二,设计内容设计的聊天室能实现用户登录,显示登录用户列表,以及发送聊天信息和显示聊天信息的功能。

并可以选择接收信息的用户进行单发或群发的功能,运行程序,登录服务器后,可以从列表中选择单个或多个用户进行聊天,它是图形界面,线程,流和文件系统等技术的综合使用。

三,概要设计实现的功能:1,启动服务器端,接收客户端发来的信息,并在服务器端窗体显示客户端聊天信息,再吧信息返给在线用户,窗体背景色为粉色2,启动客户端窗体,窗体背景色为粉色3,用户名编辑框输入用户名,设置字体显红色,单击登录按钮,在显示在线用户列表内显示用户名,同时用户名编辑框不能编辑4,发送编辑框输入发送内容,单击发送按钮,启动输出流,把信息发送出去,同时把发出的信息追加到聊天内容文本域内,显示用户名,时间和发送内容。

5,单击退出按钮,运用File类和JfileChooser类实现聊天信息的保存6,聊天信息文本域,在线用户显示域和发送信息的文本域加了滚动条,其中聊天信息文本域,发送信息的文本域的文字能自动换行。

7,别的客户端发来信息是通过输入流读取信息,并截取发来信息的用户名及信息,用户名加到在线用户列表上显示在线,信息追加到聊天内容文本域内,显示用户名,时间和发送内容。

功能不足之处:1,保存聊天信息保存为text格式的有黑块。

保存为Doc格式的要转码不能直接打开2,用户在线显示,只能在用户发送信息时别的用户才能得到在线的用户名,然后再加到在线用户列表中,显示用户在线。

3,聊天室只适合群聊,没有实现技能群聊又能和单个人聊天的功能4,用户输出“退出”后在线用户列表中就会把用户删除,不过没有实现没找到错误出在哪里。

Java期末考试题及答案(K12教育文档)

Java期末考试题及答案(K12教育文档)

Java期末考试题及答案(word版可编辑修改)编辑整理:尊敬的读者朋友们:这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望(Java期末考试题及答案(word 版可编辑修改))的内容能够给您的工作和学习带来便利。

同时也真诚的希望收到您的建议和反馈,这将是我们进步的源泉,前进的动力。

本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快业绩进步,以下为Java期末考试题及答案(word版可编辑修改)的全部内容。

Java期末考试题一、简答题(共8个题,每题5分,共40分)java语言有哪些特点?(1)简单的Java最初是为对家用电器进行集成控制而设计的一种语言,因此它必须简单明了.Java的风格类似于C++,因而C++程序员初次接触Java语言,就会感到很熟悉。

从某种意义上讲,Java语言是C及C++语言的一个变种.Java摒弃了C++中容易引发程序错误的一些特性,如指针、结构、枚举以及内存管理等。

Java提供了丰富的类库,可以帮助我们很方便的开发Java程序。

(2)面向对象的面向对象可以说是Java最重要的特性,所以它支持继承、重载、多态等面向对象的特性。

Java 语言的设计是完全面向对象的,它不支持类似C语言那样的面向过程的程序设计技术。

(3)健壮的Java致力于检查程序在编译和运行时的错误。

Java也是一种强类型的语言,其类型检查比C++还要严格。

类型检查帮助我们检查出许多开发早期出现的错误。

Java自己负责内存管理,提供了垃圾内存回收机制,有效的避免了C++中最头疼的内存泄漏问题。

(4)安全的Java的安全性可从两个方面得到保证。

一方面,在Java语言里,删除了指针和释放内存等C++功能,避免了非法内存操作.另一方面,通过Java的安全体系架构来确保Java代码的安全性。

从一开始,Java就被设计成能够防范各种袭击,包括:禁止运行时堆栈溢出.例如,蠕虫等病毒常用的袭击手段;禁止在自己的处理空间之外破坏内存;未经授权禁止读写文件;许多安全特性相继不断的被加入Java中。

JavaWeb期末大作业

JavaWeb期末大作业

JavaWeb期末大作业西安欧亚学院2021―2021学年第二学期考试成绩评定表专业:软件工程课程:网络开发技术(Java)等级:14级软件项目项目120%项目230%内容完整性10%实训报告排版规范性10%内容正确性10%功能扩充20%总分100%网络姓氏题专班日Java作业名:项目:网络开发技术主要行业:软件工程水平:第一阶段:《开发技术(目录1.JSP开发概述11.1.1.2.1.3.2。

jspmodel1..................................................................... .........................................................1jspmodel2........... .............................................................................. .....................................1mvc设计模式............................................................................ .. (2)Jspmodel1案例42.12.22.32.42.5功能描述............................................................................ .....................................................4caculator类分析............................................................................ ........................................4jsp页面代码分析............................................................................ .......................................4功能实现.................................................................................................................................4测试用例设计............................................................................ (6)3.Jspmodel2案例73.13.23.33.43.53.63.7功能描述............................................................................ .....................................................7mvc架构分析............................................................................ ............................................7model层类分析............................................................................ ..........................................8控制类分析............................................................................ .................................................8view层界面分析............................................................................ .........................................8功能实现............................................................................ .....................................................8测试用例设计............................................................................ . (10)1.JSP开发概述1.1.jspmodel1JSP model1采用JSP+JavaBean技术将页面显示与业务逻辑分离。

JAVA大作业题目

JAVA大作业题目

JAVA大作业题目大作业要求:(1)最后提大作业报告电子版,报告内容格式见“JA V A程序设计(大作业)报告格式”要求。

(2)每个学生可任意选择下述十三个题目之一作为大作业,一人一组,独立完成。

大作业题目:1、基于java 的记事本要求:(1)设计一个登录界面,如果密码正确,则进入主界面(文件编辑器),如果不正确,则给出消息框,提示正确的密码(2)主界面JFrame的监听器接口至少用到2个(3)主界面JFrame的窗体要美观,利用Java能够把文本、图像、声音集成在一起。

2、Java版即时聊天程序功能要求:(1)用户登录及登录验证:用户能够使用固定帐号(帐号程序内置即可,无需完成额外的注册功能)登录系统,系统能对预定的帐号、密码进行验证。

(2)聊天功能:能够在两台以上的机器上登录运行程序,能使用不同帐号完成在线的即时消息发送(聊天)。

(3)好友管理:能够显示好友列表,并能够添加、修改、删除好友。

(4)在线、离线状态显示:能够显示好友的在线状态或离线状态。

(5)聊天记录管理:能够以文件或数据库形式将聊天记录进行存储,并能打开、显示、删除所存储的聊天记录。

3、【swing类GUI编程】编写交通信号灯的程序要求:(1)设计信号灯组件,该组件提供信号的红,绿,黄三种信号显示输出. (2)另外,在javax.swing.Timer的定时控制下, 轮流输出三种信号. (3)在窗口中应该有启动按钮,停止按钮. 并且有时间设置功能.设置三种状态的显示时间.(4)可供参考的类有:java.awt包中CanvasButtonTextFieldFrame(5)实现支持信号灯的点击事件, 例如,用鼠标点击红灯, 那么红灯立刻亮,然后再进入到定时三种信号的转换输出.4、JA V A简易时间日历程序通过编写一个基于JA V A的应用系统综合实例,自定义一个日历组件显示日期和时间并进行适当的功能扩充,实践Java语言编程技术。

J2EE大作业

J2EE大作业

重庆邮电大学《J2EE》大型作业题目简单的聊天室二级学院计算机学院专业名称计算机科学与技术班级3110803学生学号08600313学生姓名邱云指导教师唐晓军成绩填表时间:2011年 6 月摘要:随着科学技术的快速进步和发展,人们使用网络日益频繁,无论是购物、看电影、看电视、查找资料等等。

就拿现在网络中流行的实时视频观看,就常常看见游客们通过一个聊天工具进行在线的交流,在线聊天室越来越深入人心。

1、引言随着人们越来越多的运用网络,人们通过聊天室的方式进行沟通了解也越来越频繁,聊天室越来越深入我们的平常生活中。

聊天室适用于网上会议或闲聊的场合。

2 需求分析随着互联网技术的不断发展和完善,人们通过网络可以更方便和快捷地进行交流和学习,聊天系统可以为大家提供一个更好的交流的平台,在这个平台上,人们可以通过文字与符号进行实时的交谈、聊天,它是一个向整个因特网开放的地方,是提供给网民一个交友与娱乐的场所,在聊天室里网民可选择自已的聊天对象,与其进行对话交流,是网民之间相互沟通、交流情感的最佳方式之一。

2.1功能需求分析用户通过注册登陆聊天室后,可以在聊天室里面自由的聊天。

同时查看当前在线的用户。

2.2设计流程图:聊天室的目录结构图3详细设计3.1使用技术AJAX,JSP,ServletAjax:在基于数据的应用中,用户需求的数据如联系人列表,可以从独立于实际网页的服务端取得并且可以被动态地写入网页中,给缓慢的Web应用体验着色使之像桌面应用一样。

Jsp:JSP技术使用Java编程语言编写类XML的tags和scriptlets,来封装产生动态网页的处理逻辑。

网页还能通过tags和scriptlets访问存在于服务端的资源的应用逻辑。

Servlet:Servlet是一种服务器端的Java应用程序,具有独立于平台和协议的特性,可以生成动态的Web页面。

3.2功能模块注册功能:用户通过注册后可以登录进聊天系统,而我使用了ajax+servlet实现用户重名验证,不同用户不能使用同一个用户名登录,如果输入了同一个用户名,系统会自动提示:登录功能:用户注册后通过输入注册的用户名个密码可以登录进入聊天室:聊天功能:用户进入聊天室后就可以互相进行交流、沟通了3.3主要功能实现代码(1)ChatService.java主要实现对用户名的验证功能(2)ChatServlet.java 主要是设置中文流,把获取的信息传递给Ajax(3)LoginServlet.java 主要是验证用户名和密码是否匹配以及是否为空(4)RegServlet.java主要是验证用户是否登陆成功(5)UserInfoList.java 主要是实现对用户的增加以及移除的,并且实现用户获取用户列表的功能(6)UserInfoTrace.java 主要是实现了监听器的功能,可以实现用来显示在线的用户和在线人数4结论通过对该课程设计的制作让我对java的学习产生了巨大的喜爱,同时加深了对面向对象程序设计两大特性的理解,由于能力有限,还存在着许多不足之处。

网络程序设计考试大作业

网络程序设计考试大作业

网络程序设计考试大作业题目: 聊天室程序班级:学号:姓名:成绩:网络程序设计考试大作业 (1)一. 所使用的背景知识、主要函数的描述 (3)二. 程序设计思想及程序设计流程框图 (3)三. 主要代码及代码运行结果 (4)1.启动服务器 (4)2.登录 (6)3.注册 (10)4.登录和注册判定 (12)5.进入聊天界面 (13)6.私聊页面17一. 所使用的背景知识、主要函数的描述背景:根据现在最流行的聊天工具QQ, 模仿一部分主要功能来完成。

主要函数:public class Server;服务器的创建。

public class Client;客户端的创建。

public class UserInformation;用户信息的保存和验证。

二. 程序设计思想及程序设计流程框图设计思想:利用socket与server socket在客户端与客户端之间的通信, InputStream InputStreamReader输入输出流进行信息的发送与接收。

程序设计流程:主页面: 输入账号与密码, 点击登录或者注册进入下一页面。

登录:判定是否正确, 正确则进去聊天界面。

注册: 进去注册界面, 成功则返回主页面。

进入聊天室: 能发送信息让在线的所有人看到。

私聊界面:能与一个人单独聊天, 信息只能被双方看到。

三. 主要代码及代码运行结果1.启动服务器代码:public class Server {ServerSocket server ;static int clientNum = 0;// 存放与服务器连接上的对应的Socket, 作用是保存服务器与客户端之间的流, 便于服务器给每个客户端进行回发消息List<Socket> clientConnection = new ArrayList<Socket>();public Server() {try {server = new ServerSocket(9999);System.out .println("服务器已经启动");} catch (IOException e ) {e .printStackTrace();System.out .println("服务器启动失败");}}// 内部类, 监听客户端是否有连接到服务器, 并将此客户端的Socket传递给HandleSocket进行处理, 同时将client存放到List中, 即clientConnection中class SocketListener implements Runnable {public void run() {Socket client;try {while (true) {client = server.accept();// 连接上一个就压入List中, 即clientConnection中clientConnection.add(client);HandleSocket hs = new HandleSocket(client);// 连接上就让HandleSocket去处理new Thread(hs).start();}} catch (IOException e) {System.out.println("客户连接服务器失败");}}}// 内部类处理一个Socket,接收一个Client发送过来的消息, 并且服务器原封不动的返回给所有客户端, 客户端对消息进行过滤class HandleSocket implements Runnable {Socket client;HandleSocket(Socket client) {this.client = client;}public void run() {try {clientNum++;// 启用输入流InputStream is = client.getInputStream();InputStreamReader isr = new InputStreamReader(is);BufferedReader br = new BufferedReader(isr);System.out.println("第" + clientNum + "个客户端连接进入服务器");boolean flag = true;String s;do {// 对用户发来的消息进行群发给客户端s = br.readLine();System.out.println("接受到一个客户端消息: " + s);for (int i = 0; i < clientConnection.size(); i++) {Socket client = clientConnection.get(i);OutputStream os = client.getOutputStream();PrintStream ps = new PrintStream(os);ps.println(s);}} while (flag);client.close();} catch (IOException e) {System.out.println("有一个客户断开与服务器的连接");}}}界面:2.登录代码:package com.qq.main;import java.awt.Color;import java.awt.Dimension;import java.awt.Toolkit;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JOptionPane;import javax.swing.JPasswordField;import javax.swing.JTextField;import com.qq.regist.Regist;import erInformation;/*** 主界面*/public class Main extends JFrame {//组件的内容private JLabel userId;private JLabel userPassword;private JTextField inputId;private JPasswordField inputPassword;private JButton btLogin;private JButton btRegist;Main() {userId = new JLabel("帐号");userPassword = new JLabel("密码");inputId = new JTextField(6);inputPassword = new JPasswordField();btLogin = new JButton("登陆");btRegist = new JButton("注册");// 设置窗体属性Toolkit tk = Toolkit.getDefaultToolkit();Dimension screenSize = tk.getScreenSize();//得到当前屏幕的长和宽int x = (int) screenSize.getWidth();int y = (int) screenSize.getHeight();this.setBounds((x - 240) / 2, (y - 600) / 2, 240, 600);//窗口显示的大小 , 位置this.setResizable(false);//窗口大小不能改变this.setLayout(null);//默认的格式this.setBackground(Color.BLACK);// 窗口的颜色this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//退出程序// 设置JLabel属性userId.setBounds(30, 160, 40, 20);userPassword.setBounds(30, 200, 40, 20);// 设置文本域属性inputId.setBounds(90, 160, 100, 20);inputPassword.setBounds(90, 200, 100, 20);inputPassword.setEchoChar('*');//用*显示代替你输入的密码// 设置JButton属性btLogin.setBounds(50, 240, 60, 20);btRegist.setBounds(120, 240, 60, 20);// 注册“登陆”按钮监听器btLogin.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {UserInformation user = new UserInformation();String userName = inputId.getText();String userPassword = new String(inputPassword.getPassword());if (userName.equals("")) {JOptionPane.showMessageDialog(null, "用户名不能为空");} else if ("".equals(userPassword)) {JOptionPane.showMessageDialog(null, "密码不能为空");} else if (user.isExist(userName)&& erInfomation.getProperty(userName).equals(userPassword)) {new AllTalkFrame(userName).setVisible(true);// 判断成功后new一个群聊窗口Main.this.dispose();} else {JOptionPane.showMessageDialog(null, "此用户名不存在或者密码不正确");}}});// 注册“注册”按钮监听器btRegist.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {new Regist();//注册页面}});this.add(userId);this.add(userPassword);this.add(inputId);this.add(inputPassword);this.add(btLogin);this.add(btRegist);this.setVisible(true);}public static void main(String[] args) {new Main();}}界面:3.注册代码:// 注册“提交”按钮的监听器btSubmit.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {String userName = inputId.getText();String userPassword = newString(inputPassword.getPassword());String userPasswordConfirm= new String(inputPasswordConfirm.getPassword());System.out.println("您点击了提交按钮");if (userName.equals("")) {JOptionPane.showMessageDialog(null, "用户名不能为空");} else if ("".equals(userPassword)|| "".equals(userPasswordConfirm)) {JOptionPane.showMessageDialog(null, "密码和密码重复都不能为空");} else if (!userPassword.equals(userPasswordConfirm)) {JOptionPane.showMessageDialog(null, "密码和密码重复不一致");} else {UserInformation user = new UserInformation();if (user.isExist(userName)) {JOptionPane.showMessageDialog(null, "此用户名已存在");} else {JOptionPane.showMessageDialog(null, "注册成功");user.insert(userName,userPassword);//UserInformation类Regist.this.dispose();}}}});// 注册“取消”按钮的监听器btCancel.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {System.out.println("您点击了取消按钮");Regist.this.dispose();}});界面:4.登录和注册判定代码://注册一个用户public void insert(String userName, String userPassword) { try {userInfomation = new Properties();InputStream is;OutputStream os;is = new ("c:/userInfo.properties");os = new ("c:/userInfo.properties", true);userInfomation.load(is);// 将用户名和密码存储到内存中userInfomation.setProperty(userName, userPassword);// 将用户名和密码保存到文件中userInfomation.store(os, null);} catch ( e1) {System.out.println("文件userInfo.properties没有找到 ");} catch (IOException e) {System.out.println("写 userInfo.properties 出错");}}//判断此用户名是否存在public boolean isExist(String userName) {try {userInfomation = new Properties();InputStream is;is = new ("c:/userInfo.properties");userInfomation.load(is);if (userInfomation.containsKey(userName)) {return true;}} catch ( e1) {System.out.println("文件userInfo.properties没有找到 ");} catch (IOException e) {System.out.println("写 userInfo.properties 出错");}return false;}5.进入聊天界面代码:class showOldMessageThread implements Runnable {public void run() {boolean flag = true;while (flag) {try {// 接收群聊服务器端回发过来的消息String serverOutput = client.br.readLine() + "\r\n";if (!serverOutput.startsWith("私聊")&& !serverOutput.startsWith("*")&& !(serverOutput.substring(serverOutput.indexOf(": ") + 1).equals("\r\n"))) {String s1 = serverOutput.replace('说', ' ');String s = s1.replaceAll("�", "\r\n ");oldMessageTextArea.append(s);}// 添加客户端的用户在线列表if (!serverOutput.startsWith("*")&& !serverOutput.startsWith("私聊")&& (serverOutput.indexOf("说") != -1)) {String listName = serverOutput.substring(0,serverOutput.indexOf('说'));// 如果JList中有相同名字的用户, 则不添加, 否则添加if (!users.contains(listName)) {System.out.println("用户" + listName + "上线了");users.add(listName);userList.setListData(users);}}// 判断服务器回发过来的消息是不是以"私聊"开头的, 是的话就提取出这两个用户名if (serverOutput.startsWith("私聊")) {String siliaoName1 = serverOutput.substring(serverOutput.indexOf("*") + 1, serverOutput.indexOf("和"));String siliaoName2 = serverOutput.substring(serverOutput.indexOf("和") + 1, serverOutput.indexOf("\r"));String siliaoBenshen = "";String siliaoDuixiangName = "";if (siliaoName1.equals(clientName)) {siliaoBenshen = siliaoName1;siliaoDuixiangName = siliaoName2;} else {siliaoBenshen = siliaoName2;siliaoDuixiangName = siliaoName1;}// 判断这两个名字中是否有与自己同名的, 有的话就弹出个私聊窗口if (siliaoName1.equals(clientName)|| siliaoName2.equals(clientName)) {new PointToPointTalkFrame(siliaoBenshen + "和"+ siliaoDuixiangName).setVisible(true);}}} catch (IOException e1) {System.out.println("读取服务器端消息出错");}}}}// 注册JList的点击事件, 进入私聊界面userList.addMouseListener(new MouseAdapter() {public void mouseClicked(MouseEvent e) {if (e.getClickCount() == 2) {if (erList.getSelectedValue().toString().equals(clientName)) {JOptionPane.showMessageDialog(null, "不能和自己聊天");} else {String PToPMemberName = "私聊"+ "*"+ clientName+ "和"+erList.getSelectedValue().toString();client.ps.println(PToPMemberName);}}}});界面:6.私聊页面代码:// 线程: 只要服务器端有消息, 就将消息显示到oldMessageTextAreaclass showOldMessageThread implements Runnable {public void run() {boolean flag = true;while (flag) {try {// 接收服务器端回发过来的消息String serverOutput = client.br.readLine() + "\r\n";System.out.println("私聊服务器发过来的消息: " + serverOutput);// 将消息中的两个用户名提取出来String s1 = "";if (serverOutput.startsWith("私聊")) {String[] s;if (serverOutput.startsWith("私聊*")) {s = serverOutput.substring(3,serverOutput.indexOf("\r")).split("和");} else {s = serverOutput.substring(2,serverOutput.indexOf("说")).split("和");}for (int i = 0; i < s.length; i++) {s1 = s1 + s[i];}}// 将标题中的两个用户名提取出来,有两种顺序String[] title = clientName.split("和");String s2 = "";for (int i = 0; i < title.length; i++) {s2 = s2 + title[i];}String s3 = "";for (int i = title.length - 1; i >= 0; i--) {s3 = s3 + title[i];}// 判断服务器端返回消息中的两个用户名等于客户端的两个用户名(忽略顺序), 则将消息显示出来(也就是显示在私聊窗口上)if (s1.equals(s2) || s1.equals(s3)) {String ss1 = serverOutput.substring(2, serverOutput.indexOf("和"));String ss2 = serverOutput.substring(serverOutput.indexOf(": "));// 将私聊客户端返回来的一行字符串按"�"进行拆分成多行, 显示在私聊的oldMessageArea中if (ss2.indexOf("�") != -1) {ss2 = ss2.replaceAll("�", "\r\n ");}oldMessageTextArea.append(ss1 + ss2);}} catch (IOException e1) {System.out.println("读取服务器端消息出错");}}}}界面:。

java网络聊天室课程设计报告(内附代码)

java网络聊天室课程设计报告(内附代码)

课程设计网络聊天室院(系) 别信电学院班级计算102学号姓名指导教师时间2013-4-18—2013-5-10 课程设计任务书题目网络聊天室课程设计系(部) 信电学院专业计算机科学与技术班级计算102学生姓名学号4 月18 日至5 月10 日共 4 周指导教师(签字)系主任(签字)年月日成绩评定表目录课程设计概述 (3)1.1问题描述 (3)1.2功能需求分析 (3)1.3环境需求分析 (3)学生信息管理系统软件总体设计 (4)2.1整体思路 (4)2.2总体设计流程图 (5)学生信息管理软件详细设计 (6)3.1.界面设计 (6)3.2通信功能实现方法 (8)参考文献 (44)摘要私達の実践の能力を高めるため、学んだ知識を運用することができて行って更に創造して、学校は特に2週間手配して、私達にVisual C++の課程の設計の実習を行わせます.このファイルの詳しい説明はVisual C++6.0環境の下で、1つのソフトウェアの過程を設計して、このソフトウェアは各種のデータの個数を統計したのです。

このソフトウェアの機能は、ユーザーは1段の文字を入力して、ソフトウェアは文字の中の各類のデータの数を記録して、英文のデータの数、数字のデータの数、空欄のデータの数とそれのタイプのデータの数を含んで、そしてそれらを明らかに示します.以下、課程を通して説明を設計して、データはソフトウェアの説明を統計して、プログラムは説明を調整して、総括などの方面を開発して、詳しくこのプログラムの製作の過程を説明して、作用、各種の実行することができる操作.关键字:データの統計,VC++6.0, ヘッドファイル课程设计概述1.1问题描述`随着计算机网络日新月异的发展,人们的交流方式越来越多,传统的交流方式,如:信件、电报、电话等已经难以满足人们的交流要求,在互联网上即时的和好友取得联系,已经成为当今社会人们主流的联系方式。

因此,两台计算机之间进行即时通讯、发送文件等交流方式已经成为必然潮流。

Java网络聊天室课程设计说明书(含源程序)

Java网络聊天室课程设计说明书(含源程序)

操作系统课程设计报告目录一.设计要求和目的 (3)二.背景知识 (4)三.客户端设计 (5)四.客户端主要代码 (6)五.设计体会 (9)课程设计摘要随着网络信息时代的来临,Internet 应用越来越广泛人们越来越习惯于在网上获取和交流信息。

据调查显示,80%以上的人上网都会打开聊天工具来聊天,而几乎每一个年轻人都会去聊天。

使用网上聊天已经成为现代年轻人一种新的交往方式。

聊天室更适合于陌生人之间进行较为主观、感兴化的讨论。

所以有大部分的人会进入聊天室聊天它会给人一个完全自由的聊天世界。

因此我们联系所学的操作系统、数据库和MFC知识决定做一个简易的聊天系统。

一、设计要求和目的此课题是实现一个即时通信系统完成1:进程间通信、并发(同步/互斥)、文件读写2:内存管理、Dll、Windows消息机制、IO。

课题任务分工:客户端子系统:在客户端系统的功能实现上,可以分为以下几个部分:[1]进程信息的输入系统把用户进程要求发送的信息由键盘输入从文件读取。

这部分功能是客户端子系统的基本部分,这个功能是以后各个部分的基础。

系统要求做到即能够从其它子系统中共享一部分信息[2]进程信息的存储:将进程的信息存储到客户端系统中,以及将发送的信息保存在文件中,以备以后进程之间通信确认以及查询。

[3]通信数据的传递及接收:将客户所发送的信息由客户端由网络传到服务器端上,并且接受航服务器返回的接收方发送的信息,然后存储起来。

3用户客户端服务器端用户设置连接设置用户发送信息通信内容用户得到的信息处理用户退出服务器日志数据通信信息连接保存保存处理监控二.背景知识SOCKETSocket 可以看成在两个程序进行通讯连接中的一个端点,是连接应用程序和网络驱动程序的桥梁,Socket 在应用程序中创建,通过绑定与网络驱动建立关系。

此后,应用程序送给Socket 的数据,由Socket 交网络驱动程序向网络上发送出去。

计算机从网络上收到与该Socket 绑定IP 地址和端口号相关的数据后,由网络驱动程序交给Socket ,应用程序便可从该Socket 中提取接收到得数据,网络应用程序就是这样通过Socket 进行数据的发送与接收的(1) 创建Socket ;(2) 打开连接到Socket 的输入/出流;(3) 按照一定的协议对Socket 进行读/写操作;课程设计(4)关闭Socket.IO技术阻塞模式可能造成阻塞的函数有:connect()、accept()、读写函数C/S两端通过Socket机制进行连接(1) 客户端的编程流程:a创建Socket对象,向Server的监听端口请求;b通过向新Socket中读写数据与Server端通信;c关闭Socket,结束与Server端;(2)服务器端的编程流程:1打开Server Socket,创建一个服务器型套接字和一个普通套接字,服务器型套接字在指定端口为客户端请求的Socket 服务;2 等待来自客户端的Client端的请求;3接收Client端的请求,用返回的Socket建立连接;4通过向Socket中读写数据来与Client端通信;5关闭Socket,结束与当前Client端的通信;6关闭SerketSocket对象结束监听服务。

北邮《高级语言程序设计(基于Java)》期末复习题(含答案)

北邮《高级语言程序设计(基于Java)》期末复习题(含答案)

一.简答题。

12.简述Java的特点Java的特点有:简单性;面向对象;跨平台性;健壮性;安全性;可移植性;多线程性;动态性。

3.Java有哪些基本数据类型,它们的关键字和字长以及变量的默认值4.面向对象程序设计与面向过程程序设计有哪些不同?从思维方式角度看,面向过程编程注重用功能构造系统,思维方式更贴近于计算机逻辑。

而面向对象编程则注重从现实世界中的客观存在建立系统,强调直接以问题域中的事物为中心思考问题和认识问题,并根据这些事物的本质特征和系统责任,把它们抽象为系统中的对象,用对象作为系统的基本构成单位。

从程序构造角度看,在过程性语言编写的程序中,待处理的数据和处理数据的方法分散在程序的各个地方。

而面向对象语言编写的程序中,待处理的数据和处理数据的方法都放在同一实体(entity)(程序模块)中,形成“封装”。

通过封装,可以最大限度的实现代码重用,减小数据的依赖性,从而解决面向过程语言中存在的问题。

5.什么是访问控制修饰符?访问控制修饰符的种类有哪些?它们各有什么作用?修饰符是用于限定类对象使用的权限,从而实现类中成员的信息隐藏。

访问修饰符适用于类成员,而不是方法内部的局部变量。

Java常见的访问修饰符有这4种:private、default、protected和public。

public 可以被所有的类访问pravite 只能被类本身访问,其他类无法访问protected 可以被类本身、它的子类(包括同一个包中以及不同包中的子类)default 属于默认的访问状态,可以被类本身和同一个包中的类访问6.类变量和实例变量有哪些不同?在定义成员变量时,如果用static修饰符修饰,则该变量是类变量(也称“静态变量”),否则是实例变量。

类变量的本质特点是:它是类的变量,不属于类的任何一个具体对象。

它保存在类的内存区域的公共存储单元。

类的任何一个对象对类变量的存取都是对同一个内存单元进行操作。

与类变量相对,实例变量属于类的某个具体的对象。

JAVA课程设计实验报告-“聊天室”报告

JAVA课程设计实验报告-“聊天室”报告
网上查阅资料
第二章 聊天室的设计
2.1聊天室的粗略设计分析
聊天系统平台应有两个部分组成:服务端和客户端。服务端主要完成用户信息的存储、客户端命令的接受与响应以及发送系统消息、信息转发、踢人等服务端应有的功能。客户端主要完成聊天信息的发送与接受、登录、注销等功能。
此c/s系统使用的是TCP/IP协议,应用了如下通讯模式:
如果用户名和密码正确的话,则登录聊天室主界面;如果已经在线,则输出已经在线;否则输出用户名和密码错误,需要重新登录或者注册。
在线用户列表
用户登录之后,需要知道系统中,有哪些用户在线,这样可以方便用户选择与个别用户私聊和传送文件,也可以进行公聊。
用户公聊
用户输入的用户名和密码都正确后,则进入聊天室。聊天主界面主要由四大版块组成:公聊的聊天信息、在线用户列表、好友列表,系统消息和聊天的一些操作。
1.2聊天室的基本功能-------------------------------------------------------------3
1.3设计所用参考资料-------------------------------------------------------------6
第二章 聊天室的设计-------------------------------------------6
由于Client使用了流套接字,所以服务程序也要使用流套接字。这就要创建一个ServerSocket对象,接下来服务程序进入无限循环之中,无限循环从调用ServerSocket的accept()方法开始,在调用开始后accept()方法将导致调用线程阻塞直到连接建立。在建立连接后accept()返回一个最近创建的Socket对象,该Socket对象绑定了客户程序的IP地址或端口号。由于存在单个服务程序与多个客户程序通讯的可能,服务程序循环检测是否有客户连接到服务器上,如果有,则创建一个线程来服务这个客户,以此完成对客户端的监听。

4北邮JAVA期末大作业 聊天室开发文档

4北邮JAVA期末大作业  聊天室开发文档

JAVA期末大作业开发文档学院:电子工程学院专业:电子信息科学与技术班级:2013211202姓名:学号:小组成员:一.选题我们三人选择了网络通信程序这一题目,题目要求包括:能够实现双方通过服务器建立通信连接,实现一对一的聊天;能够通过服务器,采用多线程实现多人间的群聊;能够实现文字通信和传输图片;能够保存通信记录到本地。

我们在此基础上还实现了发送振动消息以及发送文件的功能。

二.需求分析1.首先我们进行了系统的功能分析,这个通信程序分为客户端和服务器两个部分:服务器端主要负责监听客户端的连接请求,把这个请求通过网络发送给服务器端进行处理,把客户端(请求方)的聊天请求、发送文件请求、发送振动消息请求等转发给目标客户端(接收方):而客户端负责发送请求并处理服务器端返回的响应消息。

整体框图构造如下1.当前在线用户服 1.ServerMain.java---启动监听器 2.已注册的用户务 3.当前监听端口器监 1.用户注册听 2.用户登录模 2.server.controller.java—处理客户端的请求 3.断开连接块 4.聊天5.振动6.文件收发网络 1.当前在线用户通 3.server.ui.java—服务器信息显示窗体 2.所有注册用户信 3.时间系 1.clientMain.java---连接服务器、启动登录窗口统 1.登录窗体用 2.注册窗体整户 2.client.ui.java—显示客户端各个窗体 3.聊天窗体体模 4.提示对话框构块 5.窗体振动器架搭建3.client.clientThread.java—--客户端后台线程接收和处理服务器返回的响应4.client.util.JFrameShaker---实现窗体振动三.概要设计通过之前的需求分析,可以看出项目的包主要包括服务器和客户端两个包,然而主要功能的实现,具体需要分为以下六个模块:1)服务器监听模块2)客户端用户登录模块3)客户端客户注册模块4)聊天模块5)发送文件模块6)发送振动消息模块四.主要功能实现及大体设计过程1.服务器监听模块功能实现服务器监听模块实现了在服务器监听窗口中显示当前在线用户列表和已注册用户列表,可以通过单击标签切换选项卡。

Java课程设计聊天室(含代码)【范本模板】

Java课程设计聊天室(含代码)【范本模板】

Java程序课程设计任务书JAVA聊天室的系统的设计与开发1.主要内容:用JA V A实现基于C/S模式的聊天室系统。

聊天室分为服务器端和客户端两部分,服务器端程序主要负责侦听客户端发来的信息,客户端需要登陆到服务器端才可以实现正常的聊天功能.2。

具体要求(包括技术要求等):系统的功能要求:A。

服务器端主要功能如下:1.在特定端口上进行侦听,等待客户端连接.2.用户可以配置服务器端的侦听端口,默认端口为8888.3。

向已经连接到服务器端的用户发送系统消息。

4。

统计在线人数。

5.当停止服务时,断开所有的用户连接.B。

客户端的主要功能如下:1。

连接到已经开启聊天服务的服务器端。

2。

用户可以配置要连接的服务器端的IP地址和端口号。

3。

用户可以配置连接后显示的用户名。

4。

当服务器端开启的话,用户可以随时登录和注销。

5。

用户可以向所有人或某一个人发送消息。

学习并掌握一下技术:Java JavaBean 等熟练使用一下开发工具:Eclipse,JCreator 等实现系统上诉的功能。

3.进度安排:12月28日~12月29日:课程设计选题,查找参考资料12月30日~ 1月1日:完成系统设计1月2日~1月5日:完成程序代码的编写1月6日:系统测试与完善1月7日:完成课程设计报告,准备答辩4.主要参考文献:[1]。

张广彬孟红蕊张永宝。

Java课程设计(案例精编)[M].清华大学出版社.2007年版摘要在网络越来越发达的今天,人们对网络的依赖越来越多,越来越离不开网络,由此而产生的聊天工具越来越多,例如,国外的ICQ、国内腾讯公司开发的OICQ。

基于Java网络编程的强大功能,本次毕业设计使用Java编写一个聊天系统。

一般来说,聊天工具大多数由客户端程序和服务器程序外加服务器端用于存放客户数据的数据库组成,本系统采用客户机/服务器架构模式通过Java提供的Soket类来连接客户机和服务器并使客户机和服务器之间相互通信,由于聊天是多点对多点的而Java提供的多线程功能用多线程可完成多点对多点的聊天,数据库管理系统用SQL Server2000完成并通过JDBC—ODBC桥访问数据库.本系统建立在JAVA平台上,系统的设计使用了面向对象技术和面向对象的设计原则.系统采用C/S结构,客户端与客户端以及客户端与服务器端之间通过Socket传送消息。

JAVA大作业

JAVA大作业

商务学院课程论文题目: JAVA期末大作业姓名:王姗学号: 2007030331205 学院:商务学院专业:信息管理与信息系统指导教师:沈桂兰2010年12 月7 日JA V A期末大作业一、系统的功能介绍本系统是一个聊天室系统分为服务端与客户端,服务端有发送和退出功能,客户端有连接、发送、退出功能,客户端可以通过连接与服务端连接上,向服务端发送数据,服务端可以通过客户端的连接,接受客户端发送的数据,也可以向客户端发送数据。

且本系统与数据库进行连接,数据库记载了聊天记录和所有登录用户端信息。

二、界面的设计截图(一)服务器(二)客户端三、核心代码说明(一)ClientWindow的代码package ws;import java.awt.*;import javax.swing.*;import java.io.*;import .*;public class ClientWindow extends Thread{static ClientFrame myWindow = new ClientFrame("聊天室:客户");public static void main(String args[]){myWindow.setBounds(50,100,400,300);myWindow.setVisible(true);Thread receiver = new ServerWindow();receiver.setDaemon(true); //后台程序receiver.start();//创建并启动接收线程}public void run() //接收信息线程{boolean done = true;while(done){//接收信息//如不为空,则在输出文本区显示//否则,done=false;try{String str=myWindow.in.readLine(); //接收服务器信息if(str!=null)myWindow.showText("服务器:"+str);}catch(IOException e){System.out.println("连接断开!");done = false;}}}}(二)ClientFrame的代码package ws;import java.awt.*;import javax.swing.*;import java.awt.event.*;import java.io.*;import .*;import javax.swing.border.*;public class ClientFrame extends JFrame //创建JFrame的子类{public Socket socket=null; //连接时获取的socket放在这里public BufferedReader in=null; //从这里读入数据public PrintWriter out=null; //从这里输出数据public boolean connectFlag=false; //当建立连接时,该标志为trueprivate Container content = getContentPane();private JTextArea text= new JTextArea(30,100); //生成输出文本组件private JTextArea keyIn= new JTextArea(30,100); //生成输入文本组件public static final int CONNECT=001; //按钮标示号public static final int SEND=002;public static final int QUIT=003;public ClientFrame(String title) //构造方法{super(title); //调用JFrame的构造方法setDefaultCloseOperation(EXIT_ON_CLOSE);Box room = Box.createVerticalBox(); //创建聊天室text.setEditable(false);text.setLineWrap(true);JScrollPane scrollText=new JScrollPane(text); //加滚动条scrollText.setAutoscrolls(true);scrollText.setPreferredSize(new Dimension(400,1000));room.add(scrollText);keyIn.setLineWrap(true);JScrollPane scrollKey=new JScrollPane(keyIn); //加滚动条scrollKey.setAutoscrolls(true);room.add(scrollKey);JPanel control = new JPanel(); //创建控制面板Dimension size =new Dimension(80,20);Border border = BorderFactory.createRaisedBevelBorder();JButton connect = new JButton("连接") ;JButton send = new JButton("发送");JButton quit = new JButton("退出");connect.setBorder(border);send.setBorder(border);quit.setBorder(border);connect.setPreferredSize(size);send.setPreferredSize(size);quit.setPreferredSize(size);connect.addActionListener(new ControlAction(CONNECT));send.addActionListener(new ControlAction(SEND));quit.addActionListener(new ControlAction(QUIT));control.add(connect);control.add(send);control.add(quit);room.add(control);content.add(room,BorderLayout.CENTER);}public void showText(String str) //在输出文本区显示文本{text.append(str+"\n");}class ControlAction implements ActionListener //按钮事件处理{int controlType=CONNECT;public ControlAction(int type){controlType = type;}public void actionPerformed(ActionEvent e){switch (controlType){case CONNECT: //按了连接键if(!connectFlag){try{socket=newSocket("192.168.1.85",8189); //与服务器建立连接connectFlag = true;in =new BufferedReader(new InputStreamReader(socket.getInputStream())); //输入数据流//创建并启动接收线程out =newPrintWriter(socket.getOutputStream(),true); //输出数据流//boolean done = true;}catch(IOException ie){System.out.println("连接断开!");connectFlag = true;}}break;case SEND://按了发送键if (connectFlag){String keyText= keyIn.getText();//在输出文本区显示输入的文本showText("客户:"+keyText);//发送键入的文本keyIn.setText("");out.println(keyText); //将输入文本发送给服务器}break;case QUIT: //按了退出键connectFlag = false;try{out.println("QUIT");out.close();in.close();System.exit(1);socket.close();}catch (IOException ioe){}}}}}(三)ServerWindow的代码package ws;import java.awt.*;import javax.swing.*;import java.io.*;import .*;public class ServerWindow extends Thread{public static ServerFrame myWindow = new ServerFrame("聊天室:服务器");public static ServerSocket serverSocket = null;public static void main(String args[]){myWindow.setBounds(500,100,400,300);myWindow.setVisible(true);myWindow.showText("等待连接....");try{ServerSocket serverSocket=new ServerSocket(8189); //建立服务器socket,port=8189Socket incoming = serverSocket.accept(); //等待客户建立连接myWindow.connectFlag = true;myWindow.in =new BufferedReader(newInputStreamReader(incoming.getInputStream())); //输入数据流myWindow.out =new PrintWriter(incoming.getOutputStream(),true); //输出数据流*/myWindow.showText("连接建立!");myWindow.out.println("连接建立!请发送信息,输入BYE 结束\n"); //向客户发登录信息Thread receiver = new ServerWindow();receiver.setDaemon(true); //后台程序receiver.start();//创建并启动接收线程}catch (IOException e){myWindow.showText(""+e);}}public void run() //接收信息线程{boolean done = true;while(done){//接收信息//如不为空,则在输出文本区显示//否则,done=false;try{String str=myWindow.in.readLine(); //接收服务器信息if(str!=null)myWindow.showText("客户:"+str);}catch(IOException ie){System.out.println("连接断开!");done = false;}}}}(四)ServerFrame的代码package ws;import java.awt.*;import javax.swing.*;import java.awt.event.*;import java.io.*;import .*;import javax.swing.border.*;public class ServerFrame extends JFrame //创建JFrame的子类{public Socket socket=null; //连接时获取的socket放在这里public BufferedReader in=null; //从这里读入数据public PrintWriter out=null; //从这里输出数据public boolean connectFlag=false; //当建立连接时,该标志为true public static ServerSocket serverSocket = null;private Container content = getContentPane();private JTextArea text= new JTextArea(30,100); //生成输出文本组件private JTextArea keyIn= new JTextArea(30,100); //生成输入文本组件public static final int CONNECT=001;public static final int SEND=002;public static final int QUIT=003;public ServerFrame(String title) //构造方法{super(title); //调用JFrame的构造方法setDefaultCloseOperation(EXIT_ON_CLOSE);Box room = Box.createVerticalBox();text.setEditable(false);text.setLineWrap(true);JScrollPane scrollText=new JScrollPane(text); //加滚动条scrollText.setAutoscrolls(true);scrollText.setPreferredSize(new Dimension(400,1000));room.add(scrollText);keyIn.setLineWrap(true);JScrollPane scrollKey=new JScrollPane(keyIn); //加滚动条scrollKey.setAutoscrolls(true);room.add(scrollKey);JPanel control = new JPanel();Dimension size =new Dimension(80,20);Border border = BorderFactory.createRaisedBevelBorder();JButton connect = new JButton("连接") ;JButton send = new JButton("发送");JButton quit = new JButton("退出");connect.setBorder(border);send.setBorder(border);quit.setBorder(border);connect.setPreferredSize(size);send.setPreferredSize(size);quit.setPreferredSize(size);// connect.addActionListener(new ControlAction(CONNECT));send.addActionListener(new ControlAction(SEND));quit.addActionListener(new ControlAction(QUIT));// control.add(connect);control.add(send);control.add(quit);room.add(control);content.add(room,BorderLayout.CENTER);}public void showText(String str){text.append(str+"\n");}class ControlAction implements ActionListener //按钮事件处理{int controlType=CONNECT;public ControlAction(int type){controlType = type;}public void actionPerformed(ActionEvent e){switch (controlType){case SEND: //按了发送按钮if (connectFlag){String keyText= keyIn.getText();//在输出文本区显示输入的文本showText("服务器:"+keyText);//发送键入的文本keyIn.setText("");out.println(keyText);//将输入文本发送给服务器}break;case QUIT: //按了退出按钮connectFlag = false;try{out.println("QUIT");out.close();in.close();System.exit(1);}catch (IOException ioe){System.out.println("Quit Error!!");}}}}}四、涉及到的知识点的说明窗体(Frame)――容器(Container) ――(设置容器布局)――面板(Panel)――(设置面板布局)――控件、1 窗体在Java 程序中,我们如果想创建并运行一个窗体,就必须让我们编写的类继承自JFrame 类,而使用JFrame 类之前必须导入java.awt.* 和java.swing.* 如:public class ClientWindow extends Thread{static ClientFrame myWindow = new ClientFrame("聊天室:客户");public static void main(String args[]){myWindow.setBounds(50,100,400,300);myWindow.setVisible(true);Thread receiver = new ServerWindow();receiver.setDaemon(true); //后台程序receiver.start();//创建并启动接收线程}public void run() //接收信息线程{boolean done = true;while(done){//接收信息//如不为空,则在输出文本区显示//否则,done=false;try{String str=myWindow.in.readLine(); //接收服务器信息if(str!=null)myWindow.showText("服务器:"+str);}catch(IOException e){System.out.println("连接断开!");done = false;}}}}2窗体中的Container如果我们要往空白的窗体中加入其它东西,我们首先需要一个Container(容器)为基础,就像在一个中空的架子上搭了一块木板,然后我们就可以在板子上放我们想放的东西。

java课程设计报告(java聊天室)

java课程设计报告(java聊天室)

java课程设计报告(java聊天室)Java聊天室课程设计一、需求分析1.1开发背景在信息化社会的今天,网络飞速发展,人们对网络的依赖越来越多,越来越离不开网络,由此而产生的聊天工具越来越多,类似MSN、QQ,网络聊天时一类的聊天系统的发展日新月异,因此产生了制作一个类似QQ的网络聊天工具的想法,且通过制作该程序还能更好的学习网络软件编程知识。

网络编程的目的就是指直接或间接地通过网络协议与其他计算机进行通讯。

网编程中有两个主要的问题,一个是如何准确的定位网络上一台或多台主机,另一个就是找到主机后如何可靠高效的进行数据传输。

在TCP/IP协议中IP层主要负责网络主机的定位,数据传输的路由,由IP 地址可以唯一地确定Internet上的一台主机。

而TCP层则提供面向应用的可靠的或非可靠的数据传输机制,这是网络编程的主要对象,一般不需要关心IP层是如何处理数据的。

目前较为流行的网络编程模型是客户机/服务器(C/S)结构。

即通信双方一方作为服务器等待客户提出请求并予以响应。

客户则在需要服务时向服务器提出申请。

服务器一般作为守护进程始终运行,监听网络端口,一旦有客户请求,就会启动一个服务进程来响应该客户,同时自己继续监听服务端口,使后来的客户也得到响应的服务。

1.2设计要求本课程设计的目标是利用套接字socket()设计一个聊天程序,该程序基于C/S模式,客户机器向服务器发聊天请求,服务器应答并能显示客户机发过来的信息。

1.3设计目的通过设计一个网络聊天程序,对套接字、数据报通讯、URL、与URLConnectiom的相关知识有详细的了解和充分的认识。

能将相关的只是运用到相关的实践中去。

1.4功能实现聊天室共分为客户端和服务端两部分,服务器程序主要负责侦听客户端发来的消息,客户端需要登录到相应的服务器才可以实现正常的聊天功能。

服务器的主要功能有1)在特定端口上进行侦听,等待客户连接2)用户可以配置服务器的真挺端口3)向已经连接服务器的客户发送系统消息4)统计在线人数5)当停止服务时,断开所有用户的连接客户端的主要功能1)连接到已经开启聊天服务的服务端2)用户可以配置要连接服务器端的ip地址和端口号3)用户可以配置连接后显示的用户名4)当服务器开启时。

java网络聊天室课程设计报告(内附代码)

java网络聊天室课程设计报告(内附代码)

课程设计网络聊天室院(系) 别信电学院班级计算102学号姓名指导教师时间2013-4-18—2013-5-10 课程设计任务书题目网络聊天室课程设计系(部) 信电学院专业计算机科学与技术班级计算102学生姓名学号4 月18 日至5 月10 日共 4 周指导教师(签字)系主任(签字)年月日成绩评定表目录课程设计概述 (3)1.1问题描述 (3)1.2功能需求分析 (3)1.3环境需求分析 (3)学生信息管理系统软件总体设计 (4)2.1整体思路 (4)2.2总体设计流程图 (5)学生信息管理软件详细设计 (6)3.1.界面设计 (6)3.2通信功能实现方法 (8)参考文献 (44)摘要私達の実践の能力を高めるため、学んだ知識を運用することができて行って更に創造して、学校は特に2週間手配して、私達にVisual C++の課程の設計の実習を行わせます.このファイルの詳しい説明はVisual C++6.0環境の下で、1つのソフトウェアの過程を設計して、このソフトウェアは各種のデータの個数を統計したのです。

このソフトウェアの機能は、ユーザーは1段の文字を入力して、ソフトウェアは文字の中の各類のデータの数を記録して、英文のデータの数、数字のデータの数、空欄のデータの数とそれのタイプのデータの数を含んで、そしてそれらを明らかに示します.以下、課程を通して説明を設計して、データはソフトウェアの説明を統計して、プログラムは説明を調整して、総括などの方面を開発して、詳しくこのプログラムの製作の過程を説明して、作用、各種の実行することができる操作.关键字:データの統計,VC++6.0, ヘッドファイル课程设计概述1.1问题描述`随着计算机网络日新月异的发展,人们的交流方式越来越多,传统的交流方式,如:信件、电报、电话等已经难以满足人们的交流要求,在互联网上即时的和好友取得联系,已经成为当今社会人们主流的联系方式。

因此,两台计算机之间进行即时通讯、发送文件等交流方式已经成为必然潮流。

完整word版北邮《Java技术》期末复习题含答案

完整word版北邮《Java技术》期末复习题含答案

<<Java技术>>综合练习题填空题Java不仅仅是一种编程环境,它实际上是一个完整的计算平台,包括完整的程序开发环境和运行环境。

2. 完整的Java体系结构包括四个组件,分别是Java 编程语言、Java类文件格式、Java应用程序编程接口和Java虚拟机。

Java运行时环境是由Java虚拟机和核心类组合形成的。

4. 在Java类文件中存储的二进制代码称为字节码,它们是JVM的指令。

当Java虚拟机是在主机操作系统上由软件实现时,它实际上是用本地〔如C/C++等〕语言编写的程序。

Java虚拟机主要包括两个模块,一个是类装载器,另一个是执行引擎。

在面向对象系统中,对象是程序的根本组成实体。

对象是程序的根本组成实体,类是创立对象的模板。

Java源程序中的类可以分为两种,分别是系统类和用户自己定义类。

编译程序的时候会自动导入到程序中的系统包是。

把根本数据类型包装成类包装成类的好处是可以提供根本数据类型的信息,还可以使用类的方法对数据进行操作。

在Java中,int类型的包装类是Integer,char类型的包装类是Character。

Integer类的parseInt()方法的功能是把一个字符串转换为一个整型数据。

1 4.Java把数据输出到控制台是使用完成的。

15.Scanner类是在包中定义的。

1 6.创立一个连接到标准输入流对象的17.Scanner对象的语句是ScannermyScanner=newScanner(System.in);。

设myS是一个Scanner类的实例,那么语句“intx=myS.nextInt();〞的作用是读取一个整数,然后把这个整数赋给变量x。

Java提供的专门用于格式化输出数据的方法是System.out.printf()。

Java提供的用于处理日期和时间信息的系统类是。

字符串常量是用双引号括起来的字符序列。

Java用于处理处理字符串的类有两个,分别是String类和StringBuffer类。

(完整word版)JAVA聊天室实验报告

(完整word版)JAVA聊天室实验报告

Java聊天室实验报告班级: ******学号: ********姓名:***目录:一、实验目的.。

.。

...。

.。

..。

..。

....。

..。

...。

...。

...。

..。

.。

.。

3二、所需技术 .。

.。

..。

.。

..。

..。

..。

.。

.。

.。

....。

.....。

.。

.。

.。

...。

3三、需求分析。

..。

.。

.。

..。

...。

.。

..。

.。

...。

..。

.。

.。

..。

3四、系统设计 .。

..。

.......。

...。

.。

....。

...。

.。

...。

....。

..。

.....。

.41、服务器结构 ..。

.。

..。

...。

.。

.。

.。

.。

...。

.....。

.。

.。

.。

42、客户端结构 ..。

.。

.....。

..。

...。

.。

..。

.。

.。

...。

.。

..。

.。

.。

4五、实现细节。

..。

...。

..。

...。

.....。

..。

..。

.。

....。

..。

..51、客户端细节。

.。

..。

.。

...。

..。

.。

..。

...。

..。

..。

.。

52、服务器细节 .。

.。

.。

....。

.。

.。

..。

.。

.。

..。

..。

..。

..。

.。

.。

..6六、系统展示。

...。

.。

.。

.。

.。

.。

.。

.。

.。

..。

..。

..。

..。

..。

.。

(7)七、实验小结。

.。

....。

..。

....。

.。

.。

...。

..。

...。

.。

.。

.。

..。

. (9)Rain153 WeChat 聊天室系统一、实验目的:1、使用Java技术完成聊天室系统,深入学习使用Java语言。

2、使用Java 的多线程机制,深入理解Java多线程技术的应用。

3、使用GUI,对JFrame的深入学习。

4、使用网络编程,掌握基于TCP协议的Socket编程,了解Socket编程的协议约定,掌握简单应用协议的开发.5、使用C/S架构,对网络编程有一定的了解。

二、所需技术本系统要求使用java技术开发。

所需知识包括java程序设计语言、swing基本GUI组件、多线程编程、socket编程、集成开发环境使用eclipse。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

JAVA期末大作业开发文档学院:电子工程学院专业:电子信息科学与技术班级:2013211202姓名:学号:小组成员:一.选题我们三人选择了网络通信程序这一题目,题目要求包括:能够实现双方通过服务器建立通信连接,实现一对一的聊天;能够通过服务器,采用多线程实现多人间的群聊;能够实现文字通信和传输图片;能够保存通信记录到本地。

我们在此基础上还实现了发送振动消息以及发送文件的功能。

二.需求分析1.首先我们进行了系统的功能分析,这个通信程序分为客户端和服务器两个部分:服务器端主要负责监听客户端的连接请求,把这个请求通过网络发送给服务器端进行处理,把客户端(请求方)的聊天请求、发送文件请求、发送振动消息请求等转发给目标客户端(接收方):而客户端负责发送请求并处理服务器端返回的响应消息。

整体框图构造如下1.当前在线用户服 1.ServerMain.java---启动监听器 2.已注册的用户务 3.当前监听端口器监 1.用户注册听 2.用户登录模 2.server.controller.java—处理客户端的请求 3.断开连接块 4.聊天5.振动6.文件收发网络 1.当前在线用户通 3.server.ui.java—服务器信息显示窗体 2.所有注册用户信 3.时间系 1.clientMain.java---连接服务器、启动登录窗口统 1.登录窗体用 2.注册窗体整户 2.client.ui.java—显示客户端各个窗体 3.聊天窗体体模 4.提示对话框构块 5.窗体振动器架搭建3.client.clientThread.java—--客户端后台线程接收和处理服务器返回的响应4.client.util.JFrameShaker---实现窗体振动三.概要设计通过之前的需求分析,可以看出项目的包主要包括服务器和客户端两个包,然而主要功能的实现,具体需要分为以下六个模块:1)服务器监听模块2)客户端用户登录模块3)客户端客户注册模块4)聊天模块5)发送文件模块6)发送振动消息模块四.主要功能实现及大体设计过程1.服务器监听模块功能实现服务器监听模块实现了在服务器监听窗口中显示当前在线用户列表和已注册用户列表,可以通过单击标签切换选项卡。

在窗体的右下角处显示时间,单击关闭按钮将会弹出提示,并实现最小化到托盘。

1).关闭提示2).注册列表3).在线列表在实际操作中,我们三人分工合作,我主要负责服务器监听模块,所以该模块具体的实现方法将在该文档最后一个版块给出。

2.客户端用户登录模块实现功能用户登录模块实现了当服务器监听程序启动以后,就可以运行客户端登录到服务器,能美观简洁的显示登录窗口,可以在登录窗口中输入账号和密码,系统进行匹配,如果正确则成功登录,将界面转换到聊天窗体,如果不成功将会出现提示窗,如密码与账号有误或多次重复登录,系统都将进行报错。

登录后服务器会将上线用户的信息发送给所有用户1).登录窗体2)系统报错3)系统报错4)用户上下线提示2.1该模块主要由clientMain类实现与服务器的连接及启动,属于package client.主要代码public class ClientMain {public static void main(String[] args) {connection(); //连接到服务器//设置外观感觉JFrame.setDefaultLookAndFeelDecorated(true);JDialog.setDefaultLookAndFeelDecorated(true);try {//UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassNa me());UIManager.setLookAndFeel(newSubstanceOfficeSilver2007LookAndFeel());UIManager.setLookAndFeel(new SubstanceBusinessLookAndFeel());} catch (Exception e) {e.printStackTrace();}new LoginFrame(); //启动登录窗体}/** 连接到服务器 */public static void connection() {String ip = DataBuffer.configProp.getProperty("ip");int port =Integer.parseInt(DataBuffer.configProp.getProperty("port"));try {DataBuffer.clientSeocket = new Socket(ip, port);DataBuffer.oos = newObjectOutputStream(DataBuffer.clientSeocket.getOutputStream());DataBuffer.ois = newObjectInputStream(DataBuffer.clientSeocket.getInputStream());} catch (Exception e) {JOptionPane.showMessageDialog(new JFrame(),"连接服务器失败,请检查!","服务器未连上",JOptionPane.ERROR_MESSAGE);//否则连接失败System.exit(0); } }}2.2该模块主要由client.ui.LoginFrame实现窗体,主要代码如下public class LoginFrame extends JFrame {private static final long serialVersionUID = -3426717670093483287L;private JTextField idTxt;private JPasswordField pwdFld;public LoginFrame(){this.init();setVisible(true); }public void init(){this.setTitle("JQ登录");this.setSize(330, 230);//设置默认窗体在屏幕中央int x = (int)Toolkit.getDefaultToolkit().getScreenSize().getWidth();int y= (int)Toolkit.getDefaultToolkit().getScreenSize().getHeight();this.setLocation((x - this.getWidth()) / 2, (y-this.getHeight())/ 2);this.setResizable(false);//把Logo放置到JFrame的北边Icon icon = new ImageIcon("images/logo.png");JLabel label = new JLabel(icon);this.add(label, BorderLayout.NORTH);//登录信息面板JPanel mainPanel = new JPanel();Border border =BorderFactory.createEtchedBorder(EtchedBorder.LOWERED);mainPanel.setBorder(BorderFactory.createTitledBorder(border, "输入登录信息", TitledBorder.CENTER,TitledBorder.TOP));this.add(mainPanel, BorderLayout.CENTER);mainPanel.setLayout(null);JLabel nameLbl = new JLabel("账号:");nameLbl.setBounds(50, 30, 40, 22);mainPanel.add(nameLbl);idTxt = new JTextField();idTxt.setBounds(95, 30, 150, 22);idTxt.requestFocusInWindow();//用户名获得焦点mainPanel.add(idTxt);JLabel pwdLbl = new JLabel("密码:");pwdLbl.setBounds(50, 60, 40, 22);mainPanel.add(pwdLbl);pwdFld = new JPasswordField();pwdFld.setBounds(95, 60, 150, 22);mainPanel.add(pwdFld);//按钮面板放置在JFrame的南边JPanel btnPanel = new JPanel();this.add(btnPanel, BorderLayout.SOUTH);btnPanel.setLayout(new BorderLayout());btnPanel.setBorder(new EmptyBorder(2, 8, 4, 8));JButton registeBtn = new JButton("注册");btnPanel.add(registeBtn, BorderLayout.WEST);JButton submitBtn = new JButton("登录");btnPanel.add(submitBtn, BorderLayout.EAST);//关闭窗口this.addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent e) {Request req = new Request();req.setAction("exit");try {ClientUtil.sendTextRequest(req);} catch (IOException ex) {ex.printStackTrace();}finally{System.exit(0); } } });3.客户端用户注册模块该模块实现的功能是新用户可以立刻注册一个账号,注册的请求将会发送到服务器,服务器作出响应。

相关文档
最新文档