基于JAVA的虚拟股票交易系统的研究与实现.docx

上传人:牧羊曲112 文档编号:1649003 上传时间:2022-12-12 格式:DOCX 页数:42 大小:429.35KB
返回 下载 相关 举报
基于JAVA的虚拟股票交易系统的研究与实现.docx_第1页
第1页 / 共42页
基于JAVA的虚拟股票交易系统的研究与实现.docx_第2页
第2页 / 共42页
基于JAVA的虚拟股票交易系统的研究与实现.docx_第3页
第3页 / 共42页
基于JAVA的虚拟股票交易系统的研究与实现.docx_第4页
第4页 / 共42页
基于JAVA的虚拟股票交易系统的研究与实现.docx_第5页
第5页 / 共42页
点击查看更多>>
资源描述

《基于JAVA的虚拟股票交易系统的研究与实现.docx》由会员分享,可在线阅读,更多相关《基于JAVA的虚拟股票交易系统的研究与实现.docx(42页珍藏版)》请在三一办公上搜索。

1、编号2012150324研究类型应用研究 分类号 TP39学士学位论文(设计)Bachelors Thesis论文题目基于Java的虚拟股票交易系统的设计与实现作者姓名张浩学号2008115020324所在院系 计算机科学与技术学院学科专业名称通信工程导师及职称黄琳 讲师论文答辩时间2012年5月12日湖北师范学院本科毕业论文(设计)诚信承诺书中文题目:基于Java的虚拟股票交易系统的设计与实现外文题目:stock trading system学生姓名张浩学 号2008115020324院系专业计算机科学与技术学院通信工程班 级0803学 生 承 诺我承诺在毕业论文(设计)活动中遵守学校有关规

2、定,恪守学术规范,本人毕业论文(设计)内容除特别注明和引用外,均为本人观点,不存在剽窃、抄袭他人学术成果,伪造、篡改实验数据的情况。如有违规行为,我愿承担一切责任,接受学校的处理。 学生(签名):年 月 日指导教师承诺我承诺在指导学生毕业论文(设计)活动中遵守学校有关规定,恪守学术规范,经过本人核查,该生毕业论文(设计)内容除特别注明和引用外,均为该生本人观点,不存在剽窃、抄袭他人学术成果,伪造、篡改实验数据的现象。 指导教师(签名): 年 月 日基于Java的虚拟股票交易系统的设计与实现 张浩(指导教师:黄琳)(湖北师范学院 计算机科学与技术学院 0803班 湖北 黄石 435002)摘要:

3、此股票交易系统是集注册、登录、查询、浏览、更新及添加功能为一体的系统。除了能实现增删改查功能以外,还能进行验证用户登录和退出功能,提取出所填写的信息并与数据库进行比较来实现;该系统严格按照标准软件开发MVC的开发流程,采用Servlet+JSP技术和 MySQL数据库进行设计,开发并实现。用户通过注册,登录到该系统后可以进行上市股票的交易,修改个人资料等等。该系统操作简单,安全可靠,能够满足绝大多数人的需求。关键词:股票交易系统;JAVA;HttpServlet;MySQL数据库;面向对象中图分类号:TQ351. 2 Abstract: The functions of the stock t

4、rading system includes login,register,search, browse,update and add. Besides the function,add,delete,update,search,the stock trading system can check the register and exit of users.The system realize thefunction by comparing the message written by users with database.The system in software engineeri

5、ng object-oriented development and the development process.The HttpServlet JSP technology and mysql database on a design,development and implementation.The users through a registered and logged on to the system,you can trade the stock and change yourself information.The system is easy operation and

6、safe,also able to meet the demand of most people.Key words: Stock trading system;Java;HttpServlet;MySQL database; Object-oriented目 录1 前言11.1 课题研究背景与意义12 系统说明12.1 虚拟股票交易系统的功能12.2 系统开发技术22.3 系统开发工具及环境22.4 系统开发方式32.5 可行性分析33 系统分析43.1 系统结构43.2 系统描述53.3 总体功能模块63.4 系统用例模型74 系统设计84.1 功能模块细化84.2 数据库设计84.3 系

