数据统计.docx

上传人:b****8 文档编号:11041142 上传时间:2023-02-24 格式:DOCX 页数:12 大小:102.54KB
下载 相关 举报
数据统计.docx_第1页
第1页 / 共12页
数据统计.docx_第2页
第2页 / 共12页
数据统计.docx_第3页
第3页 / 共12页
数据统计.docx_第4页
第4页 / 共12页
数据统计.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

数据统计.docx

《数据统计.docx》由会员分享,可在线阅读,更多相关《数据统计.docx(12页珍藏版)》请在冰豆网上搜索。

数据统计.docx

数据统计

沈阳航空工业学院

课程设计

学号__________

班级__________

姓名__________

指导教师__________

年月日

沈阳航空工业学院

课程设计任务书

学院:

机电专业:

机械班级:

94060108

学号:

2009040601292题目:

数据统计

一、课程设计时间

2011年3月14~18日(第2周),共计1周,20学时。

二、课程设计内容

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

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

请完成一下问题:

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

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

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

三、课程设计要求

程序质量:

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

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

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

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

课程设计说明书:

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

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

四、指导教师和学生签字

指导教师:

________学生签名:

________

五、成绩

六、教师评语

目录

需求分析4

设计分析4

关键技术6

总结8

完整的源程序8

参考文献11

需求分析

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

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

要求:

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

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

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

设计分析

(1)基本原理:

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

(2)总体设计:

(3)详细设计:

关键技术

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

PrivateSubCommand1_Click()

DimCountAsInteger

Open"H:

\教师课件\刘成\课设\VB\数据\file11_数据统计.txt"ForInputAs#1‘打开文件;用于读取数据,文件号为1

DoWhileNotEOF

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

LineInput#1,LineData‘从1号文件中读出一行

PrintLineData

Loop

Close#1‘关闭文件

Print"总人数为:

";Count

EndSub

2自定义类型动态数组

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

TypestudType‘studType为自定义类型名

anoAsString*12

aclassAsString*7

ascoreAsInteger

anameAsString

EndType

Typestudtype1

bclassAsString*7

bscoreAsInteger

EndType

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

Open"H:

\教师课件\刘成\课设\VB\数据\file11_数据统计.txt"ForInputAs#1

DimNoAsString,ClassAsString,ScoreAsInteger,NameAsString

DimCountAsInteger,SumAsInteger,AverageAsSingle

Dimstud()AsstudType‘声明动态数组

DoWhileNotEOF

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

Input#1,No,Class,Score,Name

Count=Count+1

Loop

n=Count

ReDimstud(n-1)

Close#1

Open"H:

\教师课件\刘成\课设\VB\数据\file11_数据统计.txt"ForInputAs#1

DoWhileNotEOF

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

Input#1,No,Class,Score,Name

Withstud(i)

.aclass=Class

.ascore=Score

EndWith

i=i+1

Loop

Close#1

3算法

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

例如如何从(2、5、5、8)四个数中把不同的数挑选出来,可以用后一个与前一个比较,若相同则舍去,若不同则挑选出来。

稍微变一下数的排列顺序,挑选算法也要加以变化。

例如变为(5、2、5、8),只用后一个与前一个相比较就挑选不出来了,可以先把(5、2、5、8)用冒泡法排序为(2、5、5、8)后再进行挑选。

挑选班级也可以如此,把班级看作一个七位数,就可以用以上方法进行挑选。

程序段如下:

n=UBound(stud)

Fori=0Ton'比较班级号的大小,使数组按班级号由小到大排列

imin=i

Forj=i+1Ton-1

Ifstud(imin).aclass>stud(j).aclassThenimin=j

Nextj

m=stud(i).aclass:

stud(i).aclass=stud(imin).aclass:

stud(imin).aclass=m

Nexti

Dimstud1(999)Asstudtype1

Withstud1(0)

.bclass=stud(0).aclass

EndWith

s=0

Fori=1Ton'依次比较班级号,确定班级的个数

Ifstud1(s).bclass<>stud(i).aclassThen

s=s+1

stud1(s).bclass=stud(i).aclass

EndIf

Nexti

总结

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

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

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

通过老师的指点和与同学的讨论,我克服了困难,顺利的完成了任务。

同时我也了解了VB的出现是一场技术革命,它在生活中各个方面都能发挥巨大的作用,所以,学好VB是社会发展的需要。

完整的源程序

Form1

PrivateSubCommand1_Click()

DimCountAsInteger

Open"H:

\教师课件\刘成\课设\VB\数据\file11_数据统计.txt"ForInputAs#1

DoWhileNotEOF

(1)

LineInput#1,LineData

PrintLineData

Count=Count+1

Loop

Close#1

Print"总人数为:

";Count

EndSub

PrivateSubCommand2_Click()

Open"H:

\教师课件\刘成\课设\VB\数据\file11_数据统计.txt"ForInputAs#1

DimNoAsString,ClassAsString,ScoreAsInteger,NameAsString

DimCountAsInteger,SumAsInteger,AverageAsSingle

DoWhileNotEOF

(1)

Input#1,No,Class,Score,Name

Count=Count+1

Sum=Sum+Score

Loop

Average=Sum/Count

Print"总平均分为:

";Average

Close#1

EndSub

PrivateSubCommand3_Click()

Open"H:

\教师课件\刘成\课设\VB\数据\file11_数据统计.txt"ForInputAs#1

DimNoAsString,ClassAsString,ScoreAsInteger,NameAsString

DimCountAsInteger,SumAsInteger,AverageAsSingle

Dimstud()AsstudType

DoWhileNotEOF

(1)Input#1,No,Class,Score,Name

Count=Count+1

Loop

n=Count

ReDimstud(n-1)

Close#1

Open"H:

\教师课件\刘成\课设\VB\数据\file11_数据统计.txt"ForInputAs#1

DoWhileNotEOF

(1)

Input#1,No,Class,Score,Name

Withstud(i)

.aclass=Class

.ascore=Score

EndWith

i=i+1

Loop

Close#1

n=UBound(stud)

Fori=0Ton

imin=i

Forj=i+1Ton-1

Ifstud(imin).aclass>stud(j).aclassThenimin=j

Nextj

m=stud(i).aclass:

stud(i).aclass=stud(imin).aclass:

stud(imin).aclass=m

Nexti

Dimstud1(999)Asstudtype1

Withstud1(0)

.bclass=stud(0).aclass

EndWith

s=0

Fori=1Ton

Ifstud1(s).bclass<>stud(i).aclassThen

s=s+1

stud1(s).bclass=stud(i).aclass

EndIf

Nexti

Count=0

Score=0

Fori=0Tos

Forj=0Ton

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

Count=Count+1

Score=Score+stud(j).ascore

EndIf

Nextj

Average=Score/Count

Printstud1(i).bclass;"班的平均分为:

";Average

Count=0

Score=0

Nexti

EndSub

PrivateSubCommand4_Click()

End

EndSub

PrivateSubCommand5_Click()

Cls

EndSub

Module1

TypestudType

anoAsString*12

aclassAsString*7

ascoreAsInteger

anameAsString

EndType

Typestudtype1

bclassAsString*7

bscoreAsInteger

EndType

参考文献

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

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

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

当前位置:首页 > 表格模板 > 合同协议

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

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