长江大学VB上机实习报告范本.docx

上传人:b****7 文档编号:25801736 上传时间:2023-06-14 格式:DOCX 页数:21 大小:625.15KB
下载 相关 举报
长江大学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上机实习报告范本

 

计算机上机实习报告

 

学院:

石油工程学院

班级:

储运11204

姓名:

魏亚荣

学号:

XXXXXXX

班内序号:

XX

指导教师:

XXX

 

1.系统名称-----------------------------------------------------------3

二.实习目的-----------------------------------------------------------3

三.系统功能概要-----------------------------------------------------3

四.系统设计分析-----------------------------------------------------3

五.窗体设计与程序代码-------------------------------------------5

六.心得体会----------------------------------------------------------16

 

一、系统名称----班级学生成绩管理系统

二、实习目的:

综合应用所学理论知识,联系实际开发一个具备简易功能的班级学生成绩管理系统。

熟悉程序编写与调试,熟悉数据文件的创建、打开、读写、关闭等相关操作,同时让我们熟悉VB6.0的开发环境,掌握基本的编程方法,熟悉用VB语言完成一个应用程序的设计过程,掌握有关编辑和调试程序的方法和技巧。

三、系统功能概要

1、用记事本新建一个文本文件,将本班的M名学生的有关信息及本学期的N门考试课的成绩(要求用假想分数,并要求将自己的每门课的放在第一列)输入到这个文件中,建议按如下形式存放(注:

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

序号姓名幸运日出生日期英语VB数学体育专业课

7作者自己81992.12.19991009898100

10张某61993.08.067776808985

5李某11994.11.168988999795

3王某61993.06.045676435477

2刘某31994.01.058287857989

1孙某21994.01.154556666568

4赵某51992.01.058296568555

6陈某31993.12.258686668687

9周某51666.12.235696655656

8钱某61994.03.035665565656

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

编号课程名称课程学分

1英语5.0

2vb程序设计4

3数学4.5

4体育3.0

5专业课10.0

1)找出“出生日”与幸运日相同的人,并打印出其信息(每行输出一个人信息)

2)统计出分别拥有幸运数字1,2,3,4,5,6,7,8,9,0的人数

3)能查出任何一个你感兴趣的人的信息

4)可新添加一个人的信息

5)和删除一个人的信息

6)可以对某个人的幸运数字进行修改,只改变其幸运数字,其他信息不变

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

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

学号姓名英语vb程序设计数学平均成绩名次

1张某76898980.52

2李某91966778.23

3王某75585688.81

4赵某58677768.54

8)分别统计全班每门课的平均分,并计算各分数段(60分以下;60~69;70~79;80~89;90分以上)的学生人数。

用VB创建一个新的数据文件,在该文件中存放数据的格式如下:

范围.英语VB.

>=9035.

80-891012.

..............................

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

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

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

优等生条件:

a)平均分90分

b)名次在本班位于前三名

c)平均分85分,并且有二门课的成绩都95分

选做内容:

打印每门课成绩分布图

说明:

所有输出结果应写入用VB创建的文件中,格式要整齐,并有适当的文字说明。

实习报告要求:

应包括分析设计与说明、部分过程(函数)的源程序清单、程序调试过程中遇到的问题及解决方法,有待改善或改进的意见,对本次实习的意见与建议、收获等。

其中原始数据及程序运行的结果应作为附录附于实习报告之后。

四、系统设计分析:

1、该成绩管理系统中要同时表示学生的学号、姓名、成绩等一些信息,及课程、课程学分等一些信息,由于每项信息的意义不同,数据类型也不同,但还要同时作为一个整体来描叙和处理,因此需要通过用户自定义来解决。

所以在编程之前新建一个标准模块用来定义自定义类型。

2、为了便于后面执行求加权平均分、排名等命令,在Form1发生Load事件时应将学生信息和课程信息读取并放到两个数组中,由于这两个数组在该管理系统的全程序都要用到,因此应定义为全局类型。

如是在标准模块中定义两个数组。

3、由于原始数据文件中相邻的两列之间空格的长短不一,因此在调用Split函数之前应窗体通用模块中自定义一个space1函数将原始数据文件中相邻的两列之间空格数变为相同。

4、在编写程序时,由于该系统的程序代码较多,因此在编写时要合理。

5、在打印成绩条、不及格名单、优等生等信息时,应边用write语句分别将数据存入一个新的文件中。

6、实习必须按着老师的严格要求完成所有的实习任务,并整理成文件打印。

五.窗体设计与程序代码

1.此次窗体设计使用了11个命令按钮分别对应不同的系统功能要求,具体界面如下

2.程序代码

⑴统计“出生日”与幸运日相同的人

Dimstu()Asstudent,n%,kc()Askecheng,x%

PrivateSubCommand1_Click()

Cls

Fori=1ToUBound(stu())

IfRight(stu(i).birthday,2)=stu(i).luckydayThen

Printstu(i).num;stu(i).name;stu(i).luckyday;stu(i).birthday;

Forj=1To5

Printstu(i).score(j);

