VB课程设计.docx

上传人:b****6 文档编号:4516399 上传时间:2022-12-01 格式:DOCX 页数:11 大小:261.56KB
下载 相关 举报
VB课程设计.docx_第1页
第1页 / 共11页
VB课程设计.docx_第2页
第2页 / 共11页
VB课程设计.docx_第3页
第3页 / 共11页
VB课程设计.docx_第4页
第4页 / 共11页
VB课程设计.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

VB课程设计.docx

《VB课程设计.docx》由会员分享,可在线阅读,更多相关《VB课程设计.docx(11页珍藏版)》请在冰豆网上搜索。

VB课程设计.docx

VB课程设计

课程设计

2011年7月10日

课程设计任务书

学院:

机电工程学院专业:

机械电子班级:

94060110

一、课程设计时间

2011年6月27~7月1日(第17周),共计1周,20学时。

二、课程设计内容

一个文本文件(file11_数据统计.txt)存储了若干位同学的数学成绩,文件中每行的内容按照顺序为:

学号,班级,数学成绩,姓名。

请完成一下问题:

①将文件中的内容全部显示在窗体上,并统计总人数。

②统计数学成绩的平均分。

③统计各个班级的平均分。

三、课程设计要求

程序质量:

✧贯彻事件驱动的程序设计思想。

✧用户界面友好,功能明确,操作方便;可以加以其它功能或修饰。

✧用户界面中的菜单至少应包括“打印全部,并统计人数”、“计算总平均分”、“计算各个班的平均分”、“退出”4项。

✧代码应适当缩进,并给出必要的注释,以增强程序的可读性。

课程设计说明书:

✧课程结束后,上交课程设计说明书和源程序。

课程设计说明书的内容参见提供的模板。

四、指导教师和学生签字

指导教师:

________学生签名:

五、成绩

六、教师评语

 

需求分析

一个文本文件(file11_数据统计.txt)存储了若干位同学的数学成绩,文件中每行的内容按照顺序为:

学号,班级,数学成绩,姓名。

要求:

①能够将文件中的内容全部显示在窗体上,并统计总人数。

②能够统计数学成绩的平均分。

③能够统计各个班级的平均分。

设计分析

(1)基本原理:

用Open语句打开文本文件,用EOF函数读取文件中的内容导入的自定义类型动态数组中,将文件中的内容全部显示在窗体上并用选择和循环结构进行数据统计。

(2)总体设计:

(3)详细设计:

技术要点

1文本文件的读取与导入的代码如下

利用open语句打开文件,再用input和lineinput读出文件中的数据

PrivateSubCommand1_Click()

Open"file11.txt"ForInputAs#1'打开文件,用于读取数据

DimCountAsInteger

DoWhileNotEOF

(1)'判断一号文件是否结束,若不结束则继续

LineInput#1,inputdata'从文件中读出一行

Text1.Text=Text1.Text+inputdata+vbCrLf'文本框显示结果

Count=Count+1

Loop

Text2.Text=Count

Close#1'关闭文件

EndSub

2自定义类型动态数组

运用了了两个自定义类型动态数组,可以对大量数据进行处理,而不仅限于题目所给的有限个数据

自定义类型变量的定义程序如下:

PrivateTypestudType'自定义类型变量的声明

aclassAsString'定义数据类型

ascoreAsInteger

EndType

PrivateTypestudtype1

bclassAsString

bscoreAsInteger

EndType

自定义类型动态数组程序如下:

Open"file11.txt"ForInputAs#1

DimCountAsInteger,SumAsInteger,AverageAsSingle

Dimstud()AsstudType

Dimstud1()Asstudtype1'定义两个动态数组

DoWhileNotEOF

(1)'统计学生数

Input#1,No,Nam,Class,Score

Count=Count+1

Loop

n=Count

ReDimstud(n-1)'根据统计确定数组下标

Close#1

Open"file11.txt"ForInputAs#1

DoWhileNotEOF

(1)

Input#1,No,Nam,Class,Score

Withstud(i)'将每名学生的班级和分数导入数组

.aclass=Class

.ascore=Score

EndWith

i=i+1

Loop

Close#1

3算法

本题关键在于计算各个班级的平均分时如何从全部班级中把不同的班级挑选出来。

在这里,我先将这组数中班级数相同的只保留一个,其他的都强行赋为0值,例如将数组(3,2,6,3,6,5,9,2,8,1,6)可变为(3,2,6,0,0,5,9,0,8,1,0).然后再利用原数组与变换后的数组进行比较,这样就可以将相同班级的同学选出来进行求平均值。

程序段如下:

n=UBound(stud)

Fori=0Ton-1

