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

用基礎c語言設計電話簿

發布時間: 2023-05-22 03:46:29

『壹』 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.結構體內包括姓名和電話

請根據需要進行適當修改

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h>
structrecord
{
charid[10];
charname[20];
charphone[20];
}Contacts[500];
intnum=0;//外部變數num為文件中的紀錄數
FILE*fp;
voidmainmenu();//主菜單
voidnewrecord();//新添紀錄
voidsearchmenu();//查詢菜單
voidsearchbyid();//按編號查詢
voidsearchbyname();//按姓名查詢
voidsearchbyphone();//按電話查詢
voiddeletemenu();//刪除菜單
voiddeleteall();//刪除所有
voiddeleteone();//刪除單個
voidshowall();//顯示所有
voidreadfromfile();//讀取文件
voidwritetofile();//寫入文件
voiddeletebyid();//按編號刪除
voiddeletebyname();//按姓名刪除
voidlistbyid();//按編號排序
voidlistbyname();//按姓名排序
voidlistmenu();//排序菜單
voidmain()
{
readfromfile();
while(1)
{
mainmenu();
}
}
voidreadfromfile()//從文件導入
{
if((fp=fopen(".\Contacts.dat","rb"))==NULL)
{
printf(" 通訊錄文件不存在");
if((fp=fopen(".\Contacts.dat","wb"))==NULL)
{
printf(" 建立失敗");
exit(0);
}
else
{
printf(" 通訊錄文件已建立");
printf(" 按任意鍵進入主菜單");
getch();
return;
}
exit(0);
}
fseek(fp,0,2);/*文件位置指針移動到文件末尾*/
if(ftell(fp)>0)/*文件不為空*/
{
rewind(fp);/*文件位置指針移動到文件開始位置*/
for(num=0;!feof(fp)&&fread(&Contacts[num],sizeof(structrecord),1,fp);num++);
printf(" 文件導入成功");
printf(" 按任意鍵返回主菜單");
getch();
return;
}
printf(" 文件導入成功");
printf(" 通訊錄文件中無任何紀錄");
printf(" 按任意鍵返回主菜單");
getch();
return;
}
voidmainmenu()//主菜單
{
charchoic;
system("cls");
printf(" ********************主菜單********************");
printf(" ***********1-新添紀錄2-查詢菜單************");
printf(" ***********3-刪除菜單4-記錄排序************");
printf(" ***********5-保存退出6-不保存退出***********");
printf(" ************************************************");
printf(" 請選擇:");
choic=getch();
switch(choic)
{
case'1':newrecord();break;
case'2':searchmenu();break;
case'3':deletemenu();break;
case'4':listmenu();break;
case'5':writetofile();break;
case'6':exit(0);
default:mainmenu();
}
}
voidsearchmenu()//查詢菜單
{
charchoic;
system("cls");
printf(" *******************查詢菜單*******************");
printf(" **********1-顯示所有2-按編號查詢************");
printf(" **********3-按姓名查詢4-按電話查詢************");
printf(" **********5-返回主菜單************");
printf(" ************************************************");
printf(" 請選擇:");
choic=getch();
switch(choic)
{
case'1':showall();break;
case'2':searchbyid();break;
case'3':searchbyname();break;
case'4':searchbyphone();break;
case'5':mainmenu();break;
}
}
voiddeletemenu()//刪除菜單
{
charchoic;
if(num==0)
{
printf(" 對不起,文件中無任何紀錄");
printf(" 按任意鍵返回主菜單");
getch();
return;
}
system("cls");
printf(" *******************刪除菜單*******************");
printf(" ***********1-刪除所有2-刪除單個***********");
printf(" ***********3-返回主菜單***********");
printf(" ************************************************");
printf(" 請選擇:");
choic=getch();
switch(choic)
{
case'1':deleteall();break;
case'2':deleteone();break;
case'3':mainmenu();break;
default:mainmenu();break;
}
}
voiddeleteall()//刪除所有
{
printf(" 確認刪除?(y/n)");
if(getch()=='y')
{
fclose(fp);
if((fp=fopen("Contacts.bin","wb"))==NULL)
{
printf(" 不能打開文件,刪除失敗");
readfromfile();
}
num=0;
printf(" 紀錄已刪除,按任意鍵返回主菜單");
getch();
return;
}
else
return;
}
voiddeletebyname()//按姓名刪除
{
inta=0;
intfindmark=0;
intj;
intdeletemark=0;
inti;
charname[20];
printf(" 請輸入要刪除聯系人的姓名:");
scanf("%s",name);
for(i=a;i<num;i++)
{
if(strcmp(Contacts[i].name,name)==NULL)
{
printf(" 以下是您要刪除的聯系人紀錄:");
findmark++;
printf(" ________________________________");
printf(" 編號:%s",Contacts[i].id);
printf(" 姓名:%s",Contacts[i].name);
printf(" 電話:%s",Contacts[i].phone);
printf(" ________________________________");
printf(" 是否刪除?(y/n)");
if(getch()=='y')
{
for(j=i;j<num-1;j++)/*紀錄移動,從Contacts數組中刪除之*/
Contacts[j]=Contacts[j+1];
num--;
deletemark++;
printf(" 刪除成功");
if((i+1)<num)
{
printf(" 是否繼續刪除相同姓名的聯系人信息?(y/n)");
if(getch()=='y')
{
a=i;
continue;
}
}
printf(" 是否繼續刪除?(y/n)");
if(getch()=='y')
deletebyname();
return;
}
if((i+1)<num)
{
printf(" 是否繼續刪除相同姓名的聯系人信息?(y/n)");
if(getch()=='y')
{
a=i;
continue;
}
}
}
else
continue;
}
if((deletemark==0)&&(findmark==0))
{
printf(" 沒有該聯系人的紀錄");
printf(" 是否繼續刪除?(y/n)");
if(getch()=='y')
deletebyid();
return;
return;
}
elseif(findmark!=0)
{
printf(" 沒有重名信息");
printf(" 沒有該聯系人的紀錄");
printf(" 是否繼續刪除?(y/n)");
if(getch()=='y')
deletebyid();
return;
return;
}
}
voiddeletebyid()//按編號刪除
{
inti,j;
intdeletemark=0;
charid[20];
printf(" 請輸入要刪除聯系人編號:");
scanf("%s",id);
if(num==0)
{
printf(" 對不起,文件中無任何紀錄");
printf(" 按任意鍵返回主菜單");
getch();
return;
}
for(i=0;i<num;i++)
{
if(strcmp(Contacts[i].id,id)==NULL)
{
printf(" 以下是您要刪除的聯系人紀錄:");
printf(" 編號:%s",Contacts[i].id);
printf(" 姓名:%s",Contacts[i].name);
printf(" 電話:%s",Contacts[i].phone);
printf(" 是否刪除?(y/n)");
if(getch()=='y')
{
for(j=i;j<num-1;j++)/*紀錄移動,從Contacts數組中刪除之*/
Contacts[j]=Contacts[j+1];
num--;
deletemark++;
printf(" 刪除成功");
printf(" 是否繼續刪除?(y/n)");
if(getch()=='y')
deletebyid();
return;
}
else
return;
}
continue;

}
if(deletemark==0)
{
printf(" 沒有該聯系人的紀錄");
printf(" 是否繼續刪除?(y/n)");
if(getch()=='y')
deletebyid();
return;
}
}
voidnewrecord()//添加紀錄
{
printf(" ****************請輸入聯系人信息**************** ");
printf(" 輸入編號:");
scanf("%s",&Contacts[num].id);
printf(" 輸入姓名:");
scanf("%s",&Contacts[num].name);
printf(" 輸入電話號碼:");
scanf("%s",&Contacts[num].phone);
num++;
printf(" 是否繼續添加?(Y/N):");
if(getch()=='y')
newrecord();
return;
}
voidshowall()//顯示所有
{
inti;
system("cls");
if(num!=0)
{
printf(" ***************以下為通訊錄所有信息************");
for(i=0;i<num;i++)
{
printf(" 編號:%s",Contacts[i].id);
printf(" 姓名:%s",Contacts[i].name);
printf(" 電話:%s",Contacts[i].phone);
printf(" ");
if(i+1<num)
{
printf(" __________________________");
system("pause");
}
}
printf(" ************************************************");
}
else
printf(" 通訊錄中無任何紀錄");
printf(" 按任意鍵返回主菜單:");
getch();
return;
}

