[c语言]实现通讯录基础版

正文

本文将实现通讯录的基本操作:
可以在通讯录中添加1000个联系人
包含联系人姓名,性别,年龄,电话,家庭住址等信息
可以实现以下功能
1.添加联系人信息
2.删除指定联系人信息
3.查找指定联系人信息
4.修改指定联系人信息
5.显示所有联系人信息
6.清空所有联系人
7.以名字排序所有联系人
8.清屏
代码如下:

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

typedef struct PersonInfo //创建个人信息结构体
{
	 char name[1024];
	 char sex[1024];
	 char age[1024];
	 char phone[1024];
	 char address[1024];
}PersonInfo;

#define SIZE 1000  //最大联系人数量
typedef struct AddrBook  //通讯录
{
	 PersonInfo person_info[1024];  //通讯录人数数组
	 int size;//实际联系人数量
}AddrBook;

AddrBook g_addr_book;//创建一个通讯录类型的全局变量
void Init()
{
	 int i = 0;
	 g_addr_book.size = 0;
	 for(i = 0; i < SIZE; i++)
	 {
		  strcpy(g_addr_book.person_info[i].name,"");
		  strcpy(g_addr_book.person_info[i].sex,"");
		  strcpy(g_addr_book.person_info[i].age,"");
		  strcpy(g_addr_book.person_info[i].phone,"");
		  strcpy(g_addr_book.person_info[i].address,"");
 	 }
}

