IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> C语言课程设计 通讯录管理系统 -> 正文阅读

[C++知识库]C语言课程设计 通讯录管理系统

#include <stdio.h> 
#define data a[i].no,a[i].name,a[i].phone,a[i].address

//函数声明 ----------------------------------------- 
void menu();//菜单
void menu_go(int n);//主菜单的实现
void add();//通讯信息录入
void show();//通讯信息显示
void del();//通讯信息删除 
void modify();//通讯信息修改
void lookup_menu();//通讯信息查询菜单 
void lookup_menu_go(int n);//通讯信息查询菜单的实现 
void lookup_no();//按编号查询 
void lookup_no();//按姓名查询 
void lookup_no();//按手机号码查询 
void insert();//通讯信息插入 
void order();//通讯信息排序 

//结构体 ------------------------------------------- 
struct list
{
	char no[20];//编号 
	char name[20];//姓名
	char phone[30];//电话号码 
	char address[50];//地址		
};
struct list a[100];
//--------------------------------------------------

//函数定义------------------------------------------ 
//主函数 
void main()
{
	int n = 1;
	while(n)
	{
		menu();
		printf("请输入想要执行的功能:");
		scanf("%d",&n);
		menu_go(n); 
	}
	
}

//菜单
void menu()	
{
	system("cls");
	printf("通讯录管理系统\n");
	printf("1.通讯信息录入\n");
	printf("2.通讯信息显示\n");
	printf("3.通讯信息删除\n");
	printf("4.通讯信息修改\n");
	printf("5.通讯信息查询\n");
	printf("6.通讯信息插入\n");
	printf("7.通讯信息排序\n");
	printf("0.退出程序\n");
}

//主菜单的实现
void menu_go(int n)
{
	if(n == 0)
                {
		return;
	}
	else
                {
		switch (n)
                                {
		case 1:add();break;
		case 2:show();printf("按任意键继续");getch();break;
		case 3:del();break;
		case 4:modify();break;
		case 5:lookup();break;
		case 6:insert();break;
		case 7:order();break;
		default:break;
		}
	}

}

//通讯信息录入 
void add()
{
	int i, m = 0;
	char ch[4] = "y";
	FILE* fp;
	if ((fp = fopen("data.txt", "a+")) == NULL)
	{
		printf("文件不存在\n");
		return;
	}
	while (!feof(fp))
	{
			fscanf(fp,"%s %s %s %s",&a[m].no,&a[m].name,&a[m].phone,&a[m].address);
			m++;
	}
	while(strcmp(ch, "Y") == 0 || strcmp(ch, "y") == 0)
	{
		printf("请输入联系人信息:\n");
		printf("编号:");
		scanf("%s", &a[m].no);
		printf("姓名:");
		scanf("%s", &a[m].name);
		printf("手机号码:");
		scanf("%s", &a[m].phone);
		printf("地址:");
		scanf("%s", &a[m].address);
		fprintf(fp,"\n%s %s %s %s",&a[m].no,&a[m].name,&a[m].phone,&a[m].address); 
		printf("姓名为%s的通讯信息保存成功,是否继续添加(y/n):", a[m].name);
		m++;
		scanf("%s",&ch);
	}
	fclose(fp);
}

//通讯信息显示
void show()
{
	FILE* fp;
	int i, m = 0;
	if ((fp = fopen("data.txt", "r")) == NULL)
	{ 
		printf("文件不存在\n");
		return;
	}
	while (!feof(fp))
	{
		fscanf(fp,"%s %s %s %s",&a[m].no,&a[m].name,&a[m].phone,&a[m].address);
		m++;
	}
	fclose(fp); 
	printf("通讯信息:\n");
	for (i = 0; i < m; i++)
	{
		printf("编号:%s	姓名:%s	手机号码:%s	地址:%s\n", data);
	}	
}

//通讯信息删除 
void del()
{
	show();
	FILE* fp;
	int i, j, m = 0;
	char name[20];
	int k = 1;
	char ch[2];
	if ((fp = fopen("data.txt", "r")) == NULL)
	{
		printf("文件不存在");
		return;
	}
	while (!feof(fp))
	{
		fscanf(fp,"%s %s %s %s",&a[m].no,&a[m].name,&a[m].phone,&a[m].address);
		m++;
	}
	fclose(fp);
	if (m == 0)
	{
		printf("文件中无通讯信息\n");
		return;
	}
	printf("输入要删除的联系人的姓名:");
	scanf("%s", &name);
	for (i = 0; i < m; i++)
		if (!strcmp(a[i].name,name))
		{
			printf("查找成功,确认是否删除(y/n):");
			scanf("%s", &ch);
			if (strcmp(ch, "Y") == 0 || strcmp(ch, "y") == 0)
			{
				for (j = i + 1; j < m; j++)
					a[j - 1] = a[j];
				m--;
				if ((fp = fopen("data.txt", "w+")) == NULL)
				{
					printf("文件不存在\n");
					return;
				}
				for (j = 0; j < m; j++)
				{
					if (fprintf(fp,"\n%s %s %s %s",&a[j].no,&a[j].name,&a[j].phone,&a[j].address) == EOF)
                                                                                {
						printf("写入文件失败,删除失败!");
					}
				}
				fclose(fp);
				printf("删除成功,按任意键继续");
				getch(); 
			}
			else
			{
				fclose(fp);
				printf("取消成功,按任意键继续");
				getch(); 
			}
			break;
		}
	if (i == m)
	{
		printf("查无此人,按任意键继续\n");
		getch();
	}
		
}

