2018年7月24日日报

姓名:任光烨 日期:2018年7月24日

今日学习任务:自学文件操作,单链表,完成通讯录4.0。

今日完成情况:都已完成,100~200行代码。

今日开发中出现的问题汇总:全局变量的延迟问题,fwrite函数的参数,。

今日未解决问题:无。

今日开发收获:文件操作以及数据结构

自我评价:

其他:附通讯录4.0源代码

通讯录现已完成功能汇总:

1.信息录入

2信息按序号以及名字大小冒泡排序输出

3修改信息

4删除信息

5按照电话号码以及名字查找信息

实现功能需自行创建data文件,可按自己需求修改信息存储文件的目录。

#include<stdio.h>
#include<string.h>
#define nmemb 10
int i=0;//信息总数
struct test
{
    int num;
    char name[30];
    char sex[30];
    char address[30];
    char tel[30];
}stu[nmemb];
int screen1();//声明
void screen2()//显示功能
{
    int ag=0,b=0;
    int ig,jg;
    int og=0;
    char new3[30];
    aa: printf("请选择显示方式:1.按序号显示2.按名字大小显示\n");
    printf("请输入:");
    scanf("%d",&ag);
    if(ag==1)
    {
        for(b=0;b<i;b++)
        {
            printf("序号为:%d\n",stu[b].num);
            printf("姓名为:%s\n",stu[b].name);
            printf("性别为:%s\n",stu[b].sex);
            printf("地址为:%s\n",stu[b].address);
            printf("电话为:%s\n",stu[b].tel);
        }      
        screen1();
    }
   else if(ag==2)
    {
        for(ig=0;ig<i-1;ig++)
        {
            for(jg=0;jg<i-1-ig;jg++)
            {
                if(strcmp(stu[ig].name,stu[ig+1].name)>0)
               {
                    strcpy(new3,stu[ig].name);
                    strcpy(stu[ig].name,stu[ig+1].name);
                    strcpy(stu[ig+1].name,new3);

                    strcpy(new3,stu[ig].sex);
                    strcpy(stu[ig].sex,stu[ig+1].sex);
                    strcpy(stu[ig+1].sex,new3);

                    strcpy(new3,stu[ig].address);
                    strcpy(stu[ig].address,stu[ig+1].address);
                    strcpy(stu[ig+1].address,new3);

                    strcpy(new3,stu[ig].tel);
                    strcpy(stu[ig].tel,stu[ig+1].tel);
                    strcpy(stu[ig+1].tel,new3);
                }
            }
        }
        for(b=0;b<i;b++)
        {
            printf("序号为:%d\n",stu[b].num);
            printf("姓名为:%s\n",stu[b].name);
            printf("性别为:%s\n",stu[b].sex);
            printf("地址为:%s\n",stu[b].address);
            printf("电话为:%s\n",stu[b].tel);
        }      
    }
    else 
    {
        printf("输入错误");
        ag=0;
        goto aa;
    }
    screen1();
}
void screen3()//输入信息功能
{
    int c=0,d=0;
    for(c=i;c<10;c++)
    {
       // printf("请输入序号:");
       // scanf("%d",&stu[c].num);
        printf("请输入姓名:");
        scanf("%s",stu[c].name);
        printf("请输入性别:");
        scanf("%s",stu[c].sex);
        printf("请输入地址:");
        scanf("%s",stu[c].address);
        printf("请输入号码:");
        scanf("%s",stu[c].tel);
        printf("输入成功\n");
        i++;
        lopa:printf("继续输入请按1,退出请按2\n");
        printf("请输入:");
        scanf("%d",&d);
        if(d==1);
        else if(d==2) break;
        else
        {
            goto lopa;
        }
        if(i==nmemb)
        {
            printf("通讯录已满");
        }
    }
    screen1();
}
void screen4()//删除信息功能
{
    int e=0,f=0,g=0;
    for(g=0;g<i;g++)
    {
        printf("序号为:%d\n",stu[g].num);
        printf("姓名为:%s\n",stu[g].name);
        printf("性别为:%s\n",stu[g].sex);
        printf("地址为:%s\n",stu[g].address);
        printf("电话为:%s\n",stu[g].tel);
    }
    printf("请选择需要删除的序号:");
    scanf("%d",&e);
    for(f=e;f<i;f++)
    {
       strcpy( stu[f-1].name,stu[f].name);
       strcpy( stu[f-1].tel,stu[f].tel);
       strcpy( stu[f-1].sex,stu[f].sex);
       strcpy( stu[f-1].address,stu[f].address);
    }
    strcpy( stu[i].name,"");
    strcpy( stu[i].tel,"");
    strcpy( stu[i].sex,"");
    strcpy( stu[i].address,"");
    i--;
    printf("删除成功\n");
    screen1();
}
void screen5()
{
    int j=0,k=0;
    char new1[30];
    kkk: printf("请选择查找方法:1.按电话号码查找 2.按姓名查找 3.返回主菜单\n");
    strcpy(new1,"");
    printf("请输入:");
    scanf("%d",&j);
    if(j==1)
    {
        printf("请输入所要查询的电话号码:");
        scanf("%s",new1);
        for(k=0;k<10;k++)
        {
            if(strcmp(new1,stu[k].tel)==0)
            {
                     printf("已找到相关信息:\n");
                     printf("序号为:%d\n",stu[k].num);
                     printf("姓名为:%s\n",stu[k].name);
                     printf("性别为:%s\n",stu[k].sex);
                     printf("地址为:%s\n",stu[k].address);
                     printf("电话为:%s\n",stu[k].tel);
                     break;
            }
            if(k==9)
            {
                printf("未找到相关信息\n");
            }
        }
    }
    else if(j==2)
    {
        printf("请输入所要查找的姓名:");
        scanf("%s",new1);
        for(k=0;k<10;k++)
        {
            if(strcmp(new1,stu[k].name)==0)
            {
                     printf("已找到相关信息:\n");
                     printf("序号为:%d\n",stu[k].num);
                     printf("姓名为:%s\n",stu[k].name);
                     printf("性别为:%s\n",stu[k].sex);
                     printf("地址为:%s\n",stu[k].address);
                     printf("电话为:%s\n",stu[k].tel);
                     break;
            }
            if(k==9)
            {
                printf("未找到相关信息\n");
            }
        }
        screen1();
    }
    else if(j==3)
    {
        screen1();
    }
    else 
    {   
        printf("输入错误\n");
        goto kkk;
    }

    screen1();
}
void screen6()//修改信息功能
{
    int o,p,q,r;
    char new2[10];
    for(r=0;r<i;r++)
    {
        printf("序号为:%d\n",stu[r].num);
        printf("姓名为:%s\n",stu[r].name);
        printf("性别为:%s\n",stu[r].sex);
        printf("地址为:%s\n",stu[r].address);
        printf("电话为:%s\n",stu[r].tel);
    }
    printf("请输入需要修改信息的序号:\n");
    printf("请输入:");
    scanf("%d",&q);
    printf("序号为:%d\n",stu[q-1].num);
    printf("姓名为:%s\n",stu[q-1].name);
    printf("性别为:%s\n",stu[q-1].sex);
    printf("地址为:%s\n",stu[q-1].address);
    printf("电话为:%s\n",stu[q-1].tel);
    ee: printf("请选择需要修改的内容:1.姓名 2.性别 3 地址 4.电话号码 5.返回主界面\n");
    strcpy(new2,"");
    printf("请输入: ");
    scanf("%d",&o);
    if(o==1)
    {
        p=0;
        ff: printf("请输入新姓名:");
        scanf("%s",new2);
        printf("%s",new2);
        gg: printf("请确认信息是否正确\n");
        printf("确认请按1,重新输入请按2 : ");
        scanf("%d",&p);
        if(p==1)
        {
            strcpy( stu[q-1].name,new2);
            printf("修改成功\n");
            goto ee;
        }
        else if(p==2)
        {
            goto ff;
        }
        else
        {
            printf("输入错误");
            goto gg;
        }
    }
    else if(o==2)
    {
        p=0;
        ff1: printf("请输入新性别:");
        scanf("%s",new2);
        printf("%s",new2);
        gg1: printf("请确认信息是否正确\n");
        printf("确认请按1,重新输入请按2 : ");
        scanf("%d",&p);
        if(p==1)
        {
            strcpy( stu[q-1].sex,new2);
            printf("修改成功\n");
            goto ee;
        }
        else if(p==2)
        {
            goto ff1;
        }
        else
        {
            printf("输入错误");
            goto gg1;
        }
    }
    else if(o==3)
    {
        p=0;
        ff2: printf("请输入新地址:");
        scanf("%s",new2);
        printf("%s",new2);
        gg2: printf("请确认信息是否正确\n");
        printf("确认请按1,重新输入请按2 : ");
        scanf("%d",&p);
        if(p==1)
        {
            strcpy( stu[q-1].address,new2);
            printf("修改成功\n");
            goto ee;
        }
        else if(p==2)
        {
            goto ff2;
        }
        else
        {
            printf("输入错误");
            goto gg2;
        }
    }
    else if(o==4)
    {
        p=0;
        ff3: printf("请输入新号码:");
        scanf("%s",new2);
        printf("%s",new2);
        gg3: printf("请确认信息是否正确\n");
        printf("确认请按1,重新输入请按2 : ");
        scanf("%d",&p);
        if(p==1)
        {
            strcpy( stu[q-1].tel,new2);
            printf("修改成功\n");
            goto ee;
        }
        else if(p==2)
        {
            goto ff3;
        }
        else
        {
            printf("输入错误");
            goto gg3;
        }
    }
    else if(o==5)
    {
        screen1();
    }
    else
    {
        printf("输入错误");
        goto ee;
    }
    screen1();
}
int screen1()//主屏幕
{
    int a=0;
    int flag = 1;
    printf("****************************\n");
    printf("************功能************\n");
    printf("       1. 显示通讯录        \n");
    printf("       2. 添加新信息        \n");
    printf("       3. 删除信息          \n");
    printf("       4. 查找信息          \n");
    printf("       5. 修改信息          \n");
    printf("       6. 结束功能          \n");
    printf("****************************\n");
    printf("请选择功能(1~6):");
    scanf("%d",&a);
    switch(a)
    {
        case 1:
            screen2();
            break;
        case 2:
            screen3();
            break;
        case 3:
            screen4();
            break;
        case 4:
            screen5();
            break;
        case 5:
            screen6();
            break;
        case 6:
            flag=0;
            sleep(0.5);
            break;
        default :printf("输入错误\n");break;
    }
    return flag;
}
int main()
{
    int h=0;
    int flag=1;
    FILE * stream;
    stream=fopen("/root/Desktop/addresslist/data","r");
    if(stream == NULL)
    {
        printf("文件打开失败");
    }
    fread(&i,sizeof(int),1,stream);
    printf("总数为:%d",i);
    fread(stu,sizeof(struct test),i,stream);
    fclose(stream);
    for(h=0;h<10;h++)
    {
        stu[h].num=h+1;
    }
    while(flag)
    {
       flag=screen1();
    }
    stream=fopen("/root/Desktop/addresslist/data","w+");
    fwrite(&i,sizeof(int),1,stream);
    fwrite(stu,sizeof(struct test),10,stream);
    fclose(stream);
    return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_37624987/article/details/81190302
今日推荐