学生信息管理系统 写代码用结构体和入门语句

一、实验名称
学生信息管理系统。
二、实验任务
学生信息包括学号、班级、姓名、性别、年龄、籍贯、职务、电话等(学号不重复)。
试设计“学生信息管理系统”,使之能提供(不限于)以下功能:
1.学生信息录入功能(学员信息用文件保存)
2.学生信息浏览功能
3.查询或排序功能:(至少一种查询方式)(1)按学号查询(2)按姓名查询等4.学生信息删除、修改功能
三、实验要求

  1. 回顾与复习课程相关知识点,确定该软件的功能与实现目标,分析软件需求,确定组成程序的函数模块;绘制程序流程图,完成软件代码设计;提交本实验设计报告。
  2. 只能使用C语言,源程序要有适当的注释,使程序容易阅读。

大学生作业?你这个不是课程报告吗,就算代码给你流程图会画吗

基于new bing的参考编写,参考学习:
成功测试了数据保存到文件和从文件读取,没问题!有帮助记得采纳一下哦!
【运行截图】

img


#include <stdio.h>
#include<string.h>
#include <stdlib.h> 
#define LEN sizeof(struct student)
//学生信息结构体 
struct student
{int num;
 char name[20];
 char clas[20];
 char sex[5];
 float Eng_score;
 float C_score;
 float total;
 float aver;
};
struct student stu[50];
//系统操作 
int main()
{
     void menu(); 
     void in();
     void delet();
     void updet();
     void select();
     void print();
     void sort();
     void max();
     void cut();
     void clea(); 
    menu();
    int n;
    printf("请选择功能(1-9):\n");    
    scanf("%d",&n);
    while(n)
    { 
        if(n>=1&&n<=9)
        { 
            switch(n)
            {
                 case 1:in();break;
                 case 2:delet();break; 
                 case 3:updet();break; 
                 case 4:select();break; 
                 case 5:print();break;
                 case 6:sort();break;
                 case 7:max();break;
                 case 8:cut();break;
                 case 9:clea();break;     
            }
            if(n==9)
            {
                menu();
            } 
            printf("\n");
            printf("请选择功能(1-9):"); 
            scanf("%d",&n);
        }
        
        else 
         {
             printf("\n"); 
             printf("请重新输入:");
            scanf("%d",&n);
         }
        
    }
    
        return 0;
}
//目录 
void menu()
{
     printf("\n\n\n");
     printf("\t\t-------------------------------------------------\n");
     printf("\t\t||              ----------------               ||\n"); 
     printf("\t\t||**************学生信息管理系统***************||\n");
     printf("\t\t||              ----------------               ||\n");
     printf("\t\t||                                             ||\n");
     printf("\t\t||~~~~~~~~~~~~~~~1.录入学生信息~~~~~~~~~~~~~~~~||\n");
     printf("\t\t||~~~~~~~~~~~~~~~2.删除学生信息~~~~~~~~~~~~~~~~||\n");
     printf("\t\t||~~~~~~~~~~~~~~~3.修改学生信息~~~~~~~~~~~~~~~~||\n");
     printf("\t\t||~~~~~~~~~~~~~~~4.查询学生信息~~~~~~~~~~~~~~~~||\n");
     printf("\t\t||~~~~~~~~~~~~~~~5.显示学生信息~~~~~~~~~~~~~~~~||\n");
     printf("\t\t||~~~~~~~~~~~~~~~6.排序学生信息~~~~~~~~~~~~~~~~||\n");
     printf("\t\t||~~~~~~~~~~~~~~~7.显示最好成绩~~~~~~~~~~~~~~~~||\n");
     printf("\t\t||~~~~~~~~~~~~~~~8.分组统计成绩~~~~~~~~~~~~~~~~||\n");
     printf("\t\t||~~~~~~~~~~~~~~~9.清屏~~~~~~~~~~~~~~~~~~~~~~~~||\n");
     printf("\t\t||                                             ||\n");
     printf("\t\t||*********************************************||\n");
} 
//录入学生信息 
void in()
{
    void print();
    FILE *fp;
    int i, m=0;
    char ch[2];
    if((fp=fopen("stu.txt","rb"))==NULL)
    {
           printf("文件打开失败\n");
          return;
    }
    while(!feof(fp))
    {
          if(fread(&stu[m],LEN,1,fp)==1)
         {
             m++;
        }
    }
    fclose(fp);
    if(m==0)
    {
         printf("文件没有内容\n");
    }
    else 
    {
          print();
    }                
     if((fp=fopen("stu.txt","ab+"))==NULL)
      {
           printf("文件打开失败\n");
           return; 
      }
    printf("输入学生信息(y/n);\n");
     scanf("%s",ch);
     while(strcmp(ch,"y")==0||strcmp(ch,"Y")==0)
     {  
        printf("number:\n");
         scanf("%3d",&stu[m].num);
         for(i=0;i<m;i++)
         {
            if(stu[i].num==stu[m].num)
            {
                printf("您的信息已存在\n");
                fclose(fp); 
                getchar();
                return;
            }
        }
        printf("name:\n");
        scanf("%s",stu[m].name);
        printf("class:\n");
        scanf("%s",stu[m].clas);
        printf("sex:\n");
        scanf("%s",stu[i].sex);
        printf("Eng_score:\n");
        scanf("%f",&stu[m].Eng_score);
        printf("C_score:\n");
        scanf("%f",&stu[m].C_score);
        stu[i].total=stu[i].C_score+stu[i].Eng_score;
        stu[i].aver=(stu[i].C_score+stu[i].Eng_score)/2; 
          if(fwrite(&stu[m],LEN,1,fp)!=1)
          {
              printf("不能保存\n");
            getchar(); 
          }     
          else
          {
               printf("信息保存成功\n");
               
               m++;
          }
        printf("是否继续录入学生信息(y/n):");
        scanf("%s",ch); 
    }
    fclose(fp);
} 
 
