设计要求
设计学生成绩管理系统
要求如下:
1.输入学生信息
2.统计学生成绩
3.查找并显示学生成绩
4.按姓名查找,修改学生资料
5.显示所有学生名单
6.查找并删除学生信息
7.输出个科目成绩最高的学生
完整代码
#include<stdio.h>
#include<ctype.h>
#include<stdlib.h>
#include<string.h>
struct Student
{
int cls;
char namee[10];
char number[10];
int chinese;
int english;
int computer;
int math;
}stud1[100];
int menu()
{
char a;
while(a>'8'||a<'0')
{
system("cls");
printf("***** 学生成绩管理系统 *******\n");
printf(" 1.输入学生信息\n");
printf(" 2.统计学生成绩\n");
printf(" 3.查找并显示学生成绩\n");
printf(" 4.按姓名查找,修改学生资料\n");
printf(" 5.显示所有学生名单\n");
printf(" 6.查找并删除学生信息\n");
printf(" 7.输出个科目成绩最高的学生\n");
printf(" 0.退出系统\n");
printf("************************************\n");
printf("请选择(0-8)\n");
a=getchar();//键盘敲的字符赋给a
}
return(a-'0');
}
/******************************************/
int Input(Student stud[],int n) //输入数据 定义输入数据函数
{
int i=0;
char sign,x[10];
for(;sign !='n'&&sign !='N';)
{
printf(" 姓名:");
scanf("%s",stud[n+i].namee);
printf(" 班级:");
scanf("%d",&stud[n+i].cls);
printf(" 学号:");
scanf("%s",stud[n+i].number);
printf(" 语文:");
scanf("%d",&stud[n+i].chinese);
printf(" 数学:");
scanf("%d",&stud[n+i].math);
printf(" 英语:");
scanf("%d",&stud[n+i].english);
printf(" 计算机:");
scanf("%d",&stud[n+i].computer);
gets(x);
printf("还有要输入的信息吗?(y/n)");
scanf("%c",&sign);
i++;
}
return(n+i);
}
void Sort(Student stud[], int n)//根据平均分排序(冒泡法)
{
int i,j;
struct Student tmp;
for (i=0;i<n;i++)
{
for (j=1;j<n-i;j++)
{
if ((stud[j-1].chinese+stud[j-1].english+stud[j-1].computer+stud[j-1].math)<(stud[j].chinese+stud[j].english+stud[j].computer+stud[j].math))
{
tmp=stud[j-1];
stud[j-1]=stud[j];
stud[j]=tmp;
}
}
}
}
/***************统计数据*******/
void Display(Student stud[], int n)
{
Sort(stud,n);
int i;
printf(" 班级 学号 姓名 语文 数学 英语 计算机 总分 平均分\n");
for(i=1;i<n+1;i++)
{
int s=stud[i-1].chinese+stud[i-1].math+stud[i-1].english+stud[i-1].computer;
printf("%7d,%7s,%7s,%7d,%7d,%7d,%7d,%7d,%7d\n",stud[i-1].cls,stud[i-1].number,stud[i-1].namee,stud[i-1].chinese,stud[i-1].math,stud[i-1].english,stud[i-1].computer,s,s/4);
if(i>1 && i%10==0)
{
system("pause");
}
}
system("pause");
int a;
printf("语文不及格的有:班级 姓名 学号 成绩\n");
for(a=0;a<n;a++)
{
if(stud[a].chinese<60)
printf(" %7d %7s %7s% 7d\n",stud[a].cls,stud[a].namee,stud[a].number,stud[a].chinese);
}
printf("数学不及格的有:班级 姓名 学号 成绩\n");
for(a=0;a<n;a++)
{
if(stud[a].math<60)
printf(" %7d %7s %7s %7d\n",stud[a].cls,stud[a].namee,stud[a].number,stud[a].math);
}
printf("英语不及格的有:班级 姓名 学号 成绩\n");
for(a=0;a<n;a++)
{
if(stud[a].english<60)
printf(" %7d %7s %7s %7d\n",stud[a].cls,stud[a].namee,stud[a].number,stud[a].english);
}
printf("计算机不及格的有:班级 姓名 学号 成绩\n");
for(a=0;a<n;a++)
{
if(stud[a].computer<60)
printf(" %7d %7s %7s %7d\n",stud[a].cls,stud[a].namee,stud[a].number,stud[a].computer);
}
system("pause");
}
/************查找学生显示其信息*******************/
void Query(Student stud[],int n)
{
char namee[20];
printf(" 输入其姓名:\n");
scanf("%s",namee);
int i=0;
while(strcmp(stud[i].namee,namee)!=0&&i<n)
i++;
if(i==n)
{
printf("\t\t\t没有发现该学生的资料!\n");
return;
}
printf(" 学号:%s\n",stud[i].number);
printf(" 班级:%d\n",stud[i].cls);
printf(" 语文:%d\n",stud[i].chinese);
printf(" 英语:%d\n",stud[i].english);
printf(" 数学:%d\n",stud[i].math);
printf(" 计算机:%d\n",stud[i].computer);
}
/************删除学生信息*********/
int Delete(Student stud[],int n)
{
char s[20];
int i=0,j;
printf(" 请输入要删除的学生的姓名:\n");
scanf("%s",s);
while(strcmp(stud[i].namee,s)!=0&&i<n) i++;
if(i==n)
{
printf("\t\t\t没有发现该学生资料!\n");
return(n);
}
for(j=i;j<n-1;j++)
{
strcpy(stud[j].number,stud[j+1].number);
strcpy(stud[j].namee,stud[j+1].namee);
stud[j].cls=stud[j+1].cls;
stud[j].chinese=stud[j+1].chinese;
stud[j].math=stud[j+1].math;
stud[j].english=stud[j+1].english;
stud[j].computer=stud[j+1].computer;
}
printf(" 当前信息已删除成功!");
return(n-1);
}
/****************修改信息**********************/
int Revise(Student stud[],int n)
{
int i=0;
char na[10];
scanf("%s",na);
while(strcmp(stud[i].namee,na)!=0&&i<n)
i++;
if(i==n)
{
printf("\t\t\t没有发现该学生的资料!\n");
}
printf("修改班级:\n");
scanf("%d",&stud[i].cls);
printf("修改学号:\n");
scanf("%s",stud[i].number);
printf("修改语文成绩:\n");
scanf("%d",&stud[i].chinese);
printf("修改英语成绩:\n");
scanf("%d",&stud[i].english);
printf("修改数学成绩:\n");
scanf("%d",&stud[i].math);
printf("修改计算机成绩:\n");
scanf("%d",&stud[i].computer);
printf("修改成功\n");
return(n);
}
/***************************************显示学生名单**************************************/
void show(Student stud[],int n)
{
for(int i=0;i<n;i++)
{
printf(" %s\n",stud[i].namee);
}
system("pause");
}
//
void SercherH(Student stud[],int n)//搜索成绩最高者输出
{
int a;
int max ;
printf("语文成绩最高为:班级 姓名 学号 成绩\n");
max=stud[0].chinese;
for(a=1;a<n;a++)
{
if(stud[a].chinese>max)
max=stud[a].chinese;
}
for(a=0;a<n;a++)
{
if(max==stud[a].chinese)
printf(" %7d %7s %7s% 7d\n",stud[a].cls,stud[a].namee,stud[a].number,stud[a].chinese);
}
printf("数学成绩最高为:班级 姓名 学号 成绩\n");
max=stud[0].math;
for(a=1;a<n;a++)
{
if(stud[a].math>max)
max=stud[a].math;
}
for(a=0;a<n;a++)
{
if(max==stud[a].math)
printf(" %7d %7s %7s% 7d\n",stud[a].cls,stud[a].namee,stud[a].number,stud[a].math);
}
printf("英语成绩最高为:班级 姓名 学号 成绩\n");
max=stud[0].english;
for(a=1;a<n;a++)
{
if(stud[a].english>max)
max=stud[a].english;
}
for(a=0;a<n;a++)
{
if(max==stud[a].english)
printf(" %7d %7s %7s% 7d\n",stud[a].cls,stud[a].namee,stud[a].number,stud[a].english);
}
printf("计算机成绩最高为:班级 姓名 学号 成绩\n");
max=stud[0].computer;
for(a=1;a<n;a++){
if(stud[a].computer>max)
max=stud[a].computer;}
for(a=0;a<n;a++) {
if(max==stud[a].computer)
printf(" %7d %7s %7s% 7d\n",stud[a].cls,stud[a].namee,stud[a].number,stud[a].computer);}
system("pause");}
/*****************主函数调用*****************/
int main()
{
int n1=0;
for(;;)
{
switch(menu()){
case 1:
printf(" 输入学生资料\n");
n1=Input(stud1,n1);break;
case 2:
printf(" 输出所有学生资料\n");
Display(stud1,n1);break;
case 3:
int r;printf(" 查找学生\n");
Query(stud1,n1);
system("pause");break;
case 4:
int p;printf(" 修改学生资料\n");
printf(" 输入你要修改的学生的姓名:");
n1=Revise(stud1,n1);
system("pause");break;
case 5:
printf(" 显示所有学生名单:\n");
show(stud1,n1);
system("pause");break;
case 6:
printf(" 查找并删除学生信息\n");
int o;
n1=Delete(stud1,n1);
system("pause");break;
case 7:
int l;SercherH(stud1,n1);break;
case 0:
system("pause");break;
}
}
}
运行结果
后面的需要执行哪项功能,就输入对应数字就可以!