當前位置:股票大全官網 - 資訊咨詢 - c語言編程:地址簿編程

c語言編程:地址簿編程

#包含" stdlib.h "

#包含" string.h "

#包含“conio.h”

#包含“stdio.h”

#包含“dos.h”

FILE * fp

int I;//i是全局變量而不是長度。

結構地址

{ char postnum[10];

char a[40];//家庭地址

};

結構生日

{ int年;

int月;

int日;

};

結構朋友

{ int num//序列號

char name[20];

迷人的性愛;

收費電話[13];

結構生日生日;

結構地址address;

}

朋友[50];

無效載荷()

{

int j;

長k;

fp=fopen("friend.txt "," a+");//打開文件friend.txt

if(fp!=空)

{

for(I = 1;我& lt50;i++)

{

j = fgetc(FP);

If(j==EOF) //判斷是否到達文件末尾。

返回;

k = I-1;

fseek(fp,k*sizeof(struct ffriend),SEEK _ SET);

弗雷德(& ampfriends[i],sizeof(struct ffriend),1,FP);//從文件中讀取記錄

}

}

其他

{

fp=fopen("friend.txt "," w ");

I = 1;

}

}

空顯示(int j)

{

//朋友[j]。num = I;

printf(" \ n \ n \ t否。-n編號:%3d ",朋友[j]。num);

Printf ("\ n \ tname -Name:%-20s ",friends[j]。姓名);

Printf ("\ n \ tGender -Sex:%c ",friends[j]。性);

printf(" \ n \ tTel-電話:%-13s ",朋友[j]。電話);

printf(" \ n \ t出生日期-生日:% 4d-%2d-%3d ",friends [j]。生日。年份,朋友[j]。生日,月份,朋友。生日);

printf(" \ n \ tZip code-postnum:%-10s ",friends [j]。address . postnum);

printf(" \ n \ t電子郵件地址-地址:%-40s ",friends [j]。address . a);

}

void追加(int j)

{

fflush(stdin);//清除該區域的文件緩沖區,當文件以寫模式打開時,將緩沖區寫入文件。

//stdin是壹個標準文件*(文件指針),通常用鍵盤指向輸入流。

朋友[j]。num = j;

printf(" \ n \ t \ t \ t序列號-編號:%d ",j);

printf(" \ n \ t \ t \ tname-Name:");

scanf("%s ",朋友[j].姓名);

fflush(stdin);//為什麽沒有fflush(stdin);效果會自動跳過嗎?

printf(" \ t \ t \ t gender-Sex(m/w):");//為什麽輸入漢字的男女會自動跳過聯系號碼?

scanf("%c ",& amp朋友[j]。性);

printf(" \ t \ t \ t tel-Phone:");

scanf("%s ",朋友[j].電話);

Printf("\t出生日期-生日");

printf(" \ n \ t \ t \ t年份:");

scanf("%d ",& amp好友[j].生日.年份);

printf(" \ t \ t \ t month-month:");

scanf("%d ",& amp好友[j].生日.月);

printf(" \ t \ t \-day:");

scanf("%d ",& amp好友[j].生日.日);

Printf ("\ t \ t郵政編碼-郵政編碼:");

scanf("%s ",friends[j]. address . postnum);

printf(" \ t \ t \ t郵件地址-地址:");

scanf("%s ",friends[j]. address . a);

getchar();

}

void刪除()

{

int k;

printf(" \ n \ t刪除序列號-編號:");

scanf("%d ",& ampk);

if(k & lt;=i)

{

for(int j = k;j & ltI+1;J++) /*插入位置後移的元素順序*/

{

strcpy(朋友[j].姓名,好友[j+1]。姓名);/*交換元素內容*/

朋友[j]。性=朋友[j+1]。性;

strcpy(朋友[j].電話,好友[j+1]。電話);

好友[j].生日.年=好友[j+1].生日.年;

好友[j].生日.月=好友[j+1].生日.月;

好友[j].生日.日=好友[j+1].生日.日;

strcpy(friends[j]. address . postnum,friends[j+1]. address . postnum);

strcpy(好友[j].address.a,好友[j+1]. address . a);

}

I-;

}

其他

{

Printf("輸入的序列號太大!");

}

}

void Modify(int j)

{

追加(j);

}

無效保存()

{

int j;

fp=fopen("friend.txt "," w ");

for(j = 1;j & lt= I;j++)

{

fwrite(& amp;friends[j],sizeof(struct ffriend),1,FP);

}

fclose(FP);

}

void main()

