c语言学生成绩管理系统_学生成绩管理系统c++代码结构体

c语言学生成绩管理系统_学生成绩管理系统c++代码结构体c语言管理系统牛~~/*引用库函数*/#include<stdio.h>#include<stdlib.h>#include<string.h>/*定义结构体数组*/typedefstruct{charnum[12];/*学号*/charname[20];/*姓名*/charsex[2];/*性别*/intscore[3];/*成绩*/

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

c语言管理系统

牛~~

/*引用库函数*/
#include<stdio.h> 
#include<stdlib.h>
#include<string.h>

/*定义结构体数组*/
typedef struct 
{ 
   
    char num[12];       /*学号*/
    char name[20];      /*姓名*/
    char sex[2];        /*性别*/
    int score[3];       /*成绩*/
    float avg;          /*平均分*/
    int sum;            /*总成绩*/
}Student;

Student studentAll[80]; /*结构体数组*/
int student_number = 0; /*总人数*/
/*菜单函数*/
int menu_select() 
{ 
   
    int check_number;
    do{ 
   
        system("cls");  /*运行前清屏clear screen,在stdlib.h中*/
        printf("\t************学生成绩管理系统*************\n"); /*菜单选择*/
        printf("\t*| 1. 添加学生信息 *\n");
        printf("\t*| 2. 显示学生信息 *\n");
        printf("\t*| 3. 按学号排序 *\n");
        printf("\t*| 4. 按总成绩排序 *\n");
        printf("\t*| 5. 查找单个学生 *\n");
        printf("\t*| 6. 删除指定学生 *\n");
        printf("\t*| 7. 修改学生信息 *\n"); 
        printf("\t*| 8. 查看各门课程的成绩情况 *\n");
        printf("\t*| 9. 待定功能 *\n");
        printf("\t*| 0. 保存退出 *\n");
        printf("\t*****************************************\n");
        printf("请输入选择(0-9):");
        scanf("%d",&check_number);              /*读入选择*/
    }while(check_number<0||check_number>9);
    return(check_number);                   /*返回选择*/
}

//以下的student都是形式参数,真正的数组是在全局变量里定义的studentAll数组

 /*输入若干条记录*/
void Input(Student student[])
{ 
   
    int i=0,j;
    char flag,clear[10];                        /*clear[10]为清除多余的数据所用*/
    char studentNum[12];                        //暂存某学生学号
                                    
    //判断是否已经存在相同学生的学号
    while(flag!='n'&&flag!='N')             //判断flag是不是n/N,以此判断是否继续输入学生信息
    { 
   
     printf("请输入学生学号: ");
      scanf("%s",studentNum);
    
      while(strcmp(student[i].num,studentNum)!=0&&i<student_number)
      { 
    
        i++;                            /*查找判断*/
      }
      //查找到学生,无法增加学生信息,返回主函数
       if(i<student_number)
        printf("已有相同学号的学生,请重新输入\n");
    //如果没有查找到学生,即可增加学生信息
       else 
      { 
    if(i==student_number) 
            { 
   memset(student[i].num, 0, sizeof(student[i].num));//字符串清空
            strcpy(student[i].num,studentNum);
            
            printf("学生姓名:");
            scanf("%s",student[student_number].name);
            printf("学生性别:");
            scanf("%s",student[student_number].sex);            
            printf("c语言成绩:");
            scanf("%d",&student[student_number].score[0]);
            printf("数据结构成绩:");
            scanf("%d",&student[student_number].score[1]);
            printf("数据库成绩:");
            scanf("%d",&student[student_number].score[2]);
            
            student[student_number].sum=0;
            for(j=0;j<3;j++)
            student[student_number].sum+=student[student_number].score[j];
            student[student_number].avg = (float)student[student_number].sum/3;
            //printf("%.2f\n",student[student_number].avg);
            gets(clear);                        //*清除多余的输入
            printf("此学生信息录入完毕,是否继续?(Y/N)");
            scanf("%c",&flag);          //输入判断
            student_number++;//总人数加1
            i=0;}
        }       
        
        
    }
        
}
    







