
课程设计
学 号 2010040302032
班 级 04030201
姓 名 张 强
指导教师 徐晗
2012年 3 月 18 日
沈阳航空航天大学
课程设计任务书
学院:航空宇航工程学部 专业:飞行器制造工程(钣金与模具) 班级:04030201
学号:2010040302032 题目:填空题判阅系统
一、课程设计时间
2012年3月12~16日(第1周),共计1周,20学时。
二、课程设计内容
在Access数据库“file26_填空题判阅系统.mdb”中存储着几位考生C语言填空题的考卷(表stu_ans),库中也提供了这些题目的原题及其答案(表c_fill,有的题目有多种填法,则标准答案有多个,用$符号间隔开来)。
请编写程序对所有参加填空考试的考生评定成绩。满分100,每小题20分。
三、课程设计要求
程序质量:
✧贯彻事件驱动的程序设计思想。
✧用户界面友好,功能明确,操作方便。
✧代码应适当缩进,并给出必要的注释,以增强程序的可读性。
课程设计说明书:
✧课程结束后,上交课程设计说明书和源程序。课程设计说明书的内容参见提供的模板。
四、指导教师和学生签字
指导教师:________ 学生签名:________
五、成绩
六、教师评语
目 录
需求分析 4
设计分析 4
关键技术 6
总结 12
完整的源程序 12
参考文献 14
需求分析
填空题判阅系统就是对若干个同学在题库里随机选出的五道题进行判阅,并对成绩打分。要求:
1.从access文档中提取出学生做的题目与答案。
2.对提取出的数据进行分析,让它们和标准答案进行对比,判断正误。
3.给出每个同学的总成绩。
4.核对五道题评判的正确与否。
5.保存学生成绩。
设计分析
1.基本原理:建立程序设计与数据库的连接,用判断语句对标准答案与学生答案进行判断。
2.总体设计:
3.详细设计
关键技术
1. 上一个同学信息代码如下
Private Sub Command1_Click()
Adodc2.Recordset.MovePrevious '上一个同学的信息
If Adodc2.Recordset.BOF Then Adodc2.Recordset.MoveLast '判断是否为首记录 如果是 则返回到记录的最后一条
End Sub
窗体如下
2. 下一个同学信息代码如下
Private Sub Command2_Click()
Adodc2.Recordset.MoveNext '下一个同学信息
If Adodc2.Recordset.EOF Then Adodc2.Recordset.MoveFirst '判断是否为末记录 如果是 则返回到记录的第一条
End Sub
窗体如下
3 .为当前同学打分
Private Sub Command3_Click()
For i = 0 To 4 '用循环分别核对5道题的答案
Do While Text2(i).Text <> Text5.Text '确定所答题目与原题为同一道题
Adodc1.Recordset.MoveNext '记录移向下一条
If Adodc1.Recordset.EOF Then Adodc1.Recordset.MoveFirst
'判断是否为末记录 如果是 则返回到记录的第一条
Loop
If InStr(Text1(1), Text3(i)) > 0 Then '判断学生答案是否包含于标准答案中
If Text3(i) <> "" Then '判断答案不是空集
e = e + 20 '每答对一题加二十分
End If '结束
End If '结束
Next i '下一个
Text6.Text = e '在Text6中显示该学生所得总分
End Sub
窗体如下
4. 核对此同学所答5道问题的正确与否
Private Sub Text2_click(Index As Integer)
b = Index '获得下角标
a = Val(Text2(b).Text) '获得框中题号
Adodc1.Recordset.Find "ques_num='" & a & "'", , , 1 ' 在数据库中查找此题
End Sub
窗体如下
如:核对第二题的答案
如:核对第七题的答案
5.保存学生成绩
Private Sub Command4_Click()
Open "G\\VB\学生成绩.txt" For Append As #1 '在G\\VB中创建名为 学生成绩 的txt文档
Write #1, Text7.Text, Text4.Text, Text6.Text '将学生学号 姓名 成绩保存到文档中
Close#1
End Sub
窗体如下
总结
这次课设我的题目是填空题判阅系统,通过这次课设让我了解了VB与数据库之间的联系,可以应用ADO技术使VB与数据库进行联系,还学会了好几种函数的使用,使子集包含于某一集合。
在课设过程中,我遇到了重重困难,例如:VB与数据库的连接技术,通过老师的指点和自己查阅资料,我克服了困难,顺利的完成了任务。
同时我也了解了VB的出现是一场技术,它在生活中各个方面都能发挥巨大的作用,所以,学好VB是社会发展的需要。
完整的源程序
Private Sub Command1_Click()
Adodc2.Recordset.MovePrevious
If Adodc2.Recordset.BOF Then Adodc2.Recordset.MoveLast
End Sub
Private Sub Command2_Click()
Adodc2.Recordset.MoveNext
If Adodc2.Recordset.EOF Then Adodc2.Recordset.MoveFirst
End Sub
Private Sub Command3_Click()
For i = 0 To 4
Do While Text2(i).Text <> Text5.Text
Adodc1.Recordset.MoveNext
If Adodc1.Recordset.EOF Then Adodc1.Recordset.MoveFirst
Loop
If InStr(Text1(1), Text3(i)) > 0 Then
If Text3(i) <> "" Then
e = e + 20
End If
End If
Next i
Text6.Text = e
End Sub
Private Sub Command4_Click()
Open "G\\VB\学生成绩.txt" For Append As #1
Write #1, Text 7. Text ,Text4.Text, Text6.Text
Close #1
End Sub
参考文献
【1】龚沛曾、杨志强、陆慰民《visual basic程序设计教程》
