VB程序设计实验报告

时间:2024.4.13

长江大学

计算机上机实习报告

姓名:梁智荣

序号:11

学号:200903812

班级:油工 10905班

指导老师: 任老师 张老师

日期:20##-12-16

                    目录

一:系统名称:学生成绩管理系统的

设计与实现

二:设计目的

三:程序摘要

四:系统设计流程

五:相关数据列表

六:小结

七:程序代码

        

(1)模块代码

        

(2)窗体代码

一.系统名称:学生成绩管理系统的设计与实现

二.设计目的

1.  熟悉VB 6.0的开发环境,掌握基本的编程方法,熟悉用VB语言完成一个应用程序的设计过程,掌握有关编辑和调试程序的方法和技巧;

2. 主要掌握VB语言中的结构体﹑指针及文件操作等内容

3. 了解开发简单应用程序的全过程,包括:分析﹑设计﹑编程﹑调试和编写报告.

三.程序摘要

先在记事本中创建2个文本文档,分别输入本班24名学生在本学期的5门考试课的成绩和课程名及其学分.在主函数中读入两个原始数据文件的内容,保存在对应的结构体数组中,计算出每个学生5门课的加权平均分,并按平均分排列名次.然后显示菜单,调用各个函数,完成以下功能:

1. 用VB语言创建一个数据文件,文件名为:“VB课程设计”,用来存放班级的成绩表.

2. 分别统计全班每门课的平均分和标准差,并计算各分数段(90分以上;80~90;70~79;60~69;60分以下)的学生数

3. 用VB语言创建一个数据文件,文件名为:“VB课程设计”,用来存放编号,课程名称,课程平均分,标准差,优秀,良好,中等,及格,不及格.

4. 打印每名学生成绩条,结果存放到用VB语言创建的一个数据文件中,成绩条格式为名次,学号,姓名,英语,数学,VB语言,物理,化学

5. 屏幕显示所有存在不及格课程的学生的名单(含学号,不及格课程名称,课程的学分及成绩)

6. 屏幕显示优等生名单(含学号,N门课成绩,平均分,名次),优等生条件:

a) 平均分>=90分

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

c) 平均分>=85分,并且至少有一门课的成绩>=95

四、系统设计流程

五.相关数据列表

1、原始成绩表

2、课程及学分

3、计算加权平均分

4、按平均分排名次

5、打印每位同学的成绩条

6、打印不及格的人

7、打印优等生情况

8、每门课的平均分

9、各分数段人数

六.小结   

在这次上机实习过程中,我了解了程序在Visual VB  6.0中调试并运的方法,并上机实践解决了一些平时没有机会解决和一些曾经被自己忽视的问题,如程序的排序对结果显示影响,标点符号对程序结果的影响,并养成了仔细检查程序的好习惯,加强了自己动手的能力。但通过这次上机                                                                                           让我看到了自己在VB学习中的漏洞,不过看到自己亲自编出的程序,心里非常高兴,这要特别感谢我的辅导老师们的耐心讲解,细心的帮助我调试程序。感谢学校老师给我们这样的机会,它有利于培养我们独立思考,求异思维的能力。我深信这次课程设计,对我的VB学习以及今后的计算机等级考试的学习和考试会起到很大的促进作用,我从中看到了自己还有很多的不足,在这里真心的感谢两位老师的耐心的指点,今后我会更加努力学好计算机方面的知识!总之,这次实习让我受益良多,我更深的体会了细节决定成败,无论在以后上机还是学习做事中,我一定注意细节。希望学校多给我们这样动手实践的机会,让我们在实践中发现问题,解决问题。我会珍惜加倍这样难得的机会

七、程序代码

1、模块代码

Type xscjb

  xh  As String

  xm As String

  cj(1 To 5) As Integer

  aver As Single

  mc As Integer

  End Type

Type kechen

  编号  As Integer

  课程名称 As String

  课程学分 As Single

  aver As Single

End Type

Public stu() As xscjb