//删除学生信息 
void delet()
{   
    void print();
    FILE *fp;
    int num,m=0;
    int i,j;
    int flag=0; 
    char ch[2];
    if((fp=fopen("stu.txt","rb"))==NULL)
    {
        printf("文件打开失败\n");
        return;
    }
    while(!feof(fp))
    {
        if(fread(&stu[m],LEN,1,fp)==1)
        {
            m++;
        }
    } 
    fclose(fp);
    if(m==0)
    {
        printf("文件中没有学生信息\n");
    }
    else
    {
        print();
        printf("请输入需要删除学生信息的学号:");
        scanf("%d",&num); 
    }
    for(i=0;i<m;i++)    
    {
        if(stu[i].num==num)
        {
            printf("该学生已找到,是否删除(y/n):");
            scanf("%s",ch);
            if(strcmp(ch,"y")==0||strcmp(ch,"Y")==0)
            {
                for(j=i;j<m;j++)
                {
                    stu[j]=stu[j+1];
                }
                 m--;
                 flag=1;
                if((fp=fopen("stu.txt","wb"))==NULL)
                {
                    printf("文件打开失败\n");
                    return;
                }
                for(j=0;j<m;j++)
                {
                    if(fwrite(&stu[j],LEN,1,fp)!=1)
                    {
                        printf("不能保存\n");
                        getchar();
                    }
                }
                fclose(fp);
                printf("删除成功!\n");break;
                
            }
            else
            {
               printf("学生信息存在,不需要删除。");
               break; 
            }
        }
             
    }
    if(m==i&&flag==0) 
    {
        printf("未找到该学生");    
    }
    
}
//修改学生信息 
void updet()
{
    void print();
    int num;
    char name[10]; 
    char clas[20];
    char sex[5];
    float Eng_score;
    float C_score;    
    FILE *fp;
    int m=0,a;
    int i,j;
    if((fp=fopen("stu.txt","rb"))==NULL)
    {
        printf("文件打开失败\n");
        return;
    }
    while(!feof(fp))
    {
        if(fread(&stu[m],LEN,1,fp)==1)
        {
            m++;
        }
    }
    fclose(fp);
    if(m==0)
    {
        printf("文件中没有学生信息\n");
    } 
    else
    {
         print();
         printf("请输入需要修改学生信息的学号:");
         scanf("%d",&num); 
    }
    for(i=0;i<m;i++)
    {
         if(num==stu[i].num)
         {
          printf("1:学号,2:姓名,3:班级,4:性别,5:英语成绩,6:C语言成绩\n");
          printf("该学生已被找到,请选择需要修改的内容(1-5):");          
          scanf("%d",&a);
          while(a)
          {          
              switch (a) 
              {
                  
                  case 1:
                      printf("将%d学生的学号修改为:",num); 
                      scanf("%d",&num);
                    stu[i].num=num;
                    for(j=i+1;j<m;j++)
                    {
                        if(stu[j].num==num)
                        {
                            printf("您修改的学号已存在\n");
                            getchar();
                            return;
                        }
                    }   
                      break;
                  case 2:
                      printf("将%d学生的姓名修改为:",num); 
                      scanf("%s",name);
                      strcpy(stu[i].name,name);
                      break;    
                  case 3:
                      printf("将%d学生的班级修改为:",num); 
                      scanf("%s",clas);
                      strcpy(stu[i].clas,clas);
                      break;
                  case 4:
                      printf("将%d学生的性别修改为:",num); 
                      scanf("%s",sex);
                    strcpy(stu[i].sex,sex);   
                      break;
                case 5:
                      printf("将%d学生的英语成绩修改为:",num); 
                      scanf("%f",&Eng_score);
                      stu[i].Eng_score=Eng_score;
                      stu[i].total=stu[i].C_score+stu[i].Eng_score;
                    stu[i].aver=(stu[i].C_score+stu[i].Eng_score)/2;
                      break;
                case 6:
                      printf("将%d学生的C语言成绩修改为:",num);
                    scanf("%f",&C_score);
                    stu[i].C_score=C_score;
                    stu[i].total=stu[i].C_score+stu[i].Eng_score;
                    stu[i].aver=(stu[i].C_score+stu[i].Eng_score)/2;   
                      break;                      
                  default:
                      printf("选择错误,请重新选择需要修改的内容:");
                    scanf("%d",&a);   
                      break;
                }
              
              printf("请选择需要修改的内容(如果已修改完成请按0):");
              scanf("%d",&a);
            }
            if((fp=fopen("stu.txt","wb"))==NULL)
                {
                    printf("文件打开失败\n");
                    return;
                }
                for(j=0;j<m;j++)
                {
                    if(fwrite(&stu[j],LEN,1,fp)!=1)
                    {
                        printf("不能保存\n");
                        getchar();
                    }
                }
                fclose(fp);
                printf("修改成功!\n");
                break;         
        }
    }
    if(m==i)
    {
        printf("未找到该学生\n"); 
    }
}
//查询学生信息 
void select()
{
    int num,m=0;
    int i;
    FILE *fp;
    if((fp=fopen("stu.txt","rb"))==NULL)
    {
        printf("文件打开失败\n");
        return;
    }
    while(!feof(fp))
    {
        if(fread(&stu[m],LEN,1,fp)==1)
        {
          m++;
        }
     } 
    fclose(fp);
    if(m==0)
    {
        printf("文件没有内容\n");
        return;
    }     
    printf("请输入学生学号进行查询:");
    scanf("%d",&num);
    for(i=0;i<m;i++)
    {
        if(num==stu[i].num)
        {
            printf("\n");
            printf("该学生信息已被查到;\n");
            printf("学号\t姓名\t班级\t性别\t英语成绩\tC语言成绩\t总成绩\t平均成绩\n");
            printf("%3d\t%s\t%s\t%s\t%.2f\t\t%.2f\t\t%.2f\t %.2f\n",stu[i].num,stu[i].name,stu[i].clas,stu[i].sex,stu[i].Eng_score,stu[i].C_score,stu[i].total,stu[i].aver); 
            break; 
        }        
    }
    if(m==i)
    {
        printf("该学生信息不存在\n");
        return;
    }  
}
//显示学生信息 
void print()
{ 
  int i,m=0;
  FILE *fp;
  if((fp=fopen("stu.txt","rb"))==NULL)
  {
   printf("文件打开失败\n");
   return; 
  }
    while(!feof(fp))
 {
  if(fread(&stu[m],LEN,1,fp)==1)
      {
         m++;
     }
  }
  fclose(fp);
  if(m==0)
  {
      printf("文件中没有内容\n");
  }
   printf("学号\t姓名\t班级\t性别\t英语成绩\tC语言成绩\t总成绩\t平均成绩\n");  
   for(i=0;i<m;i++)
   {
     printf("%3d\t%s\t%s\t%s\t%.2f\t\t%.2f\t\t%.2f\t %.2f\n",stu[i].num,stu[i].name,stu[i].clas,stu[i].sex,stu[i].Eng_score,stu[i].C_score,stu[i].total,stu[i].aver);
    }
}
//排序 
void sort()
{
      int i,j,m=0;
      int ch;
      FILE *fp;
      struct student  temp;
      if((fp=fopen("stu.txt","rb"))==NULL)
      {
       printf("文件打开失败\n");
       return; 
      }
     while(!feof(fp))
     {
       if(fread(&stu[m],LEN,1,fp)==1)
          {
             m++;
         }
      }
      fclose(fp);
      if(m==0)
      {
          printf("文件中没有内容\n");
      }
        printf("1:学号升序,2:英语成绩升序,3:C语言升序,4:总成绩升序,5:平均成绩升序\n"); 
       printf("请选择显示形式:");
       scanf("%d",&ch);
       switch (ch) 
       {
           case 1:
               for(i=0;i<m;i++)
               {
               for(j=i+1;j<m;j++)
               {
                   if(stu[i].num>stu[j].num)
                   { 
                     temp=stu[i];
                     stu[i]=stu[j];
                     stu[j]=temp;                     
                    } 
               }       
            }
               break;
           case 2:
               for(i=0;i<m;i++)
            {
               for(j=i+1;j<m;j++)
               {
                       if(stu[i].Eng_score>stu[j].Eng_score)
                      { 
                           temp=stu[i];
                           stu[i]=stu[j];
                           stu[j]=temp;                     
                       } 
                   }       
            }
    
               break;
           case 3:
            for(i=0;i<m;i++)
            {
                   for(j=i+1;j<m;j++)
                   {
                       if(stu[i].C_score>stu[j].C_score)
                       { 
                           temp=stu[i];
                           stu[i]=stu[j];
                           stu[j]=temp;                     
                       } 
                   }       
            }
                   
            break;
        case 4:
            for(i=0;i<m;i++)
            {
                   for(j=i+1;j<m;j++)
                   {
                       if(stu[i].total>stu[j].total)
                       { 
                           temp=stu[i];
                           stu[i]=stu[j];
                           stu[j]=temp;                     
                       } 
                   }       
            }
                   
            break;    
        case 5:
            for(i=0;i<m;i++)
            {
                   for(j=i+1;j<m;j++)
                   {
                       if(stu[i].aver>stu[j].aver)
                       { 
                           temp=stu[i];
                           stu[i]=stu[j];
                           stu[j]=temp;                     
                       } 
                   }       
            }
                   
            break;
       }
   printf("学号\t姓名\t班级\t性别\t英语成绩\tC语言成绩\t总成绩\t平均成绩\n");  
   for(i=0;i<m;i++)
   {
     printf("%3d\t%s\t%s\t%s\t%.2f\t\t%.2f\t\t%.2f\t %.2f\n",stu[i].num,stu[i].name,stu[i].clas,stu[i].sex,stu[i].Eng_score,stu[i].C_score,stu[i].total,stu[i].aver);
    }
        
}
//最大值 
void max()
{
    int i,j=0;
    FILE *fp;
    int m=0;
    if((fp=fopen("stu.txt","rb"))==NULL)
          {
           printf("文件打开失败\n");
           return; 
          }
         while(!feof(fp))
         {
           if(fread(&stu[m],LEN,1,fp)==1)
              {
                 m++;
             }
          }
          fclose(fp);
          if(m==0)
          {
              printf("文件中没有内容\n");
          }
    for(i=0;i<m;i++)
    {
        if(stu[i].total>stu[j].total)
        j=i;
    }
    printf("总成绩成绩最高的同学是:\n");
    printf("学号\t姓名\t班级\t性别\t英语成绩\tC语言成绩\t总成绩\t平均成绩\n");
    printf("%3d\t%s\t%s\t%s\t%.2f\t\t%.2f\t\t%.2f\t %.2f\n",stu[j].num,stu[j].name,stu[j].clas,stu[j].sex,stu[j].Eng_score,stu[j].C_score,stu[j].total,stu[j].aver);
  
}
//分组统计
void cut()
{
    int i,j;
    float n;
    FILE *fp;
    int m=0;
    if((fp=fopen("stu.txt","rb"))==NULL)
          {
           printf("文件打开失败\n");
           return; 
          }
         while(!feof(fp))
         {
           if(fread(&stu[m],LEN,1,fp)==1)
              {
                 m++;
             }
          }
          fclose(fp);
          if(m==0)
          {
              printf("文件中没有内容\n");
          }
    printf("请输入按总成绩分组的值:");
    scanf("%f",&n);
    printf("总成绩大于%.2f的同学有:\n",n);
    printf("学号\t姓名\t班级\t性别\t英语成绩\tC语言成绩\t总成绩\t平均成绩\n"); 
    for(i=0;i<m;i++)
    {
        if(stu[i].total>=n)
        printf("%3d\t%s\t%s\t%s\t%.2f\t\t%.2f\t\t%.2f\t %.2f\n",stu[i].num,stu[i].name,stu[i].clas,stu[i].sex,stu[i].Eng_score,stu[i].C_score,stu[i].total,stu[i].aver);
    }
    printf("总成绩小于%.2f的同学有:\n",n);
    printf("学号\t姓名\t班级\t性别\t英语成绩\tC语言成绩\t总成绩\t平均成绩\n");
    for(j=0;j<m;j++)
    {
        if(stu[j].total<n)
        printf("%3d\t%s\t%s\t%s\t%.2f\t\t%.2f\t\t%.2f\t %.2f\n",stu[j].num,stu[j].name,stu[j].clas,stu[j].sex,stu[j].Eng_score,stu[j].C_score,stu[j].total,stu[j].aver);
    }
 } 
 //清屏
 void clea()
 {
     system("cls");
 } 

