已阅读5页,还剩20页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
+学 号200610137234武 汉 科 技 大 学 城 市 学 院课 程 设 计 报 告 课程设计名称 Java课程设计 题 目 基于Java两人聊天室系统 院 系 信息科学与工程系 专 业 计算机科学与技术 班 级 二 班 姓 名 陈 钊 指导教师 尹朝庆 2009年6月30日编号:019题目:基于Java 网络通信编程实现两人聊天室系统1 课程设计教学条件要求 eclipse/ netbeans/ Jbuilder 2 课程设计任务本系统要求实现一个两人聊天室的Java 图形用户界面界面程序,主要包括如下功能:1主人可以根据输入的IP寻找要聊天的对象。2主人和客人之间可以互相发送短消息进行即时聊天。3 课程设计报告书主要内容1 需求分析2 总体设计 21 设计的总体思想与算法描述 22 模块结构图 23 各功能模块的功能与处理流程描述 24 界面设计3 各功能模块程序设计按照功能模块的功能与处理流程描述给出详细的程序代码,并给出重点语句的注释.4 小结4 课程设计要求1 按时到机房签到,在指定机位上机。遵守机房纪律。 2 独立完成课程设计任务。指导教师到机位上指导学生和分时段验收学生完成的程序。 3 按时提交打印的课程设计报告书。5 课程设计参考书1 许文宪 懂子建. Java程序设计教程与实训. 北京:北京大学出版社,2005.2 辛运帏 .Java程序设计.北京:清华大学出版社, 20043 美Echel,B .Java编程思想(第三版).北京:机械工业出版社,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中的内容发送到拥有此IP的主机(前提是对方也启动了聊天室程序)。网络的通信使用UDP协议,即时搜寻网络上的短消息,并可恢复对方消息。数据库的表只有一个User_Info,用户通过用户管理模块登录,注册,修改密码。系统有三个类,MainWin、ChatRoom、jdbcodbc。MainWin是程序的入口类,界面是登陆,注册,修改密码的JFrame窗口。ChatRoom是聊天室的主窗口,负责搜发消息。jdbcodbc负责数据库的连接,有一个构造函数,一个查询方法,一个更新方法,三个返回方法。三个类都放在Com包里,Com包在Chat项目里。具体需要实现以下一些基本功能:l 用户管理模块l 数据库连接模块l 聊天室界面2总体设计 2.1 设计的总体思想程序分为三个部分:数据库连接,聊天室管理,用户管理。其中用户管理有分为用户注册,用户登录,用户修改密码。 2.2程序功能模块设计聊天室系统聊天室管理模块数据库管理模块用户管理模块用户管理模块用户管理模块用户管理模块图2.1 程序功能模块图2.2.1主窗口对象MainWin()方法:构造函数,调用initGUI()方法以及父类JFRAME的构造函数。main()方法:程序的入口。initGUI()方法:加载窗口的各个组件以及事件处理。2.2.2数据库连接对象jdbcodbc():构造函数,加载数据库驱动,建立数据库连接。CheckInfo():将查询语句得到的数据库内容赋给数据集。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 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(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);jTabbedPane1.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);jButton1 = new JButton();jPanel1.add(jButton1);jButton1.setText(u767bu5f55);jButton1.setBounds(384, 176, 85, 31);jButton1.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(jPasswordField1);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);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 = new 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.setBounds(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(jLabel6);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, 20);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 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);jButton2 = new JButton();jPanel2.add(jButton2);jButton2.setText(u6ce8u518c);jButton2.setBounds(373, 236, 85, 31);jButton2.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);jLabel7.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 = 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);jPasswordField4 = new JPasswordField();jPanel3.add(jPasswordField4);jPasswordField4.setBounds(232, 148, 93, 31);jPasswordField5 = new JPasswordField();jPanel3.add(jPasswordField5);jPasswordField5.setBounds(232, 202, 93, 31);jButton3 = new JButton();jPanel3.add(jButton3);jButton3.setText(u786eu8ba4);jButton3.setBounds(373, 203, 85, 31);jButton3.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();jPanel3.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();jButton1.addMouseListener(new MouseAdapter() 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().equals(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, 用户信息错误, 警告,JOptionPane.ERROR_MESSAGE);jTextField1.setText();jPasswordField1.setText();jTextField1.requestFocus(); catch (SQLException sqe) );jButton2.addMouseListener(new MouseAdapter() public void mouseClicked(MouseEvent e) String ID = jTextField2.getText().trim();String PassWord = new String(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 + , + User_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);jTextField2.requestFocus();return;if (jTextField3.getText().length() = 0) JOptionPane.showMessageDialog(null, 请输入姓名!, 警告,JOptionPane.ERROR_MESSAGE);jTextField3.requestFocus();return;if (jTextField4.getText().length() = 0) JOptionPane.showMessageDialog(null, 请输入性别!, 警告,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().getString(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, 恭喜注册成功!, 恭喜,JOptionPane.INFORMATION_MESSAGE);db2.UpdateInfo(sql);jTextField2.setText();jPasswordField2.setText();jTextField3.setText();jTextField4.setText();jTextField2.requestFocus(); catch (SQLException sqe) );jButton3.addMouseListener(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.requestFocus();return;if (jPasswordField3.getPassword().length = 0) JOptionPane.showMessageDialog(null, 请输入旧密码!, 警告,JOptionPane.ERROR_MESSAGE);jPasswordField3.requestFocus();return;if (jPasswordField4.getPassword().length = 0) JOptionPane.showMessageDialog(null, 请输入新密码!, 警告,JOptionPane.ERROR_MESSAGE);jPasswordField4.requestFocus();return;if (jPasswordField5.getPassword().length = 0) JOptionPane.showMessageDialog(null, 请输入密码确认!, 警告,JOptionPane.ERROR_MESSAGE);jPasswordField5.requestFocus();return;if (!(new String(jPasswordField5.getPassword().equals(new String(jPasswordField4.getPassword() JOptionPane.showMessageDialog(null, 密码 不 一致!, 警告,JOptionPane.ERROR_MESSAGE);jPasswordField4.setText();jPasswordField5.setText();jPasswordField4.requestFocus();return;try db1.CheckInfo(select * 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, 用户信息错误, 警告,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 User_Info set PassWord=+ PassWord + where ID= + ID + ;db2.UpdateInfo(sql);JOptionPane.showMessageDialog(null, 修改成功, 恭喜,JOptionPane.INFORMATION_MESSAGE);jTextField5.setText();jPasswordField3.setText();jPasswordField4.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);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 (ClassNotFoundException 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 UpdateInfo(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 DatagramSocket 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().getHostAddress()+ : + 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.setResizable(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);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(Message);Message.setBounds(122, 205, 93, 28);Message.setBorder(BorderFactory.createMatteBorder(1, 1, 1, 1,new java.awt.Color(0, 0, 0);jButton1 = new JButton();getContentPane().add(jButton1);jButton1.setText(u53d1u9001);jButton1.setBounds(227, 205, 87, 28);jButton2 = new JButton();getContentPane().add(jButton2);jButton2.setText(u9000u51fa);jButton2.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
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 45410.7-2026光学和光子学望远镜系统试验方法第7部分:极限分辨力
- 护理同理心的情感与认知基础
- 护理质量事件处理
- 湖北省宜昌市2025-2026学年高二下学期期中考试语文试卷(含答案)
- 智能体构建与应用开发(Python+LangChain)(微课版)课件 项目3、4 熟悉LangChain开发基础、实现对话上下文记忆管理
- 电子设备调试工诚信品质考核试卷含答案
- 保健拔罐师诚信品质竞赛考核试卷含答案
- 2026年新科教版高中高一历史下册第三单元辛亥革命影响卷含答案
- 混凝土机械维修工岗前岗位实操考核试卷含答案
- 热注运行工道德知识考核试卷含答案
- 2026广东东莞市城市管理和综合执法局招聘编外聘用人员6人备考题库及答案详解(真题汇编)
- 2026年7月浙江高中学业水平合格考生物试卷试题(含答案详解)
- 2026年真空镀膜机电源行业分析报告及未来发展趋势报告
- 2025年劳动保障监察大队招聘考试真题(附答案)
- 煤矿尽职调查报告
- 2026年高中历史教师招聘试题及答案
- 2025年《青铜葵花》(曹文轩)阅读测试题和答案
- (完整版)气体灭火系统安装施工方案
- (正式版)T∕CPCPA 0017-2026 托育机构婴幼儿回应性照护服务规范
- (2026版)视网膜中央动脉阻塞神经介入专家共识课件
- 2025年四川省广元市八年级地理生物会考考试真题及答案
评论
0/150
提交评论