|
自己研究出來(lái)的
0.png (48.92 KB, 下載次數(shù): 54)
下載附件
2018-4-22 15:56 上傳
c語(yǔ)言源程序如下:
- #include <stdio.h>
- #include <string.h>
- #include <stdlib.h>
- struct person //創(chuàng)造結(jié)構(gòu)體
- {
- char name[8];
- char tel[15];
- };
- char filename[20];
- FILE *fp;
- void creat(); //創(chuàng)建一個(gè)通訊錄
- void output();
- void search();
- void append();
- void modify();
- void del();
- void main()
- {
- int m;char k;
- printf("\n請(qǐng)輸入你要打開(kāi)的通訊錄文件名:");
- gets(filename);
- if((fp=fopen(filename,"r"))==NULL)
- {
- printf("\n當(dāng)前沒(méi)有此通訊錄文件,現(xiàn)在是否執(zhí)行創(chuàng)建(Y/N)?:");
- scanf("%c",&k);
- if(k!='Y'&&k!='N'&&k!='y'&&k!='n')
- {
- printf("\n輸入有誤,請(qǐng)?jiān)俅屋斎胍粋(gè)值:");
- scanf("%c",&k);
- }
- else if(k=='Y'||k=='y')
- {
- creat();
- }
- else if(k=='N'||k=='n')
- {
- printf("\n由于你選擇了退出,現(xiàn)在程序即將關(guān)閉!\n");
- exit(0);
- }
- }
- else
- {
- printf("\n你要打開(kāi)的通訊錄文件%s已存在,現(xiàn)在可直接對(duì)其操作:\n",filename);
- printf("通訊錄文件中現(xiàn)已有的通訊信息:\n");
- output();
- printf("\n請(qǐng)選擇根據(jù)提示選擇1~5對(duì)通訊錄文件進(jìn)行操作。\n");
- }
- while (1)
- {
- printf("\n\n添加,請(qǐng)按1"); printf("\n查找,請(qǐng)按2");
- printf("\n修改,請(qǐng)按3");
- printf("\n刪除,請(qǐng)按4");
- printf("\n輸出,請(qǐng)按5");
- printf("\n退出,請(qǐng)按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: del();break;
- case 5:output();break;
- case 0:exit(0);
- }
- printf("\n\n操作完畢,請(qǐng)?jiān)俅芜x擇!");
- }
- else printf("\n\n操作錯(cuò)誤,請(qǐng)?jiān)俅芜x擇!:");
- }
- }
- /**********************************************************************/
- void creat()
- {
- struct person one;printf("\n請(qǐng)輸入通訊簿文件名:");
- scanf("%s",filename);
- if ((fp=fopen(filename,"w"))==NULL)
- {
- printf("\n不能建立通訊薄!");
- exit(0);
- }
- fprintf(fp,"%-10s%-20s%-30s%-20s\n","姓名","電話號(hào)碼","住址","電子郵箱");
- printf("\n請(qǐng)輸入姓名:\n");
- scanf("%s",one.name);
- while (strcmp(one.name,"0"))
- {
- printf("請(qǐng)輸入電話號(hào)碼:\n");
- scanf("%s",one.tel);
- fprintf(fp,"%-10s%-20s%\n",one.name,one.tel);
- printf("請(qǐng)?jiān)佥斎肓硪粋(gè)人的姓名,若想要結(jié)束,請(qǐng)輸入0\n");
- scanf("%s",one.name);
- }
- fclose(fp);
- }
- void output()
- {
- struct person one;
- if((fp=fopen(filename,"r"))==NULL)
- {
- printf("\n不能打開(kāi)通訊薄!");
- exit(0);
- }
- while (!feof(fp))
- {
- fscanf(fp,"%s%s\n",one.name,one.tel);
- printf("%-10s%-20s%\n",one.name,one.tel);
- }
- fclose(fp);
- }
- void append()
- {
- struct person one;
- if ((fp=fopen(filename,"a"))==NULL)
- {
- printf("\n不能打開(kāi)通訊薄!");
- exit(0);
- }
- printf("\n請(qǐng)輸入添加的姓名\n");
- scanf("%s",one.name);
- printf("請(qǐng)輸入電話號(hào)碼:\n");
- scanf("%s",one.tel);
-
- printf("%-10s%-20s%\n",one.name,one.tel);
- fprintf(fp,"%-10s%-20s%\n",one.name,one.tel);
- fclose(fp);
- }
- void search()
- {
- int flag=0;
- char namekey[8];
- struct person one;
- printf("\n請(qǐng)輸入姓名:");
- scanf("%s",namekey);
- if((fp=fopen(filename,"r"))==NULL)
- {
- printf("\n不能打開(kāi)通訊薄!");
- exit(0);
- }
- while(!feof(fp))
- {
- fscanf(fp,"%s%s\n",one.name,one.tel);
- if (!strcmp(namekey,one.name))
- {
- printf("\n\n已查到,記錄為:");
- printf("\n%-10s%-20s%",one.name,one.tel);
- flag=1;
- }
- }
- if(!flag)
- printf("\n\n對(duì)不起,通訊薄中沒(méi)有此人的記錄。");
- fclose(fp);
- }
- void modify()
- {
- int flag=0;
- long offset;
- char namekey[8];
- struct person one;printf("\n請(qǐng)輸入姓名:");
- scanf("%s",namekey);
- if((fp=fopen(filename,"r+"))==NULL)
- {
- printf("\n不能打開(kāi)通訊薄!");
- exit(0);
- }
- while(!feof(fp))
- {
- offset=ftell(fp);
- fscanf(fp,"%s%s\n",one.name,one.tel);
- if(!strcmp(namekey,one.name))
- {
- flag=1;break;
- }
- }
- if(flag)
- {
- printf("\n已查到,記錄為");
- printf("\n%-10s%-20s%",one.name,one.tel);
- while (1)
- {
- printf("\n\n修改姓名,請(qǐng)按2");
- printf("\n修改電話,請(qǐng)按3");
- printf("\n退出,請(qǐng)按6\n");
- scanf("%d",&flag);
- if (flag==2)
- {
- printf("請(qǐng)輸入新的姓名\n");
- scanf("%s",one.name);
- printf("修改完畢,請(qǐng)指示!:\n");
- }
- if (flag==3) {printf("請(qǐng)輸入新的電話\n");
- scanf("%s",one.tel);
- printf("修改完畢,請(qǐng)指示!:\n");
- }
- if (flag==6) break;
-
- }
- fseek(fp,offset,0);
- fprintf(fp,"%-10s%-20s%\n",one.name,one.tel);
- printf("\n%-10s%-20s%",one.name,one.tel);
- }
- else printf("不存在指定的名字!\n");
- fclose(fp);
- }
- void del()
- {
- int m,flag=0;
- long offset;
- char namekey[8];
- struct person one;
- printf("\n請(qǐng)輸入姓名:");
- scanf("%s",namekey);
- if((fp=fopen(filename,"r+"))==NULL)
- {
- printf("\n不能打開(kāi)通訊簿!");
- exit(0);
- }
- while(!feof(fp))
- {
- offset=ftell(fp);
- fscanf(fp,"%s%s\n",one.name,one.tel);
- if(!strcmp(namekey,one.name))
- {
- flag=1;
- break;
- }
- }
- if(flag)
- {
- printf("\n已查到,記錄為");
- printf("\n%-10s%-20s%",one.name,one.tel);
- printf("\n確定要?jiǎng)h除,按1;不刪除,按0:");
- scanf("%d",&m);
- if (m)
- {fseek(fp,offset,SEEK_SET);
- fprintf(fp,"%-10s%-20s\n","",""); }
-
- }
- else
- printf("\n對(duì)不起,通訊簿中沒(méi)有此人的記錄。");
- fclose(fp);
- ……………………
- …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼
所有資料51hei提供下載:
C語(yǔ)言課程設(shè)計(jì).zip
(1.17 MB, 下載次數(shù): 6)
2018-4-22 10:38 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
|