以下答案由GPT-3.5大模型与博主波罗歌共同编写:
代码如下:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MAX 100   //最大学生数

/* 定义学生结构体 */
struct student {
    char num[20];   //学号
    char name[20];  //姓名
    char sex[2];    //性别
    int age;        //年龄
    char hometown[20];  //籍贯
    char position[20];  //职务
    char phone[20]; //电话
    char class[20];     //班级
};

/* 定义学生数组 */
struct student stu[MAX];

/* 定义学生数 */
int num = 0;

/* 添加学生信息函数 */
void add_student() {
    printf("请输入学生信息:\n");
    printf("学号:");
    scanf("%s", stu[num].num);
    printf("姓名:");
    scanf("%s", stu[num].name);
    printf("性别:");
    scanf("%s", stu[num].sex);
    printf("年龄:");
    scanf("%d", &stu[num].age);
    printf("籍贯:");
    scanf("%s", stu[num].hometown);
    printf("职务:");
    scanf("%s", stu[num].position);
    printf("电话:");
    scanf("%s", stu[num].phone);
    printf("班级:");
    scanf("%s", stu[num].class);
    num++;  //学生数加一
    printf("添加成功。\n");
}

/* 查询学生信息函数 */
void search_student() {
    int choice;
    printf("请选择查询方式:\n");
    printf("1.按学号查询\n");
    printf("2.按姓名查询\n");
    scanf("%d", &choice);
    if (choice == 1) {
        char snum[20];
        printf("请输入学号:");
        scanf("%s", snum);
        int i;
        for (i = 0; i < num; i++) {
            if (strcmp(stu[i].num, snum) == 0) {
                printf("学号\t姓名\t性别\t年龄\t籍贯\t职务\t电话\t班级\n");
                printf("%s\t%s\t%s\t%d\t%s\t%s\t%s\t%s\n", stu[i].num, stu[i].name, stu[i].sex, stu[i].age, stu[i].hometown, stu[i].position, stu[i].phone, stu[i].class);
                break;
            }
        }
        if (i == num) {
            printf("没有找到学号为%s的学生。\n", snum);
        }
    }
    else if (choice == 2) {
        char sname[20];
        printf("请输入姓名:");
        scanf("%s", sname);
        int i;
        for (i = 0; i < num; i++) {
            if (strcmp(stu[i].name, sname) == 0) {
                printf("学号\t姓名\t性别\t年龄\t籍贯\t职务\t电话\t班级\n");
                printf("%s\t%s\t%s\t%d\t%s\t%s\t%s\t%s\n", stu[i].num, stu[i].name, stu[i].sex, stu[i].age, stu[i].hometown, stu[i].position, stu[i].phone, stu[i].class);
                break;
            }
        }
        if (i == num) {
            printf("没有找到姓名为%s的学生。\n", sname);
        }
    }
    else {
        printf("输入有误。\n");
    }
}

