vb课程
设计
领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计
学生成绩管理系统
1. 课程设计的目的
学生成绩管理师一个复杂又繁琐的一项
工程
路基工程安全技术交底工程项目施工成本控制工程量增项单年度零星工程技术标正投影法基本原理
。本系统针为了解决这些问题针对高校教师及管理人员提供了在校学生有效管理的一个信息系统。系统设计的目的是实现纪录、查询和修改学生成绩信息;对于学生成绩情况能有效的处理,以及设置考试类型的信息及考试相关信息。本系统的开发具有很强的使用价值及实践意义。开发本系统不仅能很好的巩固我们在学习中的所掌握的知识,而且系统本身就是应用于实践,为学校教学管理提供了很大的方便性,提高了工作效率;同时方便了我们自己。
2.功能介绍
2.1系统功能介绍
本系统的功能主要有学生成绩的录入,查询,修改,删除等,以及可以设置学生成绩类型的设置。对于指定的人,可以通过密码进入该系统。 2.2 系统数据库设计
针对学生成绩管理系统的需求,通过对学生成绩录入过程的
内容
财务内部控制制度的内容财务内部控制制度的内容人员招聘与配置的内容项目成本控制的内容消防安全演练内容
分析,为本系统设计如下的数据项和数据结构:
(1) 学生基本信息
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
:包括学生姓名,学号,性别,课程名称,成绩等。 (2) 学生成绩的基本信息结构如表1所示:
表1 学生成绩基本信息表
字段 类型 长度 是否为空 说明
Text 7 学号 否 学生在学校的编号
Text 20 姓名 否 学生姓名
Text 2 性别 否 学生性别
Text 20 课程名称 是 课程名称
Byte 成绩 20 是 课程成绩
3.详细设计
3.1 系统功能模块图
学生成绩管理
用户登录
主控界面
考试类型设置 成绩管理
增加 增加
修改 修改
删除 删除
查找 退出
图1 功能模块图
3.2 登录模块设计
登录模块的详细设计主要是用户登录的一个界面,判断登录的用户是管理员还是普通用户,进入后将面对的是主界面,从而进行相关的操作。登录的界面主要由用户名和密码的信息,还有一些标题设置,确定和取消的按钮组成。通过标题可以知道此系统的大概内容,由此,登录界面的设计完成。 设计过程:
用于输入用户名和密码登录,提示中写可以以用户名和密码都为guest进入系统,不过是只读用户。点击确定判断数据库中的用户是否为合法用户。 设计代码:
Private Sub Command1_Click()
x = Text1.Text
If x = "郭聪颖" Then
Text2.SetFocus
Else
MsgBox "无此用户 !"
End If
If Text2.Text = "123456" Then
MsgBox "欢迎进入此系统~"
Form1.Show
Form2.Hide
Text1.Text = ""
Text2.Text = ""
Else
MsgBox "密码错误"
End If
Text1.Text = ""
End Sub
单击运行按钮时就会出现如图2所示的界面,在文本框中输入“郭聪颖”,密码框中输入“123456”时,就会出现消息框,提示进入本系统,并且进入下一个模块。
图2 登录界面
3.3 成绩管理模块
本模块可以实现对成绩的查询,修改等设计,还可以实现对text文本框中字体及颜色的设计。本模块有设计到菜单栏的编辑,菜单栏还涉及到toolbar控件,增加了imagelist选项,对toolbar中各个按钮增加有图片的选项。菜单栏有编辑,颜色,结束,打印等选项。当单击编辑时可以选择对成绩做如何处理,如对文本框中显示内容的选择,上一个可以显示当前文本框中上一个的内容,同理,下一个选项,当单击查找时可以对某一个学号学生姓名的查找,当单击增加按钮时可以实现对记录增加的要求,当单击删除时,可以删除记录,当单击修改时,文本框得到焦点,实现对文本框中内容的修改。本模块还增加commondialog控件,可以实现对文本框中字体的大粗细及各个细节的修改。菜单选项中还有颜色选项,可以实现对文本框中字体颜色的选择。本模块还涉及到data report控件,当单击此控件时可以显示学生成绩的报表。本模块的数据源有adodc 控件实现对数据库的连接。
本模块还有一个mshflexgrid控件,显示数据库中学生成绩的详细信息,并且单击该控件中的某个选项时,文本框中的内容就会随着改变。
模块设计的涉及到的各个控件,其各个属性的改变在属性窗口中涉及,运行时界面如图3所示:
图3 添加各个控件的界面
在各个方法中写入各个模块的运行代码,当单击运行按钮时出项如图4所示的运行界面:
图4 运行时的界面
当单击命令按钮时出现如图5所示的界面,可以对文本框中字体的大小,字体,字形等选项进行修改和选择,其部分运行代码如下:
Private Sub Command1_Click()
CommonDialog1.Flags = cdlCFBoth
CommonDialog1.ShowFont
Text1.Font.Name = CommonDialog1.FontName Text1.Font.Size = CommonDialog1.FontSize Text1.FontBold = CommonDialog1.FontBold Text1.FontItalic = CommonDialog1.FontItalic End Sub
在字体下拉列表框中选择宋体,在字形下拉列表框中选择粗体,在大小下拉列表框中选择小五,打击“确定“按钮时,便对文本框中的文字进行了修改,运行界面如图5所示:
图5 字体选项界面 当单击菜单选项中的增加选项是会出项如下的选项框,以便对学生成绩的增加,
增加了对成绩的管理容易程度。
其涉及到的代码如下:
Private Sub zengjia_Click() vb_msg = MsgBox("请输入", vbOKCancel) If vb_msg = vbCancel Then Exit Sub
End If
Adodc1.Recordset.AddNew
Adodc1.Recordset.Fields("学号") = Text1.Text Adodc1.Recordset.Fields("姓名") = Text2.Text Adodc1.Recordset.Fields("性别") = Text3.Text Adodc1.Recordset.Fields("课程名字") = Text4.Text Adodc1.Recordset.Fields("成绩") = Val(Text5.Text) End Sub
在文本框中输入学生对应的各项信息,完成对成绩管理的增加的要求,运行结果
的界面如图6所示:
图6 增加成绩
当在toolbar中单击查找时,其涉及的代码如下:
Private Sub chazhao_Click() msg = InputBox("请输入准确的学号", "查找记录")
Adodc1.Recordset.Find " 学号='" & msg & " '"
If Adodc1.Recordset.EOF Then MsgBox "没有符合条件的学生!"
Else
MsgBox "符合条件的学生为" & Adodc1.Recordset.Fields(1)
End If
End Sub
在输入框中输入学生的学号F084120,如图7所示:
图7 查找学生 查找结果如图所示,msgbox中显示出查找学生姓名的信息,如图8所示:
图8 查找结果 当单击删除时,部分代码如下:
Private Sub shanchu_Click() Dim areturn As Integer
areturn = MsgBox("确实要删除记录吗?", vbYesNo) If areturn = vbYes Then Adodc1.Recordset.Delete Adodc1.Recordset.MoveNext If Adodc1.Recordset.EOF Then Adodc1.Recordset.MoveLast End If
End If
End Sub
当单击”是”就会对学生的记录进行了删除,运行结果如图9所示:
图9 删除记录 颜色设置的代码如下所示:
Private Sub hongse_Click()
Text1.ForeColor = vbRed
Text2.ForeColor = vbRed Text3.ForeColor = vbRed Text4.ForeColor = vbRed Text5.ForeColor = vbRed End Sub
当单击菜单选项中的颜色下拉列表时,单击“红色“选项时,出现如下的图10
所示:
图10 颜色选项界面
打印所涉及到的代码如下所示:
Private Sub dayin_Click() DataReport2.Show
End Sub
当单击打印按钮时,会出现如图11所示的报表:
图11 学生成绩报表
3.4 考试类型的设计
本模块可以实现对学生考试类型的选择,如期中或是期末。本模块有四个命令按钮增加,修改等组成,还有一个文本框。
有权限的用户和超级管理员可以进行考试类型的增加,修改,删除等操作。在此窗体修改过的东西会在其它具有选择类型的combo控件的窗体中作出相应的修改。最大特点是在点击增加或修改按钮时,其他按钮的enable属性会变成false,以免造成不正确的操作。
设计的界面如下图12所示:
图12 考试类型设置界面
4 . 设计心得与体会
在vb课程开课之前我就下决心要学好这一门课,因为这是我的专业课,我一心只想在这门课上学到更多的东西,直到现在我也是这样想这样做的,直到现在的vb课程设计,我一开始就谨慎小心,争取每一个细节都做得很好。现在终于是完成了,我的设计体会如下:
小心谨慎是关键,因为做程序关键就是写代码,每一个字母都要很小心输入,若是不小心错了一个,就会带来庞大的“查错工程”,不过从我检查错误当中也学会了一些检查的方法,比如设置中断点,可以观查每一个变量的当前值,很有效的。
小心是一个方面,另一个是怎么样让程序最人性化,并且保持较简洁的程序代码,通俗说就是事半功倍。有很多时间我是花在了调试程序方面,一部分是在找错误,还有就是怎么用最简练的代码实现当前的作用。其中绝大多数都是自己写的代码,只有在自己不会的时候才借鉴了指导老师发下来的那个示例作品的代码。
我的程序大多数是我自己写的,但是自己的知识和水平都十分有限,所以在做完每一个窗体之后我都与示范的程序代码作了比较,吸收了示范代码中的好的部分,改进了自己的不足,也学会的很多新的作程序方法,都是十分有用的。
在一个体会就是做程序要有对全局和面的分析能力,具体是在设置用户权限
中学到的,要注重点和面,都是一样的重要。我是先些具体的代码,再把全局的东西加进去;或者先把全局的代码构建起一个框架,再往这个框架里写每个部分的代码。每个人的方法不一样,因人而异。
做什么事都是一样的,具体体现在了这次的vb课程设计上来,让我学到了很多东西。就像要完成一个很大的工作,要先从小的部分做起,不能急于求成,细心谨慎才是关键,坚持不懈,最后再把这些小的窗体在连接起来,就构成了一个整体。
还有很多体会和学到的东西是些也写不完的,只有实践真正动手做了才会真正了解,在不断的学习和实践中体会到更多的经验。在这次课设中,特别感谢刘老师对我的指导和帮助,再次感谢刘老师及帮助我的同学~
5. 参考文献
[1]刘天惠等.Visual Basic程序设计教程[M].清华大学出版2005.10:157-172 [2]人杰,殷人昆,陶永雷.实用软件工程[M](第二版)清华大学出版2003.3:45-67
[3]王运坚.VISUAL BASIC 6.0 应用指南[M ].北京: 人民邮电出版社1998.6:78 [4]管丽娜,白海波.实用Visual Basic6 教程[M] .北京:清华大学出版社2001. [6]段兴.visual Basic数据库实用程序设计100例 [M] .北京:人民邮电出版社2008.6 :56-78
[7]曹军生. Microsoft Accses实用教程[M]. 北京理工大学出版社 2001.9:48 [8]甘仞初.信息系统开发[M]. 北京: 经济科学出版社.1996.7:23-45 [9]郝春强.新概念VISUAL BASIC教程[M]. 北京: 科海集团司.2001.8:45-78 6. 源代码
用户权限的代码
Private Sub Command1_Click()
x = Text1.Text
If x = "郭聪颖" Then
Text2.SetFocus
Else
MsgBox "无此用户 !"
End If
If Text2.Text = "123456" Then
MsgBox "欢迎进入此系统~"
Form1.Show
Form2.Hide
Text1.Text = ""
Text2.Text = ""
Else
MsgBox "密码错误"
End If
Text1.Text = ""
End Sub
查找记录的代码
Private Sub chazhao_Click()
msg = InputBox("请输入准确的学号", "查找记录")
Adodc1.Recordset.Find " 学号='" & msg & " '"
If Adodc1.Recordset.EOF Then
MsgBox "没有符合条件的学生!"
Else
MsgBox "符合条件的学生为" & Adodc1.Recordset.Fields(1) End If
End Sub
设置字体的代码:
Private Sub Command1_Click()
CommonDialog1.Flags = cdlCFBoth
CommonDialog1.ShowFont
Text1.Font.Name = CommonDialog1.FontName Text1.Font.Size = CommonDialog1.FontSize Text1.FontBold = CommonDialog1.FontBold Text1.FontItalic = CommonDialog1.FontItalic Text2.Font.Name = CommonDialog1.FontName Text2.Font.Size = CommonDialog1.FontSize Text2.FontBold = CommonDialog1.FontBold Text2.FontItalic = CommonDialog1.FontItalic Text2.ForeColor = CommonDialog1.Color Text3.Font.Name = CommonDialog1.FontName Text3.Font.Size = CommonDialog1.FontSize Text3.FontBold = CommonDialog1.FontBold Text3.FontItalic = CommonDialog1.FontItalic Text4.Font.Name = CommonDialog1.FontName Text4.Font.Size = CommonDialog1.FontSize Text4.FontBold = CommonDialog1.FontBold Text4.FontItalic = CommonDialog1.FontItalic Text5.Font.Name = CommonDialog1.FontName Text5.Font.Size = CommonDialog1.FontSize Text5.FontBold = CommonDialog1.FontBold Text5.FontItalic = CommonDialog1.FontItalic End Sub
显示报表的代码:
Private Sub dayin_Click()
DataReport2.Show
End Sub
网格代码的设计:
Private Sub Form_Load() Set MSHFlexGrid1.DataSource = Adodc1
MSHFlexGrid1.Row = 0
MSHFlexGrid1.Col = 0
MSHFlexGrid1.Text = "学号"
MSHFlexGrid1.Col = 1
MSHFlexGrid1.Text = "姓名"
MSHFlexGrid1.Col = 2
MSHFlexGrid1.Text = "性别"
MSHFlexGrid1.Col = 3
MSHFlexGrid1.Text = "课程名称"
MSHFlexGrid1.Col = 4
MSHFlexGrid1.Text = "成绩"
MSHFlexGrid1.ColWidth(0) = 600 MSHFlexGrid1.ColWidth(1) = 1000 MSHFlexGrid1.ColWidth(2) = 1200 MSHFlexGrid1.ColWidth(3) = 1000 MSHFlexGrid1.ColWidth(4) = 1200 End Sub
文本框中字体颜色设计的代码:
Private Sub heise_Click() Text1.ForeColor = vbBlack Text2.ForeColor = vbRblack Text3.ForeColor = vbBlack Text4.ForeColor = vbBlack Text5.ForeColor = vbblaxk End Sub
Private Sub hongse_Click() Text1.ForeColor = vbRed Text2.ForeColor = vbRed Text3.ForeColor = vbRed Text4.ForeColor = vbRed Text5.ForeColor = vbRed End Sub
Private Sub huangse_Click() Text1.ForeColor = vbYellow Text2.ForeColor = vbYellow Text3.ForeColor = vbYellow Text4.ForeColor = vbYellow Text5.ForeColor = vbYellow End Sub
Private Sub lanse_Click() Text1.ForeColor = vbBlue
Text2.ForeColor = vbBlue Text3.ForeColor = vbBlue Text4.ForeColor = vbBlue Text5.ForeColor = vbBlue End Sub
Private Sub jieshu_Click() End
End Sub
报表设计的代码:
Private Sub MSHFlexGrid1_Click() Adodc1.Recordset.AbsolutePosition = MSHFlexGrid1.Row
End Sub
Private Sub shanchu_Click() Dim areturn As Integer
areturn = MsgBox("确实要删除记录吗?", vbYesNo) If areturn = vbYes Then Adodc1.Recordset.Delete Adodc1.Recordset.MoveNext If Adodc1.Recordset.EOF Then Adodc1.Recordset.MoveLast End If
End If
End Sub
Private Sub shangyige_Click() Adodc1.Recordset.MovePrevious If Adodc1.Recordset.BOF Then Adodc1.Recordset.MoveFirst MsgBox ("已经是第一条记录了!")
End If
End Sub
Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button)
Select Case Button.Index Case 1
Call xiugai_Click
Case 2
Call xiayige_Click
Case 3
Call shangyige_Click
Case 4
Call jieshu_Click
Case 5
Call dayin_Click
Case 6
Call chazhao_Click
Case 7
Call shanchu_Click
Case 8
Call zengjia_Click
End Select
End Sub
Private Sub xiugai_Click() Dim areturn As Integer
areturn = MsgBox("你确实要修改记录吗?", vbYesNo) If are = vbYes Then
Adodc1.Recordset.Update Adodc1.Recordset.Fields("学号") = Text1.Text Adodc1.Recordset.Fields("姓名") = Text2.Text Adodc1.Recordset.Fields("性别") = Text3.Text Adodc1.Recordset.Fields("课程名字") = Text4.Text Adodc1.Recordset.Fields("成绩") = Val(Text5.Text) End If
End Sub
Private Sub xiayige_Click() Adodc1.Recordset.MoveNext If Adodc1.Recordset.EOF Then Adodc1.Recordset.MoveLast MsgBox ("已经是最后一条记录了!")
End If
End Sub
Private Sub zengjia_Click() vb_msg = MsgBox("请输入", vbOKCancel) If vb_msg = vbCancel Then Exit Sub
End If
Adodc1.Recordset.AddNew Adodc1.Recordset.Fields("学号") = Text1.Text Adodc1.Recordset.Fields("姓名") = Text2.Text Adodc1.Recordset.Fields("性别") = Text3.Text Adodc1.Recordset.Fields("课程名字") = Text4.Text Adodc1.Recordset.Fields("成绩") = Val(Text5.Text) End Sub
Private Sub Command1_Click() '增加考试类型的代码
If Command1.Caption = "加入列表" Then
Adodc1.RecordSource = "select * from leixing where 类型='" & Text1.Text & "'"
Adodc1.Refresh
'判断是否重复
If Adodc1.Recordset.EOF = False Then
MsgBox "已经存在该类型名称~", vbOKOnly + vbExclamation, "警告"
Text1.SetFocus
Text1.SelStart = 0
Text1.SelLength = Len(Text1.Text)
Exit Sub
Else
'增加
Adodc1.Recordset.AddNew
Adodc1.Recordset!类型 = Text1.Text
Adodc1.Recordset.Update
Command1.Caption = "增加"
Command2.Enabled = True
Command3.Enabled = True
Command4.Enabled = True
Command5.Visible = False
Text1.Text = ""
End If
'这个Form_Load是刷新list列表用的
Form_Load
MsgBox "设置成功~", vbOKOnly + vbInformation, "提示" Else
Text1.Text = InputBox("输入考试类型~", "输入")
If Text1.Text = "" Then
MsgBox "类型名称不能为空~", vbOKOnly + vbExclamation, "警告"
Text1.SetFocus
Exit Sub
End If
Command1.Caption = "加入列表"
Command2.Enabled = False
Command3.Enabled = False
Command4.Enabled = False
Command5.Visible = True End If
End Sub
Private Sub Command2_Click() If Text1.Text = "" Then
MsgBox "你还没有选择记录~", vbOKOnly + vbExclamation, "警告" Else
If MsgBox("确定要删除 类型名称 为 " & List1.List(List1.ListIndex) & " 的记录吗,",
vbOKCancel + vbExclamation, "警告") = vbOK Then
Adodc1.RecordSource = "select * from leixing where 类型='" & List1.List(List1.ListIndex) &
"'"
Adodc1.Refresh
Adodc1.Recordset.Delete
Text1.Text = ""
End If
End If
'这个Form_Load是刷新list列表用的
Form_Load
End Sub
Private Sub Command3_Click() If Text1.Text = "" Then
MsgBox "你还没有选择记录~", vbOKOnly + vbExclamation, "警告" Exit Sub
End If
If Command3.Caption = "保存修改" Then
Adodc1.RecordSource = "select * from leixing where 类型='" & Text1.Text & "'"
Adodc1.Refresh
'判断是否重复
If Adodc1.Recordset.EOF = False Then
MsgBox "已经存在该类型名称~", vbOKOnly + vbExclamation, "警告"
Text1.SetFocus
Text1.SelStart = 0
Text1.SelLength = Len(Text1.Text)
Exit Sub
Else
'修改
Adodc1.RecordSource = "select * from leixing where 类型='" &
List1.List(List1.ListIndex) & "'"
Adodc1.Refresh
Adodc1.Recordset!类型 = Text1.Text
Adodc1.Recordset.Update
Text1.Text = ""
Command3.Caption = "修改"
Command2.Enabled = True
Command1.Enabled = True
Command4.Enabled = True
Text1.Text = ""
End If
'这个Form_Load是刷新list列表用的
Form_Load
MsgBox "修改成功~", vbOKOnly + vbInformation, "提示" Else
Text1.SetFocus
Text1.SelStart = 0
Text1.SelLength = Len(Text1.Text)
If Text1.Text = "" Then
MsgBox "类型名称不能为空~", vbOKOnly + vbExclamation, "警告"
Text1.SetFocus
Exit Sub
End If
Command1.Enabled = False
Command2.Enabled = False
Command3.Caption = "保存修改"
Command4.Enabled = False
Command5.Visible = True End If
End Sub
Private Sub Command4_Click() Unload Me
End Sub
Private Sub Command5_Click() If Command1.Caption = "加入列表" Then
'取消添加
Command5.Visible = False
Command3.Enabled = True
Command2.Enabled = True
Command1.Caption = "增加"
Command4.Enabled = True
Text1.Text = ""
Else
'取消修改
Command5.Visible = False
Command3.Caption = "修改"
Command2.Enabled = True
Command1.Enabled = True
Command4.Enabled = True
Text1.Text = ""
End If
End Sub
Private Sub Form_Load() '打开数据库中的leixing表
OpenTable Adodc1, "leixing" List1.Clear
Adodc1.Refresh
If Adodc1.Recordset.EOF = False Then
Adodc1.Recordset.MoveFirst
Do While Not Adodc1.Recordset.EOF
List1.AddItem Adodc1.Recordset.Fields(0)
Adodc1.Recordset.MoveNext
Loop
End If
End Sub
Private Sub List1_Click()
Text1.Text = List1.List(List1.ListIndex)
End Sub