ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

C语言实现手机通讯录

2021-11-03 20:03:06  阅读:197  来源: 互联网

标签:temp void 联系人 mailList C语言 length 通讯录 printf 手机


简单的使用结构体,总共实现了6个功能。

使用vs2019进行编译,如果使用别的编译器可以将第一行删掉。

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<time.h>
#include<math.h>
#include<Windows.h>

typedef struct person {
	char name[100];
	char numb[100];
	char gender[100];
	char age[100];
	char address[100];

}person;

typedef struct addressBook {
	person p[1000];
	int temp_size;
}addressBook;

addressBook mailList;

int beginList() {
	int temp_1 = 0;
	printf("+———————————————————————————+\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("|                    0.退出                            |\n");
	printf("+———————————————————————————+\n");
	printf("请输入你要进行的选项:");
	(void)scanf("%d", &temp_1);
	return temp_1;
}

void initList(addressBook* mailList) {//初始化
	mailList->temp_size = 0;
	memset(mailList->p, 0, sizeof(mailList->p));//将数组中的元素全置为0
}

void addList(addressBook* mailList) {//添加联系人
	char Name[100] = { 0 };
	char Numb[100] = { 0 };
	char Gender[100] = { 0 };
	char Age[100] = { 0 };
	char Address[100] = { 0 };
	int temp_1 = 0;

	printf("----------------增加联系人-----------\n");
	while (1) {
		printf("请输入联系人姓名:");
		(void)scanf("%s", &Name);
		strcpy(mailList->p[mailList->temp_size].name, Name);
		printf("请输入联系人电话:");
		(void)scanf("%s", &Numb);
		strcpy(mailList->p[mailList->temp_size].numb, Numb);
		printf("请输入联系人性别:");
		(void)scanf("%s", &Gender);
		strcpy(mailList->p[mailList->temp_size].gender, Gender);
		printf("请输入联系人年龄:");
		(void)scanf("%s", &Age);
		strcpy(mailList->p[mailList->temp_size].age, Age);
		printf("请输入联系人地址:");
		(void)scanf("%s", &Address);
		strcpy(mailList->p[mailList->temp_size].address, Address);
		mailList->temp_size++;

		printf("-----按1继续------------按2返回------\n");
		(void)scanf("%d", &temp_1);
		if (temp_1 == 1) {
			temp_1 = 0;
			system("cls");
		}
		else {
			break;
		}
	}
}

void deleteList(addressBook* mailList) {//删除联系人
	printf("----------------删除联系人-----------\n");
	int temp_3 = 0;
	int temp_1 = 0;
	while (1) {
		printf("请输入所要删除联系人序号(1<=num<=%d):\n", mailList->temp_size);

		if (mailList->temp_size == 0) {//判断通讯录是否为空
			printf("通讯录为空!\n");
			printf("----------------按2返回--------------\n");
			while (1) {
				(void)scanf("%d", &temp_1);
				if (temp_1 == 2) {
					break;
				}
				else {
					printf("输入错误请重新输入!\n");
				}
			}
			break;
		}

		while (1) {
			(void)scanf("%d", &temp_3);//输入相关序号进行删除
			if (temp_3 >= 1 && temp_3 <= mailList->temp_size) {
				if (temp_3 == mailList->temp_size) {
					mailList->temp_size--;
					break;
				}
				else {
					mailList->p[temp_3 - 1] = mailList->p[mailList->temp_size - 1];
					mailList->temp_size--;
					break;
				}
			}
			else {
				printf("输入错误请重新输入!\n");
			}
		}

		printf("-----按1继续------------按2返回------\n");//判断继续还是返回
		(void)scanf("%d", &temp_1);
		if (temp_1 == 1) {
			temp_1 = 0;
			system("cls");
		}
		else {
			break;
		}
	}
}

void alterList(addressBook* mailList) {//查看联系人
	int length = 0;
	int temp_2 = 0;
	while (1) {

		for (int i = 0; i < mailList->temp_size - 1; i++) {//由小到大排序
			for (int j = 0; j < mailList->temp_size - 1 - i; j++) {
				if (strcmp(mailList->p[j].name, mailList->p[j + 1].name) > 0) {
					mailList->p[mailList->temp_size + 1] = mailList->p[j];
					mailList->p[j] = mailList->p[j + 1];
					mailList->p[j + 1] = mailList->p[mailList->temp_size + 1];
				}
			}
		}

		printf("+----------------------------查看联系人------------------------------+\n");
		printf("|-联系人姓名----联系人电话----联系人性别----联系人性别----联系人地址-|\n");
		while (length != mailList->temp_size) {
			printf("| %6s %13s %13s %13s %13s     |\n", mailList->p[length].name, mailList->p[length].numb, mailList->p[length].gender, mailList->p[length].age, mailList->p[length].address);
			length++;
		}
		printf("+--------------------------------------------------------------------+\n");
		printf("\n");
		printf("+------------------------------按1返回-------------------------------+\n");
		(void)scanf("%d", &temp_2);
		if (temp_2 == 1) {
			break;
		}
	}
}

void findList(addressBook* mailList) {//修改联系人
	char Name[100] = { 0 };
	char Numb[100] = { 0 };
	char Gender[100] = { 0 };
	char Age[100] = { 0 };
	char Address[100] = { 0 };
	int temp_1 = 0;
	int temp_2 = 0;
	printf("+---------------修改联系人---------------+\n");
	printf("\n");
	while (1) {

		printf("+-----------------参照表-----------------+\n");
		printf("\n");
		int length = 0;
		printf("+-联系人序号----联系人姓名----联系人电话----联系人性别----联系人性别----联系人地址-+\n");
		while (length != mailList->temp_size) {
			printf("|%6d %13s %13s %13s %13s %13s      |\n", length + 1, mailList->p[length].name, mailList->p[length].numb, mailList->p[length].gender, mailList->p[length].age, mailList->p[length].address);
			length++;
		}
		printf("+----------------------------------------------------------------------------------+\n");

		printf("\n");
		printf("请输入所修改联系人序号(输入*不修改):");
		(void)scanf("%d", &temp_1);

		printf("请输入联系人姓名:");
		(void)scanf("%s", &Name);
		if (Name[0] != '*') {
			strcpy(mailList->p[temp_1 - 1].name, Name);
		}

		printf("请输入联系人电话:");
		(void)scanf("%s", &Numb);
		if (Numb[0] != '*') {
			strcpy(mailList->p[temp_1 - 1].numb, Numb);
		}

		printf("请输入联系人性别:");
		(void)scanf("%s", &Gender);
		if (Gender[0] != '*') {
			strcpy(mailList->p[temp_1 - 1].gender, Gender);
		}

		printf("请输入联系人年龄:");
		(void)scanf("%s", &Age);
		if (Age[0] != '*') {
			strcpy(mailList->p[temp_1 - 1].age, Age);
		}

		printf("请输入联系人地址:");
		(void)scanf("%s", &Address);
		if (Address[0] != '*') {
			strcpy(mailList->p[temp_1 - 1].address, Address);
		}

		printf("-----按1继续------------按2返回------\n");
		(void)scanf("%d", &temp_2);
		if (temp_2 == 1) {
			temp_2 = 0;
			system("cls");
		}
		else {
			break;
		}

	}
}

void alterOnlyList(addressBook* mailList) {
	char Name[100] = { 0 };
	int temp_2 = 0;
	while (1) {
		int length = 0;
		printf("+----------------------------查看联系人------------------------------+\n");
		printf("\n");
		printf("请输入所查找联系人姓名:");
		(void)scanf("%s", &Name);
		if (length == mailList->temp_size) {
			printf("通讯录为空!\n");
			printf("+------------------------------按2返回-------------------------------+\n");
			(void)scanf("%d", &temp_2);
			if (temp_2 == 2) {
				break;
			}
		}
		printf("\n");
		while (1) {
			if (strcmp(mailList->p[length].name, Name) == 0) {
				printf("+-联系人姓名----联系人电话----联系人性别----联系人性别----联系人地址-+\n");
				printf("| %6s %13s %13s %13s %13s     |\n", mailList->p[length].name, mailList->p[length].numb, mailList->p[length].gender, mailList->p[length].age, mailList->p[length].address);
				break;
			}
			else {
				length++;
			}
			if (length > mailList->temp_size) {
				printf("该联系人不存在!\n");
				break;
			}
		}
		printf("+--------------------------------------------------------------------+\n");
		printf("\n");
		printf("+------------------------按1继续----按2返回--------------------------+\n");
		(void)scanf("%d", &temp_2);
		if (temp_2 == 2) {
			break;
		}
		else {
			temp_2 = 0;
			system("cls");
		}
	}
}

void allDeleteList(addressBook* mailList) {
	printf("----------------删除联系人-----------\n");
	int temp_2 = 0;
	int temp_1 = 0;
	while (1) {
		printf("您确认要删除所有联系人吗?(输入 1 直接清除,输入 2 返回目录):");
		(void)scanf("%d", &temp_2);
		if (temp_2 == 1) {
			mailList->temp_size = 0;
			break;
		}
		else {
			break;
		}
	}
}

int main() {
	//1.定义信息结构
	//2.定义通讯录结构
	//3.初始化
	initList(&mailList);
	//4.创建界面
	int choose = 5;
	//定义函数指针
	typedef void(*func)(addressBook* mailList);
	func Mail[] = {
		NULL,
		addList,
		deleteList,
		alterList,
		findList,
		alterOnlyList,
		allDeleteList
	};

	while (1) {
		choose = beginList();
		if (choose == 0) {
			break;
		}
		if (choose < 7 && choose > 0) {
			Mail[choose](&mailList);
			system("cls");
		}
		else {
			printf("输入错误请重新输入:\n");
			system("cls");
		}
	}

	return 0;
}

标签:temp,void,联系人,mailList,C语言,length,通讯录,printf,手机
来源: https://blog.csdn.net/weixin_49312527/article/details/121129072

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有