當前位置:首頁 » 編程語言 » c語言課程設計電話簿
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言課程設計電話簿

發布時間: 2022-08-16 14:55:19

c語言課程設計—學生通訊錄管理系統設計 設計一個學生通信錄,學生通

/*10.3.2源程序*//******頭文件(.h)***********/#include"stdio.h"/*I/O函數*/#include"stdlib.h"/*標准庫函數*/#include"string.h"/*字元串函數*/#include"ctype.h"/*字元操作函數*/#defineM50/*定義常數表示記錄數*/typedefstruct/*定義數據結構*/{charname[20];/*姓名*/charunits[30];/*單位*/chartele[10];/*電話*/}ADDRESS;/******以下是函數原型*******/intenter(ADDRESSt[]);/*輸入記錄*/voidlist(ADDRESSt[],intn);/*顯示記錄*/voidsearch(ADDRESSt[],intn);/*按姓名查找顯示記錄*/intdelete(ADDRESSt[],intn);/*刪除記錄*/intadd(ADDRESSt[],intn);/*插入記錄*/voidsave(ADDRESSt[],intn);/*記錄保存為文件*/intload(ADDRESSt[]);/*從文件中讀記錄*/voiddisplay(ADDRESSt[]);/*按序號查找顯示記錄*/voidsort(ADDRESSt[],intn);/*按姓名排序*/voidqseek(ADDRESSt[],intn);/*快速查找記錄*/void();/*文件復制*/voidprint(ADDRESStemp);/*顯示單條記錄*/intfind(ADDRESSt[],intn,char*s);/*查找函數*/intmenu_select();/*主菜單函數*//******主函數開始*******/main(){inti;ADDRESSadr[M];/*定義結構體數組*/intlength;/*保存記錄長度*/clrscr();/*清屏*/for(;;)/*無限循環*/{switch(menu_select())/*調用主菜單函數,返回值整數作開關語句的條件*/{case0:length=enter(adr);break;/*輸入記錄*/case1:list(adr,length);break;/*顯示全部記錄*/case2:search(adr,length);break;/*查找記錄*/case3:length=delete(adr,length);break;/*刪除記錄*/case4:length=add(adr,length);break;/*插入記錄*/case5:save(adr,length);break;/*保存文件*/case6:length=load(adr);break;/*讀文件*/case7:display(adr);break;/*按序號顯示記錄*/case8:sort(adr,length);break;/*按姓名排序*/case9:qseek(adr,length);break;/*快速查找記錄*/case10:();break;/*復制文件*/case11:exit(0);/*如返回值為11則程序結束*/}}}/*菜單函數,函數返回值為整數,代表所選的菜單項*/menu_select(){chars[80];intc;gotoxy(1,25);/*將游標定為在第25行,第1列*/printf("pressanykeyentermenu\n");/*提示壓任意鍵繼續*/getch();/*讀入任意字元*/clrscr();/*清屏*/gotoxy(1,1);printf("********************MENU*********************\n\n");printf("0.Enterrecord\n");printf("1.Listthefile\n");printf("2.Searchrecordonname\n");printf("3.Deletearecord\n");printf("4.addrecord\n");printf("5.Savethefile\n");printf("6.Loadthefile\n");printf("7.displayrecordonorder\n");printf("8.sorttomakenewfile\n");printf("9.Quickseekrecord\n");printf("10.thefiletonewfile\n");printf("11.Quit\n");printf("***********************************************\n");do{printf("\nEnteryouchoice(0~11):");/*提示輸入選項*/scanf("%s",s);/*輸入選擇項*/c=atoi(s);/*將輸入的字元串轉化為整型數*/}while(c11);/*選擇項不在0~11之間重輸*/returnc;/*返回選擇項,主程序根據該數調用相應的函數*/}/***輸入記錄,形參為結構體數組,函數值返回類型為整型表示記錄長度*/intenter(ADDRESSt[]){inti,n;char*s;clrscr();/*清屏*/printf("\npleaseinputnum\n");/*提示信息*/scanf("%d",&n);/*輸入記錄數*/printf("pleaseinputrecord\n");/*提示輸入記錄*/printf("nameunittelephone\n");printf("------------------------------------------------\n");for(i=0;in-1)/*如果整數i值大於n-1,說明沒找到*/printf("notfound\n");elseprint(t[i]);/*找到,調用顯示函數顯示記錄*/}/*顯示指定的一條記錄*/voidprint(ADDRESStemp){clrscr();printf("\n\n********************************************\n");printf("nameunittelephone\n");printf("------------------------------------------------\n");printf("%-20s%-30s%-10s\n",temp.name,temp.units,temp.tele);printf("**********************end***********************\n");}/*查找函數,參數為記錄數組和記錄條數以及姓名s*/intfind(ADDRESSt[],intn,char*s){inti;for(i=0;in-1)/*如果i>n-1超過了數組的長度*/printf("nofoundnotdeleted\n");/*顯示沒找到要刪除的記錄*/else{print(t[i]);/*調用輸出函數顯示該條記錄信息*/printf("Areyousuredeleteit(1/0)\n");/*確認是否要刪除*/scanf("%d",&ch);/*輸入一個整數0或1*/if(ch==1)/*如果確認刪除整數為1*/{for(j=i+1;j=i;j--)/*從最後一個結點開始向後移動一條*/{strcpy(t[j+1].name,t[j].name);/*當前記錄的姓名拷貝到後一條*/strcpy(t[j+1].units,t[j].units);/*當前記錄的單位拷貝到後一條*/strcpy(t[j+1].tele,t[j].tele);/*當前記錄的電話拷貝到後一條*/}strcpy(t[i].name,temp.name);/*將新插入記錄的姓名拷貝到第i個位置*/strcpy(t[i].units,temp.units);/*將新插入記錄的單位拷貝到第i個位置*/strcpy(t[i].tele,temp.tele);/*將新插入記錄的電話拷貝到第i個位置*/n++;/*記錄數加1*/returnn;/*返回記錄數*/}/*保存函數,參數為結構體數組和記錄數*/voidsave(ADDRESSt[],intn){inti;FILE*fp;/*指向文件的指針*/if((fp=fopen("record.txt","wb"))==NULL)/*打開文件,並判斷打開是否正常*/{printf("cannotopenfile\n");/*沒打開*/exit(1);/*退出*/}printf("\nSavingfile\n");/*輸出提示信息*/fprintf(fp,"%d",n);/*將記錄數寫入文件*/fprintf(fp,"\r\n");/*將換行符號寫入文件*/for(i=0;i=0&&id0)/*比較大小*/{flag=1;strcpy(temp.name,t[j].name);/*交換記錄*/strcpy(temp.units,t[j].units);strcpy(temp.tele,t[j].tele);strcpy(t[j].name,t[j+1].name);strcpy(t[j].units,t[j+1].units);strcpy(t[j].tele,t[j+1].tele);strcpy(t[j+1].name,temp.name);strcpy(t[j+1].units,temp.units);strcpy(t[j+1].tele,temp.tele);}if(flag==0)break;/*如果標志為0,說明沒有發生過交換循環結束*/}printf("sortsucess!!!\n");/*顯示排序成功*/}/*快速查找,參數為結構體數組和記錄數*/voidqseek(ADDRESSt[],intn){chars[20];intl,r,m;printf("\nPleasesortbeforeqseek!\n");/*提示確認在查找之前,記錄是否已排序*/printf("pleaseenternameforqseek\n");/*提示輸入*/scanf("%s",s);/*輸入待查找的姓名*/l=0;r=n-1;/*設置左邊界與右邊界的初值*/while(lr)/*如果左邊界大於右邊界時*/printf("notfound\n");/*顯示沒找到*/}/*復制文件*/void(){charoutfile[20];/*目標文件名*/inti,n;ADDRESStemp[M];/*定義臨時變數*/FILE*sfp,*tfp;/*定義指向文件的指針*/clrscr();/*清屏*/if((sfp=fopen("record.txt","rb"))==NULL)/*打開記錄文件*/{printf("cannotopenfile\n");/*顯示不能打開文件信息*/exit(1);/*退出*/}printf("Enteroutfilename,forexamplec:\\f1\\te.txt:\n");/*提示信息*/scanf("%s",outfile);/*輸入目標文件名*/if((tfp=fopen(outfile,"wb"))==NULL)/*打開目標文件*/{printf("cannotopenfile\n");/*顯示不能打開文件信息*/exit(1);/*退出*/}fscanf(sfp,"%d",&n);/*讀出文件記錄數*/fprintf(tfp,"%d",n);/*寫入目標文件數*/fprintf(tfp,"\r\n");/*寫入換行符*/for(i=0;i

② C語言程序設計:班級電話本管理程序

/* 電話簿程序 */
/******頭文件(.h)***********/
#include "stdio.h" /*I/O函數*/
#include "stdlib.h" /*標准庫函數*/
#include "string.h"/*字元串函數*/
#include "ctype.h" /*字元操作函數*/
#define M 50 /*定義常數表示記錄數*/
struct unit/*定義數據結構*/
{
char name[20]; /*姓名*/
char units[30]; /*單位*/
char tele[10]; /*電話*/
};

typedef struct unit ADDRESS;

/******以下是函數原型*******/
int enter(ADDRESS t[]); /*輸入記錄*/
void list(ADDRESS t[],int n); /*顯示記錄*/
void search(ADDRESS t[],int n); /*按姓名查找顯示記錄*/
int delete(ADDRESS t[],int n); /*刪除記錄*/
int add(ADDRESS t[],int n); /*插入記錄*/
void save(ADDRESS t[],int n); /*記錄保存為文件*/
int load(ADDRESS t[]); /*從文件中讀記錄*/
void display(ADDRESS t[]); /*按序號查找顯示記錄*/
void sort(ADDRESS t[],int n); /*按姓名排序*/
void qseek(ADDRESS t[],int n); /*快速查找記錄*/
void (); /*文件復制*/
void print(ADDRESS temp); /*顯示單條記錄*/
int find(ADDRESS t[],int n,char *s) ; /*查找函數*/
int menu_select(); /*主菜單函數*/

