1、河南工业大学计算机上机实习报告 姓名:张翼飞 序号:11学号:201048060413班级:食工 1004班指导老师: 任老师 张老师日期:2011-03-05 目录一:系统名称:学生成绩管理系统的设计与实现二:设计目的三:程序摘要四:系统设计流程五:相关数据列表六:小结七:程序代码 (1)模块代码 (2)窗体代码一.系统名称:学生成绩管理系统的设计与实现二.设计目的1.熟悉VB 6.0的开发环境,掌握基本的编程方法,熟悉用VB语言完成一个应用程序的设计过程,掌握有关编辑和调试程序的方法和技巧;2. 主要掌握VB语言中的结构体指针及文件操作等内容3. 了解开发简单应用程序的全过程,包括:分析设
2、计编程调试和编写报告.三.程序摘要先在记事本中创建2个文本文档,分别输入本班24名学生在本学期的5门考试课的成绩和课程名及其学分.在主函数中读入两个原始数据文件的内容,保存在对应的结构体数组中,计算出每个学生5门课的加权平均分,并按平均分排列名次.然后显示菜单,调用各个函数,完成以下功能:1 用VB语言创建一个数据文件,文件名为:“VB课程设计”,用来存放班级的成绩表.2 分别统计全班每门课的平均分和标准差,并计算各分数段(90分以上;8090;7079;6069;60分以下)的学生数3 用VB语言创建一个数据文件,文件名为:“VB课程设计”,用来存放编号,课程名称,课程平均分,标准差,优秀,
3、良好,中等,及格,不及格.4 打印每名学生成绩条,结果存放到用VB语言创建的一个数据文件中,成绩条格式为名次,学号,姓名,英语,数学,VB语言,物理,化学5 屏幕显示所有存在不及格课程的学生的名单(含学号,不及格课程名称,课程的学分及成绩)6 屏幕显示优等生名单(含学号,N门课成绩,平均分,名次),优等生条件:a) 平均分=90分b) 名次在本班位于前三名c) 平均分=85分,并且至少有一门课的成绩=95四、系统设计流程 系 统 功 能加 权 平 均 分每 门 课 的 平 均 分打 印 学 生 成 绩 总 表成 绩 条不 及 格 学 生 情 况优 秀 学 生 情 况五.相关数据列表1、原始成绩
4、表2、课程及学分3、计算加权平均分4、按平均分排名次5、打印每位同学的成绩条6、打印不及格的人7、打印优等生情况8、每门课的平均分9、各分数段人数六小结 在这次上机实习过程中,我了解了程序在Visual VB 6.0中调试并运的方法,并上机实践解决了一些平时没有机会解决和一些曾经被自己忽视的问题,如程序的排序对结果显示影响,标点符号对程序结果的影响,并养成了仔细检查程序的好习惯,加强了自己动手的能力。但通过这次上机 让我看到了自己在VB学习中的漏洞,不过看到自己亲自编出的程序,心里非常高兴,这要特别感谢我的辅导老师们的耐心讲解,细心的帮助我调试程序。感谢学校老师给我们这样的机会,它有利于培养我
5、们独立思考,求异思维的能力。我深信这次课程设计,对我的VB学习以及今后的计算机等级考试的学习和考试会起到很大的促进作用,我从中看到了自己还有很多的不足,在这里真心的感谢两位老师的耐心的指点,今后我会更加努力学好计算机方面的知识!总之,这次实习让我受益良多,我更深的体会了细节决定成败,无论在以后上机还是学习做事中,我一定注意细节。希望学校多给我们这样动手实践的机会,让我们在实践中发现问题,解决问题。我会珍惜加倍这样难得的机会七、程序代码1、模块代码Type xscjb xh As String xm As String cj(1 To 5) As Integer aver As Single m
6、c As Integer End TypeType kechen 编号 As Integer 课程名称 As String 课程学分 As Single aver As SingleEnd TypePublic stu() As xscjbPublic ke() As kechenPublic N%, M%, Zxf% 总人数,课程数,总学分Public str As String2、窗体代码Private Sub Form_Load()Dim st1$(), str1$Open App.Path + chengji.txt For Input As #1Open App.Path + kec
7、heng.txt For Input As #2N = 0: M = 0: Zxf = 0 总人数,课程数,总学分Line Input #2, str1Do 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).
8、课程学分 = st1(2) Zxf = Zxf + ke(M).课程学分LoopLine Input #1, str1Text1 = 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).c
9、j(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 = 0LoopEnd SubPublic Function space1(ByVal sss As String) Dim x% x = InStr(sss, ) Do While x 0 sss = Replace(sss, , ) x = InStr(sss, ) Loop space1 = sssEnd FunctionPrivate Sub yuancj_Click() Dim
10、 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 iEnd SubPrivate Sub Average_Click() 计算加权平均分 Dim i% For i = 1 To N stu(i
11、).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 iEnd SubPrivate Sub GRS_Click() 统计各分数段人数Dim chengji(1 To 5, 1 To 5
12、) As Integer Cls For j = 1 To M For i = 1 To NSelect Case stu(i).cj(j)Case Is = 90 chengji(1, j) = chengji(1, j) + 1Case 80 To 89 chengji(2, j) = chengji(2, j) + 1Case 70 To 79 chengji(3, j) = chengji(3, j) + 1Case 60 To 69 chengji(4, j) = chengji(4, j) + 1Case Is 60 chengji(5, j) = chengji(5, j) +
13、1End Select Next iNext jPrint 范围 化学 工程制图 线代 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)
14、; 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)
15、; chengji(5, 1); Tab(24); chengji(5, 2); Tab(37); chengji(5, 3); Tab(47); chengji(5, 4); Tab(55); chengji(5, 5)End SubPrivate 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 st
16、u(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).ave
17、r = 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;
18、 Tab(12); stu(i).xm; Tab(22); stu(i).mc Next iEnd SubPrivate 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
19、(3).aver; Tab(36); ke(4).aver; Tab(45); ke(5).aver End SubPrivate 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 iEn
20、d SubPrivate 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).av
21、er 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:
22、 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)
23、; Tab(57); stu(i).cj(4); Print Tab(66); stu(i).cj(5); Tab(77); stu(i).aver; Spc(6); stu(i).mc Next iEnd SubPrivate 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
24、= 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 Fo
25、r 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
26、 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 iEnd SubPrivate Sub PrintGood_Click() Dim i%, j%, k%, ti%, ts$, tsn!, ii%, ave!, kk% F
27、or 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