您好,欢迎来到[编程问答]网站首页   源码下载   电子书籍   软件下载   专题
当前位置:首页 >> 编程问答 >> C/C++ >> 求教不怕麻烦的高手

求教不怕麻烦的高手

来源:网络整理     时间:2016/7/30 22:21:19     关键词:

关于网友提出的“ 求教不怕麻烦的高手”问题疑问,本网通过在网上对“ 求教不怕麻烦的高手”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:

问题: 求教不怕麻烦的高手
描述:

我写了几个职工的信息,没关那个运行环境的时候可以全显示出他们的信息,但关了之后,却只能显示也第一个的出来,真是把我搞糊涂了
#include 
#include 
#include 
#include 
#include 
struct birth   /*出生年月日结构定义*/
{
    int year;
    int month;
    int day;
};
struct address_str
{
    char address[60];
    char mobile[13];
    char family_tel[15];
    char mail[25];
};
struct achieve
{
    char degree[20];
    char experience[1000];
};
struct worker
{
    int number;
    char name[20];
    char sex;
    char nation[20];
    struct birth birth;
    struct address_str addr;
    struct achieve achieve;
}workers[20];
FILE*fp;
int a;
void Data_load()
{
    long c;
    fp=fopen("worker.txt", "r+t") ;
    if(fp!=NULL)
    {
        for(a=1;a<20;a++)
        {
            if(fgetc(fp)==EOF)
                return;
            c=a-1;
            fseek(fp, c*sizeof(struct worker), SEEK_SET);
            fread(&workers[a], sizeof(struct worker), 1, fp);
            fclose(fp);
        }
    }
    else
    {
        fp=fopen("worker.txt", "w");
        fclose(fp);
        a=1;
    }
}
void Data_Show(int b)
{
    printf("\n\n\tNo:%3d\n", workers[b].number);
    getch();
    printf("\n\n\tName:%-20s\n\tsex:%c\n\tnation:%s\n", workers[b].name, workers[b].sex, workers[b].nation);
    getch();
    printf("\n\n\tBirthday(y/m/d):%4d%2d%2d", workers[b].birth.year, workers[b].birth.month, workers[b].birth.day);
    getch();
    printf("\n\n\tAddress:%-60s\n\tMobile:%-13d\n\tFamily_tel:%-15d\n\tmail:%-25s\n",workers[b].addr.address, workers[b].addr.mobile, workers[b].addr.family_tel, workers[b].addr.mail);
    getch();
    printf("\n\n\tDegree:%-20s\n\texperience:%-1000s\n", workers[b].achieve.degree, workers[b].achieve.experience);
    getch();
}
void Data_Input(int b)
{
    fflush(stdin);
    workers[b].number = b;
    printf("\n\n\tNo%d record", b);
    printf("\n\n\tName:");
    scanf("%s", &workers[b].name);
  fflush(stdin);
    printf("\n\tnation:");
    scanf("%s", &workers[b].nation);
   fflush(stdin);
    printf("\n\n\tsex(m/f):");
    scanf("%c", &workers[b].sex);
  fflush(stdin);
    printf("\n\n\tbirthday");
    printf("\n\n\tyear:");
    scanf("%d", &workers[b].birth.year);
    fflush(stdin);
    printf("\n\n\tmonth:");
    scanf("%d", &workers[b].birth.month);
   fflush(stdin);
    printf("\n\n\tday:");
    scanf("%d" , &workers[b].birth.day);
   fflush(stdin);
    printf("\n\n\taddress:");
    scanf("%s", workers[b].addr.address);
    fflush(stdin);
    printf("\n\n\tmobile:");
    scanf("%c", &workers[b].addr.mobile);
   fflush(stdin);
    printf("\n\n\tfamily_tel:");
    scanf("%c", &workers[b].addr.family_tel);
    fflush(stdin);
    printf("\n\n\tmail:");
    scanf("%c",  &workers[b].addr.mail);
    fflush(stdin);
  printf("\n\n\tdegree:");
    scanf("%s", &workers[b].achieve.degree);
    fflush(stdin);
    printf("\n\n\texperience:");
    scanf("%s", &workers[b].achieve.experience);
    fflush(stdin);
}
void Data_Save()
{
    int b;
    fp=fopen("worker.txt", "w");
    for(b=1; b<=a; b++)
    {
        fwrite(&workers[b], sizeof(struct worker), 1, fp);
    }
    fclose(fp);
}
void main()
{
    int a=20;
    int b, c;
    char ch, name[20];
    char *search_name=name;
    clrscr();
    Data_load();
    a--;
    while(1)
    {   
    printf("\n\n\t*************Function choose:********************");
    printf("\n\t************    1.Read            *****************");
    printf("\n\t******          2.Delete              *************");
    printf("\n\t*********       3.Search           ****************");
    printf("\n\t***********     4.Insert         ******************");
    printf("\n\t**************  5.Save and exit ********************");
    printf("\n\t* * * * * *     6. Quit    * * * * * * *************");
    printf("\n\n");
    printf("\t * * * * * * * *  choice:");
    scanf("%c", &ch);
    switch(ch)
    {
    case '1':
        b = 1;
        while (getch()!=0x1b && b<=a) Data_Show(b++);
        if (b > a)
            printf("\n\tEnd of e_note\n");
        break;
       case '2':
        if(a<1)
        {
            printf("\n\tPlease Append record\n");
            break;
        }
        printf("\n\t Delete No:");
        scanf("%d", &c);
        for (b=c; b<>
        {
            strcpy(workers[b].name, workers[b+1].name);
            workers[b].sex = workers[b+1].sex;
            strcpy(workers[b].nation, workers[b+1].nation);
            workers[b].birth.year = workers[b+1].birth.year;
            workers[b].birth.month = workers[b+1].birth.month;
            workers[b].birth.day = workers[b+1].birth.day;
            strcpy(workers[b].addr.address, workers[b+1].addr.address);
            strcpy(workers[b].addr.mobile, workers[b+1].addr.mobile);
            strcpy(workers[b].addr.family_tel, workers[b+1].addr.family_tel);
            strcpy(workers[b].addr.mail, workers[b+1].addr.mail);
            strcpy(workers[b].achieve.degree, workers[b+1].achieve.degree);
            strcpy(workers[b].achieve.experience, workers[b+1].achieve.experience);
        }
        a--;
        break;
    case'3':getchar();
        printf("\n\t Please input name:");
        gets(search_name);
        for (b=0; b<=a; b++)
        {
            if (strcmp(search_name, workers[b].name)==0)
            {
                Data_Show(b);
                break;
            }
        }
        if (b > a)
        {
            printf("\n\t No such records");
        }
        break;
    case '4':
        printf("\n\tinsert No:");
        scanf("%d", &c);
        for (b=a+1; b>c; b--);
        {
            strcpy(workers[b].name, workers[b-1].name);
            workers[b].sex = workers[b-1].sex;
            strcpy(workers[b].nation, workers[b-1].nation);
            workers[b].birth.year = workers[b-1].birth.year;
            workers[b].birth.month = workers[b-1].birth.month;
            workers[b].birth.day =  workers[b-1].birth.day;
            strcpy(workers[b].addr.address, workers[b-1].addr.address);
            strcpy(workers[b].addr.mobile, workers[b-1].addr.mobile);
            strcpy(workers[b].addr.family_tel, workers[b-1].addr.family_tel);
            strcpy(workers[b].addr.mail, workers[b-1].addr.mail);
            strcpy(workers[b].achieve.degree, workers[b-1].achieve.degree);
            strcpy(workers[b].achieve.experience, workers[b-1].achieve.experience);
        }
        Data_Input(c);
        a++;
        Data_Save();
        break;
    case '5':
        Data_Save();
        exit(0);
        break;
    case '6':
        printf("\n\t Do you want to save e_note:(y/n)");
        ch = getch();
        if(ch == 'y')
        {
            Data_Save();
            exit(0);
        }
    default: printf("please choose num 1-6.\n");       
    }
}
}
 
 
 


以上介绍了“ 求教不怕麻烦的高手”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/3032944.html

相关图片

相关文章