Nextj

Print

EndIf

Nexti

EndSub

⑵统计不及格学生的名单

PrivateSubCommand10_Click()

Cls

Print"序号";Spc(3);"姓名";Spc(3);"成绩";Spc(3);"学分";Spc(3);"课程";

Fori=1ToUBound(stu())

Forj=1To5

Ifstu(i).score(j)<60Then

PrintTab(0);stu(i).num;Spc(3);stu(i).name;Spc

(2);stu(i).score(j);Spc(3);kc(j).xf;Spc(3);kc(j).km;

EndIf

Nextj

Nexti

EndSub

⑶打印优等生名单

PrivateSubCommand11_Click()

Cls

Print"学号""英语";Space(3);"VB";Space(3);"数学";Space(3);"体育";Space(3);"专业课";Space(3);"排名"

Dimzxf%,i%,j%,k%

Fori=1ToUBound(kc())

zxf=zxf+kc(i).xf

Nexti

Forj=1ToUBound(stu())

Fork=1To5

stu(j).average=stu(j).average+stu(j).score(k)*kc(k).xf/zxf

stu(j).average=Format(stu(j).average,"0.00")

Nextk

Nextj

Form=1ToUBound(stu())

stu(m).rank=1

Forn=1ToUBound(stu())

Ifstu(m).average

stu(m).rank=stu(m).rank+1

EndIf

Nextn

Nextm

Fori=1ToUBound(stu())

k=0

Forj=1To5

Ifstu(i).score(j)>=95Then

k=k+1

EndIf

Nextj

Ifstu(i).average>=90Orstu(i).rank<=3Or(stu(i).average>=85Andk>=2)Then

Printstu(i).num;Space(3);stu(i).name;

Form=1To5

Printstu(i).score(m);Spc(4);

Nextm

Printstu(i).rank

EndIf

Nexti

EndSub

⑷统计各幸运数字的人数

PrivateSubCommand2_Click()

Cls

Fori=0To9

Dimluckypeople%

Forj=1ToUBound(stu())

IfVal(stu(j).luckyday)=iThen

luckypeople=luckypeople+1

EndIf

Nextj

Print"幸运数字为"&i;"的人数为:

"&luckypeople

luckypeople=0

Nexti

EndSub

⑸查询信息

PrivateSubCommand3_Click()

Cls

DimrmAsString,i%,j%

rm=InputBox("请输入你想要查询的同学的姓名")

Fori=1ToUBound(stu())

IfTrim(stu(i).name)=rmThen

Printstu(i).num;stu(i).name;stu(i).luckyday;stu(i).birthday;

Forj=1To5

Printstu(i).score(j);

Nextj

EndIf

Nexti

EndSub

⑹添加信息

PrivateSubCommand4_Click()

Cls

DimxinxueshengAsString

xinxuesheng=InputBox("请依次按照序号,姓名,幸运日,出生日期,英语,vb,数学,体育,专业课的顺序输入新同学的信息,中间用空格隔开")

Open"e:

\vb作业1.txt"ForAppendAs#1

Print#1,xinxuesheng

Print

Close#1

DoWhileInStr(Trim(xinxuesheng),"")<>0

xinxuesheng=Replace(Trim(xinxuesheng),"","")

Loop

a=Split(xinxuesheng,"")

n=n+1

ReDimPreservestu(n)

stu(n).num=a(0)

stu(n).name=a

(1)

stu(n).luckyday=a

(2)

stu(n).birthday=a(3)

Fori=1To5

stu(n).score(i)=a(3+i)

Nexti

Fori=1ToUBound(stu())

Printstu(i).num;stu(i).name;stu(i).luckyday;stu(i).birthday;

Forj=1To5

Printstu(i).score(j);

Nextj

Print

Nexti

EndSub

⑺删除信息

PrivateSubCommand5_Click()

Cls

DimrmAsString

rm=InputBox("请输入你要删除的同学的姓名")

Fori=1Ton

IfTrim(stu(i).name)=rmThen

ExitFor

EndIf

Nexti

Forj=iTon-1

stu(j)=stu(j+1)

Nextj

ReDimPreservestu(n-1)

Fori=1ToUBound(stu())

Printstu(i).num;stu(i).name;stu(i).luckyday;stu(i).birthday;

Forj=1To5

Printstu(i).score(j);

Nextj

Print

Nexti

EndSub

⑻修改幸运数字

PrivateSubCommand6_Click()

Cls

DimrmAsString,shuziAsString,i%,j%

rm=InputBox("请输入你要修改的同学的姓名")

shuzi=InputBox("请输入你要修改后的幸运数字")

Fori=1ToUBound(stu())

IfTrim(stu(i).name)=rmThen

stu(i).luckyday=shuzi

Printstu(i).num;stu(i).name;stu(i).luckyday;stu(i).birthday;

Forj=1To5

Printstu(i).score(j);

Nextj

EndIf

Nexti

EndSub

⑼计算每个学生的平均分

PrivateSubCommand7_Click()

Cls

Dimzxf%,i%,j%,k%

