浙江省杭州市2023-2024学年高三上学期信息技术期中教学质量检测试卷
共 14 题 ; 44人浏览 ; 高三上学期
2023-11-30
一、选择题 (共11题,共24分)
二、非选择题 (共3题,共19分)
13.小明搭建了图书查询系统,模拟如下图a所示自助图书借阅机的查询功能:把书籍放置在读写器上,读写器读取到图书上RFID电子标签的唯一编号后通过Wi-Fi传输到Web服务器数据库中,并在该数据库查询到该书籍的借阅日期。该系统结构示意图如图b所示。若图书编号是“A20-2440”,智能终端提交数据到Web服务器的URL为http://192.168.3.200/cx?bbh=A20-2440,请回答下列问题。

(1) 关于该图书查询系统,下列说法正确的是___________(多选,填字母) A. 该系统网络应用软件的实现架构是B/S架构 B. 数据库是服务器的外接数据存储设备 C. 智能终端的IP地址是192.168.3.200 D. 若无线路由器出现故障,智能终端将无法提交数据到服务器
(2) 该系统实现查询功能的部分服务器端程序如下,请在划线处填入合适的代码。

@app.route("", methods=["GET"])

Def get_bh():

DB="data/books.db"

bbh=request.args.get("bbh")

conn=sqlite3.connect(

#在数据库中查询编号为bbh的图书借阅日期存入变量rslt,代码略

return rslt

(3) 除了给图书贴电子标签,并用读写器采集图书编号外,请写出两种其它采集图书编号的方式
(4) 导出某月的图书借阅流水数据如下图c所示,统计借阅次数最多的前5名(相同借阅次数排名相同),统计结果如下图d所示,部分Python程序如下。

import pandas as pd

import matplotlib.pyplot as plt

df=pd.read_csv(’bookdata.csv’)           #读取bookdata.csv中的数据

df_gp=df.groupby(’BookTitle’, as_index=False)[’BookID’].   Ⓐ  

#分组统计书籍被借阅次数

n=len(df_gp)

pm=[1]*n

for i in range(n):

for j in range(n):

if df_gp.at[i,'BookID']<df_gp.at[j,'BookID']:

#通过行标签和列标签选取值进行比较

pm[i]+=1

df_gp.insert(2, ’排名’, pm)                  #插入“排名”列,值为列表pm

df_pm=df_gp[   Ⓑ   ]                      #筛选最受欢迎的五本图书

df_pm=df_pm.sort_values(’排名’, ascending=True,ignore_index=True)#升序排列

print(’本月图书借阅次数最多的前五名:’)

print(df_pm[’BookTitle’])

①划线Ⓐ处应填入的代码为(单选:填字母)

A.sum( )   B.mean( )   C.count( )   D.max( )

②在划线Ⓑ处填写合适的代码。

综合题 未知 困难
14.某工厂生产的产品包含n个(编号为0~n-1)组件,其组装可由多名工人共同协助完成。组装时每个组件都不可遗漏并能按序完成,有些组件存在前置组件(以下简称“前置”),即安装有先后顺序。例如,某产品有6个组件,如下图a所示,组件3的前置是组件1和组件2,即安装组件3需要在组件1和组件2完成之后。若0~5号组件的组装所需单位时间分别为2,5,2,4,3,5,则在工人数量不限的情况下,所有组件安装完成最短需要14个单位时间。

图a

为了梳理产品组件的组装顺序,并计算所有组件安装完成所需的最短时间,编写程序模拟组装过程:先同时组装前置总数为0的组件,完成后更新每个组件的前置总数,再重复以上步骤,直至所有组件安装完毕,程序运行结果如下图b所示,请回答下列问题:

图b

(1) 图a所示产品的1号组件组装时长若缩短为3个单位时间,其它时间保持不变,则所有组件安装完成所需最短时间为个单位时间。
(2) 定义如下cal(a, n)函数,参数a列表的每个元素包含两项,a[i][1]是组件编号,a[i][0]是a[i][1]的前置编号,例如a中某个元素值为[2,3],表示组件2是组件3的前置。该函数的返回值是列表s和列表pre,其中s记录所有组件的相互关系,pre[i]记录初始情况下组件i的前置总数。

Def cal(a, n):

pre=[0]*n

s=[[0 for i in range(n)] for j in range(n)]              #创建n×n的二维数组s,元素初始值为0

for i in range(len(a)):

x, y=a[i][0], a[i][1]

s[x][y]=1

pre[y]=

return pre, s

(3) 定义如下proc(n, s, pre)函数,该函数的返回值是列表v, v[i]代表从开始到组件i完成组装所需的最短时间。请在划线处填入合适的代码。

def proc(n, s, pre):

head=tail=0

que=[0]*n

for I in range(n):

if pre[i]==0:

que[tail]=i

tail+=1

while :

x=que[head]

head+=1

for i in range(n):

if s[x][i]==1:

pre[i]-=1

if pre[i]==0:

que[tail]=i

tail+=1

v[i]=max(v[i],

return v

"""

组装编号0~n-1的单个组件所需时间存入t列表,组件前置关系存入a列表,如第15题图a所需时间t=[2, 5, 2, 4, 3, 5];a=[[0, 2], [2, 3], [1, 3], [3, 5], [3, 4]]

"""

n=len(t)

print(’编号为0~’+str(n-1)+’的组件组装所需单位时间分别为:’, t)

v=t[:]

pre, s=cal(a, n)

v=proc(n, s, pre)

data=[0]*n

result=[i for I in range(n)]               #创建列表result=[0,1,2,……,n-1]

for i in range(n):

data[i]=v[i]-t[i]               #data[i]表示组件i开始安装时间

for i in range(n-1):            #按组件开始安装时间升序排序,开始安装时间相同时按组件序号升序

for j in range(n-1-i):

if data[result[j]]>data[result[j+1]]:

print(‘组件组装顺序:’, result, ‘, 安装完成所需最短时间:’, max(v))

(4) 以下选项与题(3)加框处代码功能相同的是___________(多选,填字母)。 A. head!=tail B. head<n C. tail<=n D. len(que)>0
综合题 未知 困难