电话薄管理系统学生时代小作品源码(C语言版)

 

/*****************************************************************************/

/*

电话薄管理系统

姓名:danyuan              学校:湖南理工学院信息学院              专业: 信息工程

 

                                                                                                                                                                                 */

/*****************************************************************************/

 

 

 

/*电话簿管理程序,具有加入、删除、显示和查询电话号码的功能

要求:1). 除有加入、删除、显示和查询功能外,还允许修改用户姓名、电话。

      2). 具有缺省查询方式,即查询时只输入姓名的首字母,所有符合这一条件的电话资料均在屏幕上显示出来

*/

 

#include <stdio.h>

#include<stdlib.h>

typedef struct tel{

         char name[20];

         char phone_number1[20];       //家庭电话

         char phone_number2[20];//手机电话

         int flage;                              //设置标志量

         struct tel *next;

}Tel;

typedef struct node {

         Tel *head;

}Vnode;

 

void init(Vnode *V)

{

         //V=(Vnode*)malloc(sizeof(Vnode));

         V->head=NULL;

}

 

void addperson(Vnode *V)

{

         Tel *p=(Tel*)malloc(sizeof(Tel));

         p->next=V->head;

         V->head=p;

         printf("请输入该联系人的姓名: ");

         scanf("%s",p->name);

         printf("请输入该联系人的手机电话: ");

         scanf("%s",p->phone_number2);

         printf("如果想要输入家庭电话请输入1,否则输入0:");

         int a;

         scanf("%d",&a);

         if(a==1)

         {

                   printf("请输入该联系人的家庭电话: ");

                   scanf("%s",p->phone_number1);

                   p->flage=1;

         }

         else

                   p->flage=0;

}

int junge(char*a,char*b)          //判断姓名是否一致(按名字查找)

{

         char *p=a,*q=b;

         while(*p!='\0')

         {

                   if(*p==*q)

                   {

                            p++;

                            q++;

                           

                            continue;

                   }

                   else

                            break;

         }

         if(*p=='\0'&&*q=='\0')

                   return 1;

         else

                   return 0;

}

 

void delet_person(Vnode *V)

{

         Tel *p=V->head,*t;

         int a;

         char s[20];

         printf("请输入要删除的联系人名字:");

         scanf("%s",s);

         if(p)

         {

                   if(!p->next)

                   {

                            if(junge(p->name,s))

                            {

                                     printf("找到该人,确认删除该人请输入1,否则按0:\n");

                                     scanf("%d",&a);

                                     if(a==1)

                                     {

                                               V->head=NULL;

                                               printf("已删除%s的信息\n",p->name);

                                               free(p);

                                     }

                            }

                   }

                   else

                            while(p)

                            {

                                     if(junge((p->next)->name,s))

                                     {

                                               t=p->next;

                                               printf("找到该人,确认删除该人请输入1,否则按0\n");

                                               scanf("%d",&a);

                                               if(a==1)

                                               {                                            

                                                        printf("已删除%s的信息\n",t->name);

                                                        p->next=p->next->next;

                                                        free(t);

                                               }

                                               break;

                                     }

                                     p=p->next;

                            }

         }

         else

                   printf("你的电话薄里还没有存储任何联系人!\n");

}

void show_one_person(Vnode *V)

{

         Tel *p=V->head;

         char s[20];

         printf("请输入要查找的联系人名字:");

         scanf("%s",s);

         if(p)

         {

                   while(p)

                            {

                                     if(junge(p->name,s))

                                     {

                                               printf("\t\t找到该人!\t\t\n");

                                               if(p->flage==0)

                                                        printf("\t姓名:%s\t手机号码:%s\t家庭电话:无\n",p->name,p->phone_number2);

                                               else

                                                        printf("\t姓名:%s\t手机号码:%s\t家庭电话:%s\n",p->name,p->phone_number2,p->phone_number1);

                                               break;

                                     }

                                     p=p->next;

                            }

                   if(!p)

                            printf("没有找到该联系人!\n");

         }

         else

                   printf("你的电话薄里还没有存储任何联系人!\n");

}

void show_all(Vnode *V)

{

         printf("********************************************************************\n");

         Tel *p=V->head;

         while(p)

         {

                   if(p->flage==0)

                            printf("\t姓名:%s\t手机号码:%s\t家庭电话:无\n",p->name,p->phone_number2);

                   else

                            printf("\t姓名:%s\t手机号码:%s\t家庭电话:%s\n",p->name,p->phone_number2,p->phone_number1);

                   p=p->next;

         }

         printf("********************************************************************\n");

}

 

void change(Vnode *V)

