学生管理系统(结构体)

 

#include<stdio.h>
#include<stdlib.h>
struct Date
{
 int year; 
 int month;
 int day;
};
struct Score
{
 int Math;
 int English;
 int Chinese;
 int CLanguage;
};
struct student
{
 long int num;
 char name[20];
 char sex;
 struct Date age;
    char address[30];
 struct Score sc;

}stu[5]={
 {200901,"wangwei",'M',1991,06,17,"guangdongLu47hao",67,49,77,88},
 {200902,"zhangwen",'F',1991,06,17,"guangdongLu47hao",67,49,77,98},
 {200903,"zhangwen",'F',1991,06,17,"guangdongLu47hao",67,49,77,78},
 {200904,"wangning",'M',1992,03,15,"tianjinglu14hao",88,89,97,78},
 {200905,"zhourunmin",'F',1991,10,25,"shanxiqianxian",86,99,87,98}
};
/***********************************查询学生信息*******************************************/
void chaxun()
{
 int i,j,k;
 
loop2 :scanf("%d",&i);
 switch(i)
 {
 case 200901:
  printf("\n---------------------------------------------------------------------\n");
  printf("\n学号\t姓名\t性别\t出生日期\t住址\n\n");
  printf("%ld\t%s  %c\t%d-%d-%d\t   %s",stu[0].num,stu[0].name,stu[0].sex,stu[0].age.year,stu[0].age.month,stu[0].age.day,stu[0].address);
  printf("\n---------------------------------------------------------------------\n");
  printf("\n数学\t英语\t语文\tc语言\n");
  printf("\n%d\t%d\t%d\t%d\t\n",stu[0].sc.Math,stu[0].sc.English,stu[0].sc.Chinese,stu[0].sc.CLanguage);
  break;
 case 200902:
  printf("\n---------------------------------------------------------------------\n");
  printf("\n学号\t姓名\t性别\t出生日期\t住址\n");
  printf("%ld\t%s  %c\t%d-%d-%d\t   %s",stu[1].num,stu[1].name,stu[1].sex,stu[1].age.year,stu[1].age.month,stu[1].age.day,stu[1].address);
  printf("\n---------------------------------------------------------------------\n");
  printf("\n数学\t英语\t语文\tc语言\n");
  printf("\n%d\t%d\t%d\t%d\t\n",stu[1].sc.Math,stu[1].sc.English,stu[1].sc.Chinese,stu[1].sc.CLanguage);
   break;
 case 200903:
  printf("\n---------------------------------------------------------------------\n");
  printf("\n学号\t姓名\t性别\t出生日期\t住址\n");
  printf("%ld\t%s  %c\t%d-%d-%d\t   %s",stu[2].num,stu[2].name,stu[2].sex,stu[2].age.year,stu[2].age.month,stu[2].age.day,stu[2].address);
  printf("\n---------------------------------------------------------------------\n");
  printf("\n数学\t英语\t语文\tc语言\n");
  printf("\n%d\t%d\t%d\t%d\t\n",stu[2].sc.Math,stu[2].sc.English,stu[2].sc.Chinese,stu[2].sc.CLanguage);
   break;
 case 200904:
   printf("\n---------------------------------------------------------------------\n");
  printf("\n学号\t姓名\t性别\t出生日期\t住址\n");
  printf("%ld\t%s  %c\t%d-%d-%d\t   %s",stu[3].num,stu[3].name,stu[3].sex,stu[3].age.year,stu[3].age.month,stu[3].age.day,stu[3].address);
  printf("\n---------------------------------------------------------------------\n");
  printf("\n数学\t英语\t语文\tc语言\n");
  printf("\n%d\t%d\t%d\t%d\t\n",stu[3].sc.Math,stu[3].sc.English,stu[3].sc.Chinese,stu[3].sc.CLanguage);
  break;
 case 200905:
  printf("\n---------------------------------------------------------------------\n");
  printf("\n学号\t姓名\t性别\t出生日期\t住址\n");
  printf("%ld\t%s  %c\t%d-%d-%d\t   %s",stu[5].num,stu[5].name,stu[5].sex,stu[5].age.year,stu[5].age.month,stu[5].age.day,stu[5].address);
  printf("\n---------------------------------------------------------------------\n");
  printf("\n数学\t英语\t语文\tc语言\n");
  printf("\n%d\t%d\t%d\t%d\t\n",stu[5].sc.Math,stu[5].sc.English,stu[5].sc.Chinese,stu[5].sc.CLanguage);
  break;
 default:
  printf("\n您输入有误!请重新输入!\n");
  goto loop2;
  break;
 }
}
/**********************平均分和总分的计算函数******************************************/
void average()
{
 int i,sum=0,ave;
 
 for(i=0;i<5;i++)
 {
  sum=sum+stu[i].sc.Math+stu[i].sc.English+stu[i].sc.Chinese+stu[i].sc.CLanguage;
  printf("\n%s的成绩总和是:%d\n",stu[i].name,sum);
  ave=sum/4;
 
  printf("\n%s的成绩平均分是:%d\n",stu[i].name,ave);
  sum=0;
 }

}
/*****************************删除学生信息**********************************************/
void Delete()
{
 int i,j;
 struct student stu1={0,"0",'0',0,0,0,"0",0,0,0,0};
loop: printf("\n请输入你要删除成绩的学生学号:\n");
 scanf("%d",&i);
 switch(i)
 {
 case 200901:
  stu[0]=stu1;
  printf("\n该成绩已删除!\n");
  break;
 case 200902:
  stu[1]=stu1;
  printf("\n该成绩已删除!\n");
  break;
 case 200903:
  stu[2]=stu1;
  printf("\n该成绩已删除!\n");
  break;
 case 200904:
  stu[3]=stu1;
  printf("\n该成绩已删除!\n");
  break;
 case 200905:
  stu[4]=stu1;
  printf("\n该成绩已删除!\n");
  break;
 default :
    printf("您输入有误,请重新输入!");
       goto loop;

 } 
 }