//按電話查詢
voidsearchbyphone()
{
intmark=0;
inti;
inta=0;
printf(" ******************按電話查找******************");
charphone[10];
printf(" 請輸入編號:");
scanf("%s",phone);
for(i=0;i<num;i++)
{
if(strcmp(Contacts[i].phone,phone)==0)
{
printf(" **************以下是您查找的聯系人信息**********");
printf(" 編號:%s",Contacts[i].id);
printf(" 姓名:%s",Contacts[i].name);
printf(" 電話:%s",Contacts[i].phone);
printf(" ************************************************");
printf(" 按任意鍵返回主菜單:");
mark++;
getch();
return;
}
}
if(mark==0)
{
printf(" 沒有改聯系人的信息");
printf(" 按任意鍵返回主菜單");
getch();
return;
}
}
voidsearchbyname()//按姓名查詢
{
intmark=0;
inti;
inta=0;
printf(" *****************按姓名查找*******************");
charname[20];
printf(" 請輸入姓名:");
scanf("%s",name);
for(i=a;i<num;i++)
{
if(strcmp(Contacts[i].name,name)==0)
{
printf(" *************以下是您查找的聯系人信息***********");
printf(" 編號:%s",Contacts[i].id);
printf(" 姓名:%s",Contacts[i].name);
printf(" 電話:%s",Contacts[i].phone);
printf(" ************************************************");
mark++;
if((i+1)<num)
{
printf(" 是否繼續查找相同名字的聯系人信息:(y/n)");
if(getch()=='y')
{
a=i;
continue;
}
else
return;
}
else
{
printf(" 按任意鍵返回主菜單");
getch();
return;
}
}
}
if(mark!=0)
{
printf(" 沒有相同姓名的聯系人紀錄");
printf(" 按任意鍵返回主菜單");
getch();
return;
}
else
{
printf(" 沒有相同姓名的聯系人紀錄");
printf(" 按任意鍵返回主菜單");
getch();
return;
}
}
voidsearchbyid()//按編號查詢
{
intmark=0;
inti;
inta=0;
printf(" ******************按編號查找****************** ");
charid[10];
printf(" 請輸入編號:");
scanf("%s",id);
for(i=0;i<num;i++)
{
if(strcmp(Contacts[i].id,id)==0)
{
printf(" **************以下是您查找的聯系人信息**********");
printf(" 編號:%s",Contacts[i].id);
printf(" 姓名:%s",Contacts[i].name);
printf(" 電話:%s",Contacts[i].phone);
printf(" ************************************************");
printf(" 按任意鍵返回主菜單:");
mark++;
getch();
return;
}

}
if(mark==0)
{
printf(" 沒有改聯系人的信息");
printf(" 按任意鍵返回主菜單");
getch();
return;
}
}
voidwritetofile()//寫入文件
{
inti;
if((fp=fopen(".\Contacts.dat","wb"))==NULL)
{
printf(" 文件打開失敗");
}
for(i=0;i<num;i++)
{
if(fwrite(&Contacts[i],sizeof(structrecord),1,fp)!=1)
{
printf(" 寫入文件錯誤! ");
}
}
fclose(fp);
printf(" 通訊錄文件已保存");
printf(" 按任意鍵退出程序 ");
exit(0);

}
voiddeleteone()//刪除單個
{
charchoic;
printf(" 1-按編號刪除2-按姓名刪除");
printf(" 請選擇:");
choic=getch();
switch(choic)
{
case'1':deletebyid();break;
case'2':deletebyname();break;
}
}
voidlistbyname()//按姓名排序
{
inti,j;
structrecordtmp;
for(i=1;i<num;i++)
{
if(strcmp(Contacts[i].name,Contacts[i-1].name)<0)
{
tmp=Contacts[i];
j=i-1;
do
{
Contacts[j+1]=Contacts[j];
j--;
}while((strcmp(tmp.name,Contacts[j].name)<0&&j>=0));
Contacts[j+1]=tmp;
}
}
printf(" 排序成功,是否顯示?(y/n)");
if(getch()=='y')
showall();
return;
}
voidlistbyid()//按編號排序
{
inti,j;
structrecordtmp;
for(i=1;i<num;i++)
{
if(strcmp(Contacts[i].id,Contacts[i-1].id)<0)
{
tmp=Contacts[i];
j=i-1;
do
{
Contacts[j+1]=Contacts[j];
j--;
}while((strcmp(tmp.id,Contacts[j].id)<0)&&j>=0);
Contacts[j+1]=tmp;
}
}
printf(" 排序成功,是否顯示?(y/n)");
if(getch()=='y')
showall();
return;
}
voidlistmenu()//排序菜單
{
charchoic;
if(num==0)
{
printf(" 對不起,文件中無任何紀錄");
printf(" 按任意鍵返回主菜單");
getch();
return;
}
system("cls");
printf(" *******************排序菜單*******************");
printf(" **********1-按編號排序2-按姓名排序**********");
printf(" **********3-返回主菜單**********");
printf(" ************************************************");
printf(" 請選擇:");
choic=getch();
switch(choic)
{
case'1':listbyid();break;
case'2':listbyname();break;
case'3':mainmenu();break;
default:mainmenu();break;
}
}