7、统类设计115 系统运行和测试335.1 系统首页335.2 管理员登录页面335.3 新用户注册页面345.4 系统功能页面355.5 用户所持股票页面355.6 上市股票页面365.7 账户余额显示页面375.8 用户个人信息修改页面376 结论386.1 系统的优缺点38结束语38谢辞39 湖北师范学院计算机科学与技术学院2012届学士学位论文基于Java的虚拟股票交易系统的设计与实现1 前言1.1课题研究背景与意义近些年来,随着信息化社会的快速推进以及网上交易系统的不断普及与推广,特别是股票市场近些年来的蓬勃发展,再加上各种网络技术的逐步成熟,国内股票市场发展十分迅速,催生出了诸如上海

8、证券交易所和深圳证劵交易所等国内知名的股票交易中心,同时也吸引了越来越多的股票热爱者。当然,问题也接踵而来,由于国内股票市场刚刚起步,就缺少统一而且全面的交易平台,导致去多人对于股票的认识还很匮乏。作为一名计算机学院的学院,很希望能尽自己一份微薄的力量去为大众服务,基于Java的虚拟股票交易系统就是为了解决上述问题而进行开发的。该系统严格按照软件工程中面向对象的开发方法和开发流程。并且该系统内容丰富,安全可靠,操作简单,能够充分满足绝大多数股票爱好者的追求。2 系统说明2.1虚拟股票交易系统的功能根据各大网站收集的网民的需求和本人对股票交易的一些认识进行全面的分析,该虚拟股票交易系统只向用户开

9、放前台操作一种方式,提供简单、友好的用户界面,以保证用户体验的便捷性。用户在注册该系统之后,只需输入自己的用户名和密码,即可登录到该系统进行股票信息查询、股票买入、股票卖出、交易明细查询、个人信息修改等操作。虚拟股票交易系统的以上功能是通过一系列的JSP网页与MySQL数据库动态交互来实现的。系统设计的主要工作在于系统数据库的设计和JSP页面的布局。2.2 系统开发技术J2EE全称是JAVA 2平台企业版(JAVA 2 Platform Enterprise Edition),它是由美国SUN公司(已于2009年被美国甲骨文公司收购)提出的最新JAVA标准。利用J2EE技术,公司企业能够建立完

10、全符合自己商业逻辑的服务架构,从而以最短的相应时间、最低的投入,为最大范围的客户、雇员及供货商提供最方便的服务,而且这些服务是高质量、安全和可扩展的。J2EE技术的基础就是核心Java平台或Java 2平台的标准版,J2EE不仅巩固了JAVA标准版中的许多优点,例如“编写一次、随处运行”的特性、方便存取数据库的JDBC API、CORBA技术以及能够在Intemet应用中保护数据的安全模式等等,同时还提供了对 EJB(Enterprise JavaBeans)、Java Servlets API、JSP(Java Server Pages)以及XML技术的全面支持。J2EE体系结构提供中间层集

11、成框架用来满足无需太多费用而又需要高可用性、高可靠性以及可扩展性的应用的需求。通过提供统一的开发平台,J2EE降低了开发多层应用的费用和复杂性,同时提供对现有应用程序集成强有力支持,完全支持Enterprise JavaBeans,有良好的向导支持打包和部署应用,添加目录支持,增强了安全机制,提高了性能。J2EE使用多层的分布式应用模型,应用逻辑按功能划分为组件,各个应用组件根据他们所在的层分布在不同的机器上。事实上,SUN设计J2EE的初衷正是为了解决两层模式CS(ClientServer)的弊端,在传统模式中,客户端担当了过多的角色而显得臃肿,在这种模式中,第一次部署的时候比较容易,但难于

