用C语言制作简单通讯录系统(功能包括增查改删)

来源参考:https://blog.csdn.net/qq_43512497/article/details/89200330

几点说明:

1、我稍微精简了一下,而且改正了一些错误。

2、代码其实仍旧不完善,由于对文件的操作还不是很熟,一开始如果contact.txt中没有内容的话,一开始读取记录的时候会出现一个无用的联系人记录。

3、代码是可以编译运行的 

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

typedef struct{
	long id;            //编号
	char name[10];      //姓名
	char telenum[15];   //电话
	char address[20];   //住址
}Person;

Person p[30];
static int n = 0;

void Menu();
void AddPerson(Person * p); //添加联系人,结构体指针
void Display(Person * p);
void DelePerson(Person * p);
void ModifyPerson(Person * p);
void SearchPerson(Person * p);
void ReadFile(Person*p);
void WriteFile(Person* p);

void Menu(){
	int c;
	ReadFile(p); 
	printf("欢迎进入通讯录系统\n");
	printf("1.显示所有联系人\n");
	printf("2.添加联系人\n");
	printf("3.删除联系人\n");
	printf("4.修改联系人\n");
	printf("5.查询联系人\n");
	printf("6.退出\n");
	int choice;
	for(;;)
	{
		printf("请输入您的选择:\n");
		scanf("%d",&choice);
		switch(choice)
		{
		case 1:Display(p);
			break;
		case 2:AddPerson(p);    
			break;
		case 3:DelePerson(p);
			break;
		case 4:ModifyPerson(p);
			break;
		case 5:SearchPerson(p);
			break;
		case 6:
			WriteFile(p);
			exit(0);
		}
	}
}

int main(void)
{
	Menu();
	return 0;
}

void AddPerson(Person *p)
{
	printf("ID:\n");
	scanf("%ld",&p[n].id);
	printf("姓名:\n");
	scanf("%s",&p[n].name);
	printf("电话:\n");
	scanf("%s",&p[n].telenum);
	printf("地址:\n");
	scanf("%s",&p[n].address);
	n++;
}

void Display(Person* p)
{
	printf("----------------展示所有的联系人信息----------------\n");
	int i;
	for(i=0;i<n;i++)
	{	
		printf("%d.\n",i+1);
		printf("ID:%ld\n姓名:%s\n电话号码:%s\n家庭住址:%s\n\n"\
	    ,p[i].id, p[i].name, p[i].telenum, p[i].address);

	}
	printf("----------------------------------------------------\n");
}

void DelePerson(Person * p)
{
	int num;
	printf("请输入联系人的编号:");
	scanf("%d",&num);
	if((num-1) >= n)
		printf("超出通讯录范围。");
	int j;
	for(j=(num-1);j<n-1;j++)
	{
		p[j].id = p[j+1].id;
		strcpy(p[j].name, p[j+1].name);
		strcpy(p[j].telenum, p[j+1].telenum);
		strcpy(p[j].address, p[j+1].address);
	}
	printf("删除成功!\n");
	n--;
}
void ModifyPerson(Person * p)
{
	int i;
	printf("请输入要修改的联系人编号:\n");
	scanf("%d",&i);
	printf("请输入修改后的ID:\n");
	scanf("%ld",&p[i-1].id);
	printf("请输入修改后的名字:\n");
	scanf("%s",&p[i-1].name);
	printf("请输入修改后的电话号码:\n");
	scanf("%s",&p[i-1].telenum);
	printf("请输入修改后的地址:\n");
	scanf("%s",&p[i-1].address);
	printf("修改完成!\n\n");
	
}
void SearchPerson(Person * p)
{
	char name[20];
	printf("请输入你要查询的名字:\n");
	scanf("%s", name);
	int i =0;
	while(strcmp(p[i].name, name)!=0 && i<n)
		i++;
	if(i==n)
		printf("无此人在通讯录。");
	else
	{
		printf("\n查询成功!\n\n");
		printf("ID:%ld\n姓名:%s\n电话号码:%s\n家庭住址:%s\n\n"\
	    ,p[i].id, p[i].name, p[i].telenum, p[i].address);
	}
}