『叄』 用C語言編寫一個手機電話本程序

#include <stdio.h> #include <stdlib.h> #include <string.h> #define szSTR 64 #define fileDB "c:\\contact.txt" struct CONTACT { char name[szSTR];/*姓名*/ char unit[szSTR];/*工作單位*/ char tele[szSTR];/*電話*/ char mail[szSTR];/*mail*/ }; typedef struct CONTACT CON; #define BNAME 1 #define BUNIT 2 #define BTELE 4 #define BMAIL 8 #define BFULL 0xFF int OPER[5] = ; void input(CON * s, int mask) { if(mask & BNAME) if(mask & BUNIT) if(mask & BTELE) if(mask & BMAIL) }/*end input*/ void show (int id, CON * s) { if(!s) return ; if(id) printf("%d\t%s\t%s\t%s\t%s\n", id, s->name , s->unit , s->tele , s->mail ); else printf("%s%s%s%s\n", s->name , s->unit , s->tele , s->mail ); /*end if*/ }/*end show*/ void regist(void) { CON s; FILE * f = 0; input(&s, BFULL); f = fopen(fileDB, "ab"); fwrite(&s,sizeof(s),1,f); fclose(f); printf("資料已保存!\n"); }/*end regist*/ int browse(char * key, fpos_t * p, CON * s) { FILE * f =0; int i = 0, r = 0; CON t; char * a = 0, * b = 0; fpos_t q; if(!s) return 0; f = fopen(fileDB, "rb"); if(!f) { printf("資料庫暫無記錄\n"); return 0; }/*end if*/ printf("編號\t姓名\t單位\t電話\t電郵\n"); printf("------------------------------------------------\n"); while(!feof(f)) { fgetpos(f, &q); r = fread(&t, sizeof(t), 1, f); if(r<1)break; if(t.name[0]==0) continue; if(key) { a = strstr(t.name , key); b = strstr(t.tele , key); if(a == 0 && b == 0) continue; }/*end if*/ if(p) *p = q; if(s) memcpy(s, &t, sizeof(t)); i++; show(i, &t); }/*end while*/ fclose(f); printf("------------------------------------------------\n"); return i; }/*end browse*/ fpos_t query(CON * s) { char key[szSTR]=""; fpos_t p = 0; int r = 0; printf("請輸入姓名或者電話號碼:"); scanf("%s", key); r = browse(key, &p, s); return r?p:-1; }/*end query*/ void clear(void) { FILE * f = 0; CON s; fpos_t p = query(&s); if(p<0) return; f = fopen(fileDB, "rb+"); fsetpos(f, &p); memset(&s, 0, sizeof(s)); fwrite(&s, sizeof(s),1, f); fclose(f); printf("記錄已刪除!\n"); }/*end clear*/ void modify(void) { FILE * f = 0; CON s; int cmd = 0; fpos_t p = query(&s); if(p<0) return; f = fopen(fileDB, "rb+"); fsetpos(f, &p); for(;;) { show(0, &s); printf("請選擇:1-姓名;2-工作單位;3-電話;4-電郵;5-保存並退出;6-放棄修改並退出\n"); scanf("%d", &cmd); switch(cmd) { case 1: case 2: case 3: case 4: input(&s, OPER[cmd]); break; case 5: fsetpos(f, &p); fwrite(&s, sizeof(s), 1, f); case 6: fclose(f); return; default: printf("錯誤的操作,請重新輸入。\n"); }/*end case*/ }/*mext*/ }/*end clear*/ int main(void) { int cmd = 0; CON s; for(;;) { printf("歡迎使用通信簿!請選擇:1-添加;2-查詢;3-刪除;4-修改;5-全部輸出;0-退出\n"); scanf("%d", &cmd); switch(cmd) { case 0: return 0; case 1: regist(); break; case 2: query(&s); break; case 3: clear(); break; case 4: modify(); break; case 5: browse(0, 0, &s); break; }//end case } return 0; }

