VB实习报告.docx

上传人:b****6 文档编号:5918843 上传时间:2023-01-02 格式:DOCX 页数:21 大小:564.31KB
下载 相关 举报
VB实习报告.docx_第1页
第1页 / 共21页
VB实习报告.docx_第2页
第2页 / 共21页
VB实习报告.docx_第3页
第3页 / 共21页
VB实习报告.docx_第4页
第4页 / 共21页
VB实习报告.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

VB实习报告.docx

《VB实习报告.docx》由会员分享,可在线阅读,更多相关《VB实习报告.docx(21页珍藏版)》请在冰豆网上搜索。

VB实习报告.docx

VB实习报告

计算机上机实习(VB)

专业班级:

化工10904

学生学号:

*********

学生姓名:

申慷尼

班级序号:

17

指导老师:

李老师、江老师

完成时间:

2010.12.31

目录

1.设计内容2

2.设计分析与说明3

3.代码4

3.1部分过程4

3.2部分函数6

3.3重要函数分析6

4.出现问题8

5.解决方法9

6.改进意见10

7.实习总结11

7.1实习意见11

7.2.实习收获11

7.3思考进步12

8.附录14

8.1原始代码14

8.2运行结果21

1.设计内容

一、用记事本新建一个文本文件,将本班的M名学生在本学期的N门考试课成绩(要求用假象份数,并要求将自己的每门课的分数定在96分以上,放在第一排;而将别人的大多数课程分数都定在96分以下)输入到这个文件中,建议案如下形式存放(注:

20≤M≤50,5≤N≤8,下文以M=4,N=3为例):

学号姓名线性代数VB概率统计

01申慷尼999898

02宋佳919183

03聂虎932994

04周薇957994

二、讲本学期的N门课程及学分(16学时为1学分)输入到另一个数据文件(文件类型同上题)中,建议如下形式存放:

编号课程名称课程学分

1线性代数4.0

2概率统计4.0

3VB4.5

三、请编写一个简单的学生成绩管理程序,要求完成以下功能:

1、根据以上两文件内容分别计算每个学生N门课的加权平均分(保留2位小数,4舍5入),按平均分排列名次,平均分相同则名次并列,如第1、2、2、4、5、5、7…名。

用VB创建一个数据文件,存放班级的成绩表,建议按一下形式存放。

学号姓名线性代数VB概率统计平均分名次

01申慷尼999898100.951

02宋佳91918392.182

03聂虎93299582.356

2、分别统计全班每门课的平均分,并计算各分数段(60分以下:

60~69;70~79;80~89;90分以上)的学生人数,用VB创建一个新的数据文件,在该文件中存放数据的格式如下:

范围线性代数VB…………

≥9012…………

80~8923…………

………………………………………

3、打印每名学生成绩条(并将结果存放到用VB创建的一个新的数据的文件中)

4、打印所有存在不及格课程学生的名单(含学号、不及格课程名称、课程的学分及成绩)。

5、打印优等生名单(学号、N门课成绩、平均分、名次)

优等生条件:

(1)、平均分≥90分

(2)、名次在本班位于前三名

(3)、平均分≥85分,并且有2门课的成绩都≥95分

选做内容:

打印每门课成绩分布图

 

2.设计分析与说明

本次VB课程设计实习内容简单,思路清晰,只需按照步骤,一步一步,即可完成

一、新建文本文档,按要求输入数据

二、定义类型、变量、数组、函数等

三、由于原始文件相邻两列长短不一,因此在调用split函数前需要定义一个space1函数,消除空格。

可利用将2个空格变为1个空格,然后循环的思想来完成操作。

四、加权可以通过数组完成,只用了解其对应数组及应用公式

五、保留两位小数可用到函数:

int()或者round()

六、排名可以运用到排序的模型,详情见书P98~99

七、计算各分数段实际运用到了选择结构的考点if….then…else,selectcase可解决问题。

八、打印成绩条,不及格名单,优等生都是用到了选择结构,思路同六,故此处不做过多分析。

九、利用菜单编辑器编辑界面效果,建立主菜单和子菜单,需要注意的是标题用中文,名称简写但不要有重复。

 

3.代码

3.1部分过程

一、模块

Typexscjb'定义新类型

xhAsString

xmAsString

cj(1To6)AsInteger

averAsSingle

mcAsInteger

EndType

