c语言的期末大作业——通讯录管理系统

(就让我硬水过去了OVO

代码通俗易懂

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
 typedef struct ADRESS
{
	char name[15];
	char units[20];
	char phone[15];
}adress;

adress r[10000];

int InputRecord(adress r[])//用来记录联系人记录 
{
	int n; 
	printf("\t\t\t\t          请输入添加的人数:");
	scanf("%d",&n);
	for(int i=0;i<n;i++)
	{
		printf("\t\t\t\t          姓名    单位    电话\n");
		printf("\t\t\t\t          ");
		scanf("%s %s %s",r[i].name,r[i].units,r[i].phone);
	}
	printf("\t\t\t\t          添加成功!!\n\n");
	return n; 
}


int DeleteRecord(adress r[],int n)// 删除联系人记录 
{
	int flag=0;
	adress comp;
	printf("\t\t\t\t          请输入想要删除人的信息:\n");
	printf("\t\t\t\t          姓名    单位    电话\n");
	printf("\t\t\t\t          ");
	scanf("%s %s %s",comp.name,comp.units,comp.phone);
	for(int i=0;i<n;i++)
	{
		if(strcmp(r[i].name ,comp.name )==0&&strcmp(r[i].units  ,comp.units ) ==0&&strcmp(r[i].phone  ,comp.phone  )==0)
		{
			flag=1;
			memset(r[i].name , 0, sizeof(r[i].name ));
			memset(r[i].phone , 0, sizeof(r[i].phone ));
			memset(r[i].units , 0, sizeof(r[i].units ));
		}
	 } 
	 if(flag)printf("\t\t\t\t          已经删除想要删除人的信息。\n\n");
	 else printf("\t\t\t\t          未找到想要删除人的信息!!\n\n"); 
	 return 0; 
}


int InsertRecord(adress r[],int n)//插入一个新的联系人 
{
	int pl; 
	adress ne;
	adress z;
	printf("\t\t\t\t          请输入想要插入位置\n:");
	printf("\t\t\t\t          若不存在此位置则自动放在最后\n");
	printf("\t\t\t\t          ");
	scanf("%d",&pl);
	printf("\t\t\t\t          请输入想要插入人的信息:\n");
	printf("\t\t\t\t          姓名    单位    电话\n");
	printf("\t\t\t\t          ");
	scanf("%s %s %s",ne.name,ne.units,ne.phone);


	if(pl>n)
	{
		strncpy(r[n].name ,ne.name ,strlen(ne.name )+1);
		strncpy(r[n].units  ,ne.units  ,strlen(ne.units  )+1);
		strncpy(r[n].phone ,ne.phone  ,strlen(ne.phone  )+1);
		n++; 
	}
	else 
	{
		
	  	for(int i=n;i>=pl;i--)
	  	{
	  		strncpy(r[i].name ,r[i-1].name ,strlen(r[i-1].name )+1);
	  		strncpy(r[i].units ,r[i-1].units ,strlen(r[i-1].units  )+1);
	  		strncpy(r[i].phone ,r[i-1].phone ,strlen(r[i-1].phone )+1);
	  	}
		strncpy(r[pl-1].name ,ne.name ,strlen(ne.name )+1);
		strncpy(r[pl-1].units  ,ne.units  ,strlen(ne.units  )+1);
		strncpy(r[pl-1].phone ,ne.phone  ,strlen(ne.phone  )+1);
		n++;
	}
		printf("\t\t\t\t          插入成功!!\n\n");
	return n;
}

void ListRecord(adress t[],int n)//查询联系人记录 
{
	printf("\t\t\t\t          姓名    单位    电话\n");
	int j=1;
	int flag=0;
	for(int i=0;i<=n;i++)
	{
		if(strcmp(t[i].name,"\0" )==0)continue;
		else flag=1;
		printf("\t\t\t\t     %d    %s     %s     %s\n",j++,t[i].name,t[i].units ,t[i].phone );
	}
	if(flag)printf("\t\t\t\t         已经显示全部信息!!\n\n");
	else printf("\t\t\t\t          未有联系人记录!!\n\n"); 
}


void SaveRecord(adress r[],int n)//保存联系人记录 
{
	FILE*fp;
	fp=fopen("I:\\adress.txt","w+");
	fprintf(fp,"\t\t\t\t          姓名    单位    电话\n");
	for(int i=0;i<n;i++)
	{
		
		fprintf(fp,"\t\t\t\t         %s     %s     %s\n",r[i].name,r[i].units ,r[i].phone );
	}
	fclose(fp);
		printf("\t\t\t\t          保存成功!!\n\n");
}


void Menu()	
{

	printf("\n\n\n");
	printf("\t\t\t\t****************************************\n");
	printf("\t\t\t\t*************通讯录管理系统*************\n");
	printf("\t\t\t\t========================================\n");
	printf("\t\t\t\t*            1.添加联系人信息          *\n");
	printf("\t\t\t\t*            2.删除联系人信息          *\n");
	printf("\t\t\t\t*            3.查询联系人信息          *\n");
	printf("\t\t\t\t*            4.插入联系人信息          *\n");
	printf("\t\t\t\t*            5.保存联系人信息          *\n");
	printf("\t\t\t\t*            0.退出系统                *\n");
	printf("\t\t\t\t========================================\n");
	printf("\t\t\t\t****************************************\n");
	printf("\t\t\t\t          请选择(0-5):");
}
int main()
{
	Menu();
	int pp;
	int ti=0;
	while(scanf("%d",&pp)!=EOF)
	{
		if(pp<0||pp>5)
		{
			printf("\t\t\t\t       请选择(0-5)以内的数:");
			continue; 
		}
		if(pp==0)
		{
				printf("\t\t\t\t          期待你的下次使用拜拜!!");
				break;
		 } 
		
		switch(pp)
		{
			case 1:ti=InputRecord(r);break;
			case 2:DeleteRecord(r,ti);break;
			case 3:ListRecord(r,ti);break;
			case 4:ti=InsertRecord(r,ti);break;
			case 5:SaveRecord(r,ti); break;
		}
		printf("\t\t\t\t       请选择(0-5)以内的数:");
	}
	
	return 0;
}

  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值