我用这个C作业应付了期末实验

C语言-------通讯录

  这是我接触C一学期之后所作的一个小编程,希望能帮助大家,免去大家一些不必要的烦恼。

运行

下面是代码是用来建立原有通讯录的。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
const int MaxLen=500;
char fName[20]="tel.txt";
int Len;
int n;
typedef struct telephone
{
	char name[20];      //名字 
	int group;          //群组 1.朋友  2.同事  3.家人  4.其他 
	char home[15];      //住宅电话 
	char mobile[15];    //手机 
	char email[15];     //Email 
	char add[20];       //地址 
	char memo[20];      //备注 
} tel;
tel tele[100];
main(){
    int i;
	tel *p;
	void PrintHead();
	printf("输入人数:");
	scanf("%d",&n);
	int insert();
	PrintHead();
	insert();
	return 0;
}
int insert()
{
	FILE *p;
	if((p=fopen("E:\\tel.txt","w"))==NULL)  //通讯录数据存储在E盘中。
	{
		printf("can't find the file!");
		exit(0);
	}
	for(int i=0;i<n;i++)
	{
		scanf("%s%d%s%s%s%s%s",tele[i].name,&tele[i].group,tele[i].home,tele[i].mobile,tele[i].email,tele[i].add,tele[i].memo);
		fprintf(p,"%s  %d  %s  %s  %s  %s  %s\n",tele[i].name,tele[i].group,tele[i].home,tele[i].mobile,tele[i].email,tele[i].add,tele[i].memo);
	}
	fclose(p);
}
void PrintHead()
{
	printf("姓名  群组  住宅电话  手机  Email  地址  备注"); 
	printf("\n");
}

执行如下图:
在这里插入图片描述  代码说明:执行完这个程序后,会在E盘中创建出一个通讯录。
在这里插入图片描述
 之后是对通讯录操作的源代码:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
const int MaxLen=500;
char fName[20]="tel.txt";
int Len=0;
int n;
typedef struct telephone
{
	char name[20];      //名字 
	int group;          //群组 1.朋友  2.同事  3.家人  4.其他 
	char home[15];      //住宅电话 
	char mobile[15];    //手机 
	char email[15];     //Email 
	char add[20];       //地址 
	char memo[20];      //备注 
} tel;
tel tele[100]; tel t[1];tel t1[1];
//typedef struct index
//{
//	int len;  //数组长度
//	Tel *tel[MaxLen];  //指针数组 
//}Index; 
int main(int argc, char *argv[])
{
	int i;
	int menu(); 
	int Submenu2();
	printf("输入原来通讯录信息人数:");
	scanf("%d",&n);
	menu();
	return 0;
}
int menu()                 //菜单模块 
{
	tel *p;
	void List(tel tele[],int i);
    void SelectSort(tel *p);
    int Copy();
	int i;
	int Submenu2();
	int z,x;
	printf("****************通讯录管理***************\n");
	printf("1---------查看通信录\n");
	printf("2---------更新通信录\n");
	printf("3---------备份通信录\n");
	printf("4---------退出\n");
	while(i!=4)
	{
		printf("输入操作数:");
		scanf("%d",&x);
	    switch(x)
	{
		case 1:{
                List(tele,i);
                printf("输入1,排序(否则按回车键结束):");
				scanf("%d",&z);
				if(z==1) SelectSort(p);
				else if(z!=1) break;
               }break;
		case 2:Submenu2();break;
		case 3:{
			Copy();int k=Copy();printf("%d\n",k);break;
		}
		case 4:printf("退出"); break;
		default:printf("请重新输入:"); 
	}
	} 
}
int Submenu2()
{
	int i;tel *p;int menu();
	void New(tel tele[],tel *p);
	void Edit(tel tele[],tel *p);
	void Delect(tel tele[],tel *p);
	printf("1---------新增联系人\n");
	printf("2---------编辑联系人\n");
	printf("3---------删除联系人\n");
	printf("0---------返回主菜单\n");
	while(i!=0)
	{
		printf("输入操作(输入0返回主菜单):");
		scanf("%d",&i);
	    switch(i)
	{
		case 1:New(tele,p);break;
		case 2:Edit(tele,p);break;
		case 3:Delect(tele,p);break;
		case 0:menu();break;
		default:printf("请重新输入:"); 
	}}}
