C语言学籍管理系统

xiaoxiao2021-02-28  15

#include <stdio.h> #define N 6 struct Student//定义结构体学生信息变量。 {     int num;     int clas;     char name[20];     float score1;     float score2;     float score3;     float aver; } stu[N],*p=stu; char no[20]= {'n','o'},yes[20]= {'y','e','s'};//定义全局变量yes,no进行strcmp的比较。 int main()//主函数。 {     int opt,i;     char xuanze[20];     void printmenu(void);     void print(struct Student stu);     void input(struct Student stu[N]);     void delet(struct Student stu[N]);     void select(struct Student stu[N]);     void order(struct Student stu[N]);     void out(struct Student stu[N]);     printmenu();//输出菜单。     scanf("%d",&opt);//输入选项。     while (opt!=6)//进行菜单选择。     {         if (opt==1)         {             input(p);         }         else if (opt==2)         {             delet(p);         }         else if (opt==3)         {             select(p);         }         else if (opt==4)         {             order(p);         }         else if (opt==5)         {             out(p);         }         else         {             printf("Wrong choice.\n");         }         printmenu();//再次输出菜单。         scanf("%d",&opt);//输入选项。     }     return 0; } void printmenu(void)//菜单输出函数。 {     printf("1.input\n");     printf("2.delete\n");     printf("3.select\n");     printf("4.order\n");     printf("5.output\n");     printf("6.quit\n");     printf("please input your option\n");     return 0; } void print(struct Student stu)//输出学生信息函数。 {     printf("M,",stu.num);     printf("%d,",stu.clas);     printf("%s,",stu.name);     printf("%3.1f,",stu.score1);     printf("%3.1f,",stu.score2);     printf("%3.1f,",stu.score3);     printf("%4.1f\n",stu.aver);     return 0; } void input(struct Student stu[N])//输入学生信息函数。 {     int i;     char xuanze[20];     for (i=0; i<N; i++)     {         printf("Id ");         scanf("%d",&stu[i].num);         printf("class ");         scanf("%d",&stu[i].clas);         printf("name ");         scanf("%s",&stu[i].name);         printf("score1 ");         scanf("%f",&stu[i].score1);         printf("score2 ");         scanf("%f",&stu[i].score2);         printf("score3 ");         scanf("%f",&stu[i].score3);         stu[i].aver=(stu[i].score1+stu[i].score2+stu[i].score3);         printf("continue?\n");         scanf("%s",&xuanze);         if ((strcmp(xuanze,no))==0)             break;     }     return 0; } void delet(struct Student stu[N])//删除学生信息函数。 {     void order(struct Student stu[N]);     int con(char str[]);     char c[20],xuanze[20],*str=c;     int s=0,i,j;     scanf("%s",&c);     if ((isdigit(c[1]))==1)     {         s=con(str);         for (i=0; i<N; i++)         {             if (stu[i].num==s)             {                 for (j=i; j<N; j++)                 {                     stu[j]=stu[j+1];                 }             }         }     }     else     {         for (i=0; i<N; i++)         {             if ((strcmp(c,stu[i].name))==0)             {                 for (j=i; j<N; j++)                 {                     stu[j]=stu[j+1];                 }             }         }     }     order(p);     printf("continue?\n");     scanf("%s",&xuanze);     if ((strcmp(xuanze,yes))==0)         delet(p);     return 0; } void select(struct Student stu[N])//选择学生信息函数。 {     int banji,i;     char xuanze[20];     scanf("%d",&banji);     for (i=0; i<N; i++)     {         if ((stu[i].clas==banji)||(stu[i].num==banji))         {             print(stu[i]);         }     }     printf("continue?\n");     scanf("%s",&xuanze);     if ((strcmp(xuanze,yes))==0)         select(p);     return 0; } void order(struct Student stu[N])//学生信息排序函数。 {     int i,j;     struct Student temp;     void print(struct Student stu);     for (i=0; i<N; i++)     {         for (j=i; j<N; j++)         {             if (stu[i].clas>stu[j].clas)             {                 temp=stu[i];                 stu[i]=stu[j];                 stu[j]=temp;             }             else if (stu[i].clas==stu[j].clas)             {                 if (stu[i].aver<stu[j].aver)                 {                     temp=stu[i];                     stu[i]=stu[j];                     stu[j]=temp;                 }             }         }     }     for (i=0; i<N; i++)     {         if (stu[i].num!=0)         {             print(stu[i]);         }     }     return 0; } void out(struct Student stu[N])//学生信息输出函数。 {     order(p) ;     return 0; } int con(char str[])//字符转化为数字的函数。 {     int rt=0,i;     for (i=0; i<20&&str[i]!='\0'; i++)     {         rt=rt*10+(str[i]-'0');     }     return rt; }
转载请注明原文地址: https://www.6miu.com/read-2050097.html

最新回复(0)