/******主函數開始*******/
main()
{
int i;
ADDRESS adr[M]; /*定義結構體數組*/
int length; /*保存記錄長度*/
clrscr(); /*清屏*/
for(;;)/*無限循環*/
{
switch(menu_select()) /*調用主菜單函數,返回值整數作開關語句的條件*/
{
case 0:length=enter(adr);break;/*輸入記錄*/
case 1:list(adr,length);break; /*顯示全部記錄*/
case 2:search(adr,length);break; /*查找記錄*/
case 3:length=delete(adr,length);break; /*刪除記錄*/
case 4:length=add(adr,length); break; /*插入記錄*/
case 5:save(adr,length);break; /*保存文件*/
case 6:length=load(adr); break; /*讀文件*/
case 7:display(adr);break; /*按序號顯示記錄*/
case 8:sort(adr,length);break; /*按姓名排序*/
case 9:qseek(adr,length);break; /*快速查找記錄*/
case 10:();break; /*復制文件*/
case 11:exit(0); /*如返回值為11則程序結束*/
}
}
}
/*菜單函數,函數返回值為整數,代表所選的菜單項*/
menu_select()
{
char s[80];
int c;
gotoxy(1,25);/*將游標定為在第25行,第1列*/
printf("press any key enter menu......\n");/*提示壓任意鍵繼續*/
getch(); /*讀入任意字元*/
clrscr(); /*清屏*/
gotoxy(1,1);
printf("********************MENU*********************\n\n");
printf(" 0. Enter record\n");
printf(" 1. List the file\n");
printf(" 2. Search record on name\n");
printf(" 3. Delete a record\n");
printf(" 4. add record \n");
printf(" 5. Save the file\n");
printf(" 6. Load the file\n");
printf(" 7. display record on order\n");
printf(" 8. sort to make new file\n");
printf(" 9. Quick seek record\n");
printf(" 10. the file to new file\n");
printf(" 11. Quit\n");
printf("***********************************************\n");
do{
printf("\n Enter you choice(0~11):"); /*提示輸入選項*/
scanf("%s",s); /*輸入選擇項*/
c=atoi(s); /*將輸入的字元串轉化為整型數*/
}while(c<0||c>11); /*選擇項不在0~11之間重輸*/
return c; /*返回選擇項,主程序根據該數調用相應的函數*/
}
/***輸入記錄,形參為結構體數組,函數值返回類型為整型表示記錄長度*/
int enter(ADDRESS t[])
{
int i,n;
char *s;
clrscr(); /*清屏*/
printf("\nplease input num \n"); /*提示信息*/
scanf("%d",&n); /*輸入記錄數*/
printf("please input record \n"); /*提示輸入記錄*/
printf("name unit telephone\n");
printf("------------------------------------------------\n");
for(i=0;i<n;i++)
{
scanf("%s%s%s",t[i].name,t[i].units,t[i].tele); /*輸入記錄*/
printf("----------------------------------------------\n");
}
return n; /*返回記錄條數*/
}
/*顯示記錄,參數為記錄數組和記錄條數*/
void list(ADDRESS t[],int n)
{
int i;
clrscr();
printf("\n\n*******************ADDRESS******************\n");
printf("name unit telephone\n");
printf("------------------------------------------------\n");
for(i=0;i<n;i++)
printf("%-20s%-30s%-10s\n",t[i].name,t[i].units,t[i].tele);
if((i+1)%10==0) /*判斷輸出是否達到10條記錄*/
{
printf("Press any key continue...\n"); /*提示信息*/
getch(); /*壓任意鍵繼續*/
}
printf("************************end*******************\n");
}
/*查找記錄*/
void search(ADDRESS t[],int n)
{
char s[20]; /*保存待查找姓名字元串*/
int i; /*保存查找到結點的序號*/
clrscr(); /*清屏*/
printf("please search name\n");
scanf("%s",s); /*輸入待查找姓名*/
i=find(t,n,s); /*調用find函數,得到一個整數*/
if(i>n-1) /*如果整數i值大於n-1,說明沒找到*/
printf("not found\n");
else
print(t[i]); /*找到,調用顯示函數顯示記錄*/
}
/*顯示指定的一條記錄*/
void print(ADDRESS temp)
{
clrscr();
printf("\n\n********************************************\n");
printf("name unit telephone\n");
printf("------------------------------------------------\n");
printf("%-20s%-30s%-10s\n",temp.name,temp.units,temp.tele);
printf("**********************end***********************\n");
}
/*查找函數,參數為記錄數組和記錄條數以及姓名s */
int find(ADDRESS t[],int n,char *s)
{
int i;
for(i=0;i<n;i++)/*從第一條記錄開始,直到最後一條*/
{
if(strcmp(s,t[i].name)==0) /*記錄中的姓名和待比較的姓名是否相等*/
return i; /*相等,則返回該記錄的下標號,程序提前結結束*/
}
return i; /*返回i值*/
}
/*刪除函數,參數為記錄數組和記錄條數*/
int delete(ADDRESS t[],int n)
{
char s[20]; /*要刪除記錄的姓名*/
int ch=0;
int i,j;
printf("please deleted name\n"); /*提示信息*/
scanf("%s",s);/*輸入姓名*/
i=find(t,n,s); /*調用find函數*/
if(i>n-1) /*如果i>n-1超過了數組的長度*/
printf("no found not deleted\n"); /*顯示沒找到要刪除的記錄*/
else
{
print(t[i]); /*調用輸出函數顯示該條記錄信息*/
printf("Are you sure delete it(1/0)\n"); /*確認是否要刪除*/
scanf("%d",&ch); /*輸入一個整數0或1*/
if(ch==1) /*如果確認刪除整數為1*/
{
for(j=i+1;j<n;j++) /*刪除該記錄,實際後續記錄前移*/
{
strcpy(t[j-1].name,t[j].name); /*將後一條記錄的姓名拷貝到前一條*/
strcpy(t[j-1].units,t[j].units); /*將後一條記錄的單位拷貝到前一條*/
strcpy(t[j-1].tele,t[j].tele); /*將後一條記錄的電話拷貝到前一條*/
}
n--; /*記錄數減1*/
}
}
return n; /*返回記錄數*/
}
/*插入記錄函數,參數為結構體數組和記錄數*/
int add(ADDRESS t[],int n)/*插入函數,參數為結構體數組和記錄數*/
{
ADDRESS temp; /*新插入記錄信息*/
int i,j;
char s[20]; /*確定插入在哪個記錄之前*/
printf("please input record\n");
printf("************************************************\n");
printf("name unit telephone\n");
printf("--------------------------------------------------\n");
scanf("%s%s%s",temp.name,temp.units,temp.tele); /*輸入插入信息*/
printf("------------------------------------------------\n");
printf("please input locate name \n");
scanf("%s",s); /*輸入插入位置的姓名*/
i=find(t,n,s); /*調用find,確定插入位置*/
for(j=n-1;j>=i;j--) /*從最後一個結點開始向後移動一條*/
{
strcpy(t[j+1].name,t[j].name); /*當前記錄的姓名拷貝到後一條*/
strcpy(t[j+1].units,t[j].units); /*當前記錄的單位拷貝到後一條*/
strcpy(t[j+1].tele,t[j].tele); /*當前記錄的電話拷貝到後一條*/
}
strcpy(t[i].name,temp.name); /*將新插入記錄的姓名拷貝到第i個位置*/
strcpy(t[i].units,temp.units); /*將新插入記錄的單位拷貝到第i個位置*/
strcpy(t[i].tele,temp.tele); /*將新插入記錄的電話拷貝到第i個位置*/
n++; /*記錄數加1*/
return n; /*返回記錄數*/
}
/*保存函數,參數為結構體數組和記錄數*/
void save(ADDRESS t[],int n)
{
int i;
FILE *fp; /*指向文件的指針*/
if((fp=fopen("record.txt","wb"))==NULL) /*打開文件,並判斷打開是否正常*/
{
printf("can not open file\n");/*沒打開*/
exit(1); /*退出*/
}
printf("\nSaving file\n"); /*輸出提示信息*/
fprintf(fp,"%d",n); /*將記錄數寫入文件*/
fprintf(fp,"\r\n"); /*將換行符號寫入文件*/
for(i=0;i<n;i++)
{
fprintf(fp,"%-20s%-30s%-10s",t[i].name,t[i].units,t[i].tele);/*格式寫入記錄*/
fprintf(fp,"\r\n"); /*將換行符號寫入文件*/
}
fclose(fp);/*關閉文件*/
printf("****save success***\n"); /*顯示保存成功*/
}
/*讀入函數,參數為結構體數組*/
int load(ADDRESS t[])
{
int i,n;
FILE *fp; /*指向文件的指針*/
if((fp=fopen("record.txt","rb"))==NULL)/*打開文件*/
{
printf("can not open file\n"); /*不能打開*/
exit(1); /*退出*/
}
fscanf(fp,"%d",&n); /*讀入記錄數*/
for(i=0;i<n;i++)
fscanf(fp,"%20s%30s%10s",t[i].name,t[i].units,t[i].tele); /*按格式讀入記錄*/
fclose(fp); /*關閉文件*/
printf("You have success read data from file!!!\n"); /*顯示保存成功*/
return n; /*返回記錄數*/
}
/*按序號顯示記錄函數*/
void display(ADDRESS t[])
{
int id,n;
FILE *fp; /*指向文件的指針*/
if((fp=fopen("record.txt","rb"))==NULL) /*打開文件*/
{
printf("can not open file\n"); /*不能打開文件*/
exit(1); /*退出*/
}
printf("Enter order number...\n"); /*顯示信息*/
scanf("%d",&id); /*輸入序號*/
fscanf(fp,"%d",&n); /*從文件讀入記錄數*/
if(id>=0&&id<n) /*判斷序號是否在記錄范圍內*/
{
fseek(fp,(id-1)*sizeof(ADDRESS),1); /*移動文件指針到該記錄位置*/
print(t[id]); /*調用輸出函數顯示該記錄*/
printf("\r\n");
}
else
printf("no %d number record!!!\n ",id); /*如果序號不合理顯示信息*/
fclose(fp); /*關閉文件*/
}
/*排序函數,參數為結構體數組和記錄數*/
void sort(ADDRESS t[],int n)
{
int i,j,flag;
ADDRESS temp; /*臨時變數做交換數據用*/
for(i=0;i<n;i++)
{
flag=0; /*設標志判斷是否發生過交換*/
for(j=0;j<n-1;j++)
if((strcmp(t[j].name,t[j+1].name))>0) /*比較大小*/
{
flag=1;
strcpy(temp.name,t[j].name); /*交換記錄*/
strcpy(temp.units,t[j].units);
strcpy(temp.tele,t[j].tele);
strcpy(t[j].name,t[j+1].name);
strcpy(t[j].units,t[j+1].units);
strcpy(t[j].tele,t[j+1].tele);
strcpy(t[j+1].name,temp.name);
strcpy(t[j+1].units,temp.units);
strcpy(t[j+1].tele,temp.tele);
}
if(flag==0)break; /*如果標志為0,說明沒有發生過交換循環結束*/
}
printf("sort sucess!!!\n"); /*顯示排序成功*/
}
/*快速查找,參數為結構體數組和記錄數*/
void qseek(ADDRESS t[],int n)
{
char s[20];
int l,r,m;
printf("\nPlease sort before qseek!\n"); /*提示確認在查找之前,記錄是否已排序*/
printf("please enter name for qseek\n"); /*提示輸入*/
scanf("%s",s); /*輸入待查找的姓名*/
l=0;r=n-1; /*設置左邊界與右邊界的初值*/
while(l<=r) /*當左邊界<=右邊界時*/
{
m=(l+r)/2; /*計算中間位置*/
if(strcmp(t[m].name,s)==0) /*與中間結點姓名欄位做比較判是否相等*/
{
print(t[m]); /*如果相等,則調用print函數顯示記錄信息*/
return ; /*返回*/
}
if(strcmp(t[m].name,s)<0) /*如果中間結點小*/
l=m+1; /*修改左邊界*/
else
r=m-1; /*否則,中間結點大,修改右邊界*/
}
if(l>r) /*如果左邊界大於右邊界時*/
printf("not found\n"); /*顯示沒找到*/
}
/*復制文件*/
void ()
{
char outfile[20]; /*目標文件名*/
int i,n;
ADDRESS temp[M]; /*定義臨時變數*/
FILE *sfp,*tfp; /*定義指向文件的指針*/
clrscr();/*清屏*/
if((sfp=fopen("record.txt","rb"))==NULL) /*打開記錄文件*/
{
printf("can not open file\n"); /*顯示不能打開文件信息*/
exit(1); /*退出*/
}
printf("Enter outfile name,for example c:\\f1\\te.txt:\n"); /*提示信息*/
scanf("%s",outfile); /*輸入目標文件名*/
if((tfp=fopen(outfile,"wb"))==NULL) /*打開目標文件*/
{
printf("can not open file\n"); /*顯示不能打開文件信息*/
exit(1); /*退出*/
}
fscanf(sfp,"%d",&n); /*讀出文件記錄數*/
fprintf(tfp,"%d",n);/*寫入目標文件數*/
fprintf(tfp,"\r\n"); /*寫入換行符*/
for(i=0;i<n;i++)
{
fscanf(sfp,"%20s%30s%10s\n",temp[i].name,temp[i].units,
temp[i].tele); /*讀入記錄*/
fprintf(tfp,"%-20s%-30s%-10s\n",temp[i].name,
temp[i].units,temp[i].tele); /*寫入記錄*/
fprintf(tfp,"\r\n"); /*寫入換行符*/
}
fclose(sfp); /*關閉源文件*/
fclose(tfp); /*關閉目標文件*/
printf("you have success file!!!\n"); /*顯示復製成功*/
}


