实验概况

实验目的:掌握设计、开发、测试、发布、调试经典三层架构软件的基本方法、工具和流程,理解层次体系结构风格基本原理、结构和特点。掌握设计系统时的“高内聚低耦合”的思想。背景及要求:

[综述研究背景:概述本项工作的研究或观察的理论基础,给出简明的理论或研究背景,一定要列举重要的相关文献。若可能指出存在问题:说明为什么要做这项工作;阐述研究目的:说明有别于他人的“主意”(此红色字体一条不做强行要求)。]

三层架构就是将整个业务应用划分为:表现层、业务逻辑层、数据访问层。区分层次的目的即为了“高内聚低耦合”的思想,在软件体系架构设计中,分层式结构是最常见,也是最重要的一种结构,三层架构软件系统为用户的数据传输、提取、储存创造了便利条件。在应用数据时,信息划分架构开发项目,对各层次之间的工作职责进行清晰规划,这样就降低了系统的维护风险。

具体任务如下:

结合课堂上讲授的“一个简单的用户信息查询程序三层逻辑架构”原理,参考以下链接中给出的 C#代码完成:

结合以下示例数据库或自选其他相当规模数据集,使用 Java 设计实现一个三层架构的业务数据分析系统。各逻辑层的功能如下:

表现层:包含输入、查询相关的控件以及数据图表的展示(如百分图,折线图);业务逻辑层:数据处理、数据分析(不少于三项统计分析功能)、数据查询;

数据访问层:负责数据库的访问,主要职责为打开、关闭数据库、构建 SQL 查询、返回查询结果。

附:SqlServer 示例数据库 Northwind

附:上证 1999-2016 的某公司股票走势数据,构建其业务数据分析系统。

修改程序以适应三个逻辑层的分布式部署,要求三个逻辑分层分别部署于客户机(本机或手机)、AWS EC2 应用服务器和 AWC RDS 数据库服务器上(即多层 C/S 架构),部署完成后能通过公网 IP 访问该系统。

使用 RSA 或 Visio 等建模工具构建软件架构模型(UML 图),要求:

画出逻辑分层结构图;

画出每个逻辑层中所包含的核心构件(此处为类);

画出每个逻辑层中构件(类)之间的关系,且要细化到聚合(Aggregation)、组成(Composition)关系并给出重数(如 1:1,1:*);

画出系统部署结构图。

实验设计(给出你的实习内容的设计方案,可根据实际情况调整条目)

系统需求环境需求:

用户需要在 C:\Users\用户名.aws 目录下设置 credentials 和 config 文件,用以保存自己的 AWS 账号信息。

用户只需要在一个终端进行操作,不需要管剩下几层是怎么运作的。

功能需求:

系统需要分为三层,每一层的进程分别在不同的主机上运行,因此需要完成:

  • 客户端明确的操作界面
  • 业务逻辑层完成数据处理
  • 数据访问层完成数据库的访问
  • 完成三层之间的通信过程

各个程序需要部署在不同的主机 质量需求:

在遇到错误指令或者系统内部发生错误后可以显示出来,不会因此导致程序崩溃。

架构设计

图 1 架构图

如图所示,我设置了5个构件,分别是访问AWS: 该构件的主要功能是链接到AWS的SQS,完成消息的发送和接收。方法是通过python的 boto3库访问SQS,然后通过队列名称获得队列,将结果保存在消息列表中。在上一次实习的时候我也用到了这个功能,但是当时没有将他们封装到一个类中,这次就把他们封装了起来,调用起来异常舒适。

客户端: 该构件的主要功能是向用户展示界面。由于本次实习我主要把精力投入在了业务的处理中,所以没有过多的展示界面…界面的逻辑很简单,就是三个按钮分别向业务处理层发送不同的消息。发送完消息后,就持续处于接收状态,接收数据处理层处理好的数据。