記得採納啊

『肆』 C程序設計(C語言)通訊錄如何編寫

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

#define MAX 100

struct addr{
char name[30];
char street[40];
char city[20];
char state[3];
unsigned long int zip;
}addr_list[MAX];

void init_list(void);
int menu_select(void);
void enter(void);
int find_free(void);
void deleted(void);
void list(void);

int main(void){
char choice;

init_list(); /* initialize the structure array */

for(;;){
choice=menu_select();
switch(choice){
case 1:
enter();
break;
case 2:
deleted();
break;
case 3:
list();
break;
case 4:
exit(0);
}
}

return 0;
}

/* initialize the list*/
void init_list(void){
register int t;

for(t=0;t<MAX;++t)
addr_list[t].name[0]='\0';
}

/* Get a menu selection*/
int menu_select(void){
int c;

printf("1.Enter a name\n");
printf("2.deleted a name\悉塌n");
printf("3.List the file\n");
printf("脊滑4.Quit\n");

do{
printf("\nEnter your choice:");
scanf("%d",&c);
}while(c<0||c>4);

return c;
}

/* Input address into the list*/
void enter(void){
int slot;
char s[80];

slot=find_free();
if(slot==-1){
printf("\nList Full");
return;
}

printf("Enter name: ");
gets(addr_list[slot].name);
printf("Enter street: ");
gets(addr_list[slot].street);
printf("Enter city: ");
gets(addr_list[slot].city);
printf("Enter state: ");
gets(addr_list[slot].state);
printf("Enter zip: ");
gets(s);
addr_list[slot].zip=strtoul(s,'\0',10);
}

/* Find an unused structure.*/
int find_free(void){
register int t;

for(t=0;addr_list[t].name[0]&&t<MAX;++t);

if(t==MAX)
return -1;
return t;
}

/* deleted an address.*/
void deleted(void){
register int slot;
char s[80];

printf("Enter record #: ");
gets(s);
slot=atoi(s);
if(slot>=0&&slot<MAX)
addr_list[slot].name[0]='\0';
}

/* Display the list on the screen*/
void list(void){
register int t;

for(t=0;t<MAX;++t){
if(addr_list[t].name[0]){
printf("%s\睜野圓n",addr_list[t].name);
printf("%s\n",addr_list[t].street);
printf("%s\n",addr_list[t].city);
printf("%s\n",addr_list[t].state);
printf("%lu\n",addr_list[t].zip);
}
}
printf("\n\n");
}
我以前寫的一個。。你參考參考吧

『伍』 c語言程序設計 電話簿管理系統

