logo资料库

java聊天程序报告模板.doc

第1页 / 共26页
第2页 / 共26页
第3页 / 共26页
第4页 / 共26页
第5页 / 共26页
第6页 / 共26页
第7页 / 共26页
第8页 / 共26页
资料共26页,剩余部分请下载后查看
《Java 高级应用开发》课程 作业(三) 课题名称: 网络聊天程序的设计与实现 计算机应用技术 计算机应用 ZK0901 专 班 学 姓 成 业: 级: 号: 名: 绩: 完成时间:二○一○ 年 十二月 二十五 日
一、课题设计目的 1、进一步掌握 GUI 图形用户界面设计的方法,以及事件处理的步骤; 2、进一步掌握线程的创建与调度; 3、进一步熟悉对 Java 的 IO 技术的应用; 4、能够利用数据库访问技术完成对数据的添加、删除、修改和查询处理; 5、掌握 Socket 网络通信技术。 二、课题的描述和要求 本次课题要求运用 JAVA 语言完成一个基于网络通信的聊天程序,能够实现 QQ 的简 单功能。其主要由以下几个部分构成: 1.登录界面 2、用户注册界面 3、个人信息修改界面 1
4、增加好友分组界面 5、寻找添加好友界面 6、好友列表界面 2
7、聊天界面 三、课题设计的步骤 3.1 数据库分析与设计 任务一:建立 E-R 模型 3
根据用户需求,该聊天项目主要涉及用户、好友分组、聊天记录等实体,其实体之 间关系模型图如下: 任务二:将 E-R 图转换为关系模式,并描述表结构 任务三:完成数据库、表及表之间关系的建立 3.2 窗体设计与窗体关系的建立 任务一:确定各个窗体类的类名,以及这些窗体之间的调用关系。经过分析该聊天 程序的窗体间关系如下图所示: LoginFrame 登录窗体 RegFrame 注册窗体 ListFrame 主窗体 UpdateFrame 修改信息窗体 UpdatePassword 修改密码窗体 FoundFriend 查找添加好友窗体 addGroup 添加分组窗体 chatFrame 聊天窗体 思考:当用户登录成功后进入主窗体 ListFrame 时怎么知道是谁?进入修改信息和密码 窗体时怎么知道修改谁的信息?添加好友或者分组的时候是为谁增加? 任务二:完成各个窗体类的定义(特别注意窗体的关闭方式)。 步骤 1:根据系统需求,分析出窗体关闭时的操作。其关闭窗体后的操作如下所述: 1、关闭登录窗体:退出应用程序; 2、关闭注册窗体:返回到登录窗体,并且释放注册窗体资源; 3、关闭主窗体:退出应用程序; 4、关闭修改信息、密码窗体,以及添加好友、分组和聊天窗体:都应该是返回 到主窗体,并且将这些窗口资源释放。 步骤 2:完成各个窗体类的定义。每个窗体主要代码如下: 1、登录窗体代码 import javax.swing.*;import java.awt.*; import java.awt.event.*;import java.sql.*; public class LoginFrame extends JFrame { Box bv1,bv2,bv,bv3; JLabel b1,b2,b3,b4; JTextField userName,server,port; 4
JPasswordField pwd; JButton login,reg,set,save; JPanel p1,p2,p3,p4; LoginFrame(String s){//构造方法 super(s); this.setBounds(200,200,240,120); this.setResizable(false); bv=Box.createVerticalBox(); p2=new JPanel(); bv3=Box.createHorizontalBox(); bv1=Box.createVerticalBox(); b1=new JLabel("用户号:"); bv1.add(b1); b2=new JLabel("密 码:"); bv1.add(b2); bv3.add(bv1); bv2=Box.createVerticalBox(); userName=new JTextField(16); bv2.add(userName); pwd=new JPasswordField(16); pwd.setEchoChar('*'); bv2.add(pwd); bv3.add(bv2); p2.add(bv3); bv.add(p2); p1=new JPanel(); login=new JButton("登录"); p1.add(login); reg=new JButton("注册"); p1.add(reg); set=new JButton("设置"); p1.add(set); bv.add(p1); p3=new JPanel(); b3=new JLabel("服务器:"); p3.add(b3); server=new JTextField(12); server.setText("127.0.0.1"); p3.add(server); bv.add(p3); p4=new JPanel(); b4=new JLabel("端口:"); p4.add(b4); port=new JTextField(10); port.setText("5555"); p4.add(port); 5
save=new JButton("保存"); p4.add(save); bv.add(p4); this.add(bv); this.setVisible(true); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } } 2、注册窗体代码如下: import java.awt.*;import java.awt.event.*; import javax.swing.*;import java.sql.*; public class RegFrame extends JFrame { JLabel b1=new JLabel("用户号:"), b2=new JLabel("密码:"), b7=new JLabel("确认:"), b3=new JLabel("昵称:"), b4=new JLabel("性别:"), b5=new JLabel("城市:"), b6=new JLabel("邮箱:"); JTextField userName=new JTextField(10), nickName=new JTextField(10), sex=new JTextField(10), city=new JTextField(10), email=new JTextField(10); JPasswordField pwd=new JPasswordField(10), qrpwd=new JPasswordField(10); JButton regButton=new JButton("注册"), exitButton=new JButton("退出"); RegFrame(String s){//构造方法 super(s); this.setBounds(200,200,180,260); this.setResizable(false); this.setLayout(new FlowLayout()); this.add(b1); this.add(userName); userName.setEnabled(false);//设置不允许对用户名进行编辑 this.add(b2); this.add(pwd); pwd.setEchoChar('*');//设置密码显示的字符 this.add(b7); this.add(qrpwd); qrpwd.setEchoChar('*');//设置密码显示的字符 this.add(b3); this.add(nickName); this.add(b4); this.add(sex); this.add(b5); this.add(city); this.add(b6); this.add(email); this.add(regButton); this.validate(); this.add(exitButton); 6
this.setVisible(true); this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); } } 3、主窗体界面的代码(特别注意树创建的步骤) import java.awt.*;import java.awt.event.*; import java.sql.*;import javax.swing.*; import javax.swing.event.*;import javax.swing.tree.*; public class ListFrame extends JFrame { String userName;//用来保存当前登录的用户账号,通过构造方法传入 JMenuBar mb=new JMenuBar(); JMenu m1=new JMenu("主菜单"),m2=new JMenu("系统设置"); JMenuItem m11=new JMenuItem("寻找好友"), m12=new JMenuItem("添加分组"), m21=new JMenuItem("个人资料"), m22=new JMenuItem("基本设置"), m14=new JMenuItem("修改密码"), m15=new JMenuItem("帮助"), m16=new JMenuItem("退出"); JTree tree; DefaultTreeModel treeModel=null; DefaultMutableTreeNode root; DefaultMutableTreeNode selNode;//获取被选中的节点 JScrollPane sc; ListFrame(String s,String userName){//构造方法 super(s); this.userName=userName;//获得当前登录的用户账号 this.setBounds(400,80,200,500); this.setResizable(false); m1.add(m11); m1.add(m12); m1.addSeparator(); m2.add(m21); m2.add(m22); m1.add(m2); m1.add(m14); m1.addSeparator(); m1.add(m15); m1.add(m16); mb.add(m1); this.setJMenuBar(mb); //完成用户列表设计 root=new DefaultMutableTreeNode("好友列表"); treeModel=new DefaultTreeModel(root); //设置好友分组 DefaultMutableTreeNode node1=new DefaultMutableTreeNode("我的好友"); 7
分享到:
收藏