在日常的学习、工作、生活中,肯定对各类范文都很熟悉吧。范文书写有哪些要求呢?我们怎样才能写好一篇范文呢?以下是小编为大家收集的优秀范文,欢迎大家分享阅读。
vb程序设计期末考试篇一
学 院 班 级
指导老师
姓 名 学 号 成 绩
2013年 月 10
日
一.课程设计题目
学生管理系统
二.功能描述
按设定的用户名密码进行登录后,可按需求进行对数据库中已有的学生信息及成绩进行查询,添加,删除,修改等操作。
三.概要设计
登录界面功能:让用户进行登录。主界面功能:让用户选择进行哪项操作。
查询学生信息菜单功能:输入学生学号,对该学生的个人信息以
及成绩进行查询,若直接点击查询按钮,则显示全部学生个人信息及成绩。
编辑学生信息菜单功能:可对数据库中已有的学生信息进行查
询,添加,删除,修改等操作。
学生信息维护菜单功能:可对数据库中已有的学生成绩进行查
询,添加,删除,修改等操作。
四.详细设计
五.效果以及存在问题
说明系统的运行效果(附上运行界面图片)、存在哪些不足以及预期的解决办法。
登录界面
登录学生管理系统
按查询条件查询
打开修改学生信息子窗口
学生成绩维护子窗口
垂直窗口排列
关于窗口
不足:1.没有实现用户登录界面中的注册功能
2.没有实现主界面中文件下的新建和保存功能。
六.心得体会
经过几天的苦战,终于把课程设计粗略的做完了。刚开始做的时候,毫无头绪,一片茫然。好在书本上有类似的实验,可以供参考。尽管如此,真正做起项目来,还是有着这样那样的困难,有时一个空格少打都会出错,导致我检查了半天才发现问题所在。由于vb语法还运用不熟练,很多代码都是模仿书本上的敲的,许多代码往往能编译通过,但很多都会抛出各种异常,让人头疼。有时系统就给出个有个参数没有被指定值,就可以让人搞的焦头烂额。因此,写程序真的也很需要强大的耐心,只要熬下去了,当你做出程序时,也会倍有成就感。目前,程序是基本写完了,平常学的理论都得到了运用,感觉自己的能力也增强了。一句话,实践才是硬道理。
七.附录代码
(附上各模块代码)
1.登录界面
public class form1
private sub button1_click(byval sender as , byval e as rgs)handles
static n as integer
if = “abc” and = “123” then
dim form2 as new form2()
()
()
else
n = n + 1
if n < 5 then
msgbox(“请输入正确的用户名和密码!”, al)
else
msgbox(“请输入正确的用户名和密码!”, al)
d = false
end if
end if
end sub
private sub button2_click(byval sender as , byval e as rgs)handles
()
end sub
private sub button3_click(byval sender as , byval e as rgs)handles
dim form3 as new form3()
()
()
end sub
private sub form1_load(byval sender as , byval e as rgs)handles
end sub end class
2.查询学生菜单代码
public class form6
private sub form6_load(byval sender as , byval e as rgs)handles
dim objconn as new onnection
dim objdaxs_kc as new ataadapter
dim objdaxs as new ataadapter
dim objcommxs_kc as new ommand
dim objcommxs as new ommand
dim objdsxs_kc as new dataset
dim objdsxs as new dataset
tionstring = “provider = .4.0;data source = 'd:'”
dtext = “ select * from xs ”
dtext = “ select * from xs_kc ”
tion = objconn
command = objcommxs_kc
tion = objconn
command = objcommxs
()
(objdsxs_kc, “xs_kc”)
(objdsxs, “xs”)
()
urce = (“xs_kc”)
urce = (“xs”)
end sub
private sub button1_click(byval sender as , byval e as rgs)handles
dim objconn as new onnection
dim objdaxs_kc as new ataadapter
dim objdaxs as new ataadapter
dim objcommxs_kc as new ommand
dim objcommxs as new ommand
dim objdsxs_kc as new dataset
dim objdsxs as new dataset
dim wherestr as string
wherestr = “"
if trim()<> ”“ then
wherestr = ” 学号like “ + trim()
end if
tionstring = ”provider = .4.0;data source = 'd:'“
dtext = ” select * from xs “
dtext = ” select * from xs_kc “
if wherestr <> ”“ then
dtext = dtext & ”where“ & wherestr
dtext = dtext & ”where“ & wherestr
end if
tion = objconn
command = objcommxs_kc
tion = objconn
command = objcommxs
()
(objdsxs_kc, ”xs_kc“)
(objdsxs, ”xs“)
()
urce = (”xs_kc“)
urce = (”xs“)
end sub end class
3编辑学生信息菜单
public class form7
dim objds as new dataset
dim objxstable as datatable
dim objda as new ataadapter
dim wherestr as string
public sub refreshdata()
(objds, ”xs“)
()
bindgridview(wherestr)
end sub
public sub bindgridview(byval strxh as string)
dim objconn as new onnection
dim objcomm as new ommand
wherestr = ”“
if trim()<> ”“ then
wherestr = ” 学号like“ + trim()
end if
tionstring = ”provider=.4.0;data source='d:'“
dtext = ” select * from xs “
if wherestr <> ”“ then
dtext = dtext & ”where“ & wherestr
end if
'把objconn设置为objconn的数据连接
tion = objconn
command = objcomm
'创建insert command
dim inscommand as new ommand(”insert into xs(学号,姓名,专业名,性别,出生日期,总学分,备注)values(?,?,?,?,?,?,?)“, objconn)
(”学号“, r, 6, ”学号“)
(”姓名“, r, 8, ”姓名“)
(”专业名“, r, 10, ”专业名“)
(”性别“, r, 2, ”性别“)
(”出生日期“, , nothing, ”出生日期“)
(”总学分“, r, nothing, ”总学分“)
(”备注“, r, nothing, ”备注“)
command = inscommand
'创建delte command
dim delcommand as new ommand(”delete * from xs where 学号=?“, objconn)
(”学号“, , 6, ”学号“)
command = delcommand
'创建update command
dim updcommand as new ommand(”update xs set 学号=?,姓名=?,专业名=?,性别=?,出生日期=?,总学分=?,备注=? where 学号=?“, objconn)
(”学号“, r, 6, ”学号“)
(”姓名“, r, 8, ”姓名“)
(”专业名“, r, 10, ”专业名“)
(”性别“, r, 2, ”性别“)
(”出生日期“, , nothing, ”出生日期“)
(”总学分“, r, nothing, ”总学分“)
(”备注“, r, nothing, ”备注“)
(”学号“, r, 6, ”学号“)
command = updcommand
()
'打开数据库连接
(objds, ”xs“)'填充数据
objxstable = (”xs“)
()
'关闭数据集
'把datagrid1的datasource属性设置为刚刚取到的数据表,这样就可以显示数据了
urce = (”xs“)
end sub
private sub datagridview1_cellcontentclick(byval sender as , byval e as idviewcelleventargs)handles ntentclick
= (0).ng '显示学号
= (1).ng '显示姓名
= (2).ng '显示专业
= (3).ng '显示性别
= (4).ng '显示出生日期
= (5).ng '显示总学分
= (6).ng '显示备注
end sub
private sub button1_click(byval sender as , byval e as rgs)handles
dim objconn as new onnection
dim objdaxs as new ataadapter
dim objcommxs as new ommand
dim objdsxs as new dataset
dim wherestr as string
wherestr = ”“
if trim()<> ”“ then
wherestr = ” 学号like “ + trim()
end if
tionstring = ”provider = .4.0;data source = 'd:'“
dtext = ” select * from xs “
if wherestr <> ”“ then
dtext = dtext & ”where“ & wherestr
end if
tion = objconn
command = objcommxs
()
(objdsxs, ”xs“)
()
urce = (”xs“)
end sub
private sub form7_load(byval sender as , byval e as rgs)handles
wherestr = ”“
bindgridview(wherestr)
end sub
private sub butadd_click(byval sender as , byval e as rgs)handles
dim response as msgboxresult
response = msgbox(”确定要添加记录吗?“, vbokcancel + vbquestion, ”系统提示“)
if response = then
dim myrow as datarow = ()
myrow(”学号“)=
myrow(”姓名“)=
myrow(”专业名“)=
myrow(”性别“)=
myrow(”出生日期“)=
myrow(”总学分“)=
myrow(”备注“)=
(myrow)
refreshdata()
end if
end sub
private sub butedit_click(byval sender as , byval e as rgs)handles
dim response as msgboxresult
response = msgbox(”确定要修改记录吗?“, vbokcancel + vbquestion, ”系统提示“)
if response = then '用户选择“确定”
'修改学号
().item(0)=
'修改姓名
().item(1)=
'修改专业
().item(2)=
'修改性别
().item(3)=
'修改出生日期
().item(4)=
'修改总学分
().item(5)=
'修改备注
().item(6)=
refreshdata()'更新并刷新显示
end if
end sub
private sub butdelete_click(byval sender as , byval e as rgs)handles
dim response as msgboxresult
response = msgbox(”确定要删除记录吗?“, vbokcancel + vbquestion, ”系统提示“)
if response = then '用户选择“确定”
'除学生成绩表当前记录
().delete()
refreshdata()'更新并刷新显示
end if
end sub end class
4.学生成绩维护菜单
public class form4
dim objds as new dataset
dim objxstable as datatable
dim objda as new ataadapter
dim wherestr as string
public sub refreshdata()
(objds, ”xs_kc“)
()
bindgridview(wherestr)
end sub
public sub bindgridview(byval strxh as string)
dim objconn as new onnection
dim objcomm as new ommand
wherestr = ”“
if trim()<> ”“ then
wherestr = ” 学号like“ + trim()
end if
tionstring = ”provider=.4.0;data source='d:'“
dtext = ” select * from xs_kc “
if wherestr <> ”“ then
dtext = dtext & ”where“ & wherestr
end if
'把objconn设置为objconn的数据连接
tion = objconn
command = objcomm
'创建insert command
dim inscommand as new ommand(”insert into xs_kc(学号,课程号,成绩,学分)values(?,?,?,?)“, objconn)
(”学号“, r, 6, ”学号“)
(”课程号“, r, 4, ”课程号“)
(”成绩“, r, nothing, ”成绩“)
(”学分“, r, nothing, ”学分“)
command = inscommand
'创建delte command
dim delcommand as new ommand(”delete * from xs_kc where 序号=?“, objconn)
(”序号“, , 6, ”序号“)
command = delcommand
'创建update command
dim updcommand as new ommand(”update xs_kc set 学号=?,课程号=?,成绩=?,学分=? where 序号=?“, objconn)
(”学号“, r, 6, ”学号“)
(”课程号“, r, 4, ”课程号“)
(”成绩“, r, nothing, ”成绩“)
(”学分“, r, nothing, ”学分“)
(”序号“, r, nothing, ”序号“)
command = updcommand
()
'打开数据库连接
(objds, ”xs_kc“)'填充数据
objxstable = (”xs_kc“)
()
'关闭数据集
'把datagrid1的datasource属性设置为刚刚取到的数据表,这样就可以显示数据了
urce = (”xs_kc“)
end sub
private sub datagridview1_cellcontentclick(byval sender as , byval e as idviewcelleventargs)handles ntentclick
= (0).ng '显示id
= (1).ng '显示学号
= (2).ng '显示课程号
= (3).ng '显示成绩
= (4).ng '显示学分
end sub
private sub btnddd_click(byval sender as , byval e as rgs)handles
dim response as msgboxresult
response = msgbox(”确定要添加记录吗?“, vbokcancel + vbquestion, ”系统提示“)
if response = then
dim myrow as datarow = ()
myrow(”学号“)=
myrow(”课程号“)=
myrow(”成绩“)=
myrow(”学分“)=
(myrow)
refreshdata()
end if
end sub
private sub btnedit_click(byval sender as , byval e as rgs)handles
dim response as msgboxresult
response = msgbox(”确定要修改记录吗?“, vbokcancel + vbquestion, ”系统提示“)
if response = then '用户选择“确定”
'修改学号
().item(1)=
'修改课程号
().item(2)=
' 修改成绩
().item(3)=
'修改学分
().item(4)=
refreshdata()'更新并刷新显示
end if
end sub
private sub btndelete_click(byval sender as , byval e as rgs)handles
dim response as msgboxresult
response = msgbox(”确定要删除记录吗?“, vbokcancel + vbquestion, ”系统提示“)
if response = then '用户选择“确定”
'除学生成绩表当前记录
().delete()
refreshdata()'更新并刷新显示
end if
end sub
private sub button1_click(byval sender as , byval e as rgs)handles
dim objconn as new onnection
dim objdaxs as new ataadapter
dim objcommxs as new ommand
dim objdsxs as new dataset
dim wherestr as string
wherestr = ”“
if trim()<> ”“ then
wherestr = ” 学号like “ + trim()
end if
tionstring = ”provider = .4.0;data source = 'd:'“
dtext = ” select * from xs_kc “
if wherestr <> ”“ then
dtext = dtext & ”where“ & wherestr
end if
tion = objconn
command = objcommxs
()
(objdsxs, ”xs_kc“)
()
urce = (”xs_kc“)
end sub
private sub form4_load(byval sender as , byval e as rgs)handles
wherestr = ”"
bindgridview(wherestr)
end sub end class
5.主菜单界面代码
public class form2
private sub quitmenuitem_click(byval sender as , byval e as rgs)handles
()
end sub
private sub importscoremenuitem_click(byval sender as , byval e as rgs)handles
dim form4 as new form4
ent = me
state =
()
end sub
private sub updateinfomenuitem_click(byval sender as , byval e as rgs)handles
dim form7 as new form7
ent = me
state =
()
end sub
private sub selectinfomenuitem_click(byval sender as , byval e as rgs)handles
dim form6 as new form6
ent = me
state =
()
end sub
private sub cascademenuitem_click(byval sender as , byval e as rgs)handles
mdi(e)
end sub
private sub horizonmenuitem_click(byval sender as , byval e as rgs)handles
mdi(rizontal)
end sub
private sub verticalmenuitem_click(byval sender as , byval e as rgs)handles
mdi(rtical)
end sub
private sub aboutmenuitem_click(byval sender as , byval e as rgs)handles
dim form5 as new form5
ent = me
state =
()
end sub
private sub toolstripbutton1_click(byval sender as , byval e as rgs)handles
mclick()
end sub
private sub toolstripbutton2_click(byval sender as , byval e as rgs)handles toolstrip
mclick()
end sub
private sub toolstripbutton3_click(byval sender as , byval e as rgs)handles
mclick()
end sub
private sub toolstripbutton4_click(byval sender as , byval e as rgs)handles
mclick()
end sub
private sub toolstripbutton5_click(byval sender as , byval e as rgs)handles
mclick()
end sub
private sub toolstripbutton6_click(byval sender as , byval e as rgs)handles
mclick()
end sub
private sub toolstripstatuslabel1_click(byval sender as , byval e as rgs)handles
mclick()
end sub end class
八.参考文库
百度文库,百度知道
vb程序设计期末考试篇二
期末成绩处理课程设计报告(vb)编号:28
期末成绩处理设计报告
一、设计思路
1.要达到的目的
①培养学生综合利用vb语言进行程序设计的能力,主要是通过使用vb的标准控件,加深对控件的多个属性的认识及如何使用属性进行程序设计
2.关键问题的解决
① 设计一个具有两个窗口的期末成绩统计的小程序 ②其中第一个窗口完成:
学生人数和4门课成绩的录入,4门课的名称及学生人数由用户输入。每录入完一个学生成绩后,将各门课成绩写入excel表格中。
打开excel表格查看写入的数据是否
② 第二个窗口用来绘制描述各科目平均成绩的柱形图,界面中还应包含坐标系、图表名称、各科成绩的平均分值、课程名称及色块
③ 对窗口1的4个文本框要求:在输入成绩之前,焦点要在第一个文本框中,且文本为可编辑状态;当第一个文本框中输入2位数据后,焦点自动移入下一个文本框中,且文本状态和第一个相同 文本框中只允许输入数字0、1、2、3、4、5、6、7、8、9及小数点“.”;文本框中文本的位数最大为2位 输入学生成绩时窗口上要提示输入的是第几个学生成绩,并要求输入最后一个学生成绩后“写入数组”控件隐藏
④ 全部学生成绩输入完成后,单击“写入excel文件”控件,把学生成绩全部放在excel表格中,要求有字段名内容。
⑤ 单击“打开excel文件”控件,将打开刚刚生成的excel表。
⑥ 单击“绘制柱形图”控件,打开第二个窗口,并显示以课程平均分为依据的柱状图。
⑦ 要想结束程序,应单击“退出”按钮。
三、部分程序关键源代码及注释
private sub command2_click()'★创建excel对象
set xlapp = createobject(“ation”)'★打开已经存在的excel工件簿文件
set xlbook = ( & “”)'★设置excel对象可见(或不可见)'e = true '★设置活动工作表, sheet1表示表名,可以使用字符型变量代替。set xlsheet = eets(“sheet1”)(“a1:iv65536”).clear '★给excel对象中的表的单元格附值? '★保存 excel 文件 '★另存为
'(“文件名”)
期末成绩处理课程设计报告(vb)编号:28
'★关闭工作簿
(true)'★结束 excel 对象 ' '★释放xlapp对象 set xlapp = nothing msgbox “写入excle成功” end sub private sub command3_click()'★创建excel对象
set xlapp = createobject(“ation”)'★打开已经存在的excel工件簿文件
set xlbook = ( & “”)'★设置excel对象可见(或不可见)e = true end sub
四、设计方案的完善及目前存在的问题
1.设计方案要完善的地方 ① 操作有点繁琐 2.目前存在的问题
① 开始时出现错误,但不影响使用
五、本次设计的收获及心得体会
加强了对vb的理解,让我更加明白vb的实际作用。
六、对该题目和vb设计的意见和建议
1.对该题目的意见和建议
不要单个输入,应该直接输入多个同学的成绩。2.对本次设计的意见和建议 难度应该降低点。
vb程序设计期末考试篇三
学生成绩管理系统一、功能描述
首先简单地阐述本人所要实现系统的目的,然后应较详细的叙述本系统所要实现的功能。
************ *******
二、概要设计
1、系统功能模块框图设计
根据功能描述,建立系统的体系结构,即将整个系统分解成若干子功能模块,并用框图表示各功能模块之间的衔接关系,并简要说明各模块的功能。
程序流程框图如图所示:(仅供参考)
图1 程序流程图
2、数据库设计
包括数据库的组成说明,数据库中各表的结构说明(包括字段名、字段类型等),可以包含图片例如下表:
表1 学生信息表
三、详细设计
详细说明主要窗体的实现过程,包括窗体的设计图片及其上所包含的控件名和属性设置;
详细说明主要操作的代码实现过程,包括过程间的调用关系(注:在此给出不完全代码)。如下所示:
1、账号登录
帐号登录模块中登录与注册两按钮,单击注册会进入注册模块中,单击登录会进入系统进行下一步的操作,帐号文本框与数据库相连接,当在帐号文本框输入帐号后点击登录按钮后,会在数据库中进行查询看数据库中是否会有该帐号,且该帐号的密码是否与密码框中输入的相同,如果相同会进入系统,如果不存在该账号或密码与帐号不相匹配,则会提示“帐号或密码错误”,帐号文本框会得到焦点,让重新输入。
(1)窗体截图(如图2)
图2 注册窗体
(2)功能实现
2、学生信息查询窗体
图3 查询窗体
四、调试中存在的问题及解决方法
包括调试过程中遇到的主要问题及采取的解决方法。例如:
1、注册账号出现的错误
数据库中帐号被设为主键,当注册时的帐号与数局库中的帐号有相同时就会出错。
2、解决方法:在写入数据库前先进行查询数据库
五、心得体会
本人在本次实习中取得的收获、遇到的困难、如何面对和克服各种困难、本系统的不足之处,将要改进的思想等。
六、参考文献
[1] basic 6.0程序设计教程(第3版).人民邮电出版社,2009年2月
[2] [3]
七、附录
包括全部源程序清单(程序中应有足够的注释)。
vb程序设计期末考试篇四
visual basic课程设计报告
题目1: 贪吃蛇 难度:**** 题目2: 难度: 指导教师:
姓 名: 学 号: 专 业: 班 级: 学 院:
日 期:
目录
1、题目简介...................................................................................................错误!未定义书签。
2、设计思路与总体方案.................................................................................................................3
2.1 【设计】...................................................................................................3 【设计】..................................................................................................11 【设计】..................................................................................................14 2.4 【设计】.................................................................................................14 【设计】....................................................................................................【设计】..................................................................错误!未定义书签。2.6 标准模块..........................................................................................................................14
3、设计过程遇到的主要问题及解决方法...................................................................................16
4、设计中尚存的不足分析...........................................................................................................16
5、心得体会...................................................................................................................................17
6、参考文献...................................................................................................................................17
1.题目简介
贪吃蛇是一种很流行的电子游戏。如图1所示,一条蛇在棋盘状的格子平面上爬行,由键盘控制其转弯;格子上随机出现五个数字(1~5),当蛇的头部碰到数字时会将数字“吃掉”,蛇的身体会变长。当蛇的头撞到障碍物时或碰到自己身体时,游戏结束。游戏结束时,蛇身体越长的分越高。
图1 程序启动时界面如图1所示,游戏平面有20*20个方格构成。使用回车键可以暂
停(如图2所示),蛇爬到边界时,如果未遇到障碍物,会从一侧爬出再从另一侧爬入。如果运动过程中,其头部碰到障碍物或自己,则被撞死,游戏结束。
图2 如果该用户的成绩超过记录成绩,则会显示图3所示的对话框提示输入用户名,以供记录成绩,排行榜界面如图4所示。
图3
图4
选择“设置”菜单命令,打开图5所示的“设置”对话框。在该对话框中可以选
择不同的障碍物形状,也可指定背景和障碍物颜色。
图5 为了使效果更好,我加了背景音乐和速度控制。
2、设计思路与总体方案
(说明用到哪些控件并进行难点分析,说明所使用到的模块、过程、变量、数组、自定义数据类型及其相互关系,必要时给出系统结构图等图表。
对如下事项逐步进行必要的分析、说明:
程序设计的主要思想,程序功能是如何实现的?
设计了几个程序模块(有几个窗体模块、几个标准模块),各个功能模块的作者及想到之间的关系(模块间是如何传递信息和数据的,采用什么方式,为什么?)?
程序中定义了哪些主要的变量(分别定义了哪些过程级变量?模块级变量和全局变量),这些变量起什么作用?是否全局变量? 这里不需要给出大段的源程序,只需要给出关键的实现代码即可。)2.1 【设计】
这是主界面,但也是最难的环节,之后要用到的控件与显示都要在其基础上发展。首先我们要将背景网格和蛇身画出来,由于受到了动态添加控件的启发,我用了powerpacks中的ovalshape来构造蛇身,lineshape来构造线,为了满足蛇的身体长长,用到了数组。由于代码之间有许多调配,在此我所举的代码皆主要起说明作用,实际情况可看源代码。代码如下:
public num as integer = 4 ‘记录蛇的长度,即ovalshape的个数
public j as string‘记录inputstring的字符串
public p as integer = 1‘记录msgbox所产生的值
dim w as integer
dim d as integer ‘为键盘方向确定一固定值
dim recordname as string‘记录玩家名字
dim bnum as integer = 1‘记录障碍物的个数
public recordlist(7)as string ‘记录成绩
public recordscore(7)as integer
public gametime as integer ‘记录游戏进行所用时间
public gameinterval as integer = 200 ‘记录游戏timer控件interval值
public score as integer ‘记录得分
public direction as integer
public line(41)as lineshape
public food(4)as rectangleshape
public eye(2)as ovalshape '蛇的眼睛
public a(num)as ovalshape '蛇的身体
public word(4)as label
imports acks public a(num)as ovalshape ‘a()为定义蛇身的数组,变量num用来记录蛇身个数
public line(41)as lineshape dim canvas = new ontainer
for i = 4 to 0 step-1 a(i)= new ovalshape
a(i).size = new size(20, 20)a(i).top = 360 a(i).left = 120 + 20 * i a(i).fillstyle = a(i).fillcolor = a(i).parent = canvas next
a(0).fillcolor = ‘給蛇上色 a(0).backcolor = dim i as integer
= 1 for i = 0 to 20 '形成网格,以两点坐标来确定线的位置
line(i)= new lineshape line(i).x1 = 0 line(i).x2 = 400 line(i).y1 = 20 * i
line(i).y2 = 20 * i line(i).parent = canvas next
for i = 21 to 41 line(i)= new lineshape line(i).x1 = 20 *(i21)line(i).y1 = 0 line(i).y2 = 400 line(i).parent = canvas 蛇已经做好,那么我们可以进行下一步:让蛇随键盘的上下左右运动起来。这一步曾经困扰我很久,但通过上网我发现每一个键盘都对应着一个代码,如:左37,上38,右39,下40。首先得让控件响应键盘事件,其次让蛇动,而蛇的运动可看作蛇头移动,蛇身跟随前一个身体。由此可以用以下代码解决:
private sub form_keydown(byval sender as object, byval e as ntargs)handles n select case e case 37 if d <> 2 then d = 0 ‘这样能让蛇不往回走
case 38 if d <> 1 then d = 3 case 39 if d <> 0 then d = 2 case 40 if d <> 3 then d = 1 end select
end sub select case d case 2 for i = num to 1 step-1 a(i).left = a(i1).top next
a(0).left += 20 case 1 for i = num to 1 step-1 a(i).left = a(i1).top next
a(0).top += 20 case 0 for i = num to 1 step-1
a(i).left = a(i1).top next
a(0).left-= 20 case 3 for i = num to 1 step-1 a(i).left = a(i1).top next
a(0).top-= 20 end select 然后我们可以来设置食物来让蛇吃,我用rectangleshape控件来制造食物,就像和画出蛇身一样写,但是每当被吃后它有出现,而且不能出现在蛇身上。首先,它是随机出现的,我们可用随机函数,然后可通过判断让它不出现在蛇身上。对于数字1,2,3,4,5;我用lebal控件,然后让其和食物坐标同步,这样看起来就像数字在食物上一样。代码如下:
for i = 0 to 4 if a(0).top = food(i).top and a(0).left = food(i).left then ‘判断是否吃到
score += i + 1 ‘分数增加 num += i + 1 ‘蛇身的个数增加 food(i).visible = false word(i).visible = false
redim preserve food(4)redim preserve word(4)food(i)= new rectangleshape food(i).size = new size(20, 20)randomize()food(i).left = int(rnd()* 20)* 20 ‘随机确定新坐标
food(i).top = int(rnd()* 20)* 20 l2: for g = 0 to num1 if food(i).left = a(g).left and food(i).top = a(g).top then
call setloction(i)goto l2 end if
next
food(i).fillstyle = food(i).parent = canvas word(i)= new label word(i).text = i + 1 word(i).size = new size(10, 10)
word(i).top = food(i).top + 5 word(i).left = food(i).left + 5 word(i).parent = canvas redim preserve a(num)‘蛇长长,重新定义动态数组
for k = numii1 if a(0).top = barrier(k).top and a(0).left = barrier(k).left then
d = false a(0).fillcolor = lifetime-= 1 if score < 3 then
if lifetime < 1 then
msgbox(“game over!”, 64, “贪吃蛇”)recordname = inputbox(“game over!” & chr(13)& “你的成绩为” & int(score)& “分用时” & _ int(gameinterval * gametime / 1000)& ”秒。“ & chr(13)& ”请留下大名“, ”贪吃蛇“, ”无名氏“)else
p = msgbox(”do you want to continue?“, vbyesno, ”生命值“ & lifetime)if p = 6 then
exit for
end if
end if
else
if lifetime < 1 then
recordname = inputbox(”game over!“ & chr(13)& ”你的成绩为“ & int(score)& ”分用时” & _ int(gameinterval * gametime / 1000)& “秒。” & chr(13)& “请留下大名?”, “贪吃蛇”, “无名氏”)else
p = msgbox(“do you want to continue?”, vbyesno, “生命值” & lifetime)if p = 6 then
exit for
end if
end if
end if
call record()call initialize()exit for
end if
next 想要形成障碍物,在此我们需要用到文件的读操作。主要代码如下:
fileopen(1, filelacation, )' 读取墙壁,形成迷宫 bnum = 1 dim l as integer
dim t as integer
for i = 1 to 419 j = inputstring(1, 2)if val(j)= 1 then
barrier(bnum)= new rectangleshape barrier(bnum).left = 20 * l barrier(bnum).top = 20 * t barrier(bnum).size = new size(20, 20)barrier(bnum).fillcolor = barriercolor barrier(bnum).fillstyle = barrier(bnum).parent = canvas bnum += 1 end if
if val(j)= 0 then ‘用此方法使读出的内容与坐标对应
end if
if j = vbcrlf then l-= 1 end if l += 1
if l = 20 then l = 0 : t += 1 end if
next
fileclose(1)在此基础上便可调用其它的过程,比较简单。代码如下:
private sub 开始toolstripmenuitem_click(byval sender as , byval e as rgs)handles if d = false then d = true
exit sub
end if
if d = true then d = false
end if
end sub
private sub 新开局toolstripmenuitem_click(byval sender as , byval e as rgs)handles call initialize()end sub
private sub 关于toolstripmenuitem_click(byval sender as , byval e as rgs)handles msgbox(“贪吃蛇vb2010.2016.3.20”, 64, “版本说明”)end sub
private sub 帮助toolstripmenuitem1_click(byval sender as , byval e as rgs)handles ()end sub
private sub 设置toolstripmenuitem_click(byval sender as , byval e as rgs)handles ()end sub
private sub 退出toolstripmenuitem_click(byval sender as , byval e as rgs)handles
end
end sub
private sub 排行榜toolstripmenuitem_click(byval sender as , byval e as rgs)handles ()end sub
【设计】
这个界面是第二重要的,当然它的设计也较麻烦。设计的障碍物的类型用到了listbox控件,也用到了菜单栏与picturebox控件。中的类似,因此方便好多。
private sub form2_load(byval sender as , byval e as rgs)handles (“方盒形”)(“隧道形”)(“螺旋形”)(“路障形”)(“弯曲形”)(“怪异形”)(“无障碍形”)lor = ay lor = = lifetime call shapeview()end sub private sub listbox1_selectedindexchanged(byval sender as object, byval e as rgs)handles edindexchanged
if edindex = 0 then filelacation = “” filename = “方盒形” mazenum = 1 end if
if edindex = 1 then filelacation = “” filename = “隧道形” mazenum = 2 end if
if edindex = 2 then filelacation = “” filename = “螺旋形”
mazenum = 3 end if
if edindex = 3 then filelacation = “” filename = “路障形” mazenum = 4 end if
if edindex = 4 then filelacation = “” filename = “弯曲形” mazenum = 5 end if
if edindex = 5 then filelacation = “” filename = “怪异形” mazenum = 6 end if
if edindex = 6 then
filelacation = “” filename = “无障碍形” mazenum = 7 end if
for k = 1 to oldnum121)line1(i).x2 = 10 *(“
'musicname = ”“
(orypath & ”“)end if
end sub
private sub radiobutton6_checkedchanged(byval sender as , byval e as rgs)handles dchanged if d = true then
'()
()end if
end sub end class
[设计】
此窗体用来调节蛇运动的快慢程度。
private sub trackbar1_scroll(byval sender as , byval e as rgs)handles
dim v as integer v = timeinterval = 500 /(2 ^ v) = end sub
[设计】
此窗体用来显示玩家的成绩,用到了listbox控件来显示成绩,点击清除所有记录可还原,recordlist()用来记录文件中的每一行。public class form6
public sub form6_load(byval sender as , byval e as rgs)handles for i = 1 to 7 (list(i))next
end sub
private sub button1_click(byval sender as , byval e as rgs)handles ()fileopen(1, orypath & ”“, )for i = 1 to 7 list(i)= lineinput(1)(list(i))next
fileclose(1)end sub
private sub button2_click(byval sender as , byval e as rgs)handles ()end sub end class
2.8标准模块
定义各种变量
imports acks module module1
public barriercolor as = ay
‘记录障碍物的颜色
public panalcolor as = ‘记录面板的颜色
public oldnum as integer
public oldnum1 as integer
public bnum1 as integer
public filelacation as string = ”“
public filename as string = ”螺旋形"
public timeinterval as integer = 1000 public mazenum as integer = 2 ‘为每一个障碍物类型做标记
public lifetime as integer = 1 ‘生命次数
public barrier(400)as rectangleshape end module
3、设计过程遇到的主要问题及解决方法
3.1刚开始时对于画出后面的线条时我是添加了41个lineshape控件,一个个确定等距的坐标将其画下,废了我好大的气力,但后来受到了动态添加控件的触动用数组将其解决。
3.2如何引发键盘事件曾一度困扰我,了解了键盘下所代表的代码意义,之前一直使用的是select case keycode代码,怎么也无法使其响应。后来看看课本上关于键盘的代码,随便使用了select case e代码,令我欣慰的是竟然成功了。
3.3下一个是如何在界面上显示出障碍物。根据所提供的文件夹,了解起大概用法,为了让我编程更容易,我对其文件做了一定的修改。
3.4最难的是过程之间的调用与联系,解决的办法就是不断的进行调试,修改。比如在我编写重新开局的菜单代码时总是会出现两只蛇;这行代码,因此我得另辟蹊径。
4、设计中尚存的不足分析
4.1由于我采用的编写方法是将完成这个贪吃蛇游戏所需满足的要求分开,一个一个的进行攻破,我会发现越往后编写越要考虑到之前的内容,在解决程序之间的关系会越麻烦,调试的次数更多。而且编完后纵观全局会发现代码的结构较混乱,重复性高,他人难以看的明白。
4.2 在定义变量时我尽量定义其为全局变量和模块级变量。部分变量为了简单或难以翻译为英文的仅仅使用了字母代替,对读代码有一定困难。
4.3 我所犯下的最大错误就是使用控件来显示蛇,因为在运行程序时蛇身会随着长度的增加闪烁的愈发厉害。可能是控件太多,程序运行不流畅,效率不高。
4.4 我想在游戏中添加一些音乐,并且用到了循环播放的代码,但是至今我还是没有想到如何能将播放中的音乐暂停。还有的就是怎样才能同时播放两种声音。
4.5 对于排行榜的编写存在一些问题,比如:怎样才能使显示的行间距更开;如何才能使所显示的各项指标在其对应的列下,在这一点上有很大的缺陷。可能程序要用到dictionary方法。
4.6 当我运行程序时,如果我点了界面上的某条线的话,蛇就不再响应键盘事件了,必须使用ctrl+方向键才能使其响应键盘事件。应该是我点击时失去了焦点导致无法正常运行。
5、心得体会
这个程序从难度上讲足足有四颗星,因此我想说我确实摸索了很久,从界面的制作排版到代码的编写。由于计算机编程知识当初只学了些皮毛,很多次我在编程时不断调试却依然出现这样那样的毛病,可能是无意中拼写错误,但有些确实是因为不了解vb的某些较为冷僻的用法所致。这段时间,常会向同学请教,也自觉地去借了些书看看,基本上完成了要求,但是功能、界面都还不是很完善,我会借助以后的时间继续去加工的,我需要的是学以致用。
我体会到了编写程序是个有条理的逻辑过程,首先必须有个大致的思路,整体的规划出来。然后再是分步地去具体完成,尤为重要的是需要投入相当一部分精力去精益求精,这样你的成果才不会是毛糙的。思维调动是件另人愉快的事情,而我们应该去学会享受脑力劳动的过程,哪怕是一次次地失利。这就是2个月的课程设计所教会我的。
6、参考文献
[2].王栋,visual basic程序设计实用教程,北京,清华大学出版社
vb程序设计期末考试篇五
vb程序设计 课程设计报告
班 级:***** 姓 名:***** 序 号:***** 指导老师:*****
目录
1、课设的目的..............................................................................................................................2
2、界面设计和功能设计............................................................................................................2
3、系统功能实施...................................................................................................................11
4、总结........................................................................................................................................30
一、课设的目的
1.本次课程设计提高了我们的实践动手能力
5.通过本次课程设计,熟悉用户界面的设计
2.通过本次课程设计,进一步理解计算机程序设计的思路与方法
3.本次课程设计之后,达到能熟练使用各种常见的vb控件,理解面向对象的思想 4.经过本次课程设计,我们进一步熟练运用vb的语言元素和流程控制语句
6.经过本次课程设计,熟悉数据访问控件ado及相关对象的使用,能基于ado控件实现access的数据访问与操纵
二、界面设计和功能设计
1、下面的界面为用户登陆界面:
用户名和密码均已设定,用户名为zgzy,密码为11201,只有输入正确,然后点击“登陆“按钮才能进入主界面。如果用户名或密码三次输入错误,则系统自动退出。当你点击“退出“按钮时,弹出一个对话窗,界面如下:
在对话框上点击“是”按钮,则退出系统,如果点击“否”,则该界面不变。
2、当用户名和密码均输入正确,点击“登陆”按钮,进入主界面——“学生成绩管理系统”界面,该界面是其他子界面的入口,界面如下:
3、进入主界面后,点击“学生管理(删除添加)”,进入学生管理界面,界面如下
该界面上有一个ado控件,用于连接数据库,当用户在六个文本框中输入数据时,点击“添加“按钮,可以将数据录入到数据库中,如果此时点击”删除“按钮,则刚才输入的数据就会被删除,点击”保存“按钮时,输入的数据就会自动保存在数据库里,点击”返回主窗体“按钮,该窗体消失,主窗体出现。
4、在主界面点击“各科成绩查询“按钮,出现如下界面:
该界面有一个ado控件,用来连接数据库,还有一个datagrid控件,用来显示学生成绩的查询结果,当用户选择了要查询的科目和条件后,点击“查询“按钮,在datagrid控件上就会显示出所查询的结果。下面为输入条件后查询的结果——
5、在主界面点击“姓名查询“按钮后,会出现如下界面:
该界面与上一界面相似,在文本框输入要查询的姓名后,点击“查询“按钮,就会在datagrid控件上显示所要查询的结果。下面为输入条件后查询的结果——
5、在主界面点击“班级查询“按钮后,会出现如下界面:
在文版框中输入所要查询的班级,datagrid控件上就会显示所要查询的结果。下面为输入条件后查询的结果——
6、在主界面上点击“各科成绩段查询“按钮后,会出现如下界面:
点击“计算分数段统计“按钮后,就会出现所要查询的结果。下面为查询的结果——
7、在主界面点击“计算总分“按钮后,出现如下界面:
点击“清除总分”按钮后,出现如下界面
8、在主界面点击“排名“按钮后,出现如下界面:
在该界面上点击“排名“按钮后,在datagrid控件上会显示出按成绩高低排名的结果,点击”清除排名“按钮后,刚才结果消失,显示原来结果。下面为所现实的结果——
9、在主界面点击“统计直方图“按钮后,出现如下界面:
在该界面点击各个按钮后,就会出现与之相关科目的成绩统计直方图,下面为查询的结果——
10、在主界面点击“优等生“按钮后,出现如下界面:
点击按钮查询后,结果就会在界面上显示出来。下面为所查询的结果——
三、系统功能实施
以上展示的是系统的所有界面,怎样才能让这所有的功能实现呢?数据库和ado控件的使用便是其中的关键。
1、建立如下数据库
(学号、姓名、班级、英语、数学、vb、总分、排名)
2、建立如下图的所有界面:
3、ado控件和datagrid控件以及数据库的连接步骤:(这一步在设计界面的同时完成)
(1)、如何加载ado控件: 步骤1:
步骤2:
步骤3:
各个界面的ado控件如何连接数据库(分两步):
步骤1:
如下面界面中的5个步骤
步骤2:
选中ado控件adodc1,点击鼠标右键选择属性,然后界面设置如下:
控件绑定数据库的字段操作说明:
属性设置说明:下面以学号为例,姓名、班级等都可参考此。将学号对应的文本框text1连接adodc1显示数据库中的学号,需要设置datasource和datafield两个属性,首先选中text1文本框,并进行下面的两步操作,即可绑定数据库的学号字段。
设置datasource:
设置datafield:
(2)、如何加载datagrid控件 控件datagrid,可以实现数据的批量处理,该控件在控件库microsoft datagrid control 6.0中。
说明:datagrid控件属性设置
以下为各个界面所对应的代码——
该界面代码如下:
private sub command1_click()if = “zgzy” and = “11201” then unload me else msgbox “用户名或密码错误,请重新输入”, vbmsgboxsetforeground, “系统提示!” end if
static t as integer t = t + 1 if t >= 3 then end end sub
private sub command2_click()a = msgbox(“确定要退出本系统吗?”, 3 + 32 + 256, “系统提示!”)
if a = 6 then unload me end if end sub
该界面代码如下:
private sub command1_click() end sub private sub command10_click() end sub private sub command3_click() end sub private sub command4_click()
end sub private sub command5_click()
end sub private sub command6_click()
end sub private sub command7_click()
end sub private sub command8_click()
end sub private sub command9_click()
end sub
该界面代码如下:
private sub command1_click() end sub
private sub command2_click()if count = 0 or then
exit sub end if xt if count = 0 then
exit sub end if if then st end sub
private sub command4_click() end sub
private sub command5_click()
unload me
end sub
该界面代码如下: dim kc_条件 as string dim kc as string private sub command1_click()kc_条件 = 1 source = “select * from stu where ” + kc + “ ” + kc_条件 h end sub
private sub form_load()kc_条件 = “>=92” kc = “vb” end sub
private sub option1_click()
kc = “vb” end sub private sub option2_click()kc = “math” end sub private sub option3_click()kc = “english” end sub
该界面代码如下:
dim kc_条件 as string dim kc as string private sub command1_click()kc_条件 = 1 source = “select * from stu where ” + kc + “='” + kc_条件 + “'” h end sub
private sub form_load()kc = “name” end sub
该界面代码如下: dim kc_条件 as string dim kc as string private sub command1_click()kc_条件 = 1 source = “select * from stu where ” + kc + “='” + kc_条件 + “'” h end sub
private sub form_load()kc = “class” end sub
该界面代码如下:
private sub command1_click()
dim vb_a as integer
dim vb_b as integer
dim vb_c as integer
dim vb_d as integer
dim vb_e as integer
dim math_a as integer
dim math_b as integer
dim math_c as integer
dim math_d as integer
dim math_e as integer
dim english_a as integer
dim english_b as integer
dim english_c as integer
dim english_d as integer
dim english_e as integer
source = “select * from stu where vb>=90”
h
vb_a = count
1 = vb_a
source = “select * from stu where vb>=80 and vb<90”
h
vb_b = count
2 = vb_b
source = “select * from stu where vb>=70 and vb<80”
h
vb_c = count
3 = vb_c
source = “select * from stu where vb>=60”
h
vb_d = count
4 = vb_d
source = “select * from stu where vb<60”
h
vb_b = count
5 = vb_e
source = “select * from stu where math>=90”
h
math_a = count
6 = math_a
source = “select * from stu where math>=80 and math<90”
h
math_b = count
7 = math_b
source = “select * from stu where math>=70 and math<80”
h
math_c = count
8 = math_c
source = “select * from stu where math>=60 ”
h
math_d = count
9 = math_d
source = “select * from stu where math<60”
h
math_e = count
10 = math_e
source = “select * from stu where english>=90”
h
english_a = count
11 = english_a
source = “select * from stu where english>=80 and english<90”
h
english_b = count
12 = english_b
source = “select * from stu where english>=70 and english<80”
h
english_c = count
13 = english_c
source = “select * from stu where english>=60”
h
english_d = count
14 = english_d
source = “select * from stu where english<60”
h
english_e = count
15 = english_e end sub
private sub form_load()
= “"
= ”“
= ”“
= ”“
= ”“
= ”“
= ”“
= ”“
= ”“
= ”“
= ”“
= ”“
= ”“
= ”“ end sub
代码如下
private sub command1_click()'计算总分 dim vb as integer
dim math as integer dim english as integer rst for i = 1 to count
vb = me.(”vb“).value
math = me.(”math“).value
english = me.(”english“).value
me.(”total“).value = vb + math + english
xt next i end sub
private sub command2_click()'清除总分 rst for i = 1 to count
me.(”total“).value = null
xt next i end sub
该界面代码如下:
private sub command1_click()source = ”select * from stu order by total desc“ h rst for i = 1 to count
me.(”mc“).value = i
xt
next i end sub
private sub command2_click()rst for i = 1 to count
me.(”mc“).value = null
xt next i end sub
该界面代码如下:
private sub command1_click()
h
'填充表格数据
nt = 1
count = count
rst
for lngi = 1 to count
= lngi
'用data属性向mschart数据网格填充数据
= val((”vb“).value)
label = (”name“).value
xt
next lngi
el = ”vb成绩直方图“ end sub
private sub command2_click()h
'填充表格数据
nt = 1
count = count
rst
for lngi = 1 to count
= lngi
'用data属性向mschart数据网格填充数据
= val((”math“).value)
label = (”name“).value
xt
next lngi
el = ”math成绩直方图“ end sub
该界面代码如下
private sub command1_click()dim vb as integer dim math as integer dim english as integer
source = ”select * from stu where((math+english+vb)/3>=90)or((math+english+vb)/3>=85 and(math=100 or english=100 or vb=100))or((vb+english+math)/3>=85 and((vb>=95 and english >=95)or(english>=95 and math>=95)or(math>=95 and vb>=95)))and(mc<=3)and(vb>=60 and english>=60 and math>=60)" h end sub
四、总结和体会
经过好几天的努力我的课程设计终于完成了。在没有做课程设计以前觉得课程设计好难,我可能做不了,但是通过这次做课程设计发现自己错了。课程设计不仅是对前面所学知识的一种检验,而且也是对自己能力的一种提高,它并不可怕。通过这次课程设计使我明白了自己原来知识还比较欠缺,自己要学习的东西还太多,以前上课没怎么认真听,现在知道它重要了,幸好为时不晚,我以后要更加的努力学好vb。在这次课程设计中也使我们的同学关系更进一步了,同学之间互相帮助,有什么不懂的大家在一起商量,听听不同的看法对我们更好的理解知识,所以在这里非常感谢帮助我的同学。此外,还得出一个结论:世上无难事,只怕有心人。
在设计过程中,我通过查阅有关资料,与同学交流经验和自学等方式,使自己学到了不少知识,也经历了不少艰辛,但收获同样巨大。在整个设计中我懂得了许多东西,也培养了我独立工作的能力,树立了对自己工作能力的信心,相信会对今后的学习工作生活有非常重要的影响。而且大大提高了动手的能力,使我充分体会到了在创造过程中探索的艰难和成功时的喜悦。虽然这个设计做的也不太好,但是在设计过程中所学到的东西是这次课程设计的最大收获和财富,使我终身受益。