{

         Tel *p=V->head;

         int a;

         char s[20];

         printf("请输入要更改的联系人名字:");

         scanf("%s",s);

         while(p)

         {

                   if(junge(p->name,s))

                   {

                            printf("更改姓名请输入1,更改手机号码请输入2,更改家庭电话请输入3!\n");

                            scanf("%d",&a);

                            if(a==1)

                            {

                                     printf("请输入姓名:");

                                     scanf("%s",p->name);

                            }

                            else if(a==2)

                            {

                                     printf("请输入手机号码:");

                                     scanf("%s",p->phone_number2);

                            }

                            else if(a==3)

                            {

                                     printf("请输入家庭电话:");

                                     scanf("%s",p->phone_number1);

                            }

                            break;

                   }

                   p=p->next;

         }

         if(!p)

                   printf("没有找到该联系人!\n");

}

 

int junge2(char*a,char*b)                 //判断姓是否一致(按姓查找)

{

         char *p=a,*q=b;

         while(*p!='\0')

         {

                   if(*p==*q)

                   {

                            p++;

                            q++;

                           

                            continue;

                   }

                   else

                            break;

         }

         if(*p=='\0')

                   return 1;

         else

                   return 0;

}

 

void in_clear_search(Vnode *V)

{

         char a[20];

         Tel *p=V->head;

         printf("请输入模糊查找的第一个字:");

         scanf("%s",a);

         while(p)

         {

                   if(junge2(a,p->name))

                   {

                            if(p->flage==0)

                                     printf("\t姓名:%s\t手机号码:%s\t家庭电话:无\n",p->name,p->phone_number2);

                            else

                                    printf("\t姓名:%s\t手机号码:%s\t家庭电话:%s\n",p->name,p->phone_number2,p->phone_number1);

                   }

                   p=p->next;

         }

}

 

void main()

{

//      FILE *sp;

//      sp=freopen("in1.txt","r",stdin);

         Vnode V;

         int Operate='$';

         init(&V);

         while(1)

         {

                   printf("\t\t请输入指令\t\t\n\t\t1.添加联系人\t\t\n\t\t2.删除联系人\t\t\n\t\t3.查找并显示一个联系人\t\t\n");

                   printf("\t\t4.显示所有联系人\t\t\n\t\t5.更改联系人的信息\t\t\n\t\t6.首字母模糊查找联系人信息\t\t\n\t\t0.退出系统\n");

                   scanf("%d",&Operate);

                   switch(Operate)

                   {

                   case 1: addperson(&V);   break;

                   case 2:      delet_person(&V);   break;

                   case 3: show_one_person(&V);       break;

                   case 4:      show_all(&V);  break;

                   case 5:      change(&V);     break;

                   case 6:      in_clear_search(&V);       break;

                   default:;

                   }

                   if(Operate==0)

                            break;

         }

         //fclose(sp);

}

/**************************************************************2013年6月23日作****************************************************************************/

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
电话簿管理系统是一个用于存储和管理联系人信息的程序。在C语言中,可以使用结构体和链表来实现电话簿管理系统。 首先,我们可以定义一个结构体来表示联系人的信息,包括姓名、电话号码等字段。例如: ```c struct Contact { char name[50]; char phone[20]; // 其他字段... }; ``` 然后,我们可以使用链表来存储联系人信息。每个节点表示一个联系人,包含一个指向下一个节点的指针。可以定义一个指向链表头节点的指针来表示整个电话簿。例如: ```c struct Node { struct Contact contact; struct Node* next; }; struct Node* phoneBook = NULL; // 链表头节点指针 ``` 接下来,我们可以实现一些基本的功能,如添加联系人、删除联系人、查找联系人等。以下是一个简单的示例: ```c // 添加联系人 void addContact(const char* name, const char* phone) { struct Node* newNode = (struct Node*)malloc(sizeof(struct Node)); strcpy(newNode->contact.name, name); strcpy(newNode->contact.phone, phone); newNode->next = phoneBook; phoneBook = newNode; } // 删除联系人 void deleteContact(const char* name) { struct Node* currNode = phoneBook; struct Node* prevNode = NULL; while (currNode != NULL) { if (strcmp(currNode->contact.name, name) == 0) { if (prevNode == NULL) { phoneBook = currNode->next; } else { prevNode->next = currNode->next; } free(currNode); return; } prevNode = currNode; currNode = currNode->next; } } // 查找联系人 struct Contact* findContact(const char* name) { struct Node* currNode = phoneBook; while (currNode != NULL) { if (strcmp(currNode->contact.name, name) == 0) { return &(currNode->contact); } currNode = currNode->next; } return NULL; } ``` 以上只是一个简单的电话簿管理系统的示例,你可以根据实际需求进行扩展和修改。例如,可以添加编辑联系人、显示所有联系人等功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值