/*显示所有记录*/
void Display(Student student[]) 
{ 
   
    int i;
    printf("共有%d名同学\n",student_number);
    printf("----------------------------------------------------------------------------------------------------------\n");
    printf("学生学号\t学生姓名\t学生性别\tc语言成绩\t数据结构成绩\t数据库成绩\t平均成绩\t总成绩\n");
    printf("----------------------------------------------------------------------------------------------------------\n");
    for(i=0;i<student_number;i++)
    { 
   
        printf("%s\t\t%s\t\t%s\t\t%d\t\t%d\t\t%d\t\t%f\t%d\n",student[i].num,student[i].name,student[i].sex,student[i].score[0],student[i].score[1],student[i].score[2],student[i].avg,student[i].sum);
    }
    system("pause");
    
}

/*按学号排序*/
void Sort_by_num(Student student[]) 
{ 
    
    int i,j;
    for(i=0;i<student_number-1;i++)
    { 
   
        for(j=0;j<student_number-1-i;j++)
        { 
   
            if(strcmp(student[j].num,student[j+1].num))
            { 
   
                Student t;
                t=student[j];
                student[j]=student[j+1];
                student[j+1]=t;
            }
        }
    }
    
}

/*按总成绩排序*/
void Sort_by_sum(Student student[]) 
{ 
    
    int i,j;
    for(i=0;i<student_number-1;i++)
    { 
   
        for(j=0;j<student_number-1-i;j++)
        { 
   
            if(student[j].sum<student[j+1].sum)
            { 
   
                Student t;
                t=student[j];
                student[j]=student[j+1];
                student[j+1]=t;
            }
        }
    }
    
}

/*按姓名查找,删除一条记录*/
void Delete_a_record(Student student[]) 
{ 
   
    char studentName[20];
    int i=0;
    printf("请输入要删除记录的姓名");
    scanf("%s",studentName);
    while(strcmp(student[i].name,studentName)!=0&&i<student_number)
    { 
   
        i++;                            /*查找判断*/
    }
    int t=i;
    if(i<student_number)
    { 
   
        int j=student_number-1;
        for(;j>i;i++)
        { 
   
            student[i]=student[i+1];
        }
        student_number--;
    }
    if(t==student_number)
    { 
   
        printf("没有此人,请重新输入");
    }   
}

/*按姓名查找并显示一个记录*/
void Query_a_record(Student student[]) 
{ 
   
    char studentName[20];
    int i=0;
    printf("请输入要查找记录的姓名");
    scanf("%s",studentName);
    while(strcmp(student[i].name,studentName)!=0&&i<student_number)
    { 
   
        i++;                            /*查找判断*/
    }
    if(i<student_number)
    { 
   
        printf("------------------------------------------------------------------------------------------------------------------------\n");
        printf("学生学号\t学生姓名\t学生性别\tc语言成绩\t数据结构成绩\t数据库成绩\t平均成绩\t总成绩\n");
        printf("------------------------------------------------------------------------------------------------------------------------\n");
        printf("%s\t\t%s\t\t%s\t\t%d\t\t%d\t\t%d\t\t%f\t%d\n",student[i].num,student[i].name,student[i].sex,student[i].score[0],student[i].score[1],student[i].score[2],student[i].avg,student[i].sum);
    }
    if(i==student_number)
    { 
   
        printf("没有此人,请重新输入");
    }   
    
    

    
}
/*修改学生信息*/
void modifyStudentinformation(Student student[])
{ 
   
    char studentName[20];
    int i=0;
    printf("请输入要修改记录的姓名");
    scanf("%s",studentName);
    while(strcmp(student[i].name,studentName)!=0&&i<student_number)
    { 
   
        i++;                            /*查找判断*/
    }
    if(i<student_number)
    { 
   
        printf("修改前的记录:");
        printf("------------------------------------------------------------------------------------------------------------------------\n");
        printf("学生学号\t学生姓名\t学生性别\tc语言成绩\t数据结构成绩\t数据库成绩\t平均成绩\t总成绩\n");
        printf("------------------------------------------------------------------------------------------------------------------------\n");
        printf("%s\t\t%s\t\t%s\t\t%d\t\t%d\t\t%d\t\t%f\t%d\n",student[i].num,student[i].name,student[i].sex,student[i].score[0],student[i].score[1],student[i].score[2],student[i].avg,student[i].sum); 
        printf("\n学生学号:");
        scanf("%s",student[i].num);
        printf("学生姓名:");
        scanf("%s",student[i].name);
        printf("学生性别:");
        scanf("%s",student[i].sex);         
        printf("c语言成绩:");
        scanf("%d",&student[i].score[0]);
        printf("数据结构成绩:");
        scanf("%d",&student[i].score[1]);
        printf("数据库成绩:");
        scanf("%d",&student[i].score[2]);
        for(int j=0;j<3;j++)
            student[i].sum+=student[i].score[j];
            student[i].avg = (float)student[i].sum/3;
        printf("\n修改后的记录:\n");
        printf("------------------------------------------------------------------------------------------------------------------------\n");
        printf("学生学号\t学生姓名\t学生性别\tc语言成绩\t数据结构成绩\t数据库成绩\t平均成绩\t总成绩\n");
        printf("------------------------------------------------------------------------------------------------------------------------\n");
        printf("%s\t\t%s\t\t%s\t\t%d\t\t%d\t\t%d\t\t%f\t%d\n",student[i].num,student[i].name,student[i].sex,student[i].score[0],student[i].score[1],student[i].score[2],student[i].avg,student[i].sum);
    }
    if(i==student_number)
    { 
   
        printf("没有此人,请重新输入");
    }   
    
    

    
}

