當前位置:首頁 » 編程語言 » c語言查找通訊錄
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言查找通訊錄

發布時間: 2023-03-27 21:52:33

Ⅰ 急!c語言 通訊錄管理系統 快速查找功能如何實現

可以使用正則式來進行查找
使用正則式 ^a[a-zA-Z]+\\0$ 來腔李洞表示 以a開頭後面接任意個字母,並以「\0」結尾的字元串
用 strcmp(s,"^a[a-zA-Z]+\擾孫\0$");來匹配 s是否是 以a開頭後面接任意個字母並以「\0」結伍枯尾的字元串 這一形式,是則返回0。
通過循環語句一個一個的比較,當返回值為0的 輸出該 字元串 s

Ⅱ 大神看看我的C語言通訊錄查找函數。輸入電話號碼查找永遠是未查找到

這段代碼沒有問題
你需要檢查一下鏈表的數據內容,在調用本函數前,用輸出語句先遍歷一下鏈表看一下內容吧,估計是建表有問題,或是輸入的數據存儲不正確。

Ⅲ c語言 通訊錄

/*編鋒爛程建立一通訊簿,存放有姓悄基鬧名、電話號碼、住址,然後對通信簿進行查找、添加、修改及刪除。*/#includestructperson{charname[8];chartel[15];charaddr[50];};charfilename[20];FILE*fp;voidcreat();voidoutput();voidsearch();voidappend();voidmodify();voiddelete();main(){intm;creat();while(1){printf("\n\n添加,請按1");printf("\n查找,請按2");printf("\n修改,請按3");printf("\n刪除,請按4");printf("\n輸出,請按5");printf("\n退出,請按0\n");scanf("%d",&m);if(m>=0&&m<=5){switch(m){case1:append();break;case2:search();break;case3:modify();break;case4:delete();break;case5:output();break;case0:exit();}printf("\n\n操作完畢,請再次選擇!");}elseprintf("\n\n選擇錯誤,請再次選擇!");}}voidcreat(){structpersonone;longs1;printf("\n請輸入通訊簿名:");scanf("%s",filename);if((fp=fopen(filename,"w"))==NULL){printf("\n不能建立通訊簿!");exit();}fprintf(fp,"%-10s%-20s%-50s\n","姓名","電話號碼","住址");printf("\n請輸入姓名、電話號碼及住址(以0結束)\n");scanf("%s",one.name);while(strcmp(one.name,"0")){scanf("%s%s",one.tel,one.addr);fprintf(fp,"%-10s%-20s%-50s\n",one.name,one.tel,one.addr);scanf("%s",one.name);}fclose(fp);}voidoutput(){structpersonone;if((fp=fopen(filename,"r"))==NULL){printf("\n不能打開通訊簿!");exit();}printf("\n\n%20s\n"啟罩,"通訊簿");while(!feof(fp)){fscanf(fp,"%s%s%s\n",one.name,one.tel,one.addr);printf("%-10s%-20s%-50s",one.name,one.tel,one.addr);}fclose(fp);}voidappend(){structpersonone;if((fp=fopen(filename,"a"))==NULL){printf("\n不能打開通訊簿!");exit();}printf("\n請輸入添加的姓名、電話號碼及住址\n");scanf("%s%s%s",one.name,one.tel,one.addr);fprintf(fp,"%-10s%-20s%-50s\n",one.name,one.tel,one.addr);fclose(fp);}voidsearch(){intk=0;charnamekey[8];structpersonone;printf("\n請輸入姓名:");scanf("%s",namekey);if((fp=fopen(filename,"rb"))==NULL){printf("\n不能打開通訊簿!");exit();}while(!feof(fp)){fscanf(fp,"%s%s%s\n",one.name,one.tel,one.addr);if(!strcmp(namekey,one.name)){printf("\n\n已查到,記錄為:");printf("\n%-10s%-18s%-50s",one.name,one.tel,one.addr);k=1;}}if(!k)printf("\n\n對不起,通訊簿中沒有此人的記錄。");fclose(fp);}voidmodify(){intm,k=0;longoffset;charnamekey[8];structpersonone;printf("\n請輸入姓名:");scanf("%s",namekey);if((fp=fopen(filename,"r+"))==NULL){printf("\n不能打開通訊簿!");exit();}while(!feof(fp)){offset=ftell(fp);fscanf(fp,"%s%s%s\n",one.name,one.tel,one.addr);if(!strcmp(namekey,one.name)){k=1;break;}}if(k){printf("\n已查到,記錄為:");printf("\n%-10s%-18s%-50s",one.name,one.tel,one.addr);printf("\n請輸入新姓名、電話號碼及住址:");scanf("%s%s%s",one.name,one.tel,one.addr);fseek(fp,offset,SEEK_SET);printf("%ld",ftell(fp));fprintf(fp,"%-10s%-20s%-50s\n",one.name,one.tel,one.addr);}elseprintf("\n對不起,通訊簿中沒有此人的記錄。");fclose(fp);}voiddelete(){intm,k=0,flag;longoffset1,offset2;charnamekey[8],valid[4];structpersonone;printf("\n請輸入姓名:");scanf("%s",namekey);if((fp=fopen(filename,"r+"))==NULL){printf("\n不能打開通訊簿!");exit();}while(!feof(fp)){offset1=ftell(fp);fscanf(fp,"%s%s%s\n",one.name,one.tel,one.addr);if(!strcmp(namekey,one.name)){k=1;break;}}if(k){printf("\n已查到,記錄為");printf("\n%-10s%-18s%-50s",one.name,one.tel,one.addr);printf("\n確實要刪除,按1;不刪除,按0:");scanf("%d",&m);if(m){fseek(fp,offset1,SEEK_SET);fprintf(fp,"%-10s%-20s%-50s\n","","","");}}elseprintf("\n對不起,通訊簿中沒有此人的記錄。");fclose(fp);}

