




已阅读5页,还剩8页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
短学期软件实践: 网上虚拟社区 工程项目报告 组长: 黄裕平 09005435 组员: 胡 晗 09005410 孙 正 09005421 王 伟 09005427 黄华峰 09005428 李明臣 09005431 蔡 彬 09005434 王 威 09005436 姜 琦 09005437 东南大学计算机学院 2007-9-13设计过程及分工从上学期分完组收到任务以后,我们小组就开始对网上虚拟社区的构建展开了讨论。当时我们还是刚刚接触Java这门语言,虽然它的语法规则跟C+类似,但毕竟有很大区别。而我们要做的虚拟社区必须综合用到Java的很多专业知识。针对这一情况,我们组织小组成员共同学习Java语言,基础好的帮助基础差的,在长学期里我们把老师推荐给我们的Java语言程序设计(基础篇)基本学完,大家对Java也有了初步的了解,同时我们小组同学积极探讨虚拟社区的构建,提出了基本的UML图。为了在短学期能够顺利完成软件工程,我们还要求大家在暑假期间继续深入学习Java语言程序设计(进阶篇)的有关知识,指定专人深入特定方面如:数据库、JSP语言、Swing组件、Socket、RMI远程调用、多线程等特定知识。进入短学期,我们严格按照老师给我们安排的进度执行。在第一个星期,我们共同讨论如何构建虚拟社区,现在的讨论不再是长学期的纸上谈兵,而是深入到技术细节。一开始我们想用类Guest、SoftwareEmpolder、SoftwareVendition、VirtualCommunity共同构成服务器。类Bank单独构成一台服务器。他们各自实现自己的数据库接口。用户与公司通过登录服务器页面来访问和进行自己的业务操作。而他们的数据都存在服务器相连的数据库中。VirtuaiCommunity和Bank分别实现自己的数据库操作。整个虚拟社区准备用四个部分构成:虚拟社区服务器、银行服务器、软件开发公司操作系统、软件销售公司操作系统。至于顾客可以通过访问虚拟社区服务器来进入虚拟社区。各个服务器及操作系统拥有各自的数据库顾客通过登录网页注册来建立自己在虚拟社区中的数据。这些数据保存在于自己相关的服务器数据库里边通过用户名和密码将这几个数据库中的数据关联起来。这四个块通过网页的互登来实现。因此整个工程分为功能紧密联系的四大块由小组成员孙正、黄华峰、王伟、李名臣完成软件开发,公司操作系统、软件销售公司操作系统的编写;蔡彬、黄裕平、王威、姜琦、胡晗完成虚拟社区服务器、银行服务器的编写。(四大块中People、数据库操作等类可重用。)但是,这样的话,我们必须在客户端也安装数据库,而且操作不方便。考虑到现在的虚拟社区要想普及就不能对计算机有太高的要求,而很多个人计算机很少给自己安装数据库,人家不可能为了用一下你的虚拟社区而专门安装一个数据库。因此,我们将虚拟社区服务器、软件开发公司操作系统、软件销售公司操作系统改在同一个服务器中,这样可以就可以共享数据库。各个公司通过登陆网页登录,无须特定要求,对计算机及使用人能力的要求都达到了最低。按照这样的设计,我们必须编写大量的网页,通过比较,我们决定采用JSP语言来编写,于是我们安装了Tomcat,并开始学习JSP编写及Dreamweaver的使用。但由于很多人更熟悉Swing组件,于是最后我们还是决定用GUI组件编写客户端。接下来要解决的是网络通信问题,通过向别的组取经时我们发现他们大多用的是Socket套接字来实现,但是考虑到RMI可以使我们在较高的抽象层次上进行程序设计。他隐藏了套接字服务器、套接字、连接以及数据的发送或接收等细节。他甚至在后台实现了多线程服务器,然而,如果在套接字层进行程序设计,必须明确地实现处理多客户的线程。RMI应用程序可以升级、易于维护。可以修改RMI服务器或把它移动到其他机器上,而除了重设服务器的URL之外,不需要对客户程序作任何修改。在套接字层程序设计中,客户发送数据的操作要求服务器相应地读操作。在套接字层,客户和服务器的实现是严格同步的。RMI客户可以直接调用服务器的方法,而在套接字层程序设计中,只限于传递值。套接字层程序设计师非常原始的,最好不用它开发客户/服务器程序。打一个比喻,套接字层程序设计就像汇编语言程序设计,而RMI就像高级语言程序设计。因此,我们决定采用RMI来实现远程通信。最后,我们把架构出来的虚拟社区分为功能相似的几个块,进行最后分工:黄裕平负责虚拟社区类、虚拟社区RMI接口,王伟负责People类、虚拟社员类、销售公司兼投资公司,李名臣负责虚拟社区服务器窗口和银行管理服务器窗口,孙正负责茶餐厅、购买软件、开发公司的窗口的GUI组件编写,胡晗负责销售公司窗口、银行数据库,王威负责银行的对外窗口,蔡彬负责虚拟社区登陆界面、欢迎界面注册窗口的编写,黄华峰开发公司、茶餐厅、DBOperator类,姜琦负责银行、银行帐户类以及银行的远程RMI接口。编写虚拟社区遇到的困难及解决方法在编码的第一开始,我们就遇到了巨大的难题,分工是很细致了,但是如何来让每个人编写的代码其他人都能用呢?这时候我们才发现设计和分工不是最难的,最难的是合作,但是我们并不惧怕困难,先考虑各个人编写的代码其他那几个人用得到,自己编码时要用到别人的那些代码,同时个人编码之前先写好Public 类名以及需要参数和返回参数。这样别人子要知道如何调用函数就行了。在对数据库操作方面我们也屡屡出错,为此我们到图书馆找来数据库SQL方面的书进行学习。后来,我们在RMI远程调用方面也遇到了问题。及使用安全策略文件来设置Java程序权限的问题,通过查找网上资料并向网上的高手请教,我们终于让问题得到了圆满的解决。代码编完后,我们花了近一半的时间进行整合,使得各自的代码能够互相调用,由于代码方面各人之间必须相互调用,因此,我们不得不一个一个事件驱动,一个一个函数的进行调试,虽然最后出来有一些代码编了没用,有一些代码重复编了,还有一些代码不得不重编,但是我们最后还是圆满实现了设计要求,完成了任务。虚拟社区结构本虚拟社区由三部分构成:银行端、服务端、客户端。银行端银行服务器,其界面如下图:n 在这个界面上,我们可以查看银行数据库里边各个表的内容。 n 同时,这个界面提供一个增加帐户和一个删除帐户按钮。 n 作为提供给专业管理员的界面,我们在里面添加了一个直接输入SQL语言的文本框。 n 管理员可直接使用数据库语言对数据库进行操作。而整个银行服务器是由银行类、RMI接口及实现类、Mypane类构成: public static void main(String args) / System.setSecurityManager(new RMISecurityManager(); try BankServerInterfaceImpl obj = new BankServerInterfaceImpl(); registerToRegistry(BankServerInterfaceImpl, obj, true); System.out.println(Bank server + obj + registered); catch (RemoteException ex) ex.printStackTrace(); catch (MalformedURLException ex) ex.printStackTrace(); MyPanel applet = new MyPanel(); JFrame frame = new JFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setTitle(Bank Server SQL Operator ); frame.getContentPane().add(applet, BorderLayout.CENTER); applet.init(); applet.start(); frame.setSize(700, 500); Dimension d = Toolkit.getDefaultToolkit().getScreenSize(); frame.setLocation(d.width - frame.getSize().width) / 2, (d.height - frame.getSize().height) / 2); frame.setVisible(true); public static void registerToRegistry(String name, Remote obj, boolean create) throws RemoteException, MalformedURLException if (name = null) throw new IllegalArgumentException( registration name can not be null); try Naming.rebind(name, obj); catch (RemoteException ex) if (create) try Registry r = LocateRegistry.createRegistry(Registry.REGISTRY_PORT); r.rebind(name, obj); catch(Exception e) System.out.println(Cannt rebind! ); System.out.println(e); else throw ex; public BankServerInterfaceImpl() throws RemoteExceptionthebank = new Bank();public interface BankServerInterface extends Remotepublic double findBalance(String No,String pin) throws RemoteException;public boolean withdraw (String No,String pin,double num) throws RemoteException;public boolean deposit(String No,String pin,double num) throws RemoteException;public boolean deposit(String No,double num) throws RemoteException;public boolean changepin(String No,String pin,String newpin) throws RemoteException;public boolean findAccount(String No,String pin) throws RemoteException;服务端虚拟社区服务器该服务器界面跟银行类似,但功能有所不同。 通过两次输入IP,服务器完成与银行的RMI远程连接,同时建立RMI服务器等待客户来调用。 最后,服务器弹出面向虚拟社区管理员的窗口,与银行类似。不同之处在于:n 有删除会员按钮但无添加会员按钮。 n 添加向顾客送出所点菜肴按钮,负责向顾客送菜。 n 添加增加菜肴按钮,为茶餐馆增加新菜服务。 n 添加查看茶餐馆任务按钮。以下是虚拟社区服务器对外的远程对象接口:public interface CommunityServerInterface extends Remotepublic boolean getpermission(String name,String password,String genere)throws RemoteException;public boolean addnewmember(String name,String password,String genere,String Address,String Account)throws RemoteException;public String findperson(String name,String password,String genere)throws RemoteException;public String changemessage(String name,String password,String genere,String information)throws RemoteException;public double findbalance(String name,String pin)throws RemoteException;public boolean changepin(String No,String pin,String newpin)throws RemoteException;public boolean withdraw(String No,String pin,double num)throws RemoteException;public boolean deposit(String No,String pin,double num)throws RemoteException;public Vector finddatabase(String table,int a,String name) throws RemoteException;public void orderdish(String name,String dish,double num) throws RemoteException;public void bid(String name,String soft,double price) throws RemoteException;public void putin(String name,String soft,String account) throws RemoteException;public void settlesoftware(String name,String soft) throws RemoteException;public void buysoftware(String name,String soft) throws RemoteException;public boolean addsoftware(String soft,String description, String needer,double sellingprice) throws RemoteException; 客户端客户端首先跳出的是登陆界面:n 登陆界面要求提供用户名、密码、以什么身份登录以及服务器端IP地址。 n 点击登录按钮,如果输入信息正确就可以登录到虚拟社区主界面了。 n 如果没有用户名,或忘记密码可以点击注册按钮,进入注册界面(IP必须正确)。 它通过IP找到主服务器,并绑定远程对象,以后跳出的窗口都是利用这个IP找到远程对象的。然后,就可以调用远程接口里面的函数,实现与主服务器的通信。如下面一段代码:绑定:protected boolean initializeRMI()if(url!=null)return true;url = jTextField1.getText();if(url.equals(default)url = ;url = rmi:/+url+/;trythecommunity = (CommunityServerInterface)Naming.lookup(url+CommunityServerInterfaceImpl);System.out.println(Server object +thecommunity+ found);url = jTextField1.getText();return true;catch(Exception ex)System.out.println(url);url = null;System.out.println(ex);JOptionPane.showMessageDialog(null,Please enter right ID!,ID error,JOptionPane.ERROR_MESSAGE);return false;调用远程方法:private void jButton1ActionPerformed(ActionEvent evt) try data = thecommunity.finddatabase(Software, 1, name); catch (Exception ex) System.out.println(ex);JOptionPane.showMessageDialog(null,The internet is busy,please retry letter!, Link error,JOptionPane.ERROR_MESSAGE);tbmodel = new TbModel(data, titles1);jTable.setModel(tbmodel);model = 1;jTable.updateUI();整体描述整个虚拟社区是这样设计的:首先运行的是银行服务器,他是银行的管理界面,同时伴随着运行的是他提供远程调用的RMIServer。然后,我们再运行虚拟社区服务器,他要求输入一个连到银行端的IP,这时虚拟社区服务器就运行起来了,它包括:面向管理员的界面、银行远程对象的调用、向客户端提供的远程调用RMIServer。最后,我们就可以在任何一台机子上运行客户端了,只要提供服务器的IP,我们就可以登录到虚拟社区进行相应活动。其中银行的转帐等业务必须通过虚拟社区再传达到银行,这样就使得银行的数据库相当安全。考虑到
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 机器人清洁服务创新创业项目商业计划书
- 输液反应和急救措施
- 知识管理(KM)创新创业项目商业计划书
- 橡胶鞋材生产创新创业项目商业计划书
- 网红短视频内容创作工具创新创业项目商业计划书
- 智能柜台银行服务系统创新创业项目商业计划书
- 电影海报电商创新创业项目商业计划书
- 渔业养殖的气象服务创新创业项目商业计划书
- 水产品品牌国际化战略咨询创新创业项目商业计划书
- 2025年环保产业园区绿色产业集聚与区域产业结构优化报告
- 设备采购 投标方案(技术方案)
- 数字经济与人工智能
- 晚期胃癌患者护理查房
- IATF16949质量相关知识专项考试试题及答案
- 妇产科腹腔镜手术相关护理综述课件
- 航空发电机市场需求分析报告
- 教科版(2017版)科学五年上册《机械摆钟》说课稿(附反思、板书)课件
- 公差配合课件
- 招标代理机构入围服务 投标方案(技术标)
- 新苏教版六年级上册《科学》全一册全部课件(含19课时)
- 部编版三年级语文上册全册表格式教案(教学设计)
评论
0/150
提交评论