【跪求】用VB简略设计奖学金评定

【跪求】用VB简单设计奖学金评定下午我们就交作业呢,求各位大神帮帮小弟的忙,感激不尽一、设计题目:学生奖学

【跪求】用VB简单设计奖学金评定







下午我们就交作业呢,求各位大神帮帮小弟的忙,感激不尽









一、设计题目:学生奖学金评定
说明:设计一个评定学生奖学金的程序。
二、目的与要求
1.目的
培养学生综合利用VB语言进行程序设计的能力,主要是培养学生对基本控件、菜单和对控件属性的设置以及文件的操作。
2.基本要求
? 利用菜单和基本控件完成设计。
? 完成的程序界面要美观,能够完成管理的整个过程。
? 读入已经存在文本文件xscj.txt中的学生成绩并保存。(文件)
? 文本框中显示学生成绩。
? 计算各科最高分,并显示最高分学生信息,并显示。
? 计算学生总成绩,并显示。
? 按总成绩排名,并显示。
? 统计获得一、二、三等奖和单项奖学金学生信息并显示。
3.创新要求
在基本要求达到后,进行创新设计,创新方向提示如下:
★ 对单个学生的成绩查询。
★ 增加进步奖奖学金
三、设计方法和基本原理
1.问题描述
程序只需一个窗口,程序界面设计状态示意图:
1)通过单击菜单“成绩录入”将已经存在文本文件中的学生成绩读入学号、姓名和五门课程英语、数学、计算机、历史和体育成绩,保存在数组中,并显示在文本框中。
2)单击“单科显示”,“各科最高分”后,文本框显示各科最高分和获得最高分学生的学号姓名。
3)单击“考试总成绩”,“总成绩”,计算每个人总成绩,并显示最后结果。
4)单击“考试总成绩”“总成绩排名”,按总成绩降序排序。 
5)单击“奖学金评定”分别计算获得一等奖、二等奖、三等奖和单项奖的学生并显示。
2.问题的解决方案
①设计程序界面
因为用的全是基本控件,界面设计没有什么难度,照样子拼就可以了,程序要用菜单控制。
②编写代码
根据问题描述,可以将问题解决分为部分:
(1)文本文件中存储学生成绩,首先要把成绩读入,每科成绩、学号和姓名存放在数组中。参考课本第七章
(2)计算各科的最高分,单科最高分为奖学金单项奖。
(3)计算每个同学的总成绩放入数组中存储,然后排序方法降序排序进行排名。 
(4)计算每人总成绩的平均分,>=90获得一等奖学金。>=85, <90获得二等奖学金,>=80, <85获得三等奖学金,单科最高分为奖学金单项奖。将最后的奖学金名单显示出来
四、主要技术问题的描述
1)考试总成绩排序,学号和姓名要同时交换
For i = 1 To k - 1
For j = i + 1 To k
If chengji(i) < chengji(j) Then
t = chengji(i)
chengji(i) = chengji(j)
chengji(j) = t
t = xuehao(i)
xuehao(i) = xuehao(j)
xuehao(j) = t
t = xingming(i)
xingming(i) = xingming(j)
xingming(j) = t
End If
Next j
Next i
2)用于存储学生学号、姓名和五门课程的数组应声明为模块级。一旦数组中有了文件的内容,则可以将其内容逐行地、通过字符串连接符赋给文本框的Text属性,就可以显示出来了。要控制文本框中文本的换行可以利用VB的系统常数vbCrLf来实现。
3)排序程序参考课本第六章算法。
五、参考资料
★ Visual Basic 程序设计教程 及 Visual Basic 实验教程
★ VB6.0程序员指南
★ VB6.0控件参考手册
★ MSDN中文版,课程设计网站上提供的其它资料。
六、设计部分的评分标准(本题难度为C级,综合时要乘系数0.8)
完成基本要求60
完成创新要求100
[注:最后得分是根据本部分得分(占最大比例)以及课程设计期间纪律、设计报告书、答辩情况综合


[解决办法]
看不到TXT文件内容是什么样的,可以用

open "d:\xscj.txt" for input as #1
for i=0 to 学生总数
input #1,a(i)
next i
close #1
把txt文件中每一行赋值给a(i)字符串数组,再通过格式判断,把a(i)中的字符串分成学号,姓名,成绩等赋值给二维数组,
[解决办法]
完成排序的一个简单方法是利用 Sorted 属性为 True 的 ListBox(可以设置 Visible = False,不可见):

List1.Clear
For i = 0 To k - 1
List1.AddItem chengji(i) '添加一个成绩列表项
List1.ItemData(List1.NewIndex) = xuehao(i) '列表项对应的数据设置成学号
Next i

'添加完成时,排序也就完成了
'由于排序是递增的,逆向输出
For i = k - 1 To 0 Step - 1
Debug.Print List1.ItemData(i), List1.List(i)
Next i
[解决办法]
假定文本文件中的格式是:

学号,成绩
学号,成绩

且无表头。

Dim xuehao() As Long, chengji() As Single, k As Long
Dim strLine As String, strItem() As String

Open "d:\xscj.txt" For Input As #1
Redim xuehao(LOF(1) - 1) 
Redim chengji(LOF(1) - 1) 
Do Until EOF(1)
Line Input #1, strLine
strItem = Splist(strLine, ",")
If Ubound(strItem) = 1 Then
xuehao(k) = Val(Trim(strItem(0)) & "&")
chengji(k) = Val(Trim(strItem(0)))
k = k + 1
End If
Loop
Redim Presever xuehao(k - 1)
Redim Presever chengji(k - 1)
close #1

[解决办法]
作业题.....
自己做