(共37张PPT)
第四章 信息系统的搭建实例
4.2 搭建信息系统
学习目标
掌握信息系统搭建的基本过程,主要包括硬件搭建和软件模块编写两方面。
硬件搭建包括服务器、网络设备、传感设备、智能终端等。
软件开发一般包括数据管理设计、服务器端程序、客户端程序几个部分。
开发 “意愿”
切实可行的“规划”
需求分析
可行性分析
开发模式的选择
概要设计
详细设计
经过前期准备,信息系统
搭建好了吗?
意愿
搭建信息系统前期准备
规划
搭建信息系统
实现
从何入手?
信息系统的搭建主要包括:________和________________两方面。
硬件:系统建立的基础,其技术指标决定系统运行速度、可靠性、适用范围、可维护性等。
软件:控制系统运行的中枢,主要包括________、____________和在这些系统基础上开发出来的________。
硬件搭建
软件模块选择或编写
操作系统
数据库管理系统
应用软件
新课讲授
知识点4.2.1:硬件搭建
硬件
服务器
为信息系统中的用户提供各种服务,如应用程序的处理、访问数据库管理系统、打印服务等。
网络设备
通过网络来完成数据的传递。
网络设备主要包括:_______、_______、_____、________、______等。
传感设备
即传感器,是重要的输入设备,负责检测并将信息变换成电信号或其他形式信息输出。
智能终端
智能终端大部分功能需要依靠传感器实现,包括____、___、_____和_____四个部分。
信息系统还可能有执行器、控制器等设备。
交换机
路由器
网卡
双绞线
光缆
输入
处理
存储
输出
名称 功能描述
TX( transmit) 发送端
RX(receiver) 接收端
GND(ground) 电源负极
VCC(Volt Current Condenser) 电源正极
IoT(Internet of Things,物联网)模块:可以用于自身不能联网、但是有串口功能的智能硬件,原理是串口转wifi物联网。
例1 小明设计了一款教室环境实时监测系统,通过实时采集教室内的温湿度、CO2 含量来实现教室空气质量监测,并根据监测情况及时做出预警,该系统的结构如下图所示:
根据阅读材料,下列说法正确的是( )
A.该系统至少要包含温湿度传感器、CO2传感器和光敏传感器
B.为保证将数据传输到数据库,智能终端必须用数据线连接到Web服务器
C.可以通过修改温湿度、CO2的标准阈值来调整系统预警的灵敏度
D.温度传感器实现了温度数据由数字信号转换为模拟信号的功能
C
解析:A选项无需使用光敏传感器;
B选项终端和远程服务器通过网络连接,无需数据线直接连接;
D选项温度传感器可以将温度数据由模拟信号转换为数字信号。
例1变式训练1 关于例1的系统架构的描述,正确的是 ( )
A.该系统采用B/S模式搭建
B.该系统架构不支持多个用户同时访问
C.服务器处理的数据来源于智能终端,无法定位产生数据的传感器
D.该系统的服务端程序无需连接数据库来获取和保存数据
A
解析:采用远程Web服务器;因此该系统采用B/S模式。
例1变式训练2 关于硬件搭建的说法,下列选项中不正确的是 ( )
A.服务器为信息系统中的用户提供各种服务,如应用程序的处理和打印服务等
B.网络设备主要包括交换机、路由器、网卡、双绞线、光缆等
C.传感设备是信息系统中重要的输入设备,主要负责检测
D.智能终端的功能不需要依靠传感器来实现
D
解析:智能终端包括输入、处理、存储和输出四个部分,其大部分功能需要依靠各种传感器来实现。
知识点4.2.2:软件开发
信息系统的软件开发一般包括__________、_________、_______几个部分。
1.数据管理设计
主要负责与具体数据管理系统相衔接,包括数据采集、传输、存储、呈现等方面,为系统中需要长久存储的数据对象提供数据存储的方案。
数据管理设计
服务器端程序
客户端程序
数据采集
数据传输
数据存储
有线
无线
数据呈现
(1)数据采集
数据采集是利用一种或多种装置,从系统外部采集数据并输入系统内部一个接口的过程。
常见采集方法:键盘输入、利用光电设备采集、多媒体输入、网络传送、磁盘输入等。
在“室内环境实时监测系统”中,数据采集主要依靠各种传感器来完成。
(2)数据传输
通过传输介质传送到服务器进行加工处理和存储。
常见的传输介质:有线和无线两种。有线介质包括双绞线,同轴电缆和光缆;无线介质包括微波、卫星、超短波和短波信道等。
在“室内环境实时监测系统”中,智能终端到Web客户端可以采用USB线缆,也可以采用蓝牙,Web客户端则一般采用Wi-Fi,将数据传送到Web服务器。
(3)数据存储
常见方式:文件、数据库、云存储。
文件使用较为简单,方便程序自定义格式;
数据库性能优越,方便查询,可以加、解密,以及跨平台应用等;
云存储通过网络把数据实时传输到数据处理中心进行存储及处理。
(4)数据呈现
把分析结果用最容易理解和最美观的方式展现出来。
表格:比较简便;图形化:更好体现。
常用数据图类型:柱状图、条形图、折线图、饼图、气泡图、漏斗图、GIS地图、词云等。
2.程序编写
软件开发涉及服务器端程序和客户端程序。
B/S结构一般只写服务器端程序,如网站,只需完成服务器端程序,浏览器就是客户端程序,不用再写,使得部署、更新更加容易;
C/S结构服务器端程序和客户端程序都要写,类似QQ、网游等。
例2 小王打算做一个家庭燃气泄露报警装置。他设想利用智能硬件连接传感器,放在厨房来监测可燃气体浓度,并每隔10秒钟通过无线网络上传数据到服务器数据库中。同时另一个智能硬件放在卧室,也通过无线网络来读取服务器数据库中的最新数据,当数据大于设定阈值时智能硬件会发出报警声音。
请回答下列问题:
(1)在该项目的前期规划中,在完成需求分析后,需要进行的是____________(选填:可行性分析/概要设计/详细设计)。
(2)在该项目的硬件选择中,最需要涉及的传感器为:____________(选填:温度传感器/湿度传感器/声音传感器/气敏传感器)。
(3)小王采用SQLite数据库来存储数据,他在数据库文件data.db中新建了gas_val数据表,该表结构如下表所示:
可行性分析
气敏传感器
并利用flask编写了如下服务器代码:
from flask import Flask,request
import datetime
import sqlite3
app=Flask(_ _name_ _)
@app.route("/submit",methods=['GET'])
def submit():
val=int(request.values.get('v'))
dt=datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
db=sqlite3.connect("data.db")
cur=db.cursor()
cur.execute("INSERT INTO gas_val(val,dt)VALUES(%d,'%s') "%(val,dt))
mit()
db.close()
return "ok"
@app.route("/getdata",methods=['GET'])
def getdata():
db=sqlite3.connect("data.db")
cur=db.cursor()
cur.execute("SELECT val FROM gas_val order by dt DESC")
字段名称 字段类型 说明
val INTEGER 存储可燃气体浓度值
dt TEXT 存储上报时间
#查询结果按dt字段降序排序
val=cur.fetchone()[0]
db.close()
return str(val)
if_ _name_ _=="_ _main_ _":
app.run(" 192.168.1.100 " ,port=8080)
某一时刻可燃气体传感器的浓度值为35的数据,可以推断出该智能硬件上报数据时所需发起HTTP请求的包含协议名称、IP地址、端口号和路径的完整URL为:________________。
http:∥192.168.1.100:8080/submit?v=35
(4)放在卧室的智能硬件每隔10秒钟会通过请求getdata接口来获取最新的可燃气体浓度数据,若该数值大于50则发出报警声音。以下智能硬件相关代码划线处应填入:______________。
from microbit import *
import Obloq
IP='192.168.1.100'
PORT="8080"
SSID="jf"
PASSWORD="pkq88888"
while Obloq.connectWifi(SSID,PASSWORD,10000)!=True:
display.show(". ")
Obloq.httpSet(IP,PORT)
while True:
erron,resp=Obloq.get(" getdata " ,10000)
if ________________:
music.play(music.DADADADUM)
else:
music.stop()
sleep(10000)
int(resp)>50
例2变式训练 小明搭建了一个“机房烟雾报警系统”,实现如下功能:当室内烟雾浓度达到设定的阈值时,将触发蜂鸣器发出警报声,并记录报警时间,传感器编号,烟雾浓度等数据。系统架构示意图如图所示。
请回答下列问题:
(1)根据该系统的功能要求,图中①②两处分别表示的设备名称是:
①__________,②__________(选填字母:A.防火墙,B.传感器,C.执行器,D.路由器)
C
B
(2)将烟雾传感器连接智能终端后,获取烟雾数据的部分代码如下:
while True:
smoke=pin2.read_analog()
sleep(1000*5)
if smoke > 1000:
pin0.write_digital(1)
else:
pin0.write_digital(0)
从代码看出,连接烟雾传感器的引脚是________,连接蜂鸣器的引脚是________。
p2(pin2)
p0(pin0)
(3)从图中可以看出,该系统架构是模式________(选填字母:A.C/S,B.B/S)。
(4)利用SQL数据库进行烟雾数据的储存,数据库文件名为" test.db " ,需要实现打开、写 入、关闭等功能,现有下列命令: ①db=sqlite3.connect(" test.db ") ②cu=db.cursor ③import sqlite3 ④cu.close()
⑤db.close() ⑥cu.execute(" INSERT INTO sensorlog(sensorid,sensorvalue,updatetime) VALUES(%d,%f,'%s') "若实现上述功能,则上述语句执行的先后顺序是________________。
B
③①②⑥④⑤
例3 小明为家庭小菜园搭建了环境温湿度监测系统,该系统结构示意图如图所示。Web服务器端程序采用FlaskWeb框架开发。传感器采集的数据由智能终端经IoT模块发送到Web服务器,执行器用于实现温湿度的控制。请回答下列问题:
(1)下列选项标注了图中虚线框内的智能终端与传感器执行器之间的数据传输关系,其中合理的是________(单选,填字母)。
A
(2)该系统网络应用软件的实现架构是________(单选,填字母:A.B/S架构 /B.C/S架构)。
(3)若传感器的编号id为1,湿度值h为60提交数据到Web服务器的URL为http:∥192.168.1.6:5000/toserv?h=60&id=1,则服务器端应用实例app中与该URL关联的路由设置语句是@app.route('________')。
(4)菜园里的蔬菜适宜生长的空气温度范围
是tmin~tmax。现要求当温度t正常、偏低、
偏高时,将sta的值对应设为0、1、2。下列
Python程序段中符合要求的有__________
(多选,填字母)。(注:全部选对的得2分,
选对但不全的得1分,不选或有选错的得0分)
A
/toserv
BD
(5)小明设定采集并上传数据的时间间隔为1分钟。他用浏览器查看温湿度页面,页面动态显示最新的温度、湿度及其采集时间。系统正常工作一段时间后,他发现该页面不再变化,刷新后仍不变。结合图,简要说明系统中可能造成上述问题的原因________(本系统中,传感器损坏传感器和智能终端连接异常,不会造成上述问题)。(注:回答2项,1项正确得1分)
①连接物联网模块与Web服务器的无线路由器无法正常工作;②物联网模块损坏;
③数据表对记录数有数量限制,当记录数达到一定程度时,数据表不再更新。
④Web服务器中数据库管理系统无法正常运行。
例3变式训练 小李为某网吧做了一个网络拓扑设计图,如下图所示,为了提高消防安全性,利用Micro:bit开发板设计了一个烟雾报警系统,每隔10秒将信号发送到服务器并存入数据库,如果监测到烟雾值超标则打开报警装置。管理员可以通过浏览器查询所有记录。
(1)在网络拓扑结构中①处的设备为________(单选,填字母:A.路由器/B.调制解调器/C.交换机) 。
(2)为了让智能终端能够通过无线网络传递数据,需要在智能终端中连接________(单选,填字母:A.Wi-Fi/B.IoT/C.LAN)模块。
(3)智能终端测量环境中的湿度和烟雾值的部分代码如下:
while True:
s = pin1.read_analog()
errno,resp = obloq.get("putval?sv="+str(s),10000)
if errno == 200:
pin8.write_digital( int(resp))
else:
display.show( str(resp))
sleep(10*1000)
根据代码所示,报警装置连接在智能终端的引脚是________。
(4)服务器端的部分代码如下,请在划线①处填入合适的代码。
A
B
pin8
(5)变量t用来接收数据,请为加框处选择合适的代码填入其中________。(单选,填字母)
A.request.args.get(" sv ")
B.request.form.get(" sv ")
C.request.args.get(" s ")
D.request.form.get(" sv ")
app = Flask(_ _name_ _)
@app.route('/search')
def search():
#从数据库中查询相关记录,并在网页中展示,代码略
@app.route(①________,methods=['GET'])
def putdata( ):
t=
#将收到的数据存入数据库,并从中查询报警的阈值,存入变量maxs,代码略
if int(t) > maxs :
return 1
else:
return 0
if _ _name_== '_ _main_ _ ':
app.run( host='168.34.2.77',port=5000)
(6)根据上述代码,要查询相关记录,对应的URL为__________
'/putval'
A
http:∥168.34.2.77:5000/search
课堂小结
硬件搭建
搭建信息系统
软件开发
客户端程序
数据管理设计
服务器端程序
服务器
网络设备
传感设备和智能终端