2024年6月8日发(作者:)

声明:本知识店铺运营者为该文档的版权所有人

XXXXX大学

软件课程设计报告

学院 级 专业

题目

股票数据实时采集和展示

学生 学号

指导教师

年 月 日

股票数据实时采集和展示

摘要:本设计基于vc++6.0-MFC和SQL Server 2000数据库软件平台,通过新浪股票数据接

口,采用对自选股表中自选股代码的读取、请求、接收,实现股票信息字符串的定时采集和

存储,并利用MFC与数据库的接口控件,实现在基于对话框的MFC程序中的股票数据的

读取、显示和实时更新。此外,本设计使用GDIPLUS扩展模块,完成了对采集到的大盘和

个股的分时图、K线图的展示。测试发现,本设计具有较好的交互功能,为进一步实现对股

票信息的处理打下基础,达到了预期效果。

关键字:股票 采集 MFC 数据库 实时

1 引言

自从1984年11月中国的第一个1万股发行以来,国内的股票市场开始了探索性的发展,

目前已形成上海,深圳,香港和台北4大股票市场。由于经常都有股票上市,所以股票数目不

断变化,目前在中国大陆地区上市的股票情况是:上证A股860支、B股 53支;深证A

股 758支、B股 49支,共计又1700多支。倘若想对这些股票做总体的行情和走势分析而

不借助于计算机技术,如此庞大的数据统计量是难以想象的。正因如此,我们通过新浪提供

的股票数据接口,设计了基于MFC的股票数据实时采集管理系统。该软件可通过Internet

网络实现对实时股票数据进行采集,并存储到数据库中,同时列表展示所采集的数据及实时

K线图,当然我们也提供了计算器一类的辅助工具来进一步方便用户。

2 设计依据及框图

2.1 设计平台

我们所开发的股票数据实时采集管理系统开发平台为VC++6.0中的MFC,数据库为

SQL SERVER 2000。下面对这两款软件的基本情况进行一下简单介绍一下。

MFC(Microsoft Foundation Classes)是由微软提供的,用于在C++环境下编写应用程序的

一个框架和引擎,由于其内部提供了大量基于类的API,从而使用户能够方便地运用C++语言

对Windows下的应用程序进行开发。正是由于MFC的API的封装机制,使程序开发人员不

必再去关注那些纷繁复杂的底层驱动,而把注意力放到程序的开发上来。

目前常见的数据库管理系统有:Oracle、 Microsoft SQL Server、Sybase、 Access、 Ingres

等。这里我们选用的是SQL Server 2000对股票数据进行管理 ,我们把Visual Basic中常用

的ADO Data控件加入到VC++6.0中,使得程序能够快速地创建一个到数据库的链接。该

控件使用Recordset对象提供对存储在数据库中数据的访问,并允许从一个记录移动到另一

个记录,但是它并不能够显示数据库中的内容,所以常常需要配合其他控件完成显示工作。

在这里我们用ADO Data控件配合DataGird控件的方式,执行对数据库的各种操作,其中

DataGird控件需要利用ADO Data控件提供的数据源,以表格的形式集中显示数据库中的数

据。由于vc6只支持bmp图像,而sina提供的图片格式为.gif,故为了能够实时显示行情和

K线图,我们先调用gdiplus库中的函数建立位图存入缓存,在取得对象的高度宽度之后,

调取图片,从而将图片进行显示。

2.2 设计思想

通过界面实现控制股票代码范围的设置,即设置自选股代码信息,存放在数据库表

Choose中,通过隐藏的后台窗口实现对数据的实时采集,采集时间间隔为5秒,在需要显

示实时信息的窗口中利用adodc控件实现对数据库信息的定时读取,时间间隔为3秒。设计

用到的设计和编程思想有:

 定时器中断思想,完成定时采样和刷新功能;

 后台和前台程序思想,前台完成用户请求,后台完成程序需要时刻执行的任务;

 C++编程中类的思想,每个功能对话框建立基于对话框的类,在对话框间功能调用时采

用公有成员和extern命令拓展变量作用域;使用了一些公共静态全局变量;

 采用关系型数据库,满足基本存储要求;

 建立面向数据库的类,通过类内成员实现数据的读写;

2.3 设计框图、用户界面

股票数据系统

系统设置

退

自选个股

个自历

股选史

明管详

细理情

实时行情

行大数

情盘据

查指更

询数新

工具

2.4 数据库表结构

数据库主要用到两张表,表CHOOSE存放自选股代码信息,表Items存放从新浪股票

接口下载的个股实时信息。表结构如下图所示:

SQL SERVER 2000

数据库

Stock

Choose表

Items表

成员: stock_num 主键

成员: 股票ID 主键

股票信息(30个)

Date 日期

Time 时间

3.

各模块功能及主要模块的流程图

3.1 各模块功能简介

A.系统设置模块:设置使用本系统的用户及其相关信息

(1)基本设置:是预留模块,软件后续扩展功能辅助

(2)用户管理:设置登录用户名和密码,需要数据库Users

(3)修改密码:修改用户登录密码

(4)退出系统

B.自选个股:涉及用户所关心个股的设置及数据显示、存储等

(1)个股明细:实时刷新个股信息,包括基本信息、盘口信息、分时走势图、K线图等

