学生成绩管理系统(C语言)

avatar
作者
猴君
阅读量:0

 系统分析

1. 主菜单的实现2. 增加人员功能的实现3. 删除数据功能的实现4. 编辑人员功能的实现5. 排序功能的实现6. 输出功能7. 查找信息功能

具体代码

#include <stdio.h> #include <string.h> #include <stdlib.h> #define SIZE 100000   typedef struct  tagStudent {   int n;                    /*顺序号*/   int nNum;                 /*学号*/   char name[10];            /*姓名*/   int iCn;                  /*语文成绩*/   int iMaths;               /*数学成绩*/   int iEn;                  /*英语成绩*/   int iPhy;                 /*物理成绩*/   int iCom;                 /*计算机成绩*/   float fAvage;             /*平均成绩*/ } Student;  Student stu[SIZE]; /*录入数据*/ void Student_Input() {    int i,p;     FILE *fp;   fp=fopen("studentfile.dat","wb");                         for(i=0;i<SIZE;i++)   {      printf("\n\r请输入序号i(当输入i=-1时,返回),i=",i++);     scanf("%d",&i);     if(i==-1|| i ==0)                    {       fclose(fp);              return;     }     else                                           {        printf("\n\r请输入学号(数字型):");       scanf("%d",&stu[i].nNum);       printf("\n\r请输入姓名(字符型):");       scanf("%s",stu[i].name);       printf("\n\r请输入语文成绩(0~100):");       scanf("%d",&stu[i].iCn);       printf("\n\r请输入数学成绩(0~100):");       scanf("%d",&stu[i].iMaths);       printf("\n\r请输入英语成绩:(0~100)");       scanf("%d",&stu[i].iEn);       printf("\n\r请输入物理成绩:(0~100)");       scanf("%d",&stu[i].iPhy);       printf("\n\r请输入计算机成绩(0~100):");       scanf("%d",&stu[i].iCom);       stu[i].fAvage=(stu[i].iCn+stu[i].iMaths+stu[i].iEn+stu[i].iPhy+stu[i].iCom)/5.0;       stu[i].n=i+1;       fwrite(&stu[i],sizeof(Student),1,fp);     }   }   fclose(fp); }  /*输出数据*/ void Student_ListOut() {   FILE *fp;   int i;   fp=fopen("studentfile.dat","rb");                          printf("***********************************************************************\n");   printf("    成绩列表\n");   printf("-----------------------------------------------------------------------\n");   printf("序号  学号     姓名    语文    数学    英语    物理    计算机    平均\n");   printf("-----------------------------------------------------------------------\n");   for(i=0;fread(&stu[i],sizeof(Student),1,fp)==1;i++)   {     printf("%d%8d%8s%8d%8d%8d%8d%8d%10.2f\n",stu[i].n,stu[i].nNum,stu[i].name,stu[i].iCn,       stu[i].iMaths,stu[i].iEn,stu[i].iPhy,stu[i].iCom,stu[i].fAvage);   }   printf("-----------------------------------------------------------------------\n");   fclose(fp); }  /*查找数据*/ void Student_Search() {   FILE *fp;   int i,num;   fp=fopen("studentfile.dat","rb");       rewind(fp);   printf("请输入要查找的学号:");   scanf("%d",&num);   printf("***********************************************************************\n");   printf("    查询结果\n");   printf("-----------------------------------------------------------------------\n");   printf("序号  学号     姓名    语文    数学    英语    物理    计算机    平均\n");   printf("-----------------------------------------------------------------------\n");   for(i=0;i<=SIZE;i++)     if(stu[i].nNum==num)     {       printf("%d%8d%8s%8d%8d%8d%8d%8d%10.2f\n",stu[i].n,stu[i].nNum,stu[i].name,stu[i].iCn,         stu[i].iMaths,stu[i].iEn,stu[i].iPhy,stu[i].iCom,stu[i].fAvage);     }     printf("-----------------------------------------------------------------------\n");     printf("***********************************************************************\n");     fclose(fp); }  /*增加数据*/ void Student_Add() {   int i,s;   FILE *fp;   fp=fopen("studentfile.dat","ab+");       rewind(fp);   printf("***********************************************************************\n");   printf("      成绩列表\n");   printf("-----------------------------------------------------------------------\n");   printf("序号  学号     姓名    语文    数学    英语    物理    计算机    平均\n");   printf("-----------------------------------------------------------------------\n");   for(i=0;fread(&stu[i],sizeof(Student),1,fp)==1;i++)   {     printf("%d%8d%8s%8d%8d%8d%8d%8d%10.2f\n",stu[i].n,stu[i].nNum,stu[i].name,stu[i].iCn,       stu[i].iMaths,stu[i].iEn,stu[i].iPhy,stu[i].iCom,stu[i].fAvage);   }   printf("***********************************************************************\n");   s=i;   for(i=s;i<SIZE;i++)   {     printf("输入序号i(当输入i=-1时,返回),i=",i);     scanf("%d",&i);     if(i==-1|| i ==0)                                       {       fclose(fp);       return;     }     else     {       printf("\n\r请输入学号(数字型):");       scanf("%d",&stu[i].nNum);       printf("\n\r请输入姓名(字符型):");       scanf("%s",stu[i].name);       printf("\n\r请输入语文成绩(0~100):");       scanf("%d",&stu[i].iCn);       printf("\n\r请输入数学成绩(0~100):");       scanf("%d",&stu[i].iMaths);       printf("\n\r请输入英语成绩:(0~100)");       scanf("%d",&stu[i].iEn);       printf("\n\r请输入物理成绩:(0~100)");       scanf("%d",&stu[i].iPhy);       printf("\n\r请输入计算机成绩(0~100):");       scanf("%d",&stu[i].iCom);       stu[i].fAvage=(stu[i].iCn+stu[i].iMaths+stu[i].iEn+stu[i].iPhy+stu[i].iCom)/5.0;       stu[i].n=i+1;       fwrite(&stu[i],sizeof(Student),1,fp);       printf("%d%8d%8s%8d%8d%8d%8d%8d%10.2f\n",stu[i].n,stu[i].nNum,stu[i].name,stu[i].iCn,         stu[i].iMaths,stu[i].iEn,stu[i].iPhy,stu[i].iCom,stu[i].fAvage);     }   }   fclose(fp); } /*删除数据*/ void Student_Delete() {    FILE *fp;   int i,num,n;   int total =0;   int flag=0;       fp=fopen("studentfile.dat","rb");   printf("***********************************************************************\n");   printf("      成绩列表\n");   printf("-----------------------------------------------------------------------\n");   printf("序号  学号     姓名    语文    数学    英语    物理    计算机    平均\n");   printf("-----------------------------------------------------------------------\n");   for(i=0;fread(&stu[i],sizeof(Student),1,fp)==1;i++)   {     printf("%d%8d%8s%8d%8d%8d%8d%8d%10.2f\n",stu[i].n,stu[i].nNum,stu[i].name,stu[i].iCn,       stu[i].iMaths,stu[i].iEn,stu[i].iPhy,stu[i].iCom,stu[i].fAvage);   }   printf("-----------------------------------------------------------------------\n");   printf("***********************************************************************\n");   fclose(fp);      total = i-1;      printf("请输入要删除学生的学号:");   scanf("%d",&num);   for(i=0;i<=SIZE;i++)     if(stu[i].nNum==num)     {       printf("***********************************************************************\n");       printf("要删除的学生信息\n");       printf("-----------------------------------------------------------------------\n");       printf("序号  学号     姓名    语文    数学    英语    物理    计算机    平均\n");       printf("-----------------------------------------------------------------------\n");       printf("%d%8d%8s%8d%8d%8d%8d%8d%10.2f\n",stu[i].n,stu[i].nNum,stu[i].name,stu[i].iCn,         stu[i].iMaths,stu[i].iEn,stu[i].iPhy,stu[i].iCom,stu[i].fAvage);       printf("-----------------------------------------------------------------------\n");       printf("***********************************************************************\n");       n=i+1;       flag=1;       break;     }   if(flag==0)     {       printf("***********************************************************************\n");       printf("    输入错误!\n");       printf("    请返回!\n");       printf("***********************************************************************\n");       return;     }     printf("\n\n\n");       for(i=n;i<=total;i++)     {       memcpy(&stu[i-1],&stu[i],sizeof(Student));     }     memset(&stu[total],0,sizeof(Student));          fp=fopen("studentfile.dat","wb+");     for(i=0;i<total;i++)     {       fwrite(&stu[i],sizeof(Student),1,fp);     }         fclose(fp);          fp=fopen("studentfile.dat","rb");     printf("***********************************************************************\n");     printf("当前成绩列表\n");     printf("-----------------------------------------------------------------------\n");     printf("序号  学号     姓名    语文    数学    英语    物理    计算机    平均\n");     printf("-----------------------------------------------------------------------\n");     for(i=0;fread(&stu[i],sizeof(Student),1,fp)==1;i++)     {       printf("%d%8d%8s%8d%8d%8d%8d%8d%10.2f\n",stu[i].n,stu[i].nNum,stu[i].name,stu[i].iCn,         stu[i].iMaths,stu[i].iEn,stu[i].iPhy,stu[i].iCom,stu[i].fAvage);     }     printf("-----------------------------------------------------------------------\n");     printf("***********************************************************************\n");     fclose(fp); } /*修改数据*/ void Student_Change() {    FILE *fp;   int i,num,n;   int flag=0;       printf("请输入要修改学生的学号:");   scanf("%d",&num);   for(i=0;i<=SIZE;i++)     if(stu[i].nNum==num)     {       printf("***********************************************************************\n");       printf("      成绩列表\n");       printf("-----------------------------------------------------------------------\n");       printf("序号  学号     姓名    语文    数学    英语    物理    计算机    平均\n");       printf("-----------------------------------------------------------------------\n");       printf("%d%8d%8s%8d%8d%8d%8d%8d%10.2f\n",stu[i].n,stu[i].nNum,stu[i].name,stu[i].iCn,         stu[i].iMaths,stu[i].iEn,stu[i].iPhy,stu[i].iCom,stu[i].fAvage);       printf("-----------------------------------------------------------------------\n");       printf("***********************************************************************\n");       n=i+1;       flag=1;       break;     }     if(flag==0)     {       printf("***********************************************************************\n");       printf("    输入错误!\n");       printf("    请返回!\n");       printf("***********************************************************************\n");       return;     }     printf("\n\n\n");       fp=fopen("studentfile.dat","rb+");     fseek(fp,n*sizeof(Student),0);     printf("\n\r请输入学号(数字型):");     scanf("%d",&stu[i].nNum);     printf("\n\r请输入姓名(字符型):");     scanf("%s",stu[i].name);     printf("\n\r请输入语文成绩(0~100):");     scanf("%d",&stu[i].iCn);     printf("\n\r请输入数学成绩(0~100):");     scanf("%d",&stu[i].iMaths);     printf("\n\r请输入英语成绩:(0~100)");     scanf("%d",&stu[i].iEn);     printf("\n\r请输入物理成绩:(0~100)");     scanf("%d",&stu[i].iPhy);     printf("\n\r请输入计算机成绩(0~100):");     scanf("%d",&stu[i].iCom);     stu[i].fAvage=(stu[i].iCn+stu[i].iMaths+stu[i].iEn+stu[i].iPhy+stu[i].iCom)/5.0;     stu[i].n=i+1;     fwrite(&stu[i],sizeof(Student),1,fp);     fclose(fp);     fp=fopen("studentfile.dat","rb");     printf("***********************************************************************\n");     printf("      成绩列表\n");     printf("-----------------------------------------------------------------------\n");     printf("序号  学号     姓名    语文    数学    英语    物理    计算机    平均\n");     printf("-----------------------------------------------------------------------\n");     for(i=0;fread(&stu[i],sizeof(Student),1,fp)==1;i++)     {       printf("%d%8d%8s%8d%8d%8d%8d%8d%10.2f\n",stu[i].n,stu[i].nNum,stu[i].name,stu[i].iCn,         stu[i].iMaths,stu[i].iEn,stu[i].iPhy,stu[i].iCom,stu[i].fAvage);     }     printf("-----------------------------------------------------------------------\n");     printf("***********************************************************************\n");     fclose(fp); }  /*成绩排序*/ void Student_Order() {   int i,j,n;   FILE *fp;   Student t;   fp=fopen("studentfile.dat","rb");   printf("***********************************************************************\n");   printf("      成绩列表\n");   printf("-----------------------------------------------------------------------\n");   printf("序号  学号     姓名    语文    数学    英语    物理    计算机    平均\n");   printf("-----------------------------------------------------------------------\n");   for(i=0;fread(&stu[i],sizeof(Student),1,fp)==1;i++)   {     printf("%d%8d%8s%8d%8d%8d%8d%8d%10.2f\n",stu[i].n,stu[i].nNum,stu[i].name,stu[i].iCn,       stu[i].iMaths,stu[i].iEn,stu[i].iPhy,stu[i].iCom,stu[i].fAvage);   }   printf("-----------------------------------------------------------------------\n");   printf("***********************************************************************\n");   fclose(fp);   n=i;   for(i=0;i<n;i++)     for(j=i+1;j<n;j++)       if(stu[i].fAvage<stu[j].fAvage)       {         t=stu[i];         stu[i]=stu[j];         stu[j]=t;       }       fp=fopen("studentfile.dats","wb");       printf("\n\n\n");       printf("***********************************************************************\n");       printf("      成绩列表\n");       printf("-----------------------------------------------------------------------\n");       printf("序号  学号     姓名    语文    数学    英语    物理    计算机    平均\n");       printf("-----------------------------------------------------------------------\n");       for(i=0;i<n;i++)       {         printf("%d%8d%8s%8d%8d%8d%8d%8d%10.2f\n",stu[i].n,stu[i].nNum,stu[i].name,stu[i].iCn,           stu[i].iMaths,stu[i].iEn,stu[i].iPhy,stu[i].iCom,stu[i].fAvage);         fwrite(&stu[i],sizeof(Student),1,fp);       }       printf("***********************************************************************\n");       fclose(fp); } /*主函数*/ main() {   int n;   for(;;)   {     printf("\n");     printf("/******************************************\\\n");     printf("*                                          *\n");     printf("*             学生信息管理系统             *\n");     printf("*                  主菜单                  *\n");     printf("*                                          *\n");     printf("*                1.录入数据                *\n");     printf("*                2.删除数据                *\n");     printf("*                3.输出数据                *\n");     printf("*                4.查找数据                *\n");     printf("*                5.增加数据                *\n");     printf("*                6.修改数据                *\n");     printf("*                7.成绩排序                *\n");       printf("*                8.退出系统                *\n");      printf("*                                          *\n");     printf("\\******************************************/\n\n");     printf("请输入选择项(1-8):");     scanf("%d",&n);     printf("\n\n\n\n");     if(n>0&&n<=8)     {       switch(n)       {       case 1:Student_Input();break;       case 2:Student_Delete();break;       case 3:Student_ListOut();break;       case 4:Student_Search();break;       case 5:Student_Add();break;       case 6:Student_Change();break;       case 7:Student_Order();break;         case 8:exit(0);         }     }     else      {       printf("***********************************************************************\n");       printf("*                                                                      *\n");       printf("*                             按任意键                                *\n");       printf("*                               退出!                                 *\n");       printf("*                                                                      *\n");       printf("***********************************************************************\n");       break;     }   } }  

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!