Ⅳ C語言的通訊錄代碼是什麼

#include x0dx0a#include x0dx0a#include x0dx0a#include x0dx0a#define N 100 void input();//添加新用戶函數 x0dx0avoid amend();//修改用戶信息函數 x0dx0avoid delete_client();//刪除用戶信息函數 x0dx0avoid demand_client();/頃隱/用戶信息查詢函數 x0dx0avoid collect_telephone();//用戶信息匯總函數 x0dx0avoid save_client(struct telephone message);//保存函數 x0dx0avoid demand_name();//按用戶名查詢 x0dx0avoid demand_telephone();/雀仿廳/按電話號碼查詢 x0dx0a x0dx0astruct telephone x0dx0a{ x0dx0achar client_name[20]; x0dx0achar client_address[30]; x0dx0achar client_telephone[15]; x0dx0a}; //添加新用戶函數 x0dx0avoid input() x0dx0a{ x0dx0astruct telephone message; x0dx0achar reply='y' x0dx0achar save='y' x0dx0awhile (reply=='y') x0dx0a{ printf("用戶姓名:"); x0dx0ascanf("%s",message.client_name); x0dx0a x0dx0aprintf("電話號碼:"); x0dx0ascanf("%s",message.client_telephone); save_client(message); x0dx0a x0dx0aprintf("要繼續嗎?(y/n):"); x0dx0ascanf(" %c",&reply); x0dx0a} x0dx0aprintf("按任意鍵返回主菜單??\n"); x0dx0agetchar(); x0dx0agetchar(); x0dx0a} //保存函數 x0dx0avoid save_client(struct telephone message) x0dx0a{ x0dx0aFILE *fp; x0dx0afp=fopen("message.dat","a+"); x0dx0aif (fp!=NULL) x0dx0a{ x0dx0afwrite(&message,sizeof(struct telephone),1,fp); x0dx0a} x0dx0aelse x0dx0a{ x0dx0aprintf("\n打開文件時出現錯誤,按任意鍵返回??\n"); x0dx0agetchar(); x0dx0areturn; x0dx0a} x0dx0afclose(fp); x0dx0a} //修改用戶信息函數 x0dx0avoid amend() x0dx0a{ x0dx0astruct telephone message; x0dx0aFILE *fp; x0dx0achar amend_name[20]; x0dx0achar reply='y' x0dx0achar found='y' x0dx0achar save='y' x0dx0aint size=sizeof(struct telephone); x0dx0awhile (reply=='y') x0dx0a{ x0dx0afound='n' x0dx0afp=fopen("message.dat","r+w"); x0dx0aif (fp!=NULL) x0dx0a{ x0dx0asystem("cls"); x0dx0aprintf("\n請大搏輸入要修改的姓名:"); x0dx0ascanf("%s",amend_name); x0dx0awhile ((fread(&message,size,1,fp))==1) x0dx0a{ x0dx0aif ((strcmp(amend_name,message.client_name))==0) x0dx0a{ x0dx0afound='y' x0dx0abreak; x0dx0a} x0dx0a} x0dx0aif (found=='y') x0dx0a{ printf("==========================================\n"); x0dx0aprintf("\n用戶姓名:%s\n",message.client_name); x0dx0a x0dx0aprintf("\n電話號碼:%s\n",message.client_telephone); x0dx0aprintf("==========================================\n"); x0dx0aprintf("修改用戶信息:\n"); x0dx0aprintf("\n用戶姓名:"); x0dx0ascanf("%s",message.client_name); printf("\n電話號碼:"); x0dx0ascanf("%s",message.client_telephone); x0dx0aprintf("\n要保存嗎?(y/n):"); x0dx0ascanf(" %c",&save); x0dx0aif (save=='y') x0dx0a{ x0dx0afseek(fp,-size,1); x0dx0afwrite(&message,sizeof(struct telephone),1,fp); x0dx0a} x0dx0a} x0dx0aelse x0dx0a{ x0dx0aprintf("無此人信息!\n"); x0dx0a} x0dx0a} x0dx0aelse x0dx0a{ x0dx0aprintf("打開文件時出現錯誤,按任意鍵返回??\n"); x0dx0agetchar(); x0dx0areturn; x0dx0a} x0dx0afclose(fp); x0dx0aprintf("要繼續嗎?(y/n):"); x0dx0ascanf(" %c",&reply); x0dx0a} x0dx0aprintf("按任意鍵返回主菜單??\n"); x0dx0agetchar(); x0dx0agetchar(); x0dx0a} //刪除用戶信息函數 x0dx0avoid delete_client() x0dx0a{ x0dx0astruct telephone message[N]; x0dx0astruct telephone temp_str; x0dx0astruct telephone delete_str; x0dx0aint i=0,j=0; x0dx0achar reply='y' x0dx0achar found='y' x0dx0achar confirm='y' x0dx0achar delete_name[20]; x0dx0aFILE *fp; x0dx0awhile (reply=='y') x0dx0a{ x0dx0asystem("cls"); x0dx0afp=fopen("message.dat","r"); x0dx0aif (fp!=NULL) x0dx0a{ x0dx0ai=0; x0dx0afound='n' x0dx0aprintf("\n請輸入姓名:"); x0dx0ascanf("%s",delete_name); x0dx0awhile ((fread(&temp_str,sizeof(struct telephone),1,fp))==1) x0dx0a{ x0dx0aif ((strcmp(delete_name,temp_str.client_name))==0) x0dx0a{ x0dx0afound='y' x0dx0adelete_str=temp_str; x0dx0a}//查找要刪除的記錄 x0dx0aelse x0dx0a{ x0dx0amessage[i]=temp_str; x0dx0ai++; x0dx0a}//將其它無關記錄保存起來 x0dx0a} x0dx0a} x0dx0aelse x0dx0a{ x0dx0aprintf("打開文件時出現錯誤,按任意鍵返回??\n"); x0dx0agetchar(); x0dx0areturn; x0dx0a} x0dx0afclose(fp); x0dx0aif (found=='y') x0dx0a{ x0dx0aprintf("==========================================\n"); x0dx0aprintf("用戶姓名:%s\n",delete_str.client_name); x0dx0a x0dx0aprintf("電話號碼:%s\n",delete_str.client_telephone); x0dx0aprintf("==========================================\n"); x0dx0a} x0dx0aelse x0dx0a{ x0dx0aprintf("無此人信息,按任意鍵返回??\n"); x0dx0agetchar(); x0dx0abreak; x0dx0a} x0dx0aprintf("確定要刪除嗎?(y/n):"); x0dx0ascanf(" %c",&confirm); x0dx0aif (confirm=='y') x0dx0a{ x0dx0afp=fopen("message.dat","w"); x0dx0aif (fp!=NULL) x0dx0a{ x0dx0afor(j=0;j3) x0dx0a{ x0dx0aprintf("請輸入1-6之間的整數\n"); x0dx0aprintf("按任意鍵返回菜單??\n"); x0dx0a getchar(); x0dx0acontinue; x0dx0a} x0dx0aif (choice==1) x0dx0a{ x0dx0ademand_name(); x0dx0a} x0dx0aelse if (choice==2) x0dx0a{ x0dx0ademand_telephone(); x0dx0a} x0dx0a} x0dx0a} //按用戶名查詢 x0dx0avoid demand_name() x0dx0a{ x0dx0astruct telephone message; x0dx0aFILE *fp; x0dx0achar amend_name[20]; x0dx0achar reply='y' x0dx0achar found='y' x0dx0awhile (reply=='y') x0dx0a{ x0dx0afound='n' x0dx0afp=fopen("message.dat","r+w"); x0dx0aif (fp!=NULL) x0dx0a{ x0dx0asystem("cls"); x0dx0aprintf("\n請輸入姓名:"); x0dx0ascanf("%s",amend_name); x0dx0awhile ((fread(&message,sizeof(struct telephone),1,fp))==1) x0dx0a{ x0dx0aif ((strcmp(amend_name,message.client_name))==0) x0dx0a{ x0dx0afound='y' x0dx0abreak; x0dx0a} x0dx0a} x0dx0aif (found=='y') x0dx0a{ printf("==========================================\n"); x0dx0aprintf("用戶姓名:%s\n",message.client_name); printf("電話號碼:%s\n",message.client_telephone); x0dx0aprintf("==========================================\n"); x0dx0a} x0dx0aelse x0dx0a{ x0dx0aprintf("無此人信息!\n"); x0dx0a} x0dx0a} x0dx0aelse x0dx0a{ x0dx0aprintf("打開文件時出現錯誤,按任意鍵返回??\n"); x0dx0agetchar(); x0dx0areturn; x0dx0a} x0dx0afclose(fp); x0dx0aprintf("要繼續嗎?(y/n):"); x0dx0ascanf(" %c",&reply); x0dx0a} x0dx0aprintf("按任意鍵返回主菜單??\n"); x0dx0agetchar(); x0dx0agetchar(); x0dx0a} //按電話號碼查詢 x0dx0avoid demand_telephone() x0dx0a{ x0dx0astruct telephone message; x0dx0aFILE *fp; x0dx0achar telephone[20]; x0dx0achar reply='y' x0dx0achar found='y' x0dx0awhile (reply=='y') x0dx0a{ x0dx0afound='n' x0dx0afp=fopen("message.dat","r+w"); x0dx0aif (fp!=NULL) x0dx0a{ x0dx0asystem("cls"); x0dx0aprintf("\n請輸入電話號碼:"); x0dx0ascanf("%s",telephone); x0dx0awhile ((fread(&message,sizeof(struct telephone),1,fp))==1) x0dx0a{ x0dx0aif ((strcmp(telephone,message.client_telephone))==0) x0dx0a{ x0dx0afound='y' x0dx0abreak; x0dx0a} x0dx0a} x0dx0aif (found=='y') x0dx0a{ printf("==========================================\n"); x0dx0aprintf("用戶姓名:%s\n",message.client_name); printf("電話號碼:%s\n",message.client_telephone); x0dx0aprintf("==========================================\n"); x0dx0a} x0dx0aelse x0dx0a{ x0dx0aprintf("無此電話號碼的有關信息!\n"); x0dx0a} x0dx0a} x0dx0aelse x0dx0a{ x0dx0aprintf("打開文件時出現錯誤,按任意鍵返回??\n"); x0dx0agetchar(); x0dx0areturn; x0dx0a} x0dx0afclose(fp); x0dx0aprintf("要繼續嗎?(y/n):"); x0dx0ascanf(" %c",&reply); x0dx0a} x0dx0aprintf("按任意鍵返回主菜單??\n"); x0dx0agetchar(); x0dx0agetchar(); x0dx0a} //用戶信息匯總函數 x0dx0avoid collect_telephone() x0dx0a{ x0dx0astruct telephone message; x0dx0aFILE *fp; x0dx0afp=fopen("message.dat","r"); x0dx0aif (fp!=NULL) x0dx0a{ x0dx0asystem("cls"); x0dx0aprintf("\n用戶姓名\t\t電話號碼\n"); x0dx0awhile ((fread(&message,sizeof(struct telephone),1,fp))==1) x0dx0a{ x0dx0aprintf("\n%-24s",message.client_name); printf("%-12s\n",message.client_telephone); x0dx0a} x0dx0a} x0dx0aelse x0dx0a{ x0dx0aprintf("打開文件時出現錯誤,按任意鍵返回??\n"); x0dx0agetchar(); x0dx0areturn; x0dx0a} x0dx0afclose(fp); x0dx0aprintf("按任意鍵返回主菜單??\n"); x0dx0agetch(); x0dx0a} void main() x0dx0a{ x0dx0achar choice[10]=""; x0dx0aint len=0; x0dx0awhile (choice[0]!=ƍ') x0dx0a{ printf("\t==========電話本號碼查詢系統=============\n"); printf("\t\t 1、添加新聯系人\n"); x0dx0aprintf("\t\t 2、修改聯系人信息\n"); x0dx0aprintf("\t\t 3、刪除聯系人信息\n"); x0dx0aprintf("\t\t 4、聯系人信息查詢\n"); x0dx0aprintf("\t\t 5、聯系人信息匯總\n"); x0dx0a x0dx0aprintf("\t\t 7、退出\n"); x0dx0aprintf("\t=========================================\n"); x0dx0aprintf("請選擇(1-7):"); x0dx0ascanf("%s",choice); x0dx0alen=strlen(choice); x0dx0aif (len>1) x0dx0a{ x0dx0aprintf("請輸入1-6之間的整數\n"); x0dx0aprintf("按任意鍵返回主菜單??\n"); x0dx0agetchar(); x0dx0agetchar(); x0dx0acontinue; x0dx0a} switch (choice[0]) { x0dx0acase Ƈ': x0dx0ainput(); x0dx0abreak; x0dx0acase ƈ': x0dx0aamend(); x0dx0abreak; x0dx0acase Ɖ': x0dx0adelete_client(); x0dx0abreak; x0d