intmain()
{
LinkQueueQ;
initAddressBook(Q);

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

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

}
//清空通訊錄
boolclearAddressBook(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);
}
returntrue;
}
//通訊錄當前人數
intaddressBookLength(LinkQueue&Q)
{
inti=0;
QNode*p;
p=Q.front;
if(Q.front==Q.rear)
i=0;
else
{
while(p!=Q.rear)
{
p=p->next;
i++;
}
}
returni;
}
//刪除聯系人
booldelPerson(LinkQueue&Q)
{
char_name[20];
system("cls");
printf("請輸入要刪除的聯系人的姓名: ");
scanf("%s",_name);
QNode*p,*q;
if(Q.front==Q.rear)
{
printf("通訊錄為空! ");
returnfalse;
}
else
{
p=Q.front;
q=Q.front->next;
while(q!=Q.rear){
if(strcmp(q->name,_name)==0)
{
p->next=q->next;
free(q);//刪除節點
returntrue;
}
else
{
p=p->next;
q=q->next;
}
}
if((strcmp(q->name,_name)==0))
{
free(q);
Q.front=Q.rear;
returntrue;
}
else
{
printf("無此聯系人! ");
returnfalse;
}
}
}
//查找聯系人
boolfindByName(LinkQueue&Q)
{
system("cls");
if(Q.front==Q.rear)
{
printf("手機中無聯系人! ");
returnfalse;
}
else
{
char_name[20];
printf("請輸入要查詢的聯系人姓名: ");
scanf("%s",_name);
QNode*p;
p=Q.front->next;
while(p->next!=NULL)
{
if(strcmp(p->name,_name)==0)
{
printf("姓名:%s號碼:%s分組:%s ",p->name,p->tel,p->group);
returntrue;
}
p=p->next;
}
if(strcmp(p->name,_name)==0){
printf("姓名:%s號碼:%s分組:%s ",p->name,p->tel,p->group);
returntrue;
}
else
{
printf("查無此人! ");
returnfalse;
}
}
}
//按組顯示聯系人
boolfindByGroup(LinkQueue&Q)
{
system("cls");
if(Q.front==Q.rear)
{
printf("手機中無聯系人! ");
returnfalse;
}
else
{
char_group[20];
printf("請輸入要查詢的分組: ");
scanf("%s",_group);
QNode*p;
p=Q.front->next;
while(p->next!=NULL)
{
if(strcmp(p->group,_group)==0)
{
printf("姓名:%s號碼:%s ",p->name,p->tel);
}
p=p->next;
}
if(strcmp(p->group,_group)==0){
printf("姓名:%s號碼:%s ",p->name,p->tel);
returntrue;
}
else
{
printf("無此分組! ");
returnfalse;
}
}
}
//增加聯系人
boolenAddressBook(LinkQueue&Q)
{
system("cls");
QNode*p;
p=(QNode*)malloc(sizeof(QNode));
if(!p)
returnfalse;
else
{
printf("請輸入聯系人姓名: ");
scanf("%s",p->name);
printf("請輸入聯系人號碼: ");
scanf("%s",&p->tel);
printf("請輸入聯系人分組: ");
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;
}
returntrue;
}
}
//修改聯系人
boolupdate(LinkQueue&Q)
{
system("cls");
if(Q.front==Q.rear)
{
printf("手機中無聯系人! ");
returnfalse;
}
else
{
char_name[20];
printf("請輸入要修改的聯系人姓名: ");
scanf("%s",_name);
QNode*p;
p=Q.front->next;
while(p->next!=NULL)
{
if(strcmp(p->name,_name)==0)
{
printf("請輸入新聯系人姓名: ");
scanf("%s",p->name);
printf("請輸入新聯系人號碼: ");
scanf("%s",&p->tel);
printf("請輸入新聯系人分組: ");
scanf("%s",p->group);
returntrue;
}
p=p->next;
}
if(strcmp(p->name,_name)==0){
printf("請輸入新聯系人姓名: ");
scanf("%s",p->name);
printf("請輸入新聯系人號碼: ");
scanf("%s",&p->tel);
printf("請輸入新聯系人分組: ");
scanf("%s",p->group);
returntrue;
}
else
{
printf("查無此人! ");
returnfalse;
}
}
}
//顯示所有聯系人
voiddisAll(LinkQueue&Q)
{
system("cls");
inti=0;
QNode*p;
p=Q.front->next;
if(Q.front==Q.rear)
printf("無聯系人! ");
else
{
printf("姓名號碼分組 ");
while(p!=NULL){
printf("%15s%15s%15s ",p->name,p->tel,p->group);
p=p->next;
}
}
}

『陸』 c語言編寫通信錄

/*編程建立一通訊簿,存放有姓名、電話號碼、住址,然後對通信簿進行查找、添加、修改及刪除。*/
#include<stdio.h>
struct person
{
char name[8];
char tel[15];
char addr[50];
};
char filename[20];
FILE *fp;
void creat();
void output();
void search();
void append();
void modify();
void delete();
main()
{
int m;

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)
{
case 1: append();
break;
case 2: search();
break;
case 3: modify();
break;
case 4: delete();
break;
case 5: output();
break;
case 0: exit();
}
printf("\n\n操作完畢,請再次選擇!");
}
else
printf("\n\n選擇錯誤,請再次選擇!");
}
}
void creat()
{
struct person one;
long s1;
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);
}
void output()
{
struct person one;
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);
}
void append()
{
struct person one;
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);
}
void search()
{
int k=0;
char namekey[8];
struct person one;
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);
}
void modify()
{
int m,k=0;
long offset;
char namekey[8];
struct person one;
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);
}
else
printf("\n對不起,通訊簿中沒有此人的記錄。");
fclose(fp);
}
void delete()
{
int m,k=0,flag;
long offset1,offset2;
char namekey[8], valid[4];
struct person one;
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","","","");
}
}
else
printf("\n對不起,通訊簿中沒有此人的記錄。");
fclose(fp);
}

『柒』 求用【C語言】設計一個【電話簿管理程序】

自己學好

『捌』 c語言電話薄設計:

以完成,成功。圖如下,包括添加、查找、修改、刪除、退出等,可以通過生成的txt文件查看結果

#include<stdio.h>

#include<string.h>

#include<stdlib.h>

structperson

{

charname[8];

chartel[15];

charaddr[50];

};

charfilename[20]="txl.txt";

FILE*fp;

voidoutput();

voidsearch();

voidappend();

voidmodify();

voiddel();

voidmain()

