简单的朋友通讯录软件

这篇博客介绍了一个用C语言编写的简单朋友通讯录软件,具备添加、查找、删除和显示所有联系人记录的功能。通讯录信息存储在文本文件中,并与文件操作同步更新。博主邀请读者交流代码和完善思路。
摘要由CSDN通过智能技术生成

用C语言编写朋友通讯录软件

题目要求:编写朋友通讯录软件,实现添加、查找、删除、显示所有记录的功能。每条个人信息记录包括:姓名、性别、手机号、电子邮件、生日、爱好等。可根据实际通讯录情况编辑以上个人信息。
具体要求:
朋友通讯录信息存放在一个文件中(.txt),当进行添加、删除操作时,对应文件中的信息也发生相应的变化。

功能实现

#include<stdio.h>
#include<string.h>
#include<Windows.h>
typedef struct tongxunlu
{
	char name[30];
	char sex[20];
	char number[30];
	char email[30];
	char shengri[30];
	char hobby[30];
	struct tongxunlu *next;
}tong;
void ListInsert(tong *L, tong *p)//节点
{
	tong *q = L;
	p->next = NULL;
	while (q->next != NULL)
	{
		q = q->next;
	}
	q->next = p;
}

void ADD(tong *p)//添加
{
	struct tongxunlu *q, *n = p;
	struct tongxunlu *h = p->next;
	int flag = 0;
	system("cls");
	q = (struct tongxunlu*)malloc(sizeof(struct tongxunlu));
	q->next = NULL;
	printf("\t请输入你添加的用户的姓名,性别,电话,电子邮件,生日及爱好:\n");
	scanf("%s %s %s %s %s %s", q->name, q->sex, q->number, q->email, q->shengri, q->hobby);
	getchar();
	while (h != NULL)
	{
		if (strcmp(h->number, q->number) == 0)
		{
			flag = 1;
			printf("\t该账号已存在\n");
			Sleep(1000);
			ADD(p);
			break;
		}
		h = h->next;
	}
	while (n->next != NULL)
	{
		n = n->next;
	}
	n->next = q;
	if (flag == 0)
	{
		printf("\t添加成功\n");
		printf("\t 姓名,性别,电话,电子邮件,生日及爱好\n");
		printf("\t%s %s %s %s %s %s\n", q->name, q->sex, q->number, q->email, q->shengri, q->hobby);
		printf("\t按回车键返回菜单\n");
	}
	else
		printf("\t添加失败\n");
	getchar();
	menu(p);
}
void Dele(tong *p)//删除
{
	struct tongxunlu *q = p->next;
	struct tongxunlu *n = p;
	char num[20];
	int flag = 0;
	system("cls");
	printf("\t请输入你要删除的电话号码:");
	scanf("%s", num);
	while (q != NULL)
	{
		if (strcmp(q->number, num) == 0)
		{
			flag = 1;
			n->next = q->next;
			free(q);
			break;
		}
		n = q;
		q = q->next;
	}
	if (flag != 1)
	{
		printf("\t无该用户信息\n");
	}
	else
	{
		printf("\t删除成功\n");
	}
	menu(p);
}
void chaxun(tong *p)//查找好友
{
	struct tongxunlu *n = p->next;
	char name[20];
	int flag = 0;
	system("cls");
	printf("\t欢迎进入联系人查询界面\n");
	printf("\t请输入客户名称:\n");
	scanf("%s", name);
	while (n != NULL)
	{
		if (strcmp(n->name, name) == 0)
		{
			flag = 1;
			printf("\t\t\t该用户信息:\t\n");
			printf("姓名  性别 电话号码  电子邮件  生日  爱好\n");
			printf("%s %s %s %s %s %s", n->name, n->sex, n->number, n->email, n->shengri, n->hobby);
		}
		n = n->next;
	}
	if (flag == 0)
	{
		printf("\t无该用户信息\n");
	}
	menu(p);
}
void savetongxunluFile(tong *p)//文件保存
{
	FILE *fp;
	tong *q = p->next;
	if ((fp = fopen("tongxunlu.txt", "w")) == NULL)
	{
		printf("不能打开此文件,请按回车键退出\n");
		exit(0);
	}
	while (p)
	{
		fprintf(fp, "%s %s %s %s %s %s \n", p->name, p->sex, p->number, p->email, p->shengri, p->hobby);
		p = p->next;
	}
	fclose(fp);
}
void readtongxunluput(tong *p)//链表读取
{
	FILE *fp;
	tong *n;
	char name[30];
	char sex[20];
	char number[30];
	char email[30];
	char shengri[30];
	char hobby[30];
	fp = fopen("tongxunlu.txt", "r");
	if (fp == NULL)
	{
		fp = fopen("tongxunlu.txt", "w+");
	}
	else
	{
		while (!feof(fp))
		{
			fscanf(fp, "%s %s %s %s %s %s \n", name, sex, number, email, shengri, hobby);
			n = (tong*)malloc(sizeof(tong));
			strcpy(n->name, name);
			strcpy(n->sex, sex);
			strcpy(n->number, number);
			strcpy(n->email, email);
			strcpy(n->shengri, shengri);
			strcpy(n->hobby, hobby);
			ListInsert(p, n);//插入新节点 
		}
	}
	fclose(fp);
}
void denglu(tong *p)//机主登陆
{
	char b[20], c[20];
	system("cls");
	printf("\t欢迎登录通讯录系统\n");
	printf("请输入账号和密码:\n");
	printf("\t账号:");
	scanf("%s", b);
	if (strcmp(b, "zcy123") != 0)
	{
		printf("输入账号错误。");
		Sleep(1000);
		menu(p);
	}
	else
	{
		printf("\t密码:");
		scanf("%s", c);
		if (strcmp(c, "123456") != 0)
		{
			printf("输入密码错误!");
			Sleep(1000);
			menu(p);
		}
		else
		{
			system("cls");
			menu(p);
		}
	}
}
void dayin(tong *p)//打印所有好友信息
{
	struct tongxunlu *n = p->next;
	system("cls");
	if (n == NULL)
	{
		printf("\t暂无信息打印\n");
	}
	else
	{
		while (n != NULL)
		{
			printf("姓名  性别 电话号码  电子邮件  生日  爱好\n");
			printf("%s %s %s %s %s %s\n", n->name, n->sex, n->number, n->email, n->shengri, n->hobby);
			n = n->next;
		}
	}
	menu(p);
}

int menu(struct tongxunlu *p)//主菜单
{
	int z;
	printf("\t欢迎登录系统管理员界面\n");
	printf("\t 1.添加用户\n");
	printf("\t 2.删除用户\n");
	printf("\t 3.查找用户信息\n");
	printf("\t 4.显示所有记录信息\n");
	printf("\t 5.退出\n");
	scanf("%d", &z);
	switch (z)
	{
	case 1:ADD(p); break;
	case 2:Dele(p); break;
	case 3:chaxun(p); break;
	case 4:dayin(p); break;
	case 5:savetongxunluFile(p); exit(0);
	default:printf("\t输入不合法\n");
	}
}
int main()
{
	struct tongxunlu *p;
	p = (struct tongxunlu*)malloc(sizeof(struct tongxunlu));
	p->next = NULL;
	readtongxunluput(p);
	denglu(p);
	system("pause");
	return 0;
}

代码可能还存在一些小瑕疵,希望能和大家一起交流。第一次写博客,多多支持。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值