③ 電話簿c語言

下面這個是我以前做的,功能更多,可以參考一下.

/*
數據描述:學號 姓名 班級 高數 英語 總分

程序完成功能:

(1) 瀏覽數據 (2) 增加數據 (3) 修改數據

(4) 查詢數據(按姓名,按總分) (5) 退出
*/

#include<iostream>
#include<string>
#include<vector>
using namespace std;

class student
{
public:
student(int , string ,int ,int ,int );
string getName(){return _name;};
int getID(){return _ID;};
void setID(int i){_ID=i;};
void setName(string);
void setClass(int c){_class=c;};
void setMath(int m){_math=m;_total=_math+_english;};
void setEnglish(int e){_english=e;_total=_math+_english;}
void print();

static int _stNum;
private:
int _ID;
string _name;
int _class;
int _math;
int _english;
int _total;
};
int student::_stNum=0;
student::student(int id, string name, int iclass, int ma, int en)
{
_ID=id;
_name=name;
_class=iclass;
_math=ma;
_english=en;
_total=_math+_english;
_stNum++;
};

void student::setName(string s)
{
_name=s;
};

void student::print()
{

cout<<_ID
<<"\t"<< _name
<<"\t"<<_class
<<"\t"<<_math
<<"\t"<<_english
<<"\t"<<_total <<endl;

}

void printMenu(void);
void printHead(void);
void printTail(int);

void main()
{
int tmp_ID;
string tmp_name;
int tmp_class;
int tmp_math;
int tmp_english;
int order=0;
vector<student> stvec;

printMenu();
cin>>order;

while(order!=5)
{
switch(order)
{
case 1:
if (stvec.size()==0)
{
cout<<"ERR:---->No data in the system!"<<endl<<endl;
printMenu();
cin>>order;
break;
}
else
{
vector<student>::iterator iter=stvec.begin();
vector<student>::iterator iter_end=stvec.end();
printHead();
for(;iter!=iter_end;iter++)
{

(*iter).print();
}
printTail(stvec.size());
printMenu();
cin>>order;

break;
}

case 2:
cout<<"Insert-->ID:";
cin>>tmp_ID;
cout<<"Insert-->Name:";
cin>>tmp_name;
cout<<"Insert-->Class:";
cin>>tmp_class;
cout<<"Insert-->Mark of Math:";
cin>>tmp_math;
cout<<"Insert-->Mark of English:";
cin>>tmp_english;
stvec.push_back(student(tmp_ID,tmp_name,tmp_class,tmp_math,tmp_english));

printMenu();
cin>>order;
break;

case 3:
{
string search_name;
bool isFind=false;
cout<<"\nOrignal_Update-->Name:";
cin>>search_name;
vector<student>::iterator iter=stvec.begin();
vector<student>::iterator iter_end=stvec.end();
for(;iter!=iter_end;iter++)
{
if( (*iter).getName()==search_name )
{
isFind=true;
cout<<"New_Update-->ID:";
cin>>tmp_ID;
cout<<"New_Update-->Name:";
cin>>tmp_name;
cout<<"New_Update-->Class:";
cin>>tmp_class;
cout<<"New_Update-->Mark of Math:";
cin>>tmp_math;
cout<<"New_Update-->Mark of English:";
cin>>tmp_english;

(*iter).setID(tmp_ID);
(*iter).setName(tmp_name);
(*iter).setClass(tmp_class);
(*iter).setMath(tmp_math);
(*iter).setEnglish(tmp_english);
}
}
if(!isFind)
{
cout<<"There no student named "<<search_name<<endl;
}
printMenu();
cin>>order;
break;
}
case 4:
string search_name;
int search_ID;
int name_ID=0;
bool isFind=false;
cout<<"-----------"<<endl;
cout<<"1.Name:"<<endl;
cout<<"2.ID:"<<endl;
cout<<"-----------"<<endl;
cin>>name_ID;

if (name_ID==1)
{
cout<<"\nSearch-->name:"<<endl;
cin>>search_name;
vector<student>::iterator iter=stvec.begin();
vector<student>::iterator iter_end=stvec.end();
for(;iter!=iter_end;iter++)
{
if( (*iter).getName()==search_name )
{
if(!isFind)
{
cout<<endl<<"Your search:"<<endl;
printHead();
}
(*iter).print();
isFind=true;
}
}
if(isFind){ cout<<"-------------------------------------------------"<<endl;}
if(!isFind)
{
cout<<"There no student named :"<<search_name<<endl;
}
printMenu();
cin>>order;
break;
}

if (name_ID==2)
{
cout<<"\nSearch-->ID:"<<endl;
cin>>search_ID;
vector<student>::iterator iter=stvec.begin();
vector<student>::iterator iter_end=stvec.end();
for(;iter!=iter_end;iter++)
{
if( (*iter).getID()==search_ID)
{
if(!isFind)
{cout<<endl<<"Your search:"<<endl;
printHead();}
(*iter).print();
isFind=true;
}
}
if(isFind){ cout<<"-------------------------------------------------"<<endl;}
if(!isFind)
{
cout<<"There no student ID :"<<search_name<<endl;
}
printMenu();
cin>>order;
break;

}
}
}
}

