毕业设计(论文)-利用JAVA实现股票交易系统设计.doc

上传人:夺命阿水 文档编号:1253727 上传时间:2024-04-18 格式:DOC 页数:36 大小:2.14MB
返回 下载 相关 举报
毕业设计(论文)-利用JAVA实现股票交易系统设计.doc_第1页
第1页 / 共36页
毕业设计(论文)-利用JAVA实现股票交易系统设计.doc_第2页
第2页 / 共36页
毕业设计(论文)-利用JAVA实现股票交易系统设计.doc_第3页
第3页 / 共36页
毕业设计(论文)-利用JAVA实现股票交易系统设计.doc_第4页
第4页 / 共36页
毕业设计(论文)-利用JAVA实现股票交易系统设计.doc_第5页
第5页 / 共36页
点击查看更多>>
资源描述

《毕业设计(论文)-利用JAVA实现股票交易系统设计.doc》由会员分享,可在线阅读,更多相关《毕业设计(论文)-利用JAVA实现股票交易系统设计.doc(36页珍藏版)》请在课桌文档上搜索。

1、目 录摘要1关键词1Abstract2Key words21 概述31.1 Java体系结构31.2 Java的优点31.3 Java的应用32 项目研究52.1 项目的生命周期52.1.1 需求分析阶段52.1.2 总体设计阶段52.2 数据库分析与设计52.2.1 user_info表52.2.2 Customer表52.2.3 Shares表62.2.4 Stock表62.2.5 数据库存储过程设计62.2.6 细节设计阶段63 界面模块设计73.1 登陆模块设计73.1.1 登陆界面的设计73.1.2 登陆界面的事件处理73.2 注册模块的设计83.2.1 注册界面的设计83.2.2

2、注册界面的事件处理的设计93.3 股票交易模块设计93.3.1 股票交易界面的设计93.3.2 股票交易界面事件处理的设计104 JDBC的设计与封装134.1 创建DNS源134.2 数据库操作过程154.3 JDBC数据库连接164.4 异常的编写与封装175 分布式RMI设计185.1 RMI概述185.2 RMI体系结构185.2.1 存根/骨干层185.2.2 远程引用层185.2.3 传输层185.3 RMI程序开发185.3.1 创建远程接口185.3.2 定义服务器类195.3.3 定义客户类19结 论20致 谢21参考文献22附录123附录22534利用Java实现股票交易系

3、统摘要:本文按照开发软件工程的思路,主要从以下几个方面详细论述了股票交易系统的研究和设计:GUI模块设计、JDBC的设计与封装以及分布式RMI设计。首先,本文阐述了Java的优点与应用;接着,本文介绍了项目的需求分析和数据库的设计;然后,本文着重论述了登陆界面模块、注册界面模块、股票交易界面模块的设计与各界面按钮的事件响应;如何创建DNS源;如何进行数据库管理和操作;运行中的异常编写及如何处理;最后,将系统设计成RMI分布式组件形式,以实现远程调用。关 键 词: 数据库;SQL Server; JDBC;Java;RMIStock trading system built by JavaAbs

4、tract: According to the methord of developing a software project, the thesis mainly discussed the study and design of the Stock trading system in such phases: design of GUI; design and seal of JDBC; design of RMIs layout.First, the thesis introduced the advantage and application of the Java.Then it

5、introduces the analysis of the demand of the project and the design of the database.After that, the thesis emphatically discusses the design about the landing interface module, registering interface module, and stock trading interface module. And it also emphasizes on the response to the push button

6、 of the interfaces. In addition, it refers to the question about how to establish the DNS, how to manage and operate the database, and the abnormal complier as well as how to deal with it. In the end,the system is designed in the module form of RMI layout to fulfil the long-rang call.Key words: Data

7、base; SQL Server; JDBC; Java; RMI1 概述为了满足信息技术不断变化的要求,人们已经开发出各种不同的语言,包括从BASIC到C和C+。理想的语言应该适应不断变化的环境和编程技巧。语言的语法和功能在这种适应性中扮演了非常重要的角色。由于JAVA可以在不同的平台上运行,因此JAVA很快得到了程序员的认可,并逐渐流行。Java模型建立在C+基础之上,它的“只需一次编写,可以四处运行”功能使其逐渐流行。这个特点使得可以在任何其它平台上运行某个平台上编写的Java程序。Java继承了C以及C+的特点,它保留了C语言中的语法,以及C+中的面向对象的特点。1.1 Java体系结