/* 修改学生信息函数 */
void modify_student() {
    char snum[20];
    printf("请输入要修改的学生的学号:");
    scanf("%s", snum);
    int i;
    for (i = 0; i < num; i++) {
        if (strcmp(stu[i].num, snum) == 0) {
            printf("请输入修改后的信息:\n");
            printf("学号:");
            scanf("%s", stu[i].num);
            printf("姓名:");
            scanf("%s", stu[i].name);
            printf("性别:");
            scanf("%s", stu[i].sex);
            printf("年龄:");
            scanf("%d", &stu[i].age);
            printf("籍贯:");
            scanf("%s", stu[i].hometown);
            printf("职务:");
            scanf("%s", stu[i].position);
            printf("电话:");
            scanf("%s", stu[i].phone);
            printf("班级:");
            scanf("%s", stu[i].class);
            printf("修改成功。\n");
            break;
        }
    }
    if (i == num) {
        printf("没有找到学号为%s的学生。\n", snum);
    }
}

/* 删除学生信息函数 */
void delete_student() {
    char snum[20];
    printf("请输入要删除的学生的学号:");
    scanf("%s", snum);
    int i, j;
    for (i = 0; i < num; i++) {
        if (strcmp(stu[i].num, snum) == 0) {
            for (j = i; j < num - 1; j++) {
                stu[j] = stu[j + 1];    //删除学生信息
            }
            printf("删除成功。\n");
            num--;  //学生数减一
            break;
        }
    }
    if (i == num) {
        printf("没有找到学号为%s的学生。\n", snum);
    }
}