void printMenu(void)
{
cout<<endl<<"*************Make**your**choice***************"<<endl;
cout<<"1. View the data"<<endl;
cout<<"2. ADD the data"<<endl;
cout<<"3. Update the data"<<endl;
cout<<"4. Search the data"<<endl;
cout<<"5. Quit"<<endl;
cout<<"********************************************"<<endl<<endl;
}

void printHead(void)
{
cout<<"-------------------------------------------------"<<endl;
cout<<"ID\tName\tClass\tMath\tEnglish\tTotal"<<endl;
}

void printTail(int i)
{
cout<<"There are total ";
if (i ==1)
{cout<< i<<" student"<<endl;}
else if(i >1)
{cout<<i<<" students"<<endl;}
cout<<"-------------------------------------------------"<<endl;
}

④ C語言用結構體編寫電話簿

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int len=0,j,q,u, x,n=0,i=0,s;
int b;
int c;
void sb()
{
printf("\t&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&\n");
printf("\t& &\n");
printf("\t& 通 訊 錄 管 理 系 統 &\n");
printf("\t& &\n");
printf("\t& 主菜單 &\n");
printf("\t& &\n");
printf("\t& <1>添加聯系人 &\n");
printf("\t& <2>瀏覽已有聯系人 &\n");
printf("\t& <3>修改聯系人信息 &\n"); //菜單界面
printf("\t& <4>刪除聯系人 &\n");
printf("\t& <5>查詢聯系人 &\n");
printf("\t& <6>退出 &\n");
printf("\t& &\n");
printf("\t& &\n");
printf("\t&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&\n");
}

struct person
{int num[100];
char name[30];
char jiguan[20];
char phone1[30];
char phone2[30];
char e_mail[40];
}a[100];

void shuru()
{
printf("請輸入聯系人信息,輸入'#'返回\n");
while(1)
{system("cls");
sb();
printf("請輸入聯系人姓名:\n");
scanf("%s",&a[i].name);
printf("請輸入籍貫:\n");
scanf("%s",&a[i].jiguan);
printf("請輸入號碼1:\n");
scanf("%s",&a[i].phone1);
printf("請輸入號碼2:\n");
scanf("%s",&a[i].phone2);
printf("請輸入郵箱:\n");
scanf("%s",&a[i].e_mail);
a[i].num[i]=i+1;
len=len+1; //添加聯系人
i=i+1;
system("cls");
sb();
printf("\n");
printf("添加成功!\n輸入'1'繼續添加,輸入'0'返回主菜單\n");
scanf("%d",&b);
if(b==0){system("cls");
sb();break;}
}
printf("已添加%d個聯系人\n",len);
printf("請選擇菜單功能:");
}

void tt()
{
printf("\t******************************************************************\n");
printf("\t* *\n");
printf("\t* ~☆~ 此程序由小山B同學獨自編寫,此程序解釋權歸小山B所有。 *\n");
printf("\t* 請用戶使用時遵守《版權法》及相關法律法規,不得以任何名義 *\n"); //開始界面
printf("\t* 復制、傳播此程序代碼。版權所有,侵權必究! *\n");
printf("\t* *\n");
printf("\t******************************************************************\n");

printf("\t選擇1代表用戶同意以上條約並繼續使用,選擇2退出界面。\n");

}

void ss()
{
jixu:
system("cls");
sb();
printf("\n");
printf("已有聯系人:\n");
for(j=0;j<len;j++)
printf("%d\t%s\t%s\n",j+1,a[j].name,a[j].phone1); //瀏覽聯系人
printf("\n");
printf("輸入對應編號查看詳細信息,輸入'0'返回主菜單\n");
scanf("%d",&i);
if(i==0){system("cls");
sb();printf("請選擇菜單功能:\n");return ;}
system("cls");
sb();
printf("\t姓名:\t%s\n\t籍貫:\t%s\n\tphone1:\t%s\n\tphone2:\t%s\n\te-mail:\t%s\n",a[i-1].name,a[i-1].jiguan,a[i-1].phone1,a[i-1].phone2,a[i-1].e_mail);
printf("\n輸入'9'返回上一頁,輸入'0'返回主菜單,\n");
scanf("%d",&c);
if(c==9){goto jixu;}
else{
system("cls");
sb();
printf("請選擇菜單功能:\n");}
}

void shanchu()
{ system("cls");
sb();
printf("已有聯系人:\n");
for(j=0;j<len;j++)
printf("%d\t%s\t%s\n",j+1,a[j].name,a[j].phone1); //刪除聯系人
printf("\n");
printf("請選擇需要刪除的聯系人編號:");
scanf("%d",&x);
for(s=x;s<=len;s++)
a[s-1]=a[s];
len=len-1;
system("cls");
sb();
printf("刪除成功!\n");
printf("請選擇菜單功能:\n");

}

void xiugai()
{
system("cls");
sb();
printf("已有聯系人:\n");
for(j=0;j<len;j++)
printf("%d\t%s\t%s\n",j+1,a[j].name,a[j].phone1); //修改聯系人
printf("\n");
printf("請選擇需要修改的聯系人編號:");
scanf("%d",&x);
system("cls");
sb();
printf("\n(1)\t%s\n(2)\t%s\n(3)\t%s\n(4)\t%s\n(5)\t%s\n",a[x-1].name,a[x-1].jiguan,a[x-1].phone1,a[x-1].phone2,a[x-1].e_mail);
printf("\n請輸入需要修改的信息編號:\n");
scanf("%d",&c);
if(c==1){printf("請輸入新姓名:\n");scanf("%s",a[x-1].name);}
if(c==2){printf("請輸入新籍貫:\n");scanf("%s",a[x-1].jiguan);}
if(c==3){printf("請輸入新號碼:\n");scanf("%s",a[x-1].phone1);}
if(c==4){printf("請輸入新號碼:\n");scanf("%s",a[x-1].phone2);}
if(c==5){printf("請輸入新郵箱:\n");scanf("%s",a[x-1].e_mail);}
system("cls");
sb();
printf("修改成功!\n");
printf("請選擇菜單功能:\n");

}

void chaxun()
{int v,p;
char t[20];hehe:
system("cls");
sb();
printf("請選擇查詢方式:\n");
printf("\n");
printf("1.通過姓名查詢\t2.通過號碼查詢\n\n9.返回主菜單\n");
scanf("%d",&v);
p=v; //查詢聯系人
if(p==1)
{system("cls");
sb();
printf("請輸入查詢的姓名:\n");
scanf("%s",t);

for(i=0;i<len;i++)
if(strcmp(t,a[i].name)==0)
{system("cls");sb();
printf("\t姓名:\t%s\n\t籍貫:\t%s\n\tphone1:\t%s\n\tphone2:\t%s\n\te-mail:\t%s\n",a[i].name,a[i].jiguan,a[i].phone1,a[i].phone2,a[i].e_mail);
printf("\n輸入'9'返回上一頁,輸入'0'返回主菜單,\n");
scanf("%d",&c);
if(c==9){goto hehe;}
else{
system("cls");
sb();
printf("請選擇菜單功能:\n"); return;}
}
}

if(p==2)
{system("cls");
sb();printf("請輸入查詢的號碼:\n");
scanf("%s",t);

for(i=0;i<len;i++)
if(strcmp(t,a[i].phone1)==0)
{system("cls");sb();
printf("姓名:\t%s\n籍貫:\t%s\nphone1:\t%s\nphone2:\t%s\ne-mail:\t%s\n",a[i].name,a[i].jiguan,a[i].phone1,a[i].phone2,a[i].e_mail);
printf("\n輸入'9'返回上一頁,輸入'0'返回主菜單,\n");
scanf("%d",&c);
if(c==9){goto hehe;}
else{system("cls");sb();printf("請選擇菜單功能:\n");return;}}

for(i=0;i<len;i++)
if(strcmp(t,a[i].phone2)==0)
{system("cls");sb();
printf("姓名:\t%s\n籍貫:\t%s\nphone1:\t%s\nphone2:\t%s\ne-mail:\t%s\n",a[i].name,a[i].jiguan,a[i].phone1,a[i].phone2,a[i].e_mail);
printf("\n輸入'9'返回上一頁,輸入'0'返回主菜單,\n");
scanf("%d",&c);
if(c==9){goto hehe;}
else{system("cls");sb();printf("請選擇菜單功能:\n");return;}}
}

if(p==9){system("cls");sb();printf("請選擇菜單功能:\n");return;}
else{printf("輸入錯誤!\n請重新輸入,或輸入9返回主菜單\n");goto hehe;}

}

void main()
{int g;
tt();
scanf("%d",&g);
if(g==1){ system("cls");
printf("");
sb();
printf("請選擇菜單功能:");

scanf("%d",&u);
q=u;
while(q!=6) //主函數
{
if(q==1) { system("cls"); sb(); shuru();}
if(q==2) { ss(); }
if(q==3) { xiugai(); }
if(q==4) { shanchu(); }
if(q==5) { chaxun(); }

scanf("%d",&q);
}

system("cls");
sb();
printf("感謝使用!\n");

}

else{ system("cls");
printf("感謝使用!\n");}

}

這是我很久之前寫的了。。。你挑著改就行了,功能都沒什麼問題

⑤ C語言課程設計---電話薄管理(C語言高手進)

/*
vc 6.0運行通過-原創
鏈表做的
*/

#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <string.h>
#define ID struct id
struct id
{
char name[20];
char tele[20];
ID *next;
};

int pc=0;

