#include "stdio.h" 
#include "conio.h"
#include "stdlib.h" 
#include "string.h"
#include "windows.h"





int stu_num=0;          //全局变量,已输入成绩的学生人数






struct student          
{
 char num[11];          //储存学号
 char name[11];          //储存名字
 char sex[3];          //储存性别
 char date[11];          //储存入学时间 
  float software;          //储存软件成绩
 float english;          //储存英语成绩
 float math;          //储存数学成绩
}student[100];






void warning()          //警告函数
{
 char a;
 printf("您所查找的学生暂无数据,按任意键返回重新输入");
 a=getch();          //储存任意键
}






void input()          //输入函数
{
 char a;
    do
 {
  system("cls");
     printf("(1)输入学生数据\n(0)返回主菜单\n请输入您要执行的选项:");
  a=getch();          //获取输入选项
  if(a=='1')          //输入学生数据
  {
   system("cls");          //清屏函数
      printf("下面输入第%d个学生的数据\n学号:",stu_num+1);          //储存学生数据于结构体中
      scanf("%s",&student[stu_num].num);
         printf("姓名:");
      scanf("%s",&student[stu_num].name);
      printf("性别(m/f):");
      scanf("%s",&student[stu_num].sex); 
      printf("入学时间:");
      scanf("%s",&student[stu_num].date);
      printf("软件成绩:");
      scanf("%f",&student[stu_num].software); 
      printf("英语成绩:");
      scanf("%f",&student[stu_num].english);
      printf("数学成绩:");
      scanf("%f",&student[stu_num].math);
 stu_num++;
  }
  if(a=='0')          //退出输入函数
  {
   break;          //强制结束循环以退出输入函数
  }
 }while(1);
}






void output()          //输出函数
{
 system("cls");          //清屏函数
 int i,j;
 printf("学号\t    姓名    性别    入学年月  学期  软件成绩   英语成绩   数学成绩   \n");
 for(i=0;i<stu_num;i++)          //通过for语句逐个输出学生数据
 {
  printf("%-12s%-8s%-8s%-10s%-8.2f%-8.2f%-8.2f\n",student[i].num,student[i].name,student[i].sex,student[i].date,student[i].software,student[i].english,student[i].math);
 }
 printf("按任意键返回主菜单");
 j=getch();          //储存任意键
}






void revise()          //修改函数
{
 int i=0;
 char a,num[11],name[11];
st: system("cls");          //清屏函数
 printf("(2)按学号查找修改\n(3)按名字查找修改\n(0)返回主菜单\n请输入您要执行的选项:");
 a=getch();          //获取输入选项
 if(a=='2')          //按学号查找
 {
  printf("请输入该学生学号:");
  scanf("%s",&num);          //输入查找数据并用for语句进行逐个对比
  for(i=0;i<stu_num;i++)
  {
   if(strcmp(num,student[i].num)==0)
   {
    break;          //找到后结束循环
   }
  }
 }
 else if(a=='3')          //按姓名查找
 {
  printf("请输入该学生姓名:");
  scanf("%s",&name);          //输入查找数据并用for语句进行逐个对比
  for(i=0;i<stu_num;i++)
  {
   if(strcmp(name,student[i].name)==0)
   {
    break;          //找到后结束循环
   }
  }
 }
 else if(a=='0')          //退出修改函数
 {
  return;
 }
 else          //为了防止选错选项
 {
  goto st;
 }
    if(i==stu_num)          //未找到学生数据时提示警告并重新查找
 {
  warning();
  goto st;
 }
 system("cls");
 printf("您要更改的学生的信息为:\n");          //输出欲修改的学生信息
 printf("学号\t    姓名    性别    入学时间    软件成绩   英语成绩   数学成绩   \n");
 printf("%-12s%-8s%-8s%-10s%-8.2f%-8.2f%-8.2f\n",student[i].num,student[i].name,student[i].sex,student[i].date,student[i].software,student[i].english,student[i].math);
 printf("请更新该学生的数据\n学号:");          //找到后进行数据更新
 scanf("%s",&student[i].num);
 printf("姓名:");
 scanf("%s",&student[i].name);
 printf("性别:");
 scanf("%s",&student[i].sex);
 printf("入学时间:");
 scanf("%s",&student[i].date);
 printf("软件成绩:");
 scanf("%f",&student[i].software);
 printf("英语成绩:");
 scanf("%f",&student[i].english);
 printf("数学成绩:");
 scanf("%f",&student[i].math);
 printf("该学生数据已修改,按任意键返回");
 a=getch();          //储存任意键
}





