⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 stu_sys.c

📁 SQL程序123456789123456789
💻 C
📖 第 1 页 / 共 2 页
字号:
     w2=1;         /*来控制保存,使w2=1是标记已有过修改*/
    }
  else
    {w0=0;
     if(w2==1)
       stu[k]=s;
    }      /*走到这里是由于用户没有确认这次修改(在调用修改函数w1=modify_data(k,n);时没有确认).  使W0=0,为了让终止循环,
  stu[k]=s,则把备份的s恢复给stu[k](即当次修改的),这样的好处是确保在此之前修改过的成功保存,而本次(用户没有确认的)不修改*/
  if(w0!=1&&w2==1)     /*W0不等于1则表示正常返回,w2=1表示在此之前有过修改,这时就保存用户已确认修改的并返回*/
        save(n);       /*w2不等于1表示在此次之前没有修改过(即:第一次),而又反悔这次修改,则不保存返回*/
  }
  while(w0==1);
 menu();
}
 /****************删除模块****************/
del()                             /*删除模块*/
{struct student s;
 FILE *fp;
 int i,j,n,k,c,w0=1;
 n=load();
 do
 {clrscr();
  k=-1;
  /*给用户看全部记录以便确认要删除的记录*/
  puts___();
  printf_face();                /*调用显示数据结构项目函数*/
  for(i=0;i<n;i++)
    if(stu[i].ave!=0)
     {if((i!=0)&&(i%10==0))     /*目的是分屏显示,每10个一屏*/
       {printf("\n\nRemember NO. which needed del. pass any key to contiune  . . .");
        getch();
        puts("\n\n");
       }
      printf_one(i);                   /*调用显示一个记录的函数*/
     }
  puts___();
  do
   {printf("\n\nEnter NO. that you want to Delete!    NO.:");
    scanf("%s",s.num);                /*输入要修改的数据的学号*/
    for(i=0;i<n;i++)                  /*查找要修改的数据*/
     if(strcmp(s.num,stu[i].num)==0)
       {k=i;                      /*找到要修改的记录的下标赋给K*/
        s=stu[i];
       }
    if(k==-1) printf("\n\nNO exist! please again"); /*K=-1,表示没有找到相同之的*/
   }
   while(k==-1);
  puts("\n");
  printf_face();                /*调用显示数据结构项目函数*/
  printf_one(k);                  /*调用显示一个记录的函数*/
  printf("\nAre you sure?\n\t1).sure   2).no and del another   3).back without save all  [ ]\b\b");
  scanf("%d",&c);
  if(c==1)
    {stu[k].ave=0;         /*stu[k].ave=0用来标识这个记录是要删除的.保存时则不保存stu[k].ave=0的数据*/
     printf("\n\nSuccessful ^_^.\n\nAre you again?\n\t1).again  2).back to menu\t[ ]\b\b");   /*问是否继续*/
     scanf("%d",&w0);
    }
  if(c==3) w0=0;           /*w0=0不删除直接返回*/
  if(w0!=1&&c!=3)           /*只有当确认删除后返回才保存,不删除直接返回则不保存,且不保存在此之前删除过的记录*/
     save(n);
  }
  while(w0==1);
 menu();              /*返回主介面*/
}
/****************浏览(全部)模块****************/
browse()                          /*浏览(全部)模块*/
{int i,j,n;
 n=load();         /*加载记录*/
 clrscr();
 puts___();
 printf_face();                  /*调用显示数据结构项目函数*/
 for(i=0;i<n;i++)
   {if((i!=0)&&(i%10==0))               /*目的是分屏显示*/
     {printf("\n\nPass any key to contiune  . . .");
      getch();
      puts("\n\n");
     }
    printf_one(i);                 /*调用显示一个记录的函数*/
   }
 puts___();
 printf("\tThere are  %d record.\n",n);
 printf("\nPass any key to back  . . .");
 getch();                          /*按任意健*/
 menu();
}
 /****************查找模块****************/
