程序設(shè)計(jì)語(yǔ)言課程設(shè)計(jì)-通訊錄.doc
《程序設(shè)計(jì)語(yǔ)言課程設(shè)計(jì)-通訊錄.doc》由會(huì)員分享,可在線閱讀,更多相關(guān)《程序設(shè)計(jì)語(yǔ)言課程設(shè)計(jì)-通訊錄.doc(16頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、課程設(shè)計(jì)文檔課程名稱: 程序設(shè)計(jì)語(yǔ)言課程設(shè)計(jì) 設(shè)計(jì)題目 : 通訊錄 一、 文檔的結(jié)構(gòu)(1).課程設(shè)計(jì)目的和要求:通訊錄1. 添加2. 查詢3. 刪除4. 修改5. 排序6. 輸出全部信息7. 寫入文件8. 讀取文件0. 退出程序的主界面1. 設(shè)計(jì)要求:基本功能:a) 添加個(gè)人信息b) 查詢個(gè)人信息c) 刪除個(gè)人信息d) 修改個(gè)人信息e) 信息排序f) 輸出全部信息 拓展功能: 采用文件形式對(duì)通訊錄進(jìn)行操作,包括:a) 寫入文件b) 讀取文件 創(chuàng)新(自擬)功能:程序?qū)崿F(xiàn)的其它功能由個(gè)人自擬。2. 設(shè)計(jì)要求具體說(shuō)明通訊錄至少應(yīng)該有以下數(shù)據(jù)項(xiàng):姓名,家庭住址,手機(jī)號(hào)碼,郵編,E-mail。輸入信息時(shí)
2、要檢查數(shù)據(jù)項(xiàng)手機(jī)、郵編、E-mail的合法性,手機(jī)號(hào)碼:11位數(shù)字;郵編:6位數(shù)字;E-mail:包含字符,且兩邊都非空。對(duì)通訊錄應(yīng)該包含有以下操作(包括基本功能和拓展功能):a) 向通訊錄中添加信息;b) 在通訊錄中按姓名或手機(jī)號(hào)查找個(gè)人信息;c) 刪除通訊錄中的個(gè)人信息;d) 修改通訊錄中的個(gè)人信息,并保存入文件;e) 按不同數(shù)據(jù)項(xiàng)排序后列表輸出通訊錄中所有人的信息。通訊錄中記錄的數(shù)量沒(méi)有限制。f) 將通訊錄中的數(shù)據(jù)寫入文件和從文件讀入數(shù)據(jù)。程序啟動(dòng)時(shí)先從文件讀入數(shù)據(jù),如果文件中沒(méi)有數(shù)據(jù)則給出提示;寫入文件時(shí)有兩種方式,一為覆蓋所有原有的內(nèi)容; 二為只將本次操作所修改的個(gè)人信息寫入文件g)
3、 程序啟動(dòng)時(shí)先從文件讀入數(shù)據(jù),如果文件中沒(méi)有數(shù)據(jù)則給出提示退出程序。(2).課程設(shè)計(jì)任務(wù)內(nèi)容;本程序分成讀取,排序,寫入等十個(gè)部分。其中排序分為按姓名排序和按序號(hào)排序。其他模塊如其名稱所示,功能分別為:讀取,排序,寫入,插入,刪除,查詢,修改,保存,拷貝,退出。(程序結(jié)構(gòu)功能如圖1所示)數(shù)據(jù)項(xiàng):姓名,家庭住址,手機(jī)號(hào)碼,郵編,E-mail。對(duì)通訊錄應(yīng)該包含有以下操作(包括基本功能和拓展功能):h) 向通訊錄中添加信息;i) 在通訊錄中按姓名或手機(jī)號(hào)查找個(gè)人信息;j) 刪除通訊錄中的個(gè)人信息;k) 修改通訊錄中的個(gè)人信息,并保存入文件;l) 按不同數(shù)據(jù)項(xiàng)排序后列表輸出通訊錄中所有人的信息。通訊錄
4、中記錄的數(shù)量沒(méi)有限制。m) 將通訊錄中的數(shù)據(jù)寫入文件和從文件讀入數(shù)據(jù)。(3).詳細(xì)設(shè)計(jì)說(shuō)明;通訊錄讀取排序?qū)懭氩迦雱h除查詢修改保存拷貝退出圖1圖1程序結(jié)構(gòu)功能程序(標(biāo)識(shí)符)設(shè)計(jì)說(shuō)明 寫入編號(hào)姓名性別電話生日郵編地址圖21 寫入模塊:寫入模塊下包括編號(hào),姓名等七個(gè)模塊。由用戶輸入信息。(模塊圖如圖2所示)Y寫入輸入編號(hào),姓名,性別,電話,生日,郵編,地址是否繼續(xù)退出N2 讀取模塊:輸出由先前用戶輸入全部的信息。3排序模塊:將先前用戶所輸入的信息進(jìn)行排序,有按姓名進(jìn)行排序和按序號(hào)進(jìn)行排序兩種選擇。排序輸入1.按姓名2.按序號(hào)3.返回按姓名進(jìn)行排序按序號(hào)進(jìn)行排序1.按姓名2.按序號(hào)3返回結(jié)束主菜單4
5、插入模塊:在已有的信息中插入新的信息。5刪除模塊:將已輸入的信息進(jìn)行刪除。6查詢模塊:查找已輸入信息。查詢輸入姓名是否存在輸出結(jié)束是否7修改模塊:將已有的信息進(jìn)行修改并保存。修改輸入修改學(xué)生序號(hào)輸出新資料結(jié)束處理符合YN 8保存即讀入模塊:將用戶所輸入的信息進(jìn)行保存。9拷貝模塊:將用戶所輸入的信息進(jìn)行有選擇性的拷貝復(fù)制。10退出模塊:即退出程序。 (4).軟件使用說(shuō)明;此軟件有讀取,排序,寫入,插入,刪除,查詢,修改,保存,拷貝,退出時(shí)項(xiàng)功能??梢詫⒂脩糨斎氲男畔⑦M(jìn)行兩種排序,并且可以進(jìn)行修改,刪除,拷貝等。而且根據(jù)姓名進(jìn)行查找和刪除。并將用戶所輸入的信息進(jìn)行保存。(5).課程設(shè)計(jì)總結(jié);經(jīng)過(guò)這
6、兩個(gè)星期的課程設(shè)計(jì)讓我對(duì)C語(yǔ)言有了一個(gè)更深的了解,雖然我現(xiàn)在不能夠熟練的掌握無(wú)法在短時(shí)間內(nèi)編成一個(gè)完美的程序,但是通過(guò)看資料,查詢相關(guān)信息以及和同學(xué)們的討論還是可以進(jìn)一步的完善自己的知識(shí),對(duì)C語(yǔ)言有個(gè)進(jìn)一步的了解。這兩個(gè)星期以來(lái)的學(xué)習(xí),編程中遇到了不少問(wèn)題,尤其是在排序這一塊,遇到了不少問(wèn)題,無(wú)法順利進(jìn)行。終于在和同學(xué)們一起努力以及問(wèn)老師終于將問(wèn)題解決了。兩個(gè)星期的學(xué)習(xí)讓我受益匪淺,這兩星期讓我過(guò)的很充實(shí)。附錄1 參考文獻(xiàn)參考文獻(xiàn)1譚浩強(qiáng). C程序設(shè)計(jì)(第三版) . 北京:清華大學(xué)出版社, 2005 2譚浩強(qiáng). C程序設(shè)計(jì)題解與上機(jī)指導(dǎo)(第三版) . 北京:清華大學(xué)出版社, 20053 Her
7、bert Schildt. C語(yǔ)言大全(第四版). 北京:電子工業(yè)出版社, 20044Samuel P.Harbison ,Guy L.Steele. C語(yǔ)言參考手冊(cè)(第5版). 北京:機(jī)械工業(yè)出版社,2003 5張建勛. C語(yǔ)言程序設(shè)計(jì)教程. 北京:清華大學(xué)出版社, 2008.26崔武子. C程序設(shè)計(jì)教程(第2版). 北京:清華大學(xué)出版社, 2007.6(第2版)1. 附錄2 程序清單(有較詳細(xì)的注釋)/-#include stdlib.h#include string.h#include conio.h #include stdio.h#include dos.h /-FILE *fp;i
8、nt i;struct address int inumber; /編碼char postnum7; /郵編 char a40; /家庭地址;struct ffriend int num; /序號(hào)char name20; /姓名 char tmp50; char emil30; /郵箱 char telephone12; /電話號(hào)碼 struct address address;struct record; friends50; /-void Load() int j;long k;fp=fopen(friend.txt,a+); /打開(kāi)文件friend.txt if(fp!=NULL) fo
9、r(i=1;i50;i+) j=fgetc(fp);if(j=EOF) /判斷是否到了文件尾return;k=i-1;fseek(fp,k*sizeof(struct ffriend),SEEK_SET);fread(&friendsi,sizeof(struct ffriend),1,fp); /從文件中讀取一條記錄else fp=fopen(friend.txt,w);i=1;/-void Show(int j) /顯示 / friendsj.num=i;printf(nnt編號(hào)-Nnumber: %3d,friendsj.num);printf(nt姓名-Name:%-20s,frien
10、dsj.name);printf(nt手機(jī)號(hào)-Telephone:%-13s,friendsj.telephone);printf(nt郵編-Postnum:%-10s,friendsj.address.postnum);printf(nt通信地址-address:%-40s,friendsj.address.a);printf(nt郵件-emil:%-10s,friendsj.emil); /-void Copy() /拷貝 int j,num1; char name120,telephone112,a140,postnum17,emil130; printf(輸入拷貝的序號(hào):);scanf
11、(%d,&j); if(0j&j=i)void Append(int j); num1=i+1;strcpy(name1,friendsj.name); strcpy(telephone1,friendsj.telephone); strcpy(postnum1,friendsj.address.postnum);strcpy(a1,friendsj.address.a);strcpy(emil1,friendsj.emil);printf(n已經(jīng)拷貝編號(hào)為%d的通訊錄n,num1);printf(n按回車鍵回到主菜單.); getchar(); getchar(); return ; els
12、eprintf(輸入序號(hào)不合適!); /- void listbyname()/按姓名排序 int j;for (j=1;ji;j+) if(strcmp(friendsj.name,friendsj+1.name)0) printf(nt排序?yàn)椋?;printf(nnt編號(hào)-Nnumber: %3d,friendsj.num);printf(nt姓名-Name:%-20s,friendsj.name);printf(nt手機(jī)號(hào)-Telephone:%-13s,friendsj.telephone);printf(nt郵編-Postnum:%-10s,friendsj.address.post
13、num);printf(nt通信地址-address:%-40s,friendsj.address.a);printf(nt郵件-emil:%-10s,friendsj.emil); printf(nnt編號(hào)-Nnumber: %3d,friendsj+1.num);printf(nt姓名-Name:%-20s,friendsj+1.name);printf(nt手機(jī)號(hào)-Telephone:%-13s,friendsj+1.telephone);printf(nt郵編-Postnum:%-10s,friendsj+1.address.postnum);printf(nt通信地址-address
14、:%-40s,friendsj+1.address.a);printf(nt郵件-emil:%-10s,friendsj+1.emil); else if(strcmp(friendsj.name,friendsj+1.name)=0)printf(nt排序?yàn)椋?;printf(nnt編號(hào)-Nnumber: %3d,friendsj.num);printf(nt姓名-Name:%-20s,friendsj.name);printf(nt手機(jī)號(hào)-Telephone:%-13s,friendsj.telephone);printf(nt郵編-Postnum:%-10s,friendsj.addre
15、ss.postnum);printf(nt通信地址-address:%-40s,friendsj.address.a);printf(nt郵件-emil:%-10s,friendsj.emil); printf(nnt編號(hào)-Nnumber: %3d,friendsj+1.num);printf(nt姓名-Name:%-20s,friendsj+1.name);printf(nt手機(jī)號(hào)-Telephone:%-13s,friendsj+1.telephone);printf(nt郵編-Postnum:%-10s,friendsj+1.address.postnum);printf(nt通信地址-
16、address:%-40s,friendsj+1.address.a);printf(nt郵件-emil:%-10s,friendsj+1.emil); elseprintf(nt排序?yàn)椋?;printf(nnt編號(hào)-Nnumber: %3d,friendsj+1.num);printf(nt姓名-Name:%-20s,friendsj+1.name);printf(nt手機(jī)號(hào)-Telephone:%-13s,friendsj+1.telephone);printf(nt郵編-Postnum:%-10s,friendsj+1.address.postnum);printf(nt通信地址-add
17、ress:%-40s,friendsj+1.address.a);printf(nt郵件-emil:%-10s,friendsj+1.emil);printf(nt排序?yàn)椋簄);printf(nnt編號(hào)-Nnumber: %3d,friendsj.num);printf(nt姓名-Name:%-20s,friendsj.name);printf(nt手機(jī)號(hào)-Telephone:%-13s,friendsj.telephone);printf(nt郵編-Postnum:%-10s,friendsj.address.postnum);printf(nt通信地址-address:%-40s,frie
18、ndsj.address.a);printf(nt郵件-emil:%-10s,friendsj.emil); /-void listbyid()/按序號(hào)排序 int j; for (j=1;j=i;j+) if(friendsj.numfriendsj+1.num) printf(nt排序?yàn)椋?;printf(nnt編號(hào)-Nnumber: %3d,friendsj.num);printf(nt姓名-Name:%-20s,friendsj.name);printf(nt手機(jī)號(hào)-Telephone:%-13s,friendsj.telephone);printf(nt郵編-Postnum:%-10
19、s,friendsj.address.postnum);printf(nt通信地址-address:%-40s,friendsj.address.a);printf(nt郵件-emil:%-10s,friendsj.emil); printf(nnt編號(hào)-Nnumber: %3d,friendsj+1.num);printf(nt姓名-Name:%-20s,friendsj+1.name);printf(nt手機(jī)號(hào)-Telephone:%-13s,friendsj+1.telephone);printf(nt郵編-Postnum:%-10s,friendsj+1.address.postnum
20、);printf(nt通信地址-address:%-40s,friendsj+1.address.a);printf(nt郵件-emil:%-10s,friendsj+1.emil); elseprintf(nt排序?yàn)椋?;printf(nnt編號(hào)-Nnumber: %3d,friendsj+1.num);printf(nt姓名-Name:%-20s,friendsj+1.name);printf(nt手機(jī)號(hào)-Telephone:%-13s,friendsj+1.telephone);printf(nt郵編-Postnum:%-10s,friendsj+1.address.postnum);p
21、rintf(nt通信地址-address:%-40s,friendsj+1.address.a);printf(nt郵件-emil:%-10s,friendsj+1.emil);printf(排序?yàn)椋簄);printf(nnt編號(hào)-Nnumber: %3d,friendsj.num);printf(nt姓名-Name:%-20s,friendsj.name);printf(nt手機(jī)號(hào)-Telephone:%-13s,friendsj.telephone);printf(nt郵編-Postnum:%-10s,friendsj.address.postnum);printf(nt通信地址-addr
22、ess:%-40s,friendsj.address.a);printf(nt郵件-emil:%-10s,friendsj.emil); /-void Append(int j) int x,n=0; char *p,*q,*r;fflush(stdin); friendsj.num=j;printf(nttt序號(hào)-Number:%d,j);printf(nttt姓名-Name:); scanf(%s,friendsj.name);fflush(stdin); printf(ttt聯(lián)系電話-telephone:); scanf(%s,friendsj.telephone);p=friendsj
23、.telephone; for(x=0;x=0&px=9) ; else printf(輸入的手機(jī)號(hào)不合理,請(qǐng)重新輸入:); scanf(%s,friendsj.telephone); printf(ttt郵編-Postnumber:); scanf(%d,friendsj.address.postnum);q=friendsj.address.postnum; for(x=0;x=0&qx=9) ; else printf(輸入的郵編不合理,請(qǐng)重新輸入:); scanf(%s,friendsj.address.postnum); printf(ttt通信地址-Address:); scanf
24、(%s,friendsj.address.a);printf(ttt郵件-Emil:);scanf(%s,&friendsj.emil);r=friendsj.emil; for(x=0;rx!=0;x+) /*判斷是否包含且兩邊非空*/ if(rx=) n+; if(n!=1) printf(輸入的郵編不合理,請(qǐng)重新輸入:); scanf(%s,friendsj.emil);/-void Delete() /刪除 int k;printf(ntDelete 序號(hào)-Number:); /輸出刪除序號(hào) scanf(%d,&k);if(k=i)for(int j=k;ji+1;j+) /插入位置后
25、的元素順序后移strcpy(friendsj.name,friendsj+1.name); /交換元素內(nèi)容friendsj.telephone=friendsj+1.telephone;friendsj.address.postnum=friendsj+1.address.postnum;strcpy(friendsj.address.a,friendsj+1.address.a);strcpy(friendsj.emil,friendsj+1.emil);i-; elseprintf(輸入的序號(hào)太大!); /-void Modify(int j) Append(j);/-void Save(
26、) int j;fp=fopen(friend.txt,w);for(j=1;j=i;j+) fwrite(&friendsj,sizeof(struct ffriend),1,fp);fclose(fp);/-void main()int j,num;char grade;char searchname10;Load();i-;do printf(tttt簡(jiǎn)易通訊錄nn);printf(tt*n); printf(tt* 功能選擇(Function choose) *n);printf(tt* 1 1.讀取(Read) *n);printf(tt* 2 2.排序(List) *n);prin
27、tf(tt* 6 3.寫入(Append) *n);printf(tt* 3 4.插入(Insert) *n);printf(tt* 4 5.刪除(Delete) *n);printf(tt* 5 6.查詢(Search) *n);printf(tt* 6 7.修改(Modify) *n);printf(tt* 2 8.保存(Save) *n);printf(tt* 3 9.拷貝(Copy) *n);printf(tt* 1 0.退出(Quit) *n);printf(tt*n); printf(tt請(qǐng)選擇(Choice)ntt注:輸入09:);scanf(%s,&grade); switch
28、(grade) case 1: j=1; /讀取功能 while(getchar()!=0 x1b&j=i) Show(j+);printf(n請(qǐng)按回車鍵繼續(xù)!);if(j-11)printf(nt空文檔,無(wú)任何記錄-Empty Noten);printf(n請(qǐng)按回車鍵繼續(xù)!);getchar();printf(nttttttt此次操作結(jié)束);printf(nt-ttn);break;case 2: /排序功能 char grade; if(i=0) printf(ntt對(duì)不起,文件中無(wú)任何紀(jì)錄); printf(ntt按任意鍵返回主菜單); getchar(); system(cls); p
29、rintf(nt*); printf(nt* 1.按序號(hào)排序 *);printf(nt* 2.按姓名排序 *);printf(nt* 3.返回主菜單 *); printf(nt*); printf(nt請(qǐng)選擇(Choice)nt注:輸入13:); scanf(%s,&grade);switch(grade) case 1:listbyid();printf(nt-ttn);main();break; case 2:listbyname();printf(nt-ttn);main();break; case 3:main();break;default :printf(ntt輸入有誤,請(qǐng)輸入正確
30、的選擇!);printf(nt-ttn);main(); case 3: /寫入功能while(ik;j-) strcpy(friendsj.name,friendsj-1.name); /數(shù)據(jù)后移friendsj.telephone=friendsj-1.telephone;friendsj.address.postnum=friendsj-1.address.postnum;strcpy(friendsj.address.a,friendsj-1.address.a);strcpy(friendsj.emil,friendsj-1.emil);Append(k);i+; printf(nt
31、tttttt此次操作結(jié)束);printf(nt-ttn);break; case 5: /刪除功能 /增添隨意刪除多條記錄的功能Delete();printf(tt已刪除!); if(i1)printf(ntt沒(méi)有記錄-No recordsn);printf(ntt請(qǐng)按回車鍵繼續(xù)!);getchar();getchar(); printf(nttttttt此次操作結(jié)束);printf(nt-ttn);break;case 6: /查詢功能 printf(nt請(qǐng)輸入要查詢記錄的相關(guān)姓名:); /增添查詢按列號(hào)的scanf(%s,searchname);for(j=1;j=i;j+)if(strc
32、mp(searchname,friendsj.name)=0) /比較字符串 Show(j); break;if(i1) printf(n 沒(méi)有您所查詢的記錄-No records);printf(n 請(qǐng)按回車鍵繼續(xù)!);getchar();printf(nttttttt此次操作結(jié)束);printf(nt-ttn);getchar();break;case 7: /修改功能 /增添按序列號(hào)查詢printf(nt請(qǐng)輸入要修改記錄的相關(guān)姓名:);gets(searchname);scanf(%s,searchname);for(j=1;j=i;j+)if(strcmp(searchname,fri
33、endsj.name)=0) /比較字符串 Modify(j); / getchar(); /加個(gè)輸出確定修改嗎if(ii)printf(輸入的序號(hào)太大!);elseCopy();Save();getchar(); break; case 0: /退出功能char x;printf(是否保存?yes/no:);scanf(%s,&x);/getchar();/ getchar();if(x=y) Save();exit(0);elseexit(0);default: printf(nt輸入有誤,請(qǐng)輸入正確的序列號(hào)!);printf(n請(qǐng)按回車鍵繼續(xù)!);getchar();printf(nttttttt此次操作結(jié)束);printf(nt-ttn);while(1);/-
- 溫馨提示:
1: 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 6.煤礦安全生產(chǎn)科普知識(shí)競(jìng)賽題含答案
- 2.煤礦爆破工技能鑒定試題含答案
- 3.爆破工培訓(xùn)考試試題含答案
- 2.煤礦安全監(jiān)察人員模擬考試題庫(kù)試卷含答案
- 3.金屬非金屬礦山安全管理人員(地下礦山)安全生產(chǎn)模擬考試題庫(kù)試卷含答案
- 4.煤礦特種作業(yè)人員井下電鉗工模擬考試題庫(kù)試卷含答案
- 1 煤礦安全生產(chǎn)及管理知識(shí)測(cè)試題庫(kù)及答案
- 2 各種煤礦安全考試試題含答案
- 1 煤礦安全檢查考試題
- 1 井下放炮員練習(xí)題含答案
- 2煤礦安全監(jiān)測(cè)工種技術(shù)比武題庫(kù)含解析
- 1 礦山應(yīng)急救援安全知識(shí)競(jìng)賽試題
- 1 礦井泵工考試練習(xí)題含答案
- 2煤礦爆破工考試復(fù)習(xí)題含答案
- 1 各種煤礦安全考試試題含答案