股票在线交易模拟系统设计与实现.docx

上传人:b****0 文档编号:12473455 上传时间:2023-04-19 格式:DOCX 页数:47 大小:878.42KB
下载 相关 举报
股票在线交易模拟系统设计与实现.docx_第1页
第1页 / 共47页
股票在线交易模拟系统设计与实现.docx_第2页
第2页 / 共47页
股票在线交易模拟系统设计与实现.docx_第3页
第3页 / 共47页
股票在线交易模拟系统设计与实现.docx_第4页
第4页 / 共47页
股票在线交易模拟系统设计与实现.docx_第5页
第5页 / 共47页
点击查看更多>>
下载资源
资源描述

股票在线交易模拟系统设计与实现.docx

《股票在线交易模拟系统设计与实现.docx》由会员分享,可在线阅读,更多相关《股票在线交易模拟系统设计与实现.docx(47页珍藏版)》请在冰豆网上搜索。

股票在线交易模拟系统设计与实现.docx

股票在线交易模拟系统设计与实现

 

股票在线交易模拟系统设计与实现

作者:

杨国强

学号:

200452020

班级:

信管0401

指导老师:

王莉娟

职称:

讲师

 

摘要

本文首先介绍了J2EE平台的体系架构,及基于该平台而诞生,并被广泛应用的MVC(model—view—controller)开发模型。

其次,简要描述了系统开发过程中使用到的关键技术—struts的原理及配置的核心代码。

在需求分析阶段,抽象出系统的功能结构图,并建立了数据库表结构及关系模型。

基于以上技术背景及系统需求,形成了开发规范。

其中包括文档、变量和数据表的命名规范,代码结构规范,及文件结构规范。

同时提出了系统开发所需的软、硬件环境需求。

然后,依据需求文档,逐一实现各个功能模块,并附带相应的核心代码,加以阐述详细设计过程和实现细节。

最后,编写简要测试用例,完善系统,以期达到预结果,完成系统的设计与实现。

关键词:

J2EE、MVC、股票交易

Abstract

ThispaperfirstintroducedtheJ2EEplatformarchitectureandMVC(model-view-controller)developmentmodel,basedontheJ2EEplatformandwaswidelyused.Second,abriefdescriptionofthesystemtousethekeytechnologiesintheprocessofdeveloping,includingstrutsandthecorecodeofconfiguration.Intheanalysisofrequirementstage,thefunctionalstructureofthesystemwasabstracted,withtheestablishingdatabasestructureandmodel.Basedontheabovetechnicalbackgroundandsystemrequirements,thedevelopmentofastandardizedwasformed.Itincludesthedocuments,datasheetsandvariablenamingstandards,codeofnorms,standardsandfilestructure.Atthesametime,thesoftwareandhardwareenvironmentneedinginthesystemwasconstructed.Basedondemanddocuments,Iachievedthevariousfunctionalmodulesonebyonecorrespondingwiththecorecode,todescribethedetaildesignprocessandtheachievementofthedetailsclearly.Finally,Iprovidedabrieftestcasetofindbugsinthesystem,improveandcompletethedesignandimplementation.

Keywords:

J2EE、MVC、stocktrade

 

目录:

第1章绪论

在jsp、servlet技术的推动下,javaweb开发进入一个新的时代,但是jsp和servlet在代码重用性上表现并突出,而且造成了java代码与前台的HTML代码的强烈耦合性,使得系统维护起来很困难,由此出现了框架技术,其中以struts框架为主要代表,jakarta-struts框架是Apache软件组织提供的一项开放源代码项目,它为javaweb提供了模型---视图---控制(Model---View---Controller,MVC)框架,尤其适合大型项目的开发,目前Struts版本为1.2。

本文研究了基于J2EE平台B/S架构的股票交易系统的设计与实现。

不仅模拟了股票交易的流程,同时也模拟了运行环境。

第1.1节课题意义

我国的股票市场,从沪、深两个交易所成立日算起,已有十多年的历史。

虽然中国股票市场具有与生俱来的制度性缺陷,但我们不能否定股票市场对中国经济增长的积极作用,它的跨越式的发展为国有企业改革和国民经济的持续健康发展做出了积极的贡献。

