学生成绩管理系统(免费)

#include
#include "string.h"
#define N 2 //定义学生人数
char choice;
char choice_1;
char choice_1_1;

void menu(void);
void menu1(void);
void Input_score(struct student *p);
void sum_and_average(struct student *p);
void taxis(struct student *, int n);
void Output(void);
void submenu_choose(void);
void change_score(struct student *p);
void seek_one_student(struct student *p);
void fail_choice(void);

int i, j, n;
int count=0;
struct student
{
char name[20];
int id;
int Chinese;
int Math;
int English;
int sum;
double average;
}stu[N+1];

/*主函数*/
void main()
{
menu();
printf("请输入序号:");
while((choice=getchar())!='3')
{
while(getchar()!='\n') //抛弃输入的多余数据
continue;
switch(choice)
{
case '1':
{
Input_score(stu);
sum_and_average(stu);
printf("完成输入请按回车继续\n");
}break;

case '2':
{
menu1();
submenu_choose();
}break;
case '3':
{
change_score(stu);
printf("Enter change_score().\n");

}break;
default:
printf("输入1-3之间的数:");
}
}
printf("结束\n");
}


/*主菜单*/
void menu(void)
{
printf("**************************************************\n"
"*************学生成绩管理系统*********************\n"
" 1.录入成绩 \n"
" 2.成绩查询与排序 \n"
" 3.修改成绩 \n"
" 4.退出系统 \n"
"*************************************************\n"
"*************************************************\n");
}
/*查询和排序菜单*/
void menu1(void)
{
printf("***************************************\n"
"*************1.按平均分排序****************\n"
"*************2.按语文成绩排序**************\n"
"*************3.按数学成绩排序**************\n"
"*************4.按英语成绩排序**************\n"
"*************5.按物理成绩排序**************\n"
"*************6.查询个人成绩****************\n"
"*************7.查询某科目不及格人数*******\n"
"=========================================\n");
}
/*录入成绩*/
void Input_score(struct student *p)
{
printf("输入学生信息:\n");
for( i=0; i{
printf("姓名:");
scanf("%s", p->name );
printf("学号:");
scanf("%d", &p->id);
printf("语文成绩:");
scanf("%d", &(*p).Chinese);
printf("数学成绩:");
scanf("%d", &(*p).Math);
printf("英语成绩:");
scanf("%d", &p->English);
printf("\n");
}
}

/*处理总成绩和平均分*/
void sum_and_average(struct student *p)
{
for( i=0; i{
p->sum = p->Chinese + p->English + p->Math;
p->average = p->sum /3.0;
}
}
/*按成绩大小排序*/
void taxis(struct student *, int n)
{
if(1

==n)
{
for( i=0; i{
for( j=0; jif(stu[j+1].average>stu[j].average)/*对平均成绩进行排序*/
{
stu[N] = stu[j+1];
stu[j+1] = stu[j];
stu[j] = stu[N];
}
}
}
else if(2==n)
{
for( i=0; i{
for( j=0; jif(stu[j+1].Chinese >stu[j].Chinese )/*对语文成绩进行排序*/
{
stu[N] = stu[j+1];
stu[j+1] = stu[j];
stu[j] = stu[N];
}
}
}
else if(3==n)
{
for( i=0; i{
for( j=0; jif(stu[j+1].Math >stu[j].Math )/*对数学成绩进行排序*/
{
stu[N] = stu[j+1];
stu[j+1] = stu[j];
stu[j] = stu[N];
}
}
}
else if(4==n)
{
for( i=0; i{
for( j=0; jif(stu[j+1].English>stu[j].English )/*对英语成绩进行排序*/
{
stu[N] = stu[j+1];
stu[j+1] = stu[j];
stu[j] = stu[N];
}
}
}
}


/*查询排序菜单的选择*/
void submenu_choose(void)
{
while((choice_1=getchar())!='q')
{
while(getchar()!='\n')
continue;
switch(choice_1)
{
case '1':
{
taxis(stu, 1);
Output();
}break;
case '2':
{
taxis(stu, 2);
Output();
}break;
case '3':
{
taxis(stu, 3);
Output();
}break;
case '4':
{
taxis(stu, 4);
Output();
}break;
case '5':
{
taxis(stu, 5);
Output();
}break;
case '6':
{
seek_one_student(stu);
}break;

case '7':
{
fail_choice();
}break;
}
}
}

/*查询不及格人数*/
void fail_choice(void)
{

printf("--1.语文--- 2.数学----3.英语 ----------\n");
printf("请输入序号:");
scanf("%d",&n);
switch(n)
{
case '1':
{
int k=0;
for(i=0;iif ((stu[i].Chinese>=0)&&(stu[i].Chinese<=60));
k++;
printf("语文不及格的人数为%d人");
}break;
case '2':
{
int k=0;
for(i=0;iif ((stu[i].Math>=0)&&(stu[i].Math<=60));
k++;
printf("数学不及格的人数为%d人");
}break;
case '3':
{
int k=0;
for(i=0;iif ((stu[i].English>=0)&&(stu[i].English<=60));
k++;
printf("英语不及格的人数为%d人");
}break;
}
}
/*列表输出*/
void Output(void)
{
printf("=======================================================\n");
printf("姓名\t学号\t数学\t平均分\t总分\t名次\n");

for( i=0; iprintf("%-8s %-8d %-8d %-8d %-8d %-8d %-8f %-8d %-8d\n", stu[i].name,
stu[i].id, stu[i].Chinese, stu[i].Math, stu[i].English,
stu[i].average, stu[i].sum, i+1);
}

/*修改成绩*/
void change_score(struct student *p)
{
printf("输入您要修改的学生成绩的姓名:");
scanf("%s",stu[].name);
for( i=0; iif(!strcmp(stu[].name,p->name))
{
printf("语文成绩"

);
scanf("%d", &(*p).Chinese);
printf("数学成绩 score:");
scanf("%d", &(*p).Math);
printf("英语成绩:");
scanf("%d", &p->English);
printf("\n");
sum_and_average(p);
}
}
/*指定个人查询成绩*/
void seek_one_student(struct student *p)
{
printf("输入您要查询的学生成绩的姓名:");
scanf("%s",stu[].name);
for( i=0; i{
while(!strcmp(stu[].name,p->name))
{
printf("姓名\t学号\t数学\t英语\t平均分\t总分\t名次\n");
printf("%-8s %-8d %-8d %-8d %-8d %-8f %-8d %-8d\n", p->name,
p->id, p->Chinese, p->Math, p->English,
p->average, p->sum, i+1);
return;
}
}
}

相关文档
最新文档