学生成绩管理系统C语言代码实现

C语言实现了学生成绩管理系统,可以进行学生成绩的增加,删除,更新,查询,计算和展示。

完整代码如下:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct person //定义结构体
{
 char num[10]; //学号
 char name[20]; //姓名
 float cyuyan; //C语言成绩
 float en; //物理学成绩
 float ji; //原子物理成绩
 float guti; //固体物理成绩
 float cailiao; //材料学成绩
}person;
person per[200]; //定义100
char filename[20]; //定义全局变量
 void logon() //登陆函数 使系统更显完善
{
 printf("\n\n\n\t\t\t 学生信息管理系统\n\n");
 printf("\t\t\t 版本号:2.0\n\n");
 printf("\n\n\n\n\t\t\t 2012年3月10日\n\n");
 printf("\t\t\t C区**栋514寝\n");
 printf("\n\n\t\t\t Ace_cm_liu\n");
 printf("\n\n\t\t\t 导演兼制作\n");
 //system("pause");
}
/*void menu_filename()
 {
 system("cls");
 printf("请输入你要操作的文件名:");
 scanf("\t%s",filename);
 } */
 //*********************************************************************//
 //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^//
int menu_select() //菜单选择系统函数
{
 char c;
 do{
 //system("cls");
 printf("\t\t ╭═════════■□■□═══╮\n");
 printf("\t\t│  学生信息管理系统  │\n");
 printf("\t\t╰═══■□■□══════════╯\n");
 printf("\t\t ┌─────────────-┐\n");
 printf("\t\t │ 1. 添加记录 2. 显示记录 │\n");
 printf("\t\t │    │\n");
 printf("\t\t │ 3. 信息查询 4. 数据计算 │\n");
 printf("\t\t │    │\n");
 printf("\t\t │ 5. 修改记录 6. 删除记录 │\n");
 printf("\t\t │    │\n");
 printf("\t\t │ 0. 退出程序  │\n");
 printf("\t\t └─────────────-┘\n");
 printf("\t\t请您选择(0-6):");
 c=getchar();
 }while(c<'0'||c>'6');
 return (c-'0'); //字符减去'0'得到的是数字整型//
} 

 //*********************************************************************//
 //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^// 