/*查看各门课程的成绩情况*/
void showClass(Student student[]) 
{ 
    
    char studentName[20];
    int i=0;
    printf("请输入要查看各门课程成绩的学生的姓名");
    scanf("%s",studentName);
    while(strcmp(student[i].name,studentName)!=0&&i<student_number)
    { 
   
        i++;                            /*查找判断*/
    }
    if(i<student_number)
    { 
   
        printf("***********\n");
        printf("c语言成绩:%d\n",student[i].score[0]);
        printf("***********\n\n");
        printf("**************\n");
        printf("数据结构成绩:%d\n",student[i].score[1]);
        printf("**************\n\n");
        printf("**************\n");
        printf("数据库成绩:%d\n",student[i].score[2]);
        printf("**************\n");
    }
    if(i==student_number)
    { 
   
        printf("没有此人,请重新输入");
    }   
}

/*从文件中读入数据*/
void AddfromText(Student student[]) 
{ 
    
    int i=0;
    int number = 0;
    FILE *fp;                                                           /*定义文件指针*/
    if((fp=fopen("D:\\student.txt","rb"))==NULL)                /*打开二进制文件,如果不存在则创建*/
    { 
    
        fp=fopen("D:\\student.txt","rb") ;
        
    }

    fscanf(fp,"%d",&student_number);                                    /*读入总记录量*/

    
    while(i<student_number)                                             /*循环读入数据*/
    { 
   
        fscanf(fp,"%s%s%s%d%d%d%f%d",student[i].num,student[i].name,student[i].sex,&student[i].score[0],&student[i].score[1],&student[i].score[2],&student[i].avg,&student[i].sum);
        i++;
    }
    fclose(fp); 
    
}
/*将所有记录写入文件*/
WritetoText(Student student[])
{ 
   
    FILE *fp;
    if((fp=fopen("D:\\student.txt","wb"))==NULL)
    { 
   
        printf("error");
    }
    else
    { 
   
        fprintf(fp,"%d",student_number);
        for(int i=0;i<student_number;i++)
        { 
   
            fprintf(fp,"\t%s\t%s\t%s\t%d\t%d\t%d\t%f\t%d\n",student[i].num,student[i].name,student[i].sex,student[i].score[0],student[i].score[1],student[i].score[2],student[i].avg,student[i].sum);
        }
        fclose(fp);
    }  
}


