内容正文:
信息系统大题知识点整理
1. microbit考点
(1) 智能终端连接传感器,获取传感器的函数(语句)【读取pin1上连接的传感器所获取的值】
pin1.read_analog()
注:需熟悉有哪些传感器:温度传感器、湿度传感器、声敏传感器等等
(2) 智能终端连接控制器,控制控制器的函数(语句)
pin11.write_digital(1) #打开pin11连接的设备
pin11.write_digital(0) #关闭pin11连接的设备
(3) 程序在执行过程中等待1分钟后再运行
sleep(1000*60)
(注意:此函数使用时里面的参数单位为:毫秒【1s=1000ms】,单位转换容易出错)
(4)LED屏显示内容
display.show(参数) #直接显示
display.scroll(参数) #滚动显示
2. flask考点
(1) 基础的flask程序
from flask import Flask
app=Flask(__name__) #创建应用实例
@app.route(‘/’) #创建路由
def index() #定义页面视图
return '这是我的第1个网页程序!' #网页的内容
if __name__==”__main__”:
app.run(host=”127.0.0.1”,port=5000) #IP地址和端口号
注:app.run(debug=True/False),默认为False,所以一般省略不写,即为关闭调试模式。
若打开调试模式,即设置为True,当调试程序出现问题时,错误信息会在浏览器中显示,因此系统发布网页后调试模式应选择关闭。
(2) 获取参数的方式
①get获取方式:从网址中获取参数
@app.route(‘/’,methods=[‘GET’]) #设置GET方式获取参数
变量名=request.args.get(“参数”) #获取参数语句实现
服务器端程序示例:
from flask import Flask,request
app=Flask(_name_)
@app.route(“/get_test”,methods=[‘GET’]) #设置路由和获取参数方式
def index(): #视图函数
m=request.args.get(“name”) #获取网址中name传递的值:800(string型),并赋值给变量m
return “你好,”+m #返回字符串,显示在网页上,如上图所示
if __name__==”__main__”:
app.run(host=”127.0.0.1”,port=8000) #对应网址的IP和端口
在flak程序中,若未设置ip与端口号,那么默认的IP地址为127.0.0.1,端口号为5000
【注意:网址里面参数的值是从传感器来获得的(结合智能终端程序理解)
若在@app.route()中没有说明获取值的方式是GET还是POST,则默认为GET】
【考查方式:】
①根据所示网址进行程序填空:@app.route(__________________)
答案:”/get_test” (注意:/和””均不能省略,methods默认是GET模式,可以不用写出来)
②该网页的视图名称为________________
答案:index()或index
智能终端程序示例:
IP = "127.0.0.1" ; PORT= "8000" ; SSID = "jf" ; PASSWORD = "20220324" #ip、端口、WiFi账号、密码
Uart.init(baudrate = 115200,bits=8,parity=None,stop=1,tx=pin2, rx=pin1)
连接IoT模块,注意IoT模块的tx和rx针脚与智能终端的pin口交叉连接(加框处),即tx物理连接的是pin1
while Oboq.connectWifi(SSID,PASSWORD,10000) ! = True:
display.show("HI") #若LED屏显示 HI ,说明连接WiFi失败
display.scroll(Obloq.ifconfig( )) #LED屏滚动显示IP地址
Obloq.httpSet(IP,PORT) #根据ip和port建立连接
while True:
temp=pin11.read_analog() #传感器获取环境值
errno,resp = Oboq.get(“/get_test?name=”+str(temp),10000) #通过字符串拼接出一个网址URL,结合上图,将其从智能终端通过网络传递到服务器端,并从服务器端获得回复:errno和resp
if errno = = 200: #错误值为200,说明数据成功上传服务器
display.scroll(resp)在拼接的URL中,所有的内容都为字符类型,因此,在程序中若要用到某些变量里存储的值,需要将其转化成为整形(int())或者是浮点型(float())
else:
display.scroll(str(errno))
sleep(6000) #间隔6秒读取一次环境值
【考查方式】
①连接IoT模块时,TX针脚连接在智能终端的______口。
答案见程序中红色处注释
②智能终端和服务器是双向传输还是单向传输--双向传输:
如语句:errno,resp = Oboq.get(“/get_test?name=”+str(temp),10000),智能终端传递字符串作为网页的网址给服务器,服务器反馈errno和resp。
③程序或网址填空:
网址:http://127.0.0.1:8000/get_test?name=800
传感器获取值代码:temp=pin11.read_analog()
传递网址代码:errno,resp = Oboq.get(“/get_test?name=”+str(temp),10000)
获取网址中的参数代码:m=request.args.get(“name”)
设置IP和端口代码:app.run(host=”127.0.0.1”,port=8000)
标红处为常见程序填空,以上四条语句和网址互为线索,需了解它们之间的联系,从而推理出结果。
②post获取方式:在网页里面获取用户输入参数,使用了html页面进行渲染(考察频率较低)
对应函数:request.form.get()
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>访问</title>
</head>
<form action="/login" method="post"> #点击按钮后跳转到”/login”对应网址,即右侧双下划线处
<p>科目</p >
<p><input type="text" name="km"/></p >
#用户在文本框中填写的内容会传递给km
<p><input type="submit" value="sub"/></p>
#设置按钮,点击后可以跳转网页
</form>
</html>
from flask import Flask,request
app=Flask(_name_)
@app.route(“/”) #主视图
def index():
return render_template(“index.html”)
#渲染html模板文件,即左侧代码
@app.route(“/login”,methods=[‘POST’])
def login():
rs=request.form.get(“km”)
#获取km中的值,即文本框中的值
return “访问:”+rs
if __name__==”__main__”:
app.run( )
③直接使用html页面在函数中传递参数
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>index</title>
</head>
<body>
This is index Page !
<p>The word is {{ myword }}</p>
</body>
</html>
from flask import Flask, render_template
app = Flask(__name__)
@app.route("/")
def index():
return render_template("index.html", myword = "I Love Flask")
if __name__ == "__main__":
app.run( )
(3) URL问题(协议(http://)+IP地址(host)+端口号(port)+路由)
①根据URL填写路由和IP地址以及端口号
②填写URL
URL在填写时需要注意的是,普通的URL写完路由就结束了,但是对于用GET方式来传递值的程序,还需要在路由后拼接变量:路由后面+?变量名=变量值(&变量名=变量值)
例:http://192.168.1.15:8080/user?name=xiaowang&banji=1班
注意:URL在书写时,变量若为字符串,不加引号””
【随堂练习】
“智能终端”部分代码如下:
from microbit import *
import Obloq
# 设置服务器参数、WiFi 名称密码和当前盆裁的 uid,并连接 WiFi,代码略
while True:
hu =_________①_________ #传感器连接在1号引脚上
status,resp = Obloq.get("input?uid="+str(uid)+"&.hum="+str(hu),2000)
if status == 200:
if resp == '1': #若服务器回复1,则打开水泵进行灌溉
pin12.write digital(1)
_____②___________
______③__________ #灌溉5s后,停止灌溉
else:
display.scroll(str(status))
sleep(60*1000)
Web 服务器端程序使用 Flask 框架编写,部分代码如下,请在划线处填入合适的代码。
#导入 flask 等相关的库,代码略
app = Flask(__name__)
@app.route(“ ④ ”,methods=[“GET”])
def insert():
uid = request.args.get('uid') # 获取花盆编号值
data = float( ⑤ ) # 获取土壤湿度值
value = 300 #设置阈值,若小于等于300,则让智能终端打开水泵灌溉
if data > value:
water = 0
else:
water = 1
#将接收到的数据存入数据库,代码略
return str(water) #返回给resp,用于控制执行器开关
if __name__== '__main__ ':
app.run(host='192.168.1.100',port=8080)
系统搭建好后,若 uid 为 1 的盆裁某次采集到的土壤湿度值为 200,则将该值上传到服务器端的 URL为________________________⑥______________________________,网页的视图函数为:_______⑦_____________
答案:
①pin1.read_analog() ②sleep(5000)
③pin12.write digital(1) ④/input
⑤request.args.get('hum') ⑥http://192.168.1.100/input?uid=1&hum=200
⑦insert()或insert
(4) 信息系统开放题
A.程序出现故障(通过数据传输过程分析故障点)
如图数据传输过程:
智能终端(micro:bit板【内烧录了micro:bit需要实现的程序】):传感器→智能终端→执行器
web服务器(【内有flask、sqlite数据库程序】):智能终端⟺ IoT模块⟺ WiFi⟺ web服务器⟺ 数据库
客户端:客户端⟺ 互联网⟺ Web服务器
故障原因分三类:
①硬件:如传感器故障;
②传输:如传感器与智能终端连接损坏或WiFi异常;
③软件:如web服务器中读取数据库数据的程序有误。(格式只作为参考,开放题最重要明晰系统运行的原理、数据的流向,根据题干分析信息,哪些功能有误,哪些功能完好,进而分析原因,切记答案要指出具体故障位置及原因)
B.系统拓展功能
需指出添加了什么传感器,什么执行器,哪些数据如何变化导致执行器做出何种反应。
注意:高考很有可能不考我们一直练习的故障题或功能拓展题,所以不要盲目记答题格式,理解原理。
(5) 信息系统概念考点
①搭建信息系统的前期准备
Ⅰ.需求分析是指明确用户对所搭建系统的目标期待,由此分析出该系统的功能需求、性能需求、资源和环境需求、用户界面需求、可扩展性需求等
Ⅱ.可行性分析:系统搭建是否需要马上开始进行;从技术、经济、社会意义等方面分析可行性
Ⅲ.开发模式选择:B/S模式和C/S模式
模式
B/S(通过网址使用系统)
C/S(通过应用软件使用系统)
优点
升级和维护方便
降低了通信系统的开销和开发难度
服务器负荷小
缺点
服务器负荷较重,对服务器要求高
升级和维护困难
使用B/S的信息系统并不意味着不安装任何应用软件,浏览器也属于应用软件
Ⅳ.概要设计:模块结构设计、系统物理配置、数据库管理系统选择
a.模块结构设计:把系统分为若干个模块,每个模块完成一个特定的功能
b.系统物理配置:硬件设备配置、应用软件的选择和通信网络的选择和设计等
c.数据库管理系统的选择:考虑数据库的性能、数据的类型、数据库管理平台和安全保密性能等
Ⅴ.详细设计
a.输入设计:数据内容的确定、输入方式与设备的选择、输入数据的正确性校验
b.输出设计:确定输出内容、输出格式,选择输出设备和介质
c.人机界面设计:友好、美观、简洁、统一
d.数据库设计:确定数据库结构,数据交换格式
e.代码设计:系统代码编写规则、编码设计和代码维护设计
f.安全设计:提出安全设计方案
②完善信息系统
A.系统测试
B.软件测试
a. 正确性证明:通过数学技术,选择代表性的数据来进行验证程序
一个程序可以通过测试被证明是不正确的,但是它不能被证明是正确的,即测试只能发现程序错误,但不能证明程序无错。
b. 静态证明:采用人工检测和计算机辅助分析的手段,对程序的编程格式和结构等方面进行评估
c. 动态测试:直接在客户端或服务器上运行程序
(6) 文档考察知识点
可行性研究报告:在可行性分析过程中,涉及到的内容
系统分析说明书:
系统设计说明书:
程序设计报告:程序结构图;程序控制图;算法;程序流程图;源代码等
系统测试报告:
系统使用和维护手册
系统评价报告
3. sqlite考点
1.基础知识此处可以看出数据库的名称
(1)创建连接SQLite数据库
conn=sqlite3.connect(‘data.db’) #连接数据库
(2)创建游标
cu=conn.cursor()
(3)执行表语句(注:在下面程序中斜体的字母为数据表的名称:cs)
a.创建表语句
cur.execute('CREATE TABLE cs (''学号'' INTEGER,''姓名'' TEXT,''性别'' TEXT ,''联系地址'' TEXT )')
conn.commit() #提交事务(更新数据库)
b.插入表数据
cur.execute('INSERT INTO cs (学号,姓名,性别,联系地址) VALUES ("202206","马名","男","台州")')
conn.commit() #提交事务(更新数据库)
c.删除表中数据
cur.execute('DELETE FROM cs WHERE 学号="202206" ')
conn.commit() #提交事务(更新数据库)
d. 修改表中数据
cur.execute('UPDATE cs SET 姓名 = "李四" WHERE 学号 = 202202')
conn.commit() #提交事务(更新数据库)
e. 查询表中数据
cur.execute(' SELECT * FROM cs WHERE 性别 = "男" ') #执行 SQL 命令
data = cur.fetchall() #获取查询结果的全部数据
data中存储的内容格式:[(202201,’张三’,’男’,’宁波’),(202202,’李四’,’男’,’金华’),(202205,’顾白’,’男’,’宁波’)]
筛选出符合条件的语句会赋值到一个变量中,此时这个变量里面存储的内容是一个二维的序列,引用时注意引用的方法
如需要引用data中的姓名:
for i in range(len(data)):
m.append(data[i][1])
# 循环结束后m的值为[‘’张三,’李四’,’顾白’]
在SQLite与flask语句建立连接后,除了select语句可以不需要使用提交(conn.commit())函数,其他语句均需要如上述程序所示
(4)关闭链接和游标
cu.close( )
conn.close( )
注意先后顺序,与创建链接的顺序相反
2. 从语句中读取出数据表名、字段名
3.执行表语句时,给出的非固定值,值存在变量值,正确的表达方式:
a.
'CREATE TABLE users(name "%s", pass"%s") % (name,pwd)‘
“INSERI INTO classroom(id,vd,time) VALUES(%d,%f,’%s’) " %(d,vd,nowtime)
#%d说明对应的为整型值,%s说明对应的为字符串值,%f说明对应的为实型值
b.
x=' SELECT * FROM stu WHERE ? > ? '
cur.execute(x,(score,70))
相当于
cur.execute(' SELECT * FROM stu WHERE score > 70 ')
?和*为通配符,?表示这个位置可以替代为任意一个值,*表示所有值。
学科网(北京)股份有限公司
$$