#include<stdio.h>
#include<math.h>
#include<string.h>
#define MAXSIZE 20
int i;
struct stud
{
char name[20];
int num,m,e,c;
float v;
} stu[40];
void input()
{
i=0;
printf("请按照下面格式输入数据:学号 姓名 英语分数 数学分数 计算机分数\n最后输入0结束数据输入\n");
while(scanf("%d",&stu[i].num)!=EOF)
{
if(stu[i].num==0)break;
scanf("%s%d%d%d",stu[i].name,&stu[i].e,&stu[i].m,&stu[i].c);
stu[i].v=(stu[i].e+stu[i].m+stu[i].c)*1.0/3.0;
i++;
}
}
int output()
{
int j;
printf(" 学号 姓名 英语 数学 计算机 平均成绩\n");
printf("==================================================\n");
for(j=0; j<i; j++)
{
printf(" %d ",stu[j].num);
if(strlen(stu[j].name)==4)printf("%s ",stu[j].name);
else printf("%s",stu[j].name);
printf("%4.d%7.d %7.d %.1f\n",stu[j].e,stu[j].m,stu[j].c,stu[j].v);
}
printf("==================================================\n");
}
struct stud t;
int Sort()
{
int x,y;
for(x=0; x<i; x++)
for(y=0; y<i-1; y++)
{
if(stu[y].num>stu[y+1].num)
{
t=stu[y];
stu[y]=stu[y+1];
stu[y+1]=t;
}
}
output();
}
int find()
{
int xue;
printf("请输入要查学生学号,最后输入0结束查找!\n");
while(scanf("%d",&xue)!=EOF)
{
if(xue==0)break;
int x=0,y=i-1,mid,ok=0;
if(stu[x].num==xue)printf("%d %s %d %d %d %.1f\n",stu[x].num,stu[x].name,stu[x].e,stu[x].m,stu[x].c,stu[x].v);
else if(stu[y].num==xue)printf("%d %s %d %d %d %.1f\n",stu[y].num,stu[y].name,stu[y].e,stu[y].m,stu[y].c,stu[y].v);
else
{
while(y-x>1)
{
mid=(x+y)/2;
if(stu[mid].num<xue)
{
x=mid;
}
else if(stu[mid].num>xue)
{
y=mid;
}
else
{
printf("%d %s %d %d %d %.1f\n",stu[mid].num,stu[mid].name,stu[mid].e,stu[mid].m,stu[mid].c,stu[mid].v);
ok=1;
break;
}
}
if(!ok)printf("No Find!\n");
}
}
}
int insert()
{
printf("请输入要插入学生信息,格式同数据输入,最后输入0结束\n");
int xue,j,ok,wei;
while(scanf("%d",&xue)!=EOF)
{
if(xue==0)break;
ok=0;
for(j=0; j<i; j++)
{
if(stu[j].num==xue)
{
ok=1;
printf("Refuse insert!\n");
break;
}
else if(stu[0].num>xue)
{
wei=0;
break;
}
else if(stu[i-1].num<xue)
{
wei=i-1;
break;
}
else if(stu[j].num<xue&&stu[j+1].num>xue)
{
wei=j+1;
break;
}
}
if(!ok)
{
for(j=i-1; j>=wei; j--)
{
stu[j+1]=stu[j];
}
stu[wei].num=xue;
scanf("%s%d%d%d",stu[wei].name,&stu[wei].e,&stu[wei].m,&stu[wei].c);
stu[wei].v=(stu[wei].e+stu[wei].m+stu[wei].c)*1.0/3;
i++;
}
}
output();
}
int del()
{
printf("请输入要删除学生学号,最后输入0结束\n");
int xue,j,ok,wei;
while(scanf("%d",&xue)!=EOF)
{
if(xue==0)break;
ok=0;
for(j=0; j<i; j++)
{
if(stu[j].num==xue)
{
ok=1;
wei=j;
break;
}
}
if(ok)
{
for(j=wei; j<i-1; j++)
{
stu[j]=stu[j+1];
}
i--;
}
else printf("Haven't the student!\n");
}
output();
}
int collect()
{
int j,col[5]= {0};
for(j=0; j<i; j++)
{
if(stu[j].v<60)col[0]++;
if(stu[j].v>=60&&stu[j].v<70)col[1]++;
if(stu[j].v>=70&&stu[j].v<80)col[2]++;
if(stu[j].v>=80&&stu[j].v<90)col[3]++;
if(stu[j].v>=90&&stu[j].v<100)col[4]++;
}
printf(" 按平均分统计各分数段学生人数 \n");
printf("========================================================\n");
printf(" 分数段 0-59 60-69 70-79 80-89 90-100\n");
printf(" 人 数 %d %d %d %d %d\n",col[0],col[1],col[2],col[3],col[4]);
printf("========================================================\n");
}
int main()
{
int m, password,flags = 1,pass = 5259487;
char username[MAXSIZE];
while (1 == flags)
{
printf("\n\n学生成绩管理系统管理员登录界面\n");
printf("请输入用户名:\n");
scanf("%s",username);
printf("请输入密码:\n");
scanf("%d",&password);
if ((0 == strcmp(username,"52587v5")) && (pass == password))
flags = 0;
else if ((0 != strcmp(username,"52587v5")) && (pass == password))
printf("用户名输入错误,请重新输入.\n");
else if ((0 == strcmp(username,"52587v5")) && (pass != password))
printf("密码输入错误,请重新输入.\n");
else
printf("用户名和密码都输入错误,请重新输入.\n");
}
int s;
printf(" 主菜单 \n");
printf("========================================================\n");
printf(" 1.数据输入 2.数据输出\n");
printf(" 3.数据排序(按学号) 4.数据查找(按学号)\n");
printf(" 5.数据插入 6.数据删除\n");
printf(" 7.数据统计(按平均分) 0.退出\n");
printf("========================================================\n");
while(scanf("%d",&s)!=EOF)
{
if(s==0)break;
if(s==1)input();
else if(s==2)output();
else if(s==3)Sort();
else if(s==4)find();
else if(s==5)insert();
else if(s==6)del();
else if(s==7)collect();
printf(" 主菜单 \n");
printf("========================================================\n");
printf(" 1.数据输入 2.数据输出\n");
printf(" 3.数据排序(按学号) 4.数据查找(按学号)\n");
printf(" 5.数据插入 6.数据删除\n");
printf(" 7.数据统计(按平均分) 0.退出\n");
printf("========================================================\n");
}
return 0;
}
浙公网安备 33010602011771号