#include<algorithm>
#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
struct info
{
char no[10];
char name[25];
int yuwen;
int shuxue;
int yingyu;
int wuli;
int huaxue;
int zongfen;
int rank;
};
char b[1002];
info a[50005];
int cmp(info a,info b)
{
if(a.zongfen!=b.zongfen)
{
return a.zongfen>b.zongfen;
}
if(a.zongfen==b.zongfen&&a.yuwen!=b.yuwen)
{
return a.yuwen>b.yuwen;
}
if(a.zongfen==b.zongfen&&a.yuwen==b.yuwen&&a.shuxue!=b.shuxue)
{
return a.shuxue>b.shuxue;
}
return strcmp(a.no,b.no)==-1;
};
bool cmp2(info a,info b)
{
return strcmp(a.no,b.no)<0;
}
int main()
{
//freopen("in.txt","r",stdin);
//freopen("out.txt","w",stdout);
int n,m;
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
scanf("%s",a[i].no);
scanf("%s%d%d%d%d%d",a[i].name,&a[i].yuwen,&a[i].shuxue,&a[i].yingyu,&a[i].wuli,&a[i].huaxue);
a[i].zongfen=a[i].yuwen+a[i].shuxue+a[i].yingyu+a[i].wuli+a[i].huaxue;
}
sort(a+1,a+1+n,cmp);
for(int i=1;i<=n;i++)
{
a[i].rank=i;
printf("%d ",i);
printf("%s ",a[i].no);
printf("%s %d %d %d %d %d %d\n",a[i].name,a[i].yuwen,a[i].shuxue,a[i].yingyu,a[i].wuli,a[i].huaxue,a[i].zongfen);
}
printf("\n");
int ans=0;info t;
sort(a+1,a+1+n,cmp2);
scanf("%d",&m);
for(int k=1;k<=m;k++)
{
scanf("%s",t.no);
int oi=lower_bound(a+1,a+1+n,t,cmp2)-a;
if(strcmp(a[oi].no,t.no)==0)
{
printf("%d ",a[oi].rank);
printf("%s ",a[oi].no);
printf("%s %d %d %d %d %d %d\n",a[oi].name,a[oi].yuwen,a[oi].shuxue,a[oi].yingyu,a[oi].wuli,a[oi].huaxue,a[oi].zongfen);
}
else
{
printf("Can't found!\n");
}
}
return 0;
}
本文介绍了一个学生信息管理系统的设计与实现,该系统使用C++语言进行开发,能够对学生的基本信息及成绩进行排序和检索。通过自定义的数据结构和排序算法,实现了对学生总分、语文等科目分数的综合排名,并支持按学号快速查找学生信息。
17万+

被折叠的 条评论
为什么被折叠?