void List(tel tele[],int i)        //查看模块 
{
	FILE *p1;
	if((p1=fopen("E:\\tel.txt","r"))==NULL)
	{
		printf("can't find the file!");
		exit(0);
	}
	i=0;
	while(!feof(p1))
	{		fscanf(p1,"%s  %d  %s  %s  %s  %s  %s\n",tele[i].name,&tele[i].group,tele[i].home,tele[i].mobile,tele[i].email,tele[i].add,tele[i].memo);		printf("%s  %d  %s  %s  %s  %s  %s\n",tele[i].name,tele[i].group,tele[i].home,tele[i].mobile,tele[i].email,tele[i].add,tele[i].memo);
		i++;
	}
	fclose(p1);
}
void PrintHead()      //输出表头 
{
	printf("姓名  群组  住宅电话  手机  Email  地址  备注"); 
	printf("\n");
}
void PrintBottom()   //输出表尾 
{
	printf("继续操作:");
}
void SelectSort(tel *p)   //音序排序 
{
	int i,j,k;
	for(i=0;i<n+Len;i++)
	{
		k=i;
		for(j=i+1;j<n+Len;j++)
		if(strcmp(tele[k].name,tele[j].name)>0)
		k=j;
		t[1]=tele[k];
		tele[k]=tele[i];
		tele[i]=t[1];
	}
	for(i=0;i<n+Len;i++)
	printf("%d  %s  %d  %s  %s  %s  %s  %s\n",i+1,tele[i].name,tele[i].group,tele[i].home,tele[i].mobile,tele[i].email,tele[i].add,tele[i].memo);
}
void PrintOne(tel tele[],int i)   //输入一个联系人的信息及序号 
{
	printf("%d  %s  %d  %s  %s  %s  %s  %s\n",i,tele[i].name,tele[i].group,tele[i].home,tele[i].mobile,tele[i].email,tele[i].add,tele[i].memo);
}
void Print(tel tele[])    //仅输入联系人的信息 
{
	int i;
	printf("%s  %d  %s  %s  %s  %s  %s\n",tele[i].name,tele[i].group,tele[i].home,tele[i].mobile,tele[i].email,tele[i].add,tele[i].memo);
}





