为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

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

2018-09-14 47页 doc 191KB 34阅读

用户头像

is_477730

暂无简介

举报
基于JAVA的虚拟股票交易系统的研究与实现基于JAVA的虚拟股票交易系统的研究与实现 编号 研究类型 应用研究 分类号 2012150324 TP39 Bachelor’s Thesis 基于Java的虚拟股票交易系统的设计与论文题目 实现 作者姓名 张浩 学号 2008115020324 所在院系 计算机科学与技术学院 学科专业名称 通信工程 导师及职称 黄琳 讲师 论文答辩时间 2012年5月12日 湖北师范学院本科毕业论文(设计)诚信承诺书 中文题目:基于Java的虚拟股票交易系统的设计与实现 外文题目:stock trading syst...
基于JAVA的虚拟股票交易系统的研究与实现
基于JAVA的虚拟股票交易系统的研究与实现 编号 研究类型 应用研究 分类号 2012150324 TP39 Bachelor’s Thesis 基于Java的虚拟股票交易系统的设计与目 实现 作者姓名 张浩 学号 2008115020324 所在院系 计算机科学与技术学院 学科专业名称 通信工程 导师及职称 黄琳 讲师 论文答辩时间 2012年5月12日 湖北师范学院本科毕业论文(设计)诚信承诺书 中文题目:基于Java的虚拟股票交易系统的设计与实现 外文题目:stock trading system 学生姓名 张浩 学 号 2008115020324 计算机科学与技术学院 院系专业 班 级 0803 通信工程 学 生 承 诺 我承诺在毕业论文(设计)活动中遵守学校有关规定,恪守学术,本人毕业论文(设计)内容除特别注明和引用外,均为本人观点,不存在剽窃、抄袭他人学术成果,伪造、篡改实验数据的情况。如有违规行为,我愿承担一切责任,接受学校的处理。 学生(签名): 年 月 日 指导教师承诺 我承诺在指导学生毕业论文(设计)活动中遵守学校有关规定,恪守学术规范,经过本人核查,该生毕业论文(设计)内容除特别注明和引用外,均为该生本人观点,不存在剽窃、抄袭他人学术成果,伪造、篡改实验数据的现象。 指导教师(签名): 年 月 日 基于Java的虚拟股票交易系统的设计与实现 张浩(指导教师:黄琳) (湖北师范学院 计算机科学与技术学院 0803班 湖北 黄石 435002) 摘要:此股票交易系统是集注册、登录、查询、浏览、更新及添加功能为一体的 系统。除了能实现增删改查功能以外,还能进行验证用户登录和退出功能, 提取出所填写的信息并与数据库进行比较来实现;该系统严格按照软 件开发MVC的开发流程,采用Servlet+JSP技术和 MySQL数据库进行设 计,开发并实现。用户通过注册,登录到该系统后可以进行上市股票的交 易,修改个人资料等等。该系统操作简单,安全可靠,能够满足绝大多数 人的需求。 关键词:股票交易系统;JAVA;HttpServlet;MySQL数据库;面向对象 中图分类号:TQ351. 2 Abstract: The functions of the stock trading 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 engineering 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 safe,also able to meet the demand of most people. Key words: Stock trading system;Java;HttpServlet;MySQL database; Object-oriented 目 录 1 前言......................................................... 1 1.1 课题研究背景与意义..................................... 1 2 系统说明..................................................... 1 2.1 虚拟股票交易系统的功能................................. 1 2.2 系统开发技术........................................... 2 2.3 系统开发工具及环境..................................... 2 2.4 系统开发方式........................................... 3 5 可行性分析............................................. 3 2. 3 系统分析..................................................... 4 3.1 系统结构............................................... 4 3.2 系统描述............................................... 5 3.3 总体功能模块........................................... 6 3.4 系统用例模型........................................... 7 4 系统设计..................................................... 8 4.1 功能模块细化........................................... 8 4.2 数据库设计............................................. 8 4.3 系统类设计............................................ 11 5 系统运行和测试.............................................. 31 5.1 系统首页.............................................. 32 5.2 管理员登录页面........................................ 32 5.3 新用户注册页面........................................ 33 5.4 系统功能页面.......................................... 33 5.5 用户所持股票页面...................................... 34 5.6 上市股票页面.......................................... 34 5.7 账户余额显示页面...................................... 35 5.8 用户个人信息修改页面.................................. 35 6 结论........................................................ 36 6.1 系统的优缺点.......................................... 36 结束语......................................................... 36 谢辞........................................................... 36 湖北师范学院计算机科学与技术学院2012届学士学位论文 基于Java的虚拟股票交易系统的设计与实现 1 前言 1.1课题研究背景与意义 近些年来,随着信息化社会的快速推进以及网上交易系统的不断普及与推广,特别是股票市场近些年来的蓬勃发展,再加上各种网络技术的逐步成熟,国内股票市场发展十分迅速,催生出了诸如上海证券交易所和深圳证劵交易所等国内知名的股票交易中心,同时也吸引了越来越多的股票热爱者。当然,问题也接踵而来,由于国内股票市场刚刚起步,就缺少统一而且全面的交易平台,导致去多人对于股票的认识还很匮乏。 作为一名计算机学院的学院,很希望能尽自己一份微薄的力量去为大众服务,基于Java的虚拟股票交易系统就是为了解决上述问题而进行开发的。该系统严格按照软件工程中面向对象的开发方法和开发流程。并且该系统内容丰富,安全可靠,操作简单,能够充分满足绝大多数股票爱好者的追求。 2 系统说明 2.1虚拟股票交易系统的功能 根据各大网站收集的网民的需求和本人对股票交易的一些认识进行全面的分析,该虚拟股票交易系统只向用户开放前台操作一种方式,提供简单、友好的用户界面,以保证用户体验的便捷性。用户在注册该系统之后,只需输入自己的用户名和密码,即可登录到该系统进行股票信息查询、股票买入、股票卖出、交易明细查询、个人信息修改等操作。虚拟股票交易系统的以上功能是通过一系列的JSP网页与MySQL数据库动态交互来实现的。系统设计的主要工作在于系统数据库的设计和JSP页面的布局。 1 湖北师范学院计算机科学与技术学院2012届学士学位论文 2.2 系统开发技术 J2EE全称是JAVA 2平台企业版(JAVA 2 Platform Enterprise Edition),它是由美国SUN公司(已于2009年被美国甲骨文公司收购)提出的最新JAVA标准。利用J2EE技术,公司企业能够建立完全符合自己商业逻辑的服务架构,从而以最短的相应时间、最低的投入,为最大范围的客户、雇员及供货商提供最方便的服务,而且这些服务是高质量、安全和可扩展的。J2EE技术的基础就是核心Java平台或Java 2平台的标准版,J2EE不仅巩固了JAVA标准版中的许多优点,例如“编写一次、随处运行”的特性、方便存取数据库的JDBC API、CORBA技术以及能够在Intemet应用中保护数据的安全模式等等,同时还提供了对 EJB(Enterprise JavaBeans)、Java Servlets API、JSP(Java Server Pages)以及XML技术的全面支持。J2EE体系结构提供中间层集成框架用来满足无需太多费用而又需要高可用性、高可靠性以及可扩展性的应用的需求。通过提供统一的开发平台,J2EE降低了开发多层应用的费用和复杂性,同时提供对现有应用程序集成强有力支持,完全支持Enterprise JavaBeans,有良好的向导支持打包和部署应用,添加目录支持,增强了安全机制,提高了性能。J2EE使用多层的分布式应用模型,应用逻辑按功能划分为组件,各个应用组件根据他们所在的层分布在不同的机器上。事实上,SUN设计J2EE的初衷正是为了解决两层模式C,S(Client,Server)的弊端,在传统模式中,客户端担当了过多的角色而显得臃肿,在这种模式中,第一次部署的时候比较容易,但难于升级或改进,可伸展性也不理想,而且经常基于某种专有的协议,通常是某种数据库协议。它使得重用业务逻辑和界面逻辑非常困难。而网上交易系统却恰恰要求应用程序有很高的可扩展性、组件 [1]有可重用性以及系统有很强的安全性等。 2.3 系统开发工具及环境 此次要开发的虚拟股票交易系统是一个在Internet网络环境下运行的系统,因此我采用的技术有Servlet+JSP,开发工具为MyEclipse、应用服务器Tomcat、数据库MySQL。 MyEclipse企业级工作平台(MyEclipse Enterprise Workbench,简称MyEclipse) 2 湖北师范学院计算机科学与技术学院2012届学士学位论文 是对Eclipse IDE的扩展,利用它我们可以在数据库和JavaEE的开发、发布,以及应用程序服务器的整合方面极大地提高工作效率。它是功能丰富的JavaEE集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持HTML、JSF、CSS、Javascript、SQL。 Tomcat是Apache软件基金会(Apache Software Foundation)的Jakarta项目中的一个核心项目,由Apache、Sun和其他一些公司及个人共同开发而成。Tomcat是一个轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选。实际上Tomcat部分是Apache服务器的扩展,但它是独立运行的,所以当你运行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)模式进行设计。其中,Model层实现系统中的业务逻辑,用JavaBean(实体类)来实现;View层用于与用户的交互,用JSP来实现;Controller层是Model与View之间沟通的桥梁,它可以分派用户的请求并选择恰当的视图以用于显示,同时它也可以解释用户的输入并将它们映射为模型层可执行的操作。 2.5 可行性分析 针对于自己对股票交易市场的理解和观测,再加上和同学的交流,大量资料的查阅,最终完成的交易系统基本上能够满足用户的需求。由于本人在大学期间有过对JAVA技术的学习,而且在公司实习阶段一直在做J2EE方面的开发,对这项技术也有了一定的掌握程度,所以在开发该系统的过程中还是比较顺利的。 3 湖北师范学院计算机科学与技术学院2012届学士学位论文 3 系统分析 3.1 系统结构 系统结构是系统的最高层概念。在开发虚拟股票交易系统的实例之前,应该先选择或定义好一个合适的系统结构。该系统主要采用MVC三层模式,分别是模型(Model)层、视图(View)层和控制(Controller)层。结构模型如图3.1所示: 图3.1 MVC三层模式 模型(Model)层实现系统中的业务逻辑。在MVC的三个部件中,模型(Model)层拥有最多的处理任务。封装的是数据源和所有基于对这些数据的操作。JavaBean分为业务类和数据实体,业务类处理业务数据、数据实体承载数据,基本上大多数的项目都是使用这种MVC的实现模式。在一个组件中,Model往往表示组件的状态和操作状态的方法,如处理请求执行业务逻辑、访问数据库、封装数据等等。封装的数据和行为必须是独立于任何的表现,提高可重复性,可以 [2]独立的测试,不要包含任何的Servlet和JSP的API。 视图(View)层用于与用户的交互,封装的是对数据源Model的一种显示。一个模型可以由多个视图,而一个视图理论上也可以和不同的模型关联起来,通常用JSP来实现。JSP(Java Server Pages)是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。JSP技术有点类似ASP技术,它是在传统的网页HTML文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件(*.jsp)。用JSP开发的Web应用是跨平台的,既能在 [3]Linux下运行,也能在其他操作系统上运行。 4 湖北师范学院计算机科学与技术学院2012届学士学位论文 控制(Controller)层封装的是外界作用于模型的操作。通常,这些操作会转发到模型上,并调用模型中相应的一个或者多个方法。一般Controller在Model和View之间起到了沟通的作用,处理用户在View上的输入,并转发给Model。这样Model和View两者之间可以做到松散耦合,甚至可以彼此不知道对方,而由 [4]Controller连接起这两个部分。 3.2 系统描述 系统描述初步界定了系统的范围和功能。为了有一个更加清晰的开发思路,现用自然语言对整个虚拟股票交易系统进行详细地描述。 3.2.1 总述 该虚拟股票交易系统主要有管理员登录进行管理,用户注册、用户登录、用户操作、安全退出几大功能模块。用户在注册该系统之后,只需输入自己的SSN和密码,即可登录到该系统进行股票信息查询、股票买入、股票卖出、交易明细查询、个人信息修改等操作。而管理员是设定好的,管理员登陆后可以进行系统的管理和维护。 3.2.2 分述 接下来,本人将对上述功能模块进行详细的描述。 管理员登录进行管理:因本股票交易系统为虚拟交易系统,股票的名称,价格,用户的信息都来自于数据库,并非真实数据,只是本人的一次模拟,所以在此系统中增加的一项管理员的管理功能。管理员可以进行用户信息的修改,非法用户的删除操作。 用户注册:如果是新用户首次来到本系统,先要进行用户注册,填写个人详细信息,SSN和密码是用户登陆的权限。本系统因未设置账户充值功能,所以系统会默认新注册的用户账户余额上有2000元,以便用户进行股票的购买,抛售操作。 3、用户登录:如果你已经顺利完成了注册,那么系统将会自动跳转到“用 5 湖北师范学院计算机科学与技术学院2012届学士学位论文 户登录”页面,你可以马上尝试登录。这里只需要正确地输入你的SSN和密码,就可以成功地查看到你的所持股票信息、上市股票信息、账户余额和进行修改个人信息,这个时候,你将有权对这些模块进行相关操作。 4、用户操作:用户在成功登录到该系统后,将可以对此模块进行操作。在此模块中,用户可以查看到自己股票持有信息、价格信息,还可以进行相应的股票交易,参照该股票最近的价格波动选择是否抛售,购买该股票。 5、安全退出:如果用户完成相关体验后,想要退出该系统,可以点击“退出”按钮,页面会自动跳转到登录界面。在不重新登录的情况下,用户跟普通游客一样,不能继续进行进一步操作。 3.3 总体功能模块 该虚拟股票交易系统,主要是为了满足用户对股票交易的体验,要求操作简单快捷、界面整洁大方,因此必须要设计一个好的程序架构和运作流程。从上述系统描述中可以大致了解到整个虚拟股票交易系统的总体功能模块划分及流程图概况。如图3.3.1-3.3.2所示。 3.3.1 总体功能模块 虚拟股票交易系统 用户注册 用户登陆 账户余额 修改个人信息 所持股票 上市股票 安全退出 图3.3.1 总体功能模块 6 湖北师范学院计算机科学与技术学院2012届学士学位论文 3.3.2 用户登录流程 显示功能页面 图3.3.2 用户登录流程 3.3.3 管理员登录流程 进入管理员登录 页面 显示功能页面 图3.3.3 管理员登录流程 3.4 系统用例模型 用例模型是整个系统开发过程中的起点,并驱动建模的全过程。用例模型包括系统的用例图及用例描述。在设计系统用例模型之前,首先要识别活动者和用例。 7 湖北师范学院计算机科学与技术学院2012届学士学位论文 4 系统设计 4.1 功能模块细化 由上述的系统分析用例模型可以得出系统的细化功能模块。 4.1.2 股票交易模块 图4.1.2 股票交易模块功能细化 4.1.3 个人信息修改模块 图4.1.3 个人信息修改模块功能细化 4.2 数据库设计 4.2.1 数据表设计 表名 功能说明 stock 股票的详细信息表 customer 用户的个人详细信息表 admi 管理员的个人信息表 buy 用户和股票的关联表 sprice 股票价格的波动表 8 湖北师范学院计算机科学与技术学院2012届学士学位论文 1. stock 表名 stock 列名 数据类型(精度范空/非空 约束条件 其它说明 围) id INT NOT NULL IDENTITY(1,1) PRIMARY KEY sname VARCHAR(45) sprice DOUBLE 补充说明 2. customer 表名 customer 列名 数据类型(精度范空/非空 约束条件 其它说明 围) id INT NOT NULL IDENTITY(1,1) PRIMARY KEY cname VARCHAR(45) cssn VARCHAR(45) address VARCHAR(45) pw VARCHAR(45) money DOUBLE tele VARCHAR(45) 补充说明 9 湖北师范学院计算机科学与技术学院2012届学士学位论文 3. buy 表名 vet_specialties 列名 数据类型(精度范空/非空 约束条件 其它说明 围) id INT NOT NULL IDENTITY(1,1) PRIMARY KEY NOT NULL foreign key c_id INT REFERENCES customer(id) NOT NULL foreign key s_id INT REFERENCES stock(id) num INT 补充说明 4. admi 表名 types 列名 数据类型(精度范空/非空 约束条件 其它说明 围) id INT NOT NULL IDENTITY(1,1) PRIMARY KEY aname VARCHAR(45) apw VARCHAR(45) 补充说明 10 湖北师范学院计算机科学与技术学院2012届学士学位论文 5. sprice 表名 owners 列名 数据类型(精度范空/非空 约束条件 其它说明 围) NOT NULL IDENTITY(1,1) id INT PRIMARY KEY NOT NULL foreign key s_id INT(10) REFERENCES stock(id) price DOUBLE 补充说明 4.3 系统类设计 4.3.1 功能层Dao工具类的设计 该类主要负责数据库的操作,包括了与数据库的连接,对数据库进行增、删、 改、查等操作。主要代码如下: 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 Exception{ if(con==null){ Class.forName("com.mysql.jdbc.Driver"); 11 湖北师范学院计算机科学与技术学院2012届学士学位论文 con=DriverManager.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.Customer; public class CustomerDao { //登陆验证ssn ,pw public static boolean CusLogin(Customer c)throws Exception{ PreparedStatement 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 flag=rs.next(); rs.close(); ps.close(); ps=null; return flag; 12 湖北师范学院计算机科学与技术学院2012届学士学位论文 } //添加新用户 public static void addCus(Customer c)throws Exception{ PreparedStatement ps=DataBase.getConnection().prepareStatement("insert into customer(cname,cssn,address,pw,money,tele) values(?,?,?,?,?,?)"); ps.setString(1, c.getName()); ps.setString(2, c.getSsn()); 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 Exception{ PreparedStatement 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(); Customer customer=null; while(rs.next()){ customer=new Customer(rs.getInt("id"),rs.getString("cname"),rs.getDouble("money")); 13 湖北师范学院计算机科学与技术学院2012届学士学位论文 } rs.close(); ps.close(); ps=null; return customer; } //查看所有用户信息 public static Vector getCust()throws Exception{ PreparedStatement 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.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; } 14 湖北师范学院计算机科学与技术学院2012届学士学位论文 //首页查询账户余额的方法 public static Vector getBuy(int a)throws Exception{ PreparedStatement ps=DataBase.getConnection().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; } //查找指定用户手中的账户余额 //先得到用户对象 //买卖股票操作时,后台调用得到账户余额的方法 public static Customer getBuy1(int a)throws Exception{ PreparedStatement ps=DataBase.getConnection().prepareStatement("select money from customer where id=?"); ps.setInt(1, a); ResultSet rs=ps.executeQuery(); Customer c=null; while(rs.next()){ 15 湖北师范学院计算机科学与技术学院2012届学士学位论文 c=new Customer(rs.getDouble("money")); } rs.close(); ps.close(); ps=null; return c; } //账户余额的变化 public static void getSellMoney(Customer c)throws Exception{ PreparedStatement 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 void getBuyMoney(Customer c)throws Exception{ PreparedStatement 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; } 16 湖北师范学院计算机科学与技术学院2012届学士学位论文 //得到指定用户的个人信息 public static Vector getCus(int a)throws Exception{ PreparedStatement 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")); 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 Exception{ PreparedStatement ps=DataBase.getConnection().prepareStatement("update customer set address=?,tele=? where id=?"); ps.setString(1, c.getAddr()); ps.setString(2, c.getTele()); 17 湖北师范学院计算机科学与技术学院2012届学士学位论文 ps.setInt(3, c.getId()); ps.executeUpdate(); ps.close(); ps=null; } //删除指定用户 public static void delCus(int a)throws Exception{ PreparedStatement ps=DataBase.getConnection().prepareStatement("delete from customer where id=? "); ps.setInt(1, a); ps.executeUpdate(); ps.close(); ps=null; } //登陆注册ssn是否存在 public static boolean ifSsn(String s)throws Exception{ PreparedStatement 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(); ps=null; return flag; } //用户修改自己的个人信息 public static void updateCus1(Customer c)throws Exception{ PreparedStatement 18 湖北师范学院计算机科学与技术学院2012届学士学位论文 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.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(); this.name = name; this.pw = pw; 19 湖北师范学院计算机科学与技术学院2012届学士学位论文 } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getPw() { return pw; } public void setPw(int pw) { this.pw = pw; } } 2、Customer(用户对象) package com.zhanghao.dto; public class Customer { private String name; private String ssn; private String addr; private String pw; private int id; private double money; private String tele; public Customer(String name,String pw,String addr,String tele ,int id) { super(); this.addr = addr; this.id = id; this.name = name; 20 湖北师范学院计算机科学与技术学院2012届学士学位论文 this.pw = pw; this.tele = tele; } public Customer( int id,String addr, String tele) { super(); this.addr = addr; this.id = id; this.tele = tele; } public Customer(String name, String ssn, String addr, String pw,double money, String tele) { super(); this.addr = addr; this.name = name; this.pw = pw; this.ssn = ssn; this.money=money; this.tele = tele; } public Customer(double money) { super(); this.money = money; } public Customer(int id, double money) { super(); this.id = id; this.money = money; } public Customer(int id, String name,double money) { 21 湖北师范学院计算机科学与技术学院2012届学士学位论文 super(); this.id = id; this.name = name; this.money=money; } public Customer(String name) { super(); this.name = name; } public Customer() { super(); } public Customer(String pw, String ssn) { super(); this.pw = pw; this.ssn = ssn; } public Customer( String name, String ssn, String addr, String pw) { super(); this.addr = addr; this.name = name; this.pw = pw; this.ssn = ssn; } public String getName() { return name; } public void setName(String name) { this.name = name; } 22 湖北师范学院计算机科学与技术学院2012届学士学位论文 public String getSsn() { return ssn; } public void setSsn(String ssn) { this.ssn = ssn; } public String getAddr() { return addr; } public void setAddr(String addr) { this.addr = addr; } public String getPw() { return pw; } public void setPw(String pw) { this.pw = pw; } public int getId() { return id; } public void setId(int id) { this.id = id; } public double getMoney() { return money; } public void setMoney(double money) { this.money = money; 23 湖北师范学院计算机科学与技术学院2012届学士学位论文 } public String getTele() { return tele; } public void setTele(String tele) { this.tele = tele; } } 4.3.3 控制层Servlet的设计 控制层中的servlet都是接收JSP页面中提交的数据,根据需求调用相应的 方法来处理数据,并连接到下一个JSP展示页面(此处列举管理员删除用户和用 户购买股票的功能) 1、DelServlet(管理员删除用户) package com.zhanghao.servlet; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.zhanghao.dao.BuyDao; import com.zhanghao.dao.CustomerDao; public class DelServlet extends HttpServlet { public DelServlet() { super(); } 24 湖北师范学院计算机科学与技术学院2012届学士学位论文 public void destroy() { super.destroy(); // Just puts "destroy" string in log // Put your code here } public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request, response); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { int id=Integer.parseInt((String)request.getParameter("a")); System.out.println("看删除用户操作"+id); //删除用户 try { //外键有值时,先删除外键 BuyDao.delBuy1(id); //再删除用户信息 CustomerDao.delCus(id); } catch (Exception e) { request.setAttribute("err", "Sorry,用户删除操作失败!"); request.getRequestDispatcher("/err.jsp").forward(request, response); } request.setAttribute("msg", "用户删除操作成功,3秒后自动返回上 级……"); request.getRequestDispatcher("/updateSuc.jsp").forward(request, response); } 25 湖北师范学院计算机科学与技术学院2012届学士学位论文 public void init() throws ServletException { // Put your code here } } 2、BuyServlet(用户购买股票) package com.zhanghao.servlet; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.zhanghao.dao.BuyDao; import com.zhanghao.dao.CustomerDao; import com.zhanghao.dto.Buy; import com.zhanghao.dto.Customer; public class BuyServlet1 extends HttpServlet { public BuyServlet1() { super(); } public void destroy() { super.destroy(); // Just puts "destroy" string in log // Put your code here } public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request, response); } 26 湖北师范学院计算机科学与技术学院2012届学士学位论文 public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { Customer c=new Customer(); Customer c1=new Customer(); int c_id=Integer.parseInt((String)request.getParameter("c_id")); int numb=Integer.parseInt((String)request.getParameter("numb")); int s_id=Integer.parseInt((String)request.getParameter("s_id")); double sprice=Double.parseDouble((String)request.getParameter("sprice")); String sname=(String)request.getParameter("sname"); Buy b=new Buy(c_id,s_id,numb); Buy b1=new Buy(c_id,s_id); Buy b2=null; //得到指定用户个人信息(账户余额) try { c=CustomerDao.getBuy1(c_id); } catch (Exception e) { request.setAttribute("err", "Sorry,查询用户账户余额操作失败!"); request.getRequestDispatcher("/err.jsp").forward(request, response); } //判断:账户余额大于买股票所需要的钱 if(sprice*numb<=c.getMoney()){ try { //购买股票成功,股票数量发送变化 BuyDao.updateBuy(new Buy(c_id,s_id,numb)); //购买股票成功,账户余额发送变化 CustomerDao.getBuyMoney(new Customer(c_id,numb*sprice)); 27 湖北师范学院计算机科学与技术学院2012届学士学位论文 //得到购买后的个人账户余额 c1=CustomerDao.getBuy1(c_id); //得到购买后所持股票的数量 b2=BuyDao.getBuy(b1); } catch (Exception e) { request.setAttribute("err", "Sorry,购买股票操作失败!"); request.getRequestDispatcher("/err.jsp").forward(request, response); } request.setAttribute("num", b2.getNum()); request.setAttribute("num1", numb); request.setAttribute("money1", sprice*numb); request.setAttribute("money", c1.getMoney()); request.setAttribute("sname", sname); request.setAttribute("msg", "购买股票操作成功,8秒后自动返 回……"); request.setAttribute("msg1", "您本次购买股票:"); request.setAttribute("msg2", "购买数量:"); request.setAttribute("msg3", "花费金额为:"); request.setAttribute("msg4", "现在手中持有该股票数量:"); request.setAttribute("msg5", "个人账户总余额为:"); request.getRequestDispatcher("/sellSuccess.jsp").forward(request, response); } //判断:账户余额小于买股票需要的钱 else if(sprice*numb>c.getMoney()){ request.setAttribute("msg", "对不起,您的账户余额不足,无法购买 股票,3秒后自动返回……"); request.getRequestDispatcher("/fail.jsp").forward(request, response); 28 湖北师范学院计算机科学与技术学院2012届学士学位论文 } } public void init() throws ServletException { // Put your code here } } 4.3.4 视图层JSP的设计 视图层中的jsp页面基本上都是用来显示数据和表格,当然有的页面还写入 了javascript语句和javaBean(此处列举判断用户登陆和管理员查看用户信息的 jsp) 1、cusLogin(判断用户登陆的SSN,密码是否正确) <% boolean b=false; try{ b=CustomerDao.CusLogin(c); } catch(Exception e){ request.setAttribute("erromsg","Sorry,系统错误,连接数据库失败."); %> <% } if(b==true){ Customer customer=CustomerDao.getName(c); 29 湖北师范学院计算机科学与技术学院2012届学士学位论文 String cname=customer.getName(); int id=customer.getId(); double money=customer.getMoney(); session.setAttribute("cname",cname); session.setAttribute("id",id); session.setAttribute("money",money); %> <% } else{ request.setAttribute("erromsg","Sorry,用户名或密码输入错误,请返回重新 输入."); %> <% } %> 2、cusLogin(判断用户登陆的SSN,密码是否正确)

退出


欢迎管理员: ${sessionScope.aname}

 

 

欢迎来到XXX股票交易管理页面~


      用户个人详细信 30 湖北师范学院计算机科学与技术学院2012届学士学位论文 息:


用户名 SSN 地址 电话 账户余额 操作
删除   修改

返回上一级 5 系统运行和测试 下面,本人将对该系统的各大功能和细节进行详细的介绍和演示。 31 湖北师范学院计算机科学与技术学院2012届学士学位论文 5.1 系统首页 系统首页作为该系统的一个标志,设计简洁、大方。具体如下图5.1-1: 图5.1-1 系统首页 5.2 管理员登录页面 管理员从此页面登陆,进行系统管理。具体如下图6.1-2: 32 湖北师范学院计算机科学与技术学院2012届学士学位论文 5.3 新用户注册页面 新用户在此页面注册,进入系统操作。具体如下图6.1-3: 图5.1-3 新用户注册页面 5.4 系统功能页面 用户在此页面上,选择要操作的功能。具体如下图6.1-4: 图5.1-4 功能操作页面 33 湖北师范学院计算机科学与技术学院2012届学士学位论文 5.5 用户所持股票页面 用户可以查看自己所持股票,并进行相应操作。具体如下图6.1-5: 图5.1-5 用户所持股票页面 5.6 上市股票页面 用户可以查看所有上市股票信息,并进行相应操作。具体如下图6.1-6: 34 湖北师范学院计算机科学与技术学院2012届学士学位论文 5.7 账户余额显示页面 用户可以在此页面上查看账户余额。具体如下图6.1-7: 图5.1-7 用户账户余额显示页面 5.8 用户个人信息修改页面 用户在此页面上修改个人详细信息。具体如下图6.1-8: 35 湖北师范学院计算机科学与技术学院2012届学士学位论文 6 结论 6.1 系统的优缺点 6.1.1 优点 1、该系统采用了面向对象的编程语言JAVA进行编写,稳定性优良。 2、该系统采用了时下最流行的MVC三层模式进行设计和开发,利于系统的升级和维护。 3、该系统的功能界面全部采用Servlet+JSP进行设计和编写,界面简洁友好、操作简易,而且几乎可以兼容目前所有主流的浏览器。 6.1.2 缺点 由于个人有限和时间问题,一些功能的实现方法比较一般,页面的美化效果处理的也不是很好,而且该系统的股票数据也是预先插入数据库的,没能实现数据的动态同步,诸多不如意之处,还有待改进。 结束语 在本次毕业设计中,我选择了以虚拟股票交易系统作为自己的毕业设计题目。从选题、设计、开发到最终的顺利完成,我受益匪浅、感触良多。刚开始选择课题的时候,心中不免有些不安和忐忑,因为可选的课题太多,又不了解自己究竟擅长哪方面,而且选择一个适合自己的课题是至关重要的。几度犹豫,最后还是选定了基于Java的虚拟股票交易系统。在接下来的设计和开发过程中,由于自己的技术不是很过硬,困难也是接踵而来。其中让我印象最深刻的是系统各个页面的设计,以前总觉得设计页面挺简单的,但真正自己动手的时候就感觉麻烦还是挺多的,特别是这次的页面实现了与几乎所有的主流浏览器的兼容,让我倍感欣喜。整个系统的开发让我真正对软件的开发流程有了更进一步的认识和掌握。 谢辞 软件开发是一个需要团队的工作,任何时候都离不开他人的帮助和支持。在 36 湖北师范学院计算机科学与技术学院2012届学士学位论文 此次系统的开发过程中,我首先要衷心地感谢我的指导老师黄琳老师给予了我正确的指导,如果没有她孜孜不倦的教导,也就没有此次系统的顺利完成。最后,我要感谢我所有的亲朋好友、老师同学,谢谢你们陪我走过了四年美好的大学时光。再次感谢~ 37 参考文献 [1] 刘晓华,张健,周慧贞.《JSP应用开发详解》 北京:电子工业出版社. 2007年4月:33~51. [2] 朱喜福,朱佩妮.《Java程序设计基础教程》 北京:人民邮电出版社. 2010年2月:8~15. [3] 邵丽萍,邵光亚,张后扬.《Java语言程序设计》 北京:清华大学出版社. 2008年8月:22~28. 4] 耿祥义,张跃平.《Java大学实用教程》 电子工业出版社. 2008年5月:9~16. [ 5] (美)John Resig 著,陈贤安,江疆 译.《精通 JavaScript》 北京:人民邮电出[ 版社.2008年5月:30~44.

/
本文档为【基于JAVA的虚拟股票交易系统的研究与实现】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索