VB作业模拟成绩管理系统_管理系统模拟作业
VB作业模拟成绩管理系统由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“管理系统模拟作业”。
VB程序设计 模拟成绩管理系统
学院:汽车学院
专业:(交通运输)汽车运用工程 班级: 姓名 学号:
模拟成绩管理系统
2016 《VB程序设计》作业要求
1.做一个成绩管理系统。
2.系统中包括部分学生个人信息,如学号,姓名,性别,出生年月日,班级,籍贯,家庭住址,家庭电话,备注等,及若干(不少于8门)课程成绩和课程学分;输入不少于10条记录;
3.需计算总评成绩(即学分加权平均成绩),并计算排名,且反映在字段中; 4.程序需具备的功能:记录浏览,添加,修改,删除,查询(按姓名或学号查询)
5.建议不要用ADO控件 6.作业的提交:(1)电子版。
a.该版本应该是在你的或老师的电脑上都能运行的,与数据库的路径无关的,提交以前请在其他同学电脑上运行一下,确保程序的运行和电脑无关;
b.把所有文件放在同一个文件夹中,压缩文件名:VB-班级-学号-姓名,如:VB-汽运1班-xxxxxxxx-张三.zip; c.提交邮箱随后公布;
(2)纸质版。纸质版应包括:
a.封面,作业要求; b.主要界面;
c.主要代码,附程序功能注释及主要语句注释。d.附必要的说明。
模拟成绩管理系统
系统运行界面
查询功能
检索框内输入学号或姓名,点击查询,即可在右方显示基本信息,并显示总评成绩。点击清空按钮后,可继续输入。
例如:输入学号“09”后,显示界面如下图
如果没有找到纪录,则发出警告,如下图
主要代码: 查询按钮: Private Sub Command1_Click()
Me.Data1.Recordset.Movefirst 将记录指针指向第一个纪录
If Me.Combo1.Text “” Then
Me.Data1.Recordset.FindFirst “name='” & Combo1.Text & “'”
If Me.Data1.Recordset.NoMatch Then
MsgBox “请重新输入!”, 48, “注意” 未找到匹配的纪录,则显示提示
Combo1.Clear
Combo2.Clear
Else
Me.Data1.Recordset.FindFirst “name='” & Combo1.Text & “'” 查找
Combo2.Text = Data1.Recordset(“number”)显示
End If
End If
If Me.Combo2.Text “” Then 输入学号时
模拟成绩管理系统
Me.Data1.Recordset.FindFirst “number='” & Combo2.Text & “'”
If Me.Data1.Recordset.NoMatch Then
MsgBox “请重新输入!”, 48, “注意”
Combo1.Clear
Combo2.Clear
Else
Me.Data1.Recordset.FindFirst “number='” & Combo2.Text & “'”
Combo1.Text = Data1.Recordset(“name”)
End If End If Private grade As String * 5
grade =(Val(Text8.Text)* Val(Me.Text17.Text)+ Val(Text9.Text)* Val(Me.Text18.Text)+ Val(Text10.Text)* Val(Me.Text20.Text)+ Val(Text11.Text)* Val(Me.Text21.Text)+ Val(Text12.Text)* Val(Me.Text22.Text)+ Val(Text13.Text)* Val(Me.Text23.Text)+ Val(Text14.Text)* Val(Me.Text24.Text)+ Val(Text15.Text)* Val(Me.Text25.Text)+ Val(Text16.Text)* Val(Me.Text26.Text))/(Val(Me.Text17.Text)+ Val(Me.Text18.Text)+ Val(Me.Text20.Text)+ Val(Me.Text21.Text)+ Val(Me.Text22.Text)+ Val(Me.Text23.Text)+ Val(Me.Text24.Text)+ Val(Me.Text25.Text)+ Val(Me.Text26.Text))
计算加权成绩
Me.Text19.Text = grade End Sub
添加功能
点击“添加”按钮后,弹出新窗口,输入完整信息后,点击更新,如果信息 不完整,系统会提示“请输入完整数据!”。输入完成后,点击更新,数据便录入 数据表中,并返回初始界面,可继续输入。点击“取消”按钮后,退出窗口2,返回窗口一,继续进行其他操作。
模拟成绩管理系统
主要代码: 添加按钮
Private Sub Command3_Click()
inNum = 1
Form2.Show 1
End Sub 窗口二代码
Private Sub Command1_Click()
If Text1.Text = “” Or Text2.Text = “” Or Text3.Text = “” Or Text4.Text = “” Or Text5.Text = “” Or Text6.Text = “” Or Text7.Text = “” Or Text8.Text = “” Or Text9.Text = “” Or Text10.Text = “” Or Text11.Text = “” Or Text12.Text = “” Or Text13.Text = “” Or Text14.Text = “” Or Text15.Text = “” Or Text16.Text = “” Or Text17.Text = “” Or Text18.Text = “” Or Text20.Text = “” Or Text21.Text = “” Or Text22.Text = “” Or Text23.Text = “” Or Text24.Text = “” Or Text25.Text = “” Or Text26.Text = “” Then 提示输入完整数据
b = MsgBox(“请输入完整数据!”, 4 + 48, “注意”)
Text1.SetFocus
Exit Sub
End If
With Data1
.Recordset.AddNew
.Recordset(“number”)= Text1.Text 将数据写入data1
.Recordset(“name”)= Text2.Text
.Recordset(“sex”)= Text3.Text
.Recordset(“birthday(year)”)= Text4.Text
……
.Recordset.Update
End With
Text1.Text = “”: Text2.Text = “”: Text3.Text = “”: Text4.Text = “”: Text5.Text = “”: Text6.Text = “”: Text7.Text = “”: Text8.Text = “”: Text9.Text = “”: Text10.Text = “”: Text11.Text = “”: Text12.Text = “”: Text13.Text = “”: Text14.Text = “”: Text15.Text = “”: Text16.Text = “”: Text17.Text = “”: Text18.Text = “”: Text20.Text = “”: Text21.Text = “”: Text22.Text = “”: Text23.Text = “”: Text24.Text = “”: Text25.Text = “”: Text26.Text = “”: Text1.SetFocus End Sub Private Sub Command2_Click()
Unload Me
点击取消按钮时
Form1.Show
End Sub
窗口二与data1数据表连接
Private Sub Form_Load()
Me.Data1.DatabaseName = App.Path + “201322020301-吕天翔.mdb”
Me.Data1.RecordSource = “grade management”
模拟成绩管理系统
End Sub
修改功能
点击“修改”按钮后,按钮消失,‘保存’按钮出现,同时课程学分部分显现,可一并修改,修改完成后,点击保存,显示警告“当前记录将被修改,确定修改?”
点击确定,完成修改,并回到初始界面。
主要代码: 点击修改按钮
Private Sub Command4_Click()
Me.Text17.Visible = True
Me.Text18.Visible = True
Me.Text20.Visible = True
Me.Text21.Visible = True
Me.Text22.Visible = True
Me.Text23.Visible = True
Me.Text24.Visible = True
Me.Text25.Visible = True
Me.Text26.Visible = True
Label8(2).Visible = True
Me.Command3.Visible = False
Me.Command4.Visible = False
Me.Command5.Visible = False
Me.Command6.Visible = False
Me.Command10.Visible = True End Sub 点击保存按钮
调整 课程学分部分 可见性
调整按钮可见性
显示提示
选择“否”时选择退出 否则进入
写入
状态
模拟成绩管理系统
Private Sub Command10_Click()
a = MsgBox(“当前记录将被修改,确定修改?”, 4 + 48, “ 警告 ”)
If a = vbNo Then Exit Sub
Me.Data1.Recordset.Edit
With Data1
.Recordset(“number”)= Text1
.Recordset(“name”)= Text2
.Recordset(“sex”)= Text3
… …
.Recordset(“transportation-xuefen”)= Me.Text24
.Recordset(“automobile-xuefen”)= Me.Text25
.Recordset(“engine-xuefen”)= Me.Text26
End With
Data1.Refresh
Combo1.Clear
Combo2.Clear
End Sub
删除功能
点击“删除”按钮后将弹出“当前记录将被删除,确认删除?”对话框,点击“是”按钮后,将当前记录从data1中删除,并更新data1;若点击“否”,则退出,返回初始界面。
主要代码:
Private Sub Command5_Click()
显示提示
a = MsgBox(“当前记录将被删除,确定删除?”, 4 + 48, “ 警告 ”)
If a = vbNo Then Exit Sub
Me.Data1.Recordset.Delete
进行删除操作
Me.Data1.Refresh
更新data1
Combo1.Clear
Combo2.Clear End Sub
总评成绩计算
算法介绍
用课程学分部分数据与考试成绩计算总评成绩,课程学分部分通常隐藏在窗体中。
情况一 浏览时即显示总评成绩
模拟成绩管理系统
点击data控件按钮浏览数据的同时,该数据的总评成绩也同时显示。
主要代码: Private Sub Data1_Validate(Action As Integer, Save As Integer)
If Me.Data1.Recordset.EOF = True Then
如果当前界面没有显示数据
Me.Data1.Recordset.Movefirst
为防止浏览时出错
Else
grade =(Val(Text8.Text)* Val(Me.Text17.Text)+ Val(Text9.Text)*
Val(Me.Text18.Text)+ Val(Text10.Text)* Val(Me.Text20.Text)+ Val(Text11.Text)*
Val(Me.Text21.Text)+ Val(Text12.Text)* Val(Me.Text22.Text)+ Val(Text13.Text)*
Val(Me.Text23.Text)+ Val(Text14.Text)* Val(Me.Text24.Text)+ Val(Text15.Text)*
Val(Me.Text25.Text)+ Val(Text16.Text)* Val(Me.Text26.Text))/(Val(Me.Text17.Text)+
Val(Me.Text18.Text)+ Val(Me.Text20.Text)+ Val(Me.Text21.Text)+ Val(Me.Text22.Text)
+ Val(Me.Text23.Text)+ Val(Me.Text24.Text)+ Val(Me.Text25.Text)+
Val(Me.Text26.Text))
总评成绩的计算
Me.Text19.Text = grade
End If End Sub
情况二:查询时即显示其总评成绩
计算方法相同,此处不再赘述。
排名功能
点击“排名”按钮后,根据总评成绩大小,在list控件中显示当前数据的排名情况,可以同时显示“名次”“姓名”“总评成绩”;同时在删除或添加部分数据后,能重新计算排名,此处通过动态数组实现显示个数随数据个数同时变化。
算法介绍:
添加一个text控件,用来存放当前窗口的总评成绩。使用data1控件的movefirst,movenext,eof 等属性完成数据库“数据个数计算”“所有数据姓名与成绩的提取与匹配”,使用动态数组完成数据存放;利用循环完成赋值及大小比较,最后通过list显示出来。
主要代码:
Private Sub Command8_Click()
Do Until Me.Data1.Recordset.EOF = True
Me.Data1.Recordset.Movenext
h = h + 1
Loop
模拟成绩管理系统
Me.Data1.Recordset.Movefirst
Dim t As String
Dim w As String
ReDim a(h, 2)As String * 5
定义与数据个数相同行数的二位动态数组
Do Until Me.Data1.Recordset.EOF = True
Me.Text27.Text =(Val(Text8.Text)* Val(Me.Text17.Text)+ Val(Text9.Text)* Val(Me.Text18.Text)+ Val(Text10.Text)* Val(Me.Text20.Text)+ Val(Text11.Text)* Val(Me.Text21.Text)+ Val(Text12.Text)* Val(Me.Text22.Text)+ Val(Text13.Text)* Val(Me.Text23.Text)+ Val(Text14.Text)* Val(Me.Text24.Text)+ Val(Text15.Text)* Val(Me.Text25.Text)+ Val(Text16.Text)* Val(Me.Text26.Text))/(Val(Me.Text17.Text)+ Val(Me.Text18.Text)+ Val(Me.Text20.Text)+ Val(Me.Text21.Text)+ Val(Me.Text22.Text)
+ Val(Me.Text23.Text)+ Val(Me.Text24.Text)+ Val(Me.Text25.Text)+ Val(Me.Text26.Text))Text27中存放当前数据的成绩
a(i, 1)= Text2.Text
a(i, 2)= Text27.Text 把姓名和成绩赋值给数组
i = i + 1
Me.Data1.Recordset.Movenext
Loop
For i = 1 To h
For j = i + 1 To h
If a(i, 2)
t = a(i, 1)
w = a(i, 2)对数组中的成绩进行比较并重新排序
a(i, 1)= a(j, 1)
a(i, 2)= a(j, 2)
a(j, 1)= t
a(j, 2)= w
End If
Next
Next
p = “ 第 ” & k & “ 名 ” & a(1, 1)& a(1, 2)
List1.AddItem p
List1.AddItem “” 输出排序
For i = 2 To h
k = k + 1
p = “ 第 ” & k & “ 名 ” & a(i, 1)& a(i, 2)
List1.AddItem p
List1.AddItem “”
Next
Text19.Text = “”
End Sub
模拟成绩管理系统
课程学分的显示及修改功能
通过点击 课程学分显示 按钮,课程学分部分变为可见,并可通过点击修改按钮进行修改,点击 返回 按钮后,该部分继续隐藏。
浏览功能
通过点击data1控件按钮进行浏览。