• 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("
    
    
    			  学生信息管理系统
    
    ");  
     printf("			     版本号:2.0
    
    ");  
     printf("
    
    
    
    			    2012年3月10日
    
    ");  
     printf("			   C区**栋514寝
    ");  
     printf("
    
    			     Ace_cm_liu
    ");  
     printf("
    
    			    导演兼制作
    ");  
     //system("pause");  
    }  
    /*void menu_filename()  
       {  
          system("cls");  
          printf("请输入你要操作的文件名:");  
          scanf("	%s",filename);  
        }  */
        //*********************************************************************//  
        //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^//  
    int menu_select()                              //菜单选择系统函数  
    {  
         char c;  
          do{  
            //system("cls");  
            printf("		 ╭═════════■□■□═══╮
    ");  
            printf("		│         学生信息管理系统         │
    ");  
            printf("		╰═══■□■□══════════╯
    ");  
            printf("		   ┌─────────────-┐
    ");  
            printf("		   │ 1. 添加记录    2. 显示记录 │
    ");  
            printf("		   │                            │
    ");  
            printf("		   │ 3. 信息查询    4. 数据计算 │
    ");  
            printf("		   │                            │
    ");  
            printf("		   │ 5. 修改记录    6. 删除记录 │
    ");  
            printf("		   │                            │
    ");  
            printf("		   │ 0. 退出程序                │
    ");  
            printf("		   └─────────────-┘
    ");  
            printf("		请您选择(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("             ----学生纪录添加----
    ");  
            printf("姓名:
    ");  
            scanf("	%s",p[i].name);  
            printf("学号:
    ");  
            scanf("	%s",p[i].num);  
            printf("C语言:
    ");  
            scanf("	%f",&p[i].cyuyan);  
            printf("物理学:
    ");  
            scanf("	%f",&p[i].en);  
            printf("原子物理:
    ");  
            scanf("	%f",&p[i].ji);
            printf("固体物理:
    ");  
            scanf("	%f",&p[i].guti);  
            printf("材料学:
    ");  
            scanf("	%f",&p[i].cailiao); 
            printf("是否继续添加?(y/n)");  
            scanf("	%c",&sign);  
            i++;  
            n=n+1;  
            system( "cls ");  
       }system("pause");                                     //等待命令  
      
       if((fp=fopen("studata.txt","a"))==NULL)                    //以2进制形式进行文件尾追加//  
          {  
             printf("cannot open the files
    ");  
             system("pause");  
             return;                                         //如果文件出现错误 就返回  
           }  
            for(i=0;i<n;i++)  
            {
                fprintf(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);    //以2进制形式写入文件中//一次写入一个数组//  
            
            }
            //printf("file write error
    ");  
            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
    ");  
             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("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    ");  
         printf("        姓名            学号       C语言    物理学    原子物理   固体物理   材料学
    ");  
         printf("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    "); 
         printf("%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);  
         printf("
    "); 
             i++;
        }   
         system("pause");  
         system("cls");  
         printf("是否需要修改?(y/n)");  
         scanf("	%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("	
    请选择查询方式:
    ");  
            printf("	┌──────┐
    ");  
            printf("	│1--模糊查询 │
    ");  
            printf("	│2------姓名 │
    ");  
            printf("	│3------学号 │
    ");  
            printf("	│4------返回 │
    ");  
            printf("	└──────┘
    ");  
            printf("请输入你要查询的方式
    ");  
            scanf("%d",&m);  
            while(m!=1&&m!=2&&m!=3&&m!=4)  
                {  
                    printf("输入错误请重新查询
    ");  
                    scanf("%d",&m);  
                }  
              if((fp1=fopen("studata.txt","r"))==NULL)                 //以2进制方式读取文件信息//  
              {  
                 printf("cannot open the files
    ");  
               }    
        
            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("	请输入想查询的姓:");  
            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("	学号: %s
    ",p[i].num);  
                    printf("	姓名: %s
    ",p[i].name);  
                    printf("	C语言: %f
    ",p[i].cyuyan);  
                    printf("	物理学: %f
    ",p[i].en);  
                    printf("原子物理: %f
    ",p[i].ji);
                    printf("	固体物理: %f
    ",p[i].guti);  
                    printf("	材料学: %f
    ",p[i].cailiao); 
                }  
            }  
         }  
      
        if(m==2)                                            //姓名查询  
           {  
            char s[20];  
            int j=0;  
            printf("	请输入想查询的姓名:");  
            scanf("	%s",s);  
            while(strcmp(p[j].name,s)!=0&&j<n) j++;            //比较per[i].name与所输入姓名是否相同//  
            if(j==n)
            {
                printf("");
            }
                    printf("	学号: %s
    ",p[j].num);  
                    printf("	姓名: %s
    ",p[j].name);  
                    printf("	C语言: %f
    ",p[j].cyuyan);  
                    printf("	物理学: %f
    ",p[j].en);  
                    printf("原子物理: %f
    ",p[j].ji);
                    printf("	固体物理: %f
    ",p[j].guti);  
                    printf("	材料学: %f
    ",p[j].cailiao); 
                
          }   
        if(m==3)                                                            //学号查询  
            {  
              char s[15];  
              int i=0;  
              printf("请输入想查询的学号:");  
              scanf("	%s",s);  
              
              while(strcmp(p[i].num,s)!=0&&i<n)                                //比较per[i].name与所输入学号是否相同//
             i++;                         
                if(i==n)  
                {  
                    printf("	通讯录中没有此人!
    ");  
                    system("pause");  
                    return;  
                }  
                      printf("	学号: %s
    ",p[i].num);  
                    printf("	姓名: %s
    ",p[i].name);  
                    printf("	C语言: %f
    ",p[i].cyuyan);  
                    printf("	物理学: %f
    ",p[i].en);  
                    printf("原子物理: %f
    ",p[i].ji);
                    printf("	固体物理: %f
    ",p[i].guti);  
                    printf("	材料学: %df",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("	
    选择排序方式:
    ");  
        printf("	┌──────┐
    ");  
        printf("	│1----物理学 │
    ");  
        printf("	│2--原子物理 │
    "); 
        printf("	│3---C语言   │
    ");  
        printf("	│4--固体物理 │
    ");  
        printf("	│5----材料学 │
    ");  
        printf("	│6----  总分 │
    ");  
        printf("	│7------返回 │
    ");  
        printf("	└──────┘
    ");  
        printf("请输入你要排序的方式
    ");  
        scanf("%d",&m);  
        system("cls");  
        while(m!=1&&m!=2&&m!=3&&m!=4&&m!=5&&m!=6&&m!=7)  
            {  
                printf("输入错误请重新输入
    ");  
                scanf("%d",&m);  
            }  
         if((fp=fopen("studata.txt","r"))==NULL)                 //以2进制方式读取文件信息//  
          {  
             printf("cannot open the files
    ");  
             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("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    ");  
                 printf("        姓名           学号       C语言    物理学    原子物理   固体物理   材料学
    ");  
                 printf("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    ");  
                for(int i=0;i<n-1;i++)  
                {
                    printf("%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);  
                    printf("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    ");  
                }
                    
                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("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    ");  
                 printf("        姓名           学号       C语言    物理学    原子物理   固体物理   材料学
    ");  
                 printf("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    ");  
                for(int i=0;i<n-1;i++)  
                {
                    printf("%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);  
                    printf("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    ");  
                }
                    
                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("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    ");  
                 printf("        姓名           学号       C语言    物理学    原子物理   固体物理   材料学
    ");  
                 printf("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    ");  
                for(int i=0;i<n-1;i++)  
                {
                    printf("%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);  
                    printf("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    ");  
                }
                    
                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("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    ");  
                 printf("        姓名           学号       C语言    物理学    原子物理   固体物理   材料学
    ");  
                 printf("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    ");  
                for(int i=0;i<n-1;i++)  
                {
                    printf("%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);  
                    printf("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    ");  
                }
                    
                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("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    ");  
                 printf("        姓名           学号       C语言    物理学    原子物理   固体物理   材料学
    ");  
                 printf("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    ");  
                for(int i=0;i<n-1;i++)  
                {
                    printf("%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);  
                    printf("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    ");  
                }
                    
                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("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    ");  
                 printf("        姓名           学号       C语言    物理学    原子物理   固体物理   材料学
    ");  
                 printf("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    ");  
                for(int i=0;i<n-1;i++)  
                {
                    printf("%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);  
                    printf("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    ");  
                }
                    
                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("	
    请选择修改方式:
    ");  
        printf("	┌──────┐
    ");  
        printf("	│1------姓名 │
    ");  
        printf("	│2------学号 │
    ");  
        printf("	│3------返回 │
    ");  
        printf("	└──────┘
    ");  
        printf("请输入你要修改的方式
    ");  
        scanf("%d",&m);  
        while(m!=1&&m!=2&&m!=3)  
            {  
                printf("输入错误请重新修改
    ");  
                scanf("%d",&m);  
            }  
         if((fp2=fopen("studata.txt","r"))==NULL)                 //以2进制方式读取文件信息//  
          {  
             printf("cannot open the files
    ");  
             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("	请输入想修改的姓名:");  
          scanf("	%s",s);  
          while(strcmp(p[i].name,s)!=0&&i<n) i++;                           //进行比较 找到所需要的信息  
            if(i==n)  
             {  
                printf("	通讯录中没有此人!
    ");  
                return;  
             }  
            else{  
                 printf("学号:
    ");  
                 scanf("	%s",&newp.num);  
                 printf("姓名:
    ");  
                 scanf("	%s",&newp.name);  
                 printf("C语言:
    ");  
                 scanf("	%f",&newp.cyuyan);  
                 printf("物理学:
    ");  
                 scanf("	%f",&newp.en);  
                 printf("原子物理:
    ");  
                 scanf("	%f",&newp.ji);
                 printf("固体物理:
    ");  
                 scanf("	%f",&newp.guti);
                 printf("材料学:
    ");  
                 scanf("	%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...
    ");
            exit(0);
        }
        int kk=0;
        while(kk<n) //从原文件读取一行
        {
            if(strcmp(p[kk].name,s)!=0)//检验是要删除的行吗?
            {
                fprintf(ftp,"%s %s %f %f %f %f %f
    ",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
    ",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("	请输入想修改的学号:");  
          scanf("	%s",s);  
          while(strcmp(p[i].num,s)!=0&&i<n) i++;                           //进行比较 找到所需要的信息  
            if(i==n)  
             {  
                printf("	通讯录中没有此人!
    ");  
                return;  
             }  
            else{  
                 printf("学号:
    ");  
                 scanf("	%s",&newp1.num);  
                 printf("姓名:
    ");  
                 scanf("	%s",&newp1.name);  
                 printf("C语言:
    ");  
                 scanf("	%f",&newp1.cyuyan);  
                 printf("物理学:
    ");  
                 scanf("	%f",&newp1.en);  
                 printf("原子物理:
    ");  
                 scanf("	%f",&newp1.ji);
                 printf("固体物理:
    ");  
                 scanf("	%f",&newp1.guti);
                 printf("材料学:
    ");  
                 scanf("	%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...
    ");
            exit(0);
        }
        int kk=0;
        while(kk<n) //从原文件读取一行
        {
            if(strcmp(p[kk].num,s)!=0)//检验是要删除的行吗?
            {
                fprintf(ftp,"%s %s %f %f %f %f %f
    ",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
    ",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
    ");  
             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("	通讯录中没有此人!
    ");  
                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...
    ");
            exit(0);
        }
        int kk=0;
        while(kk<n) //从原文件读取一行
        {
            if(strcmp(p[kk].num,s)!=0)//检验是要删除的行吗?
            {
                fprintf(ftp,"%s %s %f %f %f %f %f
    ",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("		 *^_^*学生记录添加 *^_^*
    ");  
                  add();  
                  break;  
              case 2:  
                  printf("		 *^_^*学生信息浏览 *^_^*
    ");  
                  scan();  
                  break;  
              case 3:  
                  printf("		 *^_^*学生信息查询 *^_^*
    ");  
                  query();  
                  break;  
              case 4:  
                  printf("		 *^_^*数据计算 *^_^*
    ");  
                  date();  
                  break;  
              case 5:  
                  printf("		 *^_^*数据修改 *^_^*
    ");  
                  amend();  
                  break;  
              case 6:  
                   printf("		 *^_^*数据删除 *^_^*
    ");  
                   delet();  
                   break;  
              case 0:  
                    printf("
    		谢谢使用,再见!
    ");  
                    printf("
    		");  
                    system("pause");  
                    exit(0);  
              }  
          }  
          
    
            system("pause");  
            
     
              //system("pause");  */
              return 0;
      }  

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

  • 相关阅读:
    常用Linux基础命令
    makefile基础
    获得当前的时间——system.currentTimeMillis()
    MapReduce提供的输入输出格式
    Hadoop HDFS文件操作的Java代码
    Hadoop2.2.0完全分布式配置
    Hadoop2.2.0伪分布模式配置
    Eclipse Plugin for Hadoop2.2.0
    Hadoop2.2.0单机模式配置
    Asp.Net 禁用cookie后使用session
  • 原文地址:https://www.cnblogs.com/yjd_hycf_space/p/6902374.html
Copyright © 2020-2023  润新知