VB课程设计.docx
《VB课程设计.docx》由会员分享,可在线阅读,更多相关《VB课程设计.docx(21页珍藏版)》请在冰豆网上搜索。
VB课程设计
VB课程设计报告
课程题目:
打字练习应用程序
班级:
学号:
姓名:
专业:
计算机科学与技术
指导老师:
时间:
2013年5月12日
目录
一、概述1
1、课程设计的目的1
2、课程设计的内容1
3、课程设计的基本要求1
二、总体设计方案2
1、软件的选择和功能2
2、设计的总框图2
(1)程序总框图2
(2)设计思想:
3
三、详细设计3
1、界面的属性设计3
2、流程图4
3、实现各事件过程代码5
四、课程设计总结(心得)15
一、概述
1、课程设计的目的
培养学生综合利用VB语言进行程序设计的能力,主要是培养学生利用系统提供的标准函数和标准控件进行创新设计。
学生应通过接触客观实际,了解和认识所学的专业知识,掌握所学知识在客观实际中的应用,并能亲自动手完成设计,把所学的理论知识与实际能力紧密的结合在一起。
2、课程设计的内容
应用所学的VB程序设计知识,编写一个中英文打字应用程序。
SSTab打字应用程序是用选项卡控件的每个选项卡做一个应用程序界面。
为了实现选项卡打字应用程序的要求需添加4个控件:
TabbedDialogControl(SSTab)、RichTextBox、Adodc、DataGrid。
3、课程设计的基本要求
(1)打字程序运行后,首先在窗体上显示设计者的基本信息,用户按任意键或等待30秒后进入练习者登录窗口。
(2)用户登录(输入学号和姓名)将用户的信息记录在Access数据库的表中(学号、姓名),数据控件用MicrosoftADODataControl控件。
(3)登录后点击“开始”,随机打开以文件的形式保存的样本文本,显示在样本框中。
(用MicrosoftRichTextBox控件作为样本框。
)
(4)练习者可在文本框中输入样本内容,并以倒计时显示剩余时间。
(5)打字过程中即时提示正确与错误(用蓝色标识正确、用红色标识错误)。
(6)打字过程中可随时暂停打字,停止倒计时。
并将打字信息存入Access数据库表中练习者的记录中(总字符数、正确数、错误数、剩余时间和打字日期)。
暂停后可继续打字练习。
(7)打字过程中可随时查询所有打字者记录,查询记录时停止计时。
查询记录用MicrosoftDataGridControl控件。
(8)打字练习过程中,能随时修改输入错误,并能随时继续未完成的打字练习。
(9)倒计时结束,禁止练习者输入,并将结果存入Access数据库的表中该练习者相应的记录中。
(10)SSTab打字应用程序界面用MicrosoftTabbedDialogControl实现。
二、总体设计方案
1、软件的选择和功能
打字练习软件是基于Windows操作平台,以VisualStudio2005为开发环境,利用MFC编写的,可在WindowsXP操作系统中安全运行。
本软件界面的设计主要通过VisualC++提供的多种控件来构建的,例如,RicheEdit2.0控件用来实现显示和输入字符串;ListControl控件读取并显示数据库内容等。
本软件采用Access2007作为数据库,用来记录软件使用者的部分信息,如姓名、学号、剩余时间、正确数、错误数、字符数和练习日期等数据。
2、设计的总框图
(1)程序总框图
(2)设计思想:
当使用者开始使用此打字练习程序时,弹出窗体提醒用户按任意键进入或等待30秒进入登入界面。
只有用户同时输入学号和姓名后才可以进入打字练习选项卡,否者进不去。
输入完学号和姓名后,单击“登录”按钮,进入打字练习,单击“开始”按钮Rtext1自动从指定文件夹中随机读取文件,并同时进行10分钟倒计时,当单击“暂停”或“停止”按钮时停止计时并且Text3文本框被锁定不能再输入,同时统计正确数、错误数和字符数。
用户练习完后,单击“查看记录”选项卡,就可查看打字记录,也可单击此选项卡里的“返回打字”按钮即可返回打字,也可单击“结束”按钮结束打字练习。
单击“退出”选项卡退出程序。
三、详细设计
1、界面的属性设计
对象
属性
属性值
Tab(0)
Caption
登录
Tab
(1)
Caption
打字练习
Tab
(2)
Caption
查看记录
Tab(3)
Caption
退出
Command1
Caption
登录
Font
华文行楷,一号,粗体
Command2
Caption
取消
Font
华文行楷,一号,粗体
Command3
Caption
退出
Font
华文行楷,一号,粗体
Command4
Caption
开始
Font
华文中宋,小一,粗体
Command5
Caption
暂停
Font
华文中宋,小一,粗体
Command6
Caption
停止
Font
华文中宋,小一,粗体
Command7
Caption
返回打字
Font
华文新魏,二号,粗体
Command8
Caption
结束
Font
华文新魏,二号,粗体
Label4
Caption
剩余时间
Font
宋体,三号,粗体
Forecolor
Label1.Forecolor=vbBlue
Label6
Caption
正确数
Font
宋体,三号,粗体
Forecolor
Label1.Forecolor=RGB(10,100,200)
Label8
Caption
错误数
Font
宋体,三号,粗体
Forecolor
Label1.Forecolor=RGB(0,100,200)
Label11
Caption
字符数
Font
宋体,三号,粗体
Forecolor
Label1.Forecolor=RGB(102,10,200)
Label2
Caption
姓名
Font
宋体,三号,粗体
Forecolor
Label2.ForeColor=RGB(100,190,200)
Label1
Caption
学号
Font
宋体,三号,粗体
Forecolor
Label2.ForeColor=vbBlue
Text3
BackColor
Text3.BackColor=vbBlue
2、流程图
3、实现各事件过程代码
’在通用声明处声明
OptionExplicit
PrivateconstrAsString
DimXHAsString,t0%,m0,s0
DimXMAsString,t,a,n%,P%,v%
’“登录”按钮代码
PrivateSubCommand1_Click()
SSTab1.Tab=1
SSTab1.TabEnabled(0)=True
SSTab1.TabEnabled
(1)=True
SSTab1.TabEnabled
(2)=True
SSTab1.TabEnabled(3)=True
XH=Trim(Text1)
XM=Trim(Text2)
Adodc1.CommandType=adCmdText
Adodc1.RecordSource="select*fromDengLuwhere学号='"&XH&"'and姓名='"&XM&"'"
’若数据表中已存在用户信息(即数据表的记录指针指向该记录,否则指向表的最后一条记录之后)。
Adodc1.Refresh’刷新Adodc1
IfAdodc1.Recordset.EOFThen’如果表中已存在该用户,学号,姓名不变,其余全部初始化
Adodc1.Recordset.AddNew
Adodc1.Recordset.Fields("学号")=XH
Adodc1.Recordset.Fields("姓名")=XM
Adodc1.Recordset.Fields("剩余时间")=0
Adodc1.Recordset.Fields("练习日期")=Date
Adodc1.Recordset.Fields("字符数")=0
Adodc1.Recordset.Fields("正确数")=0
Adodc1.Recordset.Fields("错误数")=0
Adodc1.Recordset.Update’将改动的数据写入数据库中
Else
Adodc1.Recordset.Fields("剩余时间")=0
Adodc1.Recordset.Fields("练习日期")=Date
Adodc1.Recordset.Fields("字符数")=0
Adodc1.Recordset.Fields("正确数")=0
Adodc1.Recordset.Fields("错误数")=0
Adodc1.Recordset.Update
EndIf
EndSub
当进入登录页面后,运行界面如下
只有当输入学号和姓名后登录按钮才可操作,运行界面如下
’“取消”按钮代码
PrivateSubCommand2_Click()
Text1=""
Text2=""
Text1.SetFocus
EndSub
’“退出”按钮代码
PrivateSubCommand3_Click()
End
EndSub
’“开始”按钮代码
PrivateSubCommand4_Click()
Dimpf$,n,P$,s,t0,s0
IfCommand4.Caption="开始"Then
Command4.Caption="继续"
s=""
Randomize
n=Int(Rnd*15+1)
pf="z:
\SSTab打字\"&n&".txt"’随机选定其中之一文档
OpenpfForInputAs#1
DoWhileNotEOF
(1)
LineInput#1,a
s=s&a
Loop
RText1=s
Close#1
EndIf
Command4.Enabled=False
Timer2.Enabled=True
Timer2.Interval=1000
Text3.Enabled=True
EndSub
单击开始“按钮”后运行界面如下
PrivateSubCommand5_Click()
Timer2.Interval=0
Command4.Enabled=True
Text3.Enabled=False
EndSub
PrivateSubCommand6_Click()
Dimx%,y%,t2%,i%,c1,c2
Command4.Caption="继续"
Timer2.Enabled=False
Command5.Enabled=False
Text3.Locked=True
Label7=P
Label9=n
Label12=P+n
IfLen(Text3)>0Then
Timer2.Interval=0
EndIf
Adodc1.Recordset.Fields("学号")=XH
Adodc1.Recordset.Fields("姓名")=XM
Adodc1.Recordset.Fields("剩余时间")=Val(Int((t0Mod3600)\60)&"."&Int((t0Mod3600)\60))
Adodc1.Recordset.Fields("练习日期")=Date
Adodc1.Recordset.Fields("字符数")=Val(RText1)
Adodc1.Recordset.Fields("正确数")=Label7
Adodc1.Recordset.Fields("错误数")=Label9
Adodc1.Recordset.Update
EndSub
PrivateSubCommand7_Click()
SSTab1.Tab=1
EndSub
PrivateSubCommand8_Click()
End
EndSub
PrivateSubForm_KeyPress(KeyAsciiAsInteger)
SSTab1.Visible=True
SSTab1.Tab=0
SSTab1.TabEnabled(0)=True
SSTab1.TabEnabled
(1)=False
SSTab1.TabEnabled
(2)=True
SSTab1.TabEnabled(3)=True
t0=600
EndSub
’装载窗体事件
PrivateSubForm_Load()
SSTab1.Visible=False
Adodc1.Visible=False
Command1.Enabled=False
Timer2.Enabled=False
Show
Form1.FontSize=45
Form1.Font="华文中宋"
Form1.ForeColor=RGB(0,0,255)
Form1.PrintSpc(7);"中英文打字练习"
Print
Form1.Font="华文新魏"
Form1.FontSize=25
Form1.PrintSpc(10);"学院:
信息工程学院"
Print
Form1.PrintSpc(10);"学号:
201230050117"
Print
Form1.PrintSpc(10);"班级:
1230501"
Print
Form1.PrintSpc(10);"制作人:
张阳辉"
Print
Form1.PrintSpc(10);"专业:
计算机科学与技术"
Print
Label10.FontSize=30
Label10.ForeColor=RGB(255,0,255)
a="按任意键进入主界面............."
Label10=a
t=30
Timer1.Interval=1000
Text1.ForeColor=RGB(0,0,255)
Text2.ForeColor=RGB(82,160,210)
Label4.ForeColor=RGB(10,10,200)
Label6.ForeColor=RGB(10,100,200)
Label8.ForeColor=RGB(0,100,20)
Label11.ForeColor=RGB(102,10,200)
Label1.ForeColor=vbBlue
Label2.ForeColor=RGB(100,190,200)
Text3.BackColor=vbBlue
WMP1.settings.playCount=30’添加背景音乐
WMP1.settings.volume=100
WMP1.URL="z:
\by2、汪苏泷-有点甜.mp3"
WMP1.Visible=False
EndSub
’运行界面如下
PrivateSubSSTab1_Click(PreviousTabAsInteger)
IfSSTab1.Tab=3Then
End
EndIf
IfSSTab1.Tab=2Then
Adodc1.CommandType=adCmdText
Adodc1.RecordSource="select*fromdenglu"
Adodc1.Refresh
EndIf
EndSub
PrivateSubText1_Change()
IfText1<>""AndText2<>""ThenCommand1.Enabled=True
EndSub
PrivateSubText1_KeyPress(KeyAsciiAsInteger)
IfKeyAscii=13Then
Text2.SetFocus
EndIf
EndSub
PrivateSubText2_Change()
IfText1<>""AndText2<>""ThenCommand1.Enabled=True
EndSub
PrivateSubText2_KeyPress(KeyAsciiAsInteger)
IfKeyAscii=13Then
Command1.SetFocus
EndIf
EndSub
’对样本的文字进行着色
PrivateSubText3_Change()
Dimi%,Yb,Sr
n=0
P=0
v=P+n
IfText3<>""Then
Fori=1ToLen(Text3)
Yb=Mid(RText1.Text,i,1)
Sr=Mid(Text3.Text,i,1)
RText1.SelStart=i-1
RText1.SelLength=1
IfYb<>SrThen
n=n+1
RText1.SelColor=vbRed
Else
P=P+1
RText1.SelColor=vbBlue
EndIf
Nexti
EndIf
IfLen(Text3)=Len(RText1)ThenText3.Locked=True
RText1.SelStart=Len(Text3)
RText1.SelLength=Len(RText1.Text)-Len(Text3.Text)
RText1.SelColor=vbBlack
EndSub
单击“开始”按钮进行打字练习后运行界面如下
’进入登录界面倒计时的代码
PrivateSubTimer1_Timer()
Label10=a&t
Ift=0Then
Timer1.Enabled=False
SSTab1.Tab=0
SSTab1.TabEnabled(0)=True
SSTab1.TabEnabled
(1)=False
SSTab1.TabEnabled
(2)=True
SSTab1.TabEnabled(3)=True
SSTab1.Visible=True
Else
t=t-1
EndIf
EndSub
’开始打字练习的倒计时代码
PrivateSubTimer2_Timer()
Dimm0,s0
Ift0=0Then
Timer2.Enabled=False
Text3.Locked=True
Else
m0=t0\60
s0=t0Mod60
t0=t0-1
Label5="00:
"&Format(m0,"00:
")&Format(s0,"00")
EndIf
Label5.ForeColor=vbBlue
EndSub
单击“查看记录”后,运行后界
四、课程设计总结(心得)
通过本次的VB实验程序设计,使我对VB课程有进一步的了解,使自己的上机能力有大幅度提升,在设计这个程序时,首先我开始构思程序的内容,再从书本、网上找了一些有关打字程序设计的资料,但是当把基本的弄好了之后,发现了一些棘手的问题,使我无从下手,经过与同学的商讨和老师的指导后,终于明白了其中的奥妙:
其实在打字程序上花费最多事时间是在进行字母的比较正确与否并进行记录。
最后经过自己的反复尝试以及与同学的讨论,打字练习应用程序最终设计成功。
从这一个多星期的设计过程中,使我明白自己动手编程序原来是这么一件快乐的事情。
俗话说得好“熟能生巧”,所以不仅是要学会它更加需要会运用它,这次设计程序让我受益良多,我会好好珍惜像这种难得的机会,同时感谢赵老师的耐心指导。