VB编程,输入不超过10个学生的信息(学号,姓名,计算机,高数,英语

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VB编程,输入不超过10个学生的信息(学号,姓名,计算机,高数,英语相关的知识,希望对你有一定的参考价值。

VB编程,输入不超过10个学生的信息(学号,姓名,计算机,高数,英语),按三门科目平均分从高到低显示全部信息。
急急急,求答案

窗体Foem1代码:

Private Type Student
  StudentID As String * 8
  Name As String
  HigherMathemstics As Single
  GeneralPhysics As Single
  DataStructure As Single
  VisualBasic As Single
  Total As Single
  Average As Single
  Ranking As Integer
End Type
Dim n As Integer
Dim Stu() As Student

Private Sub Command1_Click()
  ID = Text1.Text
  sName = Text2.Text
  sMath = Val(Text3.Text)
  Physics = Val(Text4.Text)
  Data = Val(Text5.Text)
  sVB = Val(Text6.Text)
  Call Add(ID, sName, sMath, Physics, Data, sVB)
End Sub

Public Sub Add(ByVal ID As String, ByVal Name As String, ByVal Math As Single, ByVal Physics As Single, ByVal Data As Single, ByVal VB As Single)
  n = n + 1
  ReDim Preserve Stu(1 To n)
  With Stu(n)
    .StudentID = ID
    .Name = Name
    .HigherMathemstics = Math
    .GeneralPhysics = Physics
    .DataStructure = Data
    .VisualBasic = VB
    .Total = .HigherMathemstics + .GeneralPhysics + .DataStructure + .VisualBasic
    .Average = .Total / 4
    Text7.Text = .Total
    Text8.Text = .Average
    Combo1.AddItem .StudentID + Space(2) + .Name + Space(2) & .HigherMathemstics & Space(2) & .GeneralPhysics & Space(2) & .DataStructure & Space(2) & .VisualBasic & Space(2) & .Total & Space(2) & .Average
   End With
End Sub

Private Sub Command2_Click()
  Dim LookupName
  LookupName = InputBox("请输入要查找的人的姓名:", "")
  Call Lookup(LookupName)
End Sub

Public Sub Lookup(ByVal LookupName As String)
  Dim flag As Boolean
  flag = True
  For i = LBound(Stu) To UBound(Stu)
    If Stu(i).Name = LookupName Then
      With Stu(i)
        Text1.Text = .StudentID
        Text2.Text = .Name
        Text3.Text = .HigherMathemstics
        Text4.Text = .GeneralPhysics
        Text5.Text = .DataStructure
        Text6.Text = .VisualBasic
        Text7.Text = .Total
        Text8.Text = .Average
      End With
      flag = False
      Exit For
    End If
  Next i
  If flag Then
    MsgBox "查无此人!", 48
  End If
End Sub

Private Sub Command3_Click()
  
  Call Sort
  Load Form2
  Form2.Show
  Form2.List1.Clear
  For i = LBound(Stu) To UBound(Stu)
    If i = 1 Then
      Stu(i).Ranking = i
    Else
      If Stu(i).Total = Stu(i - 1).Total Then
          Stu(i).Ranking = Stu(i - 1).Ranking
        Else
          Stu(i).Ranking = i
        End If
      End If
    With Stu(i)
      Form2.List1.AddItem Space(1) + Format(.Ranking, "000") & Space(2) & .StudentID + Space(2) + .Name + Space(5) & .HigherMathemstics & Space(8) & .GeneralPhysics & Space(8) & .DataStructure & Space(8) & .VisualBasic & Space(5) & .Total & Space(3) & .Average
    End With
  Next i
End Sub

Public Sub Sort()
  For i = LBound(Stu) To UBound(Stu) - 1
    For j = i + 1 To UBound(Stu)
      If Stu(j).Total > Stu(i).Total Then
        t = Stu(i).StudentID
        Stu(i).StudentID = Stu(j).StudentID
        Stu(j).StudentID = t
        
        t = Stu(i).Name
        Stu(i).Name = Stu(j).Name
        Stu(j).Name = t
        
        t = Stu(i).HigherMathemstics
        Stu(i).HigherMathemstics = Stu(j).HigherMathemstics
        Stu(j).HigherMathemstics = t
        
        t = Stu(i).GeneralPhysics
        Stu(i).GeneralPhysics = Stu(j).GeneralPhysics
        Stu(j).GeneralPhysics = t
        
        t = Stu(i).DataStructure
        Stu(i).DataStructure = Stu(j).DataStructure
        Stu(j).DataStructure = t
        
        t = Stu(i).VisualBasic
        Stu(i).VisualBasic = Stu(j).VisualBasic
        Stu(j).VisualBasic = t
        
        t = Stu(i).Total
        Stu(i).Total = Stu(j).Total
        Stu(j).Total = t
        
        t = Stu(i).Average
        Stu(i).Average = Stu(j).Average
        Stu(j).Average = t
      End If
    Next j
  Next i
End Sub

Private Sub Command4_Click()
  End
End Sub

窗体Form2代码:

Private Sub Command1_Click()
  Me.Hide
End Sub

运行界面:

参考技术A 提示你一下,用结构体数组编写一个程序。
#include
struct
stu
int
num;
char
name
[50];
int
a[50];int
b[50];int
c[50];int
d[50];int
e[50];
void
fun
(struct
stu
*p)
int
i;
printf("%s\n",p->name);
for(i=0;i<50;i++)
while(a[i+1]>a[i])
do
printf("%d\n",a[i+1]);
while(b[i+1]>b[i])
do
printf("%d\n",b[i+1]);
while(c[i+1]>c[i])
do
printf("%d\n",c[i+1]);
while(d[i+1]>d[i])
do
printf("%d\n",d[i+1]);
while(e[i+1]>e[i])
printf("%d\n",e[i+1]);

main()

struct
stu
for(i=0;i<50;i++)
scanf("%s\n",&name[i]);
scanf("%d\n",&a[i]);
scanf("%d\n",&b[i]);
scanf("%d\n",&c[i]);
scanf("%d\n",&di]);
scanf("%d\n",&e[i]);

抱歉啊,本人流程图学得不好,不是很会。
参考技术B 个学生的信追问

什么意思啊

C语言编程题,急求!!!!

【问题描述】

从标准输入连续读入 n 个学生的学号(不超过int类型表示范围)、姓名(由不超过10个英文字母组成)以及数学、英语、语文三门课的成绩,计算各人的平均成绩。输出总成绩最高的学生的信息(如果总成绩最高的学生有多名,按输入顺序输出总成绩最高的第一个同学),要求学号占10个字符,姓名占10个字符,数学、英语、语文、平均成绩各占5个字符)。要求用链表实现。

