#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]);
}