8、构Java体系结构一般包含以下四个组件:(1)Java编程语言(2)Java类文件(3)Java应用程序编程接口(Java API)(4)Java虚拟机(JVM)当编写、编译和执行Java程序时,将使用上面的组件。可以使用Java编程语言开发程序。当编译程序时,将创建Java类文件。JVM执行类文件。在类文件的执行过程中,将使用Java API中可用的方法来调用函数。Java程序的执行过程如图1-1所示。创建.java文件 编译为字节码 执行.class文件 调用方法Java应用程序编程接口Java类文件Java虚拟文件Java编程语言 图1-1 Java执行过程1.2 Java的优点Java

9、易于学习和移植,具有面向对象功能,而且与平台无关。它也可以管理内存与处理异常。因为Java语言的语法与C和C+的语法类似,但比C+更易于学习,Java在以下方面比C+更容易:(1)Java自动负责内存的分配和释放,将程序员从这种烦琐复杂的工作中解放出来;(2)Java没有指针指针是一种功能强大的特性,主要供经验丰富的程序员使用;(3)Java只具备面向对象编程中的单重继承。Java应用程序是可移植的。在编译过程中,将把Java代码转换为一种中间语言,称为字节码。在任何具有JVM平台上都可以执行字节码。因此,只需实现JVM来运行Java应用程序,Java体系结构为应用程序提供了安全保障和运行时环

10、境。1.3 Java的应用Java技术根据硬件平台与适用环境的差异,分成几个分支。JDK 1.1适用于一般消费性电子产品等,嵌入式系统的Java平台是Personal Java与Embedded Java,两者并无明确的界线。大致上来说,运算资源、内存以及显示设备比较丰富者,使用Personal Java,例如Set-Top Box、视讯电话等;反之,资源有限者使用Embedded Java,例如呼叫器、移动电话等。除了PC使用的Java平台、IA使用的Personal Java与Embedded Java平台之外,JavaCard也是一个Java平台,使用于Smart Card(IC Car

11、d)上。Java 2出现后,推翻了先前的Personal Java与Embedded Java的方法,改分成Java 2 Enterprise Edition(简称J2EE)、Java 2 Standard Edition(简称J2SE)、Java 2 Micro Edition(简称J2ME)。J2EE适用于服务器,目前已经形成企业运算、电子商务等领域中相当热门的技术;J2EE适用于一般计算机;J2ME适用于消费性电子产品。目前,Java技术的构架包括3个方面:J2EE是以企业为环境而开发应用程序的解决方案;J2SE为桌面开发和低端商务应用提供了可行的解决方案;J2ME是致力于消费产品和嵌入

12、式设备的最佳解决仿案。2 项目研究2.1 项目的生命周期项目的开发生命周期通常涉及3个时期:项目开始项目执行项目完成2.1.1 需求分析阶段股票交易系统应满足用户登陆后查询目前股票价格与持有股票者,而且还要满足客户的股票交易。因此,股票交易系统应满足以下功能:允许第一次使用者可以通过填写个人信息来注册;已注册用户可以通过验证他的信息等陆到股票交易界面;登陆用户可以查询股票价格、添加或更新客户信息及进行股票交易。2.1.2 总体设计阶段在此阶段过程中,要确定应用程序的运行方式,确定数据的输入和输出格式,并用所有人都可以理解的语言来编写应用程序的功能说明文档。同时为应用程序设计下列界面:登陆界面;

13、注册界面;股票交易界面。本设计的系统模块如图2-1所示:交易系统数据库登陆系统图2-1 系统模块图2.2 数据库分析与设计根据系统更能设计要求,设计出股票交易系统的各个组成部分的数据项和数据结构。本系统数据库名为StockMarket,用SQL Server2000创建此数据库。各数据库表设计如下:2.2.1 user_info表user_info表存储已注册用户的登陆信息(例如口令),该表结构如表2-1所示。表2-1 user_info表列名称数据类型大小说明idint4Primary keynamevarchar20passwordvarchar20telvarchar20emailvar

