网络程序设计考试大作业.pdf
《网络程序设计考试大作业.pdf》由会员分享,可在线阅读,更多相关《网络程序设计考试大作业.pdf(19页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、.网络程序设计考试大作业网络程序设计考试大作业题目:聊天室程序题目:聊天室程序.班级:班级:学号:学号:姓名:姓名:成绩:成绩:.网络程序设计考试大作业.1一所使用的背景知识、主要函数的描述.3二 程序设计思想及程序设计流程框图.3三主要代码及代码运行结果.41.启动服务器.42.登录.63.注册.104.登录和注册判定.125.进入聊天界面.136.私聊页面.17.一所使用的背景知识、主要函数的描述一所使用的背景知识、主要函数的描述背景:根据现在最流行的聊天工具 QQ,模仿一部分主要功能来完成。主要函数:publicpublic classclass Server;服务器的创建。public
2、public classclass Client;客户端的创建。publicpublic classclass Main extendsextends JFrame;登录界面的显示。publicpublic classclass Regist extendsextends JDialog;注册界面的显示。publicpublic classclass UserInformation;用户信息的保存和验证。publicpublic classclass AllTalkFrame extendsextends JFrame;登录后进入群聊界面。publicpublic classclass Poi
3、ntToPointTalkFrame extendsextends JFrame;私聊界面。二程序设计思想及程序设计流程框图二程序设计思想及程序设计流程框图设计思想:利用 socket 与 server socket 在客户端与客户端之间的通信,InputStreamInputStreamReader 输入输出流进行信息的发送与接收。程序设计流程:主页面:输入账号与密码,点击登录或者注册进入下一页面。登录:判定是否正确,正确则进去聊天界面。注册:进去注册界面,成功则返回主页面。进入聊天室:能发送信息让在线的所有人看到。私聊界面:能与一个人单独聊天,信息只能被双方看到。.主页面登录注册进入聊天室
4、点击名字进入私聊三主要代码及代码运行结果三主要代码及代码运行结果1.1.启动服务器启动服务器代码:publicpublic classclass Server ServerSocket server;staticstatic intintclientNum=0;/存放与服务器连接上的对应的Socket,作用是保存服务器与客户端之间的流,便于服务器给每个客户端进行回发消息List clientConnection=newnew ArrayList();publicpublic Server()trytry server=newnew ServerSocket(9999);System.outou
5、t.println(服务器已经启动);catchcatch(IOException e)e.printStackTrace();System.outout.println(服务器启动失败);/内部类,监听客户端是否有连接到服务器,并将此客户端的 Socket 传递给.HandleSocket 进行处理,同时将 client 存放到 List 中,即 clientConnection 中classclass SocketListener implementsimplements Runnable publicpublic voidvoid run()Socket client;trytry wh
6、ilewhile(truetrue)client=server.accept();/连接上一个就压入 List 中,即 clientConnection 中clientConnection.add(client);HandleSocket hs=newnew HandleSocket(client);/连接上就让 HandleSocket 去处理newnew Thread(hs).start();catchcatch(IOException e)System.outout.println(客户连接服务器失败);/内部类 处理一个 Socket,接收一个 Client 发送过来的消息,并且服务器
7、原封不动的返回给所有客户端,客户端对消息进行过滤classclass HandleSocket implementsimplements Runnable Socket client;HandleSocket(Socket client)thisthis.client=client;publicpublic voidvoid run()trytry clientNum+;/启用输入流InputStream is=client.getInputStream();InputStreamReader isr=newnew InputStreamReader(is);BufferedReader br
8、=newnew BufferedReader(isr);System.outout.println(第+clientNum+个客户端连接进入服务器);booleanboolean flag=truetrue;String s;dodo/对用户发来的消息进行群发给客户端s=br.readLine();System.outout.println(接受到一个客户端消息:+s);forfor(intint i=0;i clientConnection.size();i+)Socket client=clientConnection.get(i);.界面:OutputStream os=client.g
9、etOutputStream();PrintStream ps=newnew PrintStream(os);ps.println(s);whilewhile(flag);client.close();catchcatch(IOException e)System.outout.println(有一个客户断开与服务器的连接);2.2.登录登录代码:package com.qq.main;.import java.awt.Color;import java.awt.Dimension;import java.awt.Toolkit;import java.awt.event.ActionEven
10、t;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 com.qq.regist.UserInformation;/*主界面*/public class Ma
11、in 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
12、();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);/窗口大
13、小不能改变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);inputPasswor
14、d.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();StringuserPas
15、sword=newString(inputPassword.getPassword();if(userName.equals()JOptionPane.showMessageDialog(null,用户名不能为空);else if(.equals(userPassword)JOptionPane.showMessageDialog(null,密码不能为空);else if(user.isExist(userName)&user.userInfomation.getProperty(userName).equals(userPassword)new AllTalkFrame(userName).
16、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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 网络程序设计 考试 作业
限制150内