12、升级或改进,可伸展性也不理想,而且经常基于某种专有的协议,通常是某种数据库协议。它使得重用业务逻辑和界面逻辑非常困难。而网上交易系统却恰恰要求应用程序有很高的可扩展性、组件有可重用性以及系统有很强的安全性等1。2.3 系统开发工具及环境此次要开发的虚拟股票交易系统是一个在Internet网络环境下运行的系统,因此我采用的技术有Servlet+JSP,开发工具为MyEclipse、应用服务器Tomcat、数据库MySQL。MyEclipse企业级工作平台(MyEclipse Enterprise Workbench,简称MyEclipse)是对Eclipse IDE的扩展,利用它我们可以在数据库

13、和JavaEE的开发、发布,以及应用程序服务器的整合方面极大地提高工作效率。它是功能丰富的JavaEE集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持HTML、JSF、CSS、Javascript、SQL。Tomcat是Apache软件基金会(Apache Software Foundation)的Jakarta项目中的一个核心项目,由Apache、Sun和其他一些公司及个人共同开发而成。Tomcat是一个轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选。实际上Tomcat部分是Apache服务器的扩展,但它是独立运行的,所以当

14、你运行tomcat时,它实际上作为一个与Apache独立的进程单独运行的。MySQL是一个小型关系型数据库管理系统,开发者为瑞典MySQL AB公司。在2008年1月16号被Sun公司收购,而2009年,SUN又被Oracle收购。目前MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。2.4 系统开发方式本课题是B/S (Browser/Server)即浏览器和服务器结构的软件项目,采用了MVC(Model View Controller)模式进行设计。

15、其中,Model层实现系统中的业务逻辑,用JavaBean(实体类)来实现;View层用于与用户的交互,用JSP来实现;Controller层是Model与View之间沟通的桥梁,它可以分派用户的请求并选择恰当的视图以用于显示,同时它也可以解释用户的输入并将它们映射为模型层可执行的操作。2.5 可行性分析针对于自己对股票交易市场的理解和观测,再加上和同学的交流,大量资料的查阅,最终完成的交易系统基本上能够满足用户的需求。由于本人在大学期间有过对JAVA技术的学习,而且在公司实习阶段一直在做J2EE方面的开发,对这项技术也有了一定的掌握程度,所以在开发该系统的过程中还是比较顺利的。3 系统分析3

16、.1 系统结构系统结构是系统的最高层概念。在开发虚拟股票交易系统的实例之前,应该先选择或定义好一个合适的系统结构。该系统主要采用MVC三层模式,分别是模型(Model)层、视图(View)层和控制(Controller)层。结构模型如图3.1所示:图3.1 MVC三层模式模型(Model)层实现系统中的业务逻辑。在MVC的三个部件中,模型(Model)层拥有最多的处理任务。封装的是数据源和所有基于对这些数据的操作。JavaBean分为业务类和数据实体,业务类处理业务数据、数据实体承载数据,基本上大多数的项目都是使用这种MVC的实现模式。在一个组件中,Model往往表示组件的状态和操作状态的方法

17、,如处理请求执行业务逻辑、访问数据库、封装数据等等。封装的数据和行为必须是独立于任何的表现,提高可重复性,可以独立的测试,不要包含任何的Servlet和JSP的API2。视图(View)层用于与用户的交互,封装的是对数据源Model的一种显示。一个模型可以由多个视图,而一个视图理论上也可以和不同的模型关联起来,通常用JSP来实现。JSP(Java Server Pages)是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。JSP技术有点类似ASP技术,它是在传统的网页HTML文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JS

18、P标记(tag),从而形成JSP文件(*.jsp)。用JSP开发的Web应用是跨平台的,既能在Linux下运行,也能在其他操作系统上运行3。控制(Controller)层封装的是外界作用于模型的操作。通常,这些操作会转发到模型上,并调用模型中相应的一个或者多个方法。一般Controller在Model和View之间起到了沟通的作用,处理用户在View上的输入,并转发给Model。这样Model和View两者之间可以做到松散耦合,甚至可以彼此不知道对方,而由Controller连接起这两个部分4。3.2 系统描述系统描述初步界定了系统的范围和功能。为了有一个更加清晰的开发思路,现用自然语言对整个

