内容发布更新时间 : 2024/11/5 15:52:56星期一 下面是文章的全部内容请认真阅读。
详细设计说明书
buyStocksellStockquoteStockTcp/ipCanselDelegatecheckUserMoneyCount(stockData)Or checkUserStockCount要通过数据访问层来访问用户表在撮合队列中处理并且返回处理结果tradeInQueue(stockData newstockData)SuccessunSuccessupDateUserInfo(stockData)通过调用ADO层工厂来访问不同的数据库(更新用户表)upDateDelegateInfo(stockData) 同左更新的是委托临时表adoFactory 通过该模块可动态建立不同数据库的连接Orical、sql server,accessRules/Model规范买卖指令传输的数据结构必须是stockData形式Check数据访问层accessaccess.postDate(stockData)将数据更新到数据库数据访问层sqlserverSqlserver。postDate(stockData)详细设计说明书
股票信息发布
经过修改我认为每次由客户端每5秒去查询一次服务器更新信息不可取,因为这会加重服务端和客户端的负担,特别是服务器端的运算。
修改后实现变更为:用户一开始登陆后获得一次服务器的全部股票当前信息。而服务器端每次发生交易后,给每一个在线用户发送当前交易需要更新的股票信息,这样就减轻了客户机和服务端的信息
客户端第一次登陆发送请求获得所有股票信息,并画分时线图Stock idStock priceTCP/IP服务器每次交易返回最新信息
详细设计说明书
2.5 功能需求与程序的关系
(该关系由需求分析报告编写者根据结构图说明)
本条用一张如下的矩阵图说明各项功能需求的实现同各块程序的分配关系:
用户登陆 查看用户持仓 实时指数 交易委托 取消交易 获取并发送用户请求 √ √ 绘制分时图 MD5加密解密 √ 发送用户交易请求 接受并识别用户请求 √ √ 调用数据层查询 √ √ 撮合交易 服务器返回客户端信息 √ √ √ √ √
√ √ √ √ √ √ √ √ √ √ √ 2.6 人工处理过程
说明在本软件系统的工作过程中不得不包含的人工处理过程(如果有的话)。 没有完成股票管理的模块设计,所以股票必须从数据库后台添加 如果有新股发行,还必须添加有关股票的交易队列
2.7 尚未解决的问题
说明在概要设计过程中尚未解决而设计者认为在系统完成之前必须解决的各个问题。
3 接口设计
3.1 用户接口
说明将向用户提供的命令和它们的语法结构,以及软件的回答信息。
详细设计说明书
向用户提供简单易用的UI,以及帮助文档。 客户端将提供以下功能
首先弹出用户登陆框,供用户输入用户名和密码 菜单项提供个股查询和分时图按钮
菜单栏下是选项卡,提供股票实时信息和个股分时图栏
提供用户交易界面和交易按钮以及查看用户盈亏按键
3.2 外部接口
说明本系统同外界的所有接口的安排包括软件与硬件之间的接口、本系统与各支持软件之间的接口关系。
采用基于正确公开标准的部件和技术以确保最大限度的协作能力以及与第三方系统与部件集成的简便性。这类标准包括但不限于以下几种:
? 网络协议与标准 (TCP/IP, HTTP, SSL, etc) ? 语言(SQL, C#.net, etc.) ? 数据库连接性(ADO。net)
3.3 内部接口
说明本系统之内的各个系统元素之间的接口的安排。
逻辑层和数据访问层通过以经的stockDataModel接口,来限定访问stockData类型的数
详细设计说明书
据
客户端通过调用buyStock(stockData)和sellStock(stockData)来访问逻辑层,在这个函数中包含了访问逻辑层的接口dealTransaction(stockData) 通过AdoFactory访问不同的数据库
客户端登陆协议
D(二字节)+(客户名字长度)(4字节)+(客户名字)+(客户密码长度)(4字节)+(客户密码); 客户买卖协议
B(二字节)+(股票ID)(4字节)+(股票数量)(4字节) S(二字节)+(股票ID)(4字节)+(股票数量)(4字节) 查询交易信息并返回给客户端 C(二字节)
具体有拆包解包的类
using System;
using System.Collections.Generic; using System.Text;
namespace ProjectCenterTradingSys {
public class Protocal {
private byte[] messagebuffer; private byte[] messagelength; public byte[] messagebag;
//该函数是将字符串转换为字节数组
public byte[] StringtoByte(string stringInfo) {