search()                          /*查找模块*/
{int i,n,k,w1=1,w2,w3,w4;
 struct student s;
 n=load();
 do
  {do
    {k=-1;
     printf("\n\nEnter name that you want to search!    name:");
     scanf("%s",s.name);                /*输入要修改的数据的学号*/
     printf_face();                 /*调用显示数据结构项目函数*/
     for(i=0;i<n;i++)                  /*查找要修改的数据*/
       if(strcmp(s.name,stu[i].name)==0)
         {k=i;                      /*找到要修改的记录*/
          printf_one(k);break;                  /*调用显示一个记录的函数*/
         }
     if(k==-1)
       {printf("\n\nNO exist! please");
        printf("\n\nAre you again?\n\t1).again   2).NO and back   [ ]\b\b");
        scanf("%d",&w1);
       }
    }
    while(k==-1&&w1==1);              /*如果w1不等于1则直接返回*/
   w4=0;w3=0;
   if(k!=-1)                           /*k不等于-1表示找到,如果找到则选择操作*/
       {printf("\n\nWhat do you want to do?\n\t1).Search another   2).Modify   3).Delete   4).Back menu   [ ]\b\b");
        scanf("%d",&w2);
        switch(w2)
          {case 2:w3=modify_data(k,n);break; /*调用修改数据函数*/
           case 3:{printf("\nAre you sure?\n\t1).Sure   2).No and back   [ ]\b\b");
                   scanf("%d",&w4);
                   if(w4==1)
                     stu[k].ave=0;     /*表示删除*/
                   break;
                  }
          }
        if(w3==1||w4==1)
           {save(n);
            printf("\n\nSuccessful. ^_^.");
            printf("\n\nWhat do you want to do?\n\t1).Search another   2).Back   [ ]\b\b");
            scanf("%d",&w2);
           }
       }
   }
   while(w2==1);
 menu();
}
/****************插入模块****************/
insert()                           /*插入模块*/
{int i,j,n,c;
 struct student s;
 n=load();
 puts("\nInput one data.\n");
 do
  {input(n);       /*输入到第n个记录,即插入到最后*/
   printf_face();
   printf_one(n);
   printf("\n\nAre you sure?\n\n\t1).Sure\t2).cancel snd again\t3).Back withuot save  [ ]\b\b");
   scanf("%d",&c);
   if(c==1)
     {for(j=0;j<n;j++)                    /*用起泡法排序*/
        for(i=n;i>j;i--)
          if(stu[i].ave>stu[i-1].ave)
            {s=stu[i-1];stu[i-1]=stu[i];stu[i]=s;}
      save(n+1);
      printf_back();
     }
   else if(c!=2) menu();
  }
  while(c==2);
}
 /****************排序模块(按平均成绩)****************/
order()                           /*排序模块(按平均成绩)*/
{int i,j,k,n;
 struct student s;
 n=load();
 for(i=0;i<n-1;i++)              /*选择法排序*/
   {k=i;
    for(j=i+1;j<n;j++)
      if(stu[j].ave>stu[k].ave) k=j;
    s=stu[i];stu[i]=stu[k];stu[k]=s;
   }
 save(n);
 puts("\n\n");
 printf_back();
}
 /****************主界面****************/
menu()                            /*主界面*/
{int n,w1;
 do
  {clrscr();                   /*清屏*/
   puts("\n\t\t\t   Copy right by CHEN LIN BIN!");
   puts("\t\t\t\t  24/06/2005!\n\n");
   puts("\t\t*********************MENU*********************\n\n");
   puts("\t\t\t\t1.Enter new data");
   puts("\t\t\t\t2.Addition data");
   puts("\t\t\t\t3.Modify data");
   puts("\t\t\t\t4.Delete data");
   puts("\t\t\t\t5.Browse all");
   puts("\t\t\t\t6.Search by name");
   puts("\t\t\t\t7.Insert data");
   puts("\t\t\t\t8.Order by average");
   puts("\t\t\t\t9.Exit");
   puts("\n\n\t\t**********************************************\n");
   printf("Choice your number(1-9): [ ]\b\b");
   scanf("%d",&n);
   if(n<1||n>9)                                  /*对选择的数字作判断*/
     {w1=1;getchar();}
   else  w1=0;
  }
  while(w1==1);
 /*选择功能*/
 switch(n)
  {case 1:enter();break;      /*输入模块*/
   case 2:add();break;        /*追加模块*/
   case 3:modify();break;     /*修改模块*/
   case 4:del();break;        /*删除模块*/
   case 5:browse();break;     /*浏览模块*/
   case 6:search();break;     /*查找模块*/
   case 7:insert();break;     /*插入模块*/
   case 8:order();break;      /*排序模块*/
   case 9:exit(0);            /*退出*/
  }
}
/*****************主函数****************/
main()
{menu();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -