c语言成绩统计系统

来源:互联网 发布:apache hadoop怎么用 编辑:程序博客网 时间:2024/04/19 19:07

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define SIZE 10
#define X 60        //及格线
#define MIMA 1225 
struct Student
{
 char name[15];
 int number;
 float chinese;
 float math;
 float english;
 float comput;
 float daolun;
 double average;
};

void zhu_meun();
void jiaoshi_meun();
void xuesheng_meun();
void exit_meun();
void make(struct Student stud[SIZE]);
void chakan(struct Student stud[SIZE]);
void xiugai(struct Student stud[SIZE]);
void aver(struct Student stud[SIZE]);
void zhong(struct Student stud[SIZE]);
void you(struct Student stud[SIZE]);

void zhu_meun()
{
 printf("\n");
 printf("\t\t\t-= 欢迎使用 =-\n\n");
 printf("==============================================================\n");
 printf(" *                                                          * \n");
 printf("  *  【1】教师登陆   【2】学生登陆    【0】 退出           *  \n");
 printf(" *                                                          * \n");
 printf("==============================================================\n");
}

void jiaoshi_meun()
{
 printf("\n");
 printf("\t\t\t-= 欢迎进入教师界面 =-\n\n");
 printf(" ======================================================== \n");
 printf("|   [1] 信息录入                                         |\n");
 printf("|                                                        |\n");
 printf("|   [2] 查看信息                                         |\n");
    printf("|                                                        |\n");
 printf("|   [3] 修改信息               [0] 退出系统              |\n");
 printf("|                                                        |\n");
 printf("|   [4] 每门课程平均分                                   |\n");
 printf("|                                                        |\n");
 printf("|   [5] 两门以上课程不及格学生信息                       |\n");
 printf("|                                                        |\n");
 printf("|   [6] 平均成绩在90分以上或全部成绩在85分以上学生信息   |\n");
 printf(" -------------------------------------------------------- \n");

void xuesheng_meun()
{
    printf("\n\n");
 printf("\t\t-= 欢迎进入学生界面 =-\n\n");
 printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
 printf("           [1] 成绩查询       [0] 退出系统                \n");
 printf(" ^-^                                                 ^-^  \n");
 printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
}

void exit_meun()
{
    printf("\n\n");
 printf("===============================================================\n");
    printf("                     -= 感谢使用 再见 -=                       \n");
    printf(">>>>>>>>>>>>>>>>>>~~~~~~~~~~~~~~~~~~~~~~~~~<<<<<<<<<<<<<<<<<<<<\n");
}

void make(struct Student stud[SIZE])
{
 int n;
 printf("Please enter data of students: \n");
 printf("=============================================\n");
 printf(" 学号 姓名   语文  数学  英语  c语言  导论   \n");
    printf("---------------------------------------------\n");
 for(n=0;n<SIZE;n++)
  scanf("%d%s%f%f%f%f%f",&stud[n].number,stud[n].name,&stud[n].chinese,&stud[n].math,&stud[n].english,
          &stud[n].comput,&stud[n].daolun);
}

void chakan(struct Student stud[SIZE])
{
    int i;
 printf("The data of the students: \n");
 printf("=============================================================== \n");
 printf(" 学号    姓名        语文  数学   英语   c语言  导论   平均成绩 \n");
 printf("--------------------------------------------------------------- \n");
 for(i=0;i<SIZE;i++)
 {
  printf("%-6d%-15s%-7.1f%-7.1f%-7.1f%-7.1f%-7.1f",stud[i].number,stud[i].name,stud[i].chinese,
          stud[i].math,stud[i].english,stud[i].comput,stud[i].daolun);
        stud[i].average=(stud[i].chinese+stud[i].math+stud[i].english+stud[i].comput+stud[i].daolun)/5.0;
  printf("%-7.1f\n",stud[i].average);
 }
}

void xiugai(struct Student stud[SIZE])
{
 int i,nu,z=0;
 printf("Enter the number you want to collect: ");
 scanf("%d",&nu);
 for(i=0;i<SIZE;i++)
 {
  if(nu==stud[i].number)
  {
   z=1;
   printf("Enter the right data again:\n");
   scanf("%d%s%f%f%f%f%f",&stud[i].number,stud[i].name,&stud[i].chinese,&stud[i].math,&stud[i].english,
      &stud[i].comput,&stud[i].daolun);
            stud[i].average=(stud[i].chinese+stud[i].math+stud[i].english+stud[i].comput+stud[i].daolun)/5.0;
  }
 }
 if(z==0) printf("Not find!\n");
 else printf("Success!\n");
}
           
void aver(struct Student stud[SIZE])
{
 int i;
 float a1=0,a2=0,a3=0,a4=0,a5=0;
 for(i=0;i<SIZE;i++)
 {
  a1+=stud[i].chinese;
  a2+=stud[i].math;
  a3+=stud[i].english;
  a4+=stud[i].comput;
  a5+=stud[i].daolun;
 }
 a1/=SIZE;
 a2/=SIZE;
 a3/=SIZE;
 a4/=SIZE;
 a5/=SIZE;
 printf("语文平均分: %7.1f\n",a1);
 printf("数学平均分: %7.1f\n",a2);
    printf("英语平均分: %7.1f\n",a3);
 printf("c语言平均分:%7.1f\n",a4);
 printf("导论平均分: %7.1f\n",a5);
}

void zhong(struct Student stud[SIZE])
{
 int i,y=0,t=0;
    printf("=============================================================== \n");
 printf(" 学号    姓名        语文  数学   英语   c语言  导论   平均成绩 \n");
 printf("--------------------------------------------------------------- \n");
 for(i=0;i<SIZE;i++)
 {
  if(stud[i].chinese<X) y++;
  if(stud[i].math<X)    y++;
  if(stud[i].english<X) y++;
  if(stud[i].comput<X)  y++;
  if(stud[i].daolun<X) y++;
  if(y>2)
  {
   printf("%-6d%-15s%-7.1f%-7.1f%-7.1f%-7.1f%-7.1f",stud[i].number,stud[i].name,stud[i].chinese,
          stud[i].math,stud[i].english,stud[i].comput,stud[i].daolun);
            printf("%-7.1f\n",stud[i].average);
   t=1;
  }
  y=0;
 }
 if(t==0) printf("Not find!\n");
}

void you(struct Student stud[SIZE])
{
 int i,t=0;
    printf("=============================================================== \n");
 printf(" 学号    姓名        语文  数学   英语   c语言  导论   平均成绩 \n");
 printf("--------------------------------------------------------------- \n");
 for(i=0;i<SIZE;i++)
 {
  if(stud[i].average>90||stud[i].chinese>85&&stud[i].math>85&&stud[i].english&&stud[i].comput>85&&stud[i].daolun>85)
  {
   printf("%-6d%-15s%-7.1f%-7.1f%-7.1f%-7.1f%-7.1f",stud[i].number,stud[i].name,stud[i].chinese,
             stud[i].math,stud[i].english,stud[i].comput,stud[i].daolun);
            printf("%-7.1f\n",stud[i].average);
      t=1;
  }
 }
 if(t==0) printf("Not find!\n");
}

void chaxun(struct Student stud[SIZE])
{
 int i,num,t=0;
 printf("Please enter your number to know your score: ");
 scanf("%d",&num);
 for(i=0;i<SIZE;i++)
 {
  if(num==stud[i].number)
  {
   t=1;
            printf("=============================================================== \n");
         printf(" 学号    姓名        语文  数学   英语   c语言  导论   平均成绩 \n");
         printf("--------------------------------------------------------------- \n");
   printf("%-6d%-15s%-7.1f%-7.1f%-7.1f%-7.1f%-7.1f",stud[i].number,stud[i].name,stud[i].chinese,
             stud[i].math,stud[i].english,stud[i].comput,stud[i].daolun);
            printf("%-7.1f\n",stud[i].average);
  }
 } 
 if(t==0) printf("Enter number error!\n");
}

void save(struct Student stud[SIZE])
{
 FILE *fp;
 int i ;
 if((fp=fopen("stu.dat","wb"))==NULL)
 {
  printf("cannot open file\n");
  return;
 }
 for(i=0;i<SIZE;i++)
  if(fwrite(&stud[i],sizeof(struct Student),1,fp)!=1)
   printf("file write error\n");
    fclose(fp);
}

void load(struct Student stud[SIZE])
{
 FILE *fp;
 int i;
 if((fp=fopen("stu.dat","rb"))==NULL)
 {
  printf("cannot open infile\n");
  return;
 }
 for(i=0;i<SIZE;i++)
  if(fread(&stud[i],sizeof(struct Student),1,fp)!=1)
  {
   if(feof(fp))
   {
    fclose(fp);
    return;
   }
   printf("file read error\n");
  }
 fclose(fp);
}

int main()
{
    struct Student stud[SIZE],*p=stud;
 load(p);
    system("cls");
 zhu_meun();
    int i,z=0,j=3,s,k; 
 while(1)
 {
  printf("Enter your choice: ");
  scanf("%d",&i);
     if(i<0||i>2)
  {
      printf("Please enter the number from 0 to 2 !\n");
         continue;
  }
     switch(i)
  {
        case 1:          
               printf("Enter the pass_key: ");
                  do
      {
                     scanf("%d",&s);
                  if(s==MIMA)
      {
                   z=1;
          break;
      }
         j--;
      printf("Error!Enter again:");
      }
         while(j>0);
         if(z==0)
      {
       printf("You have enter 3 times!\n");
       exit(0);
      }
         else
      {
          system("cls");
          jiaoshi_meun();
       while(1)
       {
        printf("Enter your choice: ");
        scanf("%d",&k);
        if(k<0||k>6)
        {
         printf("Please enter the number from 0 to 6 !\n");
         continue;
        }
        switch(k)
        {
           case 1:make(p);save(p);break;
        case 2:chakan(p);break;
        case 3:xiugai(p);save(p);break;
        case 4:aver(p);break;
        case 5:zhong(p);break;
        case 6:you(p);break;
        case 0:exit_meun();exit(0);
        }
       }
      }break;
     case 2:
         int m;
      system("cls");
         xuesheng_meun();
      while(1)
      {
       printf("Enter your choice:");
       scanf("%d",&m);
       if(m==1)
       {
        chaxun(p);
        continue;
       }
       else exit_meun();exit(0);
      }break;
     case 0:exit_meun();exit(0);
  }
 }
 return 0;
}

0 0