void add()     //成绩的录入与添加函数
 {
 FILE *fp;
 int i=0,n=0;
 char sign='y'; //首先定义sing='y'
 system("cls");
 person p[200] ; //清屏函数 系统中调用
 while(sign!='n'&&sign!='N') //其实只有当输入N或n时才跳出循环
 {
 printf("  ----学生纪录添加----\n");
 printf("姓名:\n");
 scanf("\t%s",p[i].name);
 printf("学号:\n");
 scanf("\t%s",p[i].num);
 printf("C语言:\n");
 scanf("\t%f",&p[i].cyuyan);
 printf("物理学:\n");
 scanf("\t%f",&p[i].en);
 printf("原子物理:\n");
 scanf("\t%f",&p[i].ji);
 printf("固体物理:\n");
 scanf("\t%f",&p[i].guti);
 printf("材料学:\n");
 scanf("\t%f",&p[i].cailiao);
 printf("是否继续添加?(y/n)");
 scanf("\t%c",&sign);
 i++;
 n=n+1;
 system( "cls ");
 }system("pause"); //等待命令 

 if((fp=fopen("studata.txt","a"))==NULL)//以2进制形式进行文件尾追加//
 {
  printf("cannot open the files\n");
  system("pause");
  return; //如果文件出现错误 就返回
 }
 for(i=0;i<n;i++)
 {
  fprintf(fp,"%s %s %f %f %f %f %f\n",p[i].name,p[i].num,p[i].cyuyan,p[i].en,p[i].ji,p[i].guti,p[i].cailiao); //以2进制形式写入文件中//一次写入一个数组// 

 }
 //printf("file write error\n");
 fclose(fp); //关闭文件
 system("pasue");
 }
 //*********************************************************************//
 //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^//
 void scan()   //显示记录 进行全面信息浏览
 {
 void amend();
   //声明修改函数//
 char sign='y';
 FILE *fp;
 int n;
 system("cls");
 if((fp=fopen("studata.txt","r"))==NULL) //以2进制方式读取文件信息//
 {
  printf("cannot open the files\n");
  system("pause");
  return;
 } 

 int i=0;
 while(fscanf(fp,"%s%s%f%f%f%f%f",per[i].name,per[i].num,&per[i].cyuyan,&per[i].en,&per[i].ji,&per[i].guti,&per[i].cailiao)!=EOF)
 { 

 printf("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n");
 printf(" 姓名  学号 C语言 物理学 原子物理 固体物理 材料学\n");
 printf("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n");
 printf("%s %s %f %f %f %f %f\n",per[i].name,per[i].num,per[i].cyuyan,per[i].en,per[i].ji,per[i].guti,per[i].cailiao);
 printf("\n");
  i++;
 }
 system("pause");
 system("cls");
 printf("是否需要修改?(y/n)");
 scanf("\t%c",&sign);
 if(sign!='n'&&sign!='N') //选择是否在浏览后进行修改//
 amend();
 system("pause"); 

 } 

 //*********************************************************************//
 //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^//
     //数据查询//
 void query()//学生信息的不同方式查询
 {
 system("cls");
 person p[200];
 FILE *fp1;
 int i=0;
 int n=0;
 int m;
 printf("\t\n请选择查询方式:\n");
 printf("\t┌──────┐\n");
 printf("\t│1--模糊查询 │\n");
 printf("\t│2------姓名 │\n");
 printf("\t│3------学号 │\n");
 printf("\t│4------返回 │\n");
 printf("\t└──────┘\n");
 printf("请输入你要查询的方式\n");
 scanf("%d",&m);
 while(m!=1&&m!=2&&m!=3&&m!=4)
  {
  printf("输入错误请重新查询\n");
  scanf("%d",&m);
  }
  if((fp1=fopen("studata.txt","r"))==NULL)//以2进制方式读取文件信息//
  {
  printf("cannot open the files\n");
  } 

 while(fscanf(fp1,"%s%s%f%f%f%f%f",p[i].name,p[i].num,&p[i].cyuyan,&p[i].en,&p[i].ji,&p[i].guti,&p[i].cailiao)!=EOF)
 {
  i++;
  n=n+1;
 } 

 if(m==1) //模糊查询
 {
 char s[3]; //定义输入的文字所占的字节 /一个汉字占2个字节 外加一结尾符此处小心溢出
 int i=0;
 system("cls");
 printf("\t请输入想查询的姓:");
 scanf("%s",s);
 for(i=0;i<n-1;i++) //文件信息已经读取到数组中 此处进行循环用于下一语句的查找
 { 

  if(p[i].name[0]==s[0]&&p[i].name[1]==s[1]) //比较per[i].name与所输入的前俩个字符是否相同//
  {
   printf("\t学号: %s\n",p[i].num);
  printf("\t姓名: %s\n",p[i].name);
  printf("\tC语言: %f\n",p[i].cyuyan);
  printf("\t物理学: %f\n",p[i].en);
  printf("\原子物理: %f\n",p[i].ji);
  printf("\t固体物理: %f\n",p[i].guti);
  printf("\t材料学: %f\n",p[i].cailiao);
  }
 }
 } 

 if(m==2) //姓名查询
 {
 char s[20];
 int j=0;
 printf("\t请输入想查询的姓名:");
 scanf("\t%s",s);
 while(strcmp(p[j].name,s)!=0&&j<n) j++; //比较per[i].name与所输入姓名是否相同//
 if(j==n)
 {
  printf("无");
 }
  printf("\t学号: %s\n",p[j].num);
  printf("\t姓名: %s\n",p[j].name);
  printf("\tC语言: %f\n",p[j].cyuyan);
  printf("\t物理学: %f\n",p[j].en);
  printf("\原子物理: %f\n",p[j].ji);
  printf("\t固体物理: %f\n",p[j].guti);
  printf("\t材料学: %f\n",p[j].cailiao); 

 }
 if(m==3) //学号查询
 {
  char s[15];
  int i=0;
  printf("请输入想查询的学号:");
  scanf("\t%s",s); 

  while(strcmp(p[i].num,s)!=0&&i<n) //比较per[i].name与所输入学号是否相同//
  i++;
  if(i==n)
  {
  printf("\t通讯录中没有此人!\n");
  system("pause");
  return;
  }
   printf("\t学号: %s\n",p[i].num);
  printf("\t姓名: %s\n",p[i].name);
  printf("\tC语言: %f\n",p[i].cyuyan);
  printf("\t物理学: %f\n",p[i].en);
  printf("\原子物理: %f\n",p[i].ji);
  printf("\t固体物理: %f\n",p[i].guti);
  printf("\t材料学: %d\f",p[i].cailiao);
  }
  fclose(fp1);
  system("pause");
 } 

 void date()
 {
 person per[200];
 FILE *fp;
 struct person temp; //定义临时数组用于交换时存放数组信息用于后面的交换//
 float sum; //总分
 float s[200];
 int i=0,n=0;
 int j,k,t;
 int m;
 system("cls");
 printf("\t\n选择排序方式:\n");
 printf("\t┌──────┐\n");
 printf("\t│1----物理学 │\n");
 printf("\t│2--原子物理 │\n");
 printf("\t│3---C语言 │\n");
 printf("\t│4--固体物理 │\n");
 printf("\t│5----材料学 │\n");
 printf("\t│6---- 总分 │\n");
 printf("\t│7------返回 │\n");
 printf("\t└──────┘\n");
 printf("请输入你要排序的方式\n");
 scanf("%d",&m);
 system("cls");
 while(m!=1&&m!=2&&m!=3&&m!=4&&m!=5&&m!=6&&m!=7)
 {
  printf("输入错误请重新输入\n");
  scanf("%d",&m);
 }
 if((fp=fopen("studata.txt","r"))==NULL)//以2进制方式读取文件信息//
 {
  printf("cannot open the files\n");
  system("pause");
  return;
 } 

 while(fscanf(fp,"%s%s%f%f%f%f%f",per[i].name,per[i].num,&per[i].cyuyan,&per[i].en,&per[i].ji,&per[i].guti,&per[i].cailiao)!=EOF)
 {
  i++;
  n=n+1;
 }
 if(m==1)
 {
  for(int i=0;i<n-1;i++)    //采用冒泡法进行排序//
  {
  k=i;
  for(j=i+1;j<n;j++)
  if(per[j].en>per[k].en)    //排序//比较大小//
  k=j;
  temp=per[k];per[k]=per[i];per[i]=temp;   //当符合条件时进行数据交换//
  }
  printf("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n");
  printf(" 姓名  学号 C语言 物理学 原子物理 固体物理 材料学\n");
  printf("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n");
  for(int i=0;i<n-1;i++)
  {
  printf("%s %s %f %f %f %f %f\n",per[i].name,per[i].num,per[i].cyuyan,per[i].en,per[i].ji,per[i].guti,per[i].cailiao);
  printf("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n");
  } 

  fclose(fp);
 } 

 if(m==2)
 {
 for(int i=0;i<n-1;i++)
  {
  k=i;
  for(j=i+1;j<n;j++)
  if(per[j].ji>per[k].ji)
  k=j;
  temp=per[k];per[k]=per[i];per[i]=temp;
  }
  printf("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n");
  printf(" 姓名  学号 C语言 物理学 原子物理 固体物理 材料学\n");
  printf("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n");
  for(int i=0;i<n-1;i++)
  {
  printf("%s %s %f %f %f %f %f\n",per[i].name,per[i].num,per[i].cyuyan,per[i].en,per[i].ji,per[i].guti,per[i].cailiao);
  printf("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n");
  } 

  fclose(fp);
 }
 if(m==3)
 {
 for(int i=0;i<n-1;i++)
  {
  k=i;
  for(j=i+1;j<n;j++)
  if(per[j].cyuyan>per[k].cyuyan)
  k=j;
  temp=per[k];per[k]=per[i];per[i]=temp;
  }
  printf("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n");
  printf(" 姓名  学号 C语言 物理学 原子物理 固体物理 材料学\n");
  printf("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n");
  for(int i=0;i<n-1;i++)
  {
  printf("%s %s %f %f %f %f %f\n",per[i].name,per[i].num,per[i].cyuyan,per[i].en,per[i].ji,per[i].guti,per[i].cailiao);
  printf("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n");
  } 

  fclose(fp);
 }
 if(m==4)
 {
 for(int i=0;i<n-1;i++)
  {
  k=i;
  for(j=i+1;j<n;j++)
  if(per[j].guti>per[k].guti)
  k=j;
  temp=per[k];per[k]=per[i];per[i]=temp;
  }
  printf("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n");
  printf(" 姓名  学号 C语言 物理学 原子物理 固体物理 材料学\n");
  printf("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n");
  for(int i=0;i<n-1;i++)
  {
  printf("%s %s %f %f %f %f %f\n",per[i].name,per[i].num,per[i].cyuyan,per[i].en,per[i].ji,per[i].guti,per[i].cailiao);
  printf("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n");
  } 

  fclose(fp);
 }
 if(m==5)
 {
 for(int i=0;i<n-1;i++)
  {
  k=i;
  for(j=i+1;j<n;j++)
  if(per[j].cailiao>per[k].cailiao)
  k=j;
  temp=per[k];per[k]=per[i];per[i]=temp;
  }
  printf("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n");
  printf(" 姓名  学号 C语言 物理学 原子物理 固体物理 材料学\n");
  printf("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n");
  for(int i=0;i<n-1;i++)
  {
  printf("%s %s %f %f %f %f %f\n",per[i].name,per[i].num,per[i].cyuyan,per[i].en,per[i].ji,per[i].guti,per[i].cailiao);
  printf("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n");
  } 

  fclose(fp);
 }
 if(m==6)
 {
 for(int i=0;i<n-1;i++)
  {
  sum=0;
  sum=per[i].cyuyan+per[i].en+per[i].ji+per[i].guti+per[i].cailiao;
  s[i]=sum;
  }   // 第一个数组用于数组间信息操作//
  for(int i=0;i<n-1;i++)
  {
  k=i;
  for(j=i+1;j<n;j++)
  {
   if(s[j]>s[k])
  k=j;
  }
  temp=per[k];per[k]=per[i];per[i]=temp;
  }
  printf("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n");
  printf(" 姓名  学号 C语言 物理学 原子物理 固体物理 材料学\n");
  printf("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n");
  for(int i=0;i<n-1;i++)
  {
  printf("%s %s %f %f %f %f %f\n",per[i].name,per[i].num,per[i].cyuyan,per[i].en,per[i].ji,per[i].guti,per[i].cailiao);
  printf("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n");
  } 

  fclose(fp);
 }
 system("pause");
 } 

 //*********************************************************************//
 //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^//
    // 数据修改//
