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文件展示如下:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM