技术: 股票分析客户端分析与实现

一开始觉得很简单,做起来才发现根本不简单…

本来想找俩技术同好一起研究搞一搞,无奈找不到人。下面我就分别以 M 和 G 两个开发人员来模拟一下结队编程,两人都是主程。

本案例的核心代码已经分享,关键是分析设计思路。

本来,按照商业软件的设计思路,客户端最多也就是做做网络请求以及数据显示,但部分功能性的处理,比如实时数据查询等数据库操作统统都应该放在 server 端,不过这里由于只有一个客户端,所以顺带把这些个需求全部放在了客户端。但是明白商业软件一般都不会这么干即可。

该项目亮点在哪?

基本上这个项目会涉及 GUI 开发的方方面面,范例式的 Cpp 代码,以自选股为背景。
(我这个做,纯碎为了兴趣), 不过还是列举了一下:

现在做的每一个作品,要么不做,要么做到精致;仔细思考,尽量重用.

  • 1 登录模块 (以后尽可能都重用这一个组件,怎么做到最大化重用?子模块包含)
  • 2 多语言处理 (考虑到QString内部实际采用utf16编码,直接使用std::wstring)
  • 3

概要

功能与分工

这个系统比较大,我初步估计,最少一个月最多两个月能完成。主要功能模块如下:

简要模块划分

然后既然是两个主力协作,那么应该至少如下分工:

分工

大致上就是这么个情况,如果只是概要看看,其实没有多复杂。但是实际操作起来还是不一样的。

核心业务流程

总结了一下,大致如下:

业务流程

纯属个人软件,所以和真是商业软件流程还是有很大的差距的。

详情

这个就分模块直接展示了。

开发环境概述

主要集中在 Mac 环境下,后期可能会在 windows pc 上跑一跑。
Modern Cpp + Mysql + Qt, 核心技术就这样了。

数据结构设计

该部分是最先进行的,详细分析过程不展开。
具体内容如下:

数据库设计

主要的表如下:

相关 sql 语句如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
CREATE DATABASE IF NOT EXISTS qt_stock_mock DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

USE qt_stock_mock;

## T_USER 存储用户信息

CREATE TABLE IF NOT EXISTS t_user
(
id BIGINT PRIMARY KEY AUTO_INCREMENT, # 自动编号 id
username varchar(128), # 用户名
passwd varchar(128), # 密码
p001 varchar(10) NOT NULL, # previlege 1 系统权限
p002 varchar(10) NOT NULL, # 2 基础数据维护权限
p003 varchar(10) NOT NULL, # 3 品种维护权限
p004 varchar(10) NOT NULL, # 4 导入导出权限
p005 varchar(10) NOT NULL, # 5 查询权限
p006 varchar(10) NOT NULL, # 6 即时数据权限
p007 varchar(10) NOT NULL, # 7 工具权限
p008 varchar(10) NOT NULL, # 8 金融计算器权限
p009 varchar(10) NOT NULL, # 9 截屏权限权限
p010 varchar(10) NOT NULL # 10 系统设置权限
) ENGINE=InnoDB DEFAULT CHARSET=utf8;


### T_STOCK_INFO 维护股票基础信息
CREATE TABLE IF NOT EXISTS t_stock_info
(
code varchar(32), # 股票代码
name varchar(64), # 股票名称
id_kind BIGINT # 股票种类编号
) ENGINE=InnoDB DEFAULT CHARSET=utf8;


## T_KIND 维护股票种类信息
CREATE TABLE IF NOT EXISTS t_kind
(
id BIGINT PRIMARY KEY AUTO_INCREMENT, # 自动编号 id
name varchar(128) # 股票种类名称
) ENGINE=InnoDB DEFAULT CHARSET=utf8;


### T_R_000000 表用于保存股票日线数据 (例如)
CREATE TABLE IF NOT EXISTS t_r_000001
(
data_time varchar(10), # 日期
price_open varchar(32), # 开盘价
price_close varchar(32), # 收盘价
price_max varchar(32), # 最高价
price_min varchar(32), # 最低价
turnover varchar(32), # 交易量
trading_volume varchar(32) # 交易额
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

具体的数据,可以用 python 去新浪财经,东财等爬取,我这里采用 csv 导入模拟数据.
(如果要相关数据,可以发邮件给我)

注意:
_T_R_xxxxxx 日线数据表, 每增加一只股票增加一个表, 但表结构是一样的;因为数据可能会很多,所以分表。 并且所有外键关联取消,手动维护,减少数据库负担_。

登录模块

直接重用其他项目岂不是更好?

总结

在这个项目里面, Qt 框架的相关技术越来越熟悉,我也对自己提出了更多其他要求:

  • 怎么样组织代码可以快速出产品?
  • 工程与子工程如何相互结合?
  • 怎么样做到一份代码的重复使用?

可重用代码

文章目录
  1. 1. 概要
    1. 1.1. 功能与分工
    2. 1.2. 核心业务流程
  2. 2. 详情
    1. 2.1. 开发环境概述
    2. 2.2. 数据结构设计
    3. 2.3. 数据库设计
    4. 2.4. 登录模块
  3. 3. 总结
  4. 4. 可重用代码
|