基于B\S架构搭建属于自己的股票分析系统

本文将基于B\S架构搭建一套简单的股票趋势数据分析系统(或者说是界面-_-|||),界面如图1所示,系统架构如下图1所示。

基于B\S架构搭建属于自己的股票分析系统_第1张图片 图1 系统界面 基于B\S架构搭建属于自己的股票分析系统_第2张图片 图2 系统架构

系统主要分为三个子程序:

1. 网页界面:基于Vue框架,主要负责用户交互,输入股票代码,显示历史数据趋势图表。效果图如图1所示。

2. CSV文件转存和数据库查询程序:基于SpringBoot框架,主要负责将.csv数据转存到MySQL数据库(这个功能只提供了后端代码,没有在前端体现),根据前端界面传递过来的股票代码,到MySQL里面查询相应数据,再回传给前端。

3. CSV文件下载程序:主要负责下载股票数据,基于AKShare的Python程序。下载完成后保存为.csv格式,.csv文件的数据内容如图3所示。(注意:子程序3和1、2不是同步运行的)。

基于B\S架构搭建属于自己的股票分析系统_第3张图片 图3 .csv文件数据储存格式

==================================================

开始搭建咱们的系统:

首先,我们得准备一定数量得股票数据。如图4所示,一个.csv文件包括一天内所有股票得盘口数据。然后,将.csv全部导入MySQL数据库,导入功能代码在后面提及,导入后如图5所示。(注意:数据库的储存格式是每个月建一个数据表

基于B\S架构搭建属于自己的股票分析系统_第4张图片 图4 所有.csv股票数据文件 基于B\S架构搭建属于自己的股票分析系统_第5张图片 图5 MySQL数据库字段和表格式

然后,新建一个SpringBoot工程,具体方法参考《跑通一篇博客代码假装自己会Spring Boot》。新建工程作为CSV文件转存和数据库查询程序,只需要加入三个文件:

MysqlController.java

package com.my.stock.mysql;

import org.json.simple.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@CrossOrigin
public class MysqlController {

    @Autowired
    private MysqlService mysqlService;

    @RequestMapping("/chart")
    public List getChart1(@RequestBody JSONObject obj){
        return mysqlService.getChart(obj);
    }
}

MysqlMapper.java

package com.my.stock.mysql;

import org.apache.ibatis.annotations.*;
import org.json.simple.JSONObject;
import java.util.List;

@Mapper
public interface MysqlMapper {
    @Update("CREATE TABLE ${tableName} (\n" +
            "`id` INT(10) NOT NULL AUTO_INCREMENT COMMENT '主键',\n" +
            "`rq` VARCHAR(10) DEFAULT NULL COMMENT '日期',\n" +
            "`dm` VARCHAR(10) DEFAULT NULL COMMENT '代码',\n" +
            "`mc` VARCHAR(20) DEFAULT NULL COMMENT '名称',\n" +
            "`zxj` VARCHAR(10) DEFAULT NULL COMMENT '最新价',\n" +
            "`zdf` VARCHAR(10) DEFAULT NULL COMMENT '涨蛈幅',\n" +
            "`zde` VARCHAR(10) DEFAULT NULL COMMENT '涨跌额',\n" +
            "`cjl` VARCHAR(10) DEFAULT NULL COMMENT '成交量',\n" +
            "`cje` VARCHAR(20) DEFAULT NULL COMMENT '成交额',\n" +
            "`zf` VARCHAR(10) DEFAULT NULL COMMENT '振幅',\n" +
            "`zg` VARCHAR(10) DEFAULT NULL COMMENT '最高',\n" +
            "`zd` VARCHAR(10) DEFAULT NULL COMMENT '最低',\n" +
            "`jk` VARCHAR(10) DEFAULT NULL COMMENT '今开',\n" +
            "`zs` VARCHAR(10) DEFAULT NULL COMMENT '昨收',\n" +
            "`lb` VARCHAR(10) DEFAULT NULL COMMENT '量比',\n" +
            "`hsl` VARCHAR(10) DEFAULT NULL COMMENT '换手率',\n" +
            "`syl` VARCHAR(10) DEFAULT NULL COMMENT '市盈率',\n" +
            "`sjl` VARCHAR(10) DEFAULT NULL COMMENT '市净率',\n" +
            "PRIMARY KEY (`id`)\n" +
            ") ENGINE=INNODB DEFAULT CHARSET=utf8 COLLATE=utf8_bin")
    void createTable(String tableName);

    @Select("SELECT COUNT(*) FROM information_schema.TABLES WHERE table_name ='${tableName}'")
    List isExist(String tableName);

    @Select("select table_name from information_schema.tables where table_schema='stock'")
    List getTables();

    @Select("SELECT ${keyList} FROM ${tableName} WHERE dm = #{dm}")
    List select(String keyList, String tableName, String dm);

    @Select("SELECT * FROM ${tableName}")
    List selectAll(String tableName);

    @Insert("INSERT INTO ${tableName} VALUES (NULL,#{rq},#{dm},#{mc},#{zxj},#{zdf},#{zde},#{cjl},#{cje},#{zf},#{zg},#{zd},#{jk},#{zs},#{lb},#{hsl},#{syl},#{sjl})")
    void insertData(String tableName, String rq, String dm, String mc, String zxj, String zdf, String zde, String cjl, String cje,
                    String zf, String zg, String zd, String jk, String zs, String lb, String hsl, String syl, String sjl);
}

MysqlService.java

package com.my.stock.mysql;

import com.csvreader.CsvReader;
import org.json.simple.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.io.File;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.List;

@Service
public class MysqlService {

    @Autowired
    private MysqlMapper mysqlMapper;

    // 读取csv文件
    private ArrayList readCsvByCsvReader(String filePath) {
        ArrayList arrList = null;
        try {
            arrList = new ArrayList();
            CsvReader reader = new CsvReader(filePath, ',', Charset.forName("UTF-8"));
            while (reader.readRecord()) {
                arrList.add(reader.getValues());
            }
            reader.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return arrList;
    }

    //csv转入sql数据库
    public void csv2sql(String csvPath){
        String rq = csvPath.split("\\\\")[csvPath.split("\\\\").length-1].split("\\.")[0];
        String tableName = "m_" + rq.substring(0, 6);
        if((Long)mysqlMapper.isExist(tableName).get(0).get("COUNT(*)") == 0){
            mysqlMapper.createTable(tableName);
        }

        ArrayList data = readCsvByCsvReader(csvPath);
        for(int i=1; i getChart(JSONObject obj){
        List res = new ArrayList<>();
        List tables = mysqlMapper.getTables();
        for(int i=0;i data = data = mysqlMapper.select("rq,mc,syl,sjl,cjl,cje,hsl,lb,jk,zs", tables.get(i).get("TABLE_NAME").toString(), obj.get("dm").toString());
            for(int j=0;j

SpringBoot工程目录如图6所示。

基于B\S架构搭建属于自己的股票分析系统_第6张图片 图6 工程目录

需要注意的是,application.properties文件中配置springboot的端口号,还有pom.xml中的dependencies。

spring.datasource.url = jdbc:mysql://localhost:3306/stock
spring.datasource.username = root
spring.datasource.password = admin123
spring.datasource.driver-class-name = com.mysql.cj.jdbc.Driver

server.port = 8886
    
        
            org.springframework.boot
            spring-boot-starter-web
        
        
            org.springframework.boot
            spring-boot-starter-test
            test
        
        
            mysql
            mysql-connector-java
            8.0.23
        
        
            com.baomidou
            mybatis-plus-boot-starter
            3.2.0
        
        
            com.googlecode.json-simple
            json-simple
            1.1.1
        
        
            net.sourceforge.javacsv
            javacsv
            2.0
        
    

以上是SpringBoot工程的所有内容,接下来看Vue工程。新建一个Vue工程,具体方法参考《跑通一篇博客代码假装自己会Vue》。此外,需要安装三个npm依赖库:Element-UI、Axios、HighChart。新建工程作为网页界面,只需要添加一个文件:

StockMain.vue






Vue工程目录如图7所示。

基于B\S架构搭建属于自己的股票分析系统_第7张图片 图7 工程目录

到此所有工作已完成,简单描述一下整个系统的数据运行流程。

1.提前下载好.csv文件,使用代码将.csv数据导入MySQL;

2.创建SpringBoot工程,他提供的restful接口为" http://localhost:8886/chart ",其中8886对应application.properties文件中配置的端口号;

3.创建Vue工程,打开网页" localhost:8080 "便是我们的系统界面。输入股票代码,点击‘确定’后,前端传递股票代码给后端,后端去数据库拿数据,整理好后回传给前端,前端拿到所有数据后,更新四张图表。

代码百度云盘 链接:https://pan.baidu.com/s/1MULVRUoczOXyaAWUV1ZQOQ 提取码:xi8t

你可能感兴趣的:(韭菜历险记,java,服务器,数据库)