Public ke() As kechen

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

Public str As String

2、窗体代码

Private Sub Form_Load()

Dim st1$(), str1$

Open App.Path + "\chengji.txt" For Input As #1

Open App.Path + "\kecheng.txt" For Input As #2

N = 0: M = 0: Zxf = 0 '总人数,课程数,总学分

Line Input #2, str1

Do While Not EOF(2)

  M = M + 1

  ReDim Preserve ke(M)

  Line Input #2, str1

  'Text1 = Text1 & vbCrLf & str1

  str1 = Trim(str1)

  str1 = space1(str1)

  st1 = Split(str1, " ")

  'Print st1(0), st1(1)

   ke(M).编号 = st1(0)

   ke(M).课程名称 = st1(1)

   ke(M).课程学分 = st1(2)

   Zxf = Zxf + ke(M).课程学分

Loop

Line Input #1, str1

'Text1 = str1

 Do While Not EOF(1)

  N = N + 1

  ReDim Preserve stu(N)

  Line Input #1, str1

  'Text1 = Text1 & vbCrLf & str1

  str1 = Trim(str1)

  str1 = space1(str1)

  st1 = Split(str1, " ")

  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)

    stu(N).aver = 0

    stu(N).mc = 0

Loop

End Sub

Public Function space1(ByVal sss As String)

  Dim x%

  x = InStr(sss, "  ")

  Do While x > 0

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

    x = InStr(sss, "  ")

  Loop

  space1 = sss

End Function

Private Sub yuancj_Click()

  Dim i%

  Cls

  Print "学号       姓名       化学       工程制图     线代       VB      物理"

  For i = 1 To N

    Print stu(i).xh; Tab(12); stu(i).xm; Tab(22); stu(i).cj(1);

    Print Tab(36); stu(i).cj(2); Tab(46); stu(i).cj(3); Tab(57); stu(i).cj(4);

    Print Tab(66); stu(i).cj(5); Tab(77)

  Next i

End Sub

Private Sub Average_Click() '计算加权平均分

  Dim i%

  For i = 1 To N

    stu(i).aver = 0

    For j = 1 To M

      stu(i).aver = stu(i).aver + stu(i).cj(j) * ke(j).课程学分

    Next j

    stu(i).aver = Round(stu(i).aver / Zxf, 2)

  Next i

   Cls

   Print "学号        姓名          平均分"

 For i = 1 To N

 Print stu(i).xh; Tab(12); stu(i).xm; Tab(26); stu(i).aver

 Next i

End Sub

Private Sub GRS_Click() '统计各分数段人数

Dim chengji(1 To 5, 1 To 5) As Integer

 Cls

 For j = 1 To M

  For i = 1 To N

Select Case stu(i).cj(j)

Case Is >= 90

 chengji(1, j) = chengji(1, j) + 1

Case 80 To 89

 chengji(2, j) = chengji(2, j) + 1

Case 70 To 79

 chengji(3, j) = chengji(3, j) + 1

Case 60 To 69

 chengji(4, j) = chengji(4, j) + 1

Case Is < 60

 chengji(5, j) = chengji(5, j) + 1

End Select

  Next i

Next j

Print " 范围      化学      工程制图        线代      VB      物理      "

Print "90分以上 "; Tab(12); chengji(1, 1); Tab(24); chengji(1, 2); Tab(37); chengji(1, 3); Tab(47); chengji(1, 4); Tab(55); chengji(1, 5)

Print "80-89分 "; Tab(12); chengji(2, 1); Tab(24); chengji(2, 2); Tab(37); chengji(2, 3); Tab(47); chengji(2, 4); Tab(55); chengji(2, 5)

Print "70-79分 "; Tab(12); chengji(3, 1); Tab(24); chengji(3, 2); Tab(37); chengji(3, 3); Tab(47); chengji(3, 4); Tab(55); chengji(3, 5)