ID *creat()
{
ID *p1,*p2,*head;
char str[20];
p1=p2=head=NULL;
printf("\t\t\t 開始輸入記錄(姓名 # 結束)!\n");
while(1)
{
printf("請輸入姓名:\n");scanf("%s",str);getchar();
if(strcmp(str,"#")==0) break;
p1=(ID*)malloc(sizeof(ID));
strcpy(p1->name,str);
printf("請輸入電話號碼:\n");scanf("%s",p1->tele);getchar();

if(head==NULL)
{
head=p1;
p2=p1;
}
else
{
p2->next=p1;
p2=p1;
}
pc++;
}
p2->next=NULL;
return(head);
}

/*輸入/添加記錄*/
ID *insert(ID *head)
{
ID *temp,*p1,*p2;
printf("插入操作開始!!!\n");
temp=(ID *)malloc(sizeof(ID));
printf("請輸入姓名:\n");scanf("%s",temp->name);getchar();
printf("請輸入電話號碼:\n");scanf("%s",temp->tele);getchar();

if (head==NULL)
{
head=temp;
temp->next=NULL;
}
else
{
p1=head;
while(p1!=NULL)
{
p2=p1;
p1=p1->next;
}
p2->next=temp;
temp->next=p1;
}

printf("插入成功");
pc++;
return (head);
}

/*刪除記錄*/
ID *delet(ID *head)
{
ID *p1,*p2;
char str[20];
printf("請輸入要刪除的電話號碼:");scanf("%s",str);getchar();
p1=head;
if (head==NULL)
{
printf("沒有記錄\n");
goto end;
}
while(p1!=NULL && strcmp(p1->tele,str))
{
p2=p1;p1=p1->next;
}
if(p1==NULL)
printf("未找到符合記錄!\n");
else if(strcmp(p1->tele,str)==0)
{
if (p1==head)
head=p1->next;
else
p2->next=p1->next;
printf("刪除成功!!!\n");
pc--;
}
end:return head;
}

/*查找記錄*/
ID *search(ID *head)
{
ID *p1,*p2;
int flag=0;
char c;
printf("請輸入姓名的首字母:");scanf("%c",&c);getchar();
p1=head;
while( p1!=NULL)
{
if(p1->name[0]==c)
{
printf("姓名:%s\t電話號碼:%s\n",p1->name,p1->tele);
flag=1;
}
p2=p1;p1=p1->next;
}
if(flag==0) printf("未找到符合記錄!\n");
return head;
}

/*修改記錄*/
ID *modify(ID *head)
{
ID *p1,*p2;
int mode;
char str[20];
printf("請輸入要修改記錄的姓名:");scanf("%s",str);getchar();
p1=head;
while( p1!=NULL)
{
if(strcmp(p1->name,str)==0)
{
printf("1.姓名:%s\t2.電話號碼:%s\n",p1->name,p1->tele);
printf("請選擇要修改選項:\n");
scanf("%d",&mode);getchar();
if(mode==1)
{
printf("請輸入修改後的姓名\n");
scanf("%s",p1->name);getchar();
}
else if(mode==2)
{
printf("請輸入修改後的電話號碼\n");
scanf("%s",p1->tele);getchar();
}
else
printf("輸入有誤!\n");
break;
}
p2=p1;p1=p1->next;
}
if(p1==NULL) printf("未找到符合要求的記錄!\n");
return head;
}

/*顯示結果函數*/
void print(ID *head)
{
ID *p;
p=head;
printf("\t\t\t*****************\n");
printf("顯示結果是:\n");
printf("姓名\t電話號碼\n");
if(head!=NULL)
do
{
printf("%s\t%s\n",p->name,p->tele);
p=p->next;
} while(p!=NULL);
}

void main()
{
ID *head=NULL;
int choise;
printf("\t\t\t* * * * C語言課設* * * *\n");
while(1)
{
printf("\t\t 電話簿管理系統\n");
printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
printf("\t\t 1.輸入\n");
printf("\t\t 2.顯示\n");
printf("\t\t 3.查找\n");
printf("\t\t 4.插入\n");
printf("\t\t 5.刪除\n");
printf("\t\t 0.退出\n");
printf("\n");
printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
printf("請選擇(0-6):");
scanf("%d",&choise);getchar();
switch(choise)
{
case 1: head=creat();
break;
case 2: print(head);
break;
case 3: head=search(head);
break;
case 4: head=insert(head);
break;
case 5: head=delet(head);
break;
case 0:
exit(0);
break;
default :printf("輸入錯誤,請重新輸入!\n");
}
}
}

⑥ 急求一個c語言課程設計!!越快越好!

大哥啊,這個東西給你做了要用好多時間噢。雖然懸賞分比較高,但是…恐怕沒人給你答案噢。自己努力…

⑦ 關於電話薄的c語言程序,有會的嗎

#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <string.h>
#define ID struct id
struct id
{
char name[20];
char tele[20];
ID *next;
};

int pc=0;

ID *creat()
{
ID *p1,*p2,*head;
char str[20];
p1=p2=head=NULL;
printf("\t\t\t 開始輸入記錄(姓名 # 結束)!\n");
while(1)
{
printf("請輸入姓名:\n");scanf("%s",str);getchar();
if(strcmp(str,"#")==0) break;
p1=(ID*)malloc(sizeof(ID));
strcpy(p1->name,str);
printf("請輸入電話號碼:\n");scanf("%s",p1->tele);getchar();

if(head==NULL)
{
head=p1;
p2=p1;
}
else
{
p2->next=p1;
p2=p1;
}
pc++;
}
p2->next=NULL;
return(head);
}

/*輸入/添加記錄*/
ID *insert(ID *head)
{
ID *temp,*p1,*p2;
printf("插入操作開始!!!\n");
temp=(ID *)malloc(sizeof(ID));
printf("請輸入姓名:\n");scanf("%s",temp->name);getchar();
printf("請輸入電話號碼:\n");scanf("%s",temp->tele);getchar();

if (head==NULL)
{
head=temp;
temp->next=NULL;
}
else
{
p1=head;
while(p1!=NULL)
{
p2=p1;
p1=p1->next;
}
p2->next=temp;
temp->next=p1;
}

printf("插入成功");
pc++;
return (head);
}

/*刪除記錄*/
ID *delet(ID *head)
{
ID *p1,*p2;
char str[20];
printf("請輸入要刪除的電話號碼:");scanf("%s",str);getchar();
p1=head;
if (head==NULL)
{
printf("沒有記錄\n");
goto end;
}
while(p1!=NULL && strcmp(p1->tele,str))
{
p2=p1;p1=p1->next;
}
if(p1==NULL)
printf("未找到符合記錄!\n");
else if(strcmp(p1->tele,str)==0)
{
if (p1==head)
head=p1->next;
else
p2->next=p1->next;
printf("刪除成功!!!\n");
pc--;
}
end:return head;
}

/*查找記錄*/
ID *search(ID *head)
{
ID *p1,*p2;
int flag=0;
char c;
printf("請輸入姓名的首字母:");scanf("%c",&c);getchar();
p1=head;
while( p1!=NULL)
{
if(p1->name[0]==c)
{
printf("姓名:%s\t電話號碼:%s\n",p1->name,p1->tele);
flag=1;
}
p2=p1;p1=p1->next;
}
if(flag==0) printf("未找到符合記錄!\n");
return head;
}

/*修改記錄*/
ID *modify(ID *head)
{
ID *p1,*p2;
int mode;
char str[20];
printf("請輸入要修改記錄的姓名:");scanf("%s",str);getchar();
p1=head;
while( p1!=NULL)
{
if(strcmp(p1->name,str)==0)
{
printf("1.姓名:%s\t2.電話號碼:%s\n",p1->name,p1->tele);
printf("請選擇要修改選項:\n");
scanf("%d",&mode);getchar();
if(mode==1)
{
printf("請輸入修改後的姓名\n");
scanf("%s",p1->name);getchar();
}
else if(mode==2)
{
printf("請輸入修改後的電話號碼\n");
scanf("%s",p1->tele);getchar();
}
else
printf("輸入有誤!\n");
break;
}
p2=p1;p1=p1->next;
}
if(p1==NULL) printf("未找到符合要求的記錄!\n");
return head;
}

/*顯示結果函數*/
void print(ID *head)
{
ID *p;
p=head;
printf("\t\t\t*****************\n");
printf("顯示結果是:\n");
printf("姓名\t電話號碼\n");
if(head!=NULL)
do
{
printf("%s\t%s\n",p->name,p->tele);
p=p->next;
} while(p!=NULL);
}

void main()
{
ID *head=NULL;
int choise;
printf("\t\t\t* * * * C語言課設* * * *\n");
while(1)
{
printf("\t\t 電話簿管理系統\n");
printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
printf("\t\t 1.輸入\n");
printf("\t\t 2.顯示\n");
printf("\t\t 3.查找\n");
printf("\t\t 4.插入\n");
printf("\t\t 5.刪除\n");
printf("\t\t 0.退出\n");
printf("\n");
printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
printf("請選擇(0-6):");
scanf("%d",&choise);getchar();
switch(choise)
{
case 1: head=creat();
break;
case 2: print(head);
break;
case 3: head=search(head);
break;
case 4: head=insert(head);
break;
case 5: head=delet(head);
break;
case 0:
exit(0);
break;
default :printf("輸入錯誤,請重新輸入!\n");
}
}
}

⑧ 求c語言編寫電話薄實現添加刪除修改就可以 最好有圖形菜單,沒有也可以

聲明: 非原創