/*主函数*/
int main() 
{ 
   
    AddfromText(studentAll);
    for(;;)
    { 
   
        switch(menu_select())                                           /*选择判断*/
        { 
   
            case 1:
            printf("插入学生信息\n");                             /*输入若干条记录*/
            Input(studentAll);
            break;
            case 2:
            printf("显示记录\n");                               /*显示所有记录*/
            Display(studentAll);
            break;
            case 3:
            printf("按学号排序\n");
            Sort_by_num(studentAll);                                    /*按学号排序*/
            printf("按学号排序成功!\n");
            Display(studentAll);
            system("pause");
            break;
            case 4:
            printf("按总成绩排序\n");
            Sort_by_sum(studentAll);                                    /*按总成绩排序*/
            printf("按总成绩排序成功!\n");
            Display(studentAll);
            system("pause");
            break;
            case 5:
            printf("查找单个学生\n");
            Query_a_record(studentAll);                                 /*按姓名查找学生*/
            system("pause");
            break;
            case 6:
            printf("删除指定学生\n");
            Delete_a_record(studentAll);                                /*按姓名查找,删除一条记录*/
            system("pause");
            break;
            case 7:
            printf("修改学生信息\n");
            modifyStudentinformation(studentAll);                               /*查看学生成绩情况*/
            system("pause");
            break;
            case 8:
            printf("查看各门课程的成绩情况\n");
            showClass(studentAll);                                      /*查看各门课程的成绩情况*/
            system("pause");
            break;
            case 9:
            printf("待定功能\n");
            printf("功能描述");
            system("pause");
            break;
            case 0:
            WritetoText(studentAll);
            printf("已保存,退出系统\n");       /*结束程序*/
            system("pause");
            //exit(0);
        }
    }
} 



靓仔点赞

在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/193697.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • @SpringBootTest Canot resolve symbol ‘SpringBootTest‘问题解决

    @SpringBootTest Canot resolve symbol ‘SpringBootTest‘问题解决最近在开发中总是遇到一些奇奇怪怪的问题,都是一些不大不小的事情,有一个开发同事反馈,在使用SpringBoot创建单元测试的时候,无论怎么弄都提示注解不存在,如下:一看提示了@SpringBootTestCanotresolvesymbol’SpringBootTest’,第一反应是不是没有添加依赖包,查看pom.xml,里面已经有添加的包了,<dependency><groupId>org.springframework.boot<.

    2022年6月6日
    47
  • app软件版本号命名规则_文件版本号命名规则

    app软件版本号命名规则_文件版本号命名规则为什么需要规范APP命名?当我们在需求及业务明确后,产品及设计已经做出了对应的文档及UI图,那么进入研发阶段开始编码实现功能,当功能实现的差不多了之后,期间会需要签出不同的包作为展示或测试,不管当前的进度处于什么阶段,签出对应安装包的时候都会对其进行命名并发送给测试人员。一般往往通过命名,就可以大概知道当前签出的包处于哪个版本阶段,Alpha阶段?Beta阶段?R

    2022年9月10日
    2
  • 关于Thread.IsBackground属性的理解

    关于Thread.IsBackground属性的理解C#中,Thread类有一个IsBackground的属性.MSDN上对它的解释是:获取或设置一个值,该值指示某个线程是否为后台线程。个人感觉这样的解释等于没有解释..Net中的线程,可以分为后台线程和前台线程。后台线程与前台线程并没有本质的区别,它们之间唯一的区别就是:后台线程不会防止应用程序的进程被终止掉。呵呵,这句话读出来好像并不那么好懂.其实,说白了就是当前台线程都结束了的时候,…

    2022年10月16日
    4
  • 十进制的ascii码转化为十六进制_16进制对照表

    十进制的ascii码转化为十六进制_16进制对照表源地址:https://www.baidu.com/link?url=3bScEOF5BVXt7ptGDjBV5JmynXHqEh5lyut1vUx6vEM7qqPY1vtbO22Vvy7xUoFd&

    2022年8月5日
    7
  • kettle工具的简单使用

    kettle工具的简单使用1.使用kettle抽取CSV文件通过Kettle工具抽取CSV文件csv_extract.csv中的数据并保存至数据库extract的数据表csv中。(1)、创建一个转换通过使用Kettle工具,创建一个转换csv_extract,并添加“CSV文件输入”控件、“表输出”控件以及Hop跳连接线,具体如图所示。(2)、配置CSV输入插件双击“CSV文件输入”控件,进入“CSV文件输入”界面。完成配置。单击【浏览】按钮,选择要抽取的文件csv_extract.c…

    2022年10月16日
    3
  • visual studio发生了未处理的异常_打印显示灾难性故障

    visual studio发生了未处理的异常_打印显示灾难性故障【IDE-VisualStudio】灾难性故障(异常来自HRESULT0x8000FFFFEUNEXPECT

    2022年9月15日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号