VB考试系统课程设计报告

时间:2024.3.31

目  录

一、 设计任务………………………………1

二、 系统总体的设计方案…………………4

三、 框图……………………………………6

四、 调试程序的过程………………………6

五、 收获体会………………………………7

六、 意见建议………………………………8

七、 示例截图………………………………8

八、 源代码…………………………………9

九、 主要参考资料………………………18


一、设计任务

  a)程序运行时,首先显示主界面如图。单击“单选题”、“多选题”、“判断题”和“填空题”四个按钮之一,程序会打开不同题型的窗口。

b) 单选题窗口打开后显示如图窗体,窗口中显示了题目总数、当前题号、已做题目目数、题目内容和选择项。用户先做题目,再根据自己的判断选择“选择项”中的一个单选框然后使用“前一题”或“后一题”按钮切换到其它题目。同时可使用“查看成绩”,程序会显示本题型共做对多少题。

c)多选题,判断题和填空题使用方法与单选题类似。单击推出按钮可以返回主界面继续做其它类型的题目.

二、系统总体的设计方案

    设计一个“考试系统”软件,利用已有的题目数据库,用户根据个人的喜好,自主选择题型进行自测,程序能够自动进行评分。

(单选题与多选题、判断题和填空题代码类似,这里以单选题为例。)

Dim db, rs, r_sum, l

Dim ans() As String, ans1() As String

Function yzts() As Integer

Dim i, s

    s = 0

    For i = 1 To UBound(ans)

        If ans(i) <> "0" Then s = s + 1

    Next i

    yzts = s

End Function

Private Sub Command1_Click()

    Option1.Value = False

    Option2.Value = False

    Option3.Value = False

    l = l - 1

    If l >= 1 Then

        rs.MovePrevious

        Form2.Option1.Caption=rs.Fields("ans1").Value

    Form2.Option2.Caption=rs.Fields("ans2").Value

    Form2.Option3.Caption=rs.Fields("ans3").Value

 Form2.Label7.Caption=rs.Fields("question").Value

    End If

    If l <= 1 Then l = 1

    Label2 = Trim(Str(l))

    Label5 = Trim(Str(yzts))

End Sub

Private Sub Command2_Click()

    Option1.Value = False

    Option2.Value = False

    Option3.Value = False

    l = l + 1

    If l <= r_sum Then

        rs.MoveNext

        Form2.Option1.Caption=rs.Fields("ans1").Value

    Form2.Option2.Caption=rs.Fields("ans2").Value

Form2.Option3.Caption=rs.Fields("ans3").Valu

Form2.Label7.Caption=rs.Fields("question").Value

    End If

    If l >= r_sum Then l = r_sum

    Label2 = Trim(Str(l))

    Label5 = Trim(Str(yzts))

End Sub

Private Sub Command3_Click()

    Dim i, k

    k = 0

    For i = 1 To UBound(ans)

        If ans(i) <> "0" Then

            Debug.Print ans(i), ans1(i)

            If Mid(ans1(i), Asc(ans(1)) - 64, 1) = "1" Then k = k + 1

        End If

    Next i

    Form2.Label7.Caption = "共做正确" + Str(k) + " 题"

End Sub

Private Sub Command4_Click()

Form2.Hide

Form1.Show

End Sub

Private Sub Form_Load()

    Dim i

    Set db = OpenDatabase(App.Path + "\tiku.mdb", True, True, ";pwd=tiku")

    Set rs = db.OpenRecordset("xz3")

    r_sum = rs.RecordCount

    l = 1

    ReDim ans(r_sum)

    ReDim ans1(r_sum)

    For i = 1 To r_sum

        ans(i) = "0"

        ans1(i) = rs.Fields("ans").Value

        rs.MoveNext

    Next i

    rs.MoveFirst

End Sub

Private Sub Form_Unload(Cancel As Integer)

    rs.Close

    db.Close

End Sub

Private Sub Option1_Click()

    ans(l) = "A"

End Sub

Private Sub Option2_Click()

    ans(l) = "B"

End Sub

Private Sub Option3_Click()

    ans(l) = "C"