Typekechen

编号AsInteger

课程名AsString

学分AsSingle

EndType

Publicstu()Asxscjb

Publicke()Askechen

PublicN%,M%,Zxf%'定义总人数,课程数,总学分类型

PublicstrAsString

PubliccountAsInteger

二、窗体过程

PrivateSubForm_Load()

Form1.Height=8200'设置窗体大小

Form1.Width=10000

Dimst1$(),str1$

OpenApp.Path+"\成绩.txt"ForInputAs#1'导入成绩

OpenApp.Path+"\课程学分.txt"ForInputAs#2'导入课程学分

N=0:

M=0:

Zxf=0

LineInput#2,str1

DoWhileNotEOF

(2)

M=M+1

ReDimPreserveke(M)

LineInput#2,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

DoWhileNotEOF

(1)

N=N+1

ReDimPreservestu(N)

LineInput#1,str1

str1=Trim(str1)

str1=space1(str1)

st1=Split(str1,"")

Printst1(0),st1

(1)

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)

Loop

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

Fori=0ToUBound(stu)'排序

stu(i).mc=1

Forj=0ToUBound(stu)

Ifstu(i).aver

stu(i).mc=stu(i).mc+1

EndIf

Nextj

Nexti

EndSub

3.2部分函数

PublicFunctionspace1(ByValsssAsString)

Dimx%

x=InStr(sss,"")

DoWhilex>0

sss=Replace(sss,"","")

x=InStr(sss,"")

Loop

space1=sss

EndFunction

3.3重要函数分析

一、加权平均分的处理

Dimi%'定义整形变量

Fori=1ToN'FOR语句循环

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)'四舍五入,利用round()函数

NextiCls

Print

Print"学号";Tab(16);"姓名";Tab(35);"加权平均分"

Fori=1ToN

Printstu(i).xh;Tab(16);stu(i).xm;Tab(36);stu(i).aver'打印输出

Nexti

二、排序的处理

Fori=0ToUBound(stu)'给定i的范围

stu(i).mc=1'赋给名次初值

Forj=0ToUBound(stu)'循环的嵌套

Ifstu(i).aver

stu(i).mc=stu(i).mc+1'原名次+1

EndIf'结束IF

Nextj

Nexti

三、输出优等生的处理

DimflagAsBoolean,s%:

s=0

Cls

Print'打印优等生

Print"学号";Tab(8);"姓名";Tab(16);"线性代数";Tab(28);"概率统计";Tab(41);"VB";Tab(48);"专业概论";Tab(59);"大学物理";Tab(71);"加权平均分";Tab(84);"名次"

Fori=1ToN

Forj=1ToM

Ifstu(i).cj(j)>=95Andstu(i).aver>=85Thens=s+1'满足同时有2门大于95分

Nextj

flag=s>=2Andstu(i).aver>=90Andstu(i).mc<=3'用AND并列,同时满足三个条件

IfflagThen'输出,确定间距

Printstu(i).xh;Tab(8);stu(i).xm;Tab(18);stu(i).cj

(1);Tab(30);stu(i).cj

(2);Tab(40);stu(i).cj(3);Tab(50);stu(i).cj(4);Tab(61);stu(i).cj(5);Tab(72);stu(i).aver;Tab(84);stu(i).mc

EndIf

s=0

Nexti

4.出现问题

一、越界问题

二、数据无法导入问题

三、变量定义问题

四、数组的建立问题

五、排序问题

六、输出时对齐问题

七、其他控件的导出使用问题

5.解决方法

一、越界问题

建立数据文件时,有空格,或者使用了tab键,或者多了一排。

二、数据无法导入问题

多是由于路径定义时不对,还有文件名不匹配,所以找不到文件。

三、变量定义问题

定义的变量一定和后面过程中使用的变量名要一致,否则就总会出现未定义的变量问题。

四、数组的建立问题

数组也要注意数组名的问题,同时还要注意数组的上下界。

五、排序问题

开始排序时,一直没办法和题目的一样,总是名次那一栏是按顺序排下来,后来调整了表达方式和数组的界之后才解决的问题。

六、输出时对齐问题

这个东西如果不理解代码中的意思,要调整很半天啊才能调整齐,有时调了半天,动都不动,其实只需要理解spc(),tab()的含义既可以轻松解决问题了。

七、其他控件的导出使用问题