#include "stdio.h" /*標准輸入輸出函數庫*/
#include "stdlib.h" /*標准函數庫*/
#include "string.h" /*字元串函數庫*/
#include "conio.h" /*屏幕操作函數庫*/
#define HEADER1 " ---------------------------TELEPHONE BOOK---------------------------\n"
#define HEADER2 " | num | name | phonenumber | address | \n"
#define HEADER3 " |--------------|------------|-----------------|---------------------| \n"
#define FORMAT " | %-10s| %-10s| %-15s |%-20s | \n"
#define DATA p->num,p->name,p->phonenum,p->address
#define END " ---------------------------------------------------------------------\n"
#define N 100
int saveflag=0; /*是否需要存檔的標志變數*/
/*定義與電話簿有關的數據結構*/
typedef struct telebook /*標記為telebook*/
{
char num[4]; /*編號*/
char name[10]; /*姓名*/
char phonenum[15]; /*電話號碼*/
char address[20]; /*地址*/
}TELEBOOK;

void menu() /*主菜單*/
{
system("cls"); /*調用DOS命令,清屏.與clrscr()功能相同*/
textcolor(13); /*在文本模式中選擇新的字元顏色*/
gotoxy(10,5); /*在文本窗口中設置游標*/
cprintf(" The telephone-book Management System \n");
gotoxy(10,8);
cprintf(" *************************Menu********************************\n");
gotoxy(10,9);
cprintf(" * 1 input record 2 display record *\n");
gotoxy(10,10);
cprintf(" * 3 delete record 4 search record *\n");
gotoxy(10,11);
cprintf(" * 5 modify record 6 insert record *\n");
gotoxy(10,12);
cprintf(" * 7 sort record 8 save record *\n");
gotoxy(10,13);
cprintf(" * 0 quit system *\n");
gotoxy(10,14);
cprintf(" *************************************************************\n");
/*cprintf()送格式化輸出至文本窗口屏幕中*/
}
/*格式化輸出表頭*/
void printheader()
{
printf(HEADER1);
printf(HEADER2);
printf(HEADER3);
}
/*格式化輸出表中數據*/
void printdata(TELEBOOK pp)
{
TELEBOOK* p;
p=&pp;
printf(FORMAT,DATA);

}

/*顯示數組temp[]中存儲的電話簿記錄,內容為telebook結構中定義的內容*/
void Disp(TELEBOOK temp[],int n)
{
int i;
if(n==0) /*表示沒有電話簿記錄*/
{
printf("\n=====>Not telephone record!\n");
getchar();
return;
}

printf("\n\n");
printheader(); /*輸出表格頭部*/
i=0;
while(i<n) /*逐條輸出數組中存儲的電話簿記錄*/
{
printdata(temp[i]);
i++;
printf(HEADER3);
}
getchar();
}

void Wrong() /*輸出按鍵錯誤信息*/
{
printf("\n\n\n\n\n***********Error:input has wrong! press any key to continue**********\n");
getchar();
}

void Nofind() /*輸出未查找此記錄的信息*/
{
printf("\n=====>Not find this telephone record!\n");
}

/*************************************************************
作用:用於定位數組中符合要求的記錄,並返回保存該記錄的數組元素下標值
參數:findmess[]保存要查找的具體內容; nameorphonenum[]保存按什麼在數組中查找;
**************************************************************/
int Locate(TELEBOOK temp[],int n,char findmess[],char nameorphonenum[])
{
int i=0;
if(strcmp(nameorphonenum,"phonenum")==0) /*按電話號碼查詢*/
{
while(i<n)
{
if(strcmp(temp[i].phonenum,findmess)==0) /*若找到findmess值的電話號碼*/
return i;
i++;
}
}
else if(strcmp(nameorphonenum,"name")==0) /*按姓名查詢*/
{
while(i<n)
{
if(strcmp(temp[i].name,findmess)==0) /*若找到findmess值的姓名*/
return i;
i++;
}
}
return -1; /*若未找到,返回一個整數-1*/
}

/*輸入字元串,並進行長度驗證(長度<lens)*/
void stringinput(char *t,int lens,char *notice)
{
char n[255];
do{
printf(notice); /*顯示提示信息*/
scanf("%s",n); /*輸入字元串*/
if(strlen(n)>lens) printf("\n exceed the required length! \n");
/*進行長度校驗,超過lens值重新輸入*/
}while(strlen(n)>lens);
strcpy(t,n); /*將輸入的字元串拷貝到字元串t中*/

}

/*增加電話簿記錄*/
int Add(TELEBOOK temp[],int n)
{
char ch,num[10];
int i,flag=0;
system("cls");
Disp(temp,n); /*先列印出已有的電話簿信息*/

while(1) /*一次可輸入多條記錄,直至輸入編號為0的記錄才結束添加操作*/
{
while(1) /*輸入記錄編號,保證該編號沒有被使用,若輸入編號為0,則退出添加記錄操作*/
{
stringinput(num,10,"input number(press '0'return menu):"); /*格式化輸入編號並檢驗*/
flag=0;
if(strcmp(num,"0")==0) /*輸入為0,則退出添加操作,返回主界面*/
{return n;}
i=0;
while(i<n) /*查詢該編號是否已經存在,若存在則要求重新輸入一個未被佔用的編號*/
{
if(strcmp(temp[i].num,num)==0)
{
flag=1;
break;
}
i++;
}

if(flag==1) /*提示用戶是否重新輸入*/
{ getchar();
printf("==>The number %s is existing,try again?(y/n):",num);
scanf("%c",&ch);
if(ch=='y'||ch=='Y')
continue;
else
return n;
}
else
{break;}
}
strcpy(temp[n].num,num); /*將字元串num拷貝到temp[n].num中*/
stringinput(temp[n].name,15,"Name:");
stringinput(temp[n].phonenum,15,"Telephone:");
stringinput(temp[n].address,15,"Adress:");
saveflag=1;
n++;
}
return n;
}

/*按編號或姓名,查詢電話簿記錄*/
void Qur(TELEBOOK temp[],int n)
{
int select; /*1:按姓名查,2:按電話號碼查,其他:返回主界面(菜單)*/
char searchinput[20]; /*保存用戶輸入的查詢內容*/
int p=0;
if(n<=0) /*若數組為空*/
{
system("cls");
printf("\n=====>No telephone record!\n");
getchar();
return;
}
system("cls");
printf("\n =====>1 Search by name =====>2 Search by telephone number\n");
printf(" please choice[1,2]:");
scanf("%d",&select);
if(select==1) /*按姓名查詢*/
{

stringinput(searchinput,10,"input the existing name:");
p=Locate(temp,n,searchinput,"name");
/*在數組temp中查找編號為searchinput值的元素,並返回該數組元素的下標值*/
if(p!=-1) /*若找到該記錄*/
{
printheader();
printdata(temp[p]);
printf(END);
printf("press any key to return");
getchar();
}
else
Nofind();
getchar();
}
else if(select==2) /*按電話號碼查詢*/
{
stringinput(searchinput,15,"input the existing telephone number:");
p=Locate(temp,n,searchinput,"phonenum");
if(p!=-1)
{
printheader();
printdata(temp[p]);
printf(END);
printf("press any key to return");
getchar();
}
else
Nofind();
getchar();
}
else
Wrong();
getchar();

}

/*刪除電話簿記錄:先找到保存該記錄的數組元素的下標值,然後在數組中刪除該數組元素*/
int Del(TELEBOOK temp[],int n)
{
int sel;
char findmess[20];
int p=0,i=0;
if(n<=0)
{ system("cls");
printf("\n=====>No telephone record!\n");
getchar();
return n;
}
system("cls");
Disp(temp,n);
printf("\n =====>1 Delete by name =====>2 Delete by telephone number\n");
printf(" please choice[1,2]:");
scanf("%d",&sel);
if(sel==1)
{
stringinput(findmess,10,"input the existing name:");
p=Locate(temp,n,findmess,"name");
getchar();
if(p!=-1)
{
for(i=p+1;i<n;i++) /*刪除此記錄,後面記錄向前移*/
{
strcpy(temp[i-1].num,temp[i].num);
strcpy(temp[i-1].name,temp[i].name);
strcpy(temp[i-1].phonenum,temp[i].phonenum);
strcpy(temp[i-1].address,temp[i].address);

}
printf("\n==>delete success!\n");
n--;
getchar();
saveflag=1;
}
else
Nofind();
getchar();
}
else if(sel==2) /*先按電話號碼查詢到該記錄所在的數組元素的下標值*/
{
stringinput(findmess,15,"input the existing telephone number:");
p=Locate(temp,n,findmess,"phonenum");
getchar();
if(p!=-1)
{
for(i=p+1;i<n;i++) /*刪除此記錄,後面記錄向前移*/
{
strcpy(temp[i-1].num,temp[i].num);
strcpy(temp[i-1].name,temp[i].name);
strcpy(temp[i-1].phonenum,temp[i].phonenum);
strcpy(temp[i-1].address,temp[i].address);
}
printf("\n=====>delete success!\n");
n--;
getchar();
saveflag=1;
}
else
Nofind();
getchar();
}
return n;
}

/*修改電話簿記錄。先按輸入的聯系人姓名查詢到該記錄,
然後提示用戶修改該記錄編號之外的值,編號不能修改*/
void Modify(TELEBOOK temp[],int n)
{
char findmess[20];
int p=0;
if(n<=0)
{ system("cls");
printf("\n=====>No telephone number record!\n");
getchar();
return ;
}
system("cls");
printf("modify telephone book recorder");
Disp(temp,n);
stringinput(findmess,10,"input the existing name:"); /*輸入並檢驗該姓名*/
p=Locate(temp,n,findmess,"name"); /*查詢到該數組元素,並返回下標值*/
if(p!=-1) /*若p!=-1,表明已經找到該數組元素*/
{
printf("Number:%s,\n",temp[p].num);
printf("Name:%s,",temp[p].name);
stringinput(temp[p].name,15,"input new name:");

printf("Name:%s,",temp[p].phonenum);
stringinput(temp[p].phonenum,15,"input new telephone:");

printf("Name:%s,",temp[p].address);
stringinput(temp[p].address,30,"input new address:");

printf("\n=====>modify success!\n");
getchar();
Disp(temp,n);
getchar();
saveflag=1;
}
else
{Nofind();
getchar();
}
return ;
}