/* 显示学生信息函数 */
void show_student() {
    int i;
    printf("学号\t姓名\t性别\t年龄\t籍贯\t职务\t电话\t班级\n");
    for (i = 0; i < num; i++) {
        printf("%s\t%s\t%s\t%d\t%s\t%s\t%s\t%s\n", stu[i].num, stu[i].name, stu[i].sex, stu[i].age, stu[i].hometown, stu[i].position, stu[i].phone, stu[i].class);
    }
}

/* 主函数 */
int main() {
    int choice;
    do {
        printf("****学生信息管理系统****\n");
        printf("1.添加学生信息\n");
        printf("2.查询学生信息\n");
        printf("3.修改学生信息\n");
        printf("4.删除学生信息\n");
        printf("5.显示学生信息\n");
        printf("0.退出\n");
        scanf("%d", &choice);
        switch (choice) {
        case 1:
            add_student();  //添加学生信息
            break;
        case 2:
            search_student();   //查询学生信息
            break;
        case 3:
            modify_student();   //修改学生信息
            break;
        case 4:
            delete_student();   //删除学生信息
            break;
        case 5:
            show_student();     //显示学生信息
            break;
        case 0:
            break;
        default:
            printf("输入有误,请重新输入。\n");
            break;
        }
    } while (choice != 0);
    printf("bye~\n");
    return 0;
}