Ⅳ c語言中做一個通訊錄,能夠添加、刪除、修改、查找

# include<stdio.h>
# include<string.h>
struct tongxun
{char name[20];
char number[20];
struct tongxun *next;
};
int all=0;
struct tongxun* tj() /*創建鏈表並添加成員*//**/
{
struct tongxun *head=NULL;
struct tongxun *p,*q;
system("CLS");

p=q=(struct tongxun *)malloc(sizeof(struct tongxun));

for(;;)
{printf("請輸入姓名:(如果輸入0則退出添加)\n");
scanf("%s",p->name);
if(!(strcmp(p->name,"0"))){ free(p);return head;}
else {printf("請輸入電話號碼:\n");
scanf("%s",p->number);
all++;
if(all==1)
{p->next=head;
q=p;
head=q;}
else
{p->next=NULL;
q->next=p;
q=p;
}
p=(struct tongxun *)malloc(sizeof(struct tongxun));
}
}
}
cz(struct tongxun *head) /*查找函數*/
{char name1[20],*a;
struct tongxun *p;
p=head;a=name1;
system("CLS");
printf("請輸入要查找的姓名:\n");
scanf("%s",a);
while(p!=NULL)
{if((strcmp(p->name,a))==0) {printf("姓名:%s\n電話號碼:%s\n",p->name,p->number);return;}
else p=p->next;
}
printf("沒有此人\n");
return;
}