void New(tel tele[],tel *p)    //新增联系人 
{
	FILE *p2,*p22;int c;char name3[12];char *original;int y;
	void Input(tel tele[],tel *p,int i);
	int Duplicate(char name[],tel tele[],char *original);
	if((p2=fopen("E:\\tel.txt","a+"))==NULL)
	{
		printf("can't find the file!");
		exit(0);
	}
	if((p22=fopen("E:\\tel.txt","a+"))==NULL)
	{
		printf("can't find the file!");
		exit(0);
	}
		for(int i=0;i<n;i++)
	{
		fscanf(p22,"%s  %d  %s  %s  %s  %s  %s\n",tele[i].name,&tele[i].group,tele[i].home,tele[i].mobile,tele[i].email,tele[i].add,tele[i].memo);
	}
	printf("输入要增添的联系人姓名:\n");
	scanf("%s",name3);
	y=Duplicate(name3,tele,original);
	printf("%d\n",y);
	for(int i=n;;i++)
	{
		printf("输入要增添的联系人的信息:\n");
		Input(tele,p,i);
		fprintf(p2,"%s  %d  %s  %s  %s  %s  %s\n",tele[i].name,tele[i].group,tele[i].home,tele[i].mobile,tele[i].email,tele[i].add,tele[i].memo);
		Len++;
		printf("结束添加请按0(按其他数字继续输入):");
		scanf("%d",&c);
		if(c==0)break;
	}
	fclose(p2);
}
void Edit(tel tele[],tel *p)   //编辑联系人 
{
	int q;
	FILE *p3,*p4;
	char name1[20];
	if((p3=fopen("E:\\tel.txt","r"))==NULL)
	{
		printf("can't find the file!");
		exit(0);
	}
    if((p4=fopen("E:\\tele.txt","w"))==NULL)
	{
		printf("can't find the file!");
		exit(0);
	}
	for(int i=0;i<n;i++)
	{		fscanf(p3,"%s  %d  %s  %s  %s  %s  %s\n",tele[i].name,&tele[i].group,tele[i].home,tele[i].mobile,tele[i].email,tele[i].add,tele[i].memo);
	}
	printf("请输入修改者的名字:");
	scanf("%s",name1); 
	for(int i=0;i<n;i++)
	{
		if(strcmp(name1,tele[i].name)==0)
		{
			printf("请输入修改的信息:");		scanf("%s%d%s%s%s%s%s",t1[1].name,&t1[1].group,t1[1].home,t1[1].mobile,t1[1].email,t1[1].add,t1[1].memo);
			strcpy(tele[i].name,t1[1].name);
			tele[i].group=t1[1].group;
			strcpy(tele[i].home,t1[1].home);			strcpy(tele[i].mobile,t1[1].mobile);strcpy(tele[i].email,t1[1].email);strcpy(tele[i].add,t1[1].add);
			strcpy(tele[i].memo,t1[1].memo);
		}
	}
	for(int i=0;i<n;i++)
	{
		printf("%s",tele[i].name);
		fprintf(p4,"%s  %d  %s  %s  %s  %s  %s\n",tele[i].name,tele[i].group,tele[i].home,tele[i].mobile,tele[i].email,tele[i].add,tele[i].memo);
	}
	fclose(p3);
	fclose(p4);
	unlink("E:\\tel.txt");
	rename("E:\\tele.txt","E:\\tel.txt"); 
}
void Delect(tel tele[],tel *p)      //删除联系人 
{
	FILE *p5,*p6;char name2[20];
	if((p5=fopen("E:\\tel.txt","r"))==NULL)
	{
		printf("can't find the file!");
		exit(0);
	}
    if((p6=fopen("E:\\tele.txt","w"))==NULL)
	{
		printf("can't find the file!");
		exit(0);
	}
	for(int i=0;i<n;i++)
	{		fscanf(p5,"%s  %d  %s  %s  %s  %s  %s\n",tele[i].name,&tele[i].group,tele[i].home,tele[i].mobile,tele[i].email,tele[i].add,tele[i].memo);
	}
	printf("请输入删除者的名字:");
	scanf("%s",name2);
	for(int i=0;i<n;i++)
	{
		if(strcmp(name2,tele[i].name)==0)
		{
			for(int c=i;c<n;c++)
			{
			strcpy(tele[c].name,tele[c+1].name);
			tele[c].group=tele[c+1].group;
			strcpy(tele[c].home,tele[c+1].home);
			strcpy(tele[c].mobile,tele[c+1].mobile);
			strcpy(tele[c].email,tele[c+1].email);
			strcpy(tele[c].add,tele[c+1].add);
			strcpy(tele[c].memo,tele[c+1].memo);
			}
			Len--;
		}
	}
		for(int i=0;i<n+Len;i++)
	{
		printf("%s",tele[i].name);		fprintf(p6,"%s  %d  %s  %s  %s  %s  %s\n",tele[i].name,tele[i].group,tele[i].home,tele[i].mobile,tele[i].email,tele[i].add,tele[i].memo);
	}
	fclose(p5);
	fclose(p6);
	unlink("E:\\tel.txt");
	rename("E:\\tele.txt","E:\\tel.txt"); 
}
void Input(tel tele[],tel *p,int i)     //input 
{	scanf("%s%d%s%s%s%s%s",tele[i].name,&tele[i].group,tele[i].home,tele[i].mobile,tele[i].email,tele[i].add,tele[i].memo);
} 
int Duplicate(char name3[],tel tele[],char *original)   //检查是否重名 
{
	for(int i=0;i<n;i++)
	{
		if(strcmp(name3,tele[i].name)==0)return 1;
	    else return 0;
	}
}
int Copy()      //备份通讯录 
{
	FILE *p7,*p8;
	char ch;
	if((p7=fopen("E:\\tel.txt","r"))==NULL)
	{
		printf("can't find the file!");
		exit(0);
	}
    if((p8=fopen("E:\\tele.txt","w"))==NULL)
	{
		printf("can't find the file!");
		exit(0);
	}
	int f=0;
	while(!feof(p7))
	{
		ch=fgetc(p7);
		fputc(ch,p8);
		f++;
	}
	fclose(p7);fclose(p8);
	if(f==0) return 0;
	else return 1;
}

执行上述程序后的结果如图:
在这里插入图片描述
  另外还有其他功能,都已经完善好了,就不再一一演示了。
  这就是用C管理一个通讯录的程序。大家可以参考参考。希望能帮助到大家。


 楠哥-------一心只想为IT行业添砖加瓦,却总是面向cv编程的程序员。
  谢谢阅读,无误点赞,有误还望评论区指正。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值