//通讯信息修改 
void modify()
{
	show();
	FILE* fp;
	int i, j, m = 0;
	char name[20];
	int k = 1;
	char ch[2];
	if ((fp = fopen("data.txt", "r")) == NULL)
	{
		printf("文件不存在");
		return;
	}
	while (!feof(fp))
	{
		fscanf(fp,"%s %s %s %s",&a[m].no,&a[m].name,&a[m].phone,&a[m].address);
		m++;
	}
	fclose(fp);
	if (m == 0)
	{
		printf("文件中无通讯信息\n");
		return;
	}
	printf("输入要修改的联系人的姓名:");
	scanf("%s", &name);
	for (i = 0; i < m; i++)
		if (!strcmp(a[i].name,name))
		{
			printf("查找成功,确认是否修改(y/n):");
			scanf("%s", &ch);
			if (strcmp(ch, "Y") == 0 || strcmp(ch, "y") == 0)
			{
				if ((fp = fopen("data.txt", "w+")) == NULL)
				{
				printf("文件打开失败");
				getch();
				return;
				}
				printf("修改他的信息为:\n");
				printf("编号:");
				scanf("%s", &a[i].no);
				printf("姓名:");
				scanf("%s", &a[i].name);
				printf("手机号码:");
				scanf("%s", &a[i].phone);
				printf("住址:");
				scanf("%s", &a[i].address);			
				for (j = 0; j < m; j++)
				{
					if (fprintf(fp,"\n%s %s %s %s",&a[j].no,&a[j].name,&a[j].phone,&a[j].address) == EOF)
					{
						printf("写入文件失败,删除失败!");
					}
				}
				fclose(fp);
				printf("修改成功,按任意键继续");
				getch(); 
			}
			else
			{
				fclose(fp);
				printf("取消成功,按任意键继续");
				getch(); 
			}
			break;
		}
	if (i == m)
	{
		printf("查无此人,按任意键继续\n");
		getch();
	}
	fclose(fp);
}

//通讯信息查询
void lookup()
{
	int n;
	n = 1;
	while(n)
	{
	lookup_menu();
	printf("输入要执行的功能:");
	scanf("%d",&n);
	lookup_menu_go(n);
	}

} 

//查询菜单 
void lookup_menu()
{
	printf("\n");
	printf("1.按编号查询\n"); 
	printf("2.按姓名查询\n"); 
	printf("3.按手机号码查询\n");
	printf("0.退出\n"); 
}

//查询菜单的实现
void lookup_menu_go(int n)
{
	if(n == 0)
	{
		return;
	}
	switch (n)
	{
	case 1:lookup_no();break;
	case 2:lookup_name();break;
	case 3:lookup_phone();break;
	default:break;
	}
} 