insert(struct tongxun *head) /*插入新成員*/
{struct tongxun* pnew;
pnew=(struct tongxun *)malloc(sizeof(struct tongxun));
while(1)
{printf("請輸入姓名:(如果輸入0則退出添加)\n");
scanf("%s",pnew->name);
if(!(strcmp(pnew->name,"0"))){ free(pnew);return head;}
else {printf("請輸入電話號碼:\n");
scanf("%s",pnew->number);
all++;
pnew->next=head;
head=pnew;
pnew=(struct tongxun *)malloc(sizeof(struct tongxun));
}
}
}
shuchu(struct tongxun *head) /*輸出成員*/
{struct tongxun *p;
p=head;
printf("這里一共有%d個成員\n",all);
while(p!=NULL)
{printf("姓名:%s\n電話號碼:%s\n",p->name,p->number);
p=p->next;
}
}
xg(struct tongxun *head) /*修改成員*/
{char name1[20],*a;
struct tongxun *p;
p=head;a=name1;
system("CLS");
printf("請輸入要修改的姓名:\n");
scanf("%s",a);
while(p!=NULL)
{if((strcmp(p->name,a))==0) {printf("請重新輸入姓名:\n");
scanf("%s",p->name);
printf("請重新輸入電話號碼:\n");
scanf("%s",p->number);return;}
else p=p->next;
}
printf("沒有此人\n");
return;

}
sc(struct tongxun *head) /*刪除成員*/
{char name1[20],*a;
struct tongxun *p,*q;
p=q=head;a=name1;
system("CLS");
printf("請輸入要刪除的姓名:\n");
scanf("%s",a);
while(p!=NULL)
{
if((strcmp(p->name,a))==0) {all--;q->next=p->next;return;}
else {q=p;p=p->next;}
}
printf("沒有此人\n");
return;

}
void main()
{struct tongxun *head;int i;
while(1)
{printf("請選擇:\n");
printf("1.添加 2.查找 3.修改 4.刪除 5.插入 6.輸出\n");scanf("%d",&i);
switch(i)
{case 1:head=tj();break;
case 2:cz(head);break;
case 3:xg(head);break;
case 4:sc(head);break;
case 5:insert(head);break;
case 6:shuchu(head);break;
default:printf("輸入有誤,請重新輸入:\n");break;
}
}
}

