高中信息技术(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
);

全部打包代码,已设置bat,支持一键运行

第三章 信息系统安全

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 完善信息系统

posted @ 2022-09-15 09:56  暴力都不会的蒟蒻  阅读(2198)  评论(0编辑  收藏  举报