这个程序是使用结构体来存储学生信息,通过函数实现了添加学生信息、查询学生信息、修改学生信息、删除学生信息、显示学生信息等多种功能。其中,查询学生信息可以按学号或姓名查询,可以根据实际需要进行选择。
如果我的回答解决了您的问题,请采纳!

以下内容引用CHATGPT、有用望采纳:

首先,我们可以定义一个结构体来存储学生信息。例如:

struct Student {
    int id; // 学号
    char name[20]; // 姓名
    char gender; // 性别
    int age; // 年龄
    char hometown[20]; // 籍贯
    char position[20]; // 职务
    char phone[20]; // 电话
};

然后,我们可以用文件来保存学生信息。例如,我们可以在文件中按行保存每个学生的信息,每个字段之间用逗号隔开。例如:

1001,计算机1班,张三,男,20,北京,班长,123456789
1002,计算机1班,李四,女,19,上海,学习委员,987654321

接下来,我们可以实现以下功能:

  1. 学生信息录入功能
    可以让用户输入学生信息,并将其写入文件中。例如:
struct Student s;
printf("请输入学号:");
scanf("%d", &s.id);
printf("请输入班级:");
scanf("%s", s.class);
printf("请输入姓名:");
scanf("%s", s.name);
printf("请输入性别:");
scanf("%c", &s.gender);
printf("请输入年龄:");
scanf("%d", &s.age);
printf("请输入籍贯:");
scanf("%s", s.hometown);
printf("请输入职务:");
scanf("%s", s.position);
printf("请输入电话:");
scanf("%s", s.phone);

FILE *fp = fopen("students.txt", "a");
fprintf(fp, "%d,%s,%s,%c,%d,%s,%s,%s\n", s.id, s.class, s.name, s.gender, s.age, s.hometown, s.position, s.phone);
fclose(fp);
  1. 学生信息浏览功能
    可以从文件中读取每个学生的信息,并将其输出到屏幕上。例如:
FILE *fp = fopen("students.txt", "r");
char line[100];
while (fgets(line, 100, fp) != NULL) {
    struct Student s;
    sscanf(line, "%d,%s,%s,%c,%d,%s,%s,%s\n", &s.id, s.class, s.name, &s.gender, &s.age, s.hometown, s.position, s.phone);
    printf("%d,%s,%s,%c,%d,%s,%s,%s\n", s.id, s.class, s.name, s.gender, s.age, s.hometown, s.position, s.phone);
}
fclose(fp);
  1. 按学号查询
    可以让用户输入学号,然后从文件中找到对应的学生信息,并将其输出到屏幕上。例如:
int id;
printf("请输入要查询的学号:");
scanf("%d", &id);