Print "60-69分"; Tab(12); chengji(4, 1); Tab(24); chengji(4, 2); Tab(37); chengji(4, 3); Tab(47); chengji(4, 4); Tab(55); chengji(4, 5)

Print "59分以下"; Tab(12); chengji(5, 1); Tab(24); chengji(5, 2); Tab(37); chengji(5, 3); Tab(47); chengji(5, 4); Tab(55); chengji(5, 5)

End Sub

Private Sub minci_Click()

  Dim i%, j%, k%, ti%, ts$, tsn!, ii%, ave!, kk%

  For i = 1 To N

 

 

 stu(i).aver = 0

    For j = 1 To M

      stu(i).aver = stu(i).aver + stu(i).cj(j) * ke(j).课程学分

    Next j

    stu(i).aver = Round(stu(i).aver / Zxf, 2)

  Next i

  For i = 1 To N - 1

    k = i

    For j = i + 1 To N

      If stu(k).aver < stu(j).aver Then k = j

    Next j

    ts = stu(k).xh: stu(k).xh = stu(i).xh: stu(i).xh = ts

    ts = stu(k).xm: stu(k).xm = stu(i).xm: stu(i).xm = ts

    tsn = stu(k).aver: stu(k).aver = stu(i).aver: stu(i).aver = tsn

    For ii = 1 To M

      ti = stu(k).cj(ii): stu(k).cj(ii) = stu(i).cj(ii): stu(i).cj(ii) = ti

    Next ii

  Next i

  k = 1:  ave = stu(1).aver

  For i = 1 To N

    If stu(i).aver = ave Then

    stu(i).mc = k

    Else

     ave = stu(i).aver

     k = k + 1

     stu(i).mc = k

     End If

  Next i

  Cls

  Print "学号      姓名      名次"

 For i = 1 To N

  Print stu(i).xh; Tab(12); stu(i).xm; Tab(22); stu(i).mc

 Next i

End Sub

Private Sub MPJ_Click()

Dim i%, j%

  For j = 1 To M

  ke(j).aver = 0

  For i = 1 To N

  ke(j).aver = ke(j).aver + stu(i).cj(j)

  Next i

  ke(j).aver = Round(ke(j).aver / N, 2)

  Next j

 Cls

 Print "  化学      工程制图       线代      VB      物理"

 Print ke(1).aver; Tab(13); ke(2).aver; Tab(26); ke(3).aver; Tab(36); ke(4).aver; Tab(45); ke(5).aver

 End Sub

Private Sub Print59_Click()

Dim i%

 Cls

 Print "学号       姓名     课程名称     课程学分     成绩"

 For i = 1 To N

   For j = 1 To M

  If stu(i).cj(j) <= 59 Then

 Print stu(i).xh; Tab(12); stu(i).xm; Tab(21); ke(j).课程名称; Tab(35); ke(j).课程学分; Tab(47); stu(i).cj(j)

  End If

   Next j

  Next i

End Sub

Private Sub printall_Click()

Dim i%, j%, k%, ti%, ts$, tsn!, ii%, ave!, kk%

For i = 1 To N

    stu(i).aver = 0

    For j = 1 To M

      stu(i).aver = stu(i).aver + stu(i).cj(j) * ke(j).课程学分

    Next j

    stu(i).aver = Round(stu(i).aver / Zxf)

  Next i

  For i = 1 To N - 1

    k = i

    For j = i + 1 To N

      If stu(k).aver < stu(j).aver Then k = j

    Next j

    ts = stu(k).xh: stu(k).xh = stu(i).xh: stu(i).xh = ts

    ts = stu(k).xm: stu(k).xm = stu(i).xm: stu(i).xm = ts

    tsn = stu(k).aver: stu(k).aver = stu(i).aver: stu(i).aver = tsn

    For ii = 1 To M

      ti = stu(k).cj(ii): stu(k).cj(ii) = stu(i).cj(ii): stu(i).cj(ii) = ti

    Next ii

  Next i

  k = 1:  ave = stu(1).aver

  For i = 1 To N

    If stu(i).aver = ave Then

      stu(i).mc = k

    Else

     ave = stu(i).aver

     k = k + 1

   

     stu(i).mc = k

    End If

  Next i

  Cls

  Print "学号       姓名      化学      工程制图      线代        VB      物理       平均分    名次"

  For i = 1 To N

    Print stu(i).xh; Tab(12); stu(i).xm; Tab(22); stu(i).cj(1);

    Print Tab(36); stu(i).cj(2); Tab(46); stu(i).cj(3); Tab(57); stu(i).cj(4);

    Print Tab(66); stu(i).cj(5); Tab(77); stu(i).aver; Spc(6); stu(i).mc

  Next i

