C语言通信录_1

早年学C时写的通信录,今天整理电脑发现,发布以作纪念。。。

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

	typedef struct	
{		
 	long Id;		
	char strName[20];		
	char telNum[15];
	char Qnum[15];
}FRIEND;



void InputInfo(FRIEND *P);/*输入一个朋友信息(即增加)*/
void PrintInfo(FRIEND *pStu); /*输出选定的朋友信息*/
void search(FRIEND *pStu,int iNum); /*姓名查询并输出*/
int UseSel(void); /*用户主选择界面*/


void main()
{
	FRIEND *pStu;
	FILE *fp;
	int i;
	int iNum=0;      /*存放人数*/
	int iIndex;    /*存放选择主功能编码*/
    char szTemp[20];

	do{
    
		iIndex=UseSel();
	
		system("cls");
	
		switch(iIndex)
	
		{	    
	    		
		case 1:
		
			{   
			/*iNum++;

			if((fp=fopen("date.dat","w"))==NULL)			
			{
				printf("文件打开失败!");
				exit(1);
			}  
	    	fwrite(&iNum,sizeof(iNum),1,fp);*/
	    /*	fclose(fp);    如若没 date.dat文件可用重建 */  
	    	
				if((fp=fopen("date2.dat","rb+"))==NULL)
			
				{
				
					printf("文件打开失败!");
				
					exit(1);
			
				}
			
				fread(&iNum,sizeof(iNum),1,fp); 
		/*	fclose(fp);
			iNum++;		    		
			if((fp=fopen("date.dat","w"))==NULL)			 		
			{							
				printf("file open error");				 			
				exit(1);			 		
			}
					
			fwrite(&iNum,sizeof(iNum),1,fp); */



		
				pStu=(FRIEND *)malloc((iNum+1)*sizeof(FRIEND));
			
				if(pStu==NULL)
			
				{
				 
					printf("memory allocation failure!");
				 
					exit(1);
			
				}            
			
				fread(pStu,sizeof(FRIEND),iNum,fp);	
            		
		/*	iNum--;  */
			
				InputInfo(pStu+iNum);
	    /*	fwrite(pStu,sizeof(FRIEND),iNum+1,fp);*/
			
			    system("color 3A");
				printf("你增加的朋友信息为:\n");		    
			
				PrintInfo(pStu+iNum);
			
				rewind(fp);
			
				iNum++;
			
				fwrite(&iNum,sizeof(iNum),1,fp);
			
				fwrite(pStu,sizeof(FRIEND),iNum,fp);						
		
			
				fclose(fp);
			
				free(pStu);
			
				getchar();				
		
			} 
		
			break;
		
		case 2:
		
			{
			
				if((fp=fopen("date2.dat","rb+"))==NULL)
			
				{
				
					printf("打开文件错误!");
				
					exit(1);
			
				}
			
				fread(&iNum,sizeof(iNum),1,fp);
			
				pStu=(FRIEND *)malloc(iNum*sizeof(FRIEND));
			
				if(pStu==NULL)
			
				{
				
					printf("内存分配失败,系统退出!");
				
					exit(1);
			
				}
			
				fread(pStu,sizeof(FRIEND),iNum,fp);
				printf("\n");
			
			
				search(pStu,iNum);
			
				getchar();
		    
				fclose(fp);
			
				free(pStu);
		
			}
		
			break;

		 
		case 3:
		 
			{
			 
				
				if((fp=fopen("date2.dat","rb+"))==NULL)
			 
				{
				 
				 	printf("文件打开失败!");
				
					exit(1);
			 
				}
			 
				fread(&iNum,sizeof(iNum),1,fp);
			 
				printf("你总共添加了%d位好友信息.\n",iNum);

				printf("\n");
			 
				pStu=(FRIEND *)malloc(iNum*sizeof(FRIEND));
			 
				if(pStu==NULL)
			 
				{
				 
					printf("内存分配失败,系统退出!");
				 
					exit(1);
			 
				}
			 
				fread(pStu,sizeof(FRIEND),iNum,fp);			
			 
			    system("color 1A");/*1-蓝色 A-淡绿色 */
				for(i=0;i<iNum;i++)
			 
				{
				 
					PrintInfo(pStu+i);
			 
				}

			    printf("\n");
				fclose(fp);			
			 
				free(pStu);
			 
				system("pause");
		 
			}
		 
			break;

		 
		case 4:
		 
			{
			 
				if((fp=fopen("date2.dat","rb+"))==NULL)
			 
				{
				 
					printf("file open error\n");
				 
					exit(1);
			 
				}
			 
				fread(&iNum,sizeof(iNum),1,fp);

			 
				pStu=(FRIEND *)malloc(iNum*sizeof(FRIEND));
			 
				if(pStu==NULL)
			 
				{
				 
					printf("分配内存失败,退出系统!");
				 
					exit(1);
			 
				}
			 
				fread(pStu,sizeof(FRIEND),iNum,fp);

			 
				printf("请输入要修改的朋友的姓名:");
			 
				gets(szTemp);

				printf("\n");
			 
			 
				for(i=0;i<iNum;i++)
			 
				{
				 
					if(strcmp(szTemp,pStu[i].strName)==0)
					 
						break;
			 
				}
			 
				if(i<iNum)
			 
				{
				 
					printf("请重新输入此人信息:\n");
				 
					InputInfo(pStu+i);
			 
				}
			 
				else
			 
				{
					system("color 4D");/*4-红色 D-紫色 */
				 
					printf("无此人\n");
			 
				}
			 
				rewind(fp);
			 
				fwrite(&iNum,sizeof(iNum),1,fp);
			 
				fwrite(pStu,sizeof(FRIEND),iNum,fp);

			 
				fclose(fp);
			 
				free(pStu);
			 
				getchar();

		 
			}
		 
			break;


		 
		case 5:
		
			{
			
				exit(0);
		
			}
		
			break;
					
		default:					
			break;		
		}
	}while(iIndex!=5);
						            
}  

			   	
void InputInfo(FRIEND *p)/*输入一个朋友信息(即增加)*/
	