总体上看,中国股票市场正在不断规范中得到较快发展,那么我们就应该以发展的眼光看待中国股票市场的发展,在完善有关法规和规范市场主体的前提下,进一步发展和壮大股票市场,使其在国民经济的发展中发挥更大的作用。

二十一世纪是知识化、信息化的网络时代。

计算机信息技术的使用对股票市场的发展空间带来了质的变革,极大地拓展了股票市场的时空界限,提高了人们对股票软件产品的学习兴趣和利用效率。

以网络手段来获得股票数据资源的方式和利用网络作为基本的操作股票的形式,实现以资源共享为核心的全新的股票模拟交易方式,必将成为众多股民涉足股市前的必修课,并将成为新世纪的主流[16]。

模拟交易系统中可以自行设立上市公司,通过完全"独立"的撮合过程,完成股票交易。

由于这种模拟交易的对象和交易过程都是"自成体系"的,与真实股票市场完全"脱钩",真实股市中股票价格变动不会对本系统的股票价格产生任何影响[13]。

由于模拟交易的独立性和完整性,参与操作的使用者可以清楚地了解股票价格的形成过程及市场(如庄家)运作机制,同时也为使用者提供了一个在资本市场中"角色扮演"的机会,在科研、教学及系统的可扩展性等方面优于前一种方式。

这种方式更能够帮助使用者掌握股票交易系统的内在原理和运行机制,全面地熟悉上市公司的评价、股票的发行、证券品种的创建、市场投资者博弈及股价的形成原里等知识,为以后参与资本市场运作积累宝贵的实战经验[6]。

第1.2节目前研究现状

虚拟市场的研究

市场模拟即虚拟市场研究是目前较为流行的一种研究方法,主要应用于在市场微观结构研究和学习行为等。

主要方法是构造虚拟经济市场,设计虚拟经济人行为,编制计算机程序,利用计算机技术进行的一种研究方法[1]。

计算机模拟市场使得研究者可以在受控的环境中研究市场微观结构和学习行为的各种理论。

与多时期交易行为过程几乎从来都无法清楚的进行建模的真人试验(human-basedexperiment)不同,虚拟经济人模型(agent-basedmodel)可以很容易容纳复杂的学习行为、不对称信息、异质偏好、特殊的直觉(adhocheuristics)等。

Garman(1976)、Cohen等(1983)、Hakansson等(1990)是金融市场虚拟经济人模型研究的先驱。

Gode和Sunder(1993)利用这一框架描述了竞争市场的一个显著特点:

即使没有任何形式的学习或者智力,在预算约束始终满足的前提下,随机交易的经济人最终收敛到了理性预期均衡[10]。

另外一些学者通过限制他们给出的买卖报价的幅度给Gode和Sunder(1993)的零智力(zero-intelligence,ZI)交易人增加了不同程度的智力。

通常这些限制包括最近观测的交易或者报价的某些函数[8]。

例如,Jama和lSunder(1996)、Cliff和Bruten(1997),他们都引入了简单的直觉来限制和改善那种简单的随机报价。

更多学者开始研究交易行为随时间发展得更加复杂的计算机模拟市场。

LeBaron(2000)总结了不少这样的计算机模拟的市场。

这些模拟试图研究长期的市场现象以及短期的交易行为,并且是在个人层次上建立行为的理论[12]。

存在问题和不足

系统实现了股价的实时更新,对特定的股票满足了虚拟交易。

但用户在买卖过程中,无法参考该股票的历史价格走势,进而无法对未来价格做出预测。

在选择某只股票,作为购买对象的过程中,用户只能在事先已知股票代码的前提下,才可获得该股票明细,但无法看到其价格涨跌情况及交易数量。

 

第2章系统规划与需求分析

本章主要结合系统平台的需求,提出平台的模块设计方案,并对模块的各功能进行描述。

第2.1节系统描述

系统实现股价的实时更新,以及少量客户对特定几只股票的买卖。

客户除可买卖股票外,也可对帐户余额进行更改。

以期模拟股票交易流程。

系统主要包括以下模块:

2.1.1用户管理模块

用户是整个交易平台的主体,基于系统的安全性考虑,用户必须注册才能参与互动问答,用户在未登录的情况下,不能进行估价查询或者买卖股票。

用户可以注册成为新的帐户,登录系统。

由于系统只是模拟股票交易,所有注册用户都未设置登录密码。

在数据库中的account表中,只保存了注册用户的登录名。