(2)自选管理:自选个股的添加、删除、修改等操作

(3)历史详情:显示数据库内存储的个股所有历史信息,以个股代码为顺寻排列

C实时行情:完成上证、深证的个股及大盘行情查询工作

(1)行情查询:输入个股代码,即可查询到个股的最新数据信息

(2)大盘指数:查询上证综指、深成指数的实时信息、分时图、K线图等

(3)数据更新:

下载新浪股票信息到本数据库,交易时段(工作日9:15—11:30,13:00—15:00)自动更

新,非交易时段手动更新。

手动更新时,窗口默认停留时间为5秒,若无法下载到数据,程序定时器计数10秒后

将强制关闭该窗口。

D.工具:暂时包括计算器和清空数据库功能

(1)计算器:主要实现对数据的加减乘除运算,包括数据正负号设定、Backspace、Reset

等功能,以及简单的差错控制

(2)清空数据:清空Items表单所有数据,在历史数据子模块也调用了该功能

3.2 主要流程图

A.数据下载模块

测试链接,若失败则返回

打开链接,新建文件,

将信息存入文件

读取文件,建立stock

类,给类赋值

打开数据库,新建

项,将数据写入项中

返回

B.大盘行情技术分析模块

选择要查询的大盘指数

C.图片显示模块

新建MyMemDc类

建立内存和位图

调用下载数据模块下载即时数据信

息和图片信息

定时器触发

读数据信息文件并显示在控件

调用下载模块下载图片信

打开图片文件,放于内存

调用图片显示模块将图片显示

在位图框

建立位图区域,获取图片长

结束?

按照位图的长宽显示图片

返回

4 软件调试分析

功能1:自选股信息查询

运行程序,主界面即为自选股的实时信息,包括代码、编号、股价、成交量等信息,打

开数据库,可以看到软件已经将自动更新数据并存入数据库Stock中,方便其他时段查询信

息。

单击主界面自选管理快捷按键,进入自选股管理界面,可以看到当前自选股代码列表,

同时进行增加及删除操作,快捷明了。

单击主界面个股明细快捷按键,进入个股管理界面,输入股票代码,可以看到所要查询

的个股最新的数据资料,同时以图形方式显示个股分时图,日K线,周K线及月K线,使

用户更加直观的得到个股的图形化信息,极富人性化。

同时,菜单栏自选个股中的历史信息查询功能,通过调用数据库中存储的数据,方便用

户在非交易时段了解自选股详细信息,使用价值强。

功能2:大盘实时信息查询

通过主界面快捷按键进入大盘信息查询界面,通过选择可以自由查看上交所及广交所的

大盘详细信息,同时辅以分时图,日K线,周K线及月K线等技术图形,方便用户全局把

握大盘走势,以便及时作出决策。

其次,菜单栏实时行情中的行情查询功能,通过股票代码,以列表方式及时显示用户感

兴趣的股票信息,并集成添加至自选股的功能,而不需退出至主界面进行操作,符合用户习

惯,方便使用。

同时,实时行情菜单栏下的数据更新功能,完成对大盘数据及图形的及时更新,方便快

捷。

功能3:附带小工具

除了完成基本操作,程序还附带了简易计算器及数据清空功能。满足用户所需的基本运

算功能及数据库过大或其他原因导致的清空数据库功能,新颖别致。

特点与不足:

本程序完成了对自选股操作及其实时信息的查询、显示与数据库存储等基础功能,同时

增加了大盘实时信息查询、显示功能,并完成了对自选股及大盘股的技术图形的下载与显示

功能,方便专业股民的使用。简易计算器及清空数据库功能的添加与主界面快捷按键的使用,

使整个程序更加友好。

但无法完成技术图片的数据库存储,用户管理的不完善以及单一的单线程服务也成为本

设计最大的缺陷。

5 结语

5.1 结论

在这次软件课程设计的实际操作过程中,我深刻的认识到培养自学能力和资

料搜集能力的重要性,同时在软件的调试过程中,发现理论和实践的差异性十分

巨大,本来觉得比较简单的问题,当实际处理时却往往伴随着一系列衍生的困难。

编程的思想,系统结构的设计和解决问题的能力才是能够真正体现水平的地方,

十分庆幸有机会深刻体味到这些实实在在的感悟。

5.2讨论

我们所设计的基于MFC的股票数据实时采集管理系统,完成了通过internet网络端口

对实时股票数据进行采集,并存储到数据库中,同时列表展示所采集的数据及实时K线图,

同时我们提供了计算器一类方便用户使用的辅助工具来进一步提高用户体验感。当然,由于

目前我们的软件只是使用单线程处理数据,故在网络状况不好时,软件操作会因这一原因而

变慢。

参考文献

[1] 启明工作室 Visual C++ + AQLServer数据库应用系统开发与实例. 北京: 人民邮电出版

社, 2004.

附录

主要程序列表:主程序:

数据库链接:

大盘行情:

下载数据:get_stock_

显示图片:

计算器:

显示个股详情:

选择数据:

查询数据:、、

致谢

感谢指导老师的悉心指导和耐心讲解,为我们完成前期设计工作指明了方向;感谢学院

提供课程设计机会和场所;感谢同几位同学的合作,是你们的智慧激励着我不断寻找解决问

题的方案。