void AddPersonInfo()
{
	 if(g_addr_book.size >= SIZE)
	 {
		  printf("通讯录已满,添加失败!\n");
		  return;
	 }
	 printf("请输入联系人信息\n");
	 printf("请输入联系人名:\n");
	 scanf("%s", g_addr_book.person_info[g_addr_book.size].name);
	 printf("请输入联系人性别:\n");
	 scanf("%s", g_addr_book.person_info[g_addr_book.size].sex);
	 printf("请输入联系人年龄:\n");
	 scanf("%s", g_addr_book.person_info[g_addr_book.size].age);
	 printf("请输入联系人电话号码:\n");
	 scanf("%s", g_addr_book.person_info[g_addr_book.size].phone);
	 printf("请输入联系人地址:\n");
	 scanf("%s", g_addr_book.person_info[g_addr_book.size].address);
	 g_addr_book.size++;
	 printf("添加成功\n");
	 return;
}
void DelPersonInfo()
{
	 int num = 0;
	 int count = 0;
	 printf("删除联系人信息\n");
	 printf("请输入要删除人的编号\n");
	 scanf("%d",&num);
	 while (num < 0 || num >= g_addr_book.size)
	 {
		  printf("输入的编号超出范围,请重新输入\n");
		  scanf("%d", &num);
	 }
	 if (num != g_addr_book.size - 1)
	 {
		  strcpy(g_addr_book.person_info[num].name,
		   g_addr_book.person_info[g_addr_book.size - 1].name);
		  strcpy(g_addr_book.person_info[num].phone,
		   g_addr_book.person_info[g_addr_book.size - 1].sex);
		  strcpy(g_addr_book.person_info[num].sex,
		   g_addr_book.person_info[g_addr_book.size - 1].age);
		  strcpy(g_addr_book.person_info[num].age,
		   g_addr_book.person_info[g_addr_book.size - 1].phone);
		  strcpy(g_addr_book.person_info[num].address,
		   g_addr_book.person_info[g_addr_book.size - 1].address);
	 }
	 g_addr_book.size--;
	 count++;
	 printf("删除成功,共删除了%d条信息\n",count);
	 return;
}
void FindPersonInfo()
{
	 char name[1024] = {0};
	 int count = 0;
	 int i = 0;
	 printf("查找联系人:\n");
	 printf("请输入用户名:\n");
	 scanf("%s",name);
	 for (i = 0; i < g_addr_book.size; i++)
	 {
		  if (0 == strcmp(name, g_addr_book.person_info[i].name))
		  {
			   printf("找到一条记录,性别为:%s,年龄为:%s,电话号码为:%s,家庭住址为:%s\n",
			    g_addr_book.person_info[i].sex,g_addr_book.person_info[i].age,
			    g_addr_book.person_info[i].phone,g_addr_book.person_info[i].address);
			   count++;
	 	  }
	 }
	 if (0 == count)
	 {
	 	 printf("未找到相关信息\n");
	 }
	 else
	 {
	 	 printf("查找成功,共查找到%d条记录\n",count);
	 }
}
void ModifyPersonInfo()
{
	 int num = 0;
	 printf("修改联系人信息\n");
	 printf("请输入要修改人的编号:\n");
	 scanf("%d",&num);
	 while (num < 0 || num >= g_addr_book.size)
	 {
		  printf("输入编号超出范围,请重新输入:\n");
		  scanf("%d",&num);
	 }
	 printf("请输入新的联系人姓名:\n");
	 scanf("%s",g_addr_book.person_info[num].name);
	 printf("请输入新的联系人性别:\n");
	 scanf("%s", g_addr_book.person_info[num].sex);
	 printf("请输入新的联系人年龄:\n");
	 scanf("%s", g_addr_book.person_info[num].age);
	 printf("请输入新联系人的电话号码:\n");
	 scanf("%s",g_addr_book.person_info[num].phone);
	 printf("请输入新的联系人家庭住址:\n");
	 scanf("%s", g_addr_book.person_info[num].address);
	 printf("修改成功\n");
}
void DisplayPersonInfo()
{
	 int i = 0;
	 printf("打印所有联系人信息\n");
	 for (i = 0; i < g_addr_book.size; i++)
	 {
		  printf("编号:[%d] 姓名:[%s] 性别:%s 年龄:%s  电话号码:%s 家庭住址:%s\n",
		   i,g_addr_book.person_info[i].name,
		   g_addr_book.person_info[i].sex, g_addr_book.person_info[i].age,
		   g_addr_book.person_info[i].phone,g_addr_book.person_info[i].address);
	 }
	 printf("打印完成,共打印了%d条信息\n",g_addr_book.size);
}
void ClearPersonInfo()
{
	 char input[1024] = { 0 };
	 printf("清除所有用户信息!\n");
	 printf("你是否确定要删除所有信息? y:确定,按其他键取消\n");
	 scanf("%s",input);
	 if (0 != strcmp(input, "y")) //注意当输入不是y或者n时的情况
	 {
		  printf("已取消删除操作!\n");
		  return;
	 }
	 else
	 {
		  g_addr_book.size = 0;
		  printf("清除完成!\n");
	 }
}
void SortPersonInfo()
{
	 int i = 0;
	 int j = 0;
	 printf("将联系人进行排序\n");
	 for (i = 0; i < g_addr_book.size - 1; i++)//冒泡排序
	 {
		  for (j = 0; j < g_addr_book.size - i - 1; j++)
		  {
			   if (strcmp(g_addr_book.person_info[j].name,
			    g_addr_book.person_info[j + 1].name) > 0)
			   {
				    PersonInfo temp = g_addr_book.person_info[j];
				    g_addr_book.person_info[j] =
				     g_addr_book.person_info[j + 1];
				    g_addr_book.person_info[j + 1] = temp;
	 	 	   }
	 	 }
	 }
	 printf("排序完成!\n");
	 DisplayPersonInfo();
	 return;
}

int menu()
{
	 int input = 0;
	 printf("&&&&&&&&&&&&&&&&&&&&&&&&\n");
	 printf("1.添加联系人信息\n");
	 printf("2.删除指定联系人信息\n");
	 printf("3.查找指定联系人信息\n");
	 printf("4.修改指定联系人信息\n");
	 printf("5.显示所有联系人信息\n");
	 printf("6.清空所有联系人\n");
	 printf("7.以名字排序所有联系人\n");
	 printf("8.清屏\n");
	 printf("0.退出\n");
	 printf("&&&&&&&&&&&&&&&&&&&&&&&&\n");
	 scanf("%d", &input);
	 while (input < 0 || input > 8)
	 {
		  printf("输入有误,请重新输入:\n");
		  scanf("%d", &input);
	 }
	 return input;
}

