• C语言管理系统,全套知识点


    数组

    /*--------------------------------
    【程序填空】功能:数组名作为函数参数,求平均成绩。
    ---------------------------*/
    #include <stdio.h>
    float aver(float a[ ])             /*定义求平均值函数,形参为一浮点型数组名*/
    {
     int i;
     float av,s=a[0];
     for(i=1;i<5;i++)
     /***********SPACE***********/
     s+=a[i];
     av=s/5;
     /***********SPACE***********/
     return av;
    }
    void main()
    {
     float sco[5],av;
     int i;
     printf(" input 5 scores: ");
     for(i=0;i<5;i++)
     /***********SPACE***********/
       scanf("%f",&sco[i]);
     /***********SPACE***********/
     av=aver(sco);
     printf("average score is %5.2f ",av);
    }

    |类型| 16位| 32 位 |64位|

    |char| 1| 1 |1|

    |short int |2 |2 |2|

    |int            |2  |   4|  4|
    |unsigned int |2 | 4| 4|
    |float   |4 |4 |4 |
    |double     |8 |8 |8 |
    |long   |4 |4 |8 |
    |long long |8 | 8| 8|
    |unsigned long |4 |4   | 8|

    ———————————————— 首先来看字符类型,这里单指char , char变量在内存中存储的是字符对应的ASCII码值。所以长度也是固定的,不管在哪种编译器下,均为1个字节。

    再来看 浮点类型,C中的浮点类型有俩种,float和double,与整数不同的是,浮点数的长度适中的固定的,float占用4个字节,double占用8个字节。

    最后来看 整型类型,查阅资料后发现虽然16位、32位或者64位的机子各种类型并不一样,但有几条规则(ANSI/ ISO制定):

    • short 至少占用2个字节

      • int 建议为一个机器字长,32位环境下为4字节,64位环境下为8字节

        • short 的长度不能大于int, long 的长度不能小于int

    指针

    /*-----------------------------
    【程序填空】题目:以下mystrlen函数的功能是计算str所指字符串的长度,并作为函数值返回.
    ------------------------*/
    #include <stdio.h>
    int mystrlen( char *str)
    {
       int i;
    /***********SPACE***********/
       for(i=0;*(str+i)!='';i++) ;
    /***********SPACE***********/
      return(i);
    }
    void main( )
    {
           char *str="abcdefg";
           printf("%d ",mystrlen(str));

    }
    /*-----------
    【程序填空】功能:输入3个数a,b,c,按从小到大的顺序输出。
    -----------------------------*/
    #include <stdio.h>
    main()
    {
     void swap(int *p1, int *p2);
     int n1,n2,n3;
     int *pointer1,*pointer2,*pointer3;
     printf("please input 3 number:n1,n2,n3:");
     scanf("%d,%d,%d",&n1,&n2,&n3);
     pointer1=&n1;
     pointer2=&n2;
     pointer3=&n3;
     /***********SPACE***********/
     if(n1>n2) swap(pointer1,pointer2);
     /***********SPACE***********/
     if(n1>n3) swap(pointer1,pointer3);
     /***********SPACE***********/
     if(n2>n3) swap(pointer2,pointer3);
     printf("the sorted numbers are:%d,%d,%d ",n1,n2,n3);
    }
    /***********SPACE***********/
    void swap(int *p1,int *p2)

    {
     int p;
     p=*p1;*p1=*p2;*p2=p;
    }
    //输入和输出必须保持一致
    /*-------------------------------------
    【程序填空】功能:将一个字符串中下标为m的字符开始的全部字符复制成为另一个字符串。
    --------------------------------*/

    #include<stdio.h>
    void strcopy(char *str1,char *str2,int m)
    {
      char *p1,*p2;
      /***********SPACE***********/
      p1= str1 + m;
      p2=str2;
      while(*p1){
      /***********SPACE***********/
      *(p2++)=*(p1++);}
      /***********SPACE***********/
      *p2='';
    }
    main()
    {
      int m;
      char str1[80],str2[80];
      gets(str1);
      scanf("%d",&m);
      /***********SPACE***********/
      strcopy(str1,str2,m);
      puts(str1);puts(str2);
    }
    /*-------------------------------
    【程序填空】
    功能:将s所指字符串的正序和反序进行连接,形成一个新串放在t所指的数组中。
    例如:当s串为"ABCD"时,则t串的内容应为"ABCDDCBA"。
    -----------------------------*/

    #include <conio.h>
    #include <stdio.h>
    #include <string.h>
    void fun (char  *s, char  *t)
    {
     int   i, d;
     /***********SPACE***********/
     d = strlen(s);
     /***********SPACE***********/
     for (i = 0; i<d; i++)
       t[i] = s[i];
     for (i = 0; i<d; i++)
       /***********SPACE***********/
       t[d+i] = s[d-1-i];
     /***********SPACE***********/
     t[d+i] ='';
    }
    main()
    {
     char  s[100], t[100];
     printf(" Please enter string S:"); scanf("%s", s);
     fun(s, t);
     printf(" The result is: %s ", t);
    }
    /*-------------------------------------
    【程序填空】题目:给定程序中,函数fun的功能是:统计形参s所指的字符串中数字字符出现的次数,并存放在形参t所指的变量中,最后在主函数中输出。
    例如:若形参s所指的字符串为"abcdef35adgh3kjsdf7",则输出结果为4。
    ---------------------------------*/
    #include <stdio.h>

    void fun(char  *s, int  *t)
    {
           int i, n;
           n=0;
    /***********SPACE***********/
           for(i=0; s[i]!=0; i++)
    /***********SPACE***********/
                   if(s[i]>='0'&&s[i]<= '9' ) n++;

    /***********SPACE***********/
               *t=n ;
    }
    main()
    {
           char  s[80]="abcdef35adgh3kjsdf7";
           int t;
           printf(" The original string is : %s ",s);
           fun(s,&t);
           printf(" The result is : %d ",t);
    }
    /*-----------------------------------
    【程序填空】
    功能:求一批数据(数组)的最大值并返回下标。
    --------------------------------------*/
    #include <stdio.h>
    int max(int *p,int n,int *index)
    {
     int i,in=0,m;
    /***********SPACE***********/
    m=*p;
     /***********SPACE***********/
     for (i=1;i<n;i++)
         if(m<*(p+i))
        {
           m=*(p+i);
    /***********SPACE***********/
           in=i;
        }
      *index=in;
     /***********SPACE***********/
      return m;
    }
    void main()
    {
     int i,a[10]={3,7,5,1,2,8,6,4,10,9},m;
     /***********SPACE***********/
     m=max(a,10,&i);
    /***********SPACE***********/
     printf("最大值%d,下标%d",m,i);
    }
    /*------------------------------
    【程序改错】题目:下列给定程序中函数fun的功能是:删除s所指字符中所有的小写字母c 。
    --------------------------------*/
    #include <stdio.h>
    void  fun( char  *s )
    {
           int  i,j;
           for(i=j=0; s[i]!=''; i++)
                   if(s[i]!='c')
           /***********FOUND***********/
                           s[j++]=s[i];

    /***********FOUND***********/
                   s[j]=0;
    }
    main()
    {
           char  s[80];
           printf("Enter a string:       ");
           gets(s);
           printf("The original string: ");
           puts(s);
           fun(s);
           printf("The string after deleted : ");
           puts(s);printf(" ");
    }
    /*----------------------------------
    【程序改错】
    功能:实现交换两个整数的值。
    例如:给a和b分别输入3和6 ,输出为a=6 b=3
    ------------------------*/
    #include <stdio.h>
    /**********FOUND**********/
    void fun (int *a,int *b)
    {
     int t;
     /**********FOUND**********/
     t=*a;
     /**********FOUND**********/
     *a=*b;
     /**********FOUND**********/
     *b=t;
    }

    main()
    {
     int a,b;
     printf("enter a,b:");scanf("%d%d",&a,&b);
     fun(&a,&b);
     printf("a=%d b=%d ",a,b);
    }
    /*--------------------------------
    【程序改错】题目:下列给定程序中函数fun的功能是:把从主函数中输入的3个数,最大的数放在a中,中间的数放在b中,最小的数放在c中。
    例如:若输入的数为:55 12 34,输出的结果应当是:a=55.0,b=34.0,c=12.0。
    --------------------------*/
    #include <stdio.h>

    void  fun(float *a,float *b,float *c)
    {
    /***********FOUND***********/
           float   k;
           if( *a<*b )
          {
                   k=*a;
                   *a=*b;
                   *b=k;
          }
    /***********FOUND***********/
           if( *a<*c )
          {
                   k=*c;
                   *c=*a;
                   *a=k;
          }
           if( *b<*c )
          {
                   k=*b;
                   *b=*c;
                   *c=k;
          }
    }
    main()
    {
           float   a,b,c;
           printf("Input a b c: ");
           scanf("%f%f%f",&a,&b,&c);
           printf("a = %4.1f, b = %4.1f, c = %4.1f ",a,b,c);
           fun(&a,&b,&c);
           printf("a = %4.1f, b = %4.1f, c = %4.1f ",a,b,c);
    }
    /*-------------------------------
    【程序改错】题目:下列给定程序中,函数fun的功能是:找出100~n(不大于1000)之间三个位上的数字都相等的所有整数,把这些整数放在s所指的数组中,个数作为函数值返回。
    -----------------------*/
    #include <stdio.h>

    #define N 100

    int  fun(int *s, int  n)
    {
           int i,j,k,a,b,c;
           j=0;
           for(i=100; i<n; i++)
          {
    /***********FOUND***********/
                   k=i;
                   a=k%10;
                   k/=10;
    /***********FOUND***********/
                   b=k%10;
                   c=k/10;
                   if(a==b && a==c)
                           s[j++]=i;
          }
           return  j;
    }
    void main()
    {
           int  a[N], n,num=0, i;
           do
          {
                   printf(" Enter n(<=1000) :");
                   scanf("%d",&n);
          }
           while(n > 1000);
           num= fun(a,n);
           printf(" The result : ");
           for(i=0; i<num; i++)
                   printf("%5d",a[i]);
           printf(" ");
    }

    结构体




    /*---------------------------------
    【程序填空】功能:输入学生成绩并显示。
    --------------------------------*/
    # include <stdio.h>
    struct student
    {
     char number[6];
     char name[6];
     int  score[3];
    } stu[2];
    void output(struct student stu[2]);
    void main()
    {
     int i, j;
     /***********SPACE***********/
     for(i=0; i<2; i++)
    {
       printf("请输入学生%d的成绩: ", i+1);
       printf("学号:");
       /***********SPACE***********/
       scanf("%s", stu[i].number);
       printf("姓名:");
       scanf("%s", stu[i].name);
       for(j=0; j<3; j++)
      {
         printf("成绩 %d. ", j+1);
         /***********SPACE***********/
         scanf("%d", &stu[i].score[j]);
      }
       printf(" ");
    }
     output(stu);
    }

    void output(struct student stu[2])
    {
     int i, j;
     printf("学号 姓名 成绩1 成绩2 成绩3 ");
     for(i=0; i<2; i++)
    {
     /***********SPACE***********/
     printf("%-6s%-6s", stu[i].number, stu[i].name);
     for(j=0; j<3; j++)
       printf("%-8d", stu[i].score[j]);
       printf(" ");
    }
    }
    /*----------------------------------
    【程序设计】题目:学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun ,其功能是:把低于平均分的学生数据放入b所指的数组中,低于平均分的学生人数通过形参n传回,平均分通过函数值返回。注意:请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
    ---------------------------------*/
    #include <stdio.h>
    //void wwjt();
    #define   N   8
    typedef  struct
    {
           char  num[10];
           int   s;
    } STREC;
    double  fun( STREC  *a, STREC *b, int *n )
    {
           /**********Program**********/
           int i,j=0;
           double av=0.0;
           for(i=0;i<N;i++)
               av=av+a[i].s;
           av=av/N;
           for(i=0;i<N;i++)
    if(a[i].s<av)
           b[j++]=a[i];
           *n=j;
    return av;

           /********** End **********/
    }

    main()
    {
           STREC  s[N]={{"GA05",85},{"GA03",76},{"GA02",69},{"GA04",85},
                  {"GA01",91},{"GA07",72},{"GA08",64},{"GA06",87}};
           STREC  h[N];
           int  i,n;
           double  ave;
           ave=fun( s,h,&n );
           printf("The %d student data which is lower than %7.3f: ",n,ave);
           for(i=0;i<n; i++)
                   printf("%s %d ",h[i].num,h[i].s);
           printf(" ");
           //wwjt();

    }

    文件操作

      while(!(feof(fp))){
       fread(&b[i],M,1,fp);
        i++;j++;}
    /*-----------
    【程序填空】说明:下面程序的功能是统计文件fname.dat中字符个数,现文件中的内容为: 1234567890
    -----------------------------*/
    #include "stdio.h"
    void  main()
    {
      /***********SPACE***********/
       File *fp;
      long  num=0L;
         if((fp=fopen("fname.dat","r"))==NULL)
          {
            printf("Open error ");
          }
      /***********SPACE***********/
          while(!feof(fp))
          {
             fgetc(fp);
             num++;
          }
     /***********SPACE***********/
        printf("num=%ld ",num-1);
        fclose(fp);
    }
    /*---------
    【程序填空】功能:有五个学生,每个学生有3门课的成绩,从键盘输入以上数据(包括学生号,姓名,三门课成绩),计算出平均成绩,设原有的数据和计算出的平均分数存放在磁盘文件"stud"中。
    ---------------------------*/

    #include <stdio.h>
    struct student
    {
     char num[6];
     char name[8];
     int score[3];
     double avr;
    } stu[5];

    main()
    {
     int i,j,sum;
     FILE *fp;
     /*input*/
     for(i=0;i<5;i++)
    {
       printf(" please input No. %d score: ",i);
       printf("stuNo:");
       scanf("%s",stu[i].num);
       printf("name:");
       scanf("%s",stu[i].name);
       sum=0;
       /***********SPACE***********/
       for(j=0;j<3;j++)
      {
         printf("score %d.",j+1);
         scanf("%d",&stu[i].score[j]);
         /***********SPACE***********/
         sum+=stu[i].score[j];
      }
       stu[i].avr=sum/3.0;
    }
     fp=fopen("stud","w");
     /***********SPACE***********/
     for(i=0;i<5;i++)
     /***********SPACE***********/
       if(fwrite(&stu[i],sizeof(struct student),1,fp)!=1)
         printf("file write error ");
       fclose(fp);
    }
    /*---------------------------------
    【程序填空】
    功能:文件操作。
    --------------------------*/

    # include <stdio.h>
    # include <stdlib.h>

    void main()
    {
     /* 定义一个文件指针fp */
     /***********SPACE***********/
     FILE *fp;
     char filename[10];
     printf("Please input the name of file: ");
     scanf("%s", filename);  /* 输入字符串并赋给变量filename */
     /* 以读的使用方式打开文件filename */
     /***********SPACE***********/
     if((fp=fopen(filename, "r")) == NULL)
    {
       printf("Cannot open the file. ");
       exit(0);  /* 正常跳出程序 */
    }
     /* 关闭文件 */
     /***********SPACE***********/
    fclose(fp);
    }
    /*-------------------------------
    【程序填空】功能:从键盘上输入一个字符串, 将该字符串升序排列后输出到文件test.txt中,然后从该文件读出字符串并显示出来。
    --------------------------------*/

    #include<stdio.h>
    #include<string.h>
    #include<stdlib.h>

    main()
    {
      FILE  *fp;
      char t,str[100],str1[100];    int n,i,j;
      if((fp=fopen("test.txt","w"))==NULL)
      {
          printf("can't open this file. ");
          exit(0);
      }
      printf("input a string: "); gets(str);
      /***********SPACE***********/
      n=strlen(str);
      /***********SPACE***********/
      for(i=0; i<n ;i++)
        for(j=0;j<n-i-1;j++)
        /***********SPACE***********/
        if(str[j]>str[ j + 1 ])
        {
           t=str[j];
           str[j]=str[j+1];
           str[j+1]=t;
        }
      /***********SPACE***********/
      fputs(str,fp);
      fclose(fp);
      fp=fopen("test.txt","r");
      fgets(str1,100,fp);
      printf("%s ",str1);
      fclose(fp);
    }
    /*------------------------------
    【程序改错】功能:将若干学生的档案存放在一个文件中,并显示其内容。
    --------------------*/
    #include <stdio.h>
    struct student
    {
     int num;
     char name[10];
     int age;
    };

    struct student stu[3]={{001,"Li Mei",18},
                          {002,"Ji Hua",19},
                          {003,"Sun Hao",18}};

    #include <stdio.h>

    void main()
    {
     /**********FOUND**********/
     struct student *p;
     /**********FOUND**********/
     FILE *fp;
     int i;
     if((fp=fopen("stu_list","wb"))==NULL)
    {
       printf("cannot open file ");
       return;
    }
     /**********FOUND**********/
     for(p=stu;p<stu+3;p++)
       fwrite(p,sizeof(struct student),1,fp);
     fclose(fp);
     fp=fopen("stu_list","rb");
     printf(" No. Name       age ");
     for(i=1;i<=3;i++)
    {
       fread(p,sizeof(struct student),1,fp);
       /**********FOUND**********/
       scanf("%4d %-10s %4d ",(*p).num,p->name,(*p).age);
    }
     fclose(fp);
    }

    程序设计

    #include<stdio.h>
    #include <windows.h>//加入头文件就可调用API函数
    #include<string.h>
    #include <stdlib.h>
    #include <malloc.h>
    #include <conio.h>
    #define N 100
    #define M sizeof(struct driver)
    struct driver
    {
       int cost;//司机的学费
       int aeve;//司机的分数achievement
       char dtype[20];
       char name[20];//司机的名字
       int rdata[3];
       struct driver *next;
    } stu;
    int n=0;//全局变量,用来记录存放了多少数据。
    int main()
    {
    int a,i=0,t;
    char b[20],c,str[20];
    FILE *fp;

       void maintain();//信息维护的函数
       void query();//信息查询的函数
       void statistics();//信息统计的函数
       void qsort();//信息排序的函数
       void change();//密码修改的函数
       void append();//信息追加的函数
       void dlete();//信息删除
       void ichange();//信息修改
      if(!(fp=fopen("pword.bat","r"))){//密码用文件的形式保存,达到文件的方便存在)
           printf(" 管理系统核心部件丢失,请联系技术人员维护 ");return 0;}
           fread(&str,20,1,fp);
           fclose(fp);

       printf(" 欢迎使用欢迎使用驾校学员信息管理系统! 请输入位管理员密码【初始密码(kdd)】:");//asdfg
        while (1)
      {
           c=getch();
           if (c==' '||c==' ')  //windows下getch输入回车会返回
          {
               b[i]=0;
               break;
          }
           putchar('*');
           b[i++]=c;
      }
       printf(" ");
     if(strcmp(b,str)){
           printf(" 密码错误!!!!!");system("pause");
           return 0;}
       printf(" 是否打开背景颜色?打开请输入1,不打开请输入任意数:");
       scanf("%d",&t);
       if(t==1)
      {
           HWND hWnd=GetForegroundWindow();

    HANDLE handle=GetStdHandle(STD_OUTPUT_HANDLE);

    SetWindowText(hWnd,"管理系统");//标题

    SetConsoleTextAttribute(handle,FOREGROUND_RED|BACKGROUND_INTENSITY);//前景、背景颜色
      }
       while(a!=0)
    {system("cls");//完成相应的功能后对屏幕清屏
    printf(" ");
    printf(" |********欢迎使用驾校学员信息管理系统**********| ");//为了让图形界面更加好看采用4* 的形式让输出居中
    printf(" |**********************************************| ");
    printf(" |*1、信息维护(会建立全新的文件,请谨慎使用)   *| ");
    printf(" |*2、信息展示                                 *| ");
    printf(" |*3、信息查询                                 *| ");
    printf(" |*4、排序功能                                 *| ");
    printf(" |*5、追加数据                                 *| ");
    printf(" |*6、删除数据                                 *| ");
    printf(" |*7、修改密码                                 *| ");
    printf(" |*8、信息修改                                 *| ");
    printf(" |*0、退出                                     *| ");
    printf(" |**********************************************| ");
    printf(" 请输入你们的选择:");
    scanf("%d",&a);
    switch(a)
    {
    case 1:maintain();break;
    case 2:query();break;
    case 3:statistics();break;
    case 4:qsort();break;
    case 5:append();break;
    case 6:dlete();break;
    case 7:change();break;
    case 8:ichange();break;
    case 0:return 0;
    default:printf("输入的数据有误,请重新输入 ");
    }
    }
    return 0;
    }
      struct driver *wlist()
      {
         struct driver *head;
         struct driver *p1,*p2;
         p2=p1=(struct driver *)malloc(sizeof(M));
          printf(" Please enter the name :");
         scanf("%s", p1->name);
         printf(" Please enter the aeve :");
         scanf("%d", &p1->aeve);
         printf(" Please enter the cost :");
         scanf("%d", &p1->cost);
         printf(" Please enter the Particular year :");
         scanf("%d", &p1->rdata[0]);
         printf(" Please enter the Month :");
         scanf("%d", &p1->rdata[1]);
         printf(" Please enter the day :");
         scanf("%d", &p1->rdata[2]);
         printf(" Please enter the dtype :");
         scanf("%s", p1->dtype);
         head=NULL;//最开始将指针指向NULL;
         n=0;
           while( p1->cost )//如果花费为0代表输入数据结束
        {
               n++;
               if( 1 == n )
              {
                     head = p1;
              }
               else
              {
                     p2->next = p1;
              }

               p2 = p1;
               p1 = (struct driver *)malloc(M);

               printf(" Please enter the name :");
               scanf("%s", p1->name);
               printf(" Please enter the aeve :");
               scanf("%d", &p1->aeve);
               printf(" Please enter the cost :");
               scanf("%d", &p1->cost);
               printf(" Please enter the Particular year :");
               scanf("%d", &p1->rdata[0]);
               printf(" Please enter the Month :");
               scanf("%d", &p1->rdata[1]);
               printf(" Please enter the day :");
               scanf("%d", &p1->rdata[2]);
               printf(" Please enter the dtype :");
               scanf("%s", p1->dtype);
        }
         p2->next = NULL;

         return head;
      }
        void wfile(struct driver *head)//写入文件的函数
        {
           FILE *fp;
           int i=0;
          if (!(fp=fopen("dat.bat","wb")))
           printf(" open error");
          do
          {
           fwrite(head,M,1,fp);
           head=head->next;
          }while(head!=0);
           fclose(fp);
           printf(" 写入完成,");
           system("pause");
        }
       void maintain()
      {
           struct driver *head;
           head=wlist();
           wfile(head);//写入文件的操作
      }



    void query()
    {
       FILE *fp;
        int i=0,j=0;
       struct driver a[N];

       if (!(fp=fopen("dat.bat","r")))
           printf("error");
       while(!(feof(fp))){
       fread(&a[i],M,1,fp);
        i++;j++;}
       printf(" cost aeve year month day dtype name ");
        for(i=0;i<j-1;i++)
        printf(" %d %d %d %d %d %s %s ",a[i].cost,a[i].aeve,a[i].rdata[0],a[i].rdata[1],a[i].rdata[2],a[i].dtype,a[i].name);
       fclose(fp);
           printf(" 查询完成,");
       system("pause");
    }


    void statistics()
    {

       FILE *fp;
        int i=0,j=0,h,b,c,e=0;
        char d[20],g[20];
       struct driver a[N],f[N];

       if (!(fp=fopen("dat.bat","r")))
           printf(" error");
       while(!(feof(fp))){
       fread(&a[i],M,1,fp);//将文件读出
        i++;j++;}
        printf(" 请输入需要查询的类容 (1)如果是查询某个分数请输入1 (2)如果是是查询某个费用请输入2 (3)如果是查询某个名字请输入3 (4)费用小于某个数请输入4 (5)分数小于某个数请输入5 (6)查询某个类型的驾照请输入6:");
        scanf("%d",&h);
        if(h==1)
      {
        printf(" 请输入需要的数据");
        scanf("%d",&c);
           for(b=0;b<j-1;b++)
      {
           if(a[b].aeve==c){
           f[e]=a[b];e++;}
      }
         printf(" cost aeve year month day dtype name ");
       for(b=0;b<e;b++)
       printf(" %d %d %d %d %d %s %s ",f[b].cost,f[b].aeve,f[b].rdata[0],f[b].rdata[1],f[b].rdata[2],f[b].dtype,f[b].name);
           printf(" 查询完成,");
       system("pause");
      }
       if(h==2)
      {
        printf(" 请输入需要的数据");
        scanf("%d",&c);
           for(b=0;b<j-1;b++)
      {
           if(a[b].cost==c){
           f[e]=a[b];e++;}
      }
      printf(" cost aeve year month day dtype name ");
       for(b=0;b<e;b++)
       printf(" %d %d %d %d %d %s %s ",f[b].cost,f[b].aeve,f[b].rdata[0],f[b].rdata[1],f[b].rdata[2],f[b].dtype,f[b].name);
           printf(" 查询完成,");
       system("pause");
      }
       if(h==3)
      {
        printf(" 请输入需要的数据");
        scanf("%s",d);
           for(b=0;b<j-1;b++)
      {
           if(!(strcmp(a[b].name,d)))
          {
           f[e]=a[b];e++;
          }

      }
      printf(" cost aeve year month day dtype name ");
       for(b=0;b<e;b++)
       printf(" %d %d %d %d %d %s %s ",f[b].cost,f[b].aeve,f[b].rdata[0],f[b].rdata[1],f[b].rdata[2],f[b].dtype,f[b].name);
           printf(" 查询完成,");
       system("pause");
      }
        if(h==4)
      {
        printf(" 请输入需要的数据");
        scanf("%d",&c);
           for(b=0;b<j-1;b++)
      {
           if(a[b].cost<=c){
           f[e]=a[b];e++;}
      }
      printf(" cost aeve year month day dtype name ");
       for(b=0;b<e;b++)
        printf(" %d %d %d %d %d %s %s ",f[b].cost,f[b].aeve,f[b].rdata[0],f[b].rdata[1],f[b].rdata[2],f[b].dtype,f[b].name);
           printf(" 查询完成,");
       system("pause");
      }
       if(h==5)
      {
        printf(" 请输入需要的数据");
        scanf("%d",&c);
           for(b=0;b<j-1;b++)
      {
           if(a[b].aeve<=c){
           f[e]=a[b];e++;}
      }
       printf(" cost aeve year month day dtype name ");
       for(b=0;b<e;b++)
      printf(" %d %d %d %d %d %s %s ",f[b].cost,f[b].aeve,f[b].rdata[0],f[b].rdata[1],f[b].rdata[2],f[b].dtype,f[b].name);
           printf(" 查询完成,");
       fclose(fp);
       system("pause");
      }
       if(h==6)
      {
        printf(" 请输入需要的数据");
        scanf("%s",g);
           for(b=0;b<j-1;b++)
      {
           if(!(strcmp(a[b].dtype,g))){
           f[e]=a[b];e++;}
      }
       printf(" cost aeve year month day dtype name ");
       for(b=0;b<e;b++)
        printf(" %d %d %d %d %d %s %s ",f[b].cost,f[b].aeve,f[b].rdata[0],f[b].rdata[1],f[b].rdata[2],f[b].dtype,f[b].name);
           printf(" 查询完成,");
       fclose(fp);
       system("pause");
      }
    }
    void qsort()//排序
    {
     FILE *fp;
        int i=0,j=0,c,t,b;
        char str1[]="A",str2[]="B",str3[]="C";
        struct driver f;
       struct driver a[N];
    printf(" (1)如果对成绩排序请输入1 (2)如果对费用排序请输入2 (3)如果对驾照等级排序请输入3:");
    scanf("%d",&b);
       if (!(fp=fopen("dat.bat","r")))//用只读的方式打开文件夹
           printf(" error");
       while(!(feof(fp))){
       fread(&a[i],M,1,fp);
        i++;j++;}
        if(b==1){
        for(c=0;c<j-1;c++)
           for(t=0;t<j-2-c;t++)
           if(a[t].aeve>a[t+1].aeve){
           f=a[t];
           a[t]=a[t+1];
           a[t+1]=f;}}
           if(b==2)
          {
                for(c=0;c<j-1;c++)
           for(t=0;t<j-2-c;t++)
           if(a[t].cost>a[t+1].cost){
           f=a[t];
           a[t]=a[t+1];
           a[t+1]=f;}
          }
           if(b==3)
          {
                printf(" cost aeve year month day dtype name ");
                for(c=0;c<j-1;c++)
                if(!(strcmp(a[c].dtype,str1))){

         printf(" %d %d %d %d %d %s %s ",a[c].cost,a[c].aeve,a[c].rdata[0],a[c].rdata[1],a[c].rdata[2],a[c].dtype,a[c].name);
          }for(c=0;c<j-1;c++)
           if(!(strcmp(a[c].dtype,str2))){


        printf(" %d %d %d %d %d %s %s ",a[c].cost,a[c].aeve,a[c].rdata[0],a[c].rdata[1],a[c].rdata[2],a[c].dtype,a[c].name);
          }for(c=0;c<j-1;c++)
          if(!(strcmp(a[c].dtype,str3))){


        printf(" %d %d %d %d %d %s %s ",a[c].cost,a[c].aeve,a[c].rdata[0],a[c].rdata[1],a[c].rdata[2],a[c].dtype,a[c].name);
          system("pause");
          return;
          }}
            printf(" cost aeve year month day dtype name ");
           for(b=0;b<j-1;b++)
         printf(" %d %d %d %d %d %s %s ",a[b].cost,a[b].aeve,a[b].rdata[0],a[b].rdata[1],a[b].rdata[2],a[b].dtype,a[b].name);
           fclose(fp);
           printf(" 排序完成");
           system("pause");
    }
    void append()
    {
        FILE *fp;
        struct driver a;
        printf(" 请输入需要追加人的费用:");
        scanf("%d",&a.cost);
        printf(" 请输入需要追加人的成绩:");
        scanf("%d",&a.aeve);
        printf(" 请输入需要追加人的年份:");
        scanf("%d",&a.rdata[0]);
        printf(" 请输入需要追加人的月份:");
        scanf("%d",&a.rdata[1]);
        printf(" 请输入需要追加人的日期:");
        scanf("%d",&a.rdata[2]);
        printf(" 请输入需要追加人的驾照类型:");
        scanf(" %s",a.dtype);
        printf(" 请输入需要追加人的名字:");
        scanf("%s",a.name);
        if (!(fp=fopen("dat.bat","ab+")))//用追加的方式打开文件夹
           printf("error");
          fwrite(&a,M,1,fp);
          fclose(fp);
          printf(" 追加完成,");

        system("pause");//每执行都有停留的时间,方便用户观察
    }
    void change()
    {
        FILE *fp;
        char a[20];
        if(!(fp=fopen("pword.bat","wb")))
           printf(" open error");
           printf(" 请输入新密码:");
        scanf("%s",a);
        fwrite(&a,20,1,fp);
        fclose(fp);
        printf(" 密码修改完成,");
        system("pause");
    }
    void dlete()
    {
       int i=0,j,f=0;
       FILE *fp;
       char b[20];
       printf(" 请输入需要删除的人的姓名:");
       scanf("%s",b);
       struct driver a[N],q;
       if (!(fp=fopen("dat.bat","r")))
           printf("error");
       while(!(feof(fp))){
       fread(&a[i],M,1,fp);
       i++;}
       for(j=0;j<i-1;j++)
           if(!(strcmp(a[j].name,b))){f++;
               q=a[j];
               a[j]=a[i-2];
               a[i-1]=q;
              }
               fclose(fp);
           if (!(fp=fopen("dat.bat","wb")))
           printf(" open error");
       for(j=0;j<i-1-f;j++)
          fwrite(&a[j],M,1,fp);
       fclose(fp);
       printf(" 数据删除完成,");
       system("pause");
    }
    void ichange()
    {
       FILE *fp;
       struct driver b[N],f;
       char a[20];
       int c,i=0,j=0;
       if(!(fp=fopen("dat.bat","r")))
           printf("error");
      while(!(feof(fp))){
       fread(&b[i],M,1,fp);
        i++;j++;}
        fclose(fp);
       printf(" 请输入需要修改人的名字:");
       scanf("%s",a);
       for(c=0;c<j-1;c++)
           if(!(strcmp(b[c].name,a))){
           f=b[c];b[c]=b[j-2];b[j-2]=f;}
           if (!(fp=fopen("dat.bat","wb")))
           printf(" open error");
            for(j=0;j<i-2;j++)
       fwrite(&b[j],M,1,fp);
       fclose(fp);
       printf(" 请选择修改的项目 ");
       printf(" (1)year (2)month (3)day (4)cost (5)aeve (6)dtype:");
       scanf("%d",&c);
       if(c==1){
       printf(" 请输入年份:");
       scanf("%d",&f.rdata[0]);}
       if(c==2){
       printf(" 请输入月份:");
       scanf("%d",&f.rdata[1]);}
       if(c==3){
       printf(" 请输入天:");
       scanf("%d",&f.rdata[2]);}
       if(c==4){
       printf("-+ 请输入费用:");
       scanf("%d",&f.cost);}
       if(c==5){
       printf(" 请输入成绩:");
       scanf("%d",&f.aeve);}
       if(c==6){
       printf(" 请输入驾照类型:");
       scanf("%s",f.dtype);}
        if (!(fp=fopen("dat.bat","ab+")))//用追加的方式打开文件夹
           printf("error");
          fwrite(&f,M,1,fp);
          fclose(fp);
          printf(" 修改完成,");

        system("pause");//每执行都有停留的时间,方便用户观察
    }



  • 相关阅读:
    如果让你手写个栈和队列,你还会写吗?【华为云技术分享】
    挑战10个最难的Java面试题(附答案)【上】【华为云技术分享】
    k 近邻算法解决字体反爬手段|效果非常好
    实战!轻松搭建图像分类 AI 服务
    100 个网络基础知识普及,看完成半个网络高手【华为云技术分享】
    周杰伦新歌《说好不哭》上线,程序员哭了......【华为云技术分享】
    云图说|华为云数据库在线迁移大揭秘
    #化鲲为鹏,我有话说# 鲲鹏弹性云服务器配置 Tomcat
    地面光伏电站项目前期申报审批流程及开发建设流程一览!
    HTTP 1.0 Status Code Definitions
  • 原文地址:https://www.cnblogs.com/hackering/p/12992648.html
Copyright © 2020-2023  润新知