ADD file via upload

main
pm6lnt93v 6 days ago
parent 4d98babd2c
commit 9d56705683

325
main.c

@ -0,0 +1,325 @@
#include <stdio.h>
#include <string.h>
#pragma warning (disable:4996)
typedef struct Student
{
char id[20];
char clas[20];
char name[20];
double score1;
double score2;
double score3;
double score;
}Student;
Student stu[50]={{"10001","11","Zhang",99.5,88.5,89.5,277.5},{"10002","12","Yang",77.9,56.5,87.5,221.9},{"10003","11","Liang",92.5,99.0,60.5,252.0}};
void start()
{
printf("\n以下为主菜单:\n");
printf(" 1.input\n");
printf(" 2.delete\n");
printf(" 3.select\n");
printf(" 4.order\n");
printf(" 5.output\n");
printf(" 6.quit\n");
printf("please input your option\n");
}//开始显示主菜单的函数
void input()
{ int i;int flag=1;
int len=lens(stu);
scanf("%s %s %s %lf %lf %lf", stu[len].id,stu[len].clas,&stu[len].name,&stu[len].score1, &stu[len].score2, &stu[len].score3);
char nul3=getchar();
stu[len].score = stu[len].score1 + stu[len].score2 + stu[len].score3;
for(i=0;i<len;i++)
{
if(strcmp(stu[len].id,stu[i].id)==0)
{
flag=0;
stu[i]=stu[len];
}
}
if(flag==1)
{
for( i=0;i<len;i++)
{
printf("%s %s %s %.2f %.2f %.2f %.2f\n",stu[i].id,stu[i].clas,stu[i].name,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].score);
}
}
if(flag==0)
{
for( i=0;i<len;i++)
{
if((strcmp(stu[len].id,stu[i].id)==0))
printf("%s %s %s %.2f %.2f %.2f %.2f\n",stu[i].id,stu[i].clas,stu[i].name,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].score);
else if((strcmp(stu[len].id,stu[i].id)!=0))
printf("%s %s %s %.2f %.2f %.2f %.2f\n",stu[i].id,stu[i].clas,stu[i].name,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].score);
}
stu[len].id[0] ='0';
stu[len].id[1] ='0';
stu[len].id[2] ='0';
stu[len].id[3] ='0';
stu[len].id[4] ='0';
stu[len].score1=0;
stu[len].score2=0;
stu[len].score3=0;
stu[len].score = 0;
}
} //向新的空间输入或者可以在输入id相同时对前面的数据修改
void output()
{
int len=lens(stu);
double temp;
int i,j;
for (i = 0; i < 2; i++)
{
for (j = 0; j < 2 - i; j++)
{
if (stu[j].score > stu[j + 1].score)
{
Student temp = stu[j];
stu[j] = stu[j + 1];
stu[j + 1] = temp;
}
}
}
for( i=0;i<len;i++)
{
printf("%s %s %s %.2f %.2f %.2f %.2f\n",stu[i].id,stu[i].clas,stu[i].name,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].score);
}
} //按总分从小到大输出
int lens(Student stu[])
{
int i;
int court = 0;
for (i = 0;i < 50;i++)
{
if (stu[i].score3 > 0)
{
court++;
}
if(stu[i].score3 <= 0)
{
break;
}
}
return court;
} //测学生数量
void order()
{
int i,j,k;
int a[100] = { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 };
int c[100] = { 0 };
int number = 0;
int len = lens(stu);
for (i = 0;i < len;i++)
{
stu[i].score = stu[i].score1 + stu[i].score2 + stu[i].score3;
}
stu[len + 1].score = 0;
for (i = 0;i < len;i++)
{
for (j = 0;j < len - i-1;j++)
{
if (strcmp(stu[j].clas, stu[j + 1].clas) > 0)
{
stu[len + 1] = stu[j];
stu[j] = stu[j + 1];
stu[j + 1] =stu[len + 1];
}
}
}
stu[len].score = 6458;
for (i = 0;i < len;i++)
{
if (stu[i].score == stu[i + 1].score)
{
a[number]++;
}
if (stu[i].score != stu[i + 1].score)
{
a[number]++;
c[number + 1] = i + 1;
number++;
}
}
for (k = 0;k < number;k++)
{
for (i = 0;i < a[k];i++)
{
for (j = c[k];j < a[k] - i;j++)
{
if (stu[j].score < stu[j + 1].score)
{
stu[len + 1] = stu[j];
stu[j] = stu[j + 1];
stu[j + 1] = stu[len + 1];
}
}
}
}
for (i = 0;i < len;i++)
{
printf("%s %s %.2f %.2f %.2f %.2f\n", stu[i].id, stu[i].clas, stu[i].score1, stu[i].score2, stu[i].score3, stu[i].score);
}
} //先按班级再按成绩排序
void delete()
{
int len = lens(stu);int flag = 0;
int i,j,k;
printf("请输入要删除学生的学号或者姓名:\n");
char a[10];//用来储存学号或者名字
scanf("%s", a);
char nul2=getchar();
for (i = 0;i < len;i++)
{
if (strcmp(a, stu[i].id) == 0 || strcmp(a, stu[i].name) == 0)
{
flag = 1;//有的话删除并输出
for (k = i + 1;k < len;k++)
{
stu[k - 1] = stu[k];//相当于删除
}
}
}
if (flag == 0)//没有的话输出原来的数据
{
for (j = 0;j < len;j++)
{
printf("%s %s %s %.2f %.2f %.2f %.2f\n", stu[j].id,stu[j].clas, stu[j].name, stu[j].score1, stu[j].score2, stu[j].score3, stu[j].score);
}
}
if (flag == 1)//有的话输出这个之外的(已删除这个学生)
{
len = lens(stu) - 1;
for (j = 0;j < len;j++)
{
printf("%s %s %s %.2f %.2f %.2f %.2f\n", stu[j].id,stu[j].clas, stu[j].name, stu[j].score1, stu[j].score2, stu[j].score3, stu[j].score);
}
}
} //删除
void select(char* a,char* b,int i,double k)
{
int len = lens(stu),j;
if (i == 1)
{
for (j = 0;j < len;j++)
{
if (strcmp(stu[j].clas,a)>=0 && strcmp(stu[j].clas,b)<=0)
{
printf("%s %s %s %.2f %.2f %.2f %.2f\n", stu[j].id, stu[j].clas, stu[j].name, stu[j].score1, stu[j].score2, stu[j].score3, stu[j].score);
}
}
}
else if (i == 2)
{
for (j = 0;j < len;j++)
{
if (strcmp(stu[j].id,a)>=0 && strcmp(stu[j].id,b)<=0)
{
printf("%s %s %s %.2f %.2f %.2f %.2f\n", stu[j].id, stu[j].clas, stu[j].name, stu[j].score1, stu[j].score2, stu[j].score3, stu[j].score);
}
}
}
else if (i == 3)
{
for (j = 0;j < len;j++)
{
if(strcmp(stu[j].name,a)>=0 && strcmp(stu[j].name,b)<=0)
{
printf("%s %s %s %.2f %.2f %.2f %.2f\n", stu[j].id, stu[j].clas, stu[j].name, stu[j].score1, stu[j].score2, stu[j].score3, stu[j].score);
}
}
}
else if (i == 4)
{
for (j = 0;j < len;j++)
{
if (stu[j].score>=k)
{
printf("%s %s %s %.2f %.2f %.2f %.2f\n", stu[j].id, stu[j].clas, stu[j].name, stu[j].score1, stu[j].score2, stu[j].score3, stu[j].score);
}
}
}
} //a表示初始b表示末尾
int main()
{
while(1)
{
start();
char g = getchar();
char nul=getchar();
if (g == '1')
{
printf("Please input info of a student格式为id clas name score1 score2 score3:\n");
input();
}
else if(g=='4')
{
order();
}
else if(g=='5')
{
output();
}
else if(g=='2')
{
delete();
}
else if(g=='3')
{
char a[20],b[20];
int t;
double k;
printf("选择筛选的方式\n1.按班级\n2.按学号\n3.按姓名\n4.按总分\n");
scanf("%d",&t);
nul=getchar();
if(t>=1&&t<=3)
{
printf("请输入要求的范围:\nbegin");
scanf("%s",a);
printf("end");
scanf("%s",b);
nul=getchar();
select(a,b,t,0);
}
else if(t==4)
{
printf("请输入要大于等于的总分\n");
scanf("%lf\n",k);
nul=getchar();
select(a,b,t,k);
}
}
else if(g=='6')
{
break;
}
else printf("输入错误");
printf("continue?\n");
char s[100];
scanf("%s",s);
nul=getchar();
char* yes="yes";
if(strcmp(s,yes)==0){}
else break;
}
return 0;
}
Loading…
Cancel
Save