19、虚拟股票交易系统进行详细地描述。3.2.1 总述该虚拟股票交易系统主要有管理员登录进行管理,用户注册、用户登录、用户操作、安全退出几大功能模块。用户在注册该系统之后,只需输入自己的SSN和密码,即可登录到该系统进行股票信息查询、股票买入、股票卖出、交易明细查询、个人信息修改等操作。而管理员是设定好的,管理员登陆后可以进行系统的管理和维护。3.2.2 分述接下来,本人将对上述功能模块进行详细的描述。管理员登录进行管理:因本股票交易系统为虚拟交易系统,股票的名称,价格,用户的信息都来自于数据库,并非真实数据,只是本人的一次模拟,所以在此系统中增加的一项管理员的管理功能。管理员可以进行用户信息的修改

20、,非法用户的删除操作。用户注册:如果是新用户首次来到本系统,先要进行用户注册,填写个人详细信息,SSN和密码是用户登陆的权限。本系统因未设置账户充值功能,所以系统会默认新注册的用户账户余额上有2000元,以便用户进行股票的购买,抛售操作。3、用户登录:如果你已经顺利完成了注册,那么系统将会自动跳转到“用户登录”页面,你可以马上尝试登录。这里只需要正确地输入你的SSN和密码,就可以成功地查看到你的所持股票信息、上市股票信息、账户余额和进行修改个人信息,这个时候,你将有权对这些模块进行相关操作。4、用户操作:用户在成功登录到该系统后,将可以对此模块进行操作。在此模块中,用户可以查看到自己股票持有信

21、息、价格信息,还可以进行相应的股票交易,参照该股票最近的价格波动选择是否抛售,购买该股票。5、安全退出:如果用户完成相关体验后,想要退出该系统,可以点击“退出”按钮,页面会自动跳转到登录界面。在不重新登录的情况下,用户跟普通游客一样,不能继续进行进一步操作。3.3 总体功能模块该虚拟股票交易系统,主要是为了满足用户对股票交易的体验,要求操作简单快捷、界面整洁大方,因此必须要设计一个好的程序架构和运作流程。从上述系统描述中可以大致了解到整个虚拟股票交易系统的总体功能模块划分及流程图概况。如图3.3.1-3.3.2所示。3.3.1 总体功能模块 修改个人信息用户注册虚拟股票交易系统 上市股票 安全

22、退出 账户余额 所持股票 用户登陆图3.3.1 总体功能模块3.3.2 用户登录流程显示功能页面图3.3.2 用户登录流程进入管理员登录页面3.3.3 管理员登录流程显示功能页面图3.3.3 管理员登录流程3.4 系统用例模型用例模型是整个系统开发过程中的起点,并驱动建模的全过程。用例模型包括系统的用例图及用例描述。在设计系统用例模型之前,首先要识别活动者和用例。4 系统设计4.1 功能模块细化由上述的系统分析用例模型可以得出系统的细化功能模块。4.1.2 股票交易模块图4.1.2 股票交易模块功能细化4.1.3 个人信息修改模块图4.1.3 个人信息修改模块功能细化4.2 数据库设计4.2.

23、1 数据表设计表名功能说明stock股票的详细信息表customer用户的个人详细信息表admi管理员的个人信息表buy用户和股票的关联表sprice股票价格的波动表 1. stock表名stock列名数据类型(精度范围)空/非空约束条件其它说明 id INTNOT NULLIDENTITY(1,1) PRIMARY KEY sname VARCHAR(45) spriceDOUBLE补充说明 2. customer表名customer列名数据类型(精度范围)空/非空约束条件其它说明 id INTNOT NULLIDENTITY(1,1) PRIMARY KEY cname VARCHAR(4

24、5) cssn VARCHAR(45) address VARCHAR(45)pw VARCHAR(45) money DOUBLE tele VARCHAR(45)补充说明 3. buy表名vet_specialties列名数据类型(精度范围)空/非空约束条件其它说明idINTNOT NULLIDENTITY(1,1) PRIMARY KEYc_idINTNOT NULLforeign key REFERENCES customer(id)s_idINTNOT NULLforeign key REFERENCES stock(id)numINT补充说明 4. admi表名types列名数据类

