精品VB学生成绩管理系统的设计与实现毕业论文报告.docx
《精品VB学生成绩管理系统的设计与实现毕业论文报告.docx》由会员分享,可在线阅读,更多相关《精品VB学生成绩管理系统的设计与实现毕业论文报告.docx(21页珍藏版)》请在冰点文库上搜索。
![精品VB学生成绩管理系统的设计与实现毕业论文报告.docx](https://file1.bingdoc.com/fileroot1/2023-5/14/0aa46c00-6c03-4f53-9b29-6ee31449e9a0/0aa46c00-6c03-4f53-9b29-6ee31449e9a01.gif)
精品VB学生成绩管理系统的设计与实现毕业论文报告
VB程序设计
课程设计报告
班级:
资工10902班
目录
1、课设的目的3
2、界面设计和功能设计3
3、系统功能实施12
4、系统功能设计19
5、总结和体会28
一、课设的目的
1.通过本次课程设计,提高实践动手能力;
2.通过本次课程设计,进一步理解计算机程序设计的思路与方法;
3.通过本次课程设计,进一步熟练运用VB的语言元素和流程控制语句;
4.通过本次课程设计,达到能熟练使用各种常见的VB控件,理解面向对象的思想;
5.通过本次课程设计,熟悉用户界面的设计;
6.通过本次课程设计,熟悉数据访问控件ADO及相关对象的使用,能基于ADO控件实现Access的数据访问与操纵;
二、界面设计和功能设计
1、下面的界面为用户登陆界面:
用户名和密码均已设定,用户名为zg,密码为10902,只有输入正确,然后点击“登陆“按钮才能进入主界面。
如果用户名或密码三次输入错误,则系统自动退出。
当你点击“退出“按钮时,弹出一个对话窗,界面如下:
在对话框上点击“是”按钮,则退出系统,如果点击“否”,则该界面不变。
2、当用户名和密码均输入正确,点击“登陆”按钮,进入主界面——“学生成绩管理系统”界面,该界面是其他子界面的入口,界面如下:
3、进入主界面后,点击“学生管理(删除\添加)”,进入学生管理界面,界面如下:
该界面上有一个ADO控件,用于连接数据库,当用户在六个文本框中输入数据时,点击“添加“按钮,可以将数据录入到数据库中,如果此时点击”删除“按钮,则刚才输入的数据就会被删除,点击”保存“按钮时,输入的数据就会自动保存在数据库里,点击”返回主窗体“按钮,该窗体消失,主窗体出现。
4、在主界面点击“各科成绩查询“按钮,出现如下界面:
该界面有一个ADO控件,用来连接数据库,还有一个DataGrid控件,用来显示学生成绩的查询结果,当用户选择了要查询的科目和条件后,点击“查询“按钮,在DataGrid控件上就会显示出所查询的结果。
下面为输入条件后查询的结果——
5、在主界面点击“姓名查询“按钮后,会出现如下界面:
该界面与上一界面相似,在文本框输入要查询的姓名后,点击“查询“按钮,就会在DataGrid控件上显示所要查询的结果。
下面为输入条件后查询的结果——
5、在主界面点击“班级查询“按钮后,会出现如下界面:
在文版框中输入所要查询的班级,DataGrid控件上就会显示所要查询的结果。
下面为输入条件后查询的结果——
6、在主界面上点击“各科成绩段查询“按钮后,会出现如下界面:
点击“计算分数段统计“按钮后,就会出现所要查询的结果。
下面为查询的结果——
7、在主界面点击“排名“按钮后,出现如下界面:
在该界面上点击“排名“按钮后,在DataGrid控件上会显示出按成绩高低排名的结果,点击”清除排名“按钮后,刚才结果消失,显示原来结果。
下面为所现实的结果——
8、在主界面点击“统计直方图“按钮后,出现如下界面:
在该界面点击各个按钮后,就会出现与之相关科目的成绩统计直方图,下面为查询的结果——
9、在主界面点击“优等生“按钮后,出现如下界面:
点击按钮查询后,结果就会在界面上显示出来。
下面为所查询的结果——
三、系统功能实施
以上展示的是系统的所有界面,怎样才能让这所有的功能实现呢?
数据库和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,可以实现数据的批量处理,该控件在控件库MicrosoftDataGridControl6.0中。
说明:
DataGrid控件属性设置
四、系统功能设计
系统功能的设计,其核心就是程序代码的编写过程,如何让让系统更加完善、界面更加友好呢,这就得益于代码的编写。
以下为各个界面所对应的代码——
该界面代码如下:
PrivateSubCommand1_Click()
IfText1.Text="zg"AndText2.Text="10902"Then
mainfrm.Show
dlfrm.Hide
Else
MsgBox"用户名或密码错误,请重新输入",vbMsgBoxSetForeground,"系统提示!
!
"
EndIf
StatictAsInteger
t=t+1
Ift>=3ThenEnd
EndSub
PrivateSubCommand2_Click()
a=MsgBox("确定要退出本系统吗?
",3+32+256,"系统提示!
!
")
Ifa=6Then
UnloadMe
EndIf
EndSub
该界面代码如下:
PrivateSubCommand1_Click()
xsglfrm.Show
EndSub
PrivateSubCommand10_Click()
ydsfrm.Show
EndSub
PrivateSubCommand3_Click()
jszffrm.Show
EndSub
PrivateSubCommand4_Click()
pmfrm.Show
EndSub
PrivateSubCommand5_Click()
zftjtfrm.Show
EndSub
PrivateSubCommand6_Click()
cjcxfrm.Show
EndSub
PrivateSubCommand7_Click()
xmcxfrm.Show
EndSub
PrivateSubCommand8_Click()
bjcxfrm.Show
EndSub
PrivateSubCommand9_Click()
gkcjfrm.Show
EndSub
该界面代码如下:
PrivateSubCommand1_Click()
Me.Adodc1.Recordset.AddNew
EndSub
PrivateSubCommand2_Click()
IfMe.Adodc1.Recordset.RecordCount=0OrMe.Adodc1.Recordset.EOFThen
ExitSub
EndIf
Me.Adodc1.Recordset.Delete
Me.Adodc1.Recordset.MoveNext
IfMe.Adodc1.Recordset.RecordCount=0Then
ExitSub
EndIf
IfMe.Adodc1.Recordset.EOFThenMe.Adodc1.Recordset.MoveLast
EndSub
PrivateSubCommand4_Click()
Me.Adodc1.Recordset.Save
EndSub
PrivateSubCommand5_Click()
UnloadMe
mainfrm.Show
EndSub
该界面代码如下:
Dimkc_条件AsString
DimkcAsString
PrivateSubCommand1_Click()
kc_条件=Me.Text1
Me.Adodc1.RecordSource="select*fromstuwhere"+kc+""+kc_条件
Me.Adodc1.Refresh
EndSub
PrivateSubForm_Load()
kc_条件=">=92"
kc="vb"
EndSub
PrivateSubOption1_Click()
kc="VB"
EndSub
PrivateSubOption2_Click()
kc="math"
EndSub
PrivateSubOption3_Click()
kc="English"
EndSub
该界面代码如下:
Dimkc_条件AsString
DimkcAsString
PrivateSubCommand1_Click()
kc_条件=Me.Text1
Me.Adodc1.RecordSource="select*fromstuwhere"+kc+"='"+kc_条件+"'"
Me.Adodc1.Refresh
EndSub
PrivateSubForm_Load()
kc="name"
EndSub
该界面代码如下:
Dimkc_条件AsString
DimkcAsString
PrivateSubCommand1_Click()
kc_条件=Me.Text1
Me.Adodc1.RecordSource="select*fromstuwhere"+kc+"='"+kc_条件+"'"
Me.Adodc1.Refresh
EndSub
PrivateSubForm_Load()
kc="class"
EndSub
该界面代码如下:
PrivateSubCommand1_Click()
Dimvb_AAsInteger
Dimvb_BAsInteger
Dimvb_CAsInteger
Dimvb_DAsInteger
Dimvb_EAsInteger
DimMath_AAsInteger
DimMath_BAsInteger
DimMath_CAsInteger
DimMath_DAsInteger
DimMath_EAsInteger
DimEnglish_AAsInteger
DimEnglish_BAsInteger
DimEnglish_CAsInteger
DimEnglish_DAsInteger
DimEnglish_EAsInteger
Me.Adodc1.RecordSource="select*fromstuwherevb>=90"
Me.Adodc1.Refresh
vb_A=Me.Adodc1.Recordset.RecordCount
Me.Text1=vb_A
Me.Adodc1.RecordSource="select*fromstuwherevb>=80andvb<90"
Me.Adodc1.Refresh
vb_B=Me.Adodc1.Recordset.RecordCount
Me.Text2=vb_B
Me.Adodc1.RecordSource="select*fromstuwherevb>=70andvb<80"
Me.Adodc1.Refresh
vb_C=Me.Adodc1.Recordset.RecordCount
Me.Text3=vb_C
Me.Adodc1.RecordSource="select*fromstuwherevb>=60"
Me.Adodc1.Refresh
vb_D=Me.Adodc1.Recordset.RecordCount
Me.Text4=vb_D
Me.Adodc1.RecordSource="select*fromstuwherevb<60"
Me.Adodc1.Refresh
vb_B=Me.Adodc1.Recordset.RecordCount
Me.Text5=vb_E
Me.Adodc1.RecordSource="select*fromstuwheremath>=90"
Me.Adodc1.Refresh
Math_A=Me.Adodc1.Recordset.RecordCount
Me.Text6=Math_A
Me.Adodc1.RecordSource="select*fromstuwheremath>=80andmath<90"
Me.Adodc1.Refresh
Math_B=Me.Adodc1.Recordset.RecordCount
Me.Text7=Math_B
Me.Adodc1.RecordSource="select*fromstuwheremath>=70andmath<80"
Me.Adodc1.Refresh
Math_C=Me.Adodc1.Recordset.RecordCount
Me.Text8=Math_C
Me.Adodc1.RecordSource="select*fromstuwheremath>=60"
Me.Adodc1.Refresh
Math_D=Me.Adodc1.Recordset.RecordCount
Me.Text9=Math_D
Me.Adodc1.RecordSource="select*fromstuwheremath<60"
Me.Adodc1.Refresh
Math_E=Me.Adodc1.Recordset.RecordCount
Me.Text10=Math_E
Me.Adodc1.RecordSource="select*fromstuwhereenglish>=90"
Me.Adodc1.Refresh
English_A=Me.Adodc1.Recordset.RecordCount
Me.Text11=English_A
Me.Adodc1.RecordSource="select*fromstuwhereenglish>=80andenglish<90"
Me.Adodc1.Refresh
English_B=Me.Adodc1.Recordset.RecordCount
Me.Text12=English_B
Me.Adodc1.RecordSource="select*fromstuwhereenglish>=70andenglish<80"
Me.Adodc1.Refresh
English_C=Me.Adodc1.Recordset.RecordCount
Me.Text13=English_C
Me.Adodc1.RecordSource="select*fromstuwhereenglish>=60"
Me.Adodc1.Refresh
English_D=Me.Adodc1.Recordset.RecordCount
Me.Text14=English_D
Me.Adodc1.RecordSource="select*fromstuwhereenglish<60"
Me.Adodc1.Refresh
English_E=Me.Adodc1.Recordset.RecordCount
Me.Text15=English_E
EndSub
PrivateSubForm_Load()
Text1.Text=""
Text2.Text=""
Text3.Text=""
Text4.Text=""
Text5.Text=""
Text6.Text=""
Text7.Text=""
Text8.Text=""
Text10.Text=""
Text11.Text=""
Text12.Text=""
Text13.Text=""
Text14.Text=""
Text15.Text=""
EndSub
该界面代码如下:
PrivateSubCommand1_Click()
Me.Adodc1.RecordSource="select*fromstuorderbytotaldesc"
Me.Adodc1.Refresh
Me.Adodc1.Recordset.MoveFirst
Fori=1ToMe.Adodc1.Recordset.RecordCount
Me.Adodc1.Recordset.Fields("mc").Value=i
Me.Adodc1.Recordset.Update
Me.Adodc1.Recordset.MoveNext
Nexti
EndSub
PrivateSubCommand2_Click()
Me.Adodc1.Recordset.MoveFirst
Fori=1ToMe.Adodc1.Recordset.RecordCount
Me.Adodc1.Recordset.Fields("mc").Value=Null
Me.Adodc1.Recordset.Update
Me.Adodc1.Recordset.MoveNext
Nexti
EndSub
该界面代码如下:
PrivateSubCommand1_Click()
Me.Adodc1.Refresh
'填充表格数据
MSChart1.RowCount=1
MSChart1.ColumnCount=Me.Adodc1.Recordset.RecordCount
Me.Adodc1.Recordset.MoveFirst
ForlngI=1ToMe.Adodc1.Recordset.RecordCount
MSChart1.Column=lngI
'用Data属性向MSChart数据网格填充数据
MSChart1.Data=Val(Adodc1.Recordset.Fields("vb").Value)
MSChart1.ColumnLabel=Adodc1.Recordset.Fields("name").Value
Adodc1.Recordset.MoveNext
NextlngI
MSChart1.RowLabel="VB成绩直方图"
EndSub
PrivateSubCommand2_Click()
Me.Adodc1.Refresh
'填充表格数据
MSChart1.RowCount=1
MSChart1.ColumnCount=Me.Adodc1.Recordset.RecordCount
Me.Adodc1.Recordset.MoveFirst
ForlngI=1ToMe.Adodc1.Recordset.RecordCount
MSChart1.Column=lngI
'用Data属性向MSChart数据网格填充数据
MSChart1.Data=Val(Adodc1.Recordset.Fields("math").Value)
MSChart1.ColumnLabel=Adodc1.Recordset.Fields("name").Value
Adodc1.Recordset.MoveNext
NextlngI
MSChart1.RowLabel="Math成绩直方图"
EndSub
该界面代码如下
PrivateSubCommand1_Click()
DimvbAsInteger
DimmathAsInteger
DimenglishAsInteger
Me.Adodc1.RecordSource="select*fromstuwhere((math+english+vb)3>=90)or((math+english+vb)3>=85and(math=100orenglish=100orvb=100))or((vb+english+math)3>=85and((vb>=95andenglish>=95)or(english>=95andmath>=95)or(math>=95andvb>=95)))and(mc<=3)and(vb>=60andenglish>=60andmath>=60)"
Me.Adodc1.Refresh
EndSub
五、总结和体会
想来,当时那会儿听说要搞vb课程设计的时候,我可是相当激动啊,心想,学的东西终于可以用一用了。
并且这次的Vb课程设计要持续两周的时间,主要是用vb+access相关的知识来实现学生成绩和信息的管理。
这对于我们这种初次接触这种东西的人来说,还真是有难度,如果不是老师给了我们足够的模板和样例,我想我还真一时半会儿,不知道从哪里下手,好在功夫不负有心人,经过几天时间的摸索和操作,这个学生成绩管理系统的雏形终于是出现了,虽说功能不太完善,但还是能满足基本要求,这让我很是欣慰。
两周的时间并不长,一晃就到了,课程设计也要画上句号了。
在这一段时间里里,不能说我的vb编程能力有了多么大的提高,多么大的飞跃,但我敢说我对vb和数据库相关的知识有了更加深刻的了解和体会,总结起来主要有以下几点:
1、想要用vb做出好的东西来,一定要勤动手,不能光看,因为好多错误凭看是看不出来的,只有通过自己不断的操作和修改,才能对vb的语法结构和流程有自己独到的理解;
2、在编程和调试的过程中,总会出现一些意想不到的问题。
我发现并不是每一个问题都能从资料中得到解决方法,有些问题是无法预料的,这个时候就得靠自己去分析了,你必须得非常的细心,一步一步的进行调试和修改,而且不能急,往往有的错误就是在你急躁的时候从你眼皮底下溜过去的,这样又得重新检查,到头来,既费时又费力,实在不行,还可以和同学一起进行讨论;
3、在写代码的时候,一定要养成良