14、char50addressvarchar202.2.2 Customer表Customer表用来存储股票客户信息,该表结构如表2-2所示。表2-2 Customer表列名称数据类型大小说明ssnVarchar20Primary keycust_nameVarchar20addressVarchar202.2.3 Shares表Shares 表用来存储顾客拥有的股票种类与数量,该结构如表2-3所示。表2-3 Shares表列名称数据类型大小说明ssnVarchar20Primary keysymbolVarchar20Primary keyquantityint42.2.4 Stock表Stoc

15、k 表用来存储股票的种类与价格,该表结构如表2-4所示。表2-4 Stock表列名称数据类型大小说明symbolVarchar20Primary keypriceFloat82.2.5 数据库存储过程设计为了使程序界面对数据库的查询、添加、及删除等操作更加直观,我们为不同的操作设计数据库存储过程。经分析须设计以下过程:为登陆创建validate过程为注册一个用户设计add_user过程为验证用户ssn设计isSsn过程为添加一个客户设计addCustomer过程为删除一个用户设计deleteCustomer过程为更新一个用户设计updateCustomer过程还有个别过程不在这里一一列出了,各

16、过程设计的具体代码请参考附录1数据库部分。 2.2.6 细节设计阶段根据总体设计来创建软件模块的详细设计方案,应用程序的功能及应用程序中不同接口的交互作用如图2-2所示。图2-2 交互作用图输入判断系统开始成功失败输入判断系统开始输入判断股票信息流动区客户显示区股票显示区退出系统开始输入判断 3 界面模块设计良好的GUI(图形用户接口)可以让程序更具吸引力、更好操作、更容易学习。Swing作为JFC的一个重要组件,为基于窗体的GUI应用开发设计,为Java跨平台特性提供了卓越的支持。它完全没有本地代码,不受操作系统的影响,作到了真正跨平台应用,创建各界面模块所用到的技术包括:Java Swin

17、g布局管理器AWT事件处理3.1 登陆模块设计3.1.1 登陆界面的设计登陆界面是网络客户应用程序,用户用户名和密码发送给服务器,服务器来验证这些信息,对于未注册用户,需要提供注册功能。另外,用户还可以取消登陆。因此,在登陆界面提供了注册和取消选项。登陆界面如图3-1所示,单击“登陆”按钮后,如果输入的用户或口令有误,会弹出输入合法用户的信息窗口,如图3-2所示。如果输入合法用户,将进入股票交易界面。 图3-1 登陆界面 图3-2 错误信息通过设置Login()方法来完成登陆界面的设计。主要代码参见附录2代码部分,本界面主要组件如下:frame=new JFrame();lMsg=new JL

18、abel(请输入用户名密码,JLabel.CENTER);lMsg.setForeground(Color.blue);lName=new JLabel(用户名:);/初始化各组件lPsw=new JLabel(密 码:);bLogin=new JButton(确定);bCencel=new JButton(取消);tfName=new JTextField(10);pfPsw=new JPasswordField(10);3.1.2 登陆界面的事件处理本界面有三个按钮,都有相应的事件处理。“登陆”按钮用来处理用户登陆,如果登陆成功则进入系统的主界面,否则退出本系统;单击“取消”按钮则退出本系

19、统;“注册”按钮提供用户进行注册功能。以下是三个按钮的处理方式代码。/按钮响应- String name=name_txt.getText(); String password=psw_txt.getText(); try int login=this.d.validate(name,password); if(login=1) new GUI(); this.dispose(); else JOptionPane.showMessageDialog(this, 输入合法用户, 错误消息, JOptionPane.ERROR_MESSAGE); catch (Exception ex) JOp

20、tionPane.showMessageDialog(this,ex.getMessage(),严重错误,JOptionPane.ERROR_MESSAGE); 3.2 注册模块的设计3.2.1 注册界面的设计新用户应该可以自由地选择任何用户名和口令,只要用户名和口令组合不与现存用户的名称和口令组合完全匹配。程序需要创建另一个界面,它接受用户的注册信息。可以从登陆界面访问注册界面。登陆界面有“注册”按钮,它将调用注册界面。注册界面如图3-3所示。如果注册符合要求,会出现注册成功的提示。如图3-4所示。注册界面将接受来自用户的下列信息:姓名;密码;联系电话;联系邮箱;联系地址。 图3-3 注册界

