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

📄 051150008.cpp

📁 C语言编写的课程设计是一个师生管理系统的
💻 CPP
📖 第 1 页 / 共 2 页
字号:
    }
  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;
 struct date d;                      /*定义时间结构体*/
 getdate(&d);                        /*读取系统日期并把它放到结构体d中*/
 do
  {clrscr();                         /*清屏*/
   puts("\n\t\t\t       051150008 xuefeng");
   printf("\t\t\t\t   %d\\%d\\%d\n\n",d.da_year,d.da_mon,d.da_day);   /*显示当前系统日期*/
   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 + -