用户登录后,可以对自己的帐户信息进行查询、更改,包括基本资料和帐户余额。

也可以查询输入股票代码,查询实时股价,并进行买卖,或者查询历史交易记录。

2.1.2股票交易模块

由于系统治旨在对股票交易过程进行模拟,所以在交易时,只能对数据表中预存的几支特定过票进行买卖。

用户可输入特定股票代码,查询股价,并输入数量,进行股票买入。

若买入量总额大于用户账面余额,系统会提示金额不足。

同时,页面显示目前用户手中持有的股票信息。

包括买入价、数量、总额、买入日期等。

在交易历史记录中,列出了用户所有买卖记录,并计算出利润和亏损额。

交易模块是整个系统的核心模块。

其中涉及到的业务处理逻辑、所操作的表、以及页面展示都比较复杂。

对应的数据表包括holding---存储用户所持股票、TransactionHistory----记录用户交易历史。

第2.2节功能描述

2.2.1注册功能

需要在注册页面提交系统要求的简单的基本信息,包括用户名(无重复),密码,性别,电子邮箱。

为了防止个别用户恶意刷系统注册用户,用户还需要输入系统随机生成的验证字符(用jpeg图片显示)。

页面上应当有友好的提示:

用户输入内容的基本格式,例如用户名的限制,不能超过某一长度,允许使用那些字符等等。

如果用户输入的信息有误,需要在注册页面上给出详细的错误信息,以醒目的颜色在错误字段旁边显示即可,尽量不使用弹出框这种不友好的方式,除非像验证码这种只能在服务器端进行校验的字段。

用户完成注册后,提示用户注册成功,进入自动跳转的页面,系统返回到用户在注册之前所停留的页面。

2.2.2登录

注册用户需要在登录时提交自己的用户名和密码,服务器端进行验证后如果有错误发生,应当给出详细的提示,例如用户存在,用户名为空等等。

在登录页面上,需要提供用户进入注册流程的快速通道,以方便非注册用户的使用。

和注册功能相似,用户完成登录后,系统需要自动跳转到用户登录前所停留的页面,有未完成的动作的话自动完成。

不同之处在于,登录结束时不需要出现自动跳转的页面,避免浪费用户时间。

2.2.3股票查询

股票查询功能尚未完善。

查询前,用户需事先知道待查询的某支股票的代码,才可通过系统获得该股票的详细信息。

查询包括对以持有股票的查询和对尚未购买的股票的查询。

查询结果中包括股票代码、股票名称、当前价格(实时更新)等。

若用户已持有该股票,则结果中还包含持有量、买入价和购入时间。

2.2.4股票买卖

用户抛出所持有的股票时,需输入抛出量、抛出价等信息,其具体值都是参考股票查询结果而有用户自定义的。

欲抛出的股票必须是已持有股票,抛出量不得大于持有量。

当用户想购入一定量的某支股票时,也是根据股票查询的结果,输入购入价、购入量等信息。

并保证所需总金额不得高于用户帐户余额。

2.2.5历史查询

用户可对交易的历史记录进行查看,以期总结经验与教训,并可以汇总某段时间的总盈利或亏损额。

在不断总结的过程中,增长自己的积累。

历史信息中展现了用户的交易记录,包括股票代码、状态(买入和卖出)、买入价、卖出价、数量等信息。

2.2.6实时股价

实时股价指的是系统使用其他网站的股价查询接口,每两秒钟刷新一次当前的股价,从而实现了股价的不断更新。

股价的更新提高了模拟交易系统的实用价值,使其更具有学习的意义。

 

第3章系统的总体设计

本章介绍了系统开发过程中采用的J2EE框架,并详细阐述了总体架构和数据库设计方案。

第3.1节J2EE三层架构

基于B/S模式的信息系统一般由三层构成,即用户界面层、业务逻辑层和数据服务层。

J2EE三层架构如图3-1:

图3-1:

J2EE三层架构图

3.1.1用户界面层

该层是系统的人机接口部分,用户和应用程序之间的交流在该层完成。

通过用户界面层,用户可以完成获取数据、输入数据、修改数据、删除数据等一系列操作。

用户界面层也包含了一定的安全机制,用户根据授权范围可以控制数据和机密信息。

作为ASP程序,用户界面是典型的HTML或DHTML(也可能是XML)页面,该层通过HTTP协议与业务逻辑层通信[8]。

3.1.2业务逻辑层

该层是用户界面层和数据服务层的桥梁,它响应用户界面层的用户请求,执行任务并从数据服务层提取数据,然后将必要的数据传送给用户界面层,从而实现用户界面层与数据服务层之间的交互。

该层包含了在应用程序中执行关键处理的组件,这些应用程序遵守所有的业务规则及限制,典型的业务逻辑既可以体现在一个简单应用程序的ASP文件中,也可以很好地体现在COM组件中。

3.1.3数据服务层

该层就是数据库管理系统(DBMS),它负责管理数据库中数据的读写。

系统采用现在主流的关系数据库管理系统(RD2BMS),从业务逻辑层传送到数据服务层使用SQL语言,使其能迅速执行大量数据的更新和检索[11]。

系统的三层体系结构三层中的核心是业务逻辑层,它将原本在两层客户机/服务器中客户端上的一些有关逻辑运算处理部分独立出来,并安装在业务逻辑层。

由于所有的商业运算规则集中在一个地方,所以当运算规则需修改的时候,只需修改业务逻辑层就能在用户界面层得到体现,而不需要修改每台客户机上的程序,这是三层B/S结构的特点所在。

三层B/S结构的应用,最大限度地保证了数据的唯一性和安全性。

第3.2节架构设计

3.2.1MVC开发

MVC模式减弱了业务逻辑接口和数据接口之间的耦合。

“Model”代表的是应用的业务逻辑(通过JavaBean,EJB组件实现),“View”是应用的表示面(由JSP页面产生),“Controller”是提供应用的处理过程控制(一般是一个Servlet),通过这种设计模型把应用逻辑,处理过程和显示逻辑分成不同的组件实现。

这些组件可以进行交互和重用[9]。

三者的关系如图3-2所示:

图3-2:

MVC模型图

我们可以看出,MVC减弱了业务逻辑接口和数据接口之间的耦合,并且让视图层更富于变化。

在MVC模式中,三个层各司其职,所以如果一旦哪一层的需求发生了变化,就只需要更改相应的层中的代码而不会影响到其它层中的代码。

同时,由于按层把系统分开,那么就能更好的实现开发中的分工。

网页设计人员可独立开发视图层中的JSP,对业务熟悉的开发人员可开发业务层,而其它开发人员可开发控制层。

而且,分层后更有利于组件的重用。

如控制层可独立成一个能用的组件,视图层也可做成通用的操作界面。

针对系统的特点,在设计过程中,对传统的MVC做了层次上的细化,使之更适合本系统。

对于传统的MVC来说,最大的优点其实是把视图层从复杂的业务逻辑中提取了出来,并引入控制层的概念,实现视同层与业务逻辑的交互。

而对于模型层,MVC提出者的定义是:

系统的所有应用逻辑。

在实际应用中,这是一个很宽的概念,应当根据系统自身的特点做适度的调整,否则容易造成模型层的过度臃肿,违背MVC的“松耦合”的初衷。

当前基于B/S的系统的开发过程中,从我的理解来看,系统的所有应用逻辑主要分为两大类:

纯粹的业务逻辑和持久化相关的业务逻辑。

举个简单的例子来说明:

几乎所有的系统都有“用户登录”的功能,该功能的在服务器端的主要流程如图3-3所示:

图3-3:

简化的用户登录流程图

从流程图中可以看出,只有“查询用户”属于持久化的业务逻辑,验证用户存在和验证用户密码都属于纯粹的业务逻辑。

对于绝大多数系统来说,持久化的业务逻辑是通用的,即CRUD——Create(创建),Read(读取),Update(修改),Delete(查询)。

对于以CRUD操作为主的CMS、MIS系统,纯粹的业务逻辑相对简单,传统的MVC模式完全可以胜任;而对于类似系统的面向大众的服务产品来说,系统会更注重用户的体验,用户操作的方式将会更丰富,更生动,因而会引入大量的非CRUD的高端业务逻辑,在此条件下,将底层数据的访问工作(即持久化的操作)剥离出来是非常有必要的。

从我的理解来看,在系统开发过程中,将底层数据访问的工作独立出来作为单独的层次实现,实际上是对MVC模式的进一步解耦,并没有违背其基本思想,相反是针对系统自身特点对MVC模式的活学活用[14]。

