Java课程设计(qq聊天程序).ppt

上传人:xin****828 文档编号:6286276 上传时间:2020-02-21 格式:PPT 页数:33 大小:1.51MB
返回 下载 相关 举报
Java课程设计(qq聊天程序).ppt_第1页
第1页 / 共33页
Java课程设计(qq聊天程序).ppt_第2页
第2页 / 共33页
Java课程设计(qq聊天程序).ppt_第3页
第3页 / 共33页
点击查看更多>>
资源描述
MiniQQ tian jx UsingJava设计文档可视化多方通信好友维护聊天记录开发文档 总结报告 登录窗口注册窗口好友列表聊天窗口查找 添加好友聊天记录对话框 登录失败 注册成功 注册失败确认删除 错误提示等 登录窗口 注册 查找好友 好友列表 查找结果 聊天窗口 聊天记录 PackagesServer登录验证注册服务好友维护聊天组维护在线用户维护消息转发异常处理 Client各个窗口好友维护聊天记录维护活动窗口维护异常处理 Multi ThreadSocket ServerSocketI OStreamJDBC FilesR W 创建Thread的子类 并覆盖run 方法实现Runnable接口 publicclassChatServer ArrayListclients newArrayList publicstaticvoidmain String args newChatServer begin publicvoidbegin ss newServerSocket 8888 Sockets ss accept Clientc newClient s newThread c start clients add c classClientimplementsRunnable ChatServer内部类privateSockets privateDataInputStreamdis null privateDataOutputStreamdos null publicClient Sockets this s s dis newDataInputStream s getInputStream dos newDataOutputStream s getOutputStream publicvoidsend Stringstr dos writeUTF str publicvoidrun Stringstr dis readUTF for inti 0 i clients size i Clientc clients get i c send str MySQL 小键盘回车执行命令 helpxxx 1 使用SHOW语句找出在服务器上当前存在什么数据库 mysql SHOWDATABASES 2 创建一个数据库MYSQLDATAmysql CREATEDATABASEMYSQLDATA 3 选择你所创建的数据库mysql USEMYSQLDATA 按回车键出现Databasechanged时说明操作成功 4 查看现在的数据库中存在什么表mysql SHOWTABLES 5 创建一个数据库表mysql CREATETABLEMYTABLE nameVARCHAR 20 sexCHAR 1 6 显示表的结构 mysql DESCRIBEMYTABLE 7 往表中加入记录mysql insertintoMYTABLEvalues hyq M 8 用文本方式将数据装入数据库表中 例如D mysql txt mysql LOADDATALOCALINFILE D mysql txt INTOTABLEMYTABLE 9 导入 sql文件命令 例如D mysql sql mysql usedatabase mysql sourced mysql sql 10 删除表mysql dropTABLEMYTABLE 11 清空表mysql deletefromMYTABLE 12 更新表中数据mysql updateMYTABLEsetsex f wherename hyq MySQL frontNavicatSQLyogmysql workbench userIDnamepasswordregDate friendshipIDuser IDfriend IDtypefrdDate recordIDuser IDfriend IDotherinfo LoginfriendListfriendManagementchatWindowgroupManagementchatRecord Login java btnLogin addActionListener newActionListener publicvoidactionPerformed ActionEvente booleanchecked server verify this getuser this password 登录验证if checked newfriendsWindow loginFrame setVisible false loginFrame dispose else listFriend server java Statements conn createStatement ResultSetrs s executeQuery selectuser name friendship type fromuser friendship whereuser ID friendship friend ID ANDfriendship user ID this getUserID while rs next inttype rs getInt type swith type case0 friendNode add current case1 strangeNode add current default blacklistNode add current 每一个chatWindow对应一个线程所有chatWindow按照组进行分类 并且由server负责维护讨论组每个讨论组里面都应该有一个数据结构 list 维护组里的窗口 服务器收发消息时向数据库中插入聊天记录 或者本地维护另一个数据库 在本地插入聊天记录采用文本文件保存聊天记录时 可以以对方用户名 ID为文件名分别保存不同对象的聊天记录 privateBufferedReaderinputStream null privateBufferedWriteroutputStream null privateStringBuildersb newStringBuilder privateStringfile privateintline 0 numberzeroprivatestaticSimpleDateFormats newSimpleDateFormat yyyy MM dd 格式化日期使用 publicclassFileManager publicFileManager StringuserID StringfriendID checkExsit userID friendID run privatevoidcheckExsit StringuserID StringfriendID 检查用户聊天记录文件夹路径存在否 userID为当前用户 friendID为好友 Filef newFile System getProperties getProperty user dir chatLog userID if f exists f mkdirs file f getAbsolutePath friendID txt f newFile file if f exists 检查聊天记录文件有无 try f createNewFile catch IOExceptione e printStackTrace publicvoidrun try inputStream newBufferedReader newFileReader file Stringl while l inputStream readLine null line sb append l System getProperty line separator catch FileNotFoundExceptione e printStackTrace catch IOExceptione e printStackTrace finally if inputStream null try inputStream close catch IOExceptione e printStackTrace 获取当前日期 格式为 2009 02 02 privatestaticStringgetDate Datedate newDate return s format date 清除记录publicvoidremoveMsg line 0 sb delete 0 getString length 保存聊天记录 publicvoidsave Stringmsg StringnewMsg msg 加入当前日期 if msg trim length 0 newMsg getDate System getProperty line separator System getProperty line separator newMsg sb append System getProperty line separator newMsg try outputStream newBufferedWriter newFileWriter file outputStream write sb toString catch IOExceptione e printStackTrace finally try outputStream close catch IOExceptione e printStackTrace 获取记录内容publicStringgetString returnsb toString 获取行数publicintgetLines returnline privateJTreetree privateTreeNodenode privateDefaultTreeModelmodel privateDefaultTreeCellRendererrenderer model newDefaultTreeModel node tree newJTree model renderer newDefaultTreeCellRenderer renderer setLeafIcon newImageIcon a jpg 叶子结点图片renderer setClosedIcon newImageIcon b jpg 关闭树后显示的图片renderer setOpenIcon newImageIcon c jpg 打开树时显示的图片tree setCellRenderer renderer 头像显示 publicclassTreePopupMenuextendsJFrameimplementsMouseListener ActionListener privatestaticfinallongserialVersionUID 1L JTreetree JPopupMenupopMenu JMenuItemaddItem JMenuItemdelItem JMenuItemeditItem publicTreePopupMenu JTree构造 String model 我的好友 陌生人 黑名单 tree newJTree model tree newJTree tree setEditable true tree getSelectionModel setSelectionMode TreeSelectionModel SINGLE TREE SELECTION tree addMouseListener this JTree右键菜单 tree setCellEditor newDefaultTreeCellEditor tree newDefaultTreeCellRenderer setSize 200 800 popMenu newJPopupMenu addItem newJMenuItem 加入黑名单 addItem addActionListener this delItem newJMenuItem 删除好友 delItem addActionListener this editItem newJMenuItem 修改备注 editItem addActionListener this popMenu add addItem popMenu add delItem popMenu add editItem getContentPane add newJScrollPane tree publicvoidmouseClicked MouseEvente publicvoidmouseEntered MouseEvente publicvoidmouseExited MouseEvente publicvoidmousePressed MouseEvente TreePathpath tree getPathForLocation e getX e getY if path null return tree setSelectionPath path if e getButton 3 popMenu show tree e getX e getY publicvoidmouseReleased MouseEvente publicvoidactionPerformed ActionEvente DefaultMutableTreeNodenode DefaultMutableTreeNode tree getLastSelectedPathComponent if e getSource addItem DefaultTreeModel tree getModel insertNodeInto newDefaultMutableTreeNode Test node node getChildCount tree expandPath tree getSelectionPath elseif e getSource delItem if node isRoot return DefaultTreeModel tree getModel removeNodeFromParent node elseif e getSource editItem tree startEditingAtPath tree getSelectionPath publicstaticvoidmain String args TreePopupMenuframe newTreePopupMenu frame setDefaultCloseOperation JFrame EXIT ON CLOSE frame setVisible true
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!