1、计算机上机实习报告长 江 大 学计算机上机实习报告学 校:长江大学 院 系:# 班 级:* 姓 名:* 序 号: 日 期:2013年1月4日辅导老师:#,#一. 实习目的1. 熟悉VB 6.0的开发环境,掌握基本的编程方法,熟悉用VB语言完成一个应用程序的设计过程,掌握有关编辑和调试程序的方法和技巧;2学习二维数组,一维数组,函数过程的定义及应用,字过程,自定义类型,单循环,多循环,标准模块的定义,菜单编辑器的使用,数据文件的创建与读写等。3. 了解开发简单应用程序的全过程,包括:分析设计编程调试和编写报告.二.实习内容(一)用记事本新建一个文本文件,将本班的M名学生在本学期的N门考试课的成绩
2、(要求用假想分数,并要求将自己的每门课的分数定在96分以上,放在第一列;而将别人的大多数课程分数都定在96分以下)输入到这个文件中,建议按如下形式存放(注:20=M=50,5=N=90 3 5 8090 10 12 3) 打印每名学生成绩条(并将结果存放到用VB创建的一个新的数据文件中)。 4) 打印所有存在不及格课程学生的名单(含学号,不及格课程名称,课程的学分及成绩)。 5) 打印优等生名单(含学号,N门课程成绩,平均分,名次)。 优等生条件:A) 平均分=90B) 名次在全班位于前三名 C)平均分=85,并且有二门课的成绩都=95三.系统设计流程图四 分析设计与说明:(一):首先,在记事
3、本上输入两份文件,即学生成绩表和课程学分表(二):存放学生的一些基本信息,如姓名,学号,成绩等,这就要在 VB中通过自定义类型来解决.(三):在标准模块中定义了学生的学号、姓名、各科的成绩和课程的名称和它对应的学分。(四):加权平均分用了双循环,排名用了数组的选择法,多循环等,每门课的平均分声明了两个数组加上双循环,求各分数段的学生人数是定义一个二维数组,读取相应的原 始文件,每个学生的成绩是结合平均分和班级名次代码求的,求优等生名单时定义一个逻辑字符并用选择语句求的。五.系统分析与实现过:(一)部分过程(函数)的源程序清单;程序调试过程中遇到的问题及解决办法由于每项信息的意义不同,数据类型也
4、不同,但还要同时作为一个整体来描述和处理,这种情况在VB中通过自定义类型来解决。在练习中将自定义过程放在模块中实现。VB中自定义类型通过Type语句来实现,形式如下:Type 自定义类型名 元素名1 As 数据类型名 元素名2 As 数据类型名End Type此次实习中定义的自定义过程如下:Type xscjb xh As String * 3 xm As String * 4 cj(1 To 4) As Single aver As Single rank As SingleEnd TypeType score bh As String kc As String xf As IntegerE
5、nd TypeFunction space1(ByVal sss As String) Dim x% x = InStr(sss, ) Do While x 0 sss = Replace(sss, , ) x = InStr(sss, ) Loop space1 = sssEnd Function(二):将两份txt文件中的内容读到程序中,一份是学生成绩表,一份是各个学科的学分。此次过程中用到input,其中要注意到两点:1 要实现数据读入,输出,用line input时应采用循环结构,即边读边打印。2 对数据处理,要注意数据类型。学生成绩表的读入:Private Sub informati
6、on_Click() Dim st$(), stri$ Open D:My Documents课设学生成绩.txt For Input As #1n = 0 Line Input #1, str1 Print str1 Do While Not EOF(1) n = n + 1 ReDim Preserve stu(n) Line Input #1, str1 str1 = Trim(str1): str1 = space1(str1) st = Split(str1, ) stu(n).xh = st(0): stu(n).xm = st(1) stu(n).cj(1) = st(2): s
7、tu(n).cj(2) = st(3) stu(n).cj(3) = st(4): stu(n).cj(4) = st(5) Print Space(1); stu(n).xh; Space(4); stu(n).xm; Print Space(3); stu(n).cj(1); Space(3); stu(n).cj(2); Print Space(3); stu(n).cj(3); Space(3); stu(n).cj(4) Loop Close #1End Sub学分的打印:Private Sub subject_Click()ClsOpen D:My Documents课设学分.tx
8、t For Input As #2Dim n%, i%n = 5For i = 1 To nLine Input #2, str1: Print str1 “循环结构打印”Next iClose #2End Sub在分割字符串之前先定义了一个函数过程space1,此过程的作用是将两个字符串之间的多个空格都改为一个。此过程的思想是在一行中查找两个空格,然后用一个空格将两个空格替换。循环若干次后变可以将多个空格改为一个空格,以便于下一步进行。程序代码如下:Public Function space1(ByVal sss As String) 自定义函数过程 Dim x% x = InStr(sss
9、, ) 查找两个空格 Do While x 0 找到两个空格 sss = Replace(sss, , ) 用一个空格取代两个空格 x = InStr(sss, ) 继续查找两个空格 Loop space1 = sss 函数返回值End Function成绩表和课程学分显示结果 (三)计算加权分,此时需要将四门课学分读入,用一个动态数组将各科的学分存储在其中。学分的读入:Private Sub 加权average_Click()ClsDim st$(), stri$, cd$() Open D:My Documents课设学分.txt For Input As #2 n = 0 Do Whil
10、e Not EOF(2) n = n + 1 ReDim Preserve sb(n) Line Input #2, str2 str2 = Trim(str2): str2 = space1(str2) cd = Split(str2, ) sb(n).bh = cd(0) sb(n).kc = cd(1) sb(n).xf = Val(cd(2) 注意此时应将字符型数据转化为数值型 Loop 求加权平均分:Open D:My Documents课设学生成绩.txt For Input As #1 Line Input #1, str1 Print str1 & 平均分 n = 0 Do W
11、hile Not EOF(1) n = n + 1 ReDim Preserve stu(n) Line Input #1, str1 str1 = Trim(str1): str1 = space1(str1) st = Split(str1, ) stu(n).xh = st(0): stu(n).xm = st(1) stu(n).cj(1) = st(2): stu(n).cj(2) = st(3) stu(n).cj(3) = st(4): stu(n).cj(4) = st(5) stu(n).aver = (stu(n).cj(1) * sb(1).xf + stu(n).cj(
12、2) * sb(2).xf + stu(n).cj(3) * sb(3).xf + stu(n).cj(4) * sb(4).xf) / (sb(1).xf + sb(2).xf + sb(3).xf + sb(4).xf) Print Space(1); stu(n).xh; Space(4); stu(n).xm; Print Space(3); stu(n).cj(1); Space(3); stu(n).cj(2); Print Space(3); stu(n).cj(3); Space(3); stu(n).cj(4); Space(4); Format(stu(n).aver, 0
13、0.00) Loop加权平均分运行结果(四)计算排名 1.利用算出来的加权平均分来排名 2.将每个人的名次构成一个数组Private Sub rank_Click()ClsDim st$(), stri$, cd$(), i%, j%, k%Dim rank() As Integer Open D:My Documents课设学分.txt For Input As #2 n = 0 Do While Not EOF(2) n = n + 1 ReDim Preserve sb(n) Line Input #2, str2 str2 = Trim(str2): str2 = space1(str2) cd = Split(str2, )
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1