数据结构---学分管理程序

#include         //头文件
#include         //头文件
#define M 100           //宏定义
#define N 5           //宏定义
struct xinxi             
{
   int num;               //学号
   char name[20];         //姓名
   int class_1;            //班级
   int score[N];       //每个学生有5门课程
};
struct xinxi stu[M];    //定义结构体变量
int select;
int k;
char kc[N][80]={"基础课","专业课","选修课","人文类","实验性"};
int ismodify=0;                           
void quit();            
void shuru();
void search_xuehao();           //函数声明
void search_class();
void xiugai();
void paixu();
void paixu_jichu();
void paixu_zhuanye();
void paixu_xuanxiu();
void paixu_renwen();
void paixu_shiyan();

//主菜单

void main()
{
   while(1)
   {
   printf("\n\n\n");
   printf(" ※汉口学院计算机科学与技术学院※\n\n");
      printf("************************** 学生学分管理 **************************\n");
   printf("\n    ★           1-------请先录入某个学生的学分\n");
   printf("\n    ★           2-------按学号查询学生学分\n");
   printf("\n    ★           3-------按班级查询学生学分\n");
   printf("\n    ★           4-------修改学生的学分信息\n");
   printf("\n    ★           5-------按课程的学分高低进行排序\n");
   printf("\n    ★           0-------退出\n\n\n");
   printf("********************************************************************************\n\n");
   printf(" ★ 请选择(0-5): ");
   scanf("%d",&select);
   printf("\n\n");
    switch(select)
    {
          case 1:shuru();break;     //调用函数
    case 2:search_xuehao();break;
    case 3:search_class();break;
    case 4:xiugai();break;
    case 5:paixu();break;
    case 0:quit();break;
          default:printf("   ★ 输入错误,请重新输入!");
          printf(" ★ 请选择(0-5): ");
     scanf("%d",&select);
     printf("\n");
    }
   }
}

//系统退出模块

void quit()
{
   printf("\n\n\n\n\n");
   printf("              ★★★     程序结束!谢谢使用!再见!    ★★★\n\n\n\n\n");
}
//子菜单1-输入学分