End Sub

三、框图

四、调试程序的过程

    a)对.mdb数据库操作及DAO对象的使用方式不够了解,导致程序无法正常运行。(解决方法:对样例程序进行编写调试,并查找相关数据库应用类书籍学习了解使用)

b) 开始编辑时,对整个程序结构设计不完整,边尝试边做,导致出现大量定义变量,程序结构臃肿.(解决方法:对所有变量进行统一重定义,明确其功能及作用域)

c) 由于对各个函数的作用顺序及返回值对相互之间的影响把握不够,导致保存选项,读取选项和查看成绩所调用的函数三者之间相互影响,其功能无法正常实现,(解决方法:列出框图,对程序进行逐语句调试,了解函数相互之间的作用关系及影响,找出正确的调用顺序及调用位置)

d) 初始设计时对判断已做题目并返回已做题目数的函数(wbr)作用要求不完善,导致在程序运行过称中出现异常值(已做题目数超过总题数或变为负值)(解决办法:不断测试了解具体要求,据此对其进行完善)

e) 用于返回以做题目答案的函数在运行过程中无法正常显示相关内容,其调用位置无法准确给出。

f) 再次打开窗体后,无法正常继续答题或修改答案,(由于退出窗体时用于计数的多个模块级变量值仍为上次运行结束时得值)。(解决方法:退出相应窗体时对用于计数的相关变量值清零)

由于对基础知识掌握不够熟练,对某些控件属性了解不全面,故在编写调试过程经常翻阅课本,且经常会出现诸如下标越界,类型不匹配等等大量错误。

五、收获体会

选择题目时对该题目的难度及要求有一定的心理预期,其中有从未听过的.mdb数据库应用和DAO对象,第一次着手开始做便感觉到对自己来说难度相当大。因此便十分重视这件事,经常去图书馆浏览数据库应用的相关书籍,学习如何建立数据连接,合理应用数据库内容。常常利用晚自习等空闲时间去机房进行程序的编写和测试,在此过程中开始对题目的基本框架有了大概的了解。据此,我便开始第一个编写相对较为简单的选择题模块,然后在对其进行增补修改后再移植到其他模块中应用。这样由简到繁最终成功按照要求按时完成了题目。

在编写过称中经常遇到瓶颈问题,这就离不开和室友之间的讨论了,虽然彼此选题不同,但在相互抱怨讨论的过程中,往往可以得到意外地灵感,所以在这次完成题目的过程中我深深的感受到相互讨论的重要性。同时这次课程设计也极大的锻炼了我独自发现并解决问题的能力,这对于今后的学习拥有极大的帮助。同时,能完全独立的通过自己的努力完成这个题目,虽然结果并不是非常完美,但我觉得这依然在一定程度上提高了我的自信心。

总的来说,这次课程设计的完成让我受益匪浅。

六、意见建议

a)希望课程设计上机实习的机会更多,有更多实际操作的机会,有更充足的时间编制完整的程序。

b)我们可以多人分组进行课程设计,增强团队合作能力,使得课程设计更简单容易。

七、示例截图

(以判断题为例)

判断题界面

     统计做对题数

八、源代码

a)

Private Sub Command1_Click()

Form1.Hide

Form2.Show

Form2.Picture1.Cls

Form2.Picture1.Print

Form2.Picture1.Print "  "; "单"

Form2.Picture1.Print "  "; "项"

Form2.Picture1.Print "  "; "选"

Form2.Picture1.Print "  "; "择"

Form2.Picture1.Print "  "; "题"

Dim db As Database

Dim rs As Recordset

Set db = OpenDatabase(App.Path + "\tiku.mdb", True, True, ";pwd=tiku")

Set rs = db.OpenRecordset("xz3")

Form2.Option1.Caption = rs.Fields("ans1").Value

Form2.Option2.Caption = rs.Fields("ans2").Value

Form2.Option3.Caption = rs.Fields("ans3").Value

Form2.Label7.Caption = rs.Fields("question").Value

rs.Close

db.Close

End Sub

Private Sub Command2_Click()

