成绩系统框图界面.docx
《成绩系统框图界面.docx》由会员分享,可在线阅读,更多相关《成绩系统框图界面.docx(10页珍藏版)》请在冰豆网上搜索。
![成绩系统框图界面.docx](https://file1.bdocx.com/fileroot1/2023-7/9/f8f4b612-a568-41dc-99e7-4cc3d7245167/f8f4b612-a568-41dc-99e7-4cc3d72451671.gif)
成绩系统框图界面
VB课程设计题目:
学生成绩管理系统
设计一个简单的学生成绩程序管理系统,使用随机文件存储学生信息,该程序具有数据添加、修改、删除及学生信息顺序查询功能。
程序的运行界面如下图所示。
一、系统结构框图如下:
系统总体结构框图
二、密码程序界面及主要控件属性设置
1.程序界面:
2.主要控件属性设置:
对象
属性(属性值)
属性(属性值)
说明
窗体1
Name(Form1)
Caption(“登陆成绩管理系统”)
窗体2
Name(Form2)
Caption(“学生成绩管理系统”)
文本框1
Name(Text1)
Text(“”)
PassWordChar(*)
指定显示在文本框中的替代符
命令按钮1
Name(CmdIn)
Caption(“进入”)
标签1
Name(Label1)
Caption(“请输入密码:
”)
AutoSize(True)
返回或设置一个值,以决定控件是否自动改变大小显示其全部内容
命令按钮2
Name(CmdExit)
Caption(“退出”)
三、成绩管理程序界面及主要控件属性设置
1.程序界面:
2.主要控件属性设置:
对象
属性(属性值)
属性(属性值)
说明
窗体
Name(form1)
Caption(“学生成绩管理”)
文本框1
Name(TxtID)
Text(“”)
输入和显示学号
文本框2
Name(TxtName)
Text(“”)
输入和显示姓名
文本框3
Name(TxtClass)
Text(“”)
输入和显示班级
文本框4
Name(TxtSubject)
Text(“”)
输入和显示专业
文本框控件数组5
Name(TxtMark)
Index(1—3)
输入和显示三门课程成绩
文本框6
Name(TxtTotal)
Text(“”)
显示总成绩
命令按钮1
Name(CmdAdd)
Caption(“添加”)
向文件中追加记录
命令按钮2
Name(CmdChange)
Caption(“修改”)
修改当前记录
命令按钮3
Name(CmdDelete)
Caption(“删除”)
删除当前记录
命令按钮4
Name(CmdBefore)
Caption(“上一个”)
显示上一个记录
命令按钮5
Name(CmdNext)
Caption(“下一个”)
显示上一个记录
4、系统程序
一、密码程序:
(form1)
PrivateSubForm_Load()者‘装入窗体事件过程
Form2.Hide
EndSub
PrivateSubCmdIn_Click()‘进入密码事件过程
Staticn
n=n+1
Ifn=3Then:
MsgBox"对来起!
密码三次错误退出!
":
End
pass$=Text1.Text'为Text1开始获得焦点设其tabindex=0
Ifpass$="666666"Then
Form1.Hide
Form2.Show
Else
Label1.Caption="请重新输入密码:
"
Text1.Text=""'使文本框清空
Text1.SetFocus
EndIf
EndSub
'(密码输入后)按回车键将触发KeyPress事件(替代鼠标单击‘进入’)
PrivateSubText1_KeyPress(KeyAsciiAsInteger)
IfKeyAscii=13Then
CmdIn_Click
EndIf
EndSub
PrivateSubCmdExit_Click()‘退出密码事件过程
End
EndSub
二、成绩管理系统程序:
1.标准模块代码:
(Module1)
Typestudent‘定义学生信息记录类型
idAsString*8
nameAsString*10
classAsString*10
subjectAsString*20
mark(1To3)AsInteger
EndType
PublicstuAsstudent‘定义student类型变量存放当前记录内容
PublicfilenameAsString‘定义变量存放学生信息文件名
Publicrec_noAsInteger‘定义变量存放当前记录号
Publicrec_totalAsInteger‘定义变量存放总记录数
Publicrec_longAsInteger‘定义变量存放记录长度
—————————————————————————
2.成绩管理代码:
(form2)
PrivateSubcmdadd_Click()’添加记录事件过程
DimiAsInteger,nmsgAsInteger
Fori=1Torec_total
Get#1,i,stu
IfTrim(stu.id)=Trim(txtid.Text)Then
nmsg=MsgBox("文件中已有该同学的记录,要显示修改此记录吗?
",vbYesNo)
Ifnmsg=vbYesThen
rec_no=i
Calldisplay
EndIf
ExitSub
EndIf
Nexti
Callgetdata
rec_total=rec_total+1
rec_no=rec_total
Put#1,rec_no,stu
EndSub
PrivateSubcmdbefore_Click()‘显示上一条记录事件过程
Ifrec_no>1Then
rec_no=rec_no-1
Else
MsgBox"现在已是首记录!
"
ExitSub
EndIf
Get#1,rec_no,stu
Calldisplay
EndSub
PrivateSubcmdchange_Click()‘修改当前记录事件过程
Callgetdata’将修改的数据保存到记录变量中
Put#1,rec_no,stu’修改记录
Calldisplay
EndSub
PrivateSubcmddelete_Click()‘删除当前记录事件过程
DimiAsInteger
DimdempnoAsInteger
tempno=rec_no
Openfilename&".temp"ForRandomAs#2Len=rec_long
Fori=1Torec_total
Ifi<>tempnoThen
Get#1,i,stu
Put#2,,stu
EndIf
Nexti
Close
Killfilename
Namefilename&".temp"Asfilename
Callfileopen
EndSub
PrivateSubcmdnext_Click()‘显示下一条记录事件过程
DimnmsgAsInteger
Ifrec_norec_no=rec_no+1
Calldisplay‘显示当前记录
Else
nmsg=MsgBox("已到最后一记录了!
要回到首记录吗?
",vbYesNo)
Ifnmsg=vbYesThen
rec_no=1‘回到首记录
Calldisplay
EndIf
EndIf
EndSub
PrivateSubtxtclear()‘清除各文本框中的内容子过程
DimiAsInteger
Withstu
txtid="":
txtname=""
txtclass="":
txtsubject=""
Fori=1To3
txtmark(i)=""
Nexti
txttotal=""
EndWith
EndSub
PrivateSubdisplay()‘显示当前记录子过程
DimiAsInteger
Get#1,rec_no,stu
Withstu
txtid=.id:
txtname=.name
txtclass=.class:
txtsubject=.subject
Fori=1To3
txtmark(i)=.mark(i)
Nexti
txttotal=.mark
(1)+.mark
(2)+.mark(3)
EndWith
EndSub
PrivateSubgetdata()‘将在文本框输入的数据存入到记录变量中
DimiAsInteger
stu.id=txtid.Text:
stu.name=txtname.Text
stu.class=txtclass.Text:
stu.subject=txtsubject.Text
Fori=1To3
stu.mark(i)=Val(txtmark(i).Text)
Nexti
EndSub
PrivateSubtxtmark_lostfocus(indexAsInteger)
Ifindex=3Then‘当输入完最后一门课程,则计算并显示总成绩
txttotal=Val(txtmark
(1))+Val(txtmark
(2))+Val(txtmark(3))
EndIf
EndSub
PrivateSubForm_Load()‘装入窗体事件过程
filename=App.Path&"\studet.dat"
‘App.Path意思就是应用程序所在的路径。
即studet.dat文件存放在“运行的程序”同一个位置(目录)中。
rec_long=Len(stu)‘给定随机文件记录长度
Callfileopen
EndSub
PrivateSubfileopen()‘打开学生信息数据文件
DimiAsInteger
OpenfilenameForRandomAs1Len=rec_long
rec_long=Len(stu)
rec_total=LOF
(1)/rec_long‘初始打开的为全部记录
Ifrec_total=0Then‘如为空记录,则清除各文本框的内容
Calltxtclear
ExitSub
Else‘如果有学生信息数据,则显示第一条记录
rec_no=1
calldisplay’也可以直接用display
EndIf
EndSub