当前位置:首页 » 《资源分享》 » 正文

学生信息管理系统——C语言版

15 人参与  2024年03月25日 10:30  分类 : 《资源分享》  评论

点击全文阅读


一.开发环境需求 

操作系统:Windows 7,Windows 10,Windows 11。

开发环境工具:Cfree,Dev C++,VC6++。

开发语言:C语言。

二. 功能需求 

制作一个学生信息管理系统。在制作的系统中,能录入学生信息、删除学生信息、修改学生信息,查询学生信息、排序学生信息。系统使用方法便捷,简单,功能容易实现。学生的信息包括:学号、姓名、班级、性别、英语成绩,C语言成绩,平均成绩,总成绩避免系统bug的出现,优化系统。

三.功能说明 

录入学生信息:将学生的信息输入到学生信息管理系统中。

删除学生信息:将学生信息管理系统中不需要的学生信息删除。

修改学生信息:在学生信息管理系统中修改学生的部分信息。

查询学生信息:在学生信息管理系统中输入需求显示查询结果。

显示学生信息:在学生信息管理系统中按需求显示所有学生信息。

排序学生信息:按一定规律对学生信息进行排序。

显示最好成绩:显示所有学生中总成绩最高的同学。

分组统计成绩:按照总成绩进行分组统计。

清屏:清除以上操作结果。

四.构造算法框架

  1.构造功能框架

此步是将系统主要功能的算法框架建立出来(只是框架,不需要实现功能)

//学生信息结构体 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(){}//录入学生信息void in(){}//删除学生信息 void delet(){}//查找学生信息void updet(){}//修改学生信息void select(){}//显示所有学生信息void print(){}//排序void sort(){}//显示最大值void max(){}//分组统计void cut(){}//清屏void clea(){}

 2.设计系统目录

按照学生信息管理系统的功能进行设计,将学生信息管理系统的功能呈现出来,供用户选择。

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");} 

运行结果 

五.在框架的基础上一一实现各项功能  

1. 录入学生信息:将学生的信息输入到学生信息管理系统中,并保存到文件中。

//录入学生信息 void in(){void print();FILE *fp;int i, m=0;char ch[2];if((fp=fopen("stu.txt","rb"))==NULL)//文件不存在先使用wb创建文件,再将其改为rb;反之使用直接使用rb。{   printf("文件打开失败\n");  return;    }while(!feof(fp)){  if(fread(&stu[m],LEN,1,fp)==1) { m++;}}//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);//注意,打开文件后,操作完成后,必须关闭文件} 

运行结果

2.删除学生信息:将学生信息管理系统中不需要的学生信息删除,在删除完成后需将学生人数进行减一。

//删除学生信息 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("未找到该学生");}}

运行结果 

3.修改学生信息:在学生信息管理系统中修改学生的部分信息。

//修改学生信息 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"); }}

运行结果 

4.查询学生信息:在学生信息管理系统中输入需求显示查询结果。

//查询学生信息 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;}  }

运行结果 

5.显示学生信息:在学生信息管理系统中按需求显示所有学生信息。

//显示学生信息 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);    }}

运行结果 

  

6.排序学生信息:按一定规律对学生信息进行排序。

//排序 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);    }    }

运行结果 

  

7.显示最好成绩:显示所有学生中总成绩最高的同学。

//最大值 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);  }

运行结果 

  

8.分组统计成绩:按照总成绩进行分组统计。 

//分组统计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);} } 

运行结果 

  

9.清屏:清除以上操作结果。

//清屏 void clea() { system("cls"); } 

六.源代码

#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"); } 

七.总结

以上就是使用C语言编写的学生信息管理系统,在制作系统的过程中也遇到过很多的问题。

可能在第一次制作系统的时候,很可能是没有头绪的,这个时候我们不要放弃,开始没有头绪是正常的,此时我们应该静下心来去分析系统的功能,将思路打开,画出流程图,将系统的基本框架算法编译出来,然后逐个功能去分析去实现,大胆的将自己想到的算法编译出来,然后再逐个优化,最后一定能制作出一个非常好的系统。

在制作学生管理系统时,各项功能的实现一定要在心中有一个大概的流程,然后再使用C语言进行编译,在进行文件的的读和写操作后都要记得关闭文件,要理解各种函数的作用和意义,这样帮助我们更好的制作出想要的系统。


点击全文阅读


本文链接:http://zhangshiyu.com/post/85116.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1