学生成绩管理系统(免费)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#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; j
{
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; j
{
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; j
{
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; j
{
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;i
k++;
printf("语文不及格的人数为%d人");
}break;
case '2':
{
int k=0;
for(i=0;i
k++;
printf("数学不及格的人数为%d人");
}break;
case '3':
{
int k=0;
for(i=0;i
k++;
printf("英语不及格的人数为%d人");
}break;
}
}
/*列表输出*/
void Output(void)
{
printf("=======================================================\n");
printf("姓名\t学号\t数学\t平均分\t总分\t名次\n");
for( i=0; i
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; i
{
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;
}
}
}