版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、. . . . +学 号4武 汉 科 技 大 学 城 市 学 院课程设计报 告课程设计名称 Java课程设计 题目 基于Java两人聊天室系统 院系 信息科学与工程系 专 业 计算机科学与技术 班 级 二 班 姓 名 钊 指导教师 朝庆 2009年6月30日编号:019题目:基于Java 网络通信编程实现两人聊天室系统1 课程设计教学条件要求 eclipse/ netbeans/ uilder 2 课程设计任务本系统要现一个两人聊天室的Java 图形用户界面界面程序,主要包括如下功能:1主人可以根据输入的IP寻找要聊天的对象。2主人和客人之间可以互相发送短消息进行即时聊天。3 课程设计报告书主
2、要容1 需求分析2 总体设计 21 设计的总体思想与算法描述 22 模块结构图 23 各功能模块的功能与处理流程描述 24 界面设计3 各功能模块程序设计按照功能模块的功能与处理流程描述给出详细的程序代码,并给出重点语句的注释.4 小结4 课程设计要求1 按时到机房签到,在指定机位上机。遵守机房纪律。 2 独立完成课程设计任务。指导教师到机位上指导学生和分时段验收学生完成的程序。 3 按时提交打印的课程设计报告书。5 课程设计参考书1 许文宪 懂子建. Java程序设计教程与实训. :大学,2005.2 辛运帏 .Java程序设计.:清华大学, 20043 美Echel,B .Java编程思想
3、(第三版).:机械工业,2005目 录1需求分析32总体设计42.1 设计的总体思想42.2程序功能模块设计42.2.1主窗口对象52.2.2数据库连接对象52.2.3聊天室对象52.3界面设计62.3.1程序登录界面设计62.3.2程序注册界面设计62.3.3程序密码修改界面设计72.3.4聊天室界面设计73 程序设计73.1 程序主界面设计73.2数据库连接设计193.3聊天室设计204 小结25参考文献261需求分析聊天室系统使用JAVA+SQL完成,ECLIPSE完成代码编写,JIGLOO完成界面设计,SQL SERVER完成数据库管理。聊天室通过输入的对方IP,将JTextField
4、中的容发送到拥有此IP的主机(前提是对方也启动了聊天室程序)。网络的通信使用UDP协议,即时搜寻网络上的短消息,并可恢复对方消息。数据库的表只有一个User_Info,用户通过用户管理模块登录,注册,修改密码。系统有三个类,MainWin、ChatRoom、jdbcodbc。MainWin是程序的入口类,界面是登陆,注册,修改密码的JFrame窗口。ChatRoom是聊天室的主窗口,负责搜发消息。jdbcodbc负责数据库的连接,有一个构造函数,一个查询方法,一个更新方法,三个返回方法。三个类都放在Com包里,Com包在Chat项目里。具体需要实现以下一些基本功能:l 用户管理模块l 数据库连
5、接模块l 聊天室界面2总体设计2.1 设计的总体思想程序分为三个部分:数据库连接,聊天室管理,用户管理。其中用户管理有分为用户注册,用户登录,用户修改密码。 2.2程序功能模块设计聊天室系统聊天室管理模块数据库管理模块用户管理模块用户管理模块用户管理模块用户管理模块图2.1 程序功能模块图2.2.1主窗口对象MainWin()方法:构造函数,调用initGUI()方法以与父类JFRAME的构造函数。main()方法:程序的入口。initGUI()方法:加载窗口的各个组件以与事件处理。2.2.2数据库连接对象jdbcodbc():构造函数,加载数据库驱动,建立数据库连接。CheckInfo():
6、将查询语句得到的数据库容赋给数据集。UpdateInfo():用插入语句使数据库更新。2.2.3聊天室对象ChatRoom():构造函数,调用initGUI()方法以与父类JFRAME的构造函数。并用循环实现实时接受数据包里的消息。initGUI():加载窗口的各个组件以与事件处理。2.3界面设计2.3.1程序登录界面设计图2.2登录界面2.3.2程序注册界面设计图2.3注册界面2.3.3程序密码修改界面设计图2.4密码修改界面2.3.4聊天室界面设计图2.5聊天室界面3 程序设计3.1程序主界面设计public class MainWin extends javax.swing.JFrame
7、 public static void main(String args) MyThread th = new MyThread();th.start();public MainWin() super();initGUI();private void initGUI() try setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);this.setPreferredSize(new java.awt.Dimension(571, 395);getContentPane().setLayout(null);this.setTitle
8、("u6b22u8fceu8fdbu5165u804au5929u5ba4");getContentPane().setBackground(new java.awt.Color(236, 233, 216);this.setVisible(false);this.setResizable(false);jTabbedPane1 = new JTabbedPane();getContentPane().add(jTabbedPane1, "Center");jTabbedPane1.setBounds(0, 0, 563, 361);jTabbedPan
9、e1.setBackground(new java.awt.Color(236, 233, 216);jPanel1 = new JPanel();jTabbedPane1.addTab("登录", null, jPanel1, null);jPanel1.setPreferredSize(new java.awt.Dimension(522, 250);jPanel1.setLayout(null);utton1 = new utton();jPanel1.add(utton1);utton1.setText("u767bu5f55");utton1.
10、setBounds(384, 176, 85, 31);utton1.setFont(new java.awt.Font("宋体", 0, 20);jTextField1 = new JTextField();jPanel1.add(jTextField1);jTextField1.setBounds(208, 80, 93, 31);jTextField1.setFont(new java.awt.Font("宋体", 0, 20);jPasswordField1 = new JPasswordField();jPanel1.add(jPassword
11、Field1);jPasswordField1.setBounds(208, 177, 93, 31);jPasswordField1.setFont(new java.awt.Font("宋体", 0, 20);jLabel1 = new JLabel();jPanel1.add(jLabel1);jLabel1.setText("u7528u6237u540duff1a");jLabel1.setBounds(52, 76, 93, 31);jLabel1.setFont(new java.awt.Font("宋体", 0, 22
12、);jLabel2 = new JLabel();jPanel1.add(jLabel2);jLabel2.setText("u5bc6 u7801uff1a");jLabel2.setBounds(52, 177, 93, 31);jLabel2.setFont(new java.awt.Font("宋体", 0, 22);jPanel2 = new JPanel();jTabbedPane1.addTab("注册", null, jPanel2, null);jPanel2.setLayout(null);jLabel3 = ne
13、w JLabel();jPanel2.add(jLabel3);jLabel3.setText("u7528u6237u540duff1a");jLabel3.setBounds(117, 70, 65, 23);jLabel3.setFont(new java.awt.Font("宋体", 0, 22);jLabel3.setSize(93, 31);jLabel4 = new JLabel();jPanel2.add(jLabel4);jLabel4.setText("u5bc6 u7801uff1a");jLabel4.setB
14、ounds(117, 122, 93, 31);jLabel4.setFont(new java.awt.Font("宋体", 0, 22);jLabel5 = new JLabel();jPanel2.add(jLabel5);jLabel5.setText("u59d3 u540duff1a");jLabel5.setBounds(117, 180, 93, 31);jLabel5.setFont(new java.awt.Font("宋体", 0, 22);jLabel6 = new JLabel();jPanel2.add(j
15、Label6);jLabel6.setText("u6027 u522buff1a");jLabel6.setBounds(117, 237, 93, 31);jLabel6.setFont(new java.awt.Font("宋体", 0, 22);jTextField2 = new JTextField();jPanel2.add(jTextField2);jTextField2.setBounds(234, 70, 93, 31);jTextField2.setFont(new java.awt.Font("宋体", 0, 2
16、0);jPasswordField2 = new JPasswordField();jPanel2.add(jPasswordField2);jPasswordField2.setBounds(234, 122, 93, 31);jPasswordField2.setFont(new java.awt.Font("宋体", 0, 20);jTextField3 = new JTextField();jPanel2.add(jTextField3);jTextField3.setBounds(234, 180, 93, 31);jTextField3.setFont(new
17、java.awt.Font("宋体", 0, 20);jTextField4 = new JTextField();jPanel2.add(jTextField4);jTextField4.setBounds(234, 237, 93, 31);jTextField4.setFont(new java.awt.Font("宋体", 0, 20);utton2 = new utton();jPanel2.add(utton2);utton2.setText("u6ce8u518c");utton2.setBounds(373, 236,
18、 85, 31);utton2.setFont(new java.awt.Font("宋体", 0, 20);jPanel3 = new JPanel();jTabbedPane1.addTab("密码修改", null, jPanel3, null);jPanel3.setLayout(null);jLabel7 = new JLabel();jPanel3.add(jLabel7);jLabel7.setText("u65e7u5bc6u7801uff1a");jLabel7.setBounds(98, 94, 36, 15);j
19、Label7.setFont(new java.awt.Font("宋体", 0, 22);jLabel7.setSize(93, 31);jLabel8 = new JLabel();jPanel3.add(jLabel8);jLabel8.setText("u65b0u5bc6u7801uff1a");jLabel8.setBounds(98, 148, 36, 15);jLabel8.setFont(new java.awt.Font("宋体", 0, 22);jLabel8.setSize(93, 31);jLabel9 =
20、new JLabel();jPanel3.add(jLabel9);jLabel9.setText("u786eu8ba4u5bc6u7801uff1a");jLabel9.setBounds(98, 202, 114, 31);jLabel9.setFont(new java.awt.Font("宋体", 0, 22);jPasswordField3 = new JPasswordField();jPanel3.add(jPasswordField3);jPasswordField3.setBounds(232, 94, 93, 31);jPasswo
21、rdField4 = new JPasswordField();jPanel3.add(jPasswordField4);jPasswordField4.setBounds(232, 148, 93, 31);jPasswordField5 = new JPasswordField();jPanel3.add(jPasswordField5);jPasswordField5.setBounds(232, 202, 93, 31);utton3 = new utton();jPanel3.add(utton3);utton3.setText("u786eu8ba4");utt
22、on3.setBounds(373, 203, 85, 31);utton3.setFont(new java.awt.Font("宋体", 0, 20);jTextField5 = new JTextField();jPanel3.add(jTextField5);jTextField5.setBounds(232, 42, 10, 22);jTextField5.setFont(new java.awt.Font("宋体", 0, 20);jTextField5.setSize(93, 31);jLabel10 = new JLabel();jPan
23、el3.add(jLabel10);jLabel10.setText("u7528u6237u540duff1a");jLabel10.setBounds(98, 42, 36, 15);jLabel10.setFont(new java.awt.Font("宋体", 0, 22);jLabel10.setSize(93, 31);pack();this.setSize(571, 395); catch (Exception e) e.printStackTrace();utton1.addMouseListener(new MouseAdapter()
24、 public void mouseClicked(MouseEvent e) int visible = 0;try jdbcodbc db = new jdbcodbc();db.CheckInfo("select * from User_Info");while (db.GetRS().next() if (db.GetRS().getString("ID").trim().equals(jTextField1.getText() if (db.GetRS().getString("PassWord").trim().equal
25、s(new String(jPasswordField1.getPassword() JFrame.setDefaultLookAndFeelDecorated(true);ChatRoom chatroom = new ChatRoom();chatroom.setLocationRelativeTo(null);chatroom.setVisible(true);visible = 1;/ 窗体可见,说明用户信息正确if (visible = 0) JOptionPane.showMessageDialog(null, "用户信息错误", "警告",
26、JOptionPane.ERROR_MESSAGE);jTextField1.setText("");jPasswordField1.setText("");jTextField1.requestFocus(); catch (SQLException sqe) );utton2.addMouseListener(new MouseAdapter() public void mouseClicked(MouseEvent e) String ID = jTextField2.getText().trim();String PassWord = new S
27、tring(jPasswordField2.getPassword();String User_Name = jTextField3.getText().trim();String User_Sex = jTextField4.getText().trim();String sql = "insert into User_Info values('" + ID + "','"+ PassWord + "','" + User_Name + "','" + Us
28、er_Sex+ "')"jdbcodbc db1 = new jdbcodbc();jdbcodbc db2 = new jdbcodbc();int visible = 0;db1.CheckInfo("select * from User_Info");try if (jTextField2.getText().length() = 0) JOptionPane.showMessageDialog(null, "请输入用户名!", "警告",JOptionPane.ERROR_MESSAGE);jTex
29、tField2.requestFocus();return;if (jTextField3.getText().length() = 0) JOptionPane.showMessageDialog(null, "请输入!", "警告",JOptionPane.ERROR_MESSAGE);jTextField3.requestFocus();return;if (jTextField4.getText().length() = 0) JOptionPane.showMessageDialog(null, "请输入性别!", &quo
30、t;警告",JOptionPane.ERROR_MESSAGE);jTextField4.requestFocus();return;if (jPasswordField2.getPassword().length = 0) JOptionPane.showMessageDialog(null, "请输入密码!", "警告",JOptionPane.ERROR_MESSAGE);jPasswordField2.requestFocus();return;while (db1.GetRS().next() if (db1.GetRS().getS
31、tring("ID").trim().equals(jTextField2.getText() visible = 1;if (visible = 1) JOptionPane.showMessageDialog(null, "用户信息错误", "警告",JOptionPane.ERROR_MESSAGE);jTextField2.setText("");jTextField2.requestFocus();if (visible = 0) JOptionPane.showMessageDialog(null, &
32、quot;恭喜注册成功!", "恭喜",JOptionPane.INFORMATION_MESSAGE);db2.UpdateInfo(sql);jTextField2.setText("");jPasswordField2.setText("");jTextField3.setText("");jTextField4.setText("");jTextField2.requestFocus(); catch (SQLException sqe) );utton3.addMouseLi
33、stener(new MouseAdapter() public void mouseClicked(MouseEvent e) jdbcodbc db1 = new jdbcodbc();jdbcodbc db2 = new jdbcodbc();int visible = 0;if (jTextField5.getText().length() = 0) JOptionPane.showMessageDialog(null, "请输入用户名!", "警告",JOptionPane.ERROR_MESSAGE);jTextField5.requestF
34、ocus();return;if (jPasswordField3.getPassword().length = 0) JOptionPane.showMessageDialog(null, "请输入旧密码!", "警告",JOptionPane.ERROR_MESSAGE);jPasswordField3.requestFocus();return;if (jPasswordField4.getPassword().length = 0) JOptionPane.showMessageDialog(null, "请输入新密码!",
35、"警告",JOptionPane.ERROR_MESSAGE);jPasswordField4.requestFocus();return;if (jPasswordField5.getPassword().length = 0) JOptionPane.showMessageDialog(null, "请输入密码确认!", "警告",JOptionPane.ERROR_MESSAGE);jPasswordField5.requestFocus();return;if (!(new String(jPasswordField5.get
36、Password().equals(new String(jPasswordField4.getPassword() JOptionPane.showMessageDialog(null, "密码 不 一致!", "警告",JOptionPane.ERROR_MESSAGE);jPasswordField4.setText("");jPasswordField5.setText("");jPasswordField4.requestFocus();return;try db1.CheckInfo("sel
37、ect * from User_Info");while (db1.GetRS().next() if (db1.GetRS().getString("ID").trim().equals(jTextField5.getText() if (db1.GetRS().getString("PassWord").trim().equals(new String(jPasswordField3.getPassword() visible = 1;if (visible = 0) JOptionPane.showMessageDialog(null,
38、"用户信息错误", "警告",JOptionPane.ERROR_MESSAGE);jTextField5.setText("");jPasswordField3.setText("");jTextField5.requestFocus();if (visible = 1) String ID = jTextField5.getText();String PassWord = new String(jPasswordField4.getPassword();String sql = "update Use
39、r_Info set PassWord='"+ PassWord + "' where ID='" + ID + "'"db2.UpdateInfo(sql);JOptionPane.showMessageDialog(null, "修改成功", "恭喜",JOptionPane.INFORMATION_MESSAGE);jTextField5.setText("");jPasswordField3.setText("");jPass
40、wordField4.setText("");jPasswordField5.setText("");jTextField5.requestFocus(); catch (SQLException sqe) );class MyThread extends Thread public void run() JFrame.setDefaultLookAndFeelDecorated(true);MainWin inst = new MainWin();inst.setLocationRelativeTo(null);inst.setVisible(true
41、);3.2数据库连接设计class jdbcodbc String driverClass = "sun.jdbc.odbc.JdbcOdbcDriver"String url = "jdbc:odbc:ChatDB"Statement stmt = null;ResultSet rs = null;Connection con=null;public jdbcodbc() try Class.forName(driverClass);con = DriverManager.getConnection(url); catch (ClassNotFound
42、Exception e) System.out.println("can not find driver" + driverClass);System.exit(-1); catch (SQLException e) e.printStackTrace();public void CheckInfo(String m_rs) try stmt = con.createStatement();rs = stmt.executeQuery(m_rs); catch (SQLException sqe) sqe.printStackTrace(); public void Upd
43、ateInfo(String m_rs)try stmt = con.createStatement();stmt.executeUpdate(m_rs); catch (SQLException sqe) sqe.printStackTrace();public ResultSet GetRS()return rs;public Connection GetCon()return con;public Statement GetSt()return stmt; 3.3聊天室设计public class ChatRoom extends javax.swing.JFrame DatagramS
44、ocket ds;public ChatRoom() super();try ds = new DatagramSocket(3000); catch (Exception ex) ex.printStackTrace();new Thread(new Runnable() public void run() byte buf = new byte1024;DatagramPacket dp = new DatagramPacket(buf, 1024);while (true) try ds.receive(dp);jTextArea1.append(dp.getAddress().getH
45、ostAddress()+ " : " + new String(buf, 0, dp.getLength()+ "n");jTextArea1.selectAll(); catch (Exception e) e.printStackTrace();).start();initGUI();private void initGUI() try setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);getContentPane().setLayout(null);this.setResizab
46、le(false);this.setTitle("u6b22u8fceu8fdbu5165u804au5929u5ba4");jScrollPane1 = new JScrollPane();getContentPane().add(jScrollPane1);jTextArea1 = new JTextArea();jTextArea1.setBounds(12, 12, 408, 188);jTextArea1.setBorder(BorderFactory.createMatteBorder(1, 1, 1,1, new java.awt.Color(0, 0, 0)
47、;jScrollPane1.setBounds(12, 12, 408, 188);jScrollPane1.getViewport().add(jTextArea1, null);IP = new JTextField();getContentPane().add(IP);IP.setBounds(12, 205, 97, 28);IP.setBorder(BorderFactory.createMatteBorder(1, 1, 1, 1,new java.awt.Color(0, 0, 0);Message = new JTextField();getContentPane().add(
48、Message);Message.setBounds(122, 205, 93, 28);Message.setBorder(BorderFactory.createMatteBorder(1, 1, 1, 1,new java.awt.Color(0, 0, 0);utton1 = new utton();getContentPane().add(utton1);utton1.setText("u53d1u9001");utton1.setBounds(227, 205, 87, 28);utton2 = new utton();getContentPane().add(
49、utton2);utton2.setText("u9000u51fa");utton2.setBounds(326, 205, 93, 28);pack();this.setSize(438, 273); catch (Exception e) e.printStackTrace();this.addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) ds.close();System.exit(0););Message.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) byte buf;buf =
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 辽宁现代服务职业技术学院《人体解剖学局解》2023-2024学年第一学期期末试卷
- 兰州大学《定向运动与素质拓展》2023-2024学年第一学期期末试卷
- 江西工业贸易职业技术学院《学术写作与文献检索》2023-2024学年第一学期期末试卷
- 吉林医药学院《市政工程识图》2023-2024学年第一学期期末试卷
- 湖南水利水电职业技术学院《金融风险管理(实验)》2023-2024学年第一学期期末试卷
- 重庆艺术工程职业学院《计算机辅助产品设计》2023-2024学年第一学期期末试卷
- 重庆化工职业学院《大学生创新创业意识》2023-2024学年第一学期期末试卷
- 中央美术学院《古典园林建筑构造》2023-2024学年第一学期期末试卷
- 浙江农林大学《工程图学综合训练》2023-2024学年第一学期期末试卷
- 郑州商贸旅游职业学院《建筑工程计量与计价B》2023-2024学年第一学期期末试卷
- 福建省厦门市2023-2024学年高二上学期期末考试语文试题(解析版)
- 课文背书统计表
- 三年级语文下册教案-14 蜜蜂3-部编版
- 苏教版小学数学四年级下册全册教案
- DB51T2939-2022 彩灯(自贡)制作工艺通用规范
- 押金收据条(通用版)
- 药理治疗中枢神经系统退行性疾病药.pptx
- 强三基反三违除隐患促安全百日专项行动实施方案
- 新人教版七年级数学上册全册专项训练大全
- 标准预防--ppt课件
- 压力管道氩电联焊作业指导书
评论
0/150
提交评论