21、面 图3-4 注册成功提示 对于注册界面,我们通过Register()方法来实现,在设计注册界面过程中,我们定义如下组件。组件定义代码如下:/定义组件-private JLabel lHeading; private JLabel lUserName;private JLabel lUserPsw;private JLabel lCnfUserPsw;private JLabel lTel;private JLabel lEmail;private JLabel lAddress;/定义对话框-private JTextField nametxt;private JTextField pswt

22、xt;private JTextField cnfpswtxt;private JTextField teltxt;private JTextField emailtxt;private JTextField addtxt;private JButton btSubmit;private JButton btCancel;3.2.2 注册界面的事件处理的设计注册界面有两个按钮,点击“确定”按钮,如果符合注册信息,则在数据库里添加新的登陆用户信息。单击“取消”按钮,退出注册系统。以下给出事件响应的部分代码,详细代码请参照附录2代码部分。public void actionPerformed(Ac

23、tionEvent e) JButton button = (JButton)e.getSource();if(button.equals(btCancel)this.dispose();elseint ver = verify(); /调用verify()if(ver=1)try this.d.addUser(userName,userPsw,tel,email,address);this.dispose(); catch (Exception ex) JOptionPane.showMessageDialog(this,ex.getMessage(),严重错误,JOptionPane.ER

24、ROR_MESSAGE); 3.3 股票交易模块设计3.3.1 股票交易界面的设计股票交易界面是股票交易系统中较为重要的一部分,股票交易基本上是在此界面上完成,此交易界面分为屏幕显示区、客户显示区、股票显示区。股票交易界面的图形如图3-5所示,各显示区所实现的功能具体如下:(1) 屏幕显示区将实现股票与之对应的价格滚动出现;(2) 客户显示区可以查询客户的基本信息(客户姓名、ssn、客户地址),显示所有用户,同时可以查询各用户所持有的股票,根据不同按钮可以实现添加新客户、删除该客户、更新客户数据、以及各股票数量比例,也可以实现客户对股票的买入和卖出;(3) 股票显示区可以显示所有的股票,点击获

25、得价格可以查询该股票的价格,同时也可以添加和删除股票。图3-5 股票交易界面对于交易界面,我们通过GUI()方法来实现,在设计交易界面过程中,我们定义如下组件。组件定义部分代码如下:private JButton add=new JButton(添加);private JButton delete=new JButton(删除);private JButton update=new JButton(更新);private JButton view=new JButton(视图);private JButton display=new JButton(显示);private JLabel lab

26、el1=new JLabel( );private JLabel name=new JLabel(客户姓名:);private JLabel ssnlabel=new JLabel(ssn:);private JLabel addresslabel=new JLabel(客户地址:);private JLabel stockpro=new JLabel(该用户所持有股票);private JTextField stockname_txt=new JTextField(10);private JTextField stockprice_txt=new JTextField(10);private

27、 JTextField name_txt=new JTextField(10);3.3.2 股票交易界面事件处理的设计股票交易界面的事件处理与登陆和注册模块事件响应的处理基本相同,下面给出“添加”按钮的代码,详细代码参照附录2代码部分。股票交易过程界面如图3-6,添加效果如图3-7。/为add添加监听- if(e.getSource()=add) String ssn=ssn_txt.getText(); String name=add_txt.getText(); String address=area.getText(); try this.d.addCustomer(ssn,name,a

28、ddress); JOptionPane.showMessageDialog(this,添加成功,系统提示,JOptionPane.INFORMATION_MESSAGE); allcustomerlist.removeAll(); this.initAllCustomer(); catch (Exception ex) javax.swing.JOptionPane.showMessageDialog(this,ex.getMessage(),严重错误,JOptionPane.ERROR_MESSAGE); return; 图3-6 股票交易过程图图3-7 增加用户效果图4 JDBC的设计与

29、封装数据库可以存储数据。除了可以结构化方式存储数据外,数据库还帮助检索和处理数据,在此项目中,建立应用程序,作为客户和数据库之间的接口。应用程序将使用易于使用的GUI从客户那里接收数据,然后应用程序更新或查询数据库。Java程序、JDBC API、JDBC驱动程序和数据库之间的交互作用如图4-1所示。数据库JDBC驱动程序JDBC APIJava程序图4-1 JDBC与数据库间的交互图在数据库连接过程中,需要用到如下技术:创建DNS源Java API的编写异常的封装4.1 创建DNS源创建数据库StockMarket后,需创建DSN源。数据源名称包含一些基本信息,例如包括数据库服务器的位置、数

30、据库名称、用户名称和连接到数据库服务器所使用的口令。DSN也包含有关日志文件名称的信息,它将存储冗长的查询和驱动程序统计数字。可以使用控制面板来创建DSN源。创建DSN源的步骤如下:(1) 双击控制面板窗口中的管理工具图标。(2) 在管理工具窗口中,双击数据源(ODBC)图标。(3) 此时显示“ODBC数据源管理器”对话框的“用户DSN”选项卡,如图4-2所示。单击“添加”按钮,以创建DSN源。图4-2 用户DSN选项卡(4) 此时将显示“创建新数据源”对话框,在这个对话框中显示了可以创建数据源的驱动程序列表。从列表中选择SQL Server。(5) 此时将显示“创建到SQL Server的新

31、数据源”对话框,如图4-3所示。输入JD作为名称。服务器将被选种,单击“下一步”按钮。图4-3 创建到SQL Server的新数据源对话框(6) 选择这个页面的默认配置,单击“下一步”按钮。(7) 图4-4显示选择默认数据库的方法,在这个页面中,选中标有“更改到默认数据库为”的复选框,然后从下拉表中选择StockMarket数据库。单击“下一步”按钮,然后单击“完成”按钮。图4-4 如何选择默认数据库(8) 此时将显示“ODBC Microsoft SQL Server安装”对话框,如图4-5所示。单击“测试数据源”按钮,以测试数据源。(9) 此时将显示“测试成功!”消息,如图4-6所示。单击

32、“确定”按钮,以关闭对话框。然后再单击“确定”按钮。(10) 此时将再次显示“用户DSN选项卡”,列表中会出现JD。单击“确定”按钮以关闭对话框。 图4-5 ODBC Microsoft SQL Server安装对话框 图4-6 测试成功消息4.2 数据库操作过程数据库中有Customer表、Shares表、Stock表、user_info表,用户在操作时利用用户界面进行数据库操作,这里展示数据库后台运行情况,创建这些表后,利用insert语句向表中添加数据信息,如图4-7所示表中原有信息,图4-8所示增加数据后效果。图4-7 表中信息为空情况图4-8 插入数据后情况4.3 JDBC数据库连接

33、在进行数据库连接时,有四种基本驱动程序,在此,利用JDBC-ODBC桥来实现Java与数据库的连接,下面给出利用利用JDBC-ODBC桥来实现Java与数据库的连接的实例测试。本项目数据库编程部分参照附录代码部分。cs=con.prepareCall(call validate(?,?,?);cs.setString(1,name);cs.setString(2,ps);cs.registerOutParameter(3,java.sql.Types.INTEGER);cs.execute();int i=cs.getInt(3);System.out.println (i=+i);if(i=

34、0)System.out.println (无此用户,登陆失败);elseSystem.out.println (登陆成功);cs.close();return i; try Database d=new Database(JD); d.validate(ddd,004); catch (Exception ex) ex.getMessage(); 程序测试运行结果,如果i=0,则无此用户,登陆失败,如果i=1,登陆成功。结果如图4-9所示。图4-9 程序运行结果4.4 异常的编写与封装程序运行过程中会出现非正常情况,在用传统的语言编程时,程序员只能通过函数的返回值来发出错误信息。这易于导致很

35、多错误,而Java对“异常”的处理是面向对象的。Java中如果出现“异常”,系统可以抛出一个异常,也可以通过它的类型来捕捉它。在股票交易系统的设计过程中,为此系统创建了RecordNotFoundException、DuplicateIDException、InvalidTransactionException三个异常,并将这三个异常放在jd.exception中,以方便其它程序调用。DuplicateIDException异常代码如下:package jd.exception;public class DuplicateIDException extends Exceptionpublic

36、DuplicateIDException(String msg)super(msg);RecordNotFoundException与InvalidTransactionExceptio异常代码编写同以上代码基本相同,只是将类名和方法名改变。最终将Database放在jd.dao包中,将GUI、Login、Register和PieGraph放在jd.view包中,将CustomerRec、SharesRec和StockRec放在jd.util包中。5 分布式RMI设计5.1 RMI概述远程方法调用是一个规范,它允许Java虚拟机(JVM)调用另一台JVM上对象的方法。两台JVM可以运行在不同的

37、计算机上。RMI是在三层体系结构的中间层内实现的,从而允许程序员通过互连网环境来调用分布式组件。分布式RMI应用程序有两个组件:RMI服务器RMI客户RMI服务器包含对象,而程序员希望远程调用这些对象的方法。它创建了几个远程对象,而且在RMI注册表(registry)中包含这些对象的引用。RMI注册表是运行在RMI服务器上的服务。服务器所创建的远程对象通过唯一名称在这个注册表中注册。RMI客户用对象名称从RMI注册表中得到一个或者多个远程对象的引用。然后,客户调用远程对象上的方法,以访问远程对象的服务。5.2 RMI体系结构RMI体系结构包含3个层次:存根/骨干层远程引用层传输层5.2.1 存

38、根/骨干层存根/骨干层负责监听客户所发出的远程方法调用,并将它们重定向到服务器。这个层包含存根(stub)和骨干(skeleton)。5.2.2 远程引用层远程引用层(Remote Reference Layer,RRL)解释客户对服务器上远程对象的引用。在客户以及服务器上都有这个层。客户端上的RRL接收来自存根的方法请求,然后将请求传递给服务器端上的RRL。5.2.3 传输层传输层(Transport Layer)是服务器端RRL与客户端RRL的请求,并通过服务器RRL建立与服务器的连接。5.3 RMI程序开发为创建RMI应用程序,需要创建远程接口类、服务器类和客户类。下面将创建这些类。5.

39、3.1 创建远程接口在远程接口中要规定客户客户可以远程调用的方法。java.rmi包声明了Remote interface、Naming和RMISecurityManage类。它也定义了可以与RMI一起使用的一些异常类。RemoteException类是RMI中所产生的所有异常的父类,在定义远程接口时,需要导入java.rmi包。然后,需要声明远程接口为public类,并扩展java.rmi.RemoteException。每种方法都必须在它的throws子句中声明java.rmi.RemoteException,以捕获网络连接和服务器异常。远程接口部分代码如下:public void get

40、Connection(String dataname)throws ClassNotFoundException,SQLException,RemoteException;public int validate(String name,String ps) throws SQLException,RemoteException;public void addUser(String name,String password,String tel,String email,String address) throws SQLException,RemoteException; 5.3.2 定义服务

41、器类服务器类是远程对象实现类。在服务器类中,需要实现远程接口和远程方法。然后,需要创建并安装安全机制管理器、创建远程对象的实例和在RMI注册表中注册远程对象。服务器类的代码如下:try jd.dao.Database d=new jd.dao.Database(); d.getConnection(JD); java.rmi.Naming.rebind(/localhost/myrmi,d); catch (Exception ex) System.out.println (ex.getMessage(); 5.3.3 定义客户类在客户类中,得到远程对象实现的引用后,调用远程方法。应用程序从服务器上运行的RMI注册表中得到远程对象实现的引用。可以使用Naming类中的lookup()方法来得到远程服务器的引用。lookup()方法用服务器上注册的名称作为参数。它创建存根实例,以连接到服务器上运行的rmiregistry程序,然后接收存根实例。客户类的部分主要代码如下: trythis.d=(InterFaceDatabase)Naming.lookup(/localhost/myrmi);catch(Exce

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 在线阅读 > 生活休闲


备案号:宁ICP备20000045号-1

经营许可证:宁B2-20210002

宁公网安备 64010402000986号