//实现查询的具体函数-------------------- 
//按编号查询 
void lookup_no()
{
	FILE* fp;
	int i, m = 0;
	char no[20];
	if ((fp = fopen("data.txt", "r")) == NULL)
	{
		fclose(fp);
		printf("文件不存在\n");
		return;
	}
	while (!feof(fp))
	{
		fscanf(fp,"%s %s %s %s",&a[m].no,&a[m].name,&a[m].phone,&a[m].address);
		m++;
	}	
	fclose(fp);
	if (m == 0)
	{
		printf("文件中无通讯信息\n");
		return;
	}
	printf("请输入联系人的编号:");
	scanf("%s", &no);
	for (i = 0; i < m; i++)
		if (!strcmp(a[i].no, no))
		{
			printf("查询成功,该联系人通讯信息:\n");
			printf("编号:%s	姓名:%s	手机号码:%s	地址:%s\n", data);
			printf("按任意键继续\n"); 
			getch(); 
			break;
		}
	if (i == m)
	{
		printf("查无此人,按任意键继续\n");
		getch();
	}
		
	fclose(fp);
}
//按姓名查询
void lookup_name()
{
	FILE* fp;
	int i, m = 0;
	char name[20];
	if ((fp = fopen("data.txt", "r")) == NULL)
	{
		fclose(fp);
		printf("文件不存在\n");
		return;
	}
	while (!feof(fp))
	{
		fscanf(fp,"%s %s %s %s",&a[m].no,&a[m].name,&a[m].phone,&a[m].address);
		m++;
	}
	fclose(fp);
	if (m == 0)
	{
		printf("文件中无通讯信息\n");
		return;
	}
	printf("请输入联系人的姓名:");
	scanf("%s", &name);
	for (i = 0; i < m; i++)
		if (!strcmp(a[i].name, name))
		{
			printf("查询成功,该联系人通讯信息:\n");
			printf("编号:%s	姓名:%s	手机号码:%s	地址:%s\n", data);
			printf("按任意键继续\n"); 
			getch(); 
			break;
		}
	if (i == m)
	{
		printf("查无此人,按任意键继续\n");
		getch();
	}
	fclose(fp);
}
//按手机号查询
void lookup_phone()
{
	FILE* fp;
	int  i, m = 0;
	char phone[30];
	if ((fp = fopen("data.txt", "r")) == NULL)
	{
		fclose(fp);
		printf("文件不存在!\n");
		return;
	}
	while (!feof(fp))
	{
		fscanf(fp,"%s %s %s %s",&a[m].no,&a[m].name,&a[m].phone,&a[m].address);
		m++;
	}
	fclose(fp);
	if (m == 0)
	{	
		printf("文件中无通讯信息\n");
		return;
	}
	printf("请输入联系人的手机号:");
	scanf("%s", &phone);
	for (i = 0; i < m; i++)
		if (!strcmp(a[i].phone, phone))\
		{
			printf("查询成功,该联系人通讯信息:\n");
			printf("编号:%s	姓名:%s	手机号码:%s	地址:%s\n", data);
			printf("按任意键继续\n"); 
			getch(); 
			break;
		}
	if (i == m)
	{
		printf("查无此人,按任意键继续\n");
		getch();
	}
	fclose(fp);
}
//-------------------------------------- 

//通讯信息插入 
void insert()
{
	FILE* fp;
	int i, j, k, m = 0;
	char name[20];
	if ((fp = fopen("data.txt", "r")) == NULL)
	{
		printf("文件不存在\n");
		return;
	}
	while (!feof(fp))
	{
		fscanf(fp,"%s %s %s %s",&a[m].no,&a[m].name,&a[m].phone,&a[m].address);
		m++;
	}
	fclose(fp);
	if (m == 0)
	{
		printf("文件中无通讯信息\n");
		return;
	}
	printf("请输入插入在哪个的通讯人之后(输入姓名):");
	scanf("%s", &name);
	for (i = 0; i < m; i++)
		if (!strcmp(a[i].name, name))
			break;
	if (m == i)
	{
		printf("查无此人");
		fclose(fp);
		return;
	}
	for (j = m - 1; j > i; j--)
		a[j + 1] = a[j];
	printf("请输入要插入的通讯录信息:\n");
	printf("编号:");
	scanf("%s", &a[i + 1].no);
	printf("姓名:"); 
	scanf("%s", &a[i + 1].name);
	printf("电话号码:");
	scanf("%s", &a[i + 1].phone);
	printf("地址:");
	scanf("%s", &a[i + 1].address);
	if ((fp = fopen("data.txt", "w+")) == NULL)
	{
		printf("文件无法打开");
		return;
	}
	for (k = 0; k <= m; k++)
		if (fprintf(fp,"\n%s %s %s %s",&a[k].no,&a[k].name,&a[k].phone,&a[k].address) == EOF)
		{
			printf("保存失败,插入失败,按任意键继续");
			getch();
		}
	fclose(fp);
}

//通讯信息排序 
void order()
{
	FILE* fp;
	struct list l;
	int i = 0, j = 0, m = 0;
	if ((fp = fopen("data.txt", "r")) == NULL)
	{
		printf("文件不存在\n");
		return;
	}
	while (!feof(fp))
	{
		fscanf(fp,"%s %s %s %s",&a[m].no,&a[m].name,&a[m].phone,&a[m].address);
		m++;
	}
	fclose(fp);
	if (m == 0)
	{
		printf("文件中无通讯信息\n");
		return;
	}
	for (i = 0; i < m - 1; i++)
		for (j = i + 1; j < m; j++)
			if (atoi(a[i].no) > atoi(a[j].no))
			{
				l = a[i];
				a[i] = a[j];
				a[j] = l;
			}
	if ((fp = fopen("data.txt", "w+")) == NULL)
	{
		printf("文件不存在\n");
		return;
	}
	for (i = 0; i < m; i++)
		if (fprintf(fp,"\n%s %s %s %s",&a[i].no,&a[i].name,&a[i].phone,&a[i].address) == EOF)
		{
			printf("保存文件失败,排序失败\n");
		}
	fclose(fp);
	printf("\n排序成功,排序后的通讯信息为:\n");
	show();
	printf("按任意键继续"); 
	getch(); 
} 

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-01-08 13:48:12  更:2022-01-08 13:48:15 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 10:40:28-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码