【输入形式】

从控制台输入一个正整数,表示学生人数;然后分行输入学号、姓名以及数学、英语、语文三门课的成绩,中间用空格分隔。

【输出形式】

控制台输出成绩最高的第一个同学,要求输出:学号、姓名、数学成绩、英语成绩、语文成绩、平均成绩。

【样例输入】

8

39060415 zf 98 88 80

39060427 lzw 87 92 88

39060413 wr 95 88 90

39060412 wp 95 87 91

39060405 syj 78 82 69

39060425 yef 85 78 93

39060419 sw 75 89 88

39060421 rr 89 88 75

【样例输出】

39060413 wr 95 86 90 91

DFA 引擎在线性时状态下执行,因为它们不要求回溯(并因此它们永远不测试相同的字符两次)。DFA 引擎还可以确保匹配最长的可能的字符串。但是,因为 DFA 引擎只包含有限的状态,所以它不能匹配具有反向引用的模式;并且因为它不构造显示扩展,所以它不可以捕获子表达式。
传统的 NFA 引擎运行所谓的“贪婪的”匹配回溯算法,以指定顺序测试正则表达式的所有可能的扩展并接受第一个匹配项。因为传统的 NFA 构造正则表达式的特定扩展以获得成功的匹配,所以它可以捕获子表达式匹配和匹配的反向引用。但是,因为传统的 NFA 回溯,所以它可以访问完全相同的状态多次(如果通过不同的路径到达该状态)。因此,在最坏情况下,它的执行速度可能非常慢。因为传统的 NFA 接受它找到的第一个匹配,所以它还可能会导致其他(可能更长)匹配未被发现。
POSIX NFA 引擎与传统的 NFA 引擎类似,不同的一点在于:在它们可以确保已找到了可能的最长的匹配之前,它们将继续回溯。因此,POSIX NFA 引擎的速度慢于传统的 NFA 引擎;并且在使用 POSIX NFA 时,您恐怕不会愿意在更改回溯搜索的顺序的情况下来支持较短的匹配搜索,而非较长的匹配搜索。
使用DFA引擎的程序主要有:awk,egrep,flex,lex,MySQL,Procmail等;
使用传统型NFA引擎的程序主要有:GNU Emacs,Java,ergp,less,more,.NET语言,PCRE library,Perl,PHP,Python,Ruby,sed,vi;
使用POSIX NFA引擎的程序主要有:mawk,Mortice Kern Systems’ utilities,GNU Emacs(使用时可以明确指定);
也有使用DFA/NFA混合的引擎:GNU awk,GNU grep/egrep,Tcl。
举例简单说明NFA与DFA工作的区别:
比如有字符串this is yansen’s blog,正则表达式为 /ya(msen|nsen|nsem)/ (不要在乎表达式怎么样,这里只是为了说明引擎间的工作区别)。 NFA工作方式如下,先在字符串中查找 y 然后匹配其后是否为 a ,如果是 a 则继续,查找其后是否为 m 如果不是则匹配其后是否为 n (此时淘汰msen选择支)。然后继续看其后是否依次为 s,e,接着测试是否为 n ,是 n 则匹配成功,不是则测试是否为 m 。为什么是 m ?因为 NFA 工作方式是以正则表达式为标准,反复测试字符串,这样同样一个字符串有可能被反复测试了很多次!
而DFA则不是如此,DFA会从 this 中 t 开始依次查找 y,定位到 y ,已知其后为a,则查看表达式是否有 a ,此处正好有a 。然后字符串a 后为n ,DFA依次测试表达式,此时 msen 不符合要求淘汰。nsen 和 nsem 符合要求,然后DFA依次检查字符串,检测到sen 中的 n 时只有nsen 分支符合,则匹配成功!
由此可以看出来,两种引擎的工作方式完全不同,一个(NFA)以表达式为主导,一个(DFA)以文本为主导!一般而论,DFA引擎则搜索更快一些!但是NFA以表达式为主导,反而更容易操纵,因此一般程序员更偏爱NFA引擎! 两种引擎各有所长,而真正的引用则取决与你的需要以及所使用的语言!
参考技术A #include <stdio.h>
#include<string.h>
struct MyStruct