{

intm;

fp=fopen(filename,"w");

fprintf(fp,"%-10s%-20s%-50s ","姓名","電話號碼","住址");

fclose(fp);

while(1)

{

printf(" *********歡迎使用通訊錄信息管理系統********* ");

printf(" 添加,請按1");

printf(" 查找,請按2");

printf(" 修改,請按3");

printf(" 刪除,請按4");

printf(" 輸出,請按5");

printf(" 退出,請按0 ");

printf(" ******************************************** ");

printf("Pleaseselect(0--5):");

scanf("%d",&m);

if(m>=0&&m<=5)

{

switch(m)

{

case1:append();

break;

case2:search();

break;

case3:modify();

break;

case4:del();

break;

case5:output();

break;

case0:exit(0);

}

printf(" 操作完畢,請再次選擇!");

}

else

printf(" 選擇錯誤,請再次選擇!");

}

}

/*輸出模塊output():輸出通訊錄中聯系人通訊信息的子函數*/

voidoutput()

{

structpersonone;

if((fp=fopen(filename,"r"))==NULL)

{

printf(" 不能打開通訊錄!");

exit(0);

}

printf(" %20s ","通訊錄");

while(!feof(fp))

{

fscanf(fp,"%s%s%s ",one.name,one.tel,one.addr);

printf("%-10s%-20s%-50s",one.name,one.tel,one.addr);

}

fclose(fp);

}

/*添加模塊append():向通訊錄中添加某人通訊信息的子函數*/

voidappend()

{

structpersonone;

if((fp=fopen(filename,"a"))==NULL)

{

printf(" 不能打開通訊錄!");

exit(0);

}

printf(" 請輸入添加的姓名、電話號碼及住址 ");

scanf("%s%s%s",one.name,one.tel,one.addr);

fprintf(fp,"%-10s%-20s%-50s ",one.name,one.tel,one.addr);

fclose(fp);

}

/*查找模塊search():在通訊錄中查找某人通訊信息的子函數*/

voidsearch()

{

intk=0;

charnamekey[8];

structpersonone;

printf(" 請輸入姓名:");

scanf("%s",namekey);

if((fp=fopen(filename,"rb"))==NULL)

{

printf(" 不能打開通訊錄!");

exit(0);

}

while(!feof(fp))

{

fscanf(fp,"%s%s%s ",one.name,one.tel,one.addr);

if(!strcmp(namekey,one.name))

{

printf(" 已查到,記錄為:");

printf(" %-10s%-18s%-50s",one.name,one.tel,one.addr);

k=1;

}

}

if(!k)

printf(" 對不起,通訊簿中沒有此人的記錄。");

fclose(fp);

}

/*修改模塊modify():在通訊錄中修改某人通訊信息的子函數*/

voidmodify()

{

intk=0;

longoffset;

charnamekey[8];

structpersonone;

printf(" 請輸入姓名:");

scanf("%s",namekey);

if((fp=fopen(filename,"r+"))==NULL)

{

printf(" 不能打開通訊錄!");

exit(0);

}

while(!feof(fp))

{

offset=ftell(fp);

fscanf(fp,"%s%s%s ",one.name,one.tel,one.addr);

if(!strcmp(namekey,one.name))

{

k=1;

break;

}

}

if(k)

{

printf(" 已查到,記錄為:");

printf(" %-10s%-18s%-50s",one.name,one.tel,one.addr);

printf(" 請輸入新姓名、電話號碼及住址:");

scanf("%s%s%s",one.name,one.tel,one.addr);

fseek(fp,offset,SEEK_SET);

/*printf("%ld",ftell(fp));*/

fprintf(fp,"%-10s%-20s%-50s ",one.name,one.tel,one.addr);

}

else

printf(" 對不起,通訊錄中沒有此人的記錄。");

fclose(fp);

}

/*刪除模塊delete():在通訊錄中刪除某人通訊信息的子函數*/

voiddel()

{

intm,k=0;

longoffset1;

charnamekey[8];

structpersonone;

printf(" 請輸入姓名:");

scanf("%s",namekey);

if((fp=fopen(filename,"r+"))==NULL)

{

printf(" 不能打開通訊錄!");

exit(0);

}

while(!feof(fp))

{

offset1=ftell(fp);

fscanf(fp,"%s%s%s ",one.name,one.tel,one.addr);

if(!strcmp(namekey,one.name))

{

k=1;

if(k)

{

printf(" 已查到,記錄為");

printf(" %-10s%-18s%-50s",one.name,one.tel,one.addr);

printf(" 確實要刪除,按1;不刪除,按0:");

scanf("%d",&m);

if(m)

{

fseek(fp,offset1,SEEK_SET);//fseek函數用來改變文件指針位置,SEEK_SET為0,表示文件開頭;為1,表示當前位置;為2表示文件結尾;

fprintf(fp,"%-10s%-20s%-50s ","","","");

}

else

printf(" 您已取消對該通訊人信息的修改。 ");

fclose(fp);

}

return;

}

}

if(!k)printf("對不起,通訊錄中沒有此人 ");

}

『玖』 C語言電話簿程序

