服了你这个老六 2022-11-23 18:43 采纳率: 100%
浏览 1
已结题

C语言写成绩系统(只用到指针以及之前的内容)

(注:不能用到结构体)C语言写一个成绩管理系统,模板在末尾张照片,一共有五个功能,具体内容请看照片

img

img

img

  • 写回答

2条回答 默认 最新

  • 语言-逆行者 2022-11-23 19:50
    关注
    
    
    /**
     * @file dome34.c
     * @author your name (you@domain.com)
     * @brief 
     * @version 0.1
     * @date 2022-11-24
     * 
     * @copyright Copyright (c) 2022
     * 简易版班级成绩管理系统
     */
    
    #include<stdio.h>
    #define Max 50//最大人数为50个人,如果想更大,就改变这个值
    int number =4;//记录学生信息的人数;
    //显示学生成绩的函数
    void show(long int *num,char (*name)[10],char (*class)[10],float (*score)[3]){
    printf("\tNo.\t\tName");
    int i=0;
    int j=0;
    for(i=0;i<3;i++){
        if(i==2){printf("\t\t%s",class[i]);}
        else{printf("\t%s",class[i]);}
    }
    printf("\n");
    
    for(i=0;i<number;i++){
        if(num[i]==0)
        {
            continue;
        }//学号为0,相当于没有该学生信息
        else{
        printf("\t%ld",num[i]);
        printf("\t%s",name[i]);
        for(j=0;j<3;j++)
        {
          printf("\t%.1f\t",score[i][j]);
        }
        printf("\n");
        }
    }
    }
    //搜索学生id是否存在,并返回下标
    int find(long int id,long int *num){
       int i,index;
      for(i=0;i<number;i++){
        if(id==num[i]){
            index=i;//记录下标位置
            break;
        }
        else{continue;}
      }
      if(i==number)
      {return -1;}
      else
      {return index;}
    }
    //根据学生id搜索分数
    void query(long int id,long int *num,char (*class)[10],float (*score)[3]){
      int i,j,index;
      index=find(id,num);
      if(index==-1){printf("没有该学生信息!\n");}
      else//找到就输出学生信息
      {
        printf("你的成绩如下:\n");
        for(i=0;i<3;i++){
        if(i==2){printf("\t\t%s\n",class[i]);}
        else{printf("\t%s",class[i]);}
        }
        for(j=0;j<3;j++)
        {
          printf("\t%.1f\t",score[index][j]);
        }
        printf("\n");
      } 
    }
    void update(long int id,long int *num,char (*name)[10],float (*score)[3])
    {
       int i,j,index,a;
      index=find(id,num);
      if(index==-1){printf("没有该学生信息!\n");}
      else//找到就输出学生信息
      {
        printf("---------------\n");
        printf("1、修改ID号\n");
        printf("2、修改姓名\n");
        printf("3、修改成绩\n");
        scanf("%d",&a);
        switch (a)
        {
        case 1:
        printf("请输入新的学号:");
        scanf("%s",&num[index]);
        printf("修改成功!\n");
            break;
        case 2:
        printf("请输入新的姓名:");
        scanf("%s",&name[index]);
        printf("修改成功!\n");
            break;
        case 3:
        printf("1、修改Computer\n");
        printf("2、修改Math\n");
        printf("3、修改English\n");
        int b;
        scanf("%d",&b);
        switch (b)
        {
        case 1:
        printf("请输入新成绩:");
        scanf("%f",&score[index][0]);
        printf("修改成功!\n");
            break;
        case 2:
        printf("请输入新成绩:");
        scanf("%f",&score[index][1]);
        printf("修改成功!\n");
            break;
        case 3:
        printf("请输入新成绩:");
        scanf("%f",&score[index][2]);
        printf("修改成功!\n");
            break;    
        default:
            break;
        }
    
            break;
        default:
            break;
        }
      }
    }
    //删除学生信息
    void reMove(long int id,long int *num,char (*name)[10],float (*score)[3]){
       int i,j,index;
      index=find(id,num);
      if(index==-1){printf("没有该学生信息!\n");}
      else//找到就删除
      {
         num[index]=0;
         name[index][10]='\0';
         for(i=0;i<3;i++){
            score[index][j]=0.0;
         }
         printf("删除成功!\n");
      }
    }
    //删除学生信息
    void add(long int *num,char (*name)[10],float (*score)[3]){
      printf("请输入学号:");
      scanf("%ld",&num[number]);
      printf("请输入姓名:");
      scanf("%s",&name[number]);
      printf("请输入Computer成绩:");
      scanf("%f",&score[number][0]);
      printf("请输入Math成绩:");
      scanf("%f",&score[number][1]);
      printf("请输入English成绩:");
      scanf("%f",&score[number][2]);
      printf("添加成功!\n");
      number++;
    }
    int main(){
    
       long int num[Max]={20210101,20210102,20210103,20210104};
       char name[Max][10]={"Stu_01","Stu_02","Stu_03","Stu_04"};
       char class[3][10]={"Computer","Math","English"};
       float score[Max][3]={{60.5,97.0,90.5},{88.5,67.5,88.1},{72.3,75.0,92.0},{66.8,86.0,45.5}};
       int i;
       char ch;
       long int id;
       int TuiChu=1;
       printf("-------------------------------------\n");
       printf("d、显示学生成绩信息\n");
       printf("q、查找学生成绩信息\n");
       printf("u、更新学生成绩信息\n");
       printf("r、删除学生成绩信息\n");
       printf("a、增加学生成绩信息\n");
       printf("p、退出系统\n");
       for(;;){
       scanf("%c",&ch);
       switch(ch){
        case 'd':
        show(num,name,class,score);
        break;
    
        case 'q':
        printf("请输入你的学号:");
        scanf("%ld",&id);
        query(id,num,class,score);
        break;
    
        case 'u':
        printf("请输入你的学号:");
        scanf("%ld",&id);
        update(id,num,name,score);
        break;
    
        case 'r':
        printf("请输入你的学号:");
        scanf("%ld",&id);
        reMove(id,num,name,score);
        break;
    
        case 'a':
        add(num,name,score);
        break;  
        case 'p':
        TuiChu=0;
        break;
       }  
       if(TuiChu==0){break;}  
       }
          return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
    1人已打赏
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 12月3日
  • 已采纳回答 11月25日
  • 请采纳用户回复 11月24日
  • 创建了问题 11月23日

悬赏问题

  • ¥15 stm32开发clion时遇到的编译问题
  • ¥15 lna设计 源简并电感型共源放大器
  • ¥15 如何用Labview在myRIO上做LCD显示?(语言-开发语言)
  • ¥15 Vue3地图和异步函数使用
  • ¥15 C++ yoloV5改写遇到的问题
  • ¥20 win11修改中文用户名路径
  • ¥15 win2012磁盘空间不足,c盘正常,d盘无法写入
  • ¥15 用土力学知识进行土坡稳定性分析与挡土墙设计
  • ¥70 PlayWright在Java上连接CDP关联本地Chrome启动失败,貌似是Windows端口转发问题
  • ¥15 帮我写一个c++工程