Form1.Hide

Form3.Show

Form3.Picture1.Cls

Form3.Picture1.Print

Form3.Picture1.Print "  "; "多"

Form3.Picture1.Print "  "; "项"

Form3.Picture1.Print "  "; "选"

Form3.Picture1.Print "  "; "择"

Form3.Picture1.Print "  "; "题"

Set db = OpenDatabase(App.Path + "\tiku.mdb", True, True, ";pwd=tiku")

Set rs = db.OpenRecordset("xz4")

Form3.Check1.Caption = rs.Fields("ans1").Value

Form3.Check2.Caption = rs.Fields("ans2").Value

Form3.Check3.Caption = rs.Fields("ans3").Value

Form3.Check4.Caption = rs.Fields("ans4").Value

Form3.Label7.Caption = rs.Fields("question").Value

rs.Close

db.Close

End Sub

Private Sub Command3_Click()

Form1.Hide

Form4.Show

Form4.Picture1.Cls

Form4.Picture1.Print

Form4.Picture1.Print

Form4.Picture1.Print "  "; "判"

Form4.Picture1.Print "  "; "断"

Form4.Picture1.Print "  "; "题"

Set db = OpenDatabase(App.Path + "\tiku.mdb", True, True, ";pwd=tiku")

Set rs = db.OpenRecordset("pd")

Form4.Label7.Caption = rs.Fields("question").Value

rs.Close

db.Close

End Sub

Private Sub Command4_Click()

Form1.Hide

Form5.Show

Form5.Picture1.Cls

Form5.Picture1.Print

Form5.Picture1.Print

Form5.Picture1.Print "  "; "填"

Form5.Picture1.Print "  "; "空"

Form5.Picture1.Print "  "; "题"

Set db = OpenDatabase(App.Path + "\tiku.mdb", True, True, ";pwd=tiku")

Set rs = db.OpenRecordset("tk")

Form5.Label8.Caption = rs.Fields("question").Value

rs.Close

db.Close

End Sub

Private Sub Command5_Click()

End

End Sub

b)

Dim db, rs, r_sum, l

Dim ans() As String, ans1() As String

Function yzts() As Integer

    Dim i, s

    s = 0

    For i = 1 To UBound(ans)

        If ans(i) <> "0" Then s = s + 1

    Next i

    yzts = s

End Function

Private Sub Command1_Click()

    Option1.Value = False

    Option2.Value = False

    Option3.Value = False

    l = l - 1

    If l >= 1 Then

        rs.MovePrevious

        Option1.Caption = rs.Fields("ans1").Value

        Option2.Caption = rs.Fields("ans2").Value

        Option3.Caption = rs.Fields("ans3").Value

        Label7.Caption = rs.Fields("question").Value

    End If

    If l <= 1 Then l = 1

    Label2 = Trim(Str(l))

    Label5 = Trim(Str(yzts))

End Sub

Private Sub Command2_Click()

    Option1.Value = False

    Option2.Value = False

    Option3.Value = False

    l = l + 1

    If l <= r_sum Then

        rs.MoveNext

        Option1.Caption = rs.Fields("ans1").Value

        Option2.Caption = rs.Fields("ans2").Value

        Option3.Caption = rs.Fields("ans3").Value

        Label7.Caption = rs.Fields("question").Value

    End If

    If l >= r_sum Then l = r_sum

    Label2 = Trim(Str(l))

    Label5 = Trim(Str(yzts))

End Sub

Private Sub Command3_Click()

    Dim i, k

    k = 0

    For i = 1 To UBound(ans)

        If ans(i) <> "0" Then

            Debug.Print ans(i), ans1(i)

            If Mid(ans1(i), Asc(ans(1)) - 64, 1) = "1" Then k = k + 1

        End If

    Next i

    s = MsgBox("本类型的题目你共做对了" & k & "个", vbOKOnly + vbInformation, "考试系统")

End Sub

Private Sub Command4_Click()

Form2.Hide

Form1.Show

End Sub