Ifstud(i).aclass=0ThenGoTonotm

Forj=i+1Ton'将班级号相同的只班留一个,其他赋0值

Ifstud(j).aclass=stud(i).aclassThenstud(j).aclass=0

Else

stud(i).aclass=stud(i).aclass

EndIf

Nextj

notm:

Nexti

ReDimstud1(n)Asstudtype1

i=0

Open"file11.txt"ForInputAs#1'重新打开文件将数据导入另一个动态数组中

DoWhileNotEOF

(1)

Input#1,No,Nam,Class,Score

Withstud1(i)

.bclass=Class

.bscore=Score

EndWith

i=i+1

Loop

Close#1

Count=0

Score=0

Forj=0Ton

Fori=0Ton

Ifstud(j).aclass=stud1(i).bclassThen'通过比较两个数组计算各班平均成绩

Count=Count+1

Score=Score+stud1(i).bscore

EndIf

Nexti

 

主界面截图

总结

这次课设我的题目是数据统计,通过这次课设让我对顺序文件的打开读取等语句和函数以及自定类型动态数组的应用更加熟练,并且对编程有了更加深刻的理解。

在课设过程中,我遇到了重重困难,例如:

如何把不同的班级从全部班级中挑选出来的算法。

在参考别的同学的基础上,我有总结出了与他们不同的算法,使得程序更加简洁明了,运行更加流畅,完美的解决了题目中所要求的问题。

完整的源程序

Form1

PublicNo$,Nam$,Class$,Score%

PrivateTypestudType

aclassAsString

ascoreAsInteger

EndType

PrivateTypestudtype1

bclassAsString

bscoreAsInteger

EndType

PrivateSubCommand1_Click()

Open"file11.txt"ForInputAs#1

DimCountAsInteger

DoWhileNotEOF

(1)

LineInput#1,inputdata

Text1.Text=Text1.Text+inputdata+vbCrLf

Count=Count+1

Loop

Text2.Text=Count

Close#1

EndSub

PrivateSubCommand2_Click()

Open"file11.txt"ForInputAs#1

DimCountAsInteger,SumAsLong,AverageAsSingle

DoWhileNotEOF

(1)

Input#1,No,Nam,Class,Score

Count=Count+1

Sum=Sum+Score

Loop

Close#1

Average=Sum/Count

Text3.Text=Average

EndSub

PrivateSubCommand3_Click()

Open"file11.txt"ForInputAs#1

DimCountAsInteger,SumAsInteger,AverageAsSingle

Dimstud()AsstudType

Dimstud1()Asstudtype1

DoWhileNotEOF

(1)'统计班级数,定义动态数组

Input#1,No,Nam,Class,Score

Count=Count+1

Loop

n=Count

ReDimstud(n-1)

Close#1

Open"file11.txt"ForInputAs#1

DoWhileNotEOF

(1)

Input#1,No,Nam,Class,Score

Withstud(i)

.aclass=Class

.ascore=Score

EndWith

i=i+1

Loop

Close#1

n=UBound(stud)

Fori=0Ton-1

Ifstud(i).aclass=0ThenGoTonotm

Forj=i+1Ton

Ifstud(j).aclass=stud(i).aclassThen

stud(j).aclass=0

Else

stud(i).aclass=stud(i).aclass

EndIf

Nextj

notm:

Nexti

ReDimstud1(n)Asstudtype1

i=0

Open"file11.txt"ForInputAs#1

DoWhileNotEOF

(1)

Input#1,No,Nam,Class,Score

Withstud1(i)

.bclass=Class

.bscore=Score

EndWith

i=i+1

Loop

Close#1

Count=0

Score=0

Forj=0TonFori=0Ton

Ifstud(j).aclass=stud1(i).bclassThen

Count=Count+1

Score=Score+stud1(i).bscore

EndIf

Nexti

Ifstud(j).aclass<>0Then

Average=Score/Count

Text4.Text=Text4.Text&stud(j).aclass&"班的平均分为:

"&Format(Average,"0.00")&vbCrLf

Else

j=j+1

EndIf

Count=0

Score=0

Nextj

EndSub

PrivateSubCommand4_Click()

i=MsgBox("确定退出?

",1,"警告")

Ifi=1Then

End

EndIf

Text2.SetFocus

EndSub

PrivateSubCommand5_Click()

Text1.Text=""

Text2.Text=""

Text3.Text=""

Text4.Text=""

EndSub

 

参考文献

[1]龚沛曾杨志强陆慰民.《VisualBasic程序设计教程》.北京:

高等教育出版社,2007年3月第3版

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

当前位置:首页 > 外语学习 > 法语学习

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

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