End Sub

Private Sub PrintCJD_Click()

Dim i%, j%, k%, ti%, ts$, tsn!, ii%, ave!, kk%

For i = 1 To N

    stu(i).aver = 0

    For j = 1 To M

      stu(i).aver = stu(i).aver + stu(i).cj(j) * ke(j).课程学分

    Next j

    stu(i).aver = Round(stu(i).aver / Zxf, 2)

  Next i

  For i = 1 To N - 1

    k = i

    For j = i + 1 To N

      If stu(k).aver < stu(j).aver Then k = j

    Next j

    ts = stu(k).xh: stu(k).xh = stu(i).xh: stu(i).xh = ts

    ts = stu(k).xm: stu(k).xm = stu(i).xm: stu(i).xm = ts

    tsn = stu(k).aver: stu(k).aver = stu(i).aver: stu(i).aver = tsn

    For ii = 1 To M

      ti = stu(k).cj(ii): stu(k).cj(ii) = stu(i).cj(ii): stu(i).cj(ii) = ti

    Next ii

  Next i

  k = 1:  ave = stu(1).aver

  For i = 1 To N

    If stu(i).aver = ave Then

      stu(i).mc = k

    Else

     ave = stu(i).aver

     k = k + 1

     stu(i).mc = k

    End If

  Next i

  Cls

 For i = 1 To N

    Print "学号       姓名       化学      工程制图      线代      VB      物理        平均分     名次"

    Print stu(i).xh; Tab(12); stu(i).xm; Tab(22); stu(i).cj(1);

    Print Tab(36); stu(i).cj(2); Tab(46); stu(i).cj(3); Tab(57); stu(i).cj(4);

    Print Tab(66); stu(i).cj(5); Tab(77); stu(i).aver; Tab(85); Tab(90); stu(i).mc

  Next i

End Sub

Private Sub PrintGood_Click()

 Dim i%, j%, k%, ti%, ts$, tsn!, ii%, ave!, kk%

 For i = 1 To N

    stu(i).aver = 0

    For j = 1 To M

      stu(i).aver = stu(i).aver + stu(i).cj(j) * ke(j).课程学分

    Next j

    stu(i).aver = Round(stu(i).aver / Zxf, 2)

  Next i

  For i = 1 To N - 1

    k = i

    For j = i + 1 To N

      If stu(k).aver < stu(j).aver Then k = j

    Next j

    ts = stu(k).xh: stu(k).xh = stu(i).xh: stu(i).xh = ts

    ts = stu(k).xm: stu(k).xm = stu(i).xm: stu(i).xm = ts

    tsn = stu(k).aver: stu(k).aver = stu(i).aver: stu(i).aver = tsn

    For ii = 1 To M

      ti = stu(k).cj(ii): stu(k).cj(ii) = stu(i).cj(ii): stu(i).cj(ii) = ti

    Next ii

  Next i

  k = 1:  ave = stu(1).aver

  For i = 1 To N

    If stu(i).aver = ave Then

      stu(i).mc = k

    Else

     ave = stu(i).aver

     k = k + 1

     stu(i).mc = k

    End If

  Next i

 Cls

 Print "学号       姓名      化学       工程制图      线代      VB       物理       平均分      名次"

 For i = 1 To N

  For j = 1 To M

 If stu(i).cj(j) >= 95 And stu(i).aver >= 85 Then s = s + 1

 Next j