Private Sub Form_Load()

    Dim i

    Set db = OpenDatabase(App.Path + "\tiku.mdb", True, True, ";pwd=tiku")

    Set rs = db.OpenRecordset("xz3")

    r_sum = rs.RecordCount

    l = 1

    ReDim ans(r_sum)

    ReDim ans1(r_sum)

    For i = 1 To r_sum

        ans(i) = "0"

        ans1(i) = rs.Fields("ans").Value

        rs.MoveNext

    Next i

    rs.MoveFirst

End Sub

Private Sub Form_Unload(Cancel As Integer)

    rs.Close

    db.Close

End Sub

Private Sub Option1_Click()

    ans(l) = "A"

End Sub

Private Sub Option2_Click()

    ans(l) = "B"

End Sub

Private Sub Option3_Click()

    ans(l) = "C"

End Sub

c)

Dim db, rs, r_sum, l

Dim ans() As String, ans1() As String

Function yzts() As Integer

    Dim i, s

    s = 0

    For i = 1 To UBound(ans)

        If ans(i) <> "0" Then s = s + 1

    Next i

    yzts = s

End Function

Private Sub Command1_Click()

    Check1.Value = 0

    Check2.Value = 0

    Check3.Value = 0

    Check4.Value = 0

    l = l - 1

    If l >= 1 Then

        rs.MovePrevious

        Check1.Caption = rs.Fields("ans1").Value

        Check2.Caption = rs.Fields("ans2").Value

        Check3.Caption = rs.Fields("ans3").Value

        Check4.Caption = rs.Fields("ans4").Value

        Label7.Caption = rs.Fields("question").Value

    End If

    If l <= 1 Then l = 1

    Label2 = Trim(Str(l))

    Label5 = Trim(Str(yzts))

End Sub

Private Sub Command2_Click()

    Check1.Value = 0

    Check2.Value = 0

    Check3.Value = 0

    Check4.Value = 0

    l = l + 1

    If l <= r_sum Then

        rs.MoveNext

        Check1.Caption = rs.Fields("ans1").Value

        Check2.Caption = rs.Fields("ans2").Value

        Check3.Caption = rs.Fields("ans3").Value

        Check4.Caption = rs.Fields("ans4").Value

        Label7.Caption = rs.Fields("question").Value

    End If

    If l >= r_sum Then l = r_sum

    Label2 = Trim(Str(l))

    Label5 = Trim(Str(yzts))

End Sub

Private Sub Command3_Click()

    Dim i, k

    k = 0

    For i = 1 To UBound(ans)

        If ans(i) <> "0" Then

            Debug.Print ans(i), ans1(i)

            If Mid(ans1(i), Asc(ans(1)) - 64, 1) = "1" Then k = k + 1

        End If

    Next i

    s = MsgBox("本类型的题目你共做对了" & k & "个", vbOKOnly + vbInformation, "考试系统")

End Sub

Private Sub Command4_Click()

Form3.Hide

Form1.Show

End Sub

Private Sub Form_Load()

 Dim i

    Set db = OpenDatabase(App.Path + "\tiku.mdb", True, True, ";pwd=tiku")

    Set rs = db.OpenRecordset("xz4")

    r_sum = rs.RecordCount

    l = 1

    ReDim ans(r_sum)

    ReDim ans1(r_sum)

    For i = 1 To r_sum

        ans(i) = "0"

        ans1(i) = rs.Fields("ans").Value

        rs.MoveNext

    Next i

    rs.MoveFirst

End Sub

Private Sub Form_Unload(Cancel As Integer)

    rs.Close

    db.Close

End Sub

Private Sub Check1_Click()

    ans(l) = "A"

End Sub

Private Sub Check2_Click()

    ans(l) = "B"

End Sub

Private Sub Check3_Click()

    ans(l) = "C"

End Sub

Private Sub Check4_Click()

    ans(l) = "D"

End Sub

d)

Dim db, rs, r_sum, l

Dim ans() As String, ans1() As String

Function yzts() As Integer

    Dim i, s

    s = 0

    For i = 1 To UBound(ans)

        If ans(i) <> "0" Then s = s + 1

    Next i

    yzts = s

End Function