FILE *fp = fopen("students.txt", "r");
char line[100];
while (fgets(line, 100, fp) != NULL) {
    struct Student s;
    sscanf(line, "%d,%s,%s,%c,%d,%s,%s,%s\n", &s.id, s.class, s.name, &s.gender, &s.age, s.hometown, s.position, s.phone);
    if (s.id == id) {
        printf("%d,%s,%s,%c,%d,%s,%s,%s\n", s.id, s.class, s.name, s.gender, s.age, s.hometown, s.position, s.phone);
        break;
    }
}
fclose(fp);
  1. 学生信息删除、修改功能
    可以先按照上面的方式查询到要删除或修改的学生信息,然后在文件中删除或修改该行信息。例如:
int id;
printf("请输入要删除或修改的学号:");
scanf("%d", &id);

FILE *fp = fopen("students.txt", "r");
FILE *tmp = fopen("students.tmp", "w");
char line[100];
while (fgets(line, 100, fp) != NULL) {
    struct Student s;
    sscanf(line, "%d,%s,%s,%c,%d,%s,%s,%s\n", &s.id, s.class, s.name, &s.gender, &s.age, s.hometown, s.position, s.phone);
    if (s.id == id) {
        // 如果找到了要删除或修改的学生信息,则跳过该行不写入新文件中
        continue;
    }
    fprintf(tmp, "%d,%s,%s,%c,%d,%s,%s,%s\n", s.id, s.class, s.name, s.gender, s.age, s.hometown, s.position, s.phone);
}
fclose(fp);
fclose(tmp);

// 删除旧文件
remove("students.txt");
// 将新文件重命名为旧文件
rename("students.tmp", "students.txt");

以上是一个简单的学生信息管理系统的实现思路,可以根据实际需求进行修改和完善。

该回答引用ChatGPT
好的,下面是一个简单的学生信息管理系统的C语言代码示例:


#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MAX_STUDENT_NUM 100 // 最多可存储的学生信息数量
#define MAX_NAME_LENGTH 20 // 学生姓名的最大长度
#define FILE_PATH "./student_info.txt" // 存储学生信息的文件路径

// 定义学生信息结构体
typedef struct {
int id; // 学号
char name[MAX_NAME_LENGTH];// 姓名
char gender; // 性别,'M'表示男性,'F'表示女性
int age; // 年龄
char hometown[20]; // 籍贯
char position[20]; // 职务
char phone[20]; // 电话
} Student;

// 学生信息数组,用于保存所有学生的信息
Student students[MAX_STUDENT_NUM];

// 学生信息数量
int student_count = 0;

