Dim ID( ) As String '用于存放客户卡号
Dim total( ) As Long '用于存放积分数
Dim sc As Long 'VIP客户人数
Dim jf As Long '积分数
Private Sub Command1Click( )
Dim k As String '客户卡号
Dim q As Long '代金券额度
Dim i As Long
k = Text1.Text
For i = 1 To sc ’顺序查找
If ID(i) = k Then
jf = total(i)
cash(jf) = q ’ ①
Exit For
End If
’ ②
Label3.Caption = “您可换购的代金券总额为:”+ Str(q) + “元”
Next i
End If
End Sub
' cash函数用于计算VIP客户可换购的代金券额度
Function cash(jf As Long) As Long
If jf >= 2000 And jf <= 20000 Then
Cash = jf\2000*10
ElseIf jf > 20000 And jf <= 50000 Then
Cash = jf\2000*11
ElseIf jf > 50000 And jf <= 100000 Then
Cash = jf\2000*12
ElseIf jf > 100000 And jf <= 150000 Then
Cash = jf\2000*13
ElseIf jf > 150000 Then
Cash = jf\2000*14
End If
End Function
Private Sub FormLoad()
Dim conn As New ADODB.Connection, rs As New ADODB.Recordset
Dim intSQL As Long
conn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + App.Path + "\ customer.accdb"
conn.Open
intSQL = "SELECT score FROM Integral"
Set rs.ActiveConnection = conn
rs.CursorType = adOpenStatic
rs.Open intSQL
sc = 0
Do While Not rs.EOF
sc = sc + 1
total(sc) = rs.Fields("score")
rs.MoveNext
Loop
rs.Close
conn.Close
Set rs = Nothing
Set conn = Nothing
End Sub
假设共有500个市民,市民的相关信息都存储在“information.accdb”的data表中,”xm, ye,kh” 字段放市民的姓名,余额,卡号。查询程序界面如第16题图所示。工作人员在文本框Text1中输入卡号,单击“查询”按钮,如果找到,就在Label1中显示卡内市民姓名和卡内余额;否则显示“查无此人”。程序如下,请按要求将程序补充完整。
Private Sub command1_click()
Dim conn As New ADODB.Connection, rs As New ADODB.Recordset
Dim strSQL As String
Dim a,b,c as string
Dim n as integer
conn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + App.Path + "\ ① "
conn.Open
strSQL ="select * from data"
Set rs.ActiveConnection = conn
rs.Open strSQL
Label1.Caption = ""
c=val(text1.text)
n=0
rs.movefirst
Do while not rs.EOF
n=n+1
a=rs.Fields("xm")
②
If c= rs.Fields("kh") then
Label1.caption=a+ "的卡内余额为"+b+"元"
Exit if
else
rs.movenext
end if
loop
if n=500 then Label1.caption=”查无此人”
rs.close
conn.close
set rs=nothing
set conn=nothing
End Sub
Const n=3500 ’存储单词的总数
Dim a(1 To n)As String ’依次存储每个英语单词
Dim b(1 To n) As Strin9 ’依次存储每个英语单词的中文含义
Private Sub Command1_Click()
Dim Conn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim strSQL As String
conn.ConnectionString=“Provider=Microsoft.ACE.OLEDB.12.0;Data source=”&App.Path&“\dictionary1.accdb”
strSQL=”select*from list”
conn.Open
Set rs.ActiveConnection=conn
rs.Open strSQL
num=0
Do While Not rs.EOF
num=num+1
a(mum)=rs.Fields(“英语单词”)
b(num)=rs.Fields(“中文含义”)
rs.MoveNext
Loop
rs.Close
conn.Close
Set rs=Nothing
Set conn=Nothing
For i==1 To n
List1.AddItem a(i)+“ ”+b(i)
Next i
End Sub
Private Sub Command2_Click()
Dim s As String
S=Text1.Text
If search(s)=-1 Then
Text2.text=“找不到该单词”
Else
Text2.Text= ①
End If
End Sub
Function search(key As String)As Integer
Dim i,j As Integer
Dim mid1,mid2 As Integer
i=1:j=n
search=-1
Do While i<=j
mid1=Int(j+(j—i)/3)
mid2=Int(j-(j-i)/3)
If key=a(mid1)Then
search=mid1
Exit Do
ElseIf key<a(mid1)Then
j=mid1-1
ElseIf key=a(mid2)Then
search=mid2
Exit Do
Elself key>a(mid2)Then
i=mid2+1
Else
i=mid1+1
②
End If
Loop
End Function
① ②
实现上述功能的VB程序如下,请回答下列问题:
Dim sName(100) As String
Dim kh(100) as string
Private Sub Command1_Click()
Dim y As Integer
Dim start As Integer '考场第1位数据元素的下标
Dim pa As Integer '数据库导入VB时学生数据下标
Dim pb As Integer '考场座位数据下标
Dim i As Integer,j As Integer,k As Integer,m As Integer
Dim kcsName(100) As String
start = 1
pa = start
recCount = x-1
If recCount Mod 30 <> 0 Then
For i = 1 To y ‘将当前考生人数添加到30的整数倍
recCount = recCount +1
sName(recCount) = " "
Next i
End If
For j = 1 To recCount / 30
pa = start
pb = start
For i = 1 To 30
kcsName(pb) = sName(pa)
pb = pb +1
If i Mod 5 = 0 Then
pa = start +i \5
Else
End If
Next i
start = start +30
Next j
Text1.Text = " "
start = 1
For k = 1 To recCount /30
m = start
Text1.Text = Text1.Text + "第" + Str(k) + "考场" + vbCrLf
'vbCrLf为换行标志符,实现Text1中内容换行显示
For i = 1 To 6
For j = 1 To 5
Text1.Text = Text1.Text +" " +kcsName(m)
m = m +1
Next j
Text1.Text = Text1.Text +vbCrLf
Next i
Text1.Text = Text1.Text +vbCrLf +vbCrLf
Next k
End Sub
Private Sub form_load()
Dim conn As New ADODB.Connection
Dim rs As New ADODB.Recordset
conn.ConnectionString = "provider=microsoft.ace.oledb.12.0;data source=" & App.Path & "/kaochang.accdb"
conn.Open
Set rs.ActiveConnection = conn
rs.Open "select * from banji"
x = 1
List1.AddItem " 考号 姓名"
Do While Not rs.EOF '
kh(x) = rs.fields("kh")
sName(x) = rs.fields("xm")
List1.AddItem kh(x) + " " + sName(x)
x = x + 1
rs.MoveNext
Loop
rs.Close
End Sub
程序功能:在文本框Text1中输入课程号,单击“查询”按钮Command1,在列表框List1中显示选修本课程的学生信息。如果没人选修该课程显示“该课程当前无人报名”。
按此要求将程序补充完整。
Private Sub command1_click()
Dim xh(1 to 40),xm(1 to 40) As String ’学号和姓名的数组
Dim i, num as integer
Dim conn As New ADODB.Connection,rs As New ADODB.Recordset
Dim strSQL As String
conn.ConnectionString=“Provider=Microsoft.ACE.OLEDB.12.0;DataSource=”+App.Path+“ \ ① ” ‘打开到数据库的链接
conn.Open
strSQL=”select xh,xm from ② where ‘课程&(Text1.Text)&’”
‘设置查询的SQL 语句
Set rs.ActiveConnection =conn ‘设置rs的ActiveConnection属性,指定与其关联的数据库链接
rs.Open strSQL ‘打开记录集,将从表student中读取的结果集保存到记录集rs中
List1.Clear
num=0
Do while not rs.EOF
num=num+1
xh(num)= rs.Fields(“xh”)
xm(num)= rs.Fields(“xm”)
rs.MoveNext
loop
rs.Close
conn.close
set rs=nothing
set conn=nothing
For i=1 to num
list1.additem xh(i)+””+xm(i) Next i
if num=0 then list1.additem(“该课程当前无人报名”)
End Sub
Dim a (1 To 4020 ) As String
Dim b (1 To 2000 ) As String
Private Sub Form_Load( )
Dim conn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim constr As string
constr=“Provider=Microsoft.ace.OLEDB.12.0;”
constr=constr &“Data Source=” & App.Path+“\data\KaoSheng.accdb”
conn.ConnectionString=constr
conn.open()
Dim sql As String
‘将参加2010年下半年考试的考生的身份证号码按升序存放在a数组中
sql=“select * from kaoshengInfo where year=‘2010’order by sfzh asc”
rs.Open sql,conn
i=0
Do While Not rs.EOF
i=i+1
a(i)=rs(“sfzh”)
List1.additem(a(i))
rs.MoveNext
Loop
‘将参加2011年下半年考试的考生的身份证号码按升序存放在b数组中
sql=“select * from kaoshengInfo where year=‘2011’order by sfzh asc”
rs.Open sql,conn
i=0
Do While Not rs.EOF
i=i+1
b(i)=rs(“sfzh”)
List2.additem(b(i))
rs.MoveNext
Loop
rs.Close
End Sub
Private Sub Command1_Click ()
Dim bot As Integer, top As Integer, m As Integer
Dim i As Integer, ans As Integer
ans=0
For i=1 To 2000
bot=1
Do While bot <=top
m=Fix ( ( bot+top ) / 2 )
If a ( m )=b ( i ) Then
List3.AddItem a ( m )
Exit Do
ElseIf Then
top=m-1
Else
bot=m+1
End If
Loop
Next i
List3.AddItem“总计”+str(ans)+“人次”
End Sub
Dim conn As New ADODB Connection
Dim rs As New ADODB. Recordset
Dim n as Integer
Private Sub Form_Load ( )
conn. ConnectionString ="Provider= Microsoft. Ace. OLEDB. 12.0;
data source =" + App. Path + " \data \data. accdb" ‘ 此处内容在同一行中,因印刷排版限制而换行
conn. Open
sqI = “select * from student”
Set rs. ActiveConnection = conn
rs. Open sql
n=0
Do while Not rs. EOF
Call read ( )
n=n+1
rs. MoveNext
Loop
End sub
sub read ( )
List1.AddItem rs ("name")
End sub
运行上述程序,以下说法不正确的是( )
Dim adoConn As New ADODB.Connection
Dim adoRs As New ADODB.Recordset
Dim a(1 To 1000)As String,b(1 To 1000)As Integer
adoConn.ConnectionString=" provider=Microsoft.ACE.OLEDB.12.
0:datasource="& App.Path& " \mydata.Accdb "
adoConn.Open
Set adoRs.ActiveConnection= adoConn
adoRs.Open "Select * From Score"
n=0
Do While Not adoRs.EOF
n=n+1
a(n)= adoRs.Fields("学号").Value
b(n)= adoRs.Fields(3).Value
adoRs.MoveNext
Loop
adoRs.Close:adoConn.Close
下列对于该程序段的理解正确的有( )
①程序连接的数据库文件名是“\mydata.accdb”
②程序打开的数据表名称是“Score”
③程序将数据表中的数学成绩存入数组b
④程序运行后,变量n的值表示该数据表中记录的总数
⑤关闭数据表的语句为adoConn.close
Dim conn As New ADODB.Connection
Di mrs As New ADODB.Recordset
conn.ConnectionString=“Provider=Microsoft.ACE.OLEDB.12.0;DataSource=” & App.Path & “\词库.accdb”
conn.Open
Set rs.Active Connection=conn
rs.Open “SELECT*FROM words”
n=0
Do While Not rs.EOF
n=n+1
en(n) =rs.Fields(1)
ch(n) =rs.Fields(2)
rs.MoveNext
Loop
rs.Close
conn.Close
下列说法中正确的是( )
①连接的数据库文件名是“\词库.accdb”
②程序运行后,变量n的值表示该数据表中记录的总数
③数组en(n)所存储的是数据表第2个字段的字段值
④“ConnectionString”是conn对象的属性值
⑤查询的数据表名称是“words”
⑥省略语句“rs.MoveNext”,程序也可以正常运行
Dim conn As New ADODB. Connection
Dim rs As New ADODB. Recordset
Dim n as Integer
Private Sub Form_ Load()
conn. ConnectionString ="Provider= Microsoft.Ace.
OLEDB.12.0; data source ="+App. Path+"\data\data. accdb"
conn. Open
sql="select*from student"
Set rs. ActiveConnection=conn
rs. Open sql
n=0
Do while Not rs. EOF
List1.AddItem rs("name")
n=n+1
rs. MoveNext
Loop
End Sub
运行上述程序,以下说法不正确的是( )
实现上述功能的VB程序段如下,请回答下列问题:
Dim recCount As Integer '存放学生人数
Dim sClass(1 To 1000) As Integer '存放学生班级
Dim sName(1 To 1000) As String '存放学生姓名
Dim sScore(1 To 1000) As Integer '存放学生成绩
Private Sub Command1_Click()
Dim i As Integer, t As Integer, nc As Integer
Dim a(1 To 20) As Integer, b(1 To 20) As Integer '分别存放班级高分人数和班级参加考试人数
Dim sum(1 To 20) As Integer, ave(1 To 20) As Single '分别存放班级总分和班级均分
Dim c(1 To 20) As Integer
For i = 1 To recCount
b(t) = b(t) + 1
If b(t) = 1 Then
nc = nc + 1
End If
If sScore(i) >= 97 Then a(t) = a(t) + 1
sum(t) = sum(t) + sScore(i)
Next i
For i = 1 To nc
ave(c(i)) = Int(sum(c(i)) / b(c(i)) * 100 + 0.5) / 100
Next i
For i = 1 To nc - 1
For j = nc To i + 1 Step -1
If Then
t = c(j): c(j) = c(j - 1): c(j - 1) = t
End If
Next j
Next i
For i = 1 To nc
List2.AddItem Str(c(i)) + " " + Str(b(c(i))) + " " + Str(a(c(i))) + " " + Str(ave(c(i)))
Next i
End Sub
Private Sub Form_Load()
'链接数据库,代码略
recCount = 0
Do While Not rs.EOF
recCount = recCount + 1
sClass(recCount) = rs.Fields("class")
sName(recCount) = rs.Fields("name")
sScore(recCount) = rs.Fields("score")
rs.MoveNext
Loop
'将数据显示在列表框List1中,代码略
End Sub
Dim classname(1 To 8000) As String '存储原始数据中的班级名称
Dim selectabc(1 To 8000) As String '存储原始数据选项的值
Dim xiangmu(1 To 8000) As String '存储原始数据选项的序号
Dim n As Integer
Private Sub Command2_Click() '从数据库读取数据,并且按班级名称排序
Dim conn As New ADODB.Connection
conn.ConnectionString = "provider=microsoft.ace.oledb.12.0;data source="&App.Path&"\pingjia.accdb"
conn.Open
Dim rs As New ADODB.Recordset
Set rs.ActiveConnection = conn
rs.Open "select * from data"
n = 0' 记录评价的总条数
'读取数据,并按班级排序,代码略
End Sub
Private Sub Command1_Click()
Dim cstart(1 To 50) As Integer '存储每个班级在数组classname中的起始位置
Dim cend(1 To 50) As Integer '存储每个班级在数组classname中的末尾位置
Dim k As Integer '存储班级数量
Dim testall(1 To 20) As Integer '存储每一项总选择人数,例如testall(1)里存储这评价项目1里的总人数,testc(1)里存储评价项目1里选C的人数
Dim testc(1 To 20) As Integer '存储每一题(项)选c的人数
'确定每个班级的起止位置,存储到cstart数组和cend数组
cstart(1) = 1
temp = classname(1)
k = 1
For i = 1 To n
If classname(i) <> temp Then
k = k + 1
cstart(k) = i
temp = classname(i)
End If
Next i
cend(k) = n
For i = 1 To k '每个班级分别统计评价项目
For q = 1 To 20 '对testall和testc数组初始化
testall(q) = 0
testc(q) = 0
Next q
For j = cstart(i) To cend(i) '对第i个班级进行统计
testall(xiangmu(j)) = testall(xiangmu(j)) + 1\
If selectabc(j) = "C" Then
Next j
For p = 1 To 20 '统计完成后输出这个班级的20个项目的A+B所占百分比
s = s &""&Str(Round((testall(p) - testc(p)) / testall(p) * 100, 1))
Next p
List2.AddItem s
Next i
End Sub
i=0
Do While Not rs. EOF
i=i+1
a(i)=rs. Fields("售价")
rs. MoveNext ‘①
Loop
若记录集rs共有10条记录,执行循环前,当前记录为第1条。循环结束后,①处代码共执行的次数为( )
Dim n As Integer ‘用于存储运动员总人数
Dim a(1000)As Integer, b(1000)As String, c(1000)As String
Private Sub Form_Load( )
Dim conn As New ADODB. Connection
Dim rs As New ADODB. Recordset
conn. ConnectionString ="Provider =Microsoft. Jet. OLEDB. 4.0;DATA Source=" &App. Path & "\sport.accdb"
conn.Open
Set rs. ActiveConnection=conn
rs.Open"Select*from号码牌"
Do While Not rs. EOF ‘到记录集rs的最后一条记录后退出循环
n=n+1
a(n)=rs. Fields("号码牌") ‘读取当前记录“号码牌”字段值
b(n)= ① ‘读取当前记录“班级”字段值
c(n)=rs. Fields("姓名") ‘读取当前记录“姓名”字段值
② ‘移动到下一条记录
Loop
‘号码牌按升序排序后,显示在列表框List1中,其他代码略
End Sub
Private Sub Command1_Click( )
Dim x As Integer
x=Val(Text1.Text)
pos= ③
If pos>0 Then
Text2.Text=b(pos):Text3.Text=c(pos)
Else
Text2.Text="未找到"
End If
End Sub
Function Search(Key As Integer)As Integer
Dim i As Integer,j As Integer
i=1:j=n:Search=0
Do While i<=j
m=Fix((i+j)/2)
If Key=a(m)Then
Search=m:Exit Function
ElseIf ④ Then
j=m-1
Else
i=m+1
End If
Loop
End Function
以上程序段运行时,为了实现上述功能,画线处应填入的代码分别为:①;②;③;④。
⑴计算校验码序号:根据公式∑(ai×Wi) Mod 11 (i=2~18)计算得到校验码的序号;
其中:i:表示号码字符的位置序号,身份证号左边开始第1位的位置序号为18,第2位为17,依次类推,……最后一位的序号为1;
ai:表示第i位置上的号码字符的值;
Wi:示第i位置上的加权因子,通过公式w(i) = 2 ^ (i - 1) Mod 11计算得到。
⑵提取校验码字符:根据步骤(1)得到的序号提取对应的校验码字符。对应关系如下表所示,如:序号0对应校验码“1”,序号1对应校验码“0”。
序号 |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
校验码 |
1 |
0 |
X |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
若步骤(2)中提取到的校验码值和身份证号最后一位相同,则校验通过,否则校验失败(即身份证号有误)。
根据上述原理设计了一个身份证校验VB程序,功能如下:程序启动时从数据库student.accdb中读入学生身份证数据(共15个班级),并在列表框List1中显示,单击“校验”按钮Command1,在列表框List2中输出身份证号有误的班级、出错人数以及出错的学生信息。
实现上述功能的VB程序如下,请回答下列问题:
Const max = 1000
Dim n As Integer '存放学生人数
Dim sfzh(1 To max) As String, xm(1 To max) As String
Dim bj(1 To max) As Integer, flag(1 To max) As Boolean, cw(1 To 15) As Integer
Function check(x As String) As Boolean
Dim jym As String
Dim i As Integer, sum As Integer, xh As Integer
Dim a(1 To 18) As Integer, w(1 To 18) As Integer
jym = "10X98765432"
For i = 18 To 2 Step -1
a(i) = Val(Mid(x, 19 - i, 1))
Next i
For i = 18 To 1 Step -1
w(i) = 2 ^ (i - 1) Mod 11
Next i
sum = 0
For i = 2 To 18
Next i
xh = sum Mod 11
If Mid(jym, xh + 1, 1) = Mid(x, 18, 1) Then
check = True
Else
check = False
End If
End Function
Private Sub Form_Load()
Dim conn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Conn.ConnectionString = "provider=Microsoft.ace.oledb.12.0;data source=" + App.Path + "\student.accdb"
Conn.Open
Set rs.ActiveConnection = conn
rs.Open "select * from stu_info"
'本过程其余代码实现读取学生的身份证号、姓名和班级分别存数组sfzh、xm和bj中,并在列表框List1中显示,学生人数存变量n中。代码略
End Sub
Private Sub Command1_Click()
Dim i As Integer, j As Integer
List2.Clear
For i = 1 To n
If Then
flag(i) = True
Else
flag(i) = False
End If
Next i
For i = 1 To 15
cw(i) = 0
Next i
For i = 1 To 15
For j = 1 To n
If Then
cw(i) = cw(i) + 1
List2.AddItem sfzh(j) + " " + adj(xm(j), 3)
End If
Next j
If cw(i) > 0 Then
List2.AddItem Str(i) + "班共有以上" + Str(cw(i)) + "个身份证号错误"
End If
Next i
End Sub
VB程序运行界面如图所示,在文本框Text1中输入查询的等级,单击“查询”按钮Command1,在列表框List1中显示所有该等级的学生学号和姓名,并按照学号从小到大排序,并在标签Label2 处显示学生的人数,如果人数为0,则在列表框中显示“没有该等级的学生”。按此要求编写程序如下,在划线处填上合适的代码。
Private Sub Command1_Click()
Dim stuna(1 To 100) As String '存放学生姓名的数组定义为stuna
Dim stunum(1 To 100) As String '存放学生学号的数组定义为stunum
Dim i As Integer, j As Integer, n As Integer
Dim t As String
Dim cn As New ADODB. Connection
'连接数据库
Dim rs As New ADODB. Recordset
Dim strSQL As String
cn.ConnectionString =“Provider=Microsoft. ACE. OLEDB. 12. 0; Data Source=”+App. Path+“\stugrade. accdb”
cn. Open
strSQL=“select * from where语文等级=‘ ”+Text1. Text+“’”
Set rs. ActiveConnection= cn
rs. Open strSQL
n=0
Do While Not rs. EOF
stuna(n)= rs. Fields(“姓名”). Value
stunum(n)=rs. Fields(“学号”). Value
rs. MoveNext
Loop
rs.Close
cn.Close
Set rs= Nothing
Set cn= Nothing
List1. Clear '清除列表框
If n=0 Then
List1. AddItem“没有该等级的学生”
Else
For i=1 To n-1 '按学号排序
For j=n To Step - 1
If Then
t= stunum(j) : stunum(j) =stunum(j- 1) : stunum(j- 1)=t
t= stuna(j) : stuna(j) = stuna (j- 1) : stuna(j- 1)=t
End If
Next j
Next i
For i=1 To n
List1. AddItem stunum(i)+“”+stuna(i)
Next i
Label2. Caption=“该等级的学生共有”+Str(n)+“名”
End If
End Sub
实现上述功能的VB程序如下,请回答下列问题:
Dim xm(1 To 600) As String '存储学生姓名
Dim xx(1 To 600) As Integer '存储信息成绩
Dim ty(1 To 600) As Integer '存储通用成绩
Dim n As Integer '存储记录总数
Private Sub Form_ Load()
'本过程从数据库中读取学生数据,存储在相应的变量中,并在List1中显示
'代码略
End sub
Private Sub Command1_ Click()
Dim key As Integer,mid As Integer
Dimi As Integer, L As Integer, R As Integer, k As Integer
Dim tmpl As Integer, tmp2 As Integer
'以“信息”为主要关键字、“通用”为次要关键字排序
For i=1 To n-1
k=i
For j=i+1 To n
If xx(k)< xx(j) or ① Then
k=j
End If
Next j
If k<>i Then
tmp1= xm(k) : xm(k)= xm(i) : xm(i)= tmp1
tmp2 = xx(k): xx(k)=xx(i) : xx(i) = tmp2
tmp2= ty(k) : ty(k)= ty(i) : ty(i) = tmp2
End If
Next i '查询记录
key= Val(Text1. Text)
L=1 : R=n
Do While L<=R
mid=(L+R) \ 2
If ② Then
L= mid+1
Else
R= mid- 1
End If
Loop
List2.Clear
'vbTab相当于是键盘上制表符TAB按键的功能
List2. AddItem“姓名”& vbTab &.“信息”&vbTab&“通用”
For i=1 to ③
List2. AddItem xm (i) & vbTab & xx(i) & vbTab & ty(i)
Next i
End sub
① ② ③
图a |
图b |
采用SQLite3设计数据库data.db,其中info表包括两个字段:
段名 | 数据类刑 |
poet | text |
heat | integer |
@app.route('/')
def view( ):
#按热度值降序查询info表中记录,并渲染“view.htm”网页模板显示结果,代码略
@app.route(' ① ', methods=['GET','POST'])
def selectpoet():
if request.method=='POST':
x=request.form['xm'] #获取图b所示文本框中输入的内容
conn=sqlite3.connect('data.db')
cur=conn.cursor()
cur.execute(" ▲ where poet='%s'" %x) #查询当前诗人记录
data=cur.fetchall()
if data: #当data非空时,则表示所推选的诗人已经存在,将其热度值增1 y=data[0][1]+1
cur.execute("update info set heat=%d where poet='%s'" %(y,x))
else:
cur.execute("insert into info(poet,heat) values('%s',%d)" %( ② ))
conn.commit( )
cur.close( )
conn.close( )
return '评选成功!'
else:
return render_template('select.htm')
if __name__=='__main__':
app.run()
①②
①import sqlite3;
②conn.commit( );
③c.execute(sql);
④c.close( );⑤conn.close();
⑥c = conn.cursor( );
⑦conn = sqlite3.connect("my.db")
⑧sql = "CREATE TABLE user(username TEXT,password TEXT)"
语句执行的先后顺序正确的是( )