Fori=1ToUBound(kc())

zxf=zxf+kc(i).xf

Nexti

Forj=1ToUBound(stu())

Fork=1To5

stu(j).average=stu(j).average+stu(j).score(k)*kc(k).xf/zxf

stu(j).average=Format(stu(j).average,"0.00")

Nextk

Nextj

Form=1ToUBound(stu())

stu(m).rank=1

Forn=1ToUBound(stu())

Ifstu(m).average

stu(m).rank=stu(m).rank+1

EndIf

Nextn

Nextm

Open"e:

\成绩单.txt"ForAppendAs#3

Print#3,"序号";Space(3);"姓名";Space(3);"幸运日";Space(3);"出生日期";Space(4);"数学";Space(4);"英语";Space(4);"vb";Space(4);"物理";Space(3);"专业课";Space(3);"平均分";Space(3);"排名"

Fori=1ToUBound(stu())

Print#3,

Print#3,stu(i).num;Space(3);stu(i).name;Space(3);stu(i).luckyday;Space(3);stu(i).birthday;Space(3);

Forj=1To5

Print#3,stu(i).score(j);Space(3);

Nextj

Print#3,stu(i).average;Space(3);stu(i).rank;

Nexti

Close#3

EndSub

⑽统计成绩分布

PrivateSubCommand8_Click()

Cls

Dimi%,j%,bsix%,ss%,se%,en%,anine%,a(1To25)AsInteger,b(1To5)AsInteger,c(1To5)AsInteger,d(1To5)AsInteger,e(1To5)AsInteger,o(1To5)AsInteger,p(1To5)AsInteger,q(1To5)AsInteger,r(1To5)AsInteger,s(1To5)AsInteger

Fori=1To5

kc(i).zf=0

Forj=1ToUBound(stu())

kc(i).zf=kc(i).zf+stu(j).score(i)

Nextj

kc(i).average=kc(i).zf/UBound(stu())

kc(i).average=Format(kc(i).average,"0.00")

Printkc(i).average

Nexti

Open"e:

\成绩分布.txt"ForAppendAs#4

Print#4,"范围";Space(8);"数学";Space(3);"英语";Space(3);"vb";Space(3);"物理";Space(3);"专业课"

Fori=1To5

Forj=1ToUBound(stu())

Ifstu(j).score(i)>=90Then

o(i)=o(i)+1

ElseIfstu(j).score(i)>=80Then

p(i)=p(i)+1

ElseIfstu(j).score(i)>=70Then

q(i)=q(i)+1

ElseIfstu(j).score(i)>=60Then

r(i)=r(i)+1

Else

s(i)=s(i)+1

EndIf

Nextj

Nexti

Print#4,">=90";Spc(8);

Fori=1To5

Print#4,o(i);Spc(4);

Nexti

Print#4,

Print#4,">=80";Spc(8);

Fori=1To5

Print#4,p(i);Spc(4);

Nexti

Print#4,

Print#4,">=70";Spc(8);

Fori=1To5

Print#4,q(i);Spc(4);

Nexti

Print#4,

Print#4,">=60";Spc(8);

Fori=1To5

Print#4,r(i);Spc(4);

Nexti

Print#4,

Print#4,"其他";Spc(8);

Fori=1To5

Print#4,s(i);Spc(4);

Nexti

Print#4,

Close#4

EndSub

⑾打印学生成绩条

PrivateSubCommand9_Click()

Dimstu(1To20)AsString

Open"e:

\成绩单.txt"ForInputAs#5

Fori=1To20

LineInput#5,stu(i):

Printstu(i)

Nexti

Close#5

EndSub

⑿文本信息的输入

PrivateSubForm_Load()

Dimstr1AsString,a()AsString,i%,str2AsString,b()AsString

Open"e:

\学生信息.txt"ForInputAs#1

LineInput#1,str1

Printstr1

DoWhileNotEOF

(1)

LineInput#1,str1

DoWhileInStr(Trim(str1),"")<>0

str1=Replace(Trim(str1),"","")

Loop

a=Split(str1,"")

n=n+1

ReDimPreservestu(n)

stu(n).num=a(0)

stu(n).name=a

(1)

stu(n).luckyday=a

(2)

stu(n).birthday=a(3)

Fori=1To5

stu(n).score(i)=a(3+i)

Nexti

Cls

Loop

Close#1

Open"e:

\学分.txt"ForInputAs#2

LineInput#2,str2

Printstr2

DoWhileNotEOF

(2)

LineInput#2,str2

DoWhileInStr(Trim(str2),"")<>0

str2=Replace(Trim(str2),"","")

Loop

b=Split(str2,"")

x=x+1

ReDimPreservekc(x)

kc(x).bh=Val(b(0))

kc(x).km=b

(1)

kc(x).xf=b

(2)

Loop

Close#2

Cls

EndSub

六.心得体会

1.通过这次上机实习,我受益匪浅,不仅更加熟悉VB的操作和运行环

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

当前位置:首页 > 高等教育 > 研究生入学考试

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

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