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

📄 23.c

📁 学生成绩查询系统
💻 C
字号:
 #include<stdio.h>
struct student                  /*声明结构体*/
{
    char num[15];       /*定义数组存放学生学号*/
 char name[20];      /*定义数组存放名字*/
 char sex;           /*定义字符存放学生性别*/
 int age;            /*定义整形age存放年龄*/
 float score[3];       /*定义数组存放三门成绩*/
 float total;          /*定义浮点变量tatal存放三门成绩总和*/
 float average;       /*定义average存放平均分*/
 int rank;           /*定义 rank存放排名*/
};
struct student stu[]={"3106005418","chenweiwu",'M',20,{100,100,100},0,0,0,
   "3106005415","caichunnan",'M',20,{63,87,90},0,0,0,
    "3106005416","chenkangqian",'M',19,{61,77,82},0,0,0,
    "3106005417","chentingxian",'M',19,{64,87,71},0,0,0,
    "3106005419","chenhaijun",'M',21,{98,64,64},0,0,0,
    "3106005420","gaodingwen",'M',19,{75,82,82},0,0,0,
    "3106005421","guanjunjie",'M',20,{78,63,66},0,0,0,
    "3106005422","huangchaoyun",'M',19,{90,65,59},0,0,0,
    "3106005423","huangzhenjiang",'M',19,{65,76,80},0,0,0,
     "3106005424","lijianfei",'M',19,{69,81,79},0,0,0,
     "3106005427","lixueyan",'M',22,{69,81,75},0,0,0,
      "31060054230","mozeliang",'M',19,{69,81,72},0,0,0,
     "3106005429","linxin",'M',19,{90,81,72},0,0,0,
       "31060054231","liuchuanjing",'M',19,{90,59,72},0,0,0,
        "31060054232","luoronghui",'M',19,{90,81,79},0,0,0,
        "3106005433","panbingpei",'M',21,{90,91,72},0,0,0,
    "31060054234","wanglinbin",'M',19,{90,81,82},0,0,0,
     "3206005448","chenwenzhu",'w',19,{90,81,96},0,0,0,
     "3206005449","gaochenfang",'w',19,{98,81,82},0,0,0,
     "3206005450","lichaoxia",'w',19,{98,81,82},0,0,0,
      "3206005449","zhangxiaomin",'w',19,{98,81,82},0,0,0,
        "3106005425","liguangxi",'M',19,{69,81,78}};
    /*对结构体赋初值*/

struct student stu_temp[]={"3106005418","chenweiwu",'M',20,{100,100,100},0,0,0,
    "3106005415","caichunnan",'M',20,{63,87,90},0,0,0,
    "3106005416","chenkangqian",'M',19,{61,77,82},0,0,0,
    "3106005417","chentingxian",'M',19,{64,87,71},0,0,0,
    "3106005419","chenhaijun",'M',21,{98,64,64},0,0,0,
    "3106005420","gaodingwen",'M',19,{75,82,82},0,0,0,
    "3106005421","guanjunjie",'M',20,{78,63,66},0,0,0,
    "3106005422","huangchaoyun",'M',19,{90,65,59},0,0,0,
    "3106005423","huangzhenjiang",'M',19,{65,76,80},0,0,0,
     "3106005424","lijianfei",'M',19,{69,81,79},0,0,0,
     "3106005427","lixueyan",'M',22,{69,81,75},0,0,0,
      "31060054230","mozeliang",'M',19,{69,81,72},0,0,0,
     "3106005429","linxin",'M',19,{90,81,72},0,0,0,
       "31060054231","liuchuanjing",'M',19,{90,59,72},0,0,0,
        "31060054232","luoronghui",'M',19,{90,81,79},0,0,0,
        "3106005433","panbingpei",'M',21,{90,91,72},0,0,0,
    "31060054234","wanglinbin",'M',19,{90,81,82},0,0,0,
     "3206005448","chenwenzhu",'w',19,{90,81,96},0,0,0,
     "3206005449","gaochenfang",'w',19,{98,81,82},0,0,0,
     "3206005450","lichaoxia",'w',19,{98,81,82},0,0,0,
      "3206005449","zhangxiaomin",'w',19,{98,81,82},0,0,0,
        "3106005425","liguangxi",'M',19,{69,81,78}};
    /*声明结构体temp为student类型并赋值,用于保存原始数据不致于实现计算和排序后原始数据顺序打乱*/
struct student t;    /*声明结构体属于student 类型*/

