• 欢迎访问C语言网www.dotcpp.com 比赛栏每月有奖月赛!举办比赛联系QQ:2045302297
  • 问题反馈、粉丝交流 QQ群327452739 蓝桥杯训练群:113766799 申请群时请备注排名里的昵称
  • C语言研究中心 为您提供有图、有料、解渴的C语言专题! 欢迎讨论!

C语言通讯录(双向链表实现)管理系统

C语言研究中心 CTO 24862次浏览 3个评论

纯C语言VC6环境实现通讯录系统,亦可以改为XXX信息管理系统

可键盘操作

界面截图如下:

C语言通讯录(双向链表实现)管理系统

C语言通讯录(双向链表实现)管理系统

源码如下:

  1. /***********************************************************************************************************/
  2. /*                                                                                                         */
  3. /*程序采用双向循环链表结构,来满足目录可以满足自由上下过渡,遍历的需求.头结点用来表示当前通讯录的人数等信息  */
  4. /*程序有添加,查询,浏览的功能,基本满足通讯录的要求.                                                         */
  5. /*程序最大特点是主菜单,用户列表以及每个结点的操作属性菜单均采用上W-A-S-D才选择,回车确认                   */
  6. /*程序核心功能有search()动态搜索函数,creat()创建函数,list()浏览函数构成                                   */
  7. /*                                                                              ----  By Giant             */
  8. /*                                                                                                         */
  9. /***********************************************************************************************************/
  10.  
  11. #include<stdio.h>
  12. #include<stdlib.h>
  13. #include<conio.h>
  14. #include<windows.h>
  15. #include<string.h>
  16. //=======================================================================================
  17. #define LENTH 20
  18. char path[20]="d:\\通讯录.txt";
  19.  
  20.  
  21. //-------------------------------------------------------------------------------
  22. typedef struct person                           //结构体属性
  23. {
  24.     char  count[10];                //序号
  25.     char name[LENTH];                   //姓名
  26.     char number[LENTH];                       //电话号码
  27.     struct person *prior;              //前驱指针
  28.     struct person *next;           //后继指针
  29.  
  30. }node;
  31.  
  32. void control(int x,int p);
  33. void list();
  34. void faceopration(char a[][60],int w);
  35. void opration(int x);
  36. void controlmain(int x);
  37. //----------------------------------------------------------------------------------
  38. node *head=NULL;                              //全局变量-头节点
  39. //===================================================================================
  40. void check()                             //自检函数   标签至首
  41. {
  42.     node *p=head;
  43.     do
  44.     {
  45.       
  46.       p->count[1]=' ';
  47.       p->count[2]=' ';
  48.      // p->number[LENTH-2]=' ';
  49.      // p->number[LENTH-3]=' ';
  50.       if(p->next)
  51.             p=p->next;
  52.       
  53.       
  54.     }while(p->next && p->next!=head->next);
  55.     if(head->next)
  56.     {
  57.      p=head->next;
  58.      p->count[1]=16;
  59.      p->count[2]=16;
  60.     // p->number[LENTH-2]=17;
  61.      //p->number[LENTH-3]=17;
  62.     }
  63.  
  64. }
  65. //-----------------------------------------------------------------------------------------------
  66. void filesite()                                 //文件重写
  67. {
  68.     int i=0;
  69.     node *p=head;
  70.  
  71.     FILE *fp=fopen(path,"at");
  72.     if(fp)
  73.     {
  74.         while(p->next && p->next!=head)
  75.         {
  76.             p=p->next;
  77.             if(0==i) fprintf(fp,"%-4s    %-12s     %-12s\n","序号","姓名","电话号码");
  78.             fprintf(fp,"%-8s      %-12s     %-12s \n",p->count,p->name,p->number);
  79.             i++;
  80.  
  81.         }
  82.     }
  83.     else
  84.         printf("file  memory error! please check\n");
  85.  
  86. }
  87. //===============================导航界面的两个函数============================
  88. void face(char a[][80])
  89. {
  90.     int j=0;
  91.     char x;
  92.     int i=8,BC=8;   //BC为control实参
  93.     while(x=getch())
  94.     {
  95.         BC=8;
  96.         if(x=='\r')
  97.         {
  98.             while(a[BC][5]!=16)
  99.                 BC=BC+2;
  100.             controlmain(BC);
  101.         }
  102.         if(x=='w' || x=='a' )
  103.         {
  104.  
  105.             if(a[8][5]==16 )
  106.             continue;
  107.             a[i][5]=' ';
  108.             a[i][6]=' ';
  109.             a[i][59]=' ';
  110.             a[i][58]=' ';
  111.             i=i-2;
  112.             a[i][5]=16;
  113.             a[i][6]=16;
  114.             a[i][59]=17;
  115.             a[i][58]=17;
  116.             j=0;
  117.             system("cls");
  118.             while(j<20)
  119.                 printf("%s\n",a+j++);
  120.         }
  121.         else if(x=='s' || x=='d')
  122.         {
  123.  
  124.             if(a[14][5]==16)
  125.              continue;
  126.             
  127.              a[i][5]=' ';
  128.              a[i][6]=' ';
  129.              a[i][59]=' ';
  130.              a[i][58]=' ';
  131.              i=i+2;
  132.              a[i][5]=16;
  133.              a[i][6]=16;
  134.              a[i][59]=17;
  135.              a[i][58]=17;
  136.              j=0;
  137.              system("cls");
  138.              
  139.              while(j<20)
  140.                  printf("%s\n",a+j++);
  141.         }
  142.         else continue;
  143.     }
  144. }
  145. //---------------------------------------------------------------------------
  146. void  picture()
  147. {
  148.  
  149.     int i=0;
  150.  
  151.  
  152.  
  153.     char a[20][80]={"\0",  //0
  154.     "\0",                   //1
  155.     "\0",                   //2
  156.     "\0",                    //3
  157.     "           ^^^^^^^^^^^^^^^^^^^^^  欢迎使用    ^^^^^^^^^^^^^^^^^^^^^^",    //4
  158.     "\0",                         //5
  159.     "               请选择要进行的操作:        ",    //6
  160.     "\0",                                    //7
  161.     "                 浏览全部     <---------->      1           ",//8
  162.     "\0",           //9
  163.     "                 新建用户     <---------->      2           ",//10
  164.     "\0",          //11
  165.     "                 查找用户     <---------->      3           ",//12
  166.     "\0",           //13
  167.     "                 退出程序     <---------->      4           "};//14
  168.  
  169.     a[8][5]=16;
  170.     a[8][6]=16;
  171.     a[8][59]=17;
  172.     a[8][58]=17;
  173.     while(i<20)
  174.         printf("%s\n",a+i++);
  175.  
  176.     face(a);
  177.  
  178. }
  179.  
  180. //=====================================================================
  181. void facenode()                      //节点操作表
  182. {
  183.     node *p=head;
  184.     char x='z';
  185.     int AC=8;
  186.     
  187.  
  188.     while(x=getch() )
  189.     {
  190.  
  191.         if(x=='\r')
  192.         {
  193.             p=head->next;
  194.             AC=1;
  195.             while(p->count[1]!=16)
  196.             {
  197.                 AC=AC+1;
  198.                 p=p->next;
  199.             }
  200.             if(p==head) { controlmain(99);}   //返回主菜单
  201.             else  opration(AC);  //AC为要修改或删除的节点序号 int型
  202.         }
  203.         if(x=='w' || x=='a')
  204.         {
  205.  
  206.             if(head->next->count[1]==16 )
  207.             continue;
  208.             p->count[1]=' ';
  209.             p->count[2]=' ';
  210.             //p->number[LENTH-2]=' ';
  211.             //p->number[LENTH-3]=' ';
  212.             p=p->prior;
  213.             p->count[1]=16;
  214.             p->count[2]=16;
  215.             //p->number[LENTH-2]=17;
  216.             //p->number[LENTH-3]=17;
  217.  
  218.             system("cls");
  219.             
  220.             list();
  221.         }
  222.         else if(x=='s' || x=='d')
  223.         {
  224.  
  225.             if(head->count[1]==16 )
  226.              continue;
  227.  
  228.               p->count[1]=' ';
  229.               p->count[2]=' ';
  230.               //p->number[LENTH-2]=' ';
  231.               //p->number[LENTH-3]=' ';
  232.               p=p->next;
  233.  
  234.               p->count[1]=16;
  235.                  p->count[2]=16;
  236.               //p->number[LENTH-2]=17;
  237.               //p->number[LENTH-3]=17;
  238.  
  239.  
  240.              system("cls");
  241.              
  242.              list();
  243.         }
  244.         else continue;
  245.     }
  246. }
  247.  
  248.  
  249.  
  250. //-------------------------------------------------------------------------
  251. node *newone()                                  //创建头节点
  252. {
  253.     node *p;
  254.     p=(node *)malloc(sizeof(node));
  255.     memset(p->count,' ',LENTH);
  256.     p->next=NULL;
  257.     p->prior=NULL;
  258.     return p;
  259. }//newone
  260.  
  261. //--------------------------------------------------------------------------
  262. void start()                                    //链表初始化
  263. {
  264.  
  265.     head=newone();
  266.     strcpy(head->name,"返回主菜单");
  267.     
  268.     memset(head->count,' ',5);
  269.     memset(&head->count[5],'\0',5);
  270.     memset(head->number,'\0',LENTH);
  271.     head->prior=head;
  272. }
  273. //----------------------------------------------------------------------
  274. void creat()                                  //添加新用户
  275. {
  276.     int i=0,j=0;char x,c;      
  277.  
  278.     char arry[10][40]={"\0",   //0
  279.     "      要继续新建联系人?         ",            //1
  280.     "\0", //2
  281.     "         确认     Y           ",               //3
  282.     "\0",    //4
  283.     "         取消     N           ",                   //5
  284.     "\0"};   //6
  285.     
  286.     node *p;
  287.     node *q,*temp;
  288.     FILE *fp=fopen(path,"at");
  289.     temp=newone();
  290.     p=head->prior;                    //P指向最后一个节点
  291.     i=atoi(head->prior->count);            //求出最后一个节点的序号,即总数
  292.  
  293.  
  294.     arry[3][3]=16;
  295.     arry[3][4]=16;
  296.     arry[3][22]=17;
  297.     arry[3][23]=17;
  298.  
  299.     
  300.     for(;;)
  301.     {
  302.         system("cls");
  303.         printf("\n\n\n\n\n\n\n\n");
  304.         j=0;
  305.         while(j<10)
  306.             printf("                      %s\n",arry+j++);
  307.         
  308.         while(x=getch())
  309.         {
  310.             system("cls");
  311.             printf("\n\n\n\n\n\n\n\n");
  312.             j=0;
  313.             while(j<10)
  314.                 printf("                      %s\n",arry+j++);
  315.         
  316.             if(x=='\r')
  317.             {
  318.                 if(arry[3][3]==16)
  319.                 {
  320.                     system("cls");
  321.                     memset(temp->name,'\0',LENTH);
  322.                     memset(temp->number,'\0',LENTH);
  323.                     printf("\n\n  请输入姓名和电话:\n");
  324.                     scanf("%s%s",&temp->name,&temp->number);
  325.                     printf("\n\n_________________确定将%s的信息存入通讯录?Y/N________________\n",temp->name);
  326.                     c=getch();
  327.                     if(c=='y' || c=='Y')
  328.                     {
  329.                         fp=fopen(path,"at");
  330.                         q=newone();
  331.  
  332.                         //序号寸入
  333.                         i++;
  334.                         sprintf(&q->count[5],"%d",i);
  335.                         //   sprintf(&head->count[5],"%d",i);
  336.                         //导入姓名与电话
  337.                         strcpy(q->name,temp->name);
  338.                         strcpy(q->number,temp->number);
  339.                         //接入链表
  340.                         p->next=q;
  341.                         q->prior=p;
  342.  
  343.                         q->next=head;
  344.                         head->prior=q;
  345.  
  346.                         p=p->next;
  347.  
  348.  
  349.                 if(fp)
  350.                 {
  351.                     if(1==i)
  352.                         fprintf(fp,"%-4s    %-12s     %-12s\n","序号","姓名","电话号码");
  353.  
  354.                     fprintf(fp,"%-8s      %-12s     %-12s \n",q->count,q->name,q->number);
  355.                     printf("\n\n\n___________________________          已成功导入%s\n",path);
  356.                     fclose(fp);
  357.                     Sleep(1000);
  358.                 }
  359.  
  360.                 else printf("通讯录文件出错!请检查PATH\n");
  361.  
  362.                 if(1==i)
  363.                 {
  364.                     p->count[1]=16;p->count[2]=16;
  365.                     p->number[LENTH-2]=17;p->number[LENTH-3]=17;
  366.                 }
  367.                 
  368.                 }
  369.             
  370.  
  371.             }
  372.             if(arry[5][3]==16)
  373.             {
  374.                 system("cls");
  375.                 picture();
  376.                  break;
  377.             }
  378.  
  379.             }   //    =='\r'
  380.  
  381.  
  382.             if(x=='w' || x=='a')
  383.             {
  384.                 if(arry[3][3]==16)
  385.                     continue;
  386.                 arry[3][3]=16;
  387.                 arry[3][4]=16;
  388.                 arry[3][22]=17;
  389.                 arry[3][23]=17;
  390.  
  391.                 arry[5][3]=' ';
  392.                 arry[5][4]=' ';
  393.                 arry[5][22]=' ';
  394.                 arry[5][23]=' ';
  395.                 system("cls");
  396.  
  397.                 printf("\n\n\n\n\n\n\n\n");
  398.                 j=0;
  399.                 while(j<10)
  400.                     printf("                      %s\n",arry+j++);
  401.  
  402.                 
  403.  
  404.             }
  405.             else if(x=='s' || x=='d')
  406.             {
  407.                 if(arry[5][3]==16)
  408.                     continue;
  409.                 arry[3][3]=' ';
  410.                 arry[3][4]=' ';
  411.                 arry[3][22]=' ';
  412.                 arry[3][23]=' ';
  413.  
  414.                 arry[5][3]=16;
  415.                 arry[5][4]=16;
  416.                 arry[5][22]=17;
  417.                 arry[5][23]=17;
  418.                 system("cls");
  419.                 printf("\n\n\n\n\n\n\n\n");
  420.                 j=0;
  421.                 while(j<10)
  422.                     printf("                      %s\n",arry+j++);
  423.             }
  424.             else
  425.                 continue;
  426.  
  427.             
  428.         } //while
  429.  
  430.         
  431.  
  432.     }//for
  433.  
  434.  
  435.  
  436. }// creat
  437. //---------------------------------------------------------------------------
  438. void del(int n)                        //删除用户,n为要删除的节点序号int
  439. {
  440.     node *q=head,*p=head;
  441.     int j=0;
  442.     
  443.     while(p!=head->prior)
  444.     {
  445.  
  446.         q=p;
  447.         p=p->next;
  448.         
  449.         if(atoi(&p->count[5])==n)
  450.         {
  451.             
  452.             
  453.  
  454.             //sprintf(head->count+5,"%d",i);
  455.             //当删除的为最后一个节点时yy
  456.  
  457.             if(p->next==head)
  458.             {
  459.                 system("title 111");
  460.                 q->next=head;
  461.                 head->prior=q;
  462.                 free(p);
  463.                 printf("删除完成!");
  464.                 filesite();               //文件重写
  465.                 Sleep(500);
  466.                 system("cls");
  467.                 break;
  468.             }
  469.             
  470.             //常规删除
  471.             q->next=p->next;
  472.             p->next->prior=p->prior;
  473.             //序号进一
  474.             
  475.             do
  476.             {
  477.                
  478.                q=q->next;
  479.                j=atoi(q->count);
  480.                j--;
  481.                
  482.                sprintf(&q->count[5],"%d",j);
  483.  
  484.             }while(q->next!=head);
  485.             filesite();               //文件重写
  486.             printf("删除完成!\n");
  487.             Sleep(400);
  488.             system("cls");
  489.             break;
  490.  
  491.         } //if
  492.  
  493.     } // while
  494.  
  495.  
  496. } //  del
  497. //-----------------------------------------------------------------------------
  498. void search()                       //动态搜索
  499. {
  500.  
  501.          
  502.     char test[LENTH]={"\0"};         //定义测试关键码及长度
  503.     int i=0;
  504.     char temp;   //
  505.     char arr[LENTH]={"\0"};
  506.     char arrname[LENTH]={"\0"};
  507.     char num[10]={"序号"},name[10]={"姓名"},tel[10]={"电话"};
  508.     node *p=head;
  509.     system("cls");
  510.     printf("\n\n==================================查找===============================\n\n");
  511.     
  512.     while(i<LENTH)
  513.     {
  514.         
  515.         p=head;
  516.         system("cls");
  517.         printf("\n\n\n           %s           %-12s               %-12s\n",num,name,tel);
  518.         while(p->next && p->next!=head)
  519.         {
  520.             p=p->next;
  521.             memset(arr,'\0',LENTH);
  522.             memset(arrname,'\0',LENTH);
  523.             strncpy(arr,p->number,i);
  524.             strncpy(arrname,p->name,i);
  525.             if(0==strcmp(arr,test)  ||  0==strcmp(arrname,test))
  526.             {
  527.                     printf("_______________________________________________________________\n");
  528.                     printf("        %s         %12s\n",&p->count[3],p->name);
  529.                     printf("                                                 %12s  \n",p->number);
  530.             }
  531.  
  532.                 
  533.         }
  534.     
  535.         printf("\n\n=========================查找=============================\n\n");
  536.         puts(test);
  537.         putchar(10);
  538.         
  539.         temp=getch();
  540.         if(!i && temp=='\b') break;
  541.         if(i && temp=='\b')
  542.         {
  543.         
  544.             test[i-1]='\0';
  545.             i=i-2;
  546.  
  547.         }
  548.         else if(!i && temp=='\b')
  549.             continue;
  550.  
  551.         else
  552.         {
  553.             test[i]=temp;
  554.         }
  555.     
  556.  
  557.     i++;
  558.  
  559.     }//while输入
  560.     printf("查找结束\n");
  561.     Sleep(500);
  562.     system("cls");
  563.  
  564. }//search
  565. //------------------------------------------------------------------------------
  566. void list()                         //显示全部列表
  567. {
  568.     
  569.     char num[10]={"序号"},name[10]={"姓名"},tel[10]={"电话"};
  570.     node *p;
  571.     char x;
  572.     putchar(10);putchar(10);
  573.     p=head;
  574.     
  575.     if(!p->next)
  576.     {
  577.         printf("\n\n\n_______________ 通讯录目前为空!   是否开始新建? Y/N _________________\n\n");
  578.         x=getch();
  579.         if(x=='Y' || x=='y')
  580.         {
  581.             system("cls");
  582.             creat();
  583.         }
  584.         else
  585.         {
  586.             system("cls");
  587.             picture();
  588.         }
  589.     
  590.  
  591.     }
  592.     else
  593.     {
  594.         printf("          %s              %-12s                %-12s\n\n",num,name,tel);
  595.         do
  596.         {
  597.             p=p->next;
  598.             printf("_______________________________________________________________\n");
  599.             printf("        %s         %12s\n",p->count,p->name);
  600.             printf("                                                 %12s  \n",p->number);
  601.  
  602.         }while(p->next && p->next!=head->next);
  603.         printf("_______________________________________________________________\n");
  604.         printf("\n     共计%s   个人信息!\n\n",&head->prior->count[3]);
  605.     }
  606.  
  607. }// list
  608. //-------------------------------总控制台------------------------------------------
  609.  
  610. void control(int x,int p)   //X为操作类型,P为操作码(int)
  611. {
  612.     char temp[LENTH]={'\0'};
  613.     char c;
  614.     //char pchar[LENTH]={'\0'};
  615.     
  616.     node *q=head;
  617.     //sprintf(pchar,"%s",p);
  618.     /*
  619.     if(p!=atoi(pchar))
  620.     {
  621.         printf("need debug!!!  please check!\n ");
  622.         Sleep(100000);
  623.     }
  624.     */
  625.     q=head;                     
  626.                 
  627.     while(atoi(&q->count[5])!=p)                   //目标节点定位
  628.     {
  629.         q=q->next;
  630.     }
  631.     switch(x)
  632.     {
  633.         
  634.         case 21:                                           //修改用户姓名
  635.             {
  636.                 printf("请输入新的用户名:\n");
  637.                 scanf("%s",temp);
  638.             
  639.                 printf("\n确定修改名为%s的用户信息? Y/N\n",q->name);
  640.                 c=getch();
  641.                 if(c=='Y' || c=='y')
  642.                 {
  643.                     
  644.                     memset(q->name,'\0',LENTH);
  645.                     strcpy(q->name,temp);
  646.                     filesite();               //文件重写
  647.                     printf("修改成功!\n");
  648.                     Sleep(500);
  649.                     check();
  650.                     system("cls");
  651.                     
  652.                     list();
  653.                     facenode();
  654.                     
  655.  
  656.                 }
  657.                 else
  658.                 {
  659.                     printf("放弃存入!\n");
  660.                     Sleep(500);
  661.                     check();
  662.                     system("cls");
  663.                     check();
  664.                     list();
  665.                     facenode();
  666.                 }
  667.  
  668.                 break;
  669.             }
  670.         case 23:                                                  //修改用户电话号码
  671.             {
  672.                 printf("请输入新的电话号码:\n");
  673.                 scanf("%s",temp);
  674.                 printf("\n确定修改名为%s的用户信息? Y/N\n",q->name);
  675.                 c=getch();
  676.                 if(c=='Y' || c=='y')
  677.                 {
  678.                     
  679.                     memset(q->number,'\0',LENTH);
  680.                     strcpy(q->number,temp);
  681.                     filesite();               //文件重写
  682.                     printf("修改成功!\n");
  683.                     Sleep(500);
  684.                     check();
  685.                     system("cls");
  686.                 
  687.                     list();
  688.                     facenode();
  689.                     
  690.  
  691.                 }
  692.                 else
  693.                 {
  694.                     printf("放弃存入!\n");
  695.                     Sleep(500);
  696.                     check();
  697.                     system("cls");
  698.                     
  699.                     list();
  700.                     facenode();
  701.                 }
  702.                 break;
  703.             }
  704.         case 25:del(p);check();list();facenode();break;
  705.         //----------------------------以上为单个用户的修改删除----------------------------------------------
  706.         //返回当前列表
  707.         case 27:
  708.             {
  709.                 check();
  710.                 system("cls");
  711.                 list();
  712.                 facenode();
  713.                 break;
  714.             }
  715.         default: printf("error!\n");break;
  716.     }
  717. }
  718. //-----------------------------------------------------------------------
  719. void controlmain(int x)        //主菜单对应的功能
  720. {
  721.     switch(x)
  722.     {
  723.         case 8:  check();list();system("cls");check();list();facenode();break;
  724.         case 10: creat();system("cls");picture();break;
  725.         case 12: search();picture();break;
  726.         case 14: exit(0);break;
  727.         case 99: system("cls");picture();break;
  728.         default: printf("\n12345678\n");break;
  729.  
  730.     }//-------------------------以上为主导航界面需要--20以内-------------------------------------
  731. }
  732. //-----------------------------------------------------------------------
  733. void opration(int p)    //单个用户对应的操作         由facenode()调用
  734. {
  735.     int i=0;
  736.     char arr[8][60]={"\0",        //0
  737.         "    修改该用户姓名    ",  //1
  738.         "\0",     //2
  739.         "    修改该用户电话    ", //3
  740.         "\0",  //4
  741.         "    删除该用户资料    ",  //5
  742.         "\0",  //6
  743.         "         返回         ", //7
  744.     };
  745. printf("\n\n______________________________________________________\n");
  746.     arr[1][1]=16;
  747.     arr[1][2]=16;
  748.     arr[1][19]=17;
  749.     arr[1][20]=17;
  750.     system("cls");
  751.     printf("\n\n\n\n\n\n\n\n                    您想做什么?\n\n");
  752.     while(i<8)
  753.         printf("                    %s\n",arr[i++]);
  754.     faceopration(arr,p);   //p为要修改或删除节点序号,int类型,由facenode()中调用opration()函数传入
  755.  
  756. }
  757. void faceopration(char a[][60],int p)                //节点操作表
  758. {
  759.     int j=0;
  760.     char x='z';
  761.     int i=1,CC=1;
  762.  
  763.     while(x=getch())
  764.     {
  765.  
  766.         if(x=='\r')
  767.         {
  768.             CC=1;
  769.             while(a[CC][1]!=16)
  770.             {
  771.                 
  772.                 CC=CC+2;
  773.             }
  774.             control(CC+20,p);      //CC为操作码,P为要修改删除的节点序号int型由AC计数传入
  775.         }
  776.         if(x=='w' || x=='a' )
  777.         {
  778.  
  779.             if(a[1][1]==16 )
  780.             continue;
  781.             a[i][1]=' ';
  782.             a[i][2]=' ';
  783.             a[i][19]=' ';
  784.             a[i][20]=' ';
  785.             i=i-2;
  786.             a[i][1]=16;
  787.             a[i][2]=16;
  788.             a[i][19]=17;
  789.             a[i][20]=17;
  790.             j=0;
  791.             system("cls");
  792.         
  793.             printf("\n\n\n\n\n\n\n\n                    您想做什么?\n\n");
  794.             while(j<8)
  795.             {
  796.  
  797.                 printf("                    %s\n",a+j++);
  798.             }
  799.         }
  800.         else if(x=='s' || x=='d')
  801.         {
  802.  
  803.             if(a[7][1]==16)
  804.              continue;
  805.              a[i][1]=' ';
  806.              a[i][2]=' ';
  807.              a[i][19]=' ';
  808.              a[i][20]=' ';
  809.              i=i+2;
  810.              a[i][1]=16;
  811.              a[i][2]=16;
  812.              a[i][19]=17;
  813.              a[i][20]=17;
  814.  
  815.              j=0;
  816.              system("cls");
  817.         
  818.              printf("\n\n\n\n\n\n\n\n                    您想做什么?\n\n");
  819.              while(j<8)
  820.              {
  821.  
  822.                  printf("                    %s\n",a+j++);
  823.              }
  824.         }
  825.         else continue;
  826.     }
  827. }
  828.  
  829.  
  830. //////////////////////////////////////////////////////////////////////////////////////////////
  831. main()
  832. {
  833.    system("title 通讯录       --by Giant");
  834.    start();
  835.    picture();
  836.  
  837.  
  838. }
  839.     ///////////   //                                       //    //
  840.       //        //                                       //   //
  841.      //        ////////     ////////      /////////     //  // //////
  842.      //        //     //    //     //     //      //    ///// //
  843.     //        //     //    //     //     //      //    //  // ////
  844.    //        //     //    //     //     //      //    //     // //
  845. //        //     //     ///////////  //      //    //        // //////
  846. /////////////////////////////////////////////////////////////////////////////////////////////

C语言研究中心(www.dotcpp.com)

C语言网提供「C语言、C++、算法竞赛」在线课程,全部由资深研发工程师或ACM金牌大佬亲授课,更科学、全面的课程体系,以在线视频+在线评测的学习模式学习,学练同步,拒绝理论派,真正学会编程!还有奖学金等增值福利等你!

C语言网, 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明C语言通讯录(双向链表实现)管理系统
喜欢 (39)
[jinyangH@aliyun.com]
分享 (0)
发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
(3)个小伙伴在吐槽
  1. 好长的代码代码
    自安然我2018-03-16 10:53 回复
  2. 看不懂,哎,智商欠费
    jjstudyc20182019-03-18 18:14 回复
  3. 有没有视频讲解呢
    tongwang2022-04-04 00:38 回复