最开始,我想在导入文件时出现对话框那种东西,后来问老师后,是需要一个DialogCommandControl的控件,装上去,就可以达到效果了,本实习中,我没有用到,但是却在其他程序中试过可行。

6.改进意见

一、界面丰富化

由于我们是初学者,编的东西很简单,所以界面也很单调,其实我们还可以运用后面几章所学的知识,加入一些图形进去,使界面更加形象,丰富。

二、内容简单化

在编写的时候,发现很多代码写的都是很多余的,有的地方可以省,但是,自己的思路又一下子不能达到那种写之前就能发现问题的地步,所以导致写了一些其实没用到的代码,这也给我们以后写代码时提出了方向与思路。

三、步骤条理化

很明显的一点,在利用过程编写程序代码的时候,虽然最后都能够编写完成,但是,从上往下看的时候,步骤很凌乱,有时候过程名没取好的时候,要从菜单栏过来寻找的时候就比较麻烦,特别是当编写完后,再更改了菜单名,所以,如果按照菜单每一项的顺序来编写,思路,思路条理就很清晰很多,别人在看的时候也会轻松很多。

 

7.实习总结

7.1实习意见

一、学校电脑病毒太多了,有时候做着做着就死机了。

二、召唤老师的速度太慢了,半天都看不到。

三、机房环境有待改善。

7.2实习收获

经过这次的实习,收获其实是相当大的,正所谓,时间是检验真理的唯一标准,这句话一点都不假。

平时上课,老师都是纯理论知识的讲解,下来了之后,没有电脑的条件下,根本不可能有实践的机会,再说到那个平时的上机课,效果其实也不是很大,真正有用的是这次的强化实践,上机实习,这不仅是一次全面了解VB的机会,也是一次复习的机会,借这个机会,我又一次的了解了VB的许多方方面面,并且是更加的深入了,对里面的具体操作也更加熟悉,几种常见的控件,几个常用的函数,几个经常犯得小错误,当经过了一步步的操作之后,就会发现自己的很多问题,运行的时候,如果出现不顺畅,肯定就是里面的小地方没注意到,然后自己就得马上去寻找错误,先自己发现,自己思考,自己探究,如果自己真的解决不了,就会举手问老师该如何操作,如何解决,就是通过这样的方式,让自己对VB更加了解。

此外,通过这次的上机实践,还是一个很好的复习的机会,书上的点老师讲一遍,自己看一遍,不懂得还是不不懂,有很多点知道是这样,但不知道为什么是这样,有的问题,觉得自己的思路应该可以解决问题,但是没有通过运行,就不会发现其实还要东西没定义,有东西漏掉了,有方法选错了,等等。

这一切的一切,都让自己的VB知识更加牢固,以后如果逾到同样的问题,就可以很轻松的解决了。

最后,我只想说,因为有这么个机会,因为抓住机会练习,让我有了一个质的提高,质的飞跃,也希望自己期末的成绩能考的更好一点。

7.3思考进步

其实,这一部分是我最喜欢的一部分,只有思考,才能有进步。

这学期,这些年,我也是在这样的一个习惯中不断的成长与进步的。

我想,老师设立这样一个上机实践的目的,肯定不仅仅为了让大家去应付完成学分,填补大学“空虚”的时间,其真实的目的,我想应该是让我们从实习中有思考,有发现,有进步,有成长。

在这么一整个实习过程中最让我收获的,可能是以下几点:

一、细心

可能我们也发现了,很多时候,我们都不能顺利的运行程序,总是这里那里的一点点小错误,让我们的程序无法得运行下去。

如果我们能思维缜密,发现没一点的小细节,并且注意他们,我们可能就会节省出很多的时间避免我们去找那些很小的错误。

二、合理利用时间,多向老师学习

最开始,我什么都不会,只会前面很简单的步骤,好不容易把数据导入进去了,排版还很难看,就这里改一点那里改一点,所以浪费了很多时间,其实,只用到老师那里学一点,看老师教别的同学操作那么一下,就会达到事半功倍的地步,会节省出很多的时间,同时自己也会长进很多。

三、主动思考,主动提问

一个问题摆在我们面前的时候,不是让我们等着,或者随便改这里改那里就行了的,我们应该去探寻代码中的细微含义,可以深入到每一个标点符号,都会有自己特定的含义,这个问题按代码上可以这样解决,那能不能有其他的方法,怎样去做能使程序更加简单明了,结构更清晰,让别人理解起来更方便。