/*******************************************排序************************************/
void MaoPao()
{
 int i,sum=0,ave,j,temp,k;
 int sum1[5];
 printf("\n按照总分排名:\n");
 for(i=0;i<5;i++)
 {
  sum=sum+stu[i].sc.Math+stu[i].sc.English+stu[i].sc.Chinese+stu[i].sc.CLanguage;
  ave=sum/4;
  sum1[i]=sum;
  sum=0;
 }
for(k=0;k<4;k++)
for(j=0;j<4-k;j++)
{
 if(sum1[j]<sum1[j+1])
 {
 temp=sum1[j];
 sum1[j]=sum1[j+1];
 sum1[j+1]=temp;
 }
}
for(k=0;k<5;k++)
{
 printf("第%d名:%d\n",k+1,sum1[k]);
}
}

/************************************************************************************/

void main()
{
 int k,j;
 printf("\t\t\t\t学生管理系统\n");
 while(1)
 {
loop1 :
 printf("\n--------1:    -------------按1进行学生信息查询----------------------\n");
 printf("\n--------2:    -------------按2计算学生平均分和总分------------------\n");
 printf("\n--------3:    -------------按3进行学生排名--------------------------\n");
 printf("\n--------4:    -------------按4删除学生信息--------------------------\n");
 printf("\n--------5:    -------------按5退出----------------------------------\n");
    scanf("%d",&k);
 switch(k)
 {
 case 1:
   printf("\n请输入学号:\n");
   chaxun();
   break;
 case 2:
 printf("\n-----------------------------各个学生的成绩总和------------------------\n");
 average();
 break;
 case 3:
 MaoPao();
  break;
 case 4:
 printf("\n-----------------------------删除学生信息------------------------------\n");
    Delete();
 break;
 case 5:
  exit(0);
  break;
 default :
  printf("\n您输入有误!请重新输入!\n");
  goto loop1;
  } 
 }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值