READ11IN.CPP

READIN.CPP

#include <stdio.h>
FILE *fp;
struct Tdate
{
    int year;
    int month;
    int date;
};
struct Tmark
{
    float pol;
    float chn;
    float eng;
    float com;
    float oral;
};
struct Tinform
{
    char name[20];
    char sex;
    float age;
    char schoolrecord;
    float worklen;
    char wordsite[100];
    Tmark mark;
    float Sage;
    float Srecord;
    float Swlen;
    float total;
};

   
void READIN()
{int I=0;
 int i;
 char a,b,c;
 FILE *p;
 struct Tdate now,nowline;
 float age1[6]={0},age2[5]={0},age3[10]={0},age4[5]={0};
 for(i=0,age1[0]=70.0;i<5;i++)
        age1[i+1]=age1[i]+2;
 for(i=0,age2[0]=84.0;i<4;i++)
        age2[i+1]=age2[i]+4;
 for(i=0,age3[0]=97.5;i<9;i++)
        age3[i+1]=age3[i]-2.5;
 for(i=0,age4[0]=74.0;i<5;i++)
        age4[i+1]=age4[i]-1;
 struct Tinform inf[50];
 fp=fopen("filelist.dat","ab");
 p=fopen("deadline.dat","rb");
 printf("/n请输入今日日期(如2008年8月8日,可输入为2008 8 8,按回车键结束。):");
 scanf("%d %d %d",&now.year,&now.month,&now.date);
 fread(&nowline,sizeof(struct Tdate),1,p);
 if(now.year>nowline.year)
     {printf("/n* * * 日期已过期!* * */n");
   c='N';
  }
 if(now.year==nowline.year && now.month>nowline.month)
     {printf("/n* * * 日期已过期!* * */n");
   c='N';
  }
 if(now.year==nowline.year && now.month==nowline.month && now.date>nowline.date)
     {printf("/n* * * 日期已过期!* * */n");
   c='N';
  }
 if(c=='N') goto END;//日期输错,则结束输入操作。
 printf("/n若要继续请输入Y,否则输入N : ");
 a=getchar();a=getchar();
 while(a=='Y')
 {
    printf("/n请输入:/n姓名,性别(男:M 女:F),年龄,/n学历(D-博士,M-硕士,U-本科,O-其他),/n任科级干部年限,现工作单位,/n考试成绩(政治,语文,英语,计算机,口试)/n(注意:所有内容用空格隔开)/n");
         
    scanf("%s %c %f %c %f %s %f %f %f %f %f",inf[I].name,&inf[I].sex,&inf[I].age,
           &inf[I].schoolrecord,&inf[I].worklen,inf[I].wordsite,&inf[I].mark.pol,&inf[I].mark.chn,&inf[I].mark.eng,
           &inf[I].mark.com,&inf[I].mark.oral);
    if((inf[I].sex!='M' && inf[I].sex!='F') || (inf[I].age>55 || inf[I].age<30) || (inf[I].schoolrecord!='D' && inf[I].schoolrecord!='M' && inf[I].schoolrecord!='U' && inf[I].schoolrecord!='O') )
     {if(inf[I].sex!='M' && inf[I].sex!='F')
          printf("/n* * * 输入有误!性别请用‘M’或‘F’表示!* * */n");
      if(inf[I].age>55 || inf[I].age<30)
          printf("/n* * * 输入有误!年龄应在30—55岁之间!* * */n");
      if(inf[I].schoolrecord!='D' && inf[I].schoolrecord!='M' && inf[I].schoolrecord!='U' && inf[I].schoolrecord!='O')
          printf("/n* * * 输入有误!学历请用‘D’,‘M’,‘U’或‘O’表示!* * */n");
     }
     
    else
    {
     printf("/n请核对如下所输入信息:/n");
     printf("姓名:%s  性别:%c  年龄:%.2f/n学历:%c  任科级干部年限:%.2f/n现工作单位:%s/n考试成绩:/n政治:%.2f 语文:%.2f 英语:%.2f /n计算机:%.2f 口试:%.2f/n",inf[I].name,inf[I].sex,inf[I].age,inf[I].schoolrecord,inf[I].worklen,inf[I].wordsite,inf[I].mark.pol,inf[I].mark.chn,inf[I].mark.eng,inf[I].mark.com,inf[I].mark.oral);
     printf("若无误请输入Y,若有请输入N!  ");
     b=getchar();b=getchar();
     if(b=='Y')
      {
        if(inf[I].age>=30.0 && inf[I].age<=35.0)
          inf[I].Sage=age1[(int)(inf[I].age-30.0)];
        if(inf[I].age>=36.0 && inf[I].age<=40.0)
          inf[I].Sage=age2[(int)(inf[I].age-36.0)];
        if(inf[I].age>=41.0 && inf[I].age<=50.0)
          inf[I].Sage=age3[(int)(inf[I].age-41.0)];
        if(inf[I].age>=51.0 && inf[I].age<=55.0)
          inf[I].Sage=age4[(int)(inf[I].age-51.0)];


        if(inf[I].schoolrecord=='D')
            inf[I].Srecord=100.0;
        if(inf[I].schoolrecord=='M')
            inf[I].Srecord=75.0;
        if(inf[I].schoolrecord=='U')
            inf[I].Srecord=50.0;
        if(inf[I].schoolrecord=='O')
            inf[I].Srecord=0.0;


        if(inf[I].worklen>=0.0 && inf[I].worklen<=1.0)
            inf[I].Swlen=70*(inf[I].worklen);
        if(inf[I].worklen>1.0 && inf[I].worklen<=2.0)
            inf[I].Swlen=30*(inf[I].worklen)+40;
        if(inf[I].worklen>2.0 && inf[I].worklen<=6.0)
            inf[I].Swlen=(-20)*(inf[I].worklen)+140;
        if(inf[I].worklen>6.0)
            inf[I].Swlen=0;
        inf[I].total=inf[I].mark.pol+inf[I].mark.chn+inf[I].mark.eng+inf[I].mark.com+inf[I].mark.oral+inf[I].Sage+inf[I].Srecord+inf[I].Swlen;
        I++;
     
     }
    }
    printf("/n继续输入下一条信息吗?(是:Y,否:N)-- ");
        a=getchar();a=getchar();
   
}
 for(i=0;i<I;i++)
     fwrite(&inf[i],sizeof(struct Tinform),1,fp);
 END:;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值