如果自己实在解决不了的问题,就要及时找老师寻求帮助,因为如果自己经过思考都没想出来,说明在这个知识点上,自己还有缺口,没有老师来弥补指导一下,可能这个坎很难靠自己的力量越过去,所以合理借用老师的力量,主动提问寻求解决方案,也是让人提高的一个切实可行的办法。

以上即是我的一点点思考,不是很深入,但是却是自己付出的努力,努力想让自己变得更专业,变得更强,只要是能让自己成长,能让自己进步,能让自己超越别人的思考,都是好的思考!

8.附录

8.1原始代码

Typexscjb

xhAsString

xmAsString

cj(1To6)AsInteger

averAsSingle

mcAsInteger

EndType

Typekechen

编号AsInteger

课程名AsString

学分AsSingle

EndType

Publicstu()Asxscjb

Publicke()Askechen

PublicN%,M%,Zxf%'总人数,课程数,总学分

PublicstrAsString

PubliccountAsInteger

PublicFunctionspace1(ByValsssAsString)

Dimx%

x=InStr(sss,"")

DoWhilex>0

sss=Replace(sss,"","")

x=InStr(sss,"")

Loop

space1=sss

EndFunction

PrivateSubForm_Load()

Form1.Height=8200'设置窗体大小

Form1.Width=10000

Dimst1$(),str1$

OpenApp.Path+"\成绩.txt"ForInputAs#1'导入成绩

OpenApp.Path+"\课程学分.txt"ForInputAs#2'导入课程学分

N=0:

M=0:

Zxf=0

LineInput#2,str1

DoWhileNotEOF

(2)

M=M+1

ReDimPreserveke(M)

LineInput#2,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

DoWhileNotEOF

(1)

N=N+1

ReDimPreservestu(N)

LineInput#1,str1

str1=Trim(str1)

str1=space1(str1)

st1=Split(str1,"")

Printst1(0),st1

(1)

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)

Loop

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

Fori=0ToUBound(stu)'排序

stu(i).mc=1

Forj=0ToUBound(stu)

Ifstu(i).aver

stu(i).mc=stu(i).mc+1

EndIf

Nextj

Nexti

EndSub

PrivateSubchengji_Click()'输出成绩单

Dimi%

Cls

Print

Print"学号姓名线性代数概率统计VB专业概论大学物理"

Fori=1ToN

Printstu(i).xh;Tab(7);stu(i).xm;Tab(18);stu(i).cj

(1);

PrintSpc(8);stu(i).cj

(2);Spc(5);stu(i).cj(3);Spc(4);stu(i).cj(4);

PrintSpc(7);stu(i).cj(5);Spc(5)

Nexti

EndSub

PrivateSubkc_Click()

Dimi%

Cls

Print'输出课程学分

Print"编号课程名学分"

Fori=1ToM

Printke(i).编号;Tab(7);ke(i).课程名;Tab(18);ke(i).学分

Nexti

EndSub

PrivateSubjqpjf_Click()'输出加权平均分

Cls

Print

Print"学号";Tab(16);"姓名";Tab(35);"加权平均分"

Fori=1ToN

Printstu(i).xh;Tab(16);stu(i).xm;Tab(36);stu(i).aver

Nexti

EndSub

PrivateSubPrint59_Click()'打印不及格名单

Cls

Print

Print"学号";Tab(10);"姓名";Tab(20);"课程";Tab(30);"学分";Tab(40);"成绩"

Fori=1ToN

Forj=1ToM

Ifstu(i).cj(j)<=59Then

Printstu(i).xh;Tab(10);stu(i).xm;Tab(20);ke(j).课程名;Tab(30);ke(j).学分;Tab(40);stu(i).cj(j)

EndIf

Nextj

Nexti

EndSub

PrivateSubcjpm_Click()'打印成绩排名

Dimi%

Cls

Print

Print"学号姓名线性代数概率统计VB专业概论大学物理加权平均分名次"

Fori=1ToN

Printstu(i).xh;Tab(8);stu(i).xm;Tab(19);stu(i).cj

(1);

PrintTab(31);stu(i).cj

(2);Tab(40);stu(i).cj(3);Tab(48);s

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 教育学心理学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1