回 帖 发 新 帖 刷新版面

主题:谁能帮我把下面这个用C语言编写的程序帮我改成QBASIC的程序,谢谢各位大哥了,急用

学生信息管理系统
#include <stdio.h>
#include <string.h> struct student {
 char name[30];
 float math;
 float chinese;
 float english;
 float average;
}; 

int MenuChoice(void);
int EnterAccount(void);
void Enter(struct student *fst);
void Amend(struct student *src);
void Delete(struct student *next);
void Print(struct student *out); 

main()
{
 struct student one[100] = {0}, *look = one;
 int menu, t;  

while ((menu = MenuChoice()) != 0) 
   
  if (menu >= 1 && menu <= 4 && (t = EnterAccount())) {
   look = one + t;
  
   switch (menu) {
   case 1:
    Enter(look);
    break;
   case 2:
    if (strcmp(look->name, ""))
     printf("学号:%d\n姓名: %s\n语文成绩: %.1f\n数学成绩:%.1f\n英语成绩: %f\n平均"成绩:%.1f\n",
         t, look->name, look->chinese, look->math, look->english, look->average);
   else 
     printf("对不起,该学号不存在!\n");    
     break;
   case 3:
    Amend(look);
       break;
   case 4:
    Delete(look);
    break;
   }
  }
  else if (menu == 5)
   Print(one);
  else
   printf("错误的请求!\n"); 

 return 0;
}
 
int MenuChoice(void)  
{
 int choice; 

printf("请选择:\n"
  "1 - 新建学生信息\n"
  "2 - 查找学生信息\n"
  "3 - 修改学生信息\n"
  "4 - 删除学生信息\n"
  "5 - 打印学生信息\n"
  "0 - 退出\n");
 scanf("%d", &choice);  

return choice;


int EnterAccount(void)
{
 int ret;  

printf("请输入学号:\n");
scanf("%d", &ret);  

if (ret >= 1 && ret <= 100)
  return ret -1;  

return 0;


void Enter(struct student *fst)
{
 printf("请输入学生姓名、语文成绩、数学成绩、英语成绩和平均成绩\n");
 scanf("%s%f%f%f%f", fst->name, &fst->chinese, &fst->math, &fst->english, &fst->average);


void Amend(struct student *src)
{
 int t;  

printf("请选择:\n"
  "1 - 修改学生姓名\n"
  "2 - 修改学生语文成绩\n"
  "3 - 修改学生数学成绩\n"
  "4 - 修改学生英语成绩\n"
  "5 - 修改学生平均成绩\n");
 scanf("%d", &t);  

switch (t) {
 case 1:
  printf("请输入学生的新名字\n");
  scanf("%s", src->name);
  break;
 case 2:
  printf("请输入学生新的语文成绩\n");
  scanf("%f", &src->chinese);
  break;
 case 3:
  printf("请输入学生新的数学成绩\n");
  scanf("%f", &src->math);
  break;
 case 4:
  printf("请输入学生新的英语成绩\n");
  scanf("%f", &src->english);
  break;
 case 5:
  printf("请输入学生新的平均成绩\n");
  scanf("%f", &src->average);
  break;
 } 



void Delete(struct student *next)
{
 strcpy(next->name, "");
 next->math = next->english = next->chinese = next->average = 0.0;


void Print(struct student *out)
{
 struct student *up;   

for (up = out; out < &up[100]; out++)   

    if (strcmp(out->name, ""))
        printf("学号:%d\n姓名: %s\n语文成绩: %.1f\n数学成绩:%.1f\n英语成绩: %.1f\n平均成绩:%.1f\n", 
             out-up + 1, out->name, out->chinese, out->math, out->english,  out->average);
}

回复列表 (共2个回复)

沙发

学生信息管理系统
TYPE student
  name AS STRING * 30
  math AS SINGLE
  chinese AS SINGLE
  english AS SINGLE
  average AS SINGLE
END TYPE
DIM one(100) AS student

DO
  SELECT CASE menuchoice
  CASE 1
    last = last + 1
    PRINT "请输入学生姓名、语文成绩、数学成绩、英语成绩和平均成绩"
    INPUT one(last).name, one(last).chinese, one(last).math, one(last).english, one(last).average
  CASE 2
     INPUT look
     IF look > 0 AND look <= last THEN
       PRINT "学号:"; look
       PRINT "姓名:"; one(look).name
       PRINT "语文成绩:"; one(look).chinese
       PRINT "数学成绩:"; one(look).math
       PRINT "英语成绩:"; one(look).english
       PRINT "平均成绩:"; one(look).average
     ELSE
       PRINT "对不起,该学号不存在!"
     END IF
  CASE 3:   Amend one(look)
  CASE 4
     one(look).name = one(last).name
     one(look).chinese = one(last).chinese
     one(look).math = one(last).math
     one(look).english = one(last).english
     one(look).average = one(last).average
     last = last - 1
  CASE 5:   Print5 one(look)
  CASE 0:   EXIT DO
  CASE ELSE: PRINT "错误的请求!"
  END SELECT
LOOP

SUB Amend (src AS student)
    PRINT "请选择:"
    PRINT "1 - 修改学生姓名"
    PRINT "2 - 修改学生语文成绩"
    PRINT "3 - 修改学生数学成绩"
    PRINT "4 - 修改学生英语成绩"
    PRINT "5 - 修改学生平均成绩"
    SELECT CASE INPUT$(1)
    CASE "1"
      PRINT "请输入学生的新名字"
      INPUT src.name
    CASE "2"
      PRINT "请输入学生新的语文成绩"
      INPUT src.chinese
    CASE "3"
      PRINT "请输入学生新的数学成绩"
      INPUT src.math
    CASE "4"
      PRINT "请输入学生新的英语成绩"
      INPUT src.english
    CASE "5"
      PRINT "请输入学生新的平均成绩"
      INPUT src.average
    END SELECT
END SUB

FUNCTION menuchoice
PRINT "请选择:"
PRINT "1 - 新建学生信息"
PRINT "2 - 查找学生信息"
PRINT "3 - 修改学生信息"
PRINT "4 - 删除学生信息"
PRINT "5 - 打印学生信息"
PRINT "0 - 退出"
INPUT menuchoice
END FUNCTION

SUB Print5 (out5 AS student)
       LPRINT "学号:"; t
       LPRINT "姓名:"; out5.name
       LPRINT "语文成绩:"; out5.chinese
       LPRINT "数学成绩:"; out5.math
       LPRINT "英语成绩:"; out5.english
       LPRINT "平均成绩:"; out5.average
END SUB

板凳

唯心主义的论据是:好人有好报,这句话究竟是谎言还是真理,在乎你是否相信它.



天知道有没有好报....
这么久了

我来回复

您尚未登录,请登录后再回复。点此登录或注册