void main()
{
 void search(struct student stu[]);         /*声明函数,下同*/
 void calculate(struct student stu[]);
 void sort(struct student stu[],int n);
 void print(struct student stu_temp[]);
 void ave(struct student stu[]);     
  textcolor(12) ;
 textbackground(9);
 clrscr();

 function_choose();                     /*调用主界面函数function choose*/
 }

    void sort(struct student stu[],int n)   /*定义排序函数sort:运用选择法对数组中的元素按大到小进行排序*/
{
 int i,j,k,m=1;
 for(i=0;i<n-1;i++)
 {
  k=i;
  for(j=i+1;j<n;j++)
   if(stu[j].total>stu[k].total)k=j;
   t=stu[k];stu[k]=stu[i];stu[i]=t;
    } 
    for(i=0;i<20;i++){stu[i].rank=m;m++;}
 }

void print(struct student stu_temp[])  /*函数print,实现第一个功能*/
{
 int i,j;
    int m;
 printf("\nNumber      Name           Sex Age Score.E Score.M Score.C\n");
 for(i=0;i<20;i++)        /*循环结构,输出学生信息*/
    {
    printf("%-12s%-16s%-3c%-3d",stu_temp[i].num,stu_temp[i].name,stu_temp[i].sex,stu_temp[i].age);
  for(j=0;j<3;j++)
  printf("%6.1f  ",stu_temp[i].score[j]);printf("\n");
  }
  printf("\n1 Return choose function.\n2 Exit.\n");   /*控制返回主届面或退出*/
  scanf("%d",&m);if(m==1)function_choose();  /*调用主界面函数function choose*/
     else if(m==2);
 }

void calculate(struct student stu[])     /*定义计算函数calculate:计算成绩并排序*/
{
 float sum;int m;
 float average=0;
 int i,j;int temp=1;
 for(i=0;i<20;i++)         /*循环结构,计算学生总分和平均分*/
 {
  sum=0;
  for(j=0;j<3;j++)
  sum+=stu[i].score[j];    /*计算第i个学生的总分*/
  stu[i].total=sum;
  average=sum/3.0;      /*计算第i个学生的平均分 */
  stu[i].average=average;
  temp+=1;             /*temp统计需要排序的学生数,用于下面的sort函数*/
  }
   sort(stu,temp);       /*调用排序函数sort*/
  }

void ave(struct student stu[])   /*定义函数ave:实现计算并排序的功能*/
{
 int m;
 int i,j;
 calculate(stu);      /*调用计算函数calculate*/
 printf("\nNumber      Name           Sex Age Score.E Score.M Score.C  Total Average Rank\n");
   for(i=0;i<20;i++)
   {
    printf("%-12s%-16s%-3c%-3d",stu[i].num,stu[i].name,stu[i].sex,stu[i].age);
     for(j=0;j<3;j++)
     printf("%6.1f  ",stu[i].score[j]);
     printf(" %6.1f  %3.1f    %d\n",stu[i].total,stu[i].average,stu[i].rank);
    }
    printf("\n1 Return choose function.\n2 Exit.\n"); /*控制返回主届面或退出*/
    scanf("%d",&m);
    if(m==1)function_choose();  /*调用主界面函数function choose*/
    else if(m==2);
 }
void search(struct student stu[])
{
 int m;
 int i,j;
 char student_name[20];
 calculate(stu);              /*调用计算函数calculate*/
 printf("input the name of who do you want to search? thank you!\n");
 scanf("%s",student_name);
 for(i=0;i<20;i++)
 {
 if(strcmp(student_name,stu[i].name)==0)   /*调用strcmp函数实现查找功能*/
  {  
   printf("\nNumber      Name           Sex Age Score.E Score.M Score.C  Total Average Rank\n");
   printf("%-12s%-16s%-3c%-3d",stu[i].num,stu[i].name,stu[i].sex,stu[i].age);
   for(j=0;j<3;j++)
   printf("%6.1f  ",stu[i].score[j]);
  
   printf(" %6.1f  %3.1f     %d\n",stu[i].total,stu[i].average,stu[i].rank);
   printf("\n");
   }
  }    
printf("\n1 Search again.\n2 Return choose function.\n3 Exit."); /*控制多次查找*/
  scanf("%d",&m);if(m==1)search(stu);
  else if(m==2)function_choose();  /*返回主界面*/
  else if(m==3);
 }

 function_choose()          /*定义主界面函数function choose:给用户选择功能*/
{
 int temp;

 printf("\t\tplease Choose one function.\n\n");
 printf("\t1 Print all the student's mark.\n\t2 Calculate and Range.\n\t3 Search student.\n\t4 Exit.\n");
 scanf("%d",&temp);
 if(temp==1)print(stu_temp);           /*选择第一个功能*/
 if(temp==2)ave(stu);                 /*选择第二个功能*/
 if(temp==3)search(stu);              /*选择第三个功能*/
 }

⌨️ 快捷键说明

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