-
1、小李设计了一个会员管理系统,用户通过浏览器在相应页面可进行会员注册、在线充值、线上查询消费记录等操作。该系统服务器端程序采用FlaskWeb框架编写,框架结构如图a所示。
其中会员注册子页面如图b所示。存储会员信息的users表中共3个字段,依次保存序号、用户名和密码,如图c所示。会员注册时需满足以下条件:①用户名不重复;②密码长度大于5。服务器端部分代码如下。
from flask import Flask , render_template , request
import sqlite3
def check(name ,pwd):
conn= sqlite3 .connect( " account .db ")
cur=conn .cursor()
cur . execute( " select * from users where name= ’%s ’"%name)
val=cur .fetchall()
flag=True
if len(val)==0 and :
sql= "insert into users(name , password) values(' %s' , '%s ') "%(name , pwd)
cur .execute(sql)
conn .commit()
else:
flag=False
cur .close()
conn .close()
return flag
app=Flask(name_)
@app .route( "/reg ")
def reg() :
name=request . args .get( "xm ")
pwd=request .args .get( "psd ")
if :
return "注册成功! "
else:
return "请重新注册! "
#其它代码略
if _name_== "_main_ " :
app .run (host= " 192 . 168 . 1 . 10 " , port= 80 , debug=True)
(1)、在搭建“会员管理系统 ”的前期准备过程中,选定系统物理配置的过程属于(单选,填字母: A .需求分析 / B .概要设计 / C .详细设计)。(2)、该系统网络应用软件的实现架构是 (单选,填字母:A .B/S 架构 / B .C/S 架构)。(3)、分析程序可知,该系统中存储会员用户名和密码数据的数据库文件名为 。(4)、分析程序,①处应填写的代码为 ,②处应填写的代码为 。(5)、下列关于该信息系统的描述正确的是 (多选,填字母)。A、服务器采用 GET 方式接收用户名和密码数据 B、程序代码中 debug=True 语句的作用是打开调试功能,在实际的网站应用环境中,也可以打开该 功能,方便调试程序。 C、注册新会员时,用户名为 admin03 ,密码为 123abc ,提交数据到 Web 服务器的 URL 为 http://192.168.1.10/check?xm=admin03&psd=123abc D、对 users 表中的密码进行加密,可以提高该信息系统的安全性 -
2、待入栈的序列 a 有多种出栈序列, 以下函数用于判断序列 b 是否是 a 的出栈序列,代码如下:
def judge(a, b):
n=len(a) ;st=[- 1]*n
top-= 1; i=j=0
while i<n:
top+= 1
①
i+= 1
while top> - 1 and ② :
top-= 1
j+= 1
return top==- 1
from random import shuffle
a=[1,2,3,4, 5]
b=[1,2, 3, 4, 5]
shuffle (b) #将序列 b 的元素随机排序
if judge(a, b):
print (b,'是' ,a,' 的出栈序列')
else:
print (b,'不是' ,a,' 的出栈序列')
程序运行结果如图所示。划线处应填写的语句是( )
A、①st[top]=a[i] ②st [top]==b[j] B、①st[top]=a[i] ②st[- 1]==b[j] C、①st [top]=b[i] ②st[top]=a[j] D、①st[top]=b[i] ②st[- 1]= =a[j] -
3、长度为5的循环队列que,que[0]至que[4]的值依次为'a' ,'b' ,'c' ,'d','e',执行如下程序段后,输出的最后一个字符为( )
n= 5
head=0
tail=4
que=['a' , 'b' ,'c' ,'d' ,'e' ]
while head!=tail:
if head%4==0:
print (que[head])
else:
tail=(tail+1)%n
que[tail]=que[head]
head= (head+1)%n
print (que[head])
A、b B、c C、d D、e -
4、下面有关数据结构的说法不正确的是( )A、在程序设计中,数据结构设计时主要考虑对象之间逻辑关系的实现 B、链表结构适用于初始规模确定但在处理过程中频繁进行插入、删除操作的数据 C、数组结构中采用下标访问数据,访问效率要高于链表结构 D、大多数软件中都有“撤销 ”功能,实现此功能应采用队列结构
-
5、有如下 Python 程序段:
s = "A-b2c " ; ch = ""
list=[4 , 3 , 1 , 5 ,2]
for i in range(1en( s)):
if "A " <= s [i] <= "Z " :
ch = ch + chr (ord(s [i]) + list[i])
elif "a " <= s [i] <= "z " :
ch = ch + chr (ord(s [i]) - list[i])
else:
ch= s [i]+ch
print(ch)
该程序运行后,输出的结果是( )
A、2-Eaa B、2-ECE C、 E-c2e D、 E-a2b -
6、下列 Python 表达式运算结果为 True 的是( )A、3**2<8 and 2%5>1 B、25//4>4 and 3/2<1 C、not 7<8 or 9>6+2 D、not(2**3<9 or 6%4<2)
-
7、某算法的流程图如所示,关于该算法下列说法正确的是( )
A、执行这部分流程后,变量 i 的值为 7 B、k 的值为 1*2*3*4*5*6*7 的结果 C、该流程图是双重循环结构 D、将“i≤x/2 ”改成“i<x" ,输出 k 的值不会变化 -
8、下列关于网络组成与构建的说法中,正确的是( )A、智能家居设备一般通过有线方式联网 B、常见的网络互联设备主要包括调制解调器、路由器和交换机等 C、不同网络之间一般采用 HTTP 协议互联 D、计算机网络分为局域网、广域网与广播电视网
-
9、阅读下列材料,回答问题。
智慧家居报警系统由报警主机和各种探测器组成。探测器包括门磁、窗磁、煤气探测器、烟感探测器、红外探头等。若有特定情况便会触发相应的探测器,家庭报警主机会立即触发警铃,并将相关数据传送至小区管理中心,同时小区管理中心的报警主机将会记录下这些信息,并发送到用户指定的电话,以备查阅。
(1)、下列关于该系统的组成及应用说法正确的是( )A、该系统运行不需要软件支持 B、该系统的用户是指各家庭成员 C、该系统可以不借助通信网络独立运行 D、该系统具备数据采集、处理和查询等功能(2)、下列关于该系统安全和防护说法正确的是( )A、登录系统时的身份验证可提升系统安全性 B、该系统只是在有人非法入侵时会发出警报 C、该系统安装防火墙后,不存在信息泄露风险 D、用户登录认证最适合采用 USB Key 认证技术(3)、关于该系统的硬件作用,下列说法不正确的是( )A、红外探头主要是防止非法入侵 B、烟感探测器采用了人工智能技术 C、该系统中家庭报警主机承担控制器的功能 D、煤气探测器安装在厨房,可以通过无线网络进行通信 -
10、考生入场时,经安检门时对手机等电子设备进行检查并截留,监考教师用金属探测仪对学生再次进行检 查,身份识别仪采集身份证与人脸信息进行验证,无误后方可入场考试。上述描述中,体现人工智能技术的是( )A、识别仪对考生进行人脸识别 B、监考教师用金属探测仪进行检查 C、安检门处对手机等电子设备的检测和截留 D、身份识别仪读卡处读取身份证信息
-
11、下列关于数据、信息和知识的说法,正确的是( )A、数据即数字 B、人类在搜索引擎的帮助下就可以拥有海量的知识 C、人们在利用数据的同时, 自身的行为不会产生数据 D、人们接收同样的信息后,建构的知识也是有区别的
-
12、某咖啡店,店里共有4种咖啡,类型编号为0到3,每次只能制作一种类型的咖啡,咖啡都是批量现做(制作过程中不能更改数量或类型)。店员需按照订单的先后顺序完成订单(即当前订单完成之前不能换订单),已经接到的订单中的同一类型咖啡可以一起制作(假设咖啡机能同时制作的数量上限足够高),且不需要额外增加时间(即只需制作一杯的时间)。如图1为每个订单的咖啡数量,初始“订单0”中[6, 0, 2, 4]表示0到3号咖啡的购买数量。此时店员先做数量最多的6份0号咖啡,1分钟后接到新订单[1, 18, 0, 2],之后每分钟都会接到1个新订单,这些订单都计入每种咖啡的待做数量。3分钟后这6份0号咖啡制作完成,程序会在“订单0”中选择还没制作的且待做数量最多的(数量相同时先后不作要求)咖啡作为下一次要制作的咖啡。编写python程序,每次制作完一种咖啡,输出接下来要制作的咖啡,运行界面如图2:
图 1
图 2
(1)、由图1的订单信息,3 分钟后" 咖啡 0"制作完成,那么图2 中(1)处店员接下来要做的咖啡是咖啡。(2)、根据待制作的咖啡数量,对链表初始化,生成降序链表 lnk,则代码运行后 y的值为。def sort():
for i in range(3):
for j in range(3,i,- 1):
if waitlist[index[j]][1] > waitlist[index[j - 1]][1]:
index[j], index[j - 1] = index[j - 1], index[j]
if waitlist[index[j]][1]==0:
return j
return 4
waitlist=[[3,6],[4,0],[1,2],[2,4]] # "咖啡 0" 的批量制作时间为 3 分钟,目前待做量为 6,以此类推
q=[[6, 0, 2, 4], [1, 18, 0, 2], [2, 1, 2, 1], [0, 1, 0, 5],…… #如图 1,代码略
#q 保存订单流,第一个订单[6,0,2,4]作为初始订单已计入 waitlist
index=[0,1,2,3]
y=sort()
lnk=[- 1]*4
for i in range(y- 1): #创建降序链表
lnk[index[i]]=index[i+1]
p=lnk_h=index[0]
print("请制作咖啡"+str(p))
waitlist[p][1]=0 #咖啡 p 进入制作,待做数量回 0
(3)、请在划线处填入合适的代码。defenqueue(order): #order 是一个订单,例如[1,2,0,3]
global lnk_h
flag.append([0,0,0,0]) #新订单 4 种咖啡未完成
for i in range(4): f = True
if waitlist[i][1]==0: f=False
if order[i]==0: continue
waitlist[i][1]+=order[i] #将订单 order 中的咖啡 i 累加到待制作数量中
cur=lnk_h
while cur!=- 1 and waitlist[i][1]<waitlist[cur][1]:
pr,cur=cur,lnk[cur]
if cur!=i:
tmp = lnk[i]
lnk[i]=cur
if cur==lnk_h:
lnk_h=i
else:
lnk[pr]=i
if f:
while cur!=i:
pr,cur=cur, lnk[cur]
def nextfood(qhead,qtail): #找到下一次要做的咖啡
global lnk_h
cur=lnk_h
while :
pr,cur=cur,lnk[cur]
if cur==lnk_h:
lnk_h=lnk[lnk_h]
elif cur==- 1:
return – 1
else:
lnk[pr]=lnk[cur]
waitlist[cur][1]=0
for i in range( ):
if q[i][cur]!=0: flag[i][cur] = 1
return cur
qhead,qtail=0,1
order=q[qhead]
flag=[[1,0,0,0]] #flag[i][j]=1 标记"订单 i" 中的"咖啡j" 已经在做或已经做完。 lnk_h, time =lnk[lnk_h],0
while True:
time=(time+1)%waitlist[p][0]
if qtail<len(q):
enqueue(q[qtail]) #接新订单
qtail+=1
if time==0:
while qhead<qtail- 1 and sum(flag[qhead])+q[qhead].count(0)==4: #订单完成时
qhead+=1
order=q[qhead]
p=nextfood(qhead,qtail)
if p == - 1 : break
print("请制作咖啡"+str(p))
-
13、小华在公司实验室搭建了一个农业大棚温湿度监测系统,温度上升到超过30℃或温度下降到低于10℃时,智能终端连接的蜂鸣器发出警报。系统的硬件搭建方式是:服务器通过实验室局域网的无线网络连接智能终端,智能终端连接传感器和执行器,传感器采集的数据由智能终端经IoT模块发送到Web服务器。请回答下列问题:(1)、若公司门口施工导致电信光纤被挖断,会导致 (单选,填字母:A .服务器接收不到智能终端发 出的数据/B .在实验室使用局域网无法访问 Web 服务器/C .在家中无法访问 Web服务器)(2)、小华基于 Flask Web 框架编写服务器端的程序,部分代码如下,视图函数 index()的返回值由 接收 (单选,填字母:A .浏览器 /B .智能终端 / C .智能终端和浏览器都可以)。(3)、要获取视图函数 index()返回的页面,应访问的URL是 http://。
# 导入 Falsk 框架模块及其他相关模块,创建 app 实例,代码略
@app.route('/index')
def index():
#从数据库读取近 1 小时获取的传感器编号、温度和湿度组成的二维列表 data,代码略
return render_template('idx.html',data=data) # 服务器其他功能,代码略
if__name__ == '__main__':
app.run(port=8000)
(4)、小华将该系统用于种植草莓,不同季节,不同农作物对环境的要求都有所差异。同一种农作物在不同的生长时期(苗期、现蕾期、盛花期、初果期、膨果期等)需要的生长环境也不同。请为小华提出合理建议,优化或增加系统功能: 。(5)、小华采用 excel表格记录了2个实验组种植草莓的实验数据,他希望绘制“淡雪现蕾期生长表现对比”柱形图,部分数据(前12行)如图1所示(时间格式为“年/月/日时:分”)df = pd.read_excel('strawberry.xlsx')
name=input("请输入品种")
period=input("请输入生长阶段")
df=df[df["品种"]==name]
df= df[df["生长阶段"]==period]
df = df.groupby(" ", as_index = False).mean() # 分组求平均值
plt.title(name+period+"生长表现对比")
plt.bar(df.实验组, df.生长表现) # 绘制柱形图
①请在程序中划线处填入合适的代码。
②小华要输出每个品种现蕾期生长阶段生长表现最好时的温度湿度,为此他需要修改程序代码,以下操作恰当的是 (多选,填字母)。
A .筛选品种 B .筛选生长阶段 C .根据生长阶段分组,每组按生长表现降序排序,输出每组第一行 D .根据品种分组,每组按生长表现降序排序,输出每组第一行
-
14、小华开发了一个自动改卷系统,但是由于科目不同,没有固定的题号模板,于是小华又编写了python程序,能根据试卷答案自动输出题号。如图1为答案模板文件,小华在模板文件中录入答案后保存为"卷3.txt",如图2所示,每一行是一题或者一题中的一小题的答案,题号之间没有跳跃。例如:图2中【1】和【5】之间有4行,A、B、C、D为第1到4题的答案。程序运行结果如图3所示。
图 1
图 2
图 3
(1)、实现上述功能的 Python 程序如下,若删除图2最后一行(【7】所在的行),对程序运行结果 影响(填:有/没有)。(2)、请在划线处填入合适的代码。f=open("卷 3.txt",encoding="utf-8")
line=f.readline().strip() c=0 #strip()用于删除字符串尾部的"\n"换行符
preId=0
QuestionInfo=[ ]
while line:
if line[0] == "【":
curId =
if curId - preId > 1:
for i in range(preId, curId):
QuestionInfo.append(str(i))
elif c>0:
for i in range(1, c + 1):
QuestionInfo.append(str(preId) + "(" + str(i) + ")")
c = 0
else:
line=f.readline().strip() #strip()用于删除字符串尾部的"\n"换行符
f.close()
print("卷 3 题号划分为: ")
for Id in QuestionInfo:
print(Id)
-
15、有如下 Python 程序段:
a=[i for i in range(1,7)]
b=[0]*6
head, tail=0,0
for i in range(1,7):
cnt=1
while cnt<i:
a[tail]=a[head]
head=(head+1)%6
tail=(tail+1)%6
cnt+=1
b[a[head]- 1]=i
head=(head+1)%6
执行该程序段后, b[5]的值为( )
A、2 B、3 C、4 D、5 -
16、有如下 Python 程序段:
s=input()
stack=[0]* len(s);top=- 1;presign='+';num=0
for i in range(len(s)):
if'0'<=s[i]<='9':
num=num*10+int(s[i])
if i==len(s)- 1 or s[i] in'+-*/':
if presign=='+':
top+=1
stack[top]=num
elifpresign=='-':
top+=1
stack[top]=-num
elifpresign=='*':
top+=1
stack[top]=stack[top- 1]*num
else:
top+=1
stack[top]=stack[top- 1]//num
presign=s[i]
num=0
print(sum(stack)) #sum 函数对 stack 中所有元素求和
若输入'5*4-6+10/3' ,程序运行后, 输出结果是( )
A、32 B、24 C、17 D、8 -
17、有如下程序段:
def fun(k):
if k==1 :
return "1"
elifk%2==0:
return fun(k- 1)+str(k%2)
else:
returnstr(k%2)+fun(k- 1)
执行语句 s=fun(5) ,则 s 的值为( )
A、"00111" B、" 11010" C、" 11100" D、" 10110" -
18、有如下程序段:
a=[30,10,20,11,12,50]
d=[0]*6 ; max=0 ; n=len(a)
for i in range(1,n):
for j in range(i):
if a[j]<a[i]:
d[i]+=1
if d[i]>max:
max=d[i]
执行程序后,变量max的值是( )
A、2 B、3 C、4 D、5 -
19、已知某二叉树的后序遍历为 GDBEHFCA,中序遍历为 DGBAECHF,下列说法正确的是( )A、该二叉树中叶子节点有3个 B、该二叉树的前序遍历为ABDGCEHF C、该二叉树是一棵完全二叉树,树的高度为4 D、该二叉树中度为1的节点有2个
-
20、李华需要对处理好的照片进行编码,照片由类型+编号两部分构成。如果类型最多有10种,每种类型的照片不超过60张。在尽可能减少编码长度的情况下,使用该编码方案保存的照片,以下说法正确的是( )A、用 4 位二进制数表示照片类型,6 位二进制数表示照片编号 B、用 4 位二进制数表示照片类型, 5 位二进制数表示照片编号 C、用 3 位二进制数表示照片类型, 6 位二进制数表示照片编号 D、用 3 位二进制数表示照片类型, 5 位二进制数表示照片编号