#include#include#include#defineM500structMan//定義結構體{charName[8];//名字charDepart[20];//工作單位charQQ[10];//QQ號碼charEmail[30];//郵箱};voidtext();//相當於主函數voidtext1();//菜單輸出chartext2();//開始的版權信息輸出intDelete(ManMan[],intSize);/磨岩/刪除信息voidDisplay(Manman[]);//顯示所有記錄voidgetch();intInsert(ManMan[],intSize);//插入模塊voidModify(ManMan[],intSize);//修改模塊intS_asname(ManMan[],intSize,intn);//查找信息voidS_asqq(ManMan[],intSize);//按QQ查找模塊intSave(ManMan[],intSize);//把數據寫入文件intScan(ManMan[]);//瞎皮御從文本中讀取數據voidmain()//主函數{text();//(這邊純屬蛋疼,最多加長系統運行時間)}voidtext()//相當於主函數{Manman[M];/握睜/500人的結構體數組charcontrol=0;//菜單選擇控制變數intsize=0;//保存當前已有的記錄if(text2())//這邊可不要if,直接調用text2,顯示版權信息。{size=Scan(man);//判斷文件是否存在while(1)//菜單生成{text1();//菜單顯示scanf(

『拾』 用c語言程序設計一個學生通訊錄系統

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h>
struct record
{
char name[20]; //姓名
char phone[12]; //電話
char adress[50]; //地址
char postcode[8]; //郵政編碼
char e_mail[20]; //電子郵件。
}student[100]; //假設最大數為100.
//定義全局變數num,表示已經輸入的人數 。
int num; //這里使用數組解決通訊錄的問題,實際上使用鏈表更好。
int menu_select()
{
char s[80];
int a;/*定義整形變數*/
system("cls");
printf("\t\t***********歡迎進入通訊管理界面********\n\n");
printf("\t\t\t0. 輸入記錄\n");
printf("\t\t\t1. 顯示記錄\n");
printf("\t\t\t2. 按姓名查找\n");
printf("\t\t\t3. 按電話號碼查找\n");
printf("\t\t\t4. 插入記錄 \n");
printf("\t\t\t5. 按姓名排序\n");
printf("\t\t\t6. 刪除記錄\n");
printf("\t\t\t7. Quit\n");
printf("\t\t***********************************************\n\n");
do{
printf("Enter you choice(0~7):");
scanf("%s",s);
a=atoi(s);
}
while (a<0 || a>7);
return a;
}
int adser()
{
printf("\t\t\t**************** 請輸入用戶信息 ****************\n");
printf("\t\t\t輸入姓名:\n");
scanf("%s",student[num].name);
printf("\t\t\t輸入電話號碼:\n");
scanf("%s",student[num].phone);
printf("\t\t\t輸入地址:\n");
scanf("%s",student[num].adress);
printf("\t\t\t輸入郵編:\n");
scanf("%s",student[num].postcode);
printf("\t\t\t輸入e-mail:\n");
scanf("%s",student[num].e_mail);
num++;
printf("\t\t\t是否繼續添加?(Y/N):\n");
if(getch()=='y' || getch()=='Y')
adser();
return(0);
}
void list()
{
int i;
system("cls");
if(num!=0)
{
printf("\t\t\t*************** 以下為通訊錄所有信息************\n");
for (i=0;i<num;i++)
{
printf("\t\t\t姓名:%s\n",student[i].name);
printf("\t\t\t電話:%s\n",student[i].phone);
printf("\t\t\t地址:%s\n",student[i].adress);
printf("\t\t\t郵編:%s\n",student[i].postcode);
printf("\t\t\te-mail:%s\n",student[i].e_mail);
if(i+1<num)
{
system("pause");
}
}
printf("\t\t\t************************************************\n");
}
else
printf("\t\t\t通訊錄中無任何紀錄\n");
printf("\t\t\t按任意鍵返回主菜單:\n");
getch(); //這里是無回顯的輸入字元,你輸入的字元不會顯示在屏幕上。
return;
}
int searchbyname()
{
int mark=0;
int i;
printf("\t\t\t***************** 按姓名查找 *******************\n");
char name[20];
printf("\t\t\t請輸入姓名:\n");
scanf("%s",name);
for(i=0;i<num;i++)
{
if (strcmp(student[i].name,name)==0)
{
printf("\t\t\t************* 以下是您查找的用戶信息 ***********\n");
printf("\t\t\t姓名: %s",student[i].name);
printf("\t\t\t電話: %s",student[i].phone);
printf("\t\t\t地址: %s",student[i].adress);
printf("\t\t\te-mail:%s",student[i].e_mail);
printf("\t\t\t************************************************\n");
mark++;
if((i+1)<num)
{
printf("\t\t\t是否繼續查找相同名字的用戶信息:(y/n)\n");
if(getch()=='y' || getch()=='Y')
{
continue;
}
else
return(0);
}
else
{
printf("\t\t\t按任意鍵返回主菜單");
getch();
return(0);
}
}
}
if(mark == 0)
{
printf("\t\t\t沒有相同姓名的用戶紀錄\n");
printf("\t\t\t按任意鍵返回主菜單\n");
getch();
return(0);
}
return 0;
}
int searchbyphone()
{
int mark=0;
int i;
printf("\t\t\t****************** 按電話查找 ******************\n");
char phone[10];
printf("\t\t\t請輸入電話號碼:\n");
scanf("%s",phone);
for(i=0;i<num;i++)
{
if (strcmp(student[i].phone,phone)==0)
{
printf("\t\t\t************** 以下是您查找的用戶信息 **********\n");
printf("\t\t\t姓名: %s",student[i].name);
printf("\t\t\t電話: %s",student[i].phone);
printf("\t\t\t地址: %s",student[i].adress);
printf("\t\t\te-mail:%s",student[i].e_mail);
printf("\t\t\t************************************************\n");
printf("\t\t\t按任意鍵返回主菜單\n");
mark++;
getch();
return(0);
}
}
if (mark==0)
{
printf("\t\t\t沒有改用戶的信息\n");
printf("\t\t\t按任意鍵返回主菜單\n");
getch();
return(0);
}
return(0);
}
void deletebyphone()
{
int i,j;
int deletemark=0;
char phone[20];
printf("\t\t\t請輸入要刪除用戶電話號碼:\n");
scanf("%s",phone);
if(num==0)
{
printf("\t\t\t對不起,文件中無任何紀錄\n");
printf("\t\t\t按任意鍵返回主菜單\n");
getch();
return;
}
for (i=0;i<num;i++)
{
if (strcmp(student[i].phone,phone)==0)
{
printf("\t\t\t以下是您要刪除的用戶紀錄:\n");
printf("\t\t\t姓名: %s",student[i].name);
printf("\t\t\t電話: %s",student[i].phone);
printf("\t\t\t地址: %s",student[i].adress);
printf("\t\t\te-mail:%s",student[i].e_mail);
printf("\t\t\t是否刪除?(y/n)");
if (getch()=='y' || getch()=='Y')
{
for (j=i;j<num-1;j++)
student[j]=student[j+1];
num--;
deletemark++;
printf("\t\t\t刪除成功");
printf("\t\t\t是否繼續刪除?(y/n)");
if (getch()=='y' || getch()=='Y')
deletebyphone();
return;
}
else
return;
}
continue;
}
if (deletemark==0)
{
printf("\t\t\t沒有該用戶的紀錄");
printf("\t\t\t是否繼續刪除?(y/n)");
if(getch()=='y' || getch()=='Y')
deletebyphone();
return;
}
return;
}
void deletebyname()
{
int a=0;
int findmark=0;
int j;
int deletemark=0;
int i;
char name[20];
printf("\t\t\t請輸入要刪除用戶姓名:\n");
scanf("%s",name);
for (i=a;i<num;i++)
{
if(strcmp(student[i].name,name)==0)
{
printf("\t\t\t以下是您要刪除的用戶紀錄:");
findmark++;
printf("\t\t\t________________________________");
printf("\t\t\t姓名: %s",student[i].name);
printf("\t\t\t電話: %s",student[i].phone);
printf("\t\t\t地址: %s",student[i].adress);
printf("\t\t\te-mail:%s",student[i].e_mail);
printf("\t\t\t________________________________");
printf("\t\t\t是否刪除?(y/n)");
if (getch()=='y' || getch() == 'Y')
{
for(j=i;j<num-1;j++)
student[j]=student[j+1];
num--;
deletemark++;
printf("\t\t\t刪除成功");
if((i+1)<num)
{
printf("\t\t\t是否繼續刪除相同姓名的用戶信息?(y/n)");
if (getch()=='y')
{
a=i;
continue;
}
}
printf("\t\t\t是否繼續刪除?(y/n)");
if (getch()=='y')
deletebyname();
return;
}
if((i+1)<num)
{
printf("\t\t\t是否繼續刪除相同姓名的用戶信息?(y/n)");
if (getch()=='y' || getch() == 'Y')
{
a=i;
continue;
}
}
}
else
continue;
}
if ((deletemark==0)&&(findmark==0))
{
printf("\t\t\t沒有該用戶的紀錄");
printf("\t\t\t是否繼續刪除?(y/n)");
if(getch()=='y' || getch() == 'Y')
deletebyphone();
return;
}
else if (findmark!=0)
{
printf("\t\t\t沒有重名信息");
printf("\t\t\t沒有該用戶的紀錄");
printf("\t\t\t是否繼續刪除?(y/n)");
if(getch()=='y' || getch() == 'Y')
deletebyphone();
return;
}
}
int dele()
{
char choic;
printf("\t\t\t1-按電話號碼刪除 2-按姓名刪除");
printf("\t\t\t請選擇:");
choic=getch();
switch (choic)
{
case '1':deletebyphone();break;
case '2':deletebyname();break;
}
return(0);
}
int sortbyname() //按姓名進行排序
{
int i,j;
struct record tmp;
for (i=1;i<num;i++)
{
if(strcmp(student[i].name,student[i-1].name)<0)
{
tmp=student[i];
j=i-1;
do
{
student[j+1]=student[j];
j--;
}while ((strcmp(tmp.name,student[j].name)<0&&j>=0));
student[j+1]=tmp;
}
}
printf("\t\t\t排序成功,是否顯示?(y/n)");
if (getch()=='y')
list();
return(0);
}
int main()
{
printf("\t\t************************************************\n");
printf("\t\t********welcome to TONGXUNLU *******************\n");
printf("\t\t###########code by XXXXX ###################\n");
printf("\t\t*************************************************\n");
printf("按任意鍵進入主菜單\n");
getch();
int selectnum;
while(1)
{
selectnum = menu_select();
switch(selectnum)
{
case 0:
{
adser();
break;
}
case 1:
{
list();
break;
}
case 2:
{
searchbyname();
break;
}
case 3:
{
searchbyphone();
break;
}
case 4:
{
adser(); //這里插入,應該能指定位置,不過意義不大,所以和添加記錄一樣了。
break;
}
case 5:
{
sortbyname();
break;
}
case 6:
{
dele();
break;
}
case 7:
{
printf("BYE BYE!\n");
system("pause");
getchar();
exit(0);
}
}
}
getchar();
return 0;
}