25、型(精度范围)空/非空约束条件其它说明 idINTNOT NULLIDENTITY(1,1) PRIMARY KEY aname VARCHAR(45)apw VARCHAR(45)补充说明 5. sprice表名owners列名数据类型(精度范围)空/非空约束条件其它说明 id INTNOT NULLIDENTITY(1,1) PRIMARY KEYs_id INT(10)NOT NULLforeign key REFERENCES stock(id)priceDOUBLE补充说明4.3 系统类设计4.3.1 功能层Dao工具类的设计该类主要负责数据库的操作,包括了与数据库的连接,对数据库进

26、行增、删、改、查等操作。主要代码如下:JDBC连接工厂类(DataBase)package com.zhanghao.dao;import java.sql.Connection;import java.sql.DriverManager;/连接数据库public class DataBase private static Connection con=null;public static Connection getConnection()throws Exceptionif(con=null)Class.forName(com.mysql.jdbc.Driver);con=DriverMa

27、nager.getConnection(jdbc:mysql:/localhost:3306/zhanghao, root, 123);return con;2、对于数据库中管理员,用户,交易,股票表的操作。(由于此操作过多,只选择CustomerDao进行展示)package com.zhanghao.dao;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.util.Vector;import com.zhanghao.dto.Buy;import com.zhanghao.dto.Custome