数据处理: 数据处理层的功能有接收客户端的消息,访问数据库,处理来自数据库的数据,向客户端发送消息。在启动之后,数据处理层会持续地接收消息,只要收到消息就开始分析消息是要进行什么操作,然后据此选择要向数据库查询什么信息,也根据这个,对于数据库返回的信息也进行相应的处理,最终发送消息回到客户端。

链接Java

由于不会直接通过python链接AWS的数据库,因此选择了曲线救国的方式…先用java写好访问DB的jar包,然后python再去调用该jar包,通过调用jar包里面的函数,完成查询 sql语句的目的。

Java访问DB:

通过输入数据库的url和登录的用户名和密码,链接数据库,并且提供数据查询的服务。

接口设计

图2 接口设计图系统的主要接口是两部分,一部分是访问AWS的,一部分是访问数据库的。其中访问AWS:

提供向消息队列发送消息,得到消息,删除消息的功能。

访问数据库: 提供链接数据库,查询数据库语句的功能。这些接口的作用分别是链接客户端和业务逻辑层之间的消息交互,以及业务逻辑层和数据访问层的消息交互。

实验过程

软件实现

本系统使用了三层架构的框架,系统开发的过程是先设计好框架,然后再根据框架所需要实现的类,功能,和接口,一步步地完成的。在开发的时候使用了迭代递增的方式,每次都只完成特定的构件,调试的没有问题,以及完成了一定的扩展性后,再向后进行开发,或者将该构件添加到模块中进行测试,最终一步步地由一个个小的模块搭建出总体的模块。

实验环境

处理器: i7-7700HQ 操作系统:windows10 开发语言:python ,java 服务器:AWS 实验场景:宿舍

实验步骤

封装访问SQS和访问数据库的功能,分别由python和java的语言完成。如上面所说,这两个接口都要提供访问和返回数据的功能,经过测试无误后进行下一步,如下图所示:


图3 链接SQS和链接数据库接口功能的验证

实现客户端和数据访问层的第一层链接,即在这两层之间使用SQS发送和接收消息。在这里的时候就要明确客户端的界面发送方式,以及数据处理层的接收方式,并且要预先想好可扩展的结构,方便之后添加功能时的数据调用。测试好的结果如下所示:

图4服务层消息发送和逻辑层消息接收

然后是实现业务处理层和数据库的链接,这里就要调用JDBC链接数据库了,首先要打包java 的代码成为jar包,然后使用python动态调用jar包,使用其根据sql查询的功能,将结果返

回到python的代码形成列表,再对其进行下一步的处理,结果如下图所示:图5 数据库查询完成 将从数据库查询到的消息经过一定的运算处理后,使用和①一样的方法,将数据发送回客户端,客户端接收到消息后,将数据绘制成图像,如下图所示

图6 本地部署三层架构完成

⑥ 通过远程桌面链接到EC2,使用百度网盘上传自己的代码以及环境配置的安装包,配