void shuru()
{
   int i,count=0;
   printf("********************************* 输入学生信息 *********************************\n");
   printf("\n");
   printf(" ★ 请输入录入学生的人数: ");
   scanf("%d",&k);
   printf("\n");
    for(i=0;i
{
    printf(" *    请输入第%d个学生的信息!\n\n",i+1);
    printf(" *    学号");scanf("%d",&stu[i].num);     //将输入的学号赋给stu[i]变量中的成员num
    printf(" *    姓名");scanf("%s",&stu[i].name);    //将输入的学号赋给stu[i]变量中的成员name
    printf(" *    班级");scanf("%d",&stu[i].class_1);     //将输入的学号赋给stu[i]变量中的成员score[0]
    printf(" *    基础课");scanf("%d",&stu[i].score[0]);
    printf(" *    专业课");scanf("%d",&stu[i].score[1]);
    printf(" *    选修课");scanf("%d",&stu[i].score[2]);
    printf(" *    人文类课程");scanf("%d",&stu[i].score[3]);    //将输入的学号赋给stu[i]变量中的成员score[3]
    printf(" *    实验性课程");scanf("%d",&stu[i].score[4]);
    printf("\n\n");
     if(stu[i].score[0]<=50&&stu[i].score[1]<=50&&stu[i].score[2]<=24&&stu[i].score[3]<=8&&stu[i].score[4]<=20)
   {count++;}
}
printf("\n ☆符合条件的学生信息共有%d条\n",count);
if(count!=k)
   xiugai();   //当输入的信息不满足上面if语句限制的条件时,调用该语句进行修改,即重新输入。
else
{
    printf("\n");
    printf("   学号      姓名   班级   基础课   专业课   选修课   人文类课程   实验性课程\n");
    for(i=0;i
    printf("%ds����dd\n\n",stu[i].num,stu[i].name,stu[i].class_1,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].score[3],stu[i].score[4]);
}
}

//子菜单2-按学号查询

void search_xuehao()
{
   int i,g,w,count=0;
   printf("****************************** 按学号查询学生学分 ******************************\n");
   printf("\n");
   printf(" ☆ 请输入你要查询学生的学号: ");
   scanf("%d",&g);
   printf("\n");
   printf("   学号      姓名   班级   基础课   专业课   选修课   人文类课程   实验性课程\n");
   for(i=0;i
   {
      if(stu[i].num==g)   //输入的g值在stu[].num中能找到对应的值
   {
       w=i;
   printf("%ds����dd\n\n",stu[i].num,stu[i].name,stu[i].class_1,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].score[3],stu[i].score[4]);
    count++; //计数
   }
   }
     if(count==0)   //如果g的值在stu[i].num中没有对应的值时,满足该语句,并执行该语句
{printf("\n    ☆   对不起,没有该学生的信息!\n");}        //没有找到查询的记录
else{printf("\n ☆ 学号为%d的学生共有%d个\n\n",g,count);}          //输入找到的记录总数
}

//子菜单3-按班级查询

void search_class()
{
   int i,g,w,count=0;
   printf("****************************** 按班级查询学生学分 ******************************\n");
   printf("\n");
   printf("   ☆ 请输入你要查询的班级: ");
   scanf("%d",&g);
   printf("\n");
   printf("   学号      姓名   班级   基础课   专业课   选修课   人文类课程   实验性课程\n");
   for(i=0;i
   {
      if(stu[i].class_1==g)
   {
       w=i;
   printf("%ds����dd\n\n",stu[i].num,stu[i].name,stu[i].class_1,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].score[3],stu[i].score[4]);
    count++; //计数
   }
   }
     if(count==0)      //如果g的值在stu[i].num中没有对应的值时,满足该语句,并执行该语句
{printf("\n      ☆ 对不起,没有相符的信息!\n");}
else{printf("\n ☆ %d班共有%d个学生\n\n",g,count);}
}

//子菜单4-修改信息

void xiugai()
{
   int a[N]; //定义新数组
   int i=0,p,q;
   char sele;
   printf("********************************* 修改学生学分 *********************************\n");
   printf(" ☆ 输入所要修改的学生学号: ");
   scanf("%d",&p);
   printf("\n");
   {
      for(i=0;i
    if(stu[i].num==p)   //如果stu[i].num中存在输入的p的值,则执行下面的语句
    {                    //输出学号,姓名,班级。
       printf("     学号: %d\n     姓名: %s\n     班级: %d\n",stu[i].num,stu[i].name,stu[i].class_1);
    for(q=0;q
     printf("%s:%d\n",kc[q],stu[i].score[q]); //输出课程的名字以及输出要修改的课程学分
    printf(" ☆ 请输入%d门课程的新学分: \n",N);
    for(q=0;q
     scanf("%d",&a[q]);   //新课程学分的值赋给数组a[q]
    printf("\n\n   ☆ 确定修改该学生的学分信息吗?(Y/N): ");
    scanf("%c%c",&sele,&sele);
    if(sele=='Y'||sele=='y')
    {
       for(q=0;q
      stu[i].score[q]=a[q];   //将新数组的值赋给stu[i].score[q]
     printf("\n\n\n");
     printf("       ☆    修改完毕!\n\n");
     ismodify=1;break;   //已修改
    }
    else printf("\n      ☆    没有修改!\n");break;
    }
    if(i==k)
    printf("\n     ☆     没有此学号!\n\n\n");
   }
}

//子菜单5-按学分高低排序

void paixu()
{
   int i;
   printf("********************************* 学生成绩排序 *********************************\n");
   printf("\n");
   printf("   学号      姓名   班级   基础课   专业课   选修课   人文类课程   实验性课程\n");
    for(i=0;i
    printf("%ds����dd\n\n",stu[i].num,stu[i].name,stu[i].class_1,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].score[3],stu[i].score[4]);
   while(1)
   {
   printf("\n                 1-------按基础课的学分高低进行排序\n");
   printf("\n                 2-------按专业课的学分高低进行排序\n");
   printf("\n                 3-------按选修课的学分高低进行排序\n");
   printf("\n                 4-------按人文类课程的学分高低进行排序\n");
   printf("\n                 5-------按实验性课程的学分高低进行排序\n");
   printf("\n                 0-------返回\n");
   printf("★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★\n\n");
   printf(" ★ 请输入你的选择(0-5): ");
   scanf("%d",&select);
   switch(select)
    {
          case 1:paixu_jichu();break;
    case 2:paixu_zhuanye();break;
    case 3:paixu_xuanxiu();break;
    case 4:paixu_renwen();break;
    case 5:paixu_shiyan();break;
    case 0:return;
          default:printf("   ☆ 输入错误,请重新输入!");
   }
   }
}

struct xinxi temp;    //定义新变量

//按基础课学分高低排序

void paixu_jichu()          //冒泡排序法
{
   int i,j;
   for(i=0;i
   {
      for(j=0;j
   {
      if(stu[j+1].score[0]>stu[j].score[0])
   {
      temp=stu[j];
    stu[j]=stu[j+1];
    stu[j+1]=temp;
   }
   }
   }
   printf("   学号      姓名   班级   基础课   专业课   选修课   人文类课程   实验性课程\n");
    for(i=0;i
    printf("%ds����dd\n\n",stu[i].num,stu[i].name,stu[i].class_1,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].score[3],stu[i].score[4]);
}

//按专业课学分高低排序

void paixu_zhuanye()           //冒泡排序法
{
   int i,j;
   for(i=0;i
   {
      for(j=0;j
   {
      if(stu[j+1].score[1]>stu[j].score[1])
   {
      temp=stu[j];
    stu[j]=stu[j+1];
    stu[j+1]=temp;
   }
   }
   }
   printf("   学号      姓名   班级   基础课   专业课   选修课   人文类课程   实验性课程\n");
    for(i=0;i
    printf("%ds����dd\n\n",stu[i].num,stu[i].name,stu[i].class_1,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].score[3],stu[i].score[4]);
}

//按选修课学分高低排序

void paixu_xuanxiu()         //冒泡排序法
{
   int i,j;
   for(i=0;i
   {
      for(j=0;j
   {
      if(stu[j+1].score[2]>stu[j].score[2])
   {
      temp=stu[j];
    stu[j]=stu[j+1];
    stu[j+1]=temp;
   }
   }
   }
   printf("   学号      姓名   班级   基础课   专业课   选修课   人文类课程   实验性课程\n");
    for(i=0;i
    printf("%ds����dd\n\n",stu[i].num,stu[i].name,stu[i].class_1,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].score[3],stu[i].score[4]);
}

//按人文类学课学分高低排序

void paixu_renwen()         //冒泡排序法
{
int i,j;
   for(i=0;i
   {
      for(j=0;j
   {
      if(stu[j+1].score[3]>stu[j].score[3])
   {
      temp=stu[j];
    stu[j]=stu[j+1];
    stu[j+1]=temp;
   }
   }
   }
   printf("   学号      姓名   班级   基础课   专业课   选修课   人文类课程   实验性课程\n");
    for(i=0;i
    printf("%ds����dd\n\n",stu[i].num,stu[i].name,stu[i].class_1,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].score[3],stu[i].score[4]);
}

//按实验课学分高低排序

void paixu_shiyan()          //冒泡排序法
{
   int i,j;
   for(i=0;i
   {
      for(j=0;j
   {
      if(stu[j+1].score[4]>stu[j].score[4])
   {
      temp=stu[j];
    stu[j]=stu[j+1];
    stu[j+1]=temp;
   }
   }
   }
printf("   学号      姓名   班级   基础课   专业课   选修课    人文类课程   实验性课程\n");
    for(i=0;i
    printf("%ds����dd\n\n",stu[i].num,stu[i].name,stu[i].class_1,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].score[3],stu[i].score[4]);

}

  • 6
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值