C语言:通讯录管理系统

来源:互联网 发布:暗黑黎明官网老虎端口 编辑:程序博客网 时间:2024/06/05 06:59
/*软件名称:作者:宋琳浩版本:1.0*/// 序号排序  #include<stdio.h>#include<stdlib.h> //调用了system("cls")清屏和exit函数#include<string.h>#include<conio.h>//输入输出头文件  包含getch putch等不回显函数FILE *fp;//文件指针int n=0;struct ADDRESS{    char name[20];//姓名    char number[20];//号码    char danwei[30];//工作单位    char address[40];//住址}t[50];//创建通讯录void create(){    void menu_select();    system("color 2e");    if((fp=fopen("通讯录.txt","r"))==NULL)    {        printf("--------------无通讯录----------------\n\n");        printf("************正在创建,请稍后**********\n\n");        fp=fopen("通讯录.txt","w");        printf("------------按任意键继续--------------\n");        getch();        system("cls");        printf("*******************创建成功!***************\n\n");        printf("--------------通讯录管理系统:---------------\n\n");        printf("         □              \n");        printf("    □□□□□□□□□□□     \n");        printf("       □ □ □        \n");        printf("      □  □  □       \n");        printf("    □□   □   □□     \n");        printf("      □□□□□□        \n");        printf("           □        \n");        printf("          □         \n");        printf("    □□□□□□□□□□□     \n");        printf("         □          \n");        printf("          □          \n");        printf("      □□□□              \n\n");        printf("--------------按任意键进入主菜单------------\n\n");        getch();        system("cls");         menu_select();    }    else    {        int i;        for(i=0;i<50;i++)        {            if(fscanf(fp,"%s%s%s%s",t[i].name,t[i].number,t[i].danwei,t[i].address)==-1)            {                n=i;                break;            }        }           fclose(fp);        printf("--------------通讯录管理系统:---------------\n\n");        printf("         □              \n");        printf("    □□□□□□□□□□□     \n");        printf("       □ □ □        \n");        printf("      □  □  □       \n");        printf("    □□   □   □□     \n");        printf("      □□□□□□        \n");        printf("           □            \n");        printf("          □             \n");        printf("    □□□□□□□□□□□     \n");        printf("         □          \n");        printf("          □            \n");        printf("      □□□□              \n\n");        printf("--------------按任意键进入主菜单------------\n\n");          getch();        system("cls");         menu_select();    }}//输入记录void get(){    void menu_select();    printf("***************请输入联系人信息***************\n");    loop:    {        printf("输入姓名:\n");        scanf("%s",t[n].name);        if(t[n].name==" ")            goto loop;    }    printf("输入号码:\n");    scanf("%s",t[n].number);    printf("输入工作单位:\n");    scanf("%s",t[n].danwei);    printf("输入住址:\n");    scanf("%s",t[n].address);    n++;    printf("***************是否继续添加(Y/N):***************\n");    if(getch()=='Y')        get();    system("cls");     menu_select();}//显示全部记录void list(){    void menu_select();    int i;    if(n!=0)    {        printf("---------------全部记录:----------------\n");        for(i=0;i<n;i++)        {            printf("***************************************\n");            printf("序号: %d\n",i);            printf("姓名: %s\n",t[i].name);            printf("号码: %s\n",t[i].number);            printf("工作单位: %s\n",t[i].danwei);            printf("住址: %s\n",t[i].address);            printf("***************************************\n");            printf("---------------------------------------\n\n");        }        printf("共%d个联系人\n\n",n);        printf("**********按任意键返回主菜单...********\n");        getch();        system("cls");         menu_select();    }    else        printf("---------------无联系人----------------\n");        printf("**********按任意键返回主菜单...********\n");        printf("---------------------------------------\n");        getch();        system("cls");   //清屏        menu_select();}//按姓名查找显示记录void searchbyname(){    void menu_select();    int flag=0;    int i=0;    char mingzi[20];    printf("***************按姓名查找:***************\n");    printf("***************请输入姓名:***************\n");    scanf("%s",mingzi);    for(i=0;i<n;i++)    {        if(strcmp(t[i].name,mingzi)==0)        {            printf("***************联系人信息如下:***************\n");            printf("序号: %d\n",i);            printf("姓名: %s\n",t[i].name);            printf("号码: %s\n",t[i].number);            printf("工作单位: %s\n",t[i].danwei);            printf("住址: %s\n",t[i].address);            printf("*********************************************\n");            flag++;            getch();            system("cls");             menu_select();        }    }    if(flag==0)    {        printf("***************输入信息有误,没有此联系人:*********\n\n\n");        printf("***************按任意键返回主菜单...***************\n");        getch();        system("cls");         menu_select();    }}//按姓名排序void sort()//用ASII码排序{    void menu_select();    int i,j,k;    ADDRESS temp;    for(i=0;i<n-1;i++)    {        k=i;        for(j=i+1;j<n;j++)        {            if(strcmp(t[k].name,t[j].name)>0)                k=j;            if(k!=i)            {                temp=t[i];                t[i]=t[k];                t[k]=temp;            }        }    }    printf("***************按姓名排序:***************\n");    for(i=0;i<n;i++)    {        printf("---------------------------------------------\n");        printf("序号: %d\n",i);        printf("姓名: %s\n",t[i].name);        printf("号码: %s\n",t[i].number);        printf("工作单位: %s\n",t[i].danwei);        printf("住址: %s\n",t[i].address);        printf("---------------------------------------------\n");    }    printf("************按任意键返回主菜单...*********\n");    getch();    system("cls");     menu_select();}//按序号查找显示记录void searchbyindex(){    void menu_select();    int i;    printf("***************按序号查找:***************\n");    scanf("%d",&i);    if(i<n)    {        printf("序号: %d\n",i);        printf("姓名: %s\n",t[i].name);        printf("号码: %s\n",t[i].number);        printf("工作单位: %s\n",t[i].danwei);        printf("住址: %s\n",t[i].address);        printf("************按任意键返回主菜单...*********\n");        getch();        system("cls");         menu_select();    }    else        printf("***************没有这个纪录:***************\n");        printf("************按任意键返回主菜单...**********\n");        getch();        system("cls");         menu_select();}//总查找void init(){    void searchbyname();    void searchbyindex();    void menu_select();     char i;    printf("---------------查找方式:----------------\n");    printf("***************a.   姓名:***************\n");    printf("***************b.   序号:***************\n");    printf("***************c.   返回:***************\n");    printf("----------------------------------------\n");    i=getch();    switch(i)    {        case 'a': searchbyname(); break;        case 'b': searchbyindex();break;        case 'c':        {            system("cls");            menu_select();             break;        }        default:    menu_select();    }}//插入记录(按姓名)void add(){    void menu_select();    int i,j,k;    ADDRESS temp;    loop:    {        printf("输入姓名:\n");        scanf("%s",t[n].name);        if(t[n].name==" ")            goto loop;    }    printf("输入号码:\n");    scanf("%s",t[n].number);    printf("输入工作单位:\n");    scanf("%s",t[n].danwei);    printf("输入住址:\n");    scanf("%s",t[n].address);    n++;    for(i=0;i<n-1;i++)    {        k=i;        for(j=i+1;j<n;j++)        {            if(strcmp(t[k].name,t[j].name)>0)                k=j;            if(k!=i)            {                temp=t[i];                t[i]=t[k];                t[k]=temp;            }        }    }    printf("******************已插入*********************\n\n");    printf("************按任意键返回主菜单...************\n");    getch();    system("cls");     menu_select();}//删除全部记录void delall(){    void menu_select();    printf("-------------确认删除?(Y/N)-------------\n");    if(getch()=='Y')    {        fopen("通讯录.txt","w");//用w模式打开一个已有的文件 文件内容会被删除 以便程序以一个空文件开始操作        n=0;        printf("----------------已经删除-----------------\n");        printf("************按任意键返回主菜单...**********\n");        getch();        system("cls");        menu_select();    }    else        system("cls");        menu_select();;}//删除姓名void delname(){    void menu_select();    int flag=0;    int i=0;    char mingzi[20];    printf("************请输入要删除的姓名:************\n");    scanf("%s",mingzi);    for(i=0;i<n;i++)    {        if(strcmp(t[i].name,mingzi)==0)        {            flag++;            printf("***************删除的信息如下:**************\n");            printf("序号: %d\n",i);            printf("姓名: %s\n",t[i].name);            printf("号码: %s\n",t[i].number);            printf("工作单位: %s\n",t[i].danwei);            printf("住址: %s\n",t[i].address);            printf("***************是否要删除?(Y/N)**************\n");            printf("*********************************************\n");              if(getch()=='Y')            {                for(;i<n-1;i++)                {                    t[i]=t[i+1];                }                n=n-1;                printf("******************已删除*****************\n");                getch();                system("cls");                 menu_select();            }            if(getch()=='N')            {                getch();                system("cls");                 menu_select();            }        }    }        if(flag==0)        {            printf("***************输入信息有误,没有此联系人:*********\n\n\n");            printf("***************按任意键返回主菜单...***************\n");            getch();            system("cls");             menu_select();        }}//删除void Delete(){    void menu_select();    void delname();    void delall();    char i;    printf("---------------删除方式:----------------\n");    printf("*************a.按姓名删除:**************\n");    printf("***************b.全部删除:**************\n");    printf("***************c.   返回:***************\n");    i=getch();    switch(i)    {        case 'a': delname();     break;        case 'b': delall();      break;        case 'c':        {            system("cls");            menu_select();             break;        }        default:    menu_select();    }}//退出void exit(){    int i=0;    fp=fopen("通讯录.txt","w");    for(i=0;i<n;i++)    {        fprintf(fp,"%s ",t[i].name);        fprintf(fp,"%s ",t[i].number);        fprintf(fp,"%s ",t[i].danwei);        fprintf(fp,"%s ",t[i].address);    }    fclose(fp);    exit(0);}//主菜单函数void menu_select(){    void menu_select(); //主菜单函数    void init();        //查找记录    void create();     //创建记录    void list(); //显示全部记录    void searchbyname();//按姓名查找显示记录    void delall();//删除记录     void add();//插入记录    void get();//输入记录    void searchbyindex();//按序号查找显示记录    void sort();//按姓名排序     void exit();//退出并保存到文件    char c;    system("color 9e");    printf("***************MENU*************** \n");    printf("0. Enter record /*输入记录*/ \n");    printf("1. list the file /*显示全部记录*/ \n");    printf("2. search record on name /*查找记录*/ \n");    printf("3. display record on order /*按序号查找显示*/ \n");    printf("4. delete a record /*删除记录*/ \n");    printf("5. add record /*插入记录*/ \n");    printf("6. sort by name /*按姓名排序*/ \n");    printf("7. quit /*退出并保存到文件中*/ \n");    printf("********************************** \n");    c=getch();    switch(c)    {        case '0':   get();              break;        case '1':   list();             break;        case '2':   init();             break;        case '3':   searchbyindex();    break;        case '4':   Delete();           break;        case '5':   add();              break;        case '6':   sort();             break;        case '7':   exit();             break;        default:    menu_select();    }    return;}//主函数void main(){    create();    menu_select(); }
原创粉丝点击