void amend()
 {
 person p[200];
 FILE *fp2;
 int i=0;
 int n=0;
 char s[15];
 int m;
 // system("cls");
 printf("\t\n请选择修改方式:\n");
 printf("\t┌──────┐\n");
 printf("\t│1------姓名 │\n");
 printf("\t│2------学号 │\n");
 printf("\t│3------返回 │\n");
 printf("\t└──────┘\n");
 printf("请输入你要修改的方式\n");
 scanf("%d",&m);
 while(m!=1&&m!=2&&m!=3)
 {
  printf("输入错误请重新修改\n");
  scanf("%d",&m);
 }
 if((fp2=fopen("studata.txt","r"))==NULL)//以2进制方式读取文件信息//
 {
  printf("cannot open the files\n");
  system("pause");
  return;
 } 

 while(fscanf(fp2,"%s%s%f%f%f%f%f",p[i].name,p[i].num,&p[i].cyuyan,&p[i].en,&p[i].ji,&p[i].guti,&p[i].cailiao)!=EOF)
 {
  i++;
  n=n+1;
 }
 fclose(fp2) ; 

 // system("cls");
 if(m==1)
 {
 person newp;
 char s[20];
 int i=0;
 printf("\t请输入想修改的姓名:");
 scanf("\t%s",s);
 while(strcmp(p[i].name,s)!=0&&i<n) i++; //进行比较 找到所需要的信息
 if(i==n)
  {
  printf("\t通讯录中没有此人!\n");
  return;
  }
 else{
  printf("学号:\n");
  scanf("\t%s",&newp.num);
  printf("姓名:\n");
  scanf("\t%s",&newp.name);
  printf("C语言:\n");
  scanf("\t%f",&newp.cyuyan);
  printf("物理学:\n");
  scanf("\t%f",&newp.en);
  printf("原子物理:\n");
  scanf("\t%f",&newp.ji);
  printf("固体物理:\n");
  scanf("\t%f",&newp.guti);
  printf("材料学:\n");
  scanf("\t%f",&newp.cailiao);
  } 

 FILE *fin,*ftp;
 fin=fopen("studata.txt","r");//读打开原文件studata.txt
 ftp=fopen("tmp.txt","w");//写打开临时文件tmp.txt
 if(fin==NULL || ftp==NULL){
 printf("Open the file failure...\n");
 exit(0);
 }
 int kk=0;
 while(kk<n) //从原文件读取一行
 {
 if(strcmp(p[kk].name,s)!=0)//检验是要删除的行吗?
 {
  fprintf(ftp,"%s %s %f %f %f %f %f\n",p[kk].name,p[kk].num,p[kk].cyuyan,p[kk].en,p[kk].ji,p[kk].guti,p[kk].cailiao);//不是则将这一行写入临时文件tmp.txt
 } 

 kk++;
 } 

 fprintf(ftp,"%s %s %f %f %f %f %f\n",newp.name,newp.num,newp.cyuyan,newp.en,newp.ji,newp.guti,newp.cailiao);//不是则将这一行写入临时文件tmp.txt 

 fclose(fin);
 fclose(ftp);
 fclose(fp2);
 remove("studata.txt");//删除原文件
 rename("tmp.txt","studata.txt");//将临时文件名改为原文件名
 }
 if(m==2)
 {
 person newp1;
 char s[20];
 int i=0;
 printf("\t请输入想修改的学号:");
 scanf("\t%s",s);
 while(strcmp(p[i].num,s)!=0&&i<n) i++;//进行比较 找到所需要的信息
 if(i==n)
  {
  printf("\t通讯录中没有此人!\n");
  return;
  }
 else{
  printf("学号:\n");
  scanf("\t%s",&newp1.num);
  printf("姓名:\n");
  scanf("\t%s",&newp1.name);
  printf("C语言:\n");
  scanf("\t%f",&newp1.cyuyan);
  printf("物理学:\n");
  scanf("\t%f",&newp1.en);
  printf("原子物理:\n");
  scanf("\t%f",&newp1.ji);
  printf("固体物理:\n");
  scanf("\t%f",&newp1.guti);
  printf("材料学:\n");
  scanf("\t%f",&newp1.cailiao);
  } 

 FILE *fin,*ftp;
 fin=fopen("studata.txt","r");//读打开原文件studata.txt
 ftp=fopen("tmp.txt","w");//写打开临时文件tmp.txt
 if(fin==NULL || ftp==NULL){
 printf("Open the file failure...\n");
 exit(0);
 }
 int kk=0;
 while(kk<n) //从原文件读取一行
 {
 if(strcmp(p[kk].num,s)!=0)//检验是要删除的行吗?
 {
  fprintf(ftp,"%s %s %f %f %f %f %f\n",p[kk].name,p[kk].num,p[kk].cyuyan,p[kk].en,p[kk].ji,p[kk].guti,p[kk].cailiao);//不是则将这一行写入临时文件tmp.txt
 } 

 kk++;
 } 

 fprintf(ftp,"%s %s %f %f %f %f %f\n",newp1.name,newp1.num,newp1.cyuyan,newp1.en,newp1.ji,newp1.guti,newp1.cailiao);//不是则将这一行写入临时文件tmp.txt 

 fclose(fin);
 fclose(ftp);
 fclose(fp2);
 remove("studata.txt");//删除原文件
 rename("tmp.txt","studata.txt");//将临时文件名改为原文件名 

 } 

 system("pause"); 

 }
 //*********************************************************************//
 //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^//
   //数据删除//