Ⅵ 如何用C語言做通訊錄

剽竊代碼即可。。


已經按照你的要求做了一個,VC6上運行確認了:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedefstructPersonalInfo
{
charname[50];
charaddress[30];
chartelno[30];
charpostcode[30];
structPersonalInfo*next;
}INFO;
INFO*head;
voidInitiate();
voidMenu();
voidCreate();//的功能是:創建新的通訊錄。
voidAdd();//在通訊錄的末尾,寫入新的信息,並返回選單
voidFind();//查找記錄
voidAlter();//修改記錄如果未找到要修改的人,則提示通訊錄中沒有此人的信息,並返回選單。
voidDelete();//刪除某人的信息,如果未找到要刪的人,提示通訊錄中沒有此人的信息,並返回選單。
voidList();//的功能是:顯示通訊錄中的所有記錄。
//初始化
voidInitiate()
{
if((head=(INFO*)malloc(sizeof(INFO)))==NULL)exit(1);
head->next=NULL;
}
//顯示菜單
voidMenu()
{
printf("**************歡迎使用通訊錄系統**************");
printf(" ");
printf(" ");
printf("1.創建通訊錄。 ");
printf("2.插入信息。 ");
printf("3.查詢記錄 ");
printf("4.修改記錄 ");
printf("5.刪除記錄! ");
printf("6.顯示所有記錄 ");
printf("0.退出通訊錄 ");
printf("請輸入0~6 ");
}
//創建通訊錄
voidCreate()
{
INFO*p1[100],*p2;
intm,i;
printf("請輸入創建個數:");
scanf("%d",&m);
for(i=1;i<=m;i++)
{
p1[i]=(INFO*)malloc(sizeof(INFO));
printf("請輸入第%d條信息! ",i);
printf("姓名: ");
scanf("%s",&p1[i]->name);
printf("地址: ");
scanf("%s",&p1[i]->address);
printf("電話: ");
scanf("%s",&p1[i]->telno);
printf("郵編: ");
scanf("%s",&p1[i]->postcode);
p1[i]->next=NULL;
if(head->next==NULL)
head->next=p1[i];
else
{
for(p2=head;p2->next!=NULL;p2=p2->next);//找到結點尾
p2->next=p1[i];
}
}
printf("信息已添加! ");
return;//保存到鏈表
}
//添加通訊錄信息
voidAdd()
{
INFO*p,*q;
if((q=(INFO*)malloc(sizeof(INFO)))==NULL)exit(1);
printf("請輸入要添加的信息! ");
printf("姓名: ");//添加信息
scanf("%s",&q->name);
printf("性別: ");
scanf("%s",q->address);
printf("電話: ");
scanf("%s",q->telno);
printf("城市: ");
scanf("%s",q->postcode);
for(p=head;p->next!=NULL;p=p->next);
p->next=q;
q->next=NULL;
printf("此信息已添加!");
return;
}
//查找通訊錄信息
voidFind()
{
INFO*p;
charname[50];
if(head->next==NULL)
{
printf("此通訊錄為空! ");
return;
}
printf("請輸入要查找的姓名: ");
scanf("%s",&name);
for(p=head->next;p!=NULL;p=p->next)
{
if(strcmp(p->name,name)==0)
{
printf("姓名 地址 郵編 電話 ");
printf("%s %s %s %s ",p->name,p->address,p->postcode,p->telno);
}
elseif(p->next==NULL)
printf("無此信息! ");
}
}
//修改通訊錄信息
voidAlter()
{
charname[50];//先查找後刪除
INFO*p,*p1;
if(head->next==NULL)
{
printf("此通訊錄為空! ");
return;
}
printf("請輸入要修改的姓名: ");
scanf("%s",name);
for(p=head->next;p!=NULL;p=p->next)
{
if(strcmp(p->name,name)==0)
break;
elseif(p->next==NULL)
{
printf("無此信息! ");
return;
}
}
p1=(INFO*)malloc(sizeof(INFO));
printf("姓名: ");//添加信息
scanf("%s",p1->name);
strcpy(p->name,p1->name);
printf("性別: ");
scanf("%s",p1->address);
strcpy(p->address,p1->address);
printf("電話: ");
scanf("%s",p1->telno);
strcpy(p->telno,p1->telno);
printf("城市: ");
scanf("%s",p1->postcode);
strcpy(p->postcode,p1->postcode);
printf("此信息已修改! ");
//顯示修改的信息
printf("姓名 地址 郵編 電話 ");
printf("%s %s %s %s ",p->name,p->address,p->postcode,p->telno);
free(p1);
}
//刪除通訊錄信息
voidDelete()
{
charname[50];//先查找後刪除
INFO*p=head->next,*p1=head->next,*p2;
if(head->next==NULL)
{
printf("此通訊錄為空! ");
return;
}
printf("請輸入要刪除的姓名: ");
scanf("%s",name);
while((strcmp(p->name,name)!=0)&&p->next!=NULL)
{
p1=p;
p=p->next;
}
if(strcmp(name,p->name)==0)//輸出刪除信息
{
if(p==head->next&&p->next!=NULL)
head->next=p->next;
elseif(p==head->next&&p->next==NULL)
{
head->next=p->next;
printf("信息已刪除,先此通訊錄為空!! ");
return;
}
else
p1->next=p->next;
}
else
{
printf("此信息不存在!!! ");
return;
}
printf("此信息已刪除!");
printf("姓名 地址 郵編 電話 ");
for(p2=head->next;p2!=NULL;p2=p2->next)
printf("%s %s %s %s ",p2->name,p2->address,p2->postcode,p2->telno);
}
//顯示所有記錄
voidList()
{
INFO*p;
if(head->next==NULL)
{
printf("此通訊錄中無記錄! ");
return;
}
printf("姓名 地址 郵編 電話 ");
for(p=head->next;p!=NULL;p=p->next)
printf("%s %s %s %s ",p->name,p->address,p->postcode,p->telno);
}
voidmain()
{
intchoice;
charyes_no;

system("colora");
Initiate();
do
{
Menu();
printf("請選擇0-6的數字 ");
scanf("%d",&choice);
printf(" ");
switch(choice)
{
case1:Create();
break;
case2:Add();
break;
case3:Find();
break;
case4:Alter();
break;
case5:Delete();
break;
case6:List();
break;
case0:
printf("************感謝您的使用************ ");
exit(0);
break;
default:
printf("輸入有誤!請重新輸入 ");
break;
}
printf("是否繼續YorN? ");
do
{
scanf("%c",&yes_no);
}while(yes_no!='Y'&&yes_no!='y'&&yes_no!='N'&&yes_no!='n');
}while(yes_no=='Y'||yes_no=='y');
}