void ReadFile(Person*p)
{
	FILE *fp;
	int i = 0;
	char ch; 
	fp=fopen("contact.txt","r");
    if (fp == NULL)
    {
        printf("Cannot open the file!\n");
        exit(0);
    }
	while(!feof(fp))
	{	
		fscanf(fp,"%ld%s%s%s", &p[i].id, p[i].name,p[i].telenum,p[i].address);	
		i++;
		n++;
	}
	fclose(fp);
}

void WriteFile(Person* p)
{
	FILE * fp;
	int i;
	fp = fopen("contact.txt", "w");
	for(i = 0; i < n-1; i++)
	{
		fprintf(fp,"%ld\n%s\n%s\n%s\n", p[i].id, p[i].name, p[i].telenum, p[i].address);
	}
	fprintf(fp,"%ld\n%s\n%s\n%s", p[n-1].id, p[n-1].name, p[n-1].telenum, p[n-1].address);
	fclose(fp);
}

我的第一篇博客,继续努力 !

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用C语言来实现通讯录管理系统。以下是一个简单的示例代码,包括增加、删除、修改和查询通讯录用户的功能: ```c #include <stdio.h> #include <string.h> #define MAX_CONTACTS 100 // 最大通讯录用户数 struct Contact { char name[50]; char phone[20]; }; struct Contact contacts[MAX_CONTACTS]; // 通讯录数组 int numContacts = 0; // 当前通讯录用户数 // 增加通讯录用户 void addContact() { if (numContacts >= MAX_CONTACTS) { printf("通讯录已满,无法添加新用户!\n"); return; } printf("请输入用户姓名:"); scanf("%s", contacts[numContacts].name); printf("请输入用户电话:"); scanf("%s", contacts[numContacts].phone); numContacts++; printf("用户添加成功!\n"); } // 删除通讯录用户 void deleteContact() { char name[50]; printf("请输入要删除的用户姓名:"); scanf("%s", name); int i, found = 0; for (i = 0; i < numContacts; i++) { if (strcmp(contacts[i].name, name) == 0) { found = 1; break; } } if (found) { // 将最后一个用户覆盖到要删除的位置 contacts[i] = contacts[numContacts - 1]; numContacts--; printf("用户删除成功!\n"); } else { printf("未找到该用户!\n"); } } // 修改通讯录用户 void editContact() { char name[50]; printf("请输入要修改的用户姓名:"); scanf("%s", name); int i, found = 0; for (i = 0; i < numContacts; i++) { if (strcmp(contacts[i].name, name) == 0) { found = 1; break; } } if (found) { printf("请输入新的用户姓名:"); scanf("%s", contacts[i].name); printf("请输入新的用户电话:"); scanf("%s", contacts[i].phone); printf("用户修改成功!\n"); } else { printf("未找到该用户!\n"); } } // 查询通讯录用户 void searchContact() { char name[50]; printf("请输入要查询的用户姓名:"); scanf("%s", name); int i, found = 0; for (i = 0; i < numContacts; i++) { if (strcmp(contacts[i].name, name) == 0) { found = 1; break; } } if (found) { printf("姓名:%s\n电话:%s\n", contacts[i].name, contacts[i].phone); } else { printf("未找到该用户!\n"); } } int main() { int choice; while (1) { printf("\n通讯录管理系统\n"); printf("-----------------\n"); printf("1. 增加用户\n"); printf("2. 删除用户\n"); printf("3. 修改用户\n"); printf("4. 查询用户\n"); printf("0. 退出\n"); printf("-----------------\n"); printf("请输入你的选择:"); scanf("%d", &choice); switch (choice) { case 1: addContact(); break; case 2: deleteContact(); break; case 3: editContact(); break; case 4: searchContact(); break; case 0: printf("谢谢使用,再见!\n"); return 0; default: printf("无效的选择!\n"); } } } ``` 这个示例代码实现了一个简单通讯录管理系统,用户可以通过选择菜单来执行增加、删除、修改和查询通讯录用户的操作。通讯录用户以姓名和电话的形式存储在结构体数组中,最多支持100个用户。可以根据需要进行扩展和改进。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值