vb课程设计报告.docx
《vb课程设计报告.docx》由会员分享,可在线阅读,更多相关《vb课程设计报告.docx(40页珍藏版)》请在冰豆网上搜索。
vb课程设计报告
(此文档为word格式,下载后您可任意编辑修改!
)
单位分院(系)
专业
学号
学生姓名
指导教师
完成日期二零一零年七月五日
我们日常生活中会用到许多软件,有聊天、娱乐等等。
也会浏览许多网站,但我们经常使用的却不多,此外,我们每天要做的事也需要有备忘,以及我们的联系簿等。
此软件就是依旧人们的这些需求而编写的。
内容包括对常用的网站操作,联系簿和备忘录的操作。
本软件采用VisualBasic语言来编写,实现的需求功能。
VisualBasic语言简便易学,有许多优点,例如:
可编写标准模块,在多个窗体中调用相同的程序,也可自定义函数,在同一工程中自由调用,可以添加多个专用部件,为编程带来了方便,为编写使用方便、功能强大的生活小助手软件提供了良好的平台。
软件功能编写中使用了access数据库,通过对数据库的调用实现了数据的管理。
大量调用事件、过程、函数及窗体,实现了需求的功能。
论文首先介绍了生活小助手开发涉及的相关技术,主要围绕VisualBasic语言的相关对象和事件。
其次,介绍了生活小助手的总体分析与设计,包括需求分析、功能模块分析和程序设计。
最后,通过VisualBasic语言的开发界面检验了该程序的可用性,并以具体描述与展示代码相结合的方式详细地叙述了系统功能的实现。
关键词:
VisualBasic语言、生活小助手软件、数据库。
第一章
选题的意义
生活小助手是对日常生活使用的软件的管理的应用软件。
选择自己编写软件程序是因为能更深刻地了解VisualBasic软件的应用,并且能够学习到简易软件的编写、开发过程。
通过本次实习的程序制作,使学生进一步掌握了VisualBasic的基础知识、规范和高级语言程序设计的基本方法,理解事件驱动的特性,能够阅读由VisualBasic编写的程序。
了解并学会了对数据库的增删改查等基本的功能运用,通过数据库对一般数据的管理。
并掌握一般的程序设计方法,具有一定的程序调试能力,为后续的计算机课程打下坚实的基础。
本次实习我们学到的知识有:
熟悉VisualBasic集成开发环境,了解VisualBasic中对象的概念和事件驱动程序的基本特性,掌握基本的数据结构和常用算法,学会了数据库的方法使用,数据的管理,能够编写和调试VisualBasic程序。
我们设计该软件的主要目的是:
1.通过该题目的设计,掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;
2.掌握菜单的使用方法;
3.掌握多窗体的调用方法;
4.掌握数据库的应用;
5.数据库的调用,及对数据的管理。
第二章系统功能需求分析
2.1系统概述
我设计的软件,模仿了万能收藏窗体布局、其中部分功能与它相似。
窗体大致分为:
标题栏、菜单栏、工具栏、工作区、状态栏几个部分。
系统拥有网址的保存、修改、删除,和浏览网页;联系簿的保存、修改、删除;及备忘等功能。
2.2系统的构成
我们设计的软件,窗体布局简洁,方便实用。
软件主要有气个窗体构成,登陆、主窗口、添加网址、添加联系人,备忘录、数据查找窗体、标准模块。
登录窗口主要包括combo、text录入。
验证码的使用、数据库的链接等
主窗口主要包括viewtree、dgbrid显示数据,快捷键的使用、菜单栏、数据库的链接等
添加窗体主要包括combo输入及下拉菜单的使用、数据的显示、数据库的链接等
备忘录窗体主要包括栏、文本编辑、文字计数、数据库的链接等。
数据查找窗体主要包括combo输入及下拉菜单的使用、dbgrid数据显示数据库的链接等。
标准模块主要包括各种函数、全局变量的声明,文件初始化等功能。
2.3各模块的功能
登录窗体与数据库链接实现单对单(一个账户对应一个密码)登陆模式,实用随机数产生验证码限制登录。
主窗体使用viewtree与dbgrid显示数据库内容,同时是viewtree中节点与dbgrid相连,实现随时变化。
菜单栏中添加、修改按钮能实现对其他窗体的调用,同时改变显示窗体的标题栏属性;菜单栏中的删除按钮可以删除对应项在数据库的数据内容,并同时改变dbgrid格内容;菜单栏中的查看网址按钮可打开浏览器浏览相应网页;查找按钮可查找数据库中相应内容。
下方的状态栏可以显示操作人的信息,与系统详细时间等内容。
添加窗体与数据库相连,单击保存改变数据库中数据,取消关闭相应窗口。
修改窗体可读取显存数据库中的内容,并进行修改,取消关闭相应窗口。
当改变关系与类型与数据库中无相符内容时,则改变数据树内容。
编辑菜单项具有编辑文本文件的最基本、最常见的功能,复制菜单项可以复制已选定的文本,剪切菜单项可以剪切已选定的文本,粘贴菜单项可以可以再光标插入点处插入一已复制或已剪切的文本。
全选菜单项可以把当前文本全部选中。
同时字体菜单可改变字体属性。
在文本框中内容改变时,统计其中字数显示在下方,当字数超出一定限制是给出提示。
2.4系统的运行环境
系统的运行环境是win7、Vista、XP等常用系统软件。
2.5各模块的功能
软件具有储存修改网址、联系簿、备忘录的功能。
登录窗口有数据库连接,实现单对单(一个账号对应一个密码)登陆系统。
使用随机数产生验证码限制登录情况。
主窗口使用viewtree显示数据库中类型表的显示,使用dbgrid显示数据中的详细数据,菜单栏是文件功能的具体体现者,具有对其他窗体的显示的调用功能。
新建菜单调用添加网址、添加联系人或添加备忘窗体;修改菜单调用修改网址、修改联系人或修改备忘窗体;点击删除会在数据库中删除相应项;查找联系人会调用查找窗体,查看网址会启动浏览器查看相应网页。
当点击添加时,窗体的caption属性为添加,当点击确定时改变数据库内容;取消退出窗体。
当点击修改时,窗体的caption属性会变为修改,同时读取数据库文件显示相应数据,当内容数据发生改变时对数据库内容进行修改;点击取消突出窗体。
当窗体中的类型或关系框中内容与数据库中内容不符,则同时在类型数据表中进行修改。
备忘录菜单中菜单栏编辑菜单项具有编辑文本文件的最基本、最重要、也是最常见的功能,复制菜单项可以复制已选定的文本,剪切菜单项可以剪切已选定的文本,粘贴菜单项可以可以再光标插入点处插入一已复制或已剪切的文本。
全选菜单项可以把当前文本全部选中。
第三章系统代码
3.1主窗体代码
OptionExplicit
Consttreewide=2000'TREEVIEW的最小宽度
Constbiaowide=2000'DBGRID的最小宽度
PrivateSubForm_Load()
imgPointer.Left=ReadIni("chuangti","imgpointerleft","1200")'从ini文件中确定窗体大小
Me.MoveReadIni("chuangti","formleft","100"),ReadIni("chuangti","formtop","100"),ReadIni("chuangti","formwidth","2400"),ReadIni("chuangti","formheight","2400")
'Me关键字像是隐含声明的变量。
这个关键字适用于类模块中的每个过程。
当类有多个实例时,Me在代码正在执行的地方提供引用具体实例的方法。
要把当前执行类实例的有关信息传递到另一个模块的过程,Me非常有用
Data1.DatabaseName=dizhi&"shuju.mdb"
SetDatashuju=Workspaces(0).OpenDatabase(dizhi&"shuju.mdb",False,False)
ListTree
lianxibiao
EndSub
PrivateSubForm_Resize()'当一个对象第一次显示或当一个对象的窗口状态改变时该事件发生
OnErrorResumeNext'resume在错误处理程序结束后,恢复原先的运行。
如果错误和错误处理程序出现在同一个程序中,则从紧随产生错误的语句的下个语句恢复运行。
如果错误发生在被调用的过程中,则对最后一次调用包含错误处理程序的过程的语句(或OnErrorResumeNext语句),从紧随该语句之后的语句处恢复运行
IfMe.WidthIfMe.WindowState<>1ThenchicunimgPointer.Left'windowstate返回或设置一个值,该值用来指定在运行时窗体窗口的可视状态。
0为正常,1最小化,2最大化
EndSub
PrivateSubchicun(XAsLong)
X=treewide
TreeView1.Width=X
imgPointer.Left=X+40
DBGrid1.Left=X+40
DBGrid1.Width=Me.Width-(TreeView1.Width+100)
TreeView1.Top=Toolbar1.Height
DBGrid1.Top=TreeView1.Top+2
imgPointer.Top=TreeView1.Top
picMove.Top=TreeView1.Top
TreeView1.Height=Me.ScaleHeight-TreeView1.Top-300'设置AsString)
DimaAsString
a="select姓名,关系,电话,地址,qq,Email,备注fromlianxiren"
IfstrRelation<>""Thena=a&"where关系='"&strRelation&"'"
Data1.RecordSource=a'ecordSource设置一个数据控件的底层表、sql语句或querydef
Data1.Refresh
shujudbg7,"lianxiren"
IfstrRelation<>""ThenDBGrid1.Columns
(1).Visible=True
EndSub
PublicSubwangzhibiao(OptionalstrTypeAsString)
DimaAsString
a="select名称,网址,类型,备注fromwangzhi"
IfstrType<>""Thena=a&"where类型='"&strType&"'"
Data1.RecordSource=a'ecordSource设置一个数据控件的底层表、sql语句或querydef
Data1.Refresh
shujudbg4,"wangzhi"
EndSub
PublicSubbeiwangbiao(OptionalstrTypeAsString)
DimaAsString
a="select文件名,内容frombeiwang"
IfstrType<>""Thena=a&"where类型='"&strType&"'"
Data1.RecordSource=a'ecordSource设置一个数据控件的底层表、sql语句或querydef
Data1.Refresh
shujudbg2,"beiwang"
EndSub
PrivateSubshujudbg(lieshuAsLong,shujukumingAsString)
DimyuanlieshuAsLong,iAsInteger,bAsInteger
yuanlieshu=DBGrid1.Columns.Count
b=lieshu-yuanlieshu
Fori=1Tob
DBGrid1.Columns.Add
(1)
Next
Forlieshu=0Tolieshu-1'设置字段、宽度
DBGrid1.Columns(lieshu).Width=ReadIni(shujukuming,"colwid"&lieshu,2000)
Next
EndSub
PrivateSubtreeview1_NodeClick(ByValNodeAsComctlLib.Node)
SelectCaseNode.Key
Case"l"
lianxibiao
Case"l1"To"l9","l10"To"l99"
lianxibiaoNode.Text
Case"W"
wangzhibiao
Case"W1"To"W9","W10"To"W99"
wangzhibiaoNode.Text
Case"b"
beiwangbiao
Case"b1"To"b9","b10"To"b99"
beiwangbiaoNode.Text
EndSelect
EndSub
PrivateSubTreeView1_BeforeLabelEdit(CancelAsInteger)
Cancel=True'取消标签编辑操作
EndSub
PrivateSubmen_Click(IndexAsInteger)'点击菜单事件
SelectCaseIndex
Case1
lianxiadd.liancaozuo=1
lianxiadd.ShowvbModal,Me
Case2
shanlian
Case3
lianxiadd.liancaozuo=2
lianxiadd.ShowvbModal,Me
Case4
chazhao.Show
EndSelect
EndSub
PrivateSubwang_Click(IndexAsInteger)'点击菜单事件
DimaAsLong
SelectCaseIndex
Case1
wangzhiadd.wangcaozuo=1
wangzhiadd.ShowvbModal,Me
Case2
shanwang
Case3
wangzhiadd.wangcaozuo=2
wangzhiadd.ShowvbModal,Me
Case4
IfInStr(Data1.RecordSource,"wangzhi")>0Then
WithData1.Recordset
IfNot.EOFAndNot.BOFThen'指针处于中间位置
IfLeft(!
网址,7)=""Open",!
网址,"",App.Path,1)
Else
'shellexecute(byvalasString,byvalipfileasString,byvalipparamelersasString,byvalipdirectoryasString,byvalnshowcmdasLong)
'shellexecute函数:
查找与制定相关程序的文件名
'hwnd制定一个窗口的句柄,有时候windows程序有必要在创建自己的主窗口前显示一个消息框
'ipoperation制定字符串"open"来打开ipfile文档,或指定"print"来打印它
'ipfile想用关联程序打印或打开一个程序名或文件名
'ippatameters如果ipszfile是可执行文件,则这个字符串包括传递给执行程序的参数
'ipkirectory使用的完整路径
'nshowsmd定义了如何显示启动程序的常数值
a=ShellExecute(Me.","1)'
EndIf
EndIf
EndWith
EndIf
EndSelect
EndSub
PrivateSubbei_Click(IndexAsInteger)'点击菜单事件
SelectCaseIndex
Case1
beiwanglu.beicaozuo=1
beiwanglu.ShowvbModal,Me
Case2
shanbei
Case3
beiwanglu.beicaozuo=2
beiwanglu.ShowvbModal,Me
EndSelect
EndSub
PrivateSubshanwang()
DimaAsString,bAsString
WithData1.Recordset
a=MsgBox("确定删除"&vbCrLf&!
网址&"?
",vbQuestion+vbYesNo)
Ifa=vbYesThen
Data1.Recordset.Delete
Data1.Recordset.MoveNext
IfData1.Recordset.EOFThenData1.Recordset.MoveLast
EndIf
EndWith
ListTree
EndSub
PrivateSubshanlian()
DimaAsString,bAsString
WithData1.Recordset
a=MsgBox("确定删除"&vbCrLf&!
姓名&"?
",vbQuestion+vbYesNo)
Ifa=vbYesThen
Data1.Recordset.Delete
Data1.Recordset.MoveNext
IfData1.Recordset.EOFThenData1.Recordset.MoveLast
EndIf
EndWith
ListTree
EndSub
PrivateSubshanbei()
DimaAsString,bAsString
WithData1.Recordset
a=MsgBox("确定删除"&vbCrLf&!
备忘&"?
",vbQuestion+vbYesNo)
Ifa=vbYesThen
Data1.Recordset.Delete
Data1.Recordset.MoveNext
IfData1.Recordset.EOFThenData1.Recordset.MoveLast
EndIf
EndWith
ListTree
EndSub
PrivateSubToolbar1_ButtonClick(ByValButtonAsComctlLib.Button)
IfButton.Index<5Then
men_Click(Button.Index)
ElseIfButton.Index>5Then
wang_Click(Button.Index-5)
EndIf
EndSub
'PrivateSubStatusBar1_PanelClick(ByValPanelAsComctlLib.Panel)
'Ifdenglubo1.Text=douThenStatusBar1.Panels.Item
(1).Text="操作者:
窦军强"
'Ifdenglubo1.Text=gaoThenStatusBar1.Panels.Item
(1).Text="操作者:
高树青"
'StatusBar1.Panels.Item
(2).Text=Format(Date,"yyyy年mm月dd日")
'n=Weekday(Data)
'Ifn=1ThenStatusBar1.Panels.Item(3).Text="星期日"
'Ifn=2ThenStatusBar1.Panels.Item(3).Text="星期一"
'Ifn=3ThenStatusBar1.Panels.Item(3).Text="星期二"
'Ifn=4ThenStatusBar1.Panels.Item(3).Text="星期三"
'Ifn=5ThenStatusBar1.Panels.Item(3).Text="星期四"
'Ifn=6ThenStatusBar1.Panels.Item(3).Text="星期五"
'Ifn=7ThenStatusBar1.Panels.Item(3).Text="星期六"
'StatusBar1.Panels.Item(4).Text=Time
'EndSub
3.2登录窗体代码
PrivateSubForm_Load()
Randomize
Data1.DatabaseName=App.Path&"\shuju.mdb"
X=Int(Rnd*10)
Y=Int(Rnd*10)
z=Int(Rnd*10)
m=Int(Rnd*10)
Label3.Caption=X&Y&z&m
Label3.Font=宋体
'Combo1.AddItem="qing"
'Combo1.AddItem="dou"
EndSub
PrivateSubCommand1_Click()
DimaAsString,bAsString,cAsString
a=Trim(Combo1)
Data1.RecordSource="select*fromyonghuwhereyonghu='"&a&"'andmima='"&Text2.Text&"'"
Data1.Refresh
Ifa=""Then
MsgBox"用户名不能为空,请重新输入!
",vbOKOnly+vbExclamation,"错误"
Combo1.SetFocus
ExitSub
EndIf
IfText2.Text=""Then
MsgBox"请输入密码",vbOKOnly+vbExclamation,"错误"
Text2.SetFocus
ExitSub
EndIf
IfText1.Text<>Trim(Label3.Caption)Anda<>""AndText2.Text<>""Then
MsgBox"验证码错误,请重新输入!
",vbOKOnly+vbExclamation,"错误"
Text1.Text=""
Text1.SetFocus
ExitSub
EndIf
b=Da