/*插入記錄:按編號查詢到要插入的數組元素的位置,然後在該記錄編號之後插入一個新數組元素。*/
int Insert(TELEBOOK temp[],int n)
{
char ch,num[10],s[10]; /*s[]保存插入點位置之前的記錄編號,num[]保存輸入的新記錄的編號*/
TELEBOOK newinfo;
int flag=0,i=0,kkk=0;
system("cls");
Disp(temp,n);
while(1)
{ stringinput(s,10,"please input insert location after the Number:");
flag=0;i=0;
while(i<n) /*查詢該編號是否存在,flag=1表示該編號存在*/
{
if(strcmp(temp[i].num,s)==0) {kkk=i;flag=1;break;}
i++;
}
if(flag==1)
break; /*若編號存在,則進行插入之前的新記錄輸入操作*/
else
{ getchar();
printf("\n=====>The number %s is not existing,try again?(y/n):",s);
scanf("%c",&ch);
if(ch=='y'||ch=='Y')
{continue;}
else
{return n;}
}
}
/*以下新記錄的輸入操作與Add()相同*/

while(1)
{ stringinput(num,10,"input new Number:");
i=0;flag=0;
while(i<n) /*查詢該編號是否存在,flag=1表示該編號存在*/
{
if(strcmp(temp[i].num,num)==0) {flag=1;break;}
i++;
}
if(flag==1)
{
getchar();
printf("\n=====>Sorry,The number %s is existing,try again?(y/n):",num);
scanf("%c",&ch);
if(ch=='y'||ch=='Y')
{continue;}
else
{return n;}
}
else
break;
}

strcpy(newinfo.num,num); /*將字元串num拷貝到newinfo.num中*/
stringinput(newinfo.name,15,"Name:");
stringinput(newinfo.phonenum,15,"Telephone:");
stringinput(newinfo.address,15,"Adress:");

saveflag=1; /*在main()有對該全局變數的判斷,若為1,則進行存檔操作*/

for(i=n-1;i>kkk;i--) /*從最後一個組織元素開始往向移一個元素位置*/
{
strcpy(temp[i+1].num,temp[i].num);
strcpy(temp[i+1].name,temp[i].name);
strcpy(temp[i+1].phonenum,temp[i].phonenum);
strcpy(temp[i+1].address,temp[i].address);
}
strcpy(temp[kkk+1].num,newinfo.num); /*在kkk的元素位置後插入新記錄*/
strcpy(temp[kkk+1].name,newinfo.name);
strcpy(temp[kkk+1].phonenum,newinfo.phonenum);
strcpy(temp[kkk+1].address,newinfo.address);
n++;
Disp(temp,n);
printf("\n\n");
getchar();
return n;
}

/*利用選擇排序法實現數組的按記錄編號或姓名的升序排序*/
void SelectSort(TELEBOOK temp[],int n)
{
int i=0,j=0,flag=0,indexmin,select;
char charflag[10];
TELEBOOK newinfo;
if(n<=0)
{ system("cls");
printf("\n=====>Not telephone record!\n");
getchar();
return ;
}
system("cls");
Disp(temp,n); /*顯示排序前的所有記錄*/
printf(" ==>1 SORT BY NUMBER ==>2 SORT BY NAME\n");
printf(" please choice[1,2]:");
scanf("%d",&select);
if(select==1) /*按記錄編號排序*/
{
for(i=0;i<n-1;i++)
{
flag=32767;indexmin=0;
for(j=i;j<n;j++)
{ if(atoi(temp[j].num)<flag)
{ flag=atoi(temp[j].num);
indexmin=j;
}
}
strcpy(newinfo.num,temp[i].num); /*利用結構變數newinfo實現數組元素的交換*/
strcpy(newinfo.name,temp[i].name);
strcpy(newinfo.phonenum,temp[i].phonenum);
strcpy(newinfo.address,temp[i].address);

strcpy(temp[i].num,temp[indexmin].num);
strcpy(temp[i].name,temp[indexmin].name);
strcpy(temp[i].phonenum,temp[indexmin].phonenum);
strcpy(temp[i].address,temp[indexmin].address);

strcpy(temp[indexmin].num,newinfo.num);
strcpy(temp[indexmin].name,newinfo.name);
strcpy(temp[indexmin].phonenum,newinfo.phonenum);
strcpy(temp[indexmin].address,newinfo.address);
}
Disp(temp,n); /*顯示排序後的所有記錄*/
saveflag=1;
printf("\n =====>sort complete!\n");
getchar();
return;
}
else if(select==2)
{
for(i=0;i<n-1;i++)
{
charflag[0]=255;indexmin=0;
for(j=i;j<n;j++)
{ if(strcmp(temp[j].name,charflag)>0)
{ charflag[0]=temp[j].name;
indexmin=j;
}
}
strcpy(newinfo.num,temp[i].num); /*利用結構變數newinfo實現數組元素的交換*/
strcpy(newinfo.name,temp[i].name);
strcpy(newinfo.phonenum,temp[i].phonenum);
strcpy(newinfo.address,temp[i].address);

strcpy(temp[i].num,temp[indexmin].num);
strcpy(temp[i].name,temp[indexmin].name);
strcpy(temp[i].phonenum,temp[indexmin].phonenum);
strcpy(temp[i].address,temp[indexmin].address);

strcpy(temp[indexmin].num,newinfo.num);
strcpy(temp[indexmin].name,newinfo.name);
strcpy(temp[indexmin].phonenum,newinfo.phonenum);
strcpy(temp[indexmin].address,newinfo.address);
}
Disp(temp,n); /*顯示排序後的所有記錄*/
saveflag=1;
printf("\n =====>sort complete!\n");
getchar();
return;
}
else
{Wrong();
getchar();
getchar();
return;}

}

/*數據存檔,若用戶沒有專門進行此操作且對數據有修改,在退出系統時, 會提示用戶存檔*/
void Save(TELEBOOK temp[],int n)
{
FILE* fp;
int i=0;
fp=fopen("c:\\telephon","w");/*以只寫方式打開文本文件*/
if(fp==NULL) /*打開文件失敗*/
{
printf("\n=====>open file error!\n");
getchar();
return ;
}
for(i=0;i<n;i++)
{
if(fwrite(&temp[i],sizeof(TELEBOOK),1,fp)==1)/*每次寫一條記錄或一個結構數組元素至文件*/
{
continue;
}
else
{
break;
}
}
if(i>0)
{
getchar();
printf("\n\n=====>save file complete,total saved's record number is:%d\n",i);
getchar();
saveflag=0;
}
else
{system("cls");
printf("the current link is empty,no telephone record is saved!\n");
getchar();
}
fclose(fp); /*關閉此文件*/
}

void main()
{
TELEBOOK tele[N]; /*定義TELEBOOK結構體*/
FILE *fp; /*文件指針*/
int select; /*保存選擇結果變數*/
char ch; /*保存(y,Y,n,N)*/
int count=0; /*保存文件中的記錄條數(或元素個數)*/

fp=fopen("C:\\telephon","a+");
/*以追加方式打開文本文件c:\telephon,可讀可寫,若此文件不存在,會創建此文件*/
if(fp==NULL)
{
printf("\n=====>can not open file!\n");
exit(0);
}

while(!feof(fp))
{
if(fread(&tele[count],sizeof(TELEBOOK),1,fp)==1) /*一次從文件中讀取一條電話簿記錄*/
count++;
}
fclose(fp); /*關閉文件*/
printf("\n==>open file sucess,the total records number is : %d.\n",count);
getchar();
menu();
while(1)
{
system("cls");
menu();
printf("\n Please Enter your choice(0~8):"); /*顯示提示信息*/
scanf("%d",&select);

if(select==0)
{
if(saveflag==1) /*若對數組的數據有修改且未進行存檔操作,則此標志為1*/
{ getchar();
printf("\n==>Whether save the modified record to file?(y/n):");
scanf("%c",&ch);
if(ch=='y'||ch=='Y')
Save(tele,count);
}
printf("\n===>thank you for useness!");
getchar();
break;
}

switch(select)
{
case 1:count=Add(tele,count);break; /*增加電話簿記錄*/
case 2:system("cls");Disp(tele,count);break; /*顯示電話簿記錄*/
case 3:count=Del(tele,count);break; /*刪除電話簿記錄*/
case 4:Qur(tele,count);break; /*查詢電話簿記錄*/
case 5:Modify(tele,count);break; /*修改電話簿記錄*/
case 6:count=Insert(tele,count);break; /*插入電話簿記錄*/
case 7:SelectSort(tele,count);break; /*排序電話簿記錄*/
case 8:Save(tele,count);break; /*保存電話簿記錄*/
default: Wrong();getchar();break; /*按鍵有誤,必須為數值0-9*/
}
}
}

⑨ c語言 電話薄 急!

還沒結束啊。那我還來混分吧。呵呵。
#include<stdio.h>
#include<string.h>
#include<string.h>

typedef struct
{
char nom[20];
int age;
char addresse[20];
int telephone;
char email[20];
}mem;
int i=0; //全局變數
int num=0;//聯系人的個數