Ⅶ C語言程序設計:通訊錄程序設計

#include "stdlib.h"
#include "string.h"
#include "conio.h"
#include "stdio.h"
#include "dos.h"
FILE *fp;
int i; //i是全局變數 可代替length
struct address
{ char postnum[10];
char a[40]; //家庭地址
};
struct birthday
{ int year;
int month;
int day;
};
struct ffriend
{ int num; //序號
char name[20];
char sex;
char telephone[13];
struct birthday birthday;
struct address address;

}
friends[50];

void Load()
{
int j;
long k;
fp=fopen("friend.txt","a+"); //打開文件friend.txt
if(fp!=NULL)
{
for(i=1;i<50;i++)

{
j=fgetc(fp);
if(j==EOF) //判斷是否到了文件尾
return;
k=i-1;
fseek(fp,k*sizeof(struct ffriend),SEEK_SET);
fread(&friends[i],sizeof(struct ffriend),1,fp); //從文件中讀取一條記錄
}

}
else
{
fp=fopen("friend.txt","w");
i=1;
}

}
void Show(int j)
{
// friends[j].num=i;
printf("\n\n\t編號-Nnumber: %3d",friends[j].num);
printf("\n\t姓名-Name:%-20s",friends[j].name);
printf("\n\t性別-Sex:%c",friends[j].sex);
printf("\n\t聯系電話-Telephone:%-13s",friends[j].telephone);
printf("\n\t出生日期-Birthday:%4d-%2d-%3d",friends[j].birthday.year,friends[j].birthday.month,friends[j].birthday.day);
printf("\n\t郵編-Postnum:%-10s",friends[j].address.postnum);
printf("\n\t通信地址-address:%-40s",friends[j].address.a);
}
void Append(int j)
{
fflush(stdin); //區內清除文件緩沖區,文件以寫方式打開時將緩沖容寫入文件
//stdin是一個標准FILE*(文件型指針)指向通常是用鍵盤的輸入的輸入流
friends[j].num=j;
printf("\n\t\t\t序號-Number:%d",j);
printf("\n\t\t\t姓名-Name:");
scanf("%s",friends[j].name);
fflush(stdin); //為什麼沒有fflush(stdin); 的效果會自動跳過呢?
printf("\t\t\t性別-Sex(m/w):"); //為什麼輸入漢字男女也會自動跳過聯系電話呢
scanf("%c",&friends[j].sex);
printf("\t\t\t聯系電話-telephone:");
scanf("%s",friends[j].telephone);
printf("\t出生日期-birthday");
printf("\n\t\t\t年份-year:");
scanf("%d",&friends[j].birthday.year);
printf("\t\t\t月份-month:");
scanf("%d",&friends[j].birthday.month);
printf("\t\t\t日-day:");
scanf("%d",&friends[j].birthday.day);
printf("\t\t\t郵編-Postnumber:");
scanf("%s",friends[j].address.postnum);
printf("\t\t\t通信地址-Address:");
scanf("%s",friends[j].address.a);
getchar();
}
void Delete()
{
int k;
printf("\n\tDelete 序號-Number:");
scanf("%d",&k);
if(k<=i)
{
for(int j=k;j<i+1;j++) /*插入位置後的元素順序後移*/
{
strcpy(friends[j].name,friends[j+1].name); /*交換元素內容*/
friends[j].sex=friends[j+1].sex;
strcpy(friends[j].telephone,friends[j+1].telephone);
friends[j].birthday.year=friends[j+1].birthday.year;
friends[j].birthday.month=friends[j+1].birthday.month;
friends[j].birthday.day=friends[j+1].birthday.day;
strcpy(friends[j].address.postnum,friends[j+1].address.postnum);
strcpy(friends[j].address.a,friends[j+1].address.a);

}
i--;
}
else
{
printf("輸入的序號太大!");
}
}
void Modify(int j)
{
Append(j);
}
void Save()
{
int j;
fp=fopen("friend.txt","w");
for(j=1;j<=i;j++)
{
fwrite(&friends[j],sizeof(struct ffriend),1,fp);
}
fclose(fp);

}

