C语言通讯录管理系统课程设计分享!

本文实例为大家分享了C语言通讯录管理系统课程设计,供大家参考,具体内容如下

  #include <stdio.h>   #include <stdlib.h>   #include <windows.h>    struct Sign{       char name[8];       char sex[4];       char birthday[12];       char phone[11];       char postcode[7];       char addr[30];       struct Sign *next;     }pe;      char PhoneCop[4] ;      //结构体    struct Sign *p1,*p2,*head;   FILE *fp;   void ShowMenu(){     system("color 1F");     printf("#################     通讯录管理系统 v1.0  ###################n");     printf("#####################################################################n");     printf("#                                  #n");     printf("#      1-----------------信息录入-------------------      #n");     printf("#                                  #n");     printf("#      2-----------------信息查询-------------------      #n");     printf("#                                  #n");     printf("#      3-----------------信息查看-------------------      #n");     printf("#                                  #n");     printf("#      4-----------------信息修改-------------------      #n");     printf("#                                  #n");     printf("#      5-----------------信息统计-------------------      #n");     printf("#                                  #n");     printf("#      6-----------------退出系统-------------------      #n");     printf("#                                  #n");     printf("#####################################################################n");     printf("#   POWER BY *************  兰州理工大学   201407      #n");     printf("#####################################################################n");        };   void HeadShow()   {     printf("#################     通讯录管理系统 v1.0  ###################n");     printf("---------------------------------------------------------------------n");      }    void FileLoading()   {       if((fp=fopen("txl.dat","rb"))==NULL)     {       printf("文件操作错误,请检查是否有权限操作文件!");       Sleep(3000);       exit(1);     }     p1=(struct Sign*)malloc(sizeof(struct Sign));      p1->next=NULL;     head=p1;     while(!feof(fp))     {       if(fread(p1,sizeof(struct Sign),1,fp)!=1)         break;       p2=(struct Sign*)malloc(sizeof(struct Sign));       p2->next=NULL;       p1->next=p2;       p1=p2;     }     fclose(fp);   }   void add()   {       char ch;      if((fp==fopen("txl.dat","ab+"))!=1)     {       printf("文件打开失败");       exit(1);     }     while(1)     {  system("cls");       printf("请输入__n");       p2=(struct Sign*)malloc(sizeof(struct Sign));       p2->next=NULL;        printf("姓名:");scanf("%s",pe.name);       printf("性别:");scanf("%s",pe.sex);       printf("生日:");scanf("%s",pe.birthday);       printf("电话号码:");scanf("%s",pe.phone);       printf("邮编:");scanf("%s",pe.postcode);       printf("地址:");scanf("%s",pe.addr);       strcpy(p1->name,pe.name);       strcpy(p1->sex,pe.sex);       strcpy(p1->birthday,pe.birthday);       strcpy(p1->phone,pe.phone);       strcpy(p1->postcode,pe.postcode);       strcpy(p1->addr,pe.addr);       p1->next=p2;       p1=p2;           if(fwrite(&pe,sizeof(struct Sign),1,fp)!=1)         printf("写入错误");       printf("输入E或e来结束输入?");       getchar();       ch=getchar();       if(ch=='e'||ch=='E')         break;        }     fclose(fp);   }   void SaveChange()   {       if((fp==fopen("txl.dat","w"))!=1)     {       printf("文件打开失败");       exit(1);     }     p1=head;     while(p1->next!=NULL)     {       if(fwrite(p1,sizeof(struct Sign),1,fp)!=1)         printf("写入错误");       p1=p1->next;            }      fclose(fp);   }   void AllShow()   {     HeadShow();     printf("%10.8s %6.6s %10.10s %11.4s %9.7s %16.6s n","姓名","性别","生日","电话","邮编","地址");       printf("---------------------------------------------------------------------n");     p1=head;     while(p1->next!=NULL)     {       printf("%10.8s %6.6s %10.12s %11.11s %9.7s %16.16s n",p1->name,p1->sex,p1->birthday,p1->phone,p1->postcode,p1->addr);       p1=p1->next;            }         }      void AllNum()   {  int i=0;      HeadShow();     printf("     共有记录条数为:  n");      printf("---------------------------------------------------------------------n");     p1=head;       while(p1->next!=NULL)     {       i++;       p1=p1->next;            }      printf("     %d         n",i);     printf("---------------------------------------------------------------------n");          printf("     共有联通用户为:  n");      printf("---------------------------------------------------------------------n");     p1=head;     i=0;       while(p1->next!=NULL)     {       strncpy(PhoneCop,p1->phone,3);       if(strcmp(PhoneCop,"130")==0||strcmp(PhoneCop,"131")==0||strcmp(PhoneCop,"132")==0||strcmp(PhoneCop,"155")==0||strcmp(PhoneCop,"156")==0||strcmp(PhoneCop,"185")==0||strcmp(PhoneCop,"186")==0)         i++;       p1=p1->next;            }      printf("     %d         n",i);     printf("---------------------------------------------------------------------n");     printf("     共有移动用户为:  n");      printf("---------------------------------------------------------------------n");     p1=head;     i=0;       while(p1->next!=NULL)     {       strncpy(PhoneCop,p1->phone,3);       if(strcmp(PhoneCop,"134")==0||strcmp(PhoneCop,"135")==0||strcmp(PhoneCop,"136")==0||strcmp(PhoneCop,"137")==0||strcmp(PhoneCop,"138")==0||strcmp(PhoneCop,"139")==0||strcmp(PhoneCop,"150")==0||strcmp(PhoneCop,"151")==0||strcmp(PhoneCop,"152")==0||strcmp(PhoneCop,"157")==0||strcmp(PhoneCop,"158")==0||strcmp(PhoneCop,"159")==0||strcmp(PhoneCop,"187")==0||strcmp(PhoneCop,"188")==0)         i++;       p1=p1->next;            }      printf("     %d         n",i);     printf("---------------------------------------------------------------------n");       printf("     共有电信用户为:  n");      printf("---------------------------------------------------------------------n");     p1=head;     i=0;       while(p1->next!=NULL)     {       strncpy(PhoneCop,p1->phone,3);       if(strcmp(PhoneCop,"180")==0||strcmp(PhoneCop,"189")==0||strcmp(PhoneCop,"133")==0||strcmp(PhoneCop,"153")==0)         i++;       p1=p1->next;            }      printf("     %d         n",i);     printf("---------------------------------------------------------------------n");   }   void CheckFace()   {  int Check_key;      printf("###########     通讯录管理系统 v1.0  ################n");     printf("############################################################n");     printf("#                             #n");     printf("#         1------按姓名查询            #n");     printf("#                             #n");     printf("#         2------按电话号码查询          #n");     printf("#                             #n");     printf("#         3------综合查询             #n");     printf("#                             #n");     printf("#         4------退出查询模块           #n");     printf("#                             #n");     printf("#                             #n");     printf("#                             #n");     printf("############################################################n");     printf("#  POWER BY *************  兰州理工大学   201407   #n");     printf("############################################################n");        }   void Selelctname()   {  system("cls");      HeadShow();     printf("%10.8s %6.6s %10.10s %11.4s %9.7s %16.6s n","姓名","性别","生日","电话","邮编","地址");       printf("---------------------------------------------------------------------n");     p1=head;     char FindName[8];     int i=0;      printf("请输入要查询的姓名:");     scanf("%s",&FindName);     while(p1->next!=NULL)     {       if(strcmp(p1->name,FindName)==0)          {printf("%10.8s %6.6s %10.10s %11.14s %9.7s %16.16s n",p1->name,p1->sex,p1->birthday,p1->phone,p1->postcode,p1->addr);         i++;         }       p1=p1->next;            }      printf("共 %d 条n",i);     system("pause");    }       void Selelctphone()   {  system("cls");      HeadShow();     printf("%10.8s %6.6s %10.10s %11.4s %9.7s %16.6s n","姓名","性别","生日","电话","邮编","地址");       printf("---------------------------------------------------------------------n");     p1=head;     char phone[11];     int i=0;      printf("请输入要查询的电话号码:");     scanf("%s",&phone);     while(p1->next!=NULL)     {       if(strcmp(p1->phone,phone)==0)          {printf("%10.8s %6.6s %10.10s %11.4s %9.7s %16.6s n",p1->name,p1->sex,p1->birthday,p1->phone,p1->postcode,p1->addr);         i++;         }       p1=p1->next;            }      printf("共 %d 条n",i);     system("pause");    }    void Selelctall()   {  system("cls");      HeadShow();     printf("%10.8s %6.6s %10.10s %11.4s %9.7s %16.6s n","姓名","性别","生日","电话","邮编","地址");       printf("---------------------------------------------------------------------n");     p1=head;     char all[30];     int i=0;      printf("请输入任意一项要查询的内容:");     scanf("%s",&all);     while(p1->next!=NULL)     {       if(strcmp(p1->name,all)==0||strcmp(p1->sex,all)==0||strcmp(p1->birthday,all)==0||strcmp(p1->phone,all)==0||strcmp(p1->postcode,all)==0||strcmp(p1->addr,all)==0)          {printf("%10.8s %6.6s %10.10s %11.11s %9.7s %16.16s n",p1->name,p1->sex,p1->birthday,p1->phone,p1->postcode,p1->addr);         i++;         }       p1=p1->next;            }      printf("共 %d 条n",i);     system("pause");    }    void Change()   {  char ChangeName[8];      int changekey;     system("cls");     HeadShow();     int i,y=0;            p1=p2=head;        printf("请输入你要修改的条目的姓名:");     scanf("%s",&ChangeName);       getchar();      while(p1!=NULL)     {       if(strcmp(p1->name,ChangeName)==0)         {  printf("%10.8s %6.6s %10.10s %11.11s %9.7s %16.16s n",p1->name,p1->sex,p1->birthday,p1->phone,p1->postcode,p1->addr);         printf("您要修改的是这条记录吗?1---是|2---否n");         scanf("%d",&i);         if(i==1)         { y=1;         printf("你要修改的通讯录为:n");         printf("%10.8s %6.6s %10.10s %11.11s %9.7s %16.16s n",p1->name,p1->sex,p1->birthday,p1->phone,p1->postcode,p1->addr);         printf("请选择您的操作   1---删除|2---修改n");         scanf("%d",&changekey);          if(changekey==1)           {           if(p1==head)                 {head=p1->next;             free(p1);            }            else            {           p2->next=p1->next;           free(p1);             SaveChange();                       }                  }        else if(changekey==2)       {         printf("姓名:");scanf("%s",p1->name);         printf("性别:");scanf("%s",p1->sex);         printf("生日:");scanf("%s",p1->birthday);         printf("电话:");scanf("%s",p1->phone);         printf("邮编:");scanf("%s",p1->postcode);         printf("地址:");scanf("%s",p1->addr);          SaveChange();         printf("n OK!  n");       }           }                    }     else if(strcmp(p1->name,ChangeName)&&(p1->next)==NULL)       {         i=0;                     }       p2=p1;          p1=p1->next;      }         if(y==0)       {       printf("对不起,没有找到要修改的通讯名单,请检查你要修改的姓名是否正确n");     }               system("pause");   }   void ExirShow()   {     system("color 0E");     printf("###########     通讯录管理系统 v1.0  ################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");     printf("############################################################n");     printf("#  POWER BY *************  兰州理工大学   201407   #n");     printf("############################################################n");        }   void ErrorShow()   {  int errortime=5;     system("color 0E");     for(errortime=5;errortime>0;errortime--)       {printf("r输入错误!请仔细检查!将在%d秒后返回",errortime);        Sleep(1000);       }        }   int main()   {  int key;     int Ex_key;      int Check_key;     char a[10];     if((fp=fopen("txl.dat","ab"))==NULL)     {       printf("文件操作错误,请检查是否有权限操作文件!");       Sleep(3000);       exit(1);     }     fclose(fp);      FileLoading();     while(1){     ShowMenu();     gets(a);     key=atoi(a);     if(key==1)       {system("cls");       add();       }     else if(key==2)       {  system("cls");                  system("color 0E");       while(1)          {         system("color 0E");          CheckFace();         printf("请输入你的选择:n");         gets(a);         Check_key=atoi(a);         if(Check_key==1)           Selelctname()         ;         else if(Check_key==2)           Selelctphone()         ;         else if(Check_key==3)           Selelctall()         ;         else if(Check_key==4)                break;         else         ErrorShow();         system("cls");         system("color 1F");          getchar();                }                       }          else if(key==3)   //2013级 耿。。     {  system("color 0E");        system("cls");        AllShow();       system("pause");     }     else if(key==4)       {         system("color 0A");          Change();                     }      else if(key==5)       {       system("color 5F");        system("cls");        AllNum();       system("pause");        }     else if(key==6)        {       system("cls");       ExirShow();        Sleep(1000);       exit(0);       }            else             ErrorShow();       system("cls");       system("color 1F");        getchar();     }           }     

比较简单就是用到了链表和文件操作,其中统计联通和移动人数的那里其实只用一个循环就可以。

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/c-cdevelopment/482203.html

(0)
上一篇 2020年11月9日
下一篇 2020年11月9日

精彩推荐