Private Sub Command1_Click()

    Option1.Value = False

    Option2.Value = False

    l = l - 1

    If l >= 1 Then

        rs.MovePrevious

        Label7.Caption = rs.Fields("question").Value

    End If

    If l <= 1 Then l = 1

    Label2 = Trim(Str(l))

    Label5 = Trim(Str(yzts))

End Sub

Private Sub Command2_Click()

    Option1.Value = False

    Option2.Value = False

    l = l + 1

    If l <= r_sum Then

        rs.MoveNext

        Label7.Caption = rs.Fields("question").Value

    End If

    If l >= r_sum Then l = r_sum

    Label2 = Trim(Str(l))

    Label5 = Trim(Str(yzts))

End Sub

Private Sub Command3_Click()

 Dim i, k

    k = 0

    For i = 1 To UBound(ans)

        If ans(i) <> "0" Then

            Debug.Print ans(i), ans1(i)

            If Mid(ans1(i), Asc(ans(1)) - 64, 1) = "1" Then k = k + 1

        End If

    Next i

    s = MsgBox("本类型的题目你共做对了" & k & "个", vbOKOnly + vbInformation, "考试系统")

End Sub

Private Sub Command4_Click()

Form4.Hide

Form1.Show

End Sub

Private Sub Form_Load()

 Dim i

    Set db = OpenDatabase(App.Path + "\tiku.mdb", True, True, ";pwd=tiku")

    Set rs = db.OpenRecordset("pd")

    r_sum = rs.RecordCount

    l = 1

    ReDim ans(r_sum)

    ReDim ans1(r_sum)

    For i = 1 To r_sum

        ans(i) = "0"

        ans1(i) = rs.Fields("ans").Value

        rs.MoveNext

    Next i

    rs.MoveFirst

End Sub

Private Sub Form_Unload(Cancel As Integer)

    rs.Close

    db.Close

End Sub

Private Sub Option1_Click()

    ans(l) = "A"

End Sub

Private Sub Option2_Click()

    ans(l) = "B"

End Sub

e)

Dim db, rs, r_sum, l

Dim ans() As String, ans1() As String

Function yzts() As Integer

    Dim i, s

    s = 0

    For i = 1 To UBound(ans)

        If ans(i) <> "0" Then s = s + 1

    Next i

    yzts = s

End Function

Private Sub Command1_Click()

Text1.Text = ""

l = l - 1

    If l >= 1 Then

        rs.MovePrevious

        Label8.Caption = rs.Fields("question").Value

    End If

    If l <= 1 Then l = 1

    Label3 = Trim(Str(l))

    Label6 = Trim(Str(yzts))

End Sub

Private Sub Command2_Click()

    Text1.Text = ""

    l = l + 1

    If l <= r_sum Then

        rs.MoveNext

        Label8.Caption = rs.Fields("question").Value

    End If

    If l >= r_sum Then l = r_sum

    Label3 = Trim(Str(l))

    Label6 = Trim(Str(yzts))

End Sub

Private Sub Command3_Click()

    Dim i, k

    k = 0

    For i = 1 To UBound(ans)

        If ans(i) <> "0" Then

            Debug.Print ans(i), ans1(i)

            If ans1(i) = Text1.Text Then k = k + 1

        End If

    Next i

   s = MsgBox("本类型的题目你共做对了" & k & "个", vbOKOnly + vbInformation, "考试系统")

End Sub

Private Sub Command4_Click()

Form5.Hide

Form1.Show

End Sub

Private Sub Form_Load()

    Dim i

    Set db = OpenDatabase(App.Path + "\tiku.mdb", True, True, ";pwd=tiku")

    Set rs = db.OpenRecordset("tk")

    r_sum = rs.RecordCount

    l = 1

    ReDim ans(r_sum)

    ReDim ans1(r_sum)

    For i = 1 To r_sum

        ans(i) = "0"

        ans1(i) = rs.Fields("ans").Value

        rs.MoveNext

    Next i

    rs.MoveFirst

End Sub

Private Sub Form_Unload(Cancel As Integer)

    rs.Close

    db.Close

