VB程序设计实验学生成绩管理系统.docx
《VB程序设计实验学生成绩管理系统.docx》由会员分享,可在线阅读,更多相关《VB程序设计实验学生成绩管理系统.docx(18页珍藏版)》请在冰豆网上搜索。
VB程序设计实验学生成绩管理系统
河南工业大学
计算机上机实习报告
姓名:
张翼飞
序号:
11
学号:
2
班级:
食工1004班
指导老师:
任老师张老师
日期:
2011-03-05
一:
系统名称:
学生成绩管理系统的
设计及实现
二:
设计目的
三:
程序摘要
四:
系统设计流程
五:
相关数据列表
六:
小结
七:
程序代码
(1)模块代码
(2)窗体代码
一.系统名称:
学生成绩管理系统的设计及实现
二.设计目的
1.熟悉VB6.0的开发环境,掌握基本的编程方法,熟悉用VB语言完成一个应用程序的设计过程,掌握有关编辑和调试程序的方法和技巧;
2.主要掌握VB语言中的结构体﹑指针及文件操作等内容
3.了解开发简单应用程序的全过程,包括:
分析﹑设计﹑编程﹑调试和编写报告.
三.程序摘要
先在记事本中创建2个文本文档,分别输入本班24名学生在本学期的5门考试课的成绩和课程名及其学分.在主函数中读入两个原始数据文件的内容,保存在对应的结构体数组中,计算出每个学生5门课的加权平均分,并按平均分排列名次.然后显示菜单,调用各个函数,完成以下功能:
1.用VB语言创建一个数据文件,文件名为:
“VB课程设计”,用来存放班级的成绩表.
2.分别统计全班每门课的平均分和标准差,并计算各分数段(90分以上;80~90;70~79;60~69;60分以下)的学生数
3.用VB语言创建一个数据文件,文件名为:
“VB课程设计”,用来存放编号,课程名称,课程平均分,标准差,优秀,良好,中等,及格,不及格.
4.打印每名学生成绩条,结果存放到用VB语言创建的一个数据文件中,成绩条格式为名次,学号,姓名,英语,数学,VB语言,物理,化学
5.屏幕显示所有存在不及格课程的学生的名单(含学号,不及格课程名称,课程的学分及成绩)
6.屏幕显示优等生名单(含学号,N门课成绩,平均分,名次),优等生条件:
a)平均分>=90分
b)名次在本班位于前三名
c)平均分>=85分,并且至少有一门课的成绩>=95
四、系统设计流程
五.相关数据列表
1、原始成绩表
2、课程及学分
3、计算加权平均分
4、按平均分排名次
5、打印每位同学的成绩条
6、打印不及格的人
7、打印优等生情况
8、每门课的平均分
9、各分数段人数
六.小结
在这次上机实习过程中,我了解了程序在VisualVB6.0中调试并运的方法,并上机实践解决了一些平时没有机会解决和一些曾经被自己忽视的问题,如程序的排序对结果显示影响,标点符号对程序结果的影响,并养成了仔细检查程序的好习惯,加强了自己动手的能力。
但通过这次上机让我看到了自己在VB学习中的漏洞,不过看到自己亲自编出的程序,心里非常高兴,这要特别感谢我的辅导老师们的耐心讲解,细心的帮助我调试程序。
感谢学校老师给我们这样的机会,它有利于培养我们独立思考,求异思维的能力。
我深信这次课程设计,对我的VB学习以及今后的计算机等级考试的学习和考试会起到很大的促进作用,我从中看到了自己还有很多的不足,在这里真心的感谢两位老师的耐心的指点,今后我会更加努力学好计算机方面的知识!
总之,这次实习让我受益良多,我更深的体会了细节决定成败,无论在以后上机还是学习做事中,我一定注意细节。
希望学校多给我们这样动手实践的机会,让我们在实践中发现问题,解决问题。
我会珍惜加倍这样难得的机会
七、程序代码
1、模块代码
Typexscjb
xhAsString
xmAsString
cj(1To5)AsInteger
averAsSingle
mcAsInteger
EndType
Typekechen
编号AsInteger
课程名称AsString
课程学分AsSingle
averAsSingle
EndType
Publicstu()Asxscjb
Publicke()Askechen
PublicN%,M%,Zxf%'总人数,课程数,总学分
PublicstrAsString
2、窗体代码
PrivateSubForm_Load()
Dimst1$(),str1$
OpenApp.Path+"\chengji.txt"ForInputAs#1
OpenApp.Path+"\kecheng.txt"ForInputAs#2
N=0:
M=0:
Zxf=0'总人数,课程数,总学分
LineInput#2,str1
DoWhileNotEOF
(2)
M=M+1
ReDimPreserveke(M)
LineInput#2,str1
'Text1=Text1&vbCrLf&str1
str1=Trim(str1)
str1=space1(str1)
st1=Split(str1,"")
'Printst1(0),st1
(1)
ke(M).编号=st1(0)
ke(M).课程名称=st1
(1)
ke(M).课程学分=st1
(2)
Zxf=Zxf+ke(M).课程学分
Loop
LineInput#1,str1
'Text1=str1
DoWhileNotEOF
(1)
N=N+1
ReDimPreservestu(N)
LineInput#1,str1
'Text1=Text1&vbCrLf&str1
str1=Trim(str1)
str1=space1(str1)
st1=Split(str1,"")
stu(N).xh=st1(0)
stu(N).xm=st1
(1)
stu(N).cj
(1)=st1
(2)
stu(N).cj
(2)=st1(3)
stu(N).cj(3)=st1(4)
stu(N).cj(4)=st1(5)
stu(N).cj(5)=st1(6)
stu(N).aver=0
stu(N).mc=0
Loop
EndSub
PublicFunctionspace1(ByValsssAsString)
Dimx%
x=InStr(sss,"")
DoWhilex>0
sss=Replace(sss,"","")
x=InStr(sss,"")
Loop
space1=sss
EndFunction
PrivateSubyuancj_Click()
Dimi%
Cls
Print"学号姓名化学工程制图线代VB物理"
Fori=1ToN
Printstu(i).xh;Tab(12);stu(i).xm;Tab(22);stu(i).cj
(1);
PrintTab(36);stu(i).cj
(2);Tab(46);stu(i).cj(3);Tab(57);stu(i).cj(4);
PrintTab(66);stu(i).cj(5);Tab(77)
Nexti
EndSub
PrivateSubAverage_Click()'计算加权平均分
Dimi%
Fori=1ToN
stu(i).aver=0
Forj=1ToM
stu(i).aver=stu(i).aver+stu(i).cj(j)*ke(j).课程学分
Nextj
stu(i).aver=Round(stu(i).aver/Zxf,2)
Nexti
Cls
Print"学号姓名平均分"
Fori=1ToN
Printstu(i).xh;Tab(12);stu(i).xm;Tab(26);stu(i).aver
Nexti
EndSub
PrivateSubGRS_Click()'统计各分数段人数
Dimchengji(1To5,1To5)AsInteger
Cls
Forj=1ToM
Fori=1ToN
SelectCasestu(i).cj(j)
CaseIs>=90
chengji(1,j)=chengji(1,j)+1
Case80To89
chengji(2,j)=chengji(2,j)+1
Case70To79
chengji(3,j)=chengji(3,j)+1
Case60To69
chengji(4,j)=chengji(4,j)+1
CaseIs<60
chengji(5,j)=chengji(5,j)+1
EndSelect
Nexti
Nextj
Print"范围化学工程制图线代VB物理"
Print"90分以上";Tab(12);chengji(1,1);Tab(24);chengji(1,2);Tab(37);chengji(1,3);Tab(47);chengji(1,4);Tab(55);chengji(1,5)
Print"80-89分";Tab(12);chengji(2,1);Tab(24);chengji(2,2);Tab(37);chengji(2,3);Tab(47);chengji(2,4);Tab(55);chengji(2,5)
Print"70-79分";Tab(12);chengji(3,1);Tab(24);chengji(3,2);Tab(37);chengji(3,3);Tab(47);chengji(3,4);Tab(55);chengji(3,5)
Print"60-69分";Tab(12);chengji(4,1);Tab(24);chengji(4,2);Tab(37);chengji(4,3);Tab(47);chengji(4,4);Tab(55);chengji(4,5)
Print"59分以下";Tab(12);chengji(5,1);Tab(24);chengji(5,2);Tab(37);chengji(5,3);Tab(47);chengji(5,4);Tab(55);chengji(5,5)
EndSub
PrivateSubminci_Click()
Dimi%,j%,k%,ti%,ts$,tsn!
ii%,ave!
kk%
Fori=1ToN
stu(i).aver=0
Forj=1ToM
stu(i).aver=stu(i).aver+stu(i).cj(j)*ke(j).课程学分
Nextj
stu(i).aver=Round(stu(i).aver/Zxf,2)
Nexti
Fori=1ToN-1
k=i
Forj=i+1ToN
Ifstu(k).averNextj
ts=stu(k).xh:
stu(k).xh=stu(i).xh:
stu(i).xh=ts
ts=stu(k).xm:
stu(k).xm=stu(i).xm:
stu(i).xm=ts
tsn=stu(k).aver:
stu(k).aver=stu(i).aver:
stu(i).aver=tsn
Forii=1ToM
ti=stu(k).cj(ii):
stu(k).cj(ii)=stu(i).cj(ii):
stu(i).cj(ii)=ti
Nextii
Nexti
k=1:
ave=stu
(1).aver
Fori=1ToN
Ifstu(i).aver=aveThen
stu(i).mc=k
Else
ave=stu(i).aver
k=k+1
stu(i).mc=k
EndIf
Nexti
Cls
Print"学号姓名名次"
Fori=1ToN
Printstu(i).xh;Tab(12);stu(i).xm;Tab(22);stu(i).mc
Nexti
EndSub
PrivateSubMPJ_Click()
Dimi%,j%
Forj=1ToM
ke(j).aver=0
Fori=1ToN
ke(j).aver=ke(j).aver+stu(i).cj(j)
Nexti
ke(j).aver=Round(ke(j).aver/N,2)
Nextj
Cls
Print"化学工程制图线代VB物理"
Printke
(1).aver;Tab(13);ke
(2).aver;Tab(26);ke(3).aver;Tab(36);ke(4).aver;Tab(45);ke(5).aver
EndSub
PrivateSubPrint59_Click()
Dimi%
Cls
Print"学号姓名课程名称课程学分成绩"
Fori=1ToN
Forj=1ToM
Ifstu(i).cj(j)<=59Then
Printstu(i).xh;Tab(12);stu(i).xm;Tab(21);ke(j).课程名称;Tab(35);ke(j).课程学分;Tab(47);stu(i).cj(j)
EndIf
Nextj
Nexti
EndSub
PrivateSubprintall_Click()
Dimi%,j%,k%,ti%,ts$,tsn!
ii%,ave!
kk%
Fori=1ToN
stu(i).aver=0
Forj=1ToM
stu(i).aver=stu(i).aver+stu(i).cj(j)*ke(j).课程学分
Nextj
stu(i).aver=Round(stu(i).aver/Zxf)
Nexti
Fori=1ToN-1
k=i
Forj=i+1ToN
Ifstu(k).averNextj
ts=stu(k).xh:
stu(k).xh=stu(i).xh:
stu(i).xh=ts
ts=stu(k).xm:
stu(k).xm=stu(i).xm:
stu(i).xm=ts
tsn=stu(k).aver:
stu(k).aver=stu(i).aver:
stu(i).aver=tsn
Forii=1ToM
ti=stu(k).cj(ii):
stu(k).cj(ii)=stu(i).cj(ii):
stu(i).cj(ii)=ti
Nextii
Nexti
k=1:
ave=stu
(1).aver
Fori=1ToN
Ifstu(i).aver=aveThen
stu(i).mc=k
Else
ave=stu(i).aver
k=k+1
stu(i).mc=k
EndIf
Nexti
Cls
Print"学号姓名化学工程制图线代VB物理平均分名次"
Fori=1ToN
Printstu(i).xh;Tab(12);stu(i).xm;Tab(22);stu(i).cj
(1);
PrintTab(36);stu(i).cj
(2);Tab(46);stu(i).cj(3);Tab(57);stu(i).cj(4);
PrintTab(66);stu(i).cj(5);Tab(77);stu(i).aver;Spc(6);stu(i).mc
Nexti
EndSub
PrivateSubPrintCJD_Click()
Dimi%,j%,k%,ti%,ts$,tsn!
ii%,ave!
kk%
Fori=1ToN
stu(i).aver=0
Forj=1ToM
stu(i).aver=stu(i).aver+stu(i).cj(j)*ke(j).课程学分
Nextj
stu(i).aver=Round(stu(i).aver/Zxf,2)
Nexti
Fori=1ToN-1
k=i
Forj=i+1ToN
Ifstu(k).averNextj
ts=stu(k).xh:
stu(k).xh=stu(i).xh:
stu(i).xh=ts
ts=stu(k).xm:
stu(k).xm=stu(i).xm:
stu(i).xm=ts
tsn=stu(k).aver:
stu(k).aver=stu(i).aver:
stu(i).aver=tsn
Forii=1ToM
ti=stu(k).cj(ii):
stu(k).cj(ii)=stu(i).cj(ii):
stu(i).cj(ii)=ti
Nextii
Nexti
k=1:
ave=stu
(1).aver
Fori=1ToN
Ifstu(i).aver=aveThen
stu(i).mc=k
Else
ave=stu(i).aver
k=k+1
stu(i).mc=k
EndIf
Nexti
Cls
Fori=1ToN
Print"学号姓名化学工程制图线代VB物理平均分名次"
Printstu(i).xh;Tab(12);stu(i).xm;Tab(22);stu(i).cj
(1);
PrintTab(36);stu(i).cj
(2);Tab(46);stu(i).cj(3);Tab(57);stu(i).cj(4);
PrintTab(66);stu(i).cj(5);Tab(77);stu(i).aver;Tab(85);Tab(90);stu(i).mc
Nexti
EndSub
PrivateSubPrintGood_Click()
Dimi%,j%,k%,ti%,ts$,tsn!
ii%,ave!
kk%
Fori=1ToN
stu(i).aver=0
Forj=1ToM
stu(i).aver=stu(i).aver+stu(i).cj(j)*ke(j).课程学分
Nextj
stu(i).aver=Round(stu(i).aver/Zxf,2)
Nexti
Fori=1ToN-1
k=i
Forj=i+1ToN
Ifstu(k).averNextj
ts=stu(k).xh:
stu(k).xh=stu(i).xh:
stu(i).xh=ts
ts=stu(k).xm:
stu(k).xm=stu(i).xm:
stu(i).xm=ts
tsn=stu(k).aver:
stu(k).aver=stu(i).aver:
stu(i).aver=tsn
Forii=1ToM
ti=stu(k).cj(ii):
stu(k).cj(ii)=stu(i).cj(ii):
stu(i).cj(ii)=ti
Nextii
Nexti
k=1:
ave=stu
(1).aver
Fori=1ToN
Ifstu(i).aver=aveThen
stu(i).mc=k
Else
ave=stu(i).aver
k=k+1
stu(i).mc=k
EndIf
Nexti
Cls
Print"学号姓名化学工程制图线代VB物理平均分名次"
Fori=1ToN
Forj=1ToM
Ifstu(i).cj(j)>=95Andstu(i).aver>=85Thens=s+1
Nextj
flag=s>=2Orstu(i).aver>=90Orstu(i).mc<=3
IfflagThen
Printstu(i).xh;Tab(12);stu(i).xm;Tab(22);stu(i).cj
(1);
PrintTab(36);stu(i).cj
(2);Tab(46);stu(i).cj(3);Tab(57);stu(i).cj(4);
PrintTab(66);stu(i).cj(5);Tab(77);stu(i).aver;Tab(85);Tab(90);stu(i).mc
EndIf
s=0
Nexti
EndSub
PrivateSubyaunkc_Click()
Dimi%
Cls
Print"编号课程名称课程学分"
Fori=1ToM
Printke(i).编号;Tab(7);ke(i).课程名称;Tab(22);ke(i).课程学分
Nexti
EndSub