void delet()
 { 

 person p[200];
 FILE *fp;
 char s[10];
 int i=0,n=0;
 if((fp=fopen("studata.txt","r"))==NULL) //以2进制方式读取文件信息//
 {
  printf("cannot open the files\n");
  system("pause");
  return;
 } 

 while(fscanf(fp,"%s%s%f%f%f%f%f",p[i].name,p[i].num,&p[i].cyuyan,&p[i].en,&p[i].ji,&p[i].guti,&p[i].cailiao)!=EOF)
 {
  i++;
  n=n+1;
 } 

 fclose(fp); 

 printf("学生学号:");
 scanf("%s",s);
 i=0;
 while(strcmp(p[i].num,s)!=0&&i<n)
 {
  i++;
 }  //进行比较 找到所需要的信息
 if(i==n)
  {
  printf("\t通讯录中没有此人!\n");
  return;
  }
 else{
 FILE *fin,*ftp;
 fin=fopen("studata.txt","r");//读打开原文件123.txt
 ftp=fopen("tmp.txt","w");//写打开临时文件tmp.txt
 if(fin==NULL || ftp==NULL){
 printf("Open the file failure...\n");
 exit(0);
 }
 int kk=0;
 while(kk<n) //从原文件读取一行
 {
 if(strcmp(p[kk].num,s)!=0)//检验是要删除的行吗?
 {
  fprintf(ftp,"%s %s %f %f %f %f %f\n",p[kk].name,p[kk].num,p[kk].cyuyan,p[kk].en,p[kk].ji,p[kk].guti,p[kk].cailiao);//不是则将这一行写入临时文件tmp.txt
 } 

 kk++;
 } 

 fclose(fin);
 fclose(ftp);
 remove("studata.txt");//删除原文件
 rename("tmp.txt","studata.txt");//将临时文件名改为原文件名
 printf("删除成功!") ;
}
 //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^//
 //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^//
    //运用switch语句进行菜单选择//
} 

 int main()
 { 

 int n=0;
 logon();
 //menu_filename(); //引用全局变量文件名
 for(;;) //循环使用主界面直到遇到结束命令
 {
  switch(menu_select()) // 函数的调用//
  {
  case 1:
  printf("\t\t *^_^*学生记录添加 *^_^*\n");
  add();
  break;
  case 2:
  printf("\t\t *^_^*学生信息浏览 *^_^*\n");
  scan();
  break;
  case 3:
  printf("\t\t *^_^*学生信息查询 *^_^*\n");
  query();
  break;
  case 4:
  printf("\t\t *^_^*数据计算 *^_^*\n");
  date();
  break;
  case 5:
  printf("\t\t *^_^*数据修改 *^_^*\n");
  amend();
  break;
  case 6:
  printf("\t\t *^_^*数据删除 *^_^*\n");
  delet();
  break;
  case 0:
  printf("\n\t\t谢谢使用,再见!\n");
  printf("\n\t\t");
  system("pause");
  exit(0);
  }
 }
 system("pause"); 

  //system("pause"); */
  return 0;
 }