{
		
	char strTemp[15];
				
	printf("请输入编号:");
		
	gets(strTemp);
	p->Id=atol(strTemp);
					
	printf("请输入姓名:");
		
	gets(p->strName);
		
	printf("请输入号码:");
		
	gets(p->telNum);

	printf("请输入QQ:");

	gets(p->Qnum);

			
}
	

	
void PrintInfo(FRIEND *pStu) /*输出选定的朋友信息*/
	
{
		
	printf("编号:%-8d 姓名:%-8s 手机:%11s  QQ: %s \n",pStu->Id,pStu->strName,pStu->telNum,pStu->Qnum);
	
}


	
	
void search(FRIEND *pStu,int iNum) /*姓名查询并输出*/
						   
	
{	
	int i;
	char szTmp[20];
	
	printf("请输入要查找的姓名:");			 
		
	gets(szTmp);			
		
	for(i=0;i<iNum;i++)
			
		
	{				
			
		if(strcmp(szTmp,pStu[i].strName)==0)								
			break;		 
		
	}
			 
		
	if(i<iNum)	
	{
		printf("你要查找的朋友信息为:\n");	
		PrintInfo(pStu+i);	
	}
	
	else					 
			
		printf("无此人");
	   		
	
}

	
int UseSel(void) /*用户主选择界面*/
	
{
		
	char szBuff[3];
		
	do{
			
		system("cls");
		system("color 9A");/*9-淡蓝 A-淡绿  */
			
		printf("欢迎使用本系统~~\n\n");
			
		printf("\t1:输入(增加)数据\n");
			
		printf("\t2:姓名查询数据\n");
			
		printf("\t3:输出数据\n");

		printf("\t4:修改数据\n");
			
		printf("\t5:退出系统\n");
			
		printf("\n请输入要进行的操作(1-5):");
			
		gets(szBuff);
			
		if(szBuff[0]>'5'||szBuff[0]<'1')
				
			printf("输入错误\n");
			
		else
				
			break;
		
	}while(szBuff[0]>'5'||szBuff[0]<'1');
		
	return szBuff[0]-'0';
	
}

 

创建初始数据:

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

typedef struct	
{		
 	long Id;		
	char strName[20];		
	char telNum[15];
	char Qnum[15];
}FRIEND;

void main()
{
	int iNum=1;
	FILE *fp;
	FRIEND *pStu;
	FRIEND frid={1,"某某","1801888888","472228888"};
	if((fp=fopen("date2.dat","wr"))==NULL)						
	{			
		printf("文件打开失败!");				
		exit(1);			
	}  	    	
	fwrite(&iNum,sizeof(iNum),1,fp);
	fwrite(&frid,sizeof(FRIEND),1,fp);	
	fclose(fp);
	    	
}


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值