void ajoute(mem g[])
{
int j;
char a[20];
int b;
char c[20];
int d;
char e[20];
int x;

while((i<50)&&(x!=1))
{
x=2;
j=0;
printf("輸入名字\n");
scanf("%s",a);
while(a[j]!='\0')
{
g[i].nom[j]= a[j];
j++;
}

printf("輸入年齡\n");
scanf("%d",&b);
g[i].age=b;

printf("輸入地址\n");
scanf("%s",c);
j=0;
while(c[j]!='\0')
{
g[i].addresse[j]=c[j];
j++;
}

printf("輸入電話\n");
scanf("%d",&d);
g[i].telephone=d;

printf("輸入電子郵件\n");
scanf("%s",e);
j=0;
while(e[j]!='\0')
{
g[i].email[j]=e[j];
j++;
}
i++;
num++;

printf("退出,按1.\n繼續按任意鍵\n");
int m;
scanf("%d",&m);
if(m == 1)
{
x=1;
printf("Out!\n");
}
}

}

void suprression(mem g[])
{
int f;

printf("輸入要刪除的電話\n");
scanf("%d",&f);
for(i=0;i<50;i++)
{
if (g[i].telephone==f)
{
g[i]=g[i+1];
}
}
num--;
}

void affichage_tous(mem g[])
{
for(i=0;i<num;i++)
{
printf("第%d個聯系人是:%s\n",i,g[i].nom);
}

}

void information(mem g[],char k[])
{
int j;
printf("輸入您想了解的名字\n");
scanf("%s",k);
for(i=0;i<50;i++)
{
for(j=0;k[j]!='\0'&&j<20;j++)
{
if(strcmp(g[i].nom,k)==0) //字元串判斷。
{
printf("%s\n",g[i].nom);
printf("%d\n",g[i].age);
printf("%s\n",g[i].addresse);
printf("%d\n",g[i].telephone);
printf("%s\n",g[i].email);
break;
}
}
}
}

void recherche(mem g[])
{
char h;
printf("輸入聯系人的首字母:\n");
scanf("%c",&h);
h=getchar();

printf("查找到的人是:\n");
for(i=0;i<50;i++)
{
if(g[i].nom[0]==h)
{
printf("%s\n",g[i].nom);
}
}
}

int main()
{
mem g[50]={0};
char k[20];
int menu;

printf("選擇服務:\n1.增加一個聯系人; \n2.刪除一個聯系人;\n3.顯示所有聯系人;\n4.顯示某一聯系人聯系方式;\n5.找一個聯系人;\n0.退出\n");
scanf("%d",&menu);

while(menu!=0)
{
switch(menu)
{
case 1:ajoute(g);break;
case 2:suprression(g);break;
case 3:affichage_tous(g);break;
case 4:information(g,k);break;
case 5:recherche(g);break;
default:printf("Error!");
}
printf("選擇服務:\n1.增加一個聯系人; \n2.刪除一個聯系人;\n3.顯示所有聯系人;\n4.顯示某一聯系人聯系方式;\n5.找一個聯系人;\n0.退出\n");
scanf("%d",&menu);
}
return 0;
}

⑩ c語言 電話簿管理系統

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

//主函數
int main()
{
LinkQueue Q;
initAddressBook(Q);

int flag=0;
while(flag!=8)
{
printf("※※※※※主※※※※※菜※※※※※單※※※※※\n");
printf("※1、增加聯系人 2、刪除聯系人 ※\n");
printf("※3、修改聯系人 4、清空通訊錄 ※\n");
printf("※5、查找聯系人 6、按組顯示 ※\n");
printf("※7、顯示全部聯系人 8、退出 ※\n");
printf("※※※※※※※※※※※※※※※※※※※※※※※\n");
printf("請輸入編號(1-8):\n");
scanf("%d",&flag);
if(flag<1||flag>8)
{
printf("輸入錯誤請重新輸入!\n");
continue;
}
else
{
switch(flag){
case 1:
if(enAddressBook(Q))
printf("增加聯系人成功!\n");
else
printf("增加聯系人失敗!\n");
break;
case 2:
if(delPerson(Q))
printf("刪除聯系人成功!\n");
else
printf("聯系人刪除失敗!\n");
break;
case 3:
if(update(Q))
printf("修改聯系人成功!\n");
else
printf("修改聯系人失敗!\n");
break;
case 4:
if(clearAddressBook(Q))
printf("通訊錄已清空!\n");
else
printf("通訊錄清空失敗!\n");
break;
case 5:
findByName(Q);
break;
case 6:
findByGroup(Q);
break;
case 7:
disAll(Q);
break;
case 8:
system("cls");
break;
}
}
}
printf("※※※※※感謝您使用本系統!※※※※※※\n");
return 0;
}
//初始化通訊錄

void initAddressBook(LinkQueue &Q)
{
Q.front=Q.rear=(QNode *)malloc(sizeof(QNode));
if(!Q.front)
exit(1);
else
Q.front->next=NULL;

}
//清空通訊錄
bool clearAddressBook(LinkQueue &Q)
{
system("cls");
while(addressBookLength(Q)!=0)
{
QNode *p;
p=Q.front->next;
Q.front->next=p->next;
if(p==Q.rear)
Q.rear=Q.front;
free(p);
}
return true;
}
//通訊錄當前人數
int addressBookLength(LinkQueue &Q)
{
int i=0;
QNode *p;
p=Q.front;
if(Q.front==Q.rear)
i=0;
else
{
while(p!=Q.rear)
{
p=p->next;
i++;
}
}
return i;
}
//刪除聯系人
bool delPerson(LinkQueue &Q)
{
char _name[20];
system("cls");
printf("請輸入要刪除的聯系人的姓名:\n");
scanf("%s",_name);
QNode *p,*q;
if(Q.front==Q.rear)
{
printf("通訊錄為空!\n");
return false;
}
else
{
p=Q.front;
q=Q.front->next;
while(q!=Q.rear){
if(strcmp(q->name,_name)==0)
{
p->next=q->next;
free(q);//刪除節點
return true;
}
else
{
p=p->next;
q=q->next;
}
}
if((strcmp(q->name,_name)==0))
{
free(q);
Q.front=Q.rear;
return true;
}
else
{
printf("無此聯系人!\n");
return false;
}
}
}
//查找聯系人
bool findByName(LinkQueue &Q)
{
system("cls");
if(Q.front==Q.rear)
{
printf("手機中無聯系人!\n");
return false;
}
else
{
char _name[20];
printf("請輸入要查詢的聯系人姓名:\n");
scanf("%s",_name);
QNode *p;
p=Q.front->next;
while(p->next!=NULL)
{
if(strcmp(p->name,_name)==0)
{
printf("姓名:%s 號碼:%s 分組:%s\n",p->name,p->tel,p->group);
return true;
}
p=p->next;
}
if(strcmp(p->name,_name)==0){
printf("姓名:%s 號碼:%s 分組:%s\n",p->name,p->tel,p->group);
return true;
}
else
{
printf("查無此人!\n");
return false;
}
}
}
//按組顯示聯系人
bool findByGroup(LinkQueue &Q)
{
system("cls");
if(Q.front==Q.rear)
{
printf("手機中無聯系人!\n");
return false;
}
else
{
char _group[20];
printf("請輸入要查詢的分組:\n");
scanf("%s",_group);
QNode *p;
p=Q.front->next;
while(p->next!=NULL)
{
if(strcmp(p->group,_group)==0)
{
printf("姓名:%s 號碼:%s \n",p->name,p->tel);
}
p=p->next;
}
if(strcmp(p->group,_group)==0){
printf("姓名:%s 號碼:%s \n",p->name,p->tel);
return true;
}
else
{
printf("無此分組!\n");
return false;
}
}
}
//增加聯系人
bool enAddressBook(LinkQueue &Q)
{
system("cls");
QNode *p;
p=(QNode *)malloc(sizeof(QNode));
if(!p)
return false;
else
{
printf("請輸入聯系人姓名:\n");
scanf("%s",p->name);
printf("請輸入聯系人號碼:\n");
scanf("%s",&p->tel);
printf("請輸入聯系人分組:\n");
scanf("%s",p->group);
if(Q.front->next==NULL)
{
Q.front->next=p;
Q.rear=p;
Q.rear->next=NULL;
}
else
{
p->next=NULL;
Q.rear->next=p;
Q.rear=p;
}
return true;
}
}
//修改聯系人
bool update(LinkQueue &Q)
{
system("cls");
if(Q.front==Q.rear)
{
printf("手機中無聯系人!\n");
return false;
}
else
{
char _name[20];
printf("請輸入要修改的聯系人姓名:\n");
scanf("%s",_name);
QNode *p;
p=Q.front->next;
while(p->next!=NULL)
{
if(strcmp(p->name,_name)==0)
{
printf("請輸入新聯系人姓名:\n");
scanf("%s",p->name);
printf("請輸入新聯系人號碼:\n");
scanf("%s",&p->tel);
printf("請輸入新聯系人分組:\n");
scanf("%s",p->group);
return true;
}
p=p->next;
}
if(strcmp(p->name,_name)==0){
printf("請輸入新聯系人姓名:\n");
scanf("%s",p->name);
printf("請輸入新聯系人號碼:\n");
scanf("%s",&p->tel);
printf("請輸入新聯系人分組:\n");
scanf("%s",p->group);
return true;
}
else
{
printf("查無此人!\n");
return false;
}
}
}
//顯示所有聯系人
void disAll(LinkQueue &Q)
{
system("cls");
int i=0;
QNode *p;
p=Q.front->next;
if(Q.front==Q.rear)
printf("無聯系人!\n");
else
{
printf(" 姓名 號碼 分組\n");
while(p!=NULL){
printf("%15s %15s %15s\n",p->name,p->tel,p->group);
p=p->next;
}
}
}