文件studata.txt文件展示如下:

更多学习资料请关注专题《管理系统开发》。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

您可能感兴趣的文章:

  • C语言学生成绩管理系统设计
  • C语言学生成绩管理系统小设计
  • C语言学生成绩管理系统课程设计
  • C语言编写学生成绩管理系统
  • C语言实现简单学生管理系统
  • C语言实现学生成绩管理系统
  • C语言图书管理系统简洁版
  • C语言图书管理系统课程设计
  • C语言实现图书管理系统
  • C语言利用结构体数组实现学生成绩管理系统
(0)

相关推荐

  • C语言学生成绩管理系统课程设计

    学生成绩管理系统是比较适合初学者的.它涵盖了c语言几乎知识.对于学了c语言的人,把这个课程设计搞好(当然自己能设计出来是要有很好的基础).不管自己能不能够完成,最重要的是能弄懂.参考其他资料,试着自己编写是不错的选择.这个课程设计也是我参照资料,自己编写的.自己适当地增加了一些功能.不过,编的不够那么专业吧. #include<stdio.h> #include<string.h> #include<stdlib.h> #define size 100 char* cl

  • C语言图书管理系统课程设计

    这是本人大一第二学期初C语言课程设计的作品,嘿嘿,本来以为已经找不到原稿了,今天无意中竟然在QQ网络硬盘中找到了当初的teta版,发布于此,以作纪念. C 源代码如下: #include<stdio.h> #include<stdlib.h> #include<string.h> struct book{ char book_name[30]; int bianhao; double price; char author[20]; char state[20]; cha

  • C语言利用结构体数组实现学生成绩管理系统

    要求: 某班有最多不超过30人(具体人数由键盘输入)参加期末考试,最多不超过6门(具体门数由键盘输入).定义结构体类型描述学生信息,每个学生信息包括:学号.姓名.多门课的成绩.总成绩和平均成绩.用结构体数组作为函数参数,编程实现如下菜单驱动的学生成绩管理系统. (1) 录入每个学生的学号.姓名和各科考试成绩. (2) 计算每门课程的总分和平均分. (3) 计算每个学生的总分和平均分. (4) 按每个学生的总分由高到低排出名次表. (5) 按学号由小到大排出成绩表. (6) 按姓名的字典顺序排出成

  • C语言实现简单学生管理系统

    花了一个月的时间,学习了链表,文件,多文件编程,然后就开始写学生管理系统,比较简单的那种,实现了增,添,改,查,多种排序,输入的时候的限定,成绩分析的功能.遇到的问题很多,也尝试解决了,下面写点写学生管理系统的要注意的地方,希望对别人有帮助. 1.一定要先写好主函数的框架,然后再往上面加东西,这样说有点笼统,我把我的主函数在下面,可以借鉴下哈.我的主函数是一个while(1)的无限循环,里面一个switch选择,利用一个菜单函数,让其返回值当成switch选择的值,然后进入不同的功能主函数,其他

  • C语言学生成绩管理系统小设计

    本文实例为大家分享了C语言学生成绩管理系统的具体代码,供大家参考,具体内容如下 一.本设计涉及的重要C语言知识有: 1.单链表的各种操作 2.文件流的操作 3.单链表的排序 二.本设计主要以下几个模块组成 1.学生成绩添加模块 2.学生成绩删除模块 3.学生成绩修改模块 4.学生成绩检索模块 5.学生成绩显示模块(包括成绩排序) 6.学生成绩保存模块 效果图: 本设计大概5.6百行代码左右,通过这个设计,本人感觉C语言熟练了很多, 希望能对像我一样的C语言菜鸟同学会有点帮助,废话少说,咱们上代码

  • C语言图书管理系统简洁版

    DOS界面的图书管理系统,具体内容如下 程序分为两块:管理员操作(收录图书.删除图书等)和会员操作(注册.借书.还书等): 1.管理员操作界面 2.会员操作界面 global.h头文件:(程序中只使用了一个编写的头文件,在这里存放了所有的接口函数以及需要使用到的头文件,还有结构体的定义) #include "iostream" #include "string" #include "fstream" #include "conio.h&

  • C语言实现图书管理系统

    目前为止跟着学校进度学习C语言大概半年左右,基础学习只学到了指针,学得非常浅.说实话,起初对C语言的印象---只是一个学习计算机语言的敲门砖,对具体C语言如何应用等,非常迷茫.直到大一下半学期的高级语言设计课程之后,试过dos运行的图形化界面的完整小程序,才发现C语言的魅力. ok,废话不多说了,下面是我第二节课的作品----C语言的图书管理系统.一个简单的小程序.并非纯原创,是基于网络搜索到的"学生管理系统"改编而成的.通过直接浏览.修改一个完整的代码,我的收获颇丰.我认为这样比枯燥

  • C语言编写学生成绩管理系统

    用C语言编写学生成绩管理系统代码,供大家参考,具体内容如下 C语言实现学生成绩管理系统实战教学 https://www.jb51.net/article/154767.htm (1)给出所选课程设计题目以及本题目具体所要完成的功能要求说明. 1.课程设计题目:学生成绩管理系统 2.完成的功能要求: (1).主要实现的功能: 1---学生输入 2---学生插入 3---学生查询(按学号) 4---学生删除 5---学生输出 6---计算每名学生的平均分并输出 7---计算每科的平均分并输出 8--

  • C语言实现学生成绩管理系统

    设计一个学生成绩管理系统,实现对学生成绩的动态管理,实现对学生成绩的输入,显示,删除,查找,插入,最佳,保存,计算,排序等主要功能. 功能要求 1.每一条记录包括一个学生的学号.姓名.3门课成绩.平均成绩. 2.输入功能:可以一次完成若干条记录的输入. 3.显示功能:完成全部学生记录的显示. 4.查找功能:完成按姓名查找学生记录,并显示. 5.排序功能:按学生平均成绩进行排序. 6.插入功能:按平均成绩高低插入一条学生记录 7.删除功能:如果输入错误,可以删除学生记录: 8.退出. 代码: #i

  • C语言学生成绩管理系统设计

    本文实例为大家分享了C语言学生成绩管理系统的具体代码,供大家参考,具体内容如下 Ps:后加了个链表排序,用冒泡写的. /* Title : Student's score management system Author: nyist_xiaod Date : 2012.5.8 */ #include <stdio.h> #include <conio.h> #include <string.h> #include <stdlib.h> #define Pr

随机推荐