flag = s >= 2 Or stu(i).aver >= 90 Or stu(i).mc <= 3

If flag Then

    Print stu(i).xh; Tab(12); stu(i).xm; Tab(22); stu(i).cj(1);

    Print Tab(36); stu(i).cj(2); Tab(46); stu(i).cj(3); Tab(57); stu(i).cj(4);

    Print Tab(66); stu(i).cj(5); Tab(77); stu(i).aver; Tab(85); Tab(90); stu(i).mc

 End If

 s = 0

 Next i

End Sub

Private Sub yaunkc_Click()

  Dim i%

  Cls

  Print "编号  课程名称     课程学分"

  For i = 1 To M

    Print ke(i).编号; Tab(7); ke(i).课程名称; Tab(22); ke(i).课程学分

  Next i

End Sub

更多相关推荐:
C++程序设计实验报告

C++程序设计实验报告学号:姓名:班级:指导老师:实验一、字符和格式的输出实验一,实验目的1、重点把握各种内部数据类型、数值和逻辑运算,各种表达式、函数声明、定义和调用。2、掌握过程控制编程方法,正确编制多重循…

程序设计实验报告模板

C语言程序设计实验报告1实验目的(1)掌握函数的定义方法、调用方法、参数说明以及返回值;(2)掌握实参与形参的对应关系,以及参数之间的值传递的方式;(3)掌握函数的嵌套调用及递归调用的设计方法;(4)在编程过程…

Java程序设计实验报告

学生实验报告册(理工类)课程名称:JAVA程序设计实验专业班级:M11计算机科学与技术II学生学号:学生姓名:所属院部:XX学院指导教师:20XX20XX学年第二学期金陵科技学院教务处制实验报告书写要求实验报告…

程序设计综合实验报告册

西南交通大学程序设计综合实验实验地点实验学期学生班级学生学号学生姓名任课教师龚勋信息科学与技术学院20xx年4月实验一ATM机用户操作界面业务逻辑编写实验目的及内容1根据ATM的工作流程编写用户界面掌握文本用户...

C程序设计实验报告

C语言程序设计实验报告学号不告诉你哦班级信管一班姓名你猜猜哈哈一实验题目一编程实验猜数问题输入两个整数并求这两个整数的和输入所猜的结果如果输入数比正确的结果要大提示猜大了如果输入数比正确的结果要小提示猜小了当猜...

C程序设计实验报告5

工学院工业设计专业10级20xx至20xx学年度第1学期学号2104021638姓名杨芹芹20xx年9月22日第34节综合楼325教室

C程序设计实验报告2

院专业20xx级20xx至20xx学年度第1学期学号姓名20xx年9月22日第34节综合楼325教室

《高级语言程序设计》实验报告(必看)

高级语言程序设计实验报告

c++程序设计实验报告实验一

C实验报告课程名称C程序设计成绩评定实验项目名称几何形体练习1指导教师实验项目编号1实验项目类型实验地点学生姓名学号学院计算机与信息工程学院专业计算机科学与技术实验时间20xx年11月26日一实验目的熟悉掌握类...

C++程序设计实验报告

C实验报告实验一1实验要求1编写一个函数把华氏温度转换为摄氏温度转换公式如下CF32592编写重载函数Max1可分别求两个整数三个整数两个双精度数三个双精度数的最大值3使用系统函数powxy计算xy的值注意包含...

C程序设计实验报告3-

院专业20xx级20xx至20xx学年度第1学期学号姓名20xx年10月8日第34节综合楼325教室

C++描述程序设计实验报告

《程序设计基础》实验报告实验一面向过程的简单程序设计1.实验目的掌握C++语言的数据类型(包括对各种数据类型变量的定义、初始化、赋值等)、运算符和表达式的使用。掌握赋值语句的使用。掌握数据的输入输出方法。2.实…

程序设计实验报告(37篇)