早年学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);
}