enum
{
	 EXIT,    //退出
	 ADD,    //添加
	 DEL,    //删除
	 FIND,    //查找
	 MODIFY,    //修改
	 DISPLAY,   //显示
	 CLEAR,     //清空
	 SORT,    //排序
	 CLEAN,    //清屏
};

int main()
{
	 int choice = 0;
	 Init();//初始化通讯录变量
	 while (1)
	 {
		  choice = menu();
		  switch (choice)
		  {
			  case EXIT:
				   printf("已退出\n");
				   return 0;
				   break;
			  case ADD:
				   AddPersonInfo();
				   break;
			  case DEL:
				   DelPersonInfo();
				   break;
			  case FIND:
				   FindPersonInfo();
				   break;
			  case MODIFY:
				   ModifyPersonInfo();
				   break;
			  case DISPLAY:
				   DisplayPersonInfo();
				   break;
			  case CLEAR:
				   ClearPersonInfo();
				   break;
			  case SORT:
				   SortPersonInfo();
				   break;
			  case CLEAN:
				   system("cls");
			  	   break;
		  }
	 }
return 0;
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
通讯录是一款具有基本通讯信息管理功能的系统。包括基本添加,修改,删除,查询和输出等功能。其中联系组是为了更好地管理联系人信息,如常用的组有亲戚,家人,朋友,同学等。 1、 组信息管理模块: ◎ 添加新组信息:当用户添加一个新组时,这个新组将被添加到group.dat文件的末尾,如果添加的组已存在则返回出错信息。 ◎ 修改已有组信息:用户首先输入所要修改的联系组,然后系统查询该联系组存不存在。若存在,则要求用户输入新的信息,并进行替换;若不存在,则返回错误信息。 ◎ 删除已有组:用户首先输入所要删除的组,然后系统查询该组存不存在。如果存在,则先删除该组下的所有联系人的信息,再删除该组;如果所要删除的信息不存在,则返回错误信息。 ◎ 删除所有已有组信息:该操作没有输入值。如果原来group.dat文件中没有联系组,返回错误信息;否则,删除所有联系组,同时删除各个组下的联系人信息。 ◎ 组查询功能:按用户输入的查询条件,在group.dat文件中查询相关信息。若存在 符合条件的组,则输出相应的组信息;若不存在,则返回出错信息。 ◎ 输出所有组信息:将group.dat中所有组全部输出来。 2、 联系人信息管理模块: ◎ 添加联系人:当用户添加一个新联系人时,这个联系人的信息将被添加到group.dat文件的末尾,若添加的联系人已存在,则返回出错信息。添加一个联系人时,他所属的组成员个数同时增加1。 ◎ 修改联系人:用户首先输入所要修改的联系人,然后系统查询该联系人存不存在。若存在,则要求用户输入新的信息,并进行替换;若不存在,则返回错误信息。 ◎ 删除联系人:用户首先输入所要删除的联系人,然后系统查询该联系人存不存在。如果存在,则删除,并返回相关信息;如果所要删除的信息不存在,则返回错误信息。删除一个联系人时,他所属的组成员个数同时减少1。 ◎ 删除所有联系人:该操作没有输入值。如果原来linkman.dat文件中没有联系联系人,返回错误信息;否则,删除所有联系人信息。 ◎ 联系人查询功能: 按用户输入的查询条件,在linkman.dat文件中查询相关信息。若存在符合条件的联系人,则输出相应的联系人信息;若不存在,则返回出错信息。 而且提供不同种类的查询,如:按联系人姓名来查询,按联系人电话来查询,按联系人所在的组来查询。 ◎ 输出所有联系人信息:将所有联系人信息输出。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值