// 从文件读取学生信息
void read_student_info() {
FILE* fp = fopen(FILE_PATH, "r");
if (!fp) {
printf("打开文件失败!
");
return;
}

while (!feof(fp)) {
Student student;

// 读取并解析一行学生信息
char line[200];
fgets(line, sizeof(line), fp);
if (strlen(line) == 0) {
break;
}
sscanf(line, "%d %s %c %d %s %s %s",
&student.id, student.name, &student.gender, &student.age, student.hometown, student.position, student.phone);

students[student_count++] = student;
}

fclose(fp);
}

// 将学生信息保存到文件
void save_student_info() {
FILE* fp = fopen(FILE_PATH, "w");
if (!fp) {
printf("保存文件失败!
");
return;
}

for (int i = 0; i < student_count; i++) {
fprintf(fp, "%d %s %c %d %s %s %s
",
students[i].id, students[i].name, students[i].gender, students[i].age,
students[i].hometown, students[i].position, students[i].phone);
}

fclose(fp);
}

// 根据学号查询学生信息
void query_by_id(int id) {
for (int i = 0; i < student_count; i++) {
if (students[i].id == id) {
printf("学号:%d
", students[i].id);
printf("姓名:%s
", students[i].name);
printf("性别:%c
", students[i].gender);
printf("年龄:%d
", students[i].age);
printf("籍贯:%s
", students[i].hometown);
printf("职务:%s
", students[i].position);
printf("电话:%s
", students[i].phone);
return;
}
}
printf("未查询到该学号的学生信息。
");
}

// 根据姓名查询学生信息
void query_by_name(char* name) {
for (int i = 0; i < student_count; i++) {
if (strcmp(students[i].name, name) == 0) {
printf("学号:%d
", students[i].id);
printf("姓名:%s
", students[i].name);
printf("性别:%c
", students[i].gender);
printf("年龄:%d
", students[i].age);
printf("籍贯:%s
", students[i].hometown);
printf("职务:%s
", students[i].position);
printf("电话:%s
", students[i].phone);
return;
}
}
printf("未查询到该姓名的学生信息。
");
}

// 输出所有学生信息
void print_all() {
for (int i = 0; i < student_count; i++) {
printf("学号:%d
", students[i].id);
printf("姓名:%s
", students[i].name);
printf("性别:%c
", students[i].gender);
printf("年龄:%d
", students[i].age);
printf("籍贯:%s
", students[i].hometown);
printf("职务:%s
", students[i].position);
printf("电话:%s
", students[i].phone);
printf("
");
}
}

// 添加一个学生信息
void add_student() {
if (student_count == MAX_STUDENT_NUM) {
printf("已达到最大学生信息数量,无法继续添加!
");
return;
}

Student student;
printf("请输入学号:");
scanf("%d", &student.id);

// 检查学号是否已存在
for (int i = 0; i < student_count; i++) {
if (students[i].id == student.id) {
printf("该学号已存在!
");
return;
}
}

printf("请输入姓名:");
scanf("%s", student.name);
printf("请输入性别(M或F):");
scanf("%s", &student.gender);
printf("请输入年龄:");
scanf("%d", &student.age);
printf("请输入籍贯:");
scanf("%s", student.hometown);
printf("请输入职务:");
scanf("%s", student.position);
printf("请输入电话:");
scanf("%s", student.phone);

students[student_count++] = student;
save_student_info();
}

// 删除一个学生信息
void delete_student() {
int id_to_delete;
printf("请输入要删除的学生的学号:");
scanf("%d", &id_to_delete);

int index_to_delete = -1;
for (int i = 0; i < student_count; i++) {
if (students[i].id == id_to_delete) {
index_to_delete = i;
break;
}
}

if (index_to_delete == -1) {
printf("未查询到该学号的学生信息,无法删除。
");
return;
}

for (int i = index_to_delete; i < student_count - 1; i++) {
students[i] = students[i + 1];
}
student_count--;
save_student_info();
printf("删除成功!
");
}

// 修改一个学生信息
void modify_student() {
int id_to_modify;
printf("请输入要修改的学生的学号:");
scanf("%d", &id_to_modify);

int index_to_modify = -1;
for (int i = 0; i < student_count; i++) {
if (students[i].id == id_to_modify) {
index_to_modify = i;
break;
}
}

if (index_to_modify == -1) {
printf("未查询到该学号的学生信息,无法修改。
");
return;
}

Student* student_to_modify = &students[index_to_modify];
printf("请输入姓名(留空表示不修改):");
char name[MAX_NAME_LENGTH];
int res = scanf("%s", name);
if (strlen(name) > 0) {
strcpy(student_to_modify->name, name); // 修改姓名
}

printf("请输入性别(M或F,留空表示不修改):");
char gender[2];
res = scanf("%s", gender);
if (res > 0) {
student_to_modify->gender = gender[0]; // 修改性别
}

printf("请输入年龄(留空表示不修改):");
res = scanf("%d", &student_to_modify->age); // 修改年龄

printf("请输入籍贯(留空表示不修改):");
res = scanf("%s", student_to_modify->hometown); // 修改籍贯

printf("请输入职务(留空表示不修改):");
res = scanf("%s", student_to_modify->position); // 修改职务

printf("请输入电话(留空表示不修改):");
res = scanf("%s", student_to_modify->phone); // 修改电话

save_student_info();
printf("修改成功!
");
}

int main() {
// 从文件读取学生信息
read_student_info();

// 显示菜单
printf("学生信息管理系统
");
printf("==================
");
printf("1. 添加学生信息
");
printf("2. 删除学生信息
");
printf("3. 修改学生信息
");
printf("4. 查询学生信息(按学号)
");
printf("5. 查询学生信息(按姓名)
");
printf("6. 显示所有学生信息
");
printf("7. 退出
");

// 循环处理用户输入
int choice = 0;
while (choice != 7) {
printf("请输入要执行的操作的编号:");
scanf("%d", &choice);

switch (choice) {
case 1:
add_student();
break;
case 2:
delete_student();
break;
case 3:
modify_student();
break;
case 4:
printf("请输入要查询的学生的学号:");
int id_to_query;
scanf("%d", &id_to_query);
query_by_id(id_to_query);
break;
case 5:
printf("请输入要查询的学生的姓名:");
char name_to_query[MAX_NAME_LENGTH];
scanf("%s", name_to_query);
query_by_name(name_to_query);
break;
case 6:
print_all();
break;
case 7:
exit(0); // 退出程序
default:
printf("无效的输入,请重新输入!
");
break;
}
}

return 0;
}


此代码包含根据学号和姓名查询学生信息、添加、删除、修改学生信息和显示所有学生信息的功能。其中,学生信息会以文本文件的形式存储在指定路径下(可在代码中修改),读取和保存学生信息的部分由`read_student_info`和`save_student_info`函数完成。