{

int j;

炭化等級;

char search name[10];

load();

I-;

{

printf(" \ t \ t \ t \ t \ t簡單通訊簿\ n \ n ");

Printf("函數選擇\ n ");

Printf ("1A。閱讀\ n ");

Printf("\2B。append \ n ");

Printf("\6C。insert \ n ");

Printf("\5D。刪除\ n ");

Printf("\5E。搜索\ n ");

Printf("。修改\ n ");

Printf("\2G。保存\ n ");

Printf ("1h。退出\ n ");

Printf ("Please Choice)\n註意:輸入A~H的大寫字母\ n ");

scanf("%c ",& amp年級);

開關(等級)

//可以添加大寫字母和小寫字母。

{

案例‘A’:j = 1;//顯示功能

while(getchar()!= 0x 1b & amp;& ampj & lt=i) //添加按Esc退出。

{

show(j++);

printf(" \ n請按Enter鍵繼續!");

}

如果(j-1 & lt;1)

{

Printf ("\ n \ tEmpty沒有記錄的文檔-空註釋\ n ");

printf(" \ n請按Enter鍵繼續!");

getchar();

}

Printf("\n\t\t\t\t\t\t該操作已結束");

printf(" \ n \ t-\ t \ t \ n ");

打破;

情況“B”://添加函數

while(我& lt=50) //增加按ESC退出的功能。

{

i++;

追加(壹);

printf(" \ t繼續增加嗎?y/n”);

//如果修改添加else,會跳出或者強制打印錯誤。

char a = getchar();

if(a=='n'||a=='N ')

打破;

}

if(i==51)

printf(" \ n \ t文檔已滿,因此無法添加記錄-請註意已滿");

Printf("\n\t\t\t\t\t\t該操作已結束");

printf(" \ n \ t-\ t \ t \ n ");

getchar();

打破;

案例“C”:

int k;

printf(" \ n \ t輸入要插入的位置:");

scanf("%d ",& ampk);

j = I+1;

朋友[j]。num = j;

for(j;j & gtk;j-)//插入函數

{

strcpy(朋友[j].姓名,好友[j-1]。姓名);//數據向後移動

朋友[j]。性=朋友[j-1]。性;

strcpy(朋友[j].電話,朋友[j-1]。電話);

好友[j].生日.年份=好友[j-1].生日.年份;

好友[j].生日.月=好友[j-1].生日.月;

好友[j].生日.日=好友[j-1].生日.日;

strcpy(friends[j]. address . postnum,friends[j-1]. address . postnum);

strcpy(好友[j].address.a,好友[j-1]. address . a);

}

追加(k);

i++;

Printf("\n\t\t\t\t\t\t該操作已結束");

printf(" \ n \ t-\ t \ t \ n ");

打破;

案例‘D’://刪除功能//增加任意刪除多條記錄的功能。

delete();

如果(我& lt1)

printf(" \ n無記錄-無記錄\ n ");

printf(" \ n請按Enter鍵繼續!");

getchar();

getchar();

Printf("\n\t\t\t\t\t\t該操作已結束");

printf(" \ n \ t-\ t \ t \ n ");

打破;

情況“E”://查詢函數

printf(" \ n \ t請輸入要查詢的記錄的相關名稱:");//按列號添加查詢

scanf("%s ",search name);

for(j = 1;j & lt= I;j++)

{

If (strcmp (searchname,friends [j].name)= = 0)//比較字符串。

{

顯示(j);

打破;

}

}

如果(我& lt1)

{

printf(" \ n沒有您要查找的記錄-沒有記錄");

printf(" \ n請按Enter鍵繼續!");

getchar();

}

Printf("\n\t\t\t\t\t\t該操作已結束");

printf(" \ n \ t-\ t \ t \ n ");

getchar();

打破;

案例“F”://修改函數//按序列號添加查詢。

printf(" \ n \ t請輸入要修改的記錄的相關名稱:");

獲取(search name);

scanf("%s ",search name);

for(j = 1;j & lt= I;j++)

{

If (strcmp (searchname,friends [j].name)= = 0)//比較字符串。

{

修改(j);

//getchar();//添加輸出確認修改?

}

}

如果(我& lt1) //修改函數

{ printf(" \ n沒有要修改的記錄-沒有記錄");

printf(" \ n請按Enter鍵繼續!");

getchar();

getchar();

}

Printf("\n\t\t\t\t\t\t該操作已結束");

printf(" \ n \ t-\ t \ t \ n ");

打破;

案例“G”:

save();//保存功能

getchar();

Printf("\n\t\t\t\t\t\t該操作已結束");

printf(" \ n \ t-\ t \ t \ n ");

打破;

情況“H”://退出功能

char x;

Printf("要保存嗎?是/否\ n ");

scanf("%s ",& ampx);

//getchar();

//getchar();

if(x=='y ')

{

save();

退出(0);

}

其他

退出(0);

默認值:

printf(" \ n \ t輸入錯誤,請輸入正確的序列號!");

printf(" \ n請按Enter鍵繼續!");

getchar();

Printf("\n\t\t\t\t\t\t該操作已結束");

printf(" \ n \ t-\ t \ t \ n ");

}

} while(1);

}