高中信息技术(Python) 必修2 信息系统与社会 源代码
本文章原文地址:https://www.cnblogs.com/BobHuang/p/16695516.html,原文体验更佳
第一章 信息系统概述
1.1 信息技术与信息系统
1.2 信息系统的组成与功能
1.3 信息系统的应用
1.4 信息社会及其发展
第二章 信息系统的支撑技术
2.1 计算机硬件
2.2 计算机软件
2.3 移动终端
2.4 传感与控制
P54 microbit 获取环境温度
from microbit import *
while True:
print(temperature())
sleep(200)
P55 microbit 通过串口调试查看串口数据
import serial
ser = serial.Serial()
#设置通讯波特率,需要与micro:bit中设定的通讯速率一致
ser.baudrate = 115200
#设置串口号
ser.port = 'COM3'
ser.open()
while True:
print(ser.readline())
P56 microbit 将得到的串口数据保存到文本文件
import serial
ser = serial.Serial()
ser.baudrate = 115200
ser.port = 'COM3'
ser.open()
f=open('microbit.txt', 'wb')
a=20
while a>0:
a-=1
line=ser.readline()
print(line)
f.write(line)
f.close()
ser.close()
* P61 实践与体验 用计算机控制micro:bit的LED阵列
microbit烧录程序
from microbit import *
while True:
if uart.any():
incoming = str(uart.readall(), "UTF-8")
incoming=incoming.strip('\n')
if incoming=='H':
display.show(Image.HAPPY)
print("I am happy")
elif incoming=='S':
display.show(Image.SAD)
print("I am sad")
else:
print("err")
通过串口用Python程序控制microbit的LED阵列
import serial
ser = serial.Serial()
ser.baudrate = 115200
ser.port = 'COM3'
ser.open()
有规律地切换表情
import serial,time
ser = serial.Serial()
ser.baudrate = 115200
ser.port = 'COM3'
ser.open()
while True:
time.sleep(1)
ser.write('H'.encode())
time.sleep(1)
ser.write('S'.encode())
shell内交互控制LED阵列
import serial,time
ser = serial.Serial()
ser.baudrate = 115200
ser.port = 'COM3'
ser.open()
while True:
name=input()
ser.write(name.encode())
line = ser.readline()
print(line.strip().decode())
2.5 网络系统
2.6 网络应用软件开发
安装网络应用涉及的模块可以将如下代码复制到shell中执行安装,将其保存为.bat可以一键安装
pip install Flask==1.0.2 -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install Flask-Script==2.0.6 -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install Flask-Bootstrap==3.3.7.1 -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install Flask-Moment==0.6.0 -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install WTForms==2.2.1 -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install Werkzeug==0.16.0 -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install Flask-WTF==0.14.2 -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install Flask-SQLAlchemy==2.3.2 -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install SQLAlchemy==1.3.17 -i https://pypi.tuna.tsinghua.edu.cn/simple
P81 例1 用Flask Web框架实现一个在网页中显示文本“这是我的第一个网页程序!”的web应用
from flask import Flask
from flask_script import Server,Manager
app = Flask(__name__)
manager = Manager(app)
server = Server(host="0.0.0.0",port=80,threaded=True)
manager.add_command("runserver",server)
@app.route('/')
def index():
return '这是我的第一个网页程序!'
if __name__ == '__main__':
manager.run()
P82 例2 使用FlaskForm模块实现网络聊天机器人简单对话的功能 webrobot.py
from flask import Flask, render_template
from flask_script import Server, Manager
from flask_bootstrap import Bootstrap
from flask_moment import Moment
from flask_wtf import FlaskForm
from wtforms import StringField, SubmitField
from wtforms.validators import Required
import sys
sys.path.insert(0, "../")
import aiml
k = aiml.Kernel()
k.learn("cn-startup.xml")
k.respond("load aiml cn")
k.respond("start")
app = Flask(__name__)
app.config['SECRET_KEY'] = 'hard to guess string'
manager = Manager(app)
server = Server(host="127.0.0.1", port=80, threaded=True)
manager.add_command("runserver", server)
bootstrap = Bootstrap(app)
moment = Moment(app)
class NameForm(FlaskForm):
name = StringField('请开始交谈:', validators=[Required()])
submit = SubmitField('提交')
@app.route('/', methods=['GET', 'POST'])
def index():
name = ''
form = NameForm()
if form.validate_on_submit():
name = form.name.data
form.name.data = ''
return render_template('index.html', form=form, name=k.respond(name))
if __name__ == '__main__':
manager.run()
全部打包代码,已设置bat,支持一键运行
* P84 实践与体验 为聊天机器人增加聊天记录
1.创建数据表
CREATE TABLE "tlkTxt" (
"id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
"own" INTEGER,
"txt" TEXT
);
第三章 信息系统安全
3.1 信息安全与保护
3.2 信息系统安全与防护
P106 凯撒密码算法的程序实现
原代码在边界字符会出错,以下为笔者修改后的代码
def change(code,key):
if 'a'<=code<='z':
t=ord(code)-ord('a')+key
return chr((t+26)%26+ord('a'))
if 'A'<=code<='Z':
t=ord(code)-ord('A')+key
return chr((t+26)%26+ord('A'))
return code
def encrypt(code,key):
code_new =""
for s in code:
code_new += change(s,key)
print(code_new)
return code_new
def decrypt(code,key):
code_new =""
for s in code:
code_new +=change(s,-key)
print(code_new)
return code_new
def main():
print("请选择数字1或2:")
print("1:加密")
print("2:解密")
select = input()
if select == "1":
code = input("请输入加密字符串:")
key = int(input("请输入偏移位数:"))
encrypt(code,key)
elif select == "2":
code = input("请输入解密字符串:")
key = int(input("请输入偏移位数:"))
decrypt(code,key)
else:
print("输入错误,请重试!")
if __name__ == '__main__':
main()
第四章 信息系统
4.1 搭建信息系统的前期准备
4.2 搭建信息系统
P135 拓展链接 在Python中使用SQLite数据库
# 连接SQLite数据库
coon=sqlite3.connect('test.db')
#创建SQLite表sql语句
create table students(name text, area txt, id int)
# 插入记录sql语句
insert into students(name, area, id) values(‘Lisi','Hangzhou',18)
# 查询记录(select)、删除记录(delete)、更新记录(update)
P137 室内环境实时监测系统 Web服务器代码
# coding= UTF-8
import sqlite3
import datetime
import json
from flask import Flask,render_template, request
DATABASE = 'data/data.db'
app = Flask(__name__)
@app.route("/")
def hello():
db = sqlite3.connect(DATABASE)
cur = db.cursor()
cur.execute("SELECT * FROM sensorlog WHERE sensorid =1")
data = cur.fetchall()
cur.close()
db.close()
temp1 = data[len(data) - 1]
temp=temp1[2]
return render_template('vews.html', data=data,temp=temp)
#Get data
@app.route("/get",methods=['GET'])
def get_data():
sensorid=int(request.args.get('id'))
db = sqlite3.connect(DATABASE)
cur = db.cursor()
cur.execute("SELECT * FROM sensorlog WHERE sensorid = %s"% sensorid)
data = cur.fetchall()
dbsum=len(data)
dset={'sensorid':sensorid}
temp=[]
for i in range(dbsum):
value={}
value['sensorvalue']=data[i][2]
value['updatetime']=data[i][3]
temp.append(value)
#dset['value']={'sensorvalue':data[i-1][2],'updatetime':data[i-1][3]}
dset['value']=temp
djson=json.dumps(dset)
return djson
#Adding data
@app.route("/input",methods=['POST','GET'])
def add_data():
if request.method == 'POST':
sensorid = int(request.form.get('id'))
sensorvalue = float(request.form.get('val'))
else:
sensorid = int(request.args.get('id'))
sensorvalue = float(request.args.get('val'))
nowtime = datetime.datetime.now()
nowtime = nowtime.strftime('%Y-%m-%d %H:%M:%S')
db = sqlite3.connect(DATABASE)
cur = db.cursor()
cur.execute("INSERT INTO sensorlog(sensorid,sensorvalue,updatetime) VALUES(%d,%f,'%s')" %(sensorid,sensorvalue,nowtime) )
db.commit()
cur.execute("SELECT * FROM sensorlist where sensorid = %d"% sensorid)
rv = cur.fetchall()
cur.close()
db.close()
maxrv = rv[0][2]
minrv = rv[0][3]
if sensorvalue > maxrv or sensorvalue < minrv:
return '1'
else:
return '0'
if __name__ == "__main__":
# 删掉debug=True,threaded=True IDLE里可以运行
app.run(host="0.0.0.0", port=8080,debug=True,threaded=True)
P138 室内环境实时监测系统 Web模版文件代码
<!doctype html>
<body><meta http-equiv="refresh" content="60"></body>
<style>
#center{ MARGIN-RIGHT: auto;MARGIN-LEFT: auto;background:#eff7ff;width:600px;
height:500px;vertical-align:left;overflow-y:scroll; overflow-x:scroll}
</style>
<title>室内环境监测系统</title>
<h1 align="center">室内环境监测系统</h1>
<h2 align="center">当前室内温度:{{temp}} </h2>
<h2 align="center"><a href="/">刷新</a>历史数据列表:</h2>
<div id="center" style="border:2px solid #96c2f1">
温度 记录时间<br>
{% for i in data[::-1] %}
{{i[2]}} {{i[3]}} <br>
{% endfor %}
</div>
P138 室内环境实时监测系统 智能终端程序
from microbit import *
import Obloq
IP="192.168.0.101"
PORT="8080"
SSID="jf"
PASSWORD="pkq8888"
uart.init(baudrate=115200, bits=8, parity=None, stop=1, tx=pin2, rx=pin1)
while Obloq.connectWifi(SSID,PASSWORD,10000) != True:
display.show(".")
display.scroll(Obloq.ifconfig())
Obloq.httpSet(IP,PORT)
while True:
errno,resp=Obloq.get("input?id=1&val="+str(temperature()),10000)
if errno == 200:
display.scroll(resp)
else:
display.scroll(str(errno))
sleep(1000*5)
4.3 完善信息系统
本文来自博客园,作者:暴力都不会的蒟蒻,转载请注明原文链接:https://www.cnblogs.com/BobHuang/p/16695516.html