基于Python实现的业务数据分析系统相关推荐

  1. 基于Python热点新闻关键词数据分析系统

    温馨提示:文末有 CSDN 平台官方提供的博主 Wechat / QQ 名片 :) 1. 项目简介 利用网络爬虫技术从某新闻网站爬取最新的新闻数据,并进行版块分类,对某篇版块下的所有新闻进行中文分词, ...

  2. python 文件格式转换_数据分析:基于Python的自定义文件格式转换系统

    ( 白宁超 2018年7月16日14:47:41 ) 导读:随着大数据的快速发展,自然语言处理.数据挖掘.机器学习技术应用愈加广泛.针对大数据的预处理工作是一项庞杂.棘手的工作.首先数据采集和存储,尤 ...

  3. 基于Python的直播平台数据分析可视化系统

    温馨提示:文末有 CSDN 平台官方提供的学长 Wechat / QQ 名片 :) 1. 项目简介 随着移动互联网和5G的快速发展,视频直播行业呈现出丰富多元的内容形态,覆盖更多的场景和受众,视频成为 ...

  4. 基于大数据的旅游数据分析系统的设计与实现

    基于大数据的旅游数据分析系统的设计与实现 摘    要 网络技术的不断发展,使网络成为人们的日常生活中不可缺少的一部分,而旅游数据分析系统是网络的一种新型体现,它以其特有的便捷和快速的特点得到了广泛的 ...

  5. 基于python 的电影票房可视化系统

    一.介绍 电影票房可视化系统是一个实时分析电影票房的系统,应用Python爬虫.Flask框架.Echarts等技术实现. 二.系统运行图 首页 实时票房排名 票房排行top10 电影类型票房占有率 ...

  6. 基于python的气象数据分析统计服_基于Python的风向风速数据分析的设计与实现

    基于 Python 的风向风速数据分析的设计与实现 李文倩 ; 刘婕 [期刊名称] < <信息通信> > [年 ( 卷 ), 期] 2019(000)009 [摘要] Pyth ...

  7. python微信好友分析_基于python实现微信好友数据分析(简单)

    一.功能介绍 本文主要介绍利用网页端微信获取数据,实现个人微信好友数据的获取,并进行一些简单的数据分析,功能包括: 1.爬取好友列表,显示好友昵称.性别和地域和签名, 文件保存为 xlsx 格式 2. ...

  8. 基于Python的二手房交易价格系统

    20005 基于Python的二手房交易价格系统 运行视频.代码等: 链接:https://pan.baidu.com/s/1tw4Qvtcuwt7ys36M7HvLSg 提取码:1589 复制这段内 ...

  9. NVIDIA专家实战演示,教你快速搭建基于Python的车辆信息识别系统

    主讲人 | 何琨 英伟达 量子位编辑 | 公众号 QbitAI 随着智慧城市.自动驾驶的快速落地,车辆的检测和识别应用场景非常广泛,如车牌识别.车流统计.车辆属性识别等. 近日,在英伟达x量子位发起的 ...

最新文章

  1. 今日 Paper | 社交媒体谣言检测;连续手语识别;细粒度服装相似性学习;混合图神经网络等
  2. 【CodeVS】p1299 切水果
  3. CS231n 学习笔记(2)——神经网络 part2 :Softmax classifier
  4. 爱奇艺如何开启两指双击触发奇观功能
  5. 【NOIP2017提高组模拟12.10】神炎皇
  6. MUI框架 · 异步请求:mui.get()、mui.ajax()、mui.post() 技术罗列
  7. python 屏幕输入 读取两行_一节课带你掌握Python的输入输出
  8. 读《图解TCPIP》
  9. kali安装loic
  10. JAVA 大文件压缩极速下载
  11. 百度暑期前端实训DAY1心得
  12. 浅谈opencv3.2中各个模块的简介
  13. 机器学习——支持向量机support vector machine
  14. MT7658芯片组资料,MT7658处理器参数介绍
  15. vue项目初始化出现tar ENOENT: no such file or directory错误的解决办法。
  16. not enough arguments in call to oprot.Flush
  17. 网盘搜索工具整理2020.8
  18. 利用Sobel算子,求梯度图像
  19. android实现电话通信原理,电话通信原理.pdf
  20. 项目目录游戏服务器,Yivgame是一个基于go-kit的微服务游戏服务器

热门文章

  1. 【转】关于羽毛球拍拉线方法的介绍
  2. 蓝叠模拟器(bluestacks)设置通过fiddler抓包
  3. Android 入门开发指南之三 -- 在其他平台下开发
  4. ecshop报错:Deprecated: Methods with the same name as their class will not be constructors in a futur
  5. 正则表达式模块 正则函数★★★★★
  6. 独立产品灵感周刊 DecoHack #011
  7. SAP 客供物料 S4 HANA解决新方案
  8. python打印小票_PyQt5中使用Qprinter打印热敏小票
  9. JAVA导出excel 动态合并单元格
  10. 日历 通知栏 android9,多功能万年历(掌上万年历)app