在系统的设计过程中,采用了这样的思路:

MVC的模型层被拆分为两个独立的层次:

服务层(即纯粹的业务逻辑层)和DAO层(数据持久化层)。

并且,在服务层应用了J2EE的基本设计模式——服务定位(ServiceLocator)模式,而在DAO层则应用J2EE的DAO(DataAccessObject)模式。

如图3-4所示:

图3-4:

系统的MVC

这样以来,系统的内聚和耦合度被降低到更低的层次;系统的层次划分更加清晰、简洁;更重要的是,这样的设计并不会影响系统的开发效率和运行性能,而仅仅是在设计阶段增加了工作量,当然这个代价对整个系统来说,是很值得的。

3.2.2struts技术应用

Struts是MVC的一种实现,它将Servlet和JSP标记(属于J2EE规范)用作实现的一部分。

Struts[10]继承了MVC的各项特性,并根据J2EE的特点,做了相应的变化与扩展。

Struts的工作原理,如下图3-5所示:

struts-config.xml

图3-5:

Struts工作原理

控制:

通过图2-2可以看到有一个XML文件struts-config.xml,与之相关联的是Controller,在Struts中,承担MVC中Controller角色的是一个Servlet,叫ActionServlet。

ActionServlet是一个通用的控制组件。

这个控制组件提供了处理所有发送到Struts的HTTP请求的入口点[15]。

它截取和分发这些请求到相应的动作类(这些动作类都是Action类的子类)。

另外控制组件也负责用相应的请求参数填充ActionFrom(通常称之为FromBean),并传给动作类(通常称之为ActionBean)。

动作类实现核心商业逻辑,它可以访问JavaBean或调用EJB。

最后动作类把控制权传给后续的JSP文件,后者生成视图。

所有这些控制逻辑利用Struts-config.xml文件来配置。

其主体结构如图3-6所示:

图3-6:

系统文件结构图

从图中可以看出,在系统中所有服务对象基于J2EE三层体系结构的,这样的好处是各层之间保持了很好的独立性,而互相之间的调用是通过规范的接口来实现的。

及时某一层的程序发生了变化,只需要修改调用他的接口,就可以保证另外两层的使用,二不需要做任何更改。

三层之间的互相调用是通过application.xml文件配置的:

xmlversion="1.0"encoding="UTF-8"?

>

xsi="http:

//www.w3.org/2001/XMLSchema-instance"xsi:

schemaLocation="

TradeApplication

TradeWeb.war

Trade/web

TradeEJB.jar

TradeApplicationAdministrators

TradeApplicationAdministrators

TradeAdmin

Struts应用采用两个基于XML的配置文件来配置,分别是web.xml和struts-cofig.xml文件.web.xml文件是配置所有web应用的而struts-config.xml文件是struts专用的配置文件,事实上也是可以根据需要给这个配置文件起其他名称的.

为Struts应用配置Web.xml文件:

首先最重要的一步是配置ActionServlet,这个用标签的servlet-name属性起一个名字叫action,然后用servlet-class属性指定ActionServlet的类.然后用标签的servlet-name属性指定action,在用url-pattern指定接收范围是*.do的请求.不管应用中包含了多少子应用,都只需要配置一个ActionServlet,类来出来应用中的不同的功能,其实者就是不必要的,因为Servlet本身就是多线程的,而且目前Struts只允许配置一个ActionServlet.声明ActionServlet的初始化参数:

子元素用来配置Servlet的初始化参数.param-name设置config参数名.param-value设置struts-config.xml的路径参数值.

配置欢迎使用清单:

如果客户访问Web的时候值是访问了WEB应用的根目录URL.没有具体的指定文件,Web会自动调用Web的欢迎文件.元素来配置的.通过其中的欢迎页面来配置.

配置错误处理:

尽管Struts框架功能强大的错误处理机制,但是不能保证处理所有的错误或者异常.当错误发生时,如果框架不能处理这种错误,把错误抛弃给Web容器,在默认的情况下web容器会想客户端返回错误信息.如果想避免让客户看到原始的错误信息,可以在Web应用发布描述文件中配置元素.通过404来定义错误的类型.然后通过要处理错误的JSP页面来对错误进行处理.还可以用来设置异常,然后通过来处理

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

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1