char num[11];
char name[11];
double val[3];
MyStruct *data=NULL;
double Sum() 
return val[0] + val[1] + val[2];

double Average()  return Sum() / 3; 
void Print() 
printf("学号:%s\\t姓名:%s\\t数学:%.lf\\t英语:%.2lf\\t语文:%.2lf\\t平均:%.2lf\\t总分:%.2lf\\n", num, name, val[0], val[1], val[2],Average(),Sum());


;

int main() 
MyStruct* head=NULL,*p,*pmax;
int n;
scanf("%d", &n);
while (n>0)

n--;
if (head == NULL) 
head = new MyStruct();
p = head;
pmax = p;

else

p->data = new MyStruct();
p = p->data;

scanf("%s %s %lf %lf %lf", &p->num, p->name, &p->val[0], &p->val[1], &p->val[2]);
if (p->Sum() > pmax->Sum())  pmax = p; 


printf("\\n学生成绩信息表\\n");
p = head;
while (p!=NULL)

p->Print();
p = p->data;

printf("\\n最好成绩学生信息\\n");
pmax->Print();
scanf("%d", &n);
return 0;

刚给你写了个

本回答被提问者采纳
参考技术B 混沌剑神那就睡觉小鸡小鸡时间就是 参考技术C 打开数据结构那本书,上面有现成的类似的例子,抄一个,改吧改吧就成了。 参考技术D 上CF找大神

以上是关于VB编程,输入不超过10个学生的信息(学号,姓名,计算机,高数,英语的主要内容,如果未能解决你的问题,请参考以下文章

统计学生信息(使用链表完成)

1004 成绩排名

1004 成绩排名

1004 成绩排名

1004 成绩排名

编写一个c语言程序,实现录入学生学号和姓名信息的功能