




已阅读5页,还剩33页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
学校: 中南林业科技大学组员:赵松,刘彬,张天瑞,邝东凡,段建军,欧阳益湘,彭刚强,赵雨亭,巫腾飞组长:赵松副组长:张天瑞年级: 2005级指导老师: 辛动军目 录1、 面向对象的分析v 需求陈述2、 系统建摸1 用户服务模块介绍2 管理服务模块3 数据库服务模块4 用户服务模块5 成员管理模块6 管理员服务模块7 用户管理模块3、 UML系统建摸1 建立用例 角色的确定 创建用例1 建立时序图2 协作图的建立3 包图 UI package Business package2 系统的部署 组件图 配置图4、 源代码5、 软件截图6、 参考文献7、 组员学习心得聊天软件软件工程计划书一:面向对象的分析1.需求陈述(全组讨论,邝东凡,段建军写讨论结果的 文档)(1)能够通过网站注册,申请聊天软件的号码跟密码。注册成功之后保存注册用户的,真实姓名,所在学校,宿舍,班级,院系,性别,出生年月,入学年份,个性签名,(2)下载一个客户端软件,输入帐号跟密码,选择登陆状态(上线,隐身)登录。登录框消失,显示主界面。当用户上线时,提示你的好友,你加入的社团等。并显示在线的好友。当打开群,社团,学院聊天室对话框之后显示在线用户。当上线的好友离开时,自动将好友变为离线状态。当班级或群好友给你发送信息,你又不在的时候,服务器帮你保存资料,当你登陆的时候,将信息发送给你。(3)主界面包好官方网站的超级链接,用软件的吉祥物显示。主界面显示用户自己的头像,双击进入用户“我的世界”网叶(4)主界面包含用户的好友框。 每个框包含有什么对我们说组件,双击该组件显示有什么对我们说对话框,可以发送消息给我们的服务器双击好友框的用户,显示好友聊天对话框。聊天对话框,用户可以输入信息,接受信息。可以发送接受文件,支持语音视频聊天。可以选择日常用语。可以下载该好友的资料。(5)主界面包含社团框社团框包含该用户加入的社团,双击一个社团将显示社团对话框,可以群聊,可以显示社团通知,可以显示社团所有的成员。如果社团是你创的,该用户可以管理社团,删除或增加社团成员。(6)主界面包含学院聊天框。学院聊天室有若干个学院。每个学院有10个聊天室,每个聊天室容纳100人。双击一个聊天室,显示聊天室对话窗口。可以发送文字和发送图片。可以显示该聊天室正在聊天的成员。可以推出聊天室,聊天室人满了可选择其他的聊天室(7) 主界面包含班级框班级框包含该用户所属的班级双击班级将显示一个班级对话框,可以群聊,可以显示班级成员,可以下载班级资料,可以发送日常用语。如果班级由该用户创建,用户可以增加删除班级成员,可以上传班级资料。(8)主界面包含查找按扭,单击查找按扭显示查找对话框。查找对话框隔根据输入的号码搜索相应的用户或群或院系或社团。如果对方同意,获得对方发的信息,然后在主界面显示该用户或该群或者该院系或该社团。如果对方同意,则相应的刷新主界面。如我家A为好有,他同意,则在好友组增加该好友。(9)娱乐按扭,双击娱乐按扭,显示娱乐对话框,娱乐对话框有游戏组件。暂时不做。(10)主界面包含帮助按扭,双击它显示帮助对话框,告诉你怎么使用这个软件。(12) 主界面有菜单按扭。双击菜单按扭,显示菜单对话框。*菜单对话框有网上集市按钮,双击显示网上集市对话框。用户可以通过它买卖物品。用户可把自己要卖的或者要买的东西发送到网上,标好价格,上传图片。*菜单对话框有查询按钮,双击显示查询对话框,查询对话框包含查询学生成绩组件和查询图书馆信息(可以续借)和四六级成绩查询。输入你的学号,即可查询你的成绩,如果有则显示你的成绩,没有则提示没有。输入你四六级的号码,既可查询成绩。输入书名选择要查的书,输入你的借书证号码跟借书证密码可以查你的借书信息,可以续借。*菜单对话框包含创建按扭,拥护可以创建社团,班级这只针对对授权的用户。设置社团,班级名字跟社团,班级宣言。*菜单对话框包含设置按扭。双击设置,显示设置框,用户可以设置或修改自己的 头像,个性签名,真实姓名,所在学校,宿舍,班级,院系,社团,性别,出生年月,入学年份,兴趣爱好等。*菜单对话框包含信息咨询按扭。双击显示信息咨询网叶,包含时尚咨询,足球篮球信息快递,人才市场信息,兼职信息,留学信息。*菜单对话框含交友天地,双击显示交友天地网叶友天地对话框包含爱情呼叫组建,寝室联谊组件,同校约战组件。*菜单对话框面包含论坛按扭,双击显示论坛网叶,论坛包含文学专区,学校风云榜和注水专区。*菜单对话框包含我的仓库。大小为10M.。显示用户现在的仓库资料。用户可以上传资料,设置权限供其他用户下载可以删除资料。*菜单对话框包含考研专区按扭。*菜单对话框有院系新闻按扭。双击显示院系新闻网叶。软件号码软件密码用户个人资料 妮称真实姓名,所在学校,宿舍,班级,院, 系,性别,出生年月,入学年份,个性签名,个人爱好,头像。信息提示框提示信息登陆状态登录框好友社团学院聊天室对话框服务器资料主界面官方网站吉祥物我的世界 好友框好友组件 好友个性签名 好友名字 好友资料框 有什么对我们说组件有什么对我们说对话框 好友聊天对话框信息文件日常用语社团框社团组件 社团资料框 社团名称 社团号码 社团头像社团对话框社团通知社团成员学院聊天框聊天室聊天室对话窗口聊天室成员班级框班级组件 班级资料框 班级对话框班级成员班级资料查找按扭 查找对话框娱乐按扭娱乐对话框帮助按扭帮助对话框帮助信息菜单对话框菜单按扭网上集市按钮网上集市对话框物品价格图片查询按钮查询对话框查询学生成绩组件查询图书馆信息四六级成绩查询学号提示四六级的号码要查的书借书证号码借书证密码创建按扭创建对话框群名字群宣言 社团,班级名字社团 班级宣言 设置按扭设置框信息咨询按扭信息咨询网叶时尚咨询足球篮球信息快递,人才市场信息,兼职信息,留学信息交友天地按扭交友天地对话框爱情呼叫组件寝室联谊组件同校约战组件 论坛按扭我的仓库按扭我的仓库框仓库资料权限 考研专区按扭 院系新闻按扭二:系统建摸11 1:用户服务模块 这个模块提供了用户登录,成员管理,用户聊天,个人设置,资料管理。 用户登录包过用户登录和用户退出。成员管理包过增加成员,删除成员,退出群,加入群。11 2:管理员服务模块这个模块提供了用户登陆,管理用户,查询。用户登录包含用户登录和用户退出。管理用户包含增加用户,删除用户,更新用户资料。查询用户信息。11 3:数据库服务模块 这个模块提供了自动更新数据库聊天软件系统管理员服务模块数据库服务模块用户服务模块 1 2。1用户服务模块用户服务模块资料管理个人设置用户聊天成员管理 用户登录 (1) 用户登录过程如下:更新数据库发送到服务器用户的号码跟密码 (2)管理员模块:发送更新信息给服务器选择成员管理类型更新数据库 (3) 资料管理模块更新数据库发送更新信息给服务器选择资料管理类型 1.2.2成员管理模块: 删除群退出群加入群删除成员 成员管理增加成员(1)增加成员过程: 发送到服务器,服务器处理,输入成员号码返回信息给用户。更新数据库 (2) 删除成员发送消息给服务器选择要删除的成员更新数据库 其余处理类似,因为赶时间,省略了很多东西。 13 管理员服务模块用户管理查询管理员服务模块管理员登录 131 (1) 查询过程:显示查询结果查询数据库输入用户号码 (2) 用户登录模块跟上面一样的132 用户管理模块 : 用户管理更新用户资料删除用户增加用户 (1) 增加用户过程:更新数据库用户申请号码同意申请 (2) 删除用户过程删除该用户更新数据库输入用户号码 三:UML 系统建摸 1建立用例(张天瑞)1 1角色的确定 *用户可以向服务器申请号码 *有些用户可以拥有自己的资料仓库所以,有三个角色,一个是普通用户,一个是VIP用户,还有管理员1 2创建用例(如图所示)2建立时序图 (彭刚强) 1。用户登录的时序图 2 协作图的建立(刘彬)用户登录是的协作图3 包图,分为三个包,UI package ,Business package , Database package31 UI package(巫腾飞)3.2Business package(赵雨亭)4.系统的部署4 1组件图(欧阳益湘) 4 2配置图(赵松)四:源程序代码登录界面的代码/*类名:LoadPane *描述:登陆框 *公司:DoubleZ组合 *作者:张天瑞 *版本:Double 1.0 *创建时间:2007.12.6 *最后修改时间:2007.12.10*/import java.awt.*;import java.awt.event.*;import javax.swing.*;import .*;import javax.swing.event.*;import java.io.*;import java.util.*;public class LoadPane extends JFramestatic String loadPass=null;JLabel label1=new JLabel(*欢迎使用局域网聊天程序*);JLabel label2=new JLabel(帐号:);JTextField tf1=new JTextField(15);JLabel label3=new JLabel(密码:);JPasswordField tf2=new JPasswordField(15); JLabel label4=new JLabel(第一次使用请先注册!);JButton JButton1=new JButton(*登陆*);JButton JButton2=new JButton(*注册*);JButton JButton3=new JButton(-关于-);/*public void getIpNum()InetAddress ip=InetAddress.getLocalhost();*/获得自己的帐号public static String getMyNum() String ip=; String ip1=; String ip2=; try InetAddress addr = InetAddress.getLocalHost(); ip=addr.getHostAddress().toString();/获得本机IP ip=ip.substring(8,ip.length(); ip1=ip.substring(0,ip.indexOf(.); ip2=ip.substring(ip.indexOf(.)+1,ip.length(); ip=ip1+ip2; catch(Exception e)e.printStackTrace(); return ip; public void init()Container cp=getContentPane();Toolkit kit=getToolkit(); Dimension winSize=kit.getScreenSize(); setBounds(winSize.width/4+100,winSize.height/4+80, /位置 230,200); /大小 cp.setLayout(new FlowLayout();cp.add(label1);cp.add(label2);cp.add(tf1);cp.add(label3);cp.add(tf2);cp.add(JButton1);cp.add(JButton2);cp.add(JButton3);cp.add(label4);label4.setBorder(BorderFactory.createLoweredBevelBorder();/登陆JButton1.addActionListener( new ActionListener() public void actionPerformed(ActionEvent e) /先从文档里读取保存的密码 tryFileInputStream in = new FileInputStream(个人信息.txt); ObjectInputStream oos = new ObjectInputStream(in);ArrayList ar=(ArrayList)oos.readObject(); String strInfo=(String )ar.get(0); loadPass=strInfo0;oos.close();catch(Exception exc1)exc1.printStackTrace(); /判断帐号与密码是否匹配 if(tf1.getText().equals(getMyNum() &tf2.getText().equals(loadPass) MainBar mainBar=new MainBar(); OwerPane.tf3.setText(getMyNum(); StoreInform.loadUserInform();/读取本机的用户信息 FriendList.loadFriendList(); dispose(); else JOptionPane.showOptionDialog(null, 帐号或密码不正确!n, null, JOptionPane.DEFAULT_OPTION, JOptionPane.INFORMATION_MESSAGE, null, null, null); ); /注册 JButton2.addActionListener( new ActionListener() public void actionPerformed(ActionEvent e) File f=new File(个人信息.txt); if(f.exists() JOptionPane.showOptionDialog(null, 大哥,不能多次注册!, null, JOptionPane.DEFAULT_OPTION, JOptionPane.INFORMATION_MESSAGE, null, null, null); else if(!f.exists() OwerPane.tf3.setText(getMyNum(); OwerPane opDemo1=new OwerPane(); ); /关于 JButton3.addActionListener( new ActionListener() public void actionPerformed(ActionEvent e) JOptionPane.showOptionDialog(null, 作者:DoubleZ组合n + 版本:Double 1.0n+ 简介:一个基于局域网的聊天程序.n, null, JOptionPane.DEFAULT_OPTION, JOptionPane.INFORMATION_MESSAGE, null, null, null); );public static void main(String args)LoadPane lp=new LoadPane();lp.setTitle(局域网聊天程序1.0); lp.pack(); lp.init(); lp.setSize(230,200); lp.setResizable(false); lp.addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) System.exit(0); ); lp.setVisible(true); 主功能实现代码/*类名:MainBar *描述:搭建一个主框架 *公司:DoubleZ组合 *作者:张天瑞 *版本:Double 1.0 *创建时间:2007.12.3 *最后修改时间:2007.12.10*/ import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.event.*;import javax.swing.tree.*; import java.io.*;import .*;import java.util.*;public class MainBar extends JFrameImageIcon ic=new ImageIcon(LoadPane4.jpg);JButton showPic=new JButton(ic);/把主窗口分成三个部分/定义两个端口DatagramSocket dss,dsr;/dss发送,dsr接受static ArrayList arrayLs=new ArrayList(200);/上部JPanel p1=new JPanel();/JLabel label=new JLabel(当前用户);/为当前用户的头像private Image image;/中部JPanel p2=new JPanel(); static DefaultMutableTreeNode root=new DefaultMutableTreeNode(-我的好友-); static DefaultTreeModel treeModel=new DefaultTreeModel(root); static JTree tree=new JTree(treeModel); JButton button3=new JButton(添加与删除好友);/下部JPanel p3=new JPanel();JButton button1=new JButton(个人设置);JButton button2=new JButton(查找);public void MainBar(int s)public void paint(Graphics g) g.drawImage(image,0,0,5,5,p1);System.out.println(画完了!); /添加新好友到列表中,name为要添加的好友的名字public static void addFriend(String name)DefaultMutableTreeNode n=new DefaultMutableTreeNode(name);treeModel.insertNodeInto(n,root,0);/展开子节点TreeNode root=treeModel.getPathToRoot(n);TreePath path=new TreePath(root); tree.makeVisible(path);/删除好友/*public static void delFriend()root.remove(FriendList.txt1.getText();*/public MainBar()/ TODO: Add your code here/初始化外层窗口 super(局域网聊天程序1.0); setSize(200,600); setResizable(false); setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); Toolkit kit=getToolkit(); Dimension winSize=kit.getScreenSize(); setBounds(winSize.width/4+500,winSize.height/4-122, /位置 200,600); /照片地址 image=Toolkit.getDefaultToolkit().getImage(S5001183.JPG); /初始化两个端口 try dss=new DatagramSocket(); dsr=new DatagramSocket(6000); catch(Exception e)e.printStackTrace(); receMess();/一上线就就打开一个接收线程 sendOnlineMess();/一上线就发送一个上线的信息 /-容器-Container cp=getContentPane();cp.setLayout(new BorderLayout();/在第一层上添加cp.add(p1,BorderLayout.NORTH);cp.add(p2,BorderLayout.CENTER);cp.add(p3,BorderLayout.SOUTH);/在第二层上添加-上部p1.add(showPic);/label.setBorder(BorderFactory.createLineBorder(Color.LIGHT_GRAY,2); /-中部 p2.add(new JScrollPane(tree);p2.add(button3);p2.setBorder(BorderFactory.createLoweredBevelBorder();/设定界面风格-只有三种/*tryUIManager.LookAndFeelInfo info = UIManager.getInstalledLookAndFeels(); /String className = info2.getClassName();QuaquaLookAndFeel className=new QuaquaLookAndFeel();UIManager.setLookAndFeel(className); /UIManager.setLookAndFeel(new QuaquaLookAndFeel();catch(Exception exc1)*/try /UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName(); /UIManager.setLookAndFeel(javax.swing.plaf.metal.MetalLookAndFeel); /UIManager.setLookAndFeel(org.jvnet.substance.SubstanceLookAndFeel);/catch(Exception e)e.printStackTrace();/-下部p3.add(button1);p3.add(button2);p3.setBorder(BorderFactory.createEtchedBorder();/事件监听showPic.addActionListener( new ActionListener() public void actionPerformed(ActionEvent e) ShowPic showPic=new ShowPic(); System.out.println(头像按钮!); );/个人设置 按钮button1.addActionListener( new ActionListener() public void actionPerformed(ActionEvent e) OwerPane opDemo1=new OwerPane(); ); /查找 button2.addActionListener( new ActionListener() public void actionPerformed(ActionEvent e) FindOfChat foc=new FindOfChat(); ); /添加与删除好友 按钮 button3.addActionListener( new ActionListener() public void actionPerformed(ActionEvent e) FriendList friendList=new FriendList(); ); /添加用户好友事件 tree.addTreeSelectionListener( new TreeSelectionListener() public void valueChanged(TreeSelectionEvent e) DefaultMutableTreeNode node= (DefaultMutableTreeNode)tree.getLastSelectedPathComponent(); if(node=root) System.out.println(选中了根节点); return; else System.out.println(node); /String nowName=FriendList.reFriendName(); System.out.println(发起聊天); ChatDialog cd=new ChatDialog(你正在与+node+聊天); ); /添加关闭窗口时发送下线信息的时间 this.addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) sendOfflineMess(); ); setVisible(true); public MainBar(int a) public void receMess() /首先启动一个线程,用来不断从指定端口读取数据 new Thread(new Runnable() public void run() try byte buf=new byte1024; DatagramPacket dp1=new DatagramPacket(buf,buf.length); String isadd,numKey; while(true) System.out.println(数据已经接受); dsr.receive(dp1); String strArray=new String 20; isadd=new String(dp1.getData(),0,dp1.getLength(); System.out.println(这里是MainBar的接收线程+isadd); strArray=divMes(isadd); System.out.println(strArray0); System.out.println(strArray1); System.out.println(strArray2); /判断有人加你为好友而且判断自己的号码是不是那么多 / int myNum=0;/此处获得自己的号码 / if(Integer.parseInt(numKey)=myNum)/此处暂时不用 /判断自己的 号码 是否 符合而且 判断是否是 添加好友的信息 if(!isExit(strArray1)&(Integer.parseInt(strArray2)=Integer.parseInt(LoadPane.getMyNum()&(Integer.parseInt(strArray0)=Integer.parseInt(1) /在电脑右下角显示某某添加你为好友,调用主功能界面的提示框方法 TipFrame tf=new TipFrame(); int option=tf.setTipFrame(好友,strArray1); System.out.println(option is +option); if(option=0) try /在此处调用一个获得头像信息的方法 String sg=new String(); buf=(+2+LoadPane.getMyNum()+strArray1+OwerPane.tf1.getText().getBytes(); DatagramPacket dp2=new DatagramPacket(buf,buf.length,dp1.getAddress(),6000); dss.send(dp2); FriendList fl=new FriendList(4); fl.updateMainFrame(strArray3,strArray1); catch(Exception e)e.printStackTrace(); /然后将头像,号码,个性签名返回 /判断是否上线 else if(isExit(strArray1)&(Integer.parseInt(strArray0)=Integer.parseInt(4) /先搜索自己的 好友查看是否有 该号码 ,有则提示 TipFrame tf=new TipFrame(); tf.setTipFrame(上线,strArray1); /判断是否是离线信息 else if(isExit(strArray1)&(Integer.parseInt(strArray0)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030中国食用油行业发展分析及投资前景预测研究报告
- 2025-2030中国风选粉碎机行业发展分析及发展趋势预测与投资价值研究报告
- 2025-2030中国阿昔洛韦胶囊行业市场深度分析及发展趋势与投资研究报告
- 水疗对腰椎间盘突出疗效-全面剖析
- 李一环店长标准化复制五步法方法论与店长手册内容框架设计方案
- 无人驾驶技术的运输行业应用-全面剖析
- 生物多样性保护与恢复策略-全面剖析
- 体育教研工作计划怎么写(3篇)
- 大海啊故乡教学反思18篇
- 云原生开发环境构建-全面剖析
- 2024-2030年中国液化天然气透平膨胀机行业市场发展趋势与前景展望战略分析报告
- 无违法犯罪记录证明申请表(个人)
- 反生产行为讲稿
- 施工现场消防安全技术交底
- 冀教版二年级语文下册看图写话专项加深练习题含答案
- 焊接工艺评定及焊接工艺技术评定管理标准
- 洗衣房各岗位工作流程
- 基于SWOT分析的义乌市现代物流业发展研究
- 基于自适应滤波对音频信号的处理详解
- 油浸式变压器工艺文件汇编
- 并网前设备电气试验继电保护整定通讯联调完整资料
评论
0/150
提交评论