void search()          //查询函数
{
 int i=0;
 char a,num[11],name[11];
st: system("cls");          //清屏函数
    printf("(2)按学号查找\n(3)按名字查找\n(0)返回主菜单\n请输入您要执行的选项:");
 a=getch();          //获取输入选项
 if(a=='2')          //按学号查找
 {
  printf("请输入该学生学号:");
  scanf("%s",&num);          //输入查找数据并用for语句进行逐个对比
  for(i=0;i<stu_num;i++)
  {
   if(strcmp(num,student[i].num)==0)
   {
    break;          //找到后结束循环
   }
  }
 }
 else if(a=='3')          //按姓名查找
 {
  printf("请输入该学生姓名:");
  scanf("%s",&name);          //输入查找数据并用for语句进行逐个对比
  for(i=0;i<stu_num;i++)
  {
   if(strcmp(name,student[i].name)==0)
   {
    break;          //找到后结束循环
   }
  }
 }
 else if(a=='0')          //退出查询函数
 {
  return;
 }
 else          //为了防止选错选项
 {
  goto st;
 }
    if(i==stu_num)          //未找到学生数据时提示警告并重新查找
 {
  warning();
  goto st;
 }
 printf("学号\t    姓名    性别    入学时间    软件成绩   英语成绩   数学成绩  \n");
 printf("%-12s%-8s%-8s%-10s%-8.2f%-8.2f%-8.2f\n",student[i].num,student[i].name,student[i].sex,student[i].date,student[i].software,student[i].english,student[i].math);
 printf("按任意键返回主菜单");
 a=getch();
}






void del()          //删除函数
{
 int i=0,j;
 char a,num[11],name[11];
st: system("cls");          //清屏函数
 printf("(2)按学号查找删除\n(3)按名字查找删除\n(0)返回主菜单\n请输入您要执行的选项:");
 a=getch();          //获取输入选项
 if(a=='2')          //按学号查找
 {
  printf("请输入该学生学号:");
  scanf("%s",&num);          //输入查找数据并用for语句进行逐个对比
  for(i=0;i<stu_num;i++)
  {
   if(strcmp(num,student[i].num)==0)
   {
    break;          //找到后结束循环
   }
  }
 }
 else if(a=='3')          //按姓名查找
 {
  printf("请输入该学生姓名:");
  scanf("%s",&name);          //输入查找数据并用for语句进行逐个对比
  for(i=0;i<stu_num;i++)
  {
   if(strcmp(name,student[i].name)==0)
   {
    break;          //找到后结束循环
   }
  }
 }
 else if(a=='0')          //退出删除函数
 {
  return;
 }
 else
 {
  goto st;          //为了防止选错选项
 }
    if(i==stu_num)          //未找到学生数据时提示警告并重新查找
 {
  warning();
  goto st;
 }
 for(j=i;j<stu_num;j++)          //通过for语句进行数据覆盖实现删除学生数据
 {
  student[j]=student[j+1];
 }
 stu_num-=1;
 printf("该学生数据已删除,按任意键返回主菜单");
 a=getch();
}






void menu()          //目录函数
{
 do
 {
     char a; 
st:     system("cls");          //清屏函数
                                                 
                                         
                                   printf(" 〓〓〓〓〓〓〓〓〓〓  ☆   学 生 成 绩 管 理 系  统     ☆  〓〓〓〓〓〓〓〓〓 \n");
                                   printf(" ○ ○ ○ ○ ★★★★★         ★★★★★★★         ★★★★★●│● ● ●  \n");
                                   printf(" 〓〓〓〓〓〓〓〓〓★  ☆        (1)输入学生数据       ☆  ★〓〓〓〓〓〓〓〓〓 \n");
                                   printf(" ○ ○ ○ ○ ★★★★★          (4)查看学生数据            ★★★★★●●●● \n");
                                   printf( "〓〓〓〓〓〓〓〓〓★  ☆         (5)修改学生数据     ☆  ★〓〓〓〓〓〓〓〓〓 \n");
                                   printf(" ○ ○ ○ ○ ★★★★★          (6)删除学生数据            ★★★★★●●●● \n");
                                   printf(" 〓〓〓〓〓〓〓〓〓★  ☆        (7)查询学生数据        ☆  ★〓〓〓〓〓〓〓〓〓 \n");
                                   printf(" ○ ○ ○ ○ ★★★★★          (0)安全退出系统            ★★★★★●●●  \n");

a=getch();
     switch(a)
  {
  case '1':          //进入输入函数
   input();
   break;
     case '4':          //进入输出函数
   output();
   break;
  case '5':          //进入修改函数
   revise();
   break;
  case '6':          //进入删除函数
   del();
   break;
  case '7':          //进入查找函数
   search();
   break;
  case '0':          //退出程序
      return;
  default:          //为了防止选错选项
   goto st;
  }
 }while(1);

}






void main()
{                                      
                                         printf("                              ◤    ●●●● ◥                                         \n");                                          
                                         printf("                            ▕       ●● ▕                                          \n");                                          
                                         printf("                            ── ●     ●  ──                                           \n");                                          
                                         printf("                            ──    ﹀    ──                                             \n");                                          
                                         printf("                             ◣10软件        李思蔚◢                                             \n");                                          
                                         printf("                           ☆欢迎☆ ∞┼∞ ☆使用☆                                                 \n");                                          
                                         printf("                             ███ ∞┼∞ ███                                                     \n");                                          
                                         printf("                             ◥█◤ ∞┼∞ ◥█◤                                                       \n");                                          
                                         printf("                                  ═══╧═══                                                             \n");
                                         printf("                       Please      wait        a        minute!!!!                                             \n");                                       
                                          
 Sleep(7000);
 menu();
}