28、r;public class CustomerDao /登陆验证ssn ,pwpublic static boolean CusLogin(Customer c)throws ExceptionPreparedStatement ps=DataBase.getConnection().prepareStatement(select * from customer where cssn=? and pw=?);ps.setString(1, c.getSsn();ps.setString(2, c.getPw();ResultSet rs=ps.executeQuery();boolean fl

29、ag=rs.next();rs.close();ps.close();ps=null;return flag;/添加新用户public static void addCus(Customer c)throws ExceptionPreparedStatement ps=DataBase.getConnection().prepareStatement(insert into customer(cname,cssn,address,pw,money,tele) values(?,?,?,?,?,?);ps.setString(1, c.getName();ps.setString(2, c.ge

30、tSsn();ps.setString(3, c.getAddr();ps.setString(4, c.getPw();ps.setDouble(5, c.getMoney();ps.setString(6, c.getTele();ps.executeUpdate();ps.close();ps=null;/返回对象为Customer,得到用户姓名public static Customer getName(Customer c)throws ExceptionPreparedStatement ps=DataBase.getConnection().prepareStatement(se

31、lect * from customer where cssn=? and pw=?);ps.setString(1, c.getSsn();ps.setString(2, c.getPw();ResultSet rs=ps.executeQuery();Customer customer=null;while(rs.next()customer=new Customer(rs.getInt(id),rs.getString(cname),rs.getDouble(money);rs.close();ps.close();ps=null;return customer;/查看所有用户信息pub

32、lic static Vector getCust()throws ExceptionPreparedStatement ps=DataBase.getConnection().prepareStatement(select * from customer);ResultSet rs=ps.executeQuery();Vector v=new Vector();Customer c1=null;while(rs.next()c1=new Customer();c1.setId(rs.getInt(id);c1.setName(rs.getString(cname);c1.setAddr(rs

33、.getString(address);c1.setSsn(rs.getString(cssn);c1.setPw(rs.getString(pw);c1.setMoney(rs.getDouble(money);c1.setTele(rs.getString(tele);v.addElement(c1);rs.close();ps.close();ps=null;return v;/首页查询账户余额的方法public static Vector getBuy(int a)throws ExceptionPreparedStatement ps=DataBase.getConnection()

34、.prepareStatement(select money from customer where id=?);ps.setInt(1, a);ResultSet rs=ps.executeQuery();Vector v=new Vector();while(rs.next()Customer c=new Customer();c.setMoney(rs.getDouble(money);v.addElement(c);rs.close();ps.close();ps=null;return v;/查找指定用户手中的账户余额/先得到用户对象/买卖股票操作时,后台调用得到账户余额的方法pub

35、lic static Customer getBuy1(int a)throws ExceptionPreparedStatement ps=DataBase.getConnection().prepareStatement(select money from customer where id=?);ps.setInt(1, a);ResultSet rs=ps.executeQuery();Customer c=null;while(rs.next()c=new Customer(rs.getDouble(money);rs.close();ps.close();ps=null;retur

36、n c;/账户余额的变化public static void getSellMoney(Customer c)throws ExceptionPreparedStatement ps=DataBase.getConnection().prepareStatement(update customer set money=money+? where id=? );ps.setDouble(1, c.getMoney();ps.setInt(2, c.getId();ps.executeUpdate();ps.close();ps=null;/当用户购买股票时,账户余额发生变化public stat

37、ic void getBuyMoney(Customer c)throws ExceptionPreparedStatement ps=DataBase.getConnection().prepareStatement(update customer set money=money-? where id=? );ps.setDouble(1, c.getMoney();ps.setInt(2, c.getId();ps.executeUpdate();ps.close();ps=null;/得到指定用户的个人信息public static Vector getCus(int a)throws

38、ExceptionPreparedStatement ps=DataBase.getConnection().prepareStatement(select * from customer where id=?);ps.setInt(1, a);ResultSet rs=ps.executeQuery();Vector v=new Vector();while(rs.next()Customer c=new Customer();c.setId(rs.getInt(id);c.setName(rs.getString(cname);c.setAddr(rs.getString(address)

39、;c.setSsn(rs.getString(cssn);c.setTele(rs.getString(tele);c.setPw(rs.getString(pw);v.addElement(c);rs.close();ps.close();ps=null;return v;/修改指定用户的个人信息public static void updateCus(Customer c)throws ExceptionPreparedStatement ps=DataBase.getConnection().prepareStatement(update customer set address=?,t

40、ele=? where id=?);ps.setString(1, c.getAddr();ps.setString(2, c.getTele();ps.setInt(3, c.getId();ps.executeUpdate();ps.close();ps=null;/删除指定用户public static void delCus(int a)throws ExceptionPreparedStatement ps=DataBase.getConnection().prepareStatement(delete from customer where id=? );ps.setInt(1,

41、a);ps.executeUpdate();ps.close();ps=null;/登陆注册ssn是否存在public static boolean ifSsn(String s)throws ExceptionPreparedStatement ps=DataBase.getConnection().prepareStatement(select * from customer where cssn=?);ps.setString(1, s);ResultSet rs=ps.executeQuery();boolean flag=rs.next();rs.close();ps.close()

42、;ps=null;return flag;/用户修改自己的个人信息public static void updateCus1(Customer c)throws ExceptionPreparedStatement ps=DataBase.getConnection().prepareStatement(update customer set cname=?,pw=?, address=?,tele=? where id=?);ps.setString(1, c.getName();ps.setString(2, c.getPw();ps.setString(3, c.getAddr();ps

43、.setString(4, c.getTele();ps.setInt(5, c.getId();ps.executeUpdate();ps.close();ps=null;4.3.2 模型层Dto工具类的设计模型层中封装了数据库中的所有表对象并建立各个对象的静态调用方法,以便在控制层中很方便的建立新对象(此处列举管理员和用户对象说明)Admi(管理员对象)package com.zhanghao.dto;public class Admi private String name;private int pw;public Admi() super();public Admi(String name, int pw) super();t

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

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


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号