void main()
{
int j;
char grade;
char searchname[10];
Load();
i--;
do
{
printf("\t\t\t\t簡易通訊錄\n\n");
printf("功能選擇(Function choose)\n");
printf("\1A.讀取(Read)\n");
printf("\2B.增添(Append)\n");
printf("\6C.插入(Insert)\n");
printf("\5D.刪除(Delete)\n");
printf("\5E.查詢(Search)\n");
printf("\6F.修改(Modify)\n");
printf("\2G.保存(Save)\n");
printf("\1H.退出(Quit)\n");
printf("請選擇(Choice)\n注:輸入A~H的大寫字母\n");
scanf("%c",&grade);
switch(grade)
//加個大寫和小寫 都可以啊
{
case 'A': j=1; //顯示功能
while(getchar()!=0x1b&&j<=i) //增添按Esc鍵退出
{
Show(j++);
printf("\n請按回車鍵繼續!");
}
if(j-1<1)
{
printf("\n\t空文檔,無任何記錄-Empty Note\n");
printf("\n請按回車鍵繼續!");
getchar();

}
printf("\n\t\t\t\t\t\t\t此次操作結束");
printf("\n\t------------------------------------------------------------\t\t\n");
break;
case 'B': //增加功能
while(i<=50) //增加按ESC鍵退出的功能
{
i++;
Append(i);
printf("\t是否繼續增加?y/n");
//修改 加上else if 其他就跳出或強制列印出出錯
char a=getchar();
if(a=='n'||a=='N')
break;
}
if(i==51)
printf("\n\t文檔已滿,無法增加記錄-note full");
printf("\n\t\t\t\t\t\t\t此次操作結束");
printf("\n\t------------------------------------------------------------\t\t\n");
getchar();
break;
case 'C':
int k;
printf("\n\t輸入要插入的位置:");
scanf("%d",&k);
j=i+1;
friends[j].num=j;
for(j;j>k;j--) //插入功能
{
strcpy(friends[j].name,friends[j-1].name); //數據後移
friends[j].sex=friends[j-1].sex;
strcpy(friends[j].telephone,friends[j-1].telephone);
friends[j].birthday.year=friends[j-1].birthday.year;
friends[j].birthday.month=friends[j-1].birthday.month;
friends[j].birthday.day=friends[j-1].birthday.day;
strcpy(friends[j].address.postnum,friends[j-1].address.postnum);
strcpy(friends[j].address.a,friends[j-1].address.a);

}
Append(k);
i++;
printf("\n\t\t\t\t\t\t\t此次操作結束");
printf("\n\t------------------------------------------------------------\t\t\n");
break;
case 'D': //刪除功能 //增添隨意刪除多條記錄的功能
Delete();
if(i<1)
printf("\n沒有記錄-No records\n");
printf("\n請按回車鍵繼續!");
getchar();
getchar();
printf("\n\t\t\t\t\t\t\t此次操作結束");
printf("\n\t------------------------------------------------------------\t\t\n");
break;
case 'E': //查詢功能
printf("\n\t請輸入要查詢記錄的相關姓名:"); //增添查詢按列號的
scanf("%s",searchname);
for(j=1;j<=i;j++)
{
if(strcmp(searchname,friends[j].name)==0) //比較字元串
{
Show(j);
break;
}
}
if(i<1)
{
printf("\n 沒有您所查詢的記錄-No records");
printf("\n 請按回車鍵繼續!");
getchar();
}
printf("\n\t\t\t\t\t\t\t此次操作結束");
printf("\n\t------------------------------------------------------------\t\t\n");
getchar();
break;
case 'F': //修改功能 / /增添按序列號查詢
printf("\n\t請輸入要修改記錄的相關姓名:");
gets(searchname);
scanf("%s",searchname);
for(j=1;j<=i;j++)
{
if(strcmp(searchname,friends[j].name)==0) //比較字元串
{
Modify(j);
// getchar(); //加個輸出確定修改嗎
}
}
if(i<1) //修改功能
{ printf("\n 沒有您所要修改的記錄-No records");
printf("\n 請按回車鍵繼續!");
getchar();
getchar();
}
printf("\n\t\t\t\t\t\t\t此次操作結束");
printf("\n\t------------------------------------------------------------\t\t\n");
break;
case 'G':
Save(); //存檔功能
getchar();
printf("\n\t\t\t\t\t\t\t此次操作結束");
printf("\n\t------------------------------------------------------------\t\t\n");
break;

case 'H': //退出功能
char x;
printf("是否保存?yes/no\n");
scanf("%s",&x);
//getchar();
// getchar();
if(x=='y')
{
Save();
exit(0);
}
else
exit(0);

default:
printf("\n\t輸入有誤,請輸入正確的序列號!");
printf("\n請按回車鍵繼續!");
getchar();
printf("\n\t\t\t\t\t\t\t此次操作結束");
printf("\n\t------------------------------------------------------------\t\t\n");
}
}while(1);
}

Ⅷ C語言編寫通訊錄怎麼按姓名查找聯系人

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#defineN50
structfriend_list{
charname[16];
chartel[16];
charemail[20];
}fri[N];