End Sub

九、主要参考资料

1、visual basic 课程设计                      王栋主编

清华大学出版社

2、visual basic程序设计简明教程               龚培增 陆慰民 杨志强 编

高等教育出版社

3、visual basic 课程设计案例精编             张勇等编著

北京:中国水利水电出版社,2004

更多相关推荐:
学生选课管理系统课程设计报告(更改)222

湖南农业大学研究生课程论文学院年级专业姓名学号课程论文题目课程名称评阅成绩评阅意见成绩评定教师签名日期年月日1目录一前言311开发背景312系统配置3二需求分析421系统总体功能分析422系统功能要求设计523...

C语言课程设计报告 学生选课系统加源代码

兰州理工大学计算机与通信学院20XX年春季学期C程序设计课程设计题目:学生选课系统专业班级:通信工程1班姓名:学号:指导教师:XXX成绩:摘要学生选课系统是一个教育单位不可缺少的重要系统组成部分,它对于学校的决…

C++课程设计报告样例 学生选课系统设计报告

计算机与信息科学系学生选课系统设计报告班级专业题目指导教师学号姓名同组人C计科系08级2班计算机科学与技术学生选课系统无20xx年1月1日学生选课系统设计报告目录Contents引言3一设计目的3二总体设计4三...

C语言课程设计实践报告——《学生选课管理系统》[内附程序源代码]

C语言大型作业实践报告计算机1001制作者:20##年6月题目:选修课程管理系统要求:假定有N门选修课,每门课有课程编号、名称、课程性质、总学时、授课学时、实验或上机学时、学分、开课学期等信息。学生可按要求(如…

学生选课系统设计报告

学生选课管理系统设计报告班级计本1102学号323335组员张静静白雪杨月负责人白雪指导老师李微目录1引言错误未定义书签11设计目标错误未定义书签12采取的策略错误未定义书签13设计依据错误未定义书签14参考资...

学生选课信息系统数据库课程设计报告

Oracle数据库应用开发期末设计报告学号20xx051341姓名秦小梅班级中软lt3gt班学期第二学期成绩数据库原理与应用课程设计目录一系统概述2二需求说明21需求调研22系统功能的设计和划分33数据流图44...

学生选课系统概要设计报告

学生选课系统概要设计报告班级网络102班姓名张宇飞08103639王籽硕081036311引言11编写目的学生选课系统可对学生信息选修课程科目成绩进行各方面的管理为用户提供充足的信息和快捷的查询修改手段选课管理...

选课系统设计报告

学生选课系统报告书目录第一章摘要关键词2第二章课程设计任务内容与思路3第三章程序功能划分及流程图第四章程序运行结果第五章设计心得第六章小组分工第七章参考文献3591011第1页共1页学生选课系统报告书第一章摘要...

C语言程序设计报告—学生选修课程系统

C语言程序设计学校:学院:班级序号:学号:指导老师:C语言程序设计报告一、C语言课程设计的目的:高级语言课程设计是学习完《高级语言程序设计》课程后进行的一次全面的综合性上机实验。其目的在于为同学提供了一个既动手…

学生选课系统实验报告

武夷学院课程设计报告课程名称设计题目学生班级学生姓名指导教师完成日期C语言程序设计学生选课管理系统20xx级计算机科学与技术2班20xx19数学与计算机学院课程设计项目研究报告目录第1章项目简介0311项目名称...

学生学籍管理系统(数据结构课程设计报告)

数据结构课程设计专业班级姓名指导教师20xx年12月30日1课程设计的目的和意义一般来讲课程设计教学实验复杂一些深度更广并且更加接近实用目的是通过课程设计的综合训练培养学生实际分析问题编程和动手能力使学生对数据...

C语言程序设计报告—学生选修课程系统

C语言程序设计学校:中国地址大学学院:工程学院班级序号:学号:姓名:指导老师:C语言程序设计报告一、C语言课程设计的目的:高级语言课程设计是学习完《高级语言程序设计》课程后进行的一次全面的综合性上机实验。其目的…

学生选课系统课程设计报告(17篇)