/*voidinitstu(structfriend_list*p);*/
voidadd_friend(structfriend_list*p);
voidsearch_friend(structfriend_list*p);
voiddel_friend(structfriend_list*p,char*name);
voidrenew_friend(structfriend_list*p,char*name);

intn=0;//全局變數,用來記錄現有人數

voidmain(void){
intfriendnumber=0;
intchose=0;
while(1){
printf("1:新增聯系人 ");
printf("2:按姓名查找聯系人 ");
printf("3:按姓名刪除聯系人 ");
printf("4:按姓名修改聯系人 ");
printf("0:退出 ");

printf(" 請選擇輸入(0-4):");
scanf("%d",&chose);
switch(chose){
case1:add_friend(fri);break;
case2:
case3:
case4:
case0:
default:return;
}
}
}

voidadd_friend(structfriend_list*p){
if(n>=N){
printf("已經滿員,不能添加了。 ");
return;
}
printf("請輸入新增聯系人的姓名,聯系電話,電子郵箱: ");
scanf("%s%s%s",p[n].name,p[n].tel,p[n].email);
++n;
}

voidsearch_friend(structfriend_list*p){
inti,flag=1;
charname[16];
printf("請輸入要查找的聯系人的名字: ");
scanf("%s",name);
for(i=0;i<n&&flag;i++){
if(strcmp(p[i].name,name)==0){
printf("%s%s%s ",name,p[i].tel,p[i].email);
flag=0;
}
}
if(flag)printf("沒有找到名字叫:%s的人! ",name);
}

Ⅸ c語言通訊錄程序

以前寫了一個簡單的:
#include <stdio.h>
#include <stdlib.h> /*與malloc.h差不多*/
#include <string.h>
#include <iostream>
using namespace std;
#define maxlen 15
struct persons
{int num; /*定義結構體數組用於緩存數據*/
char name[20];
char e_addr[20];
char tel_no[15];
char sim_no;
char arch;
}persons[maxlen];

typedef struct lnode
{ /*通訊錄結構中結點的定義*/
int num;
char name[20];
char e_addr[20];
char tel_no[15];
char sim_no;
char arch;
struct lnode *next;
}listnode,*linklist;

linklist head=NULL,r=NULL; /*定義頭指針和尾指針*/
listnode *s,*p0,*p1,*p2,*p3,*p4,*p5,*p6,*p7,*p8,*p9;
int i;
char name1[10],ch;
char tel_no1[15];
char arch1;
char sim_no1;
char e_addr1[20];
char s1[20];
FILE *fp; /*定義文件指針*/

void creat() /*將文件的信息讀入結構體數組在轉存入鏈表中*/
{ int j;
long k;
fp=fopen("數據文件.txt","r t"); /*打開文件*/
if(fp!=NULL)
{for(i=0;i<=maxlen;i++ )
{ j=fgetc(fp);
if(j==EOF)
return;
k=i;
fseek(fp,k*sizeof(struct persons),0); /*讀取一個人的信息*/
fread(&persons[i],sizeof(struct persons),1,fp);

s=(linklist)malloc(sizeof(listnode)); /*裝存入鏈表中*/
s->num=persons[i].num;
strcpy(s->name,persons[i].name);
strcpy(s->e_addr,persons[i].e_addr);
strcpy(s->tel_no,persons[i].tel_no);
s->sim_no=persons[i].sim_no;
s->arch=persons[i].arch;
if(head==NULL) /*用尾插法將其插入鏈表中*/
{head=s;r=head;head->next=NULL;}
else
{r->next=s;
r=s;r->next=NULL;
}
}fclose(fp);
}
else
{ fp=fopen("數據文件.txt","w"); /*不能打開另開辟一個文件*/
i=1;
}
}

void Show()
{printf("成功調用該函數\n");}
void Delete()
{printf("成功調用該函數\n");}

void Input() /*向.通訊錄中輸入一個人的信息*/
{ s=(linklist)malloc(sizeof(listnode));
printf("\n\n\t請輸入該用戶的信息:");
printf("姓名:");
scanf("%s",&s->name);
printf("電話號碼:");
scanf("%s",&s->tel_no);
printf("單鍵撥號:");
scanf("%s",&s->sim_no);
printf("E-mail地址:");
scanf("%s",&s->e_addr);
printf("類別:");
scanf("%s",&s->arch);

if(head==NULL)printf("\n\n");
else
{p8=head;
while(p8!=NULL&&strcmp(s->name,p8->name)!=0&&strcmp(s->tel_no,p8->tel_no)!=0)
p8=p8->next;
if(p8!=NULL)
{printf("您添加的用戶已存在!");
free(s);}}
if(head==NULL)
{
s->next = 0;
head=s;
r = s;
}
else
{
s->next = 0;
r->next = s;
r = s;

}
}
void Alter()
{ printf("success!\n");}
int main()
{
system("color a");
creat();
do
{
printf("\n\n\t\t請選擇操作:");
printf("\n\t\t1.顯示通訊錄");
printf("\n\t\t2.刪除通訊錄");
printf("\n\t\t3.添加通訊錄");
printf("\n\t\t4.編輯通訊錄");
printf("\n\n\n");
printf("\t請選擇:");
cin>>ch;
switch(ch)
{ case '1': Show(); /*用單條件多選擇語句實現調用與循環*/
break;
case '2': Delete();
break;
case '3': Input();
break;
case '4': Alter();
break;
fclose(fp);
exit(0);
break;
default:
printf("\n\t The num should 1-6!!! \n");
break;
}
}
while(1);
}