




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、目 錄課程設(shè)計(jì)評(píng)語(yǔ)2目 錄31課程論文題目42程序設(shè)計(jì)思路43功能模塊圖54數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)55算法設(shè)計(jì)66程序代碼137程序運(yùn)行結(jié)果228編程中遇到的困難及解決方法259總結(jié)心得及良好建議2610致謝261課程論文題目 一種簡(jiǎn)單的英文詞典排版系統(tǒng)的實(shí)現(xiàn)【要求】(1)能輸入和現(xiàn)實(shí)打入的單詞(2)能分辨出單詞(3)對(duì)重復(fù)的單詞和已經(jīng)輸入的單詞能自動(dòng)排除(4)能按az的順序排版(5)能將運(yùn)行結(jié)果以文本形式儲(chǔ)存(6)具有添加新單詞蹦重新排版的能力提示(1)需求分析:運(yùn)行結(jié)果以文本形式儲(chǔ)存,因而要提供文件的輸入輸出操作;通過(guò)查找操作檢查重復(fù)單詞;提供排序操作現(xiàn)實(shí)按az的順序排版;提供插入操作添加新單詞并重
2、新排版。另外通過(guò)鍵盤(pán)式菜單實(shí)現(xiàn)功能選擇。(2)總體設(shè)計(jì):整個(gè)系統(tǒng)被設(shè)計(jì)為單詞錄入模塊,文件存儲(chǔ)模塊和單詞瀏覽模塊。其中單詞錄入模塊要完成輸入單詞,檢查是否重復(fù),排序操作。文件存儲(chǔ)模塊把存放單詞的數(shù)組中的數(shù)據(jù)寫(xiě)入文件。單詞瀏覽模塊完成英文詞典的輸出,即文件的輸出操作。(3)數(shù)據(jù)結(jié)構(gòu)采用指針數(shù)組或二維數(shù)組。以【enter】鍵或者空格鍵作為單詞輸入結(jié)束標(biāo)志,對(duì)重復(fù)的單詞自動(dòng)排除可選用查找方法,數(shù)據(jù)結(jié)構(gòu)可采用指針和數(shù)組。2程序設(shè)計(jì)思路整個(gè)系統(tǒng)被設(shè)計(jì)為單詞錄入模塊,文件存儲(chǔ)模塊和單詞瀏覽四個(gè)模塊。其中單詞錄入模塊要完成輸入單詞,檢查是否重復(fù),排序操作。文件存儲(chǔ)模塊把存放單詞的詞組中的數(shù)據(jù)寫(xiě)入文件。單詞瀏
3、覽模塊完成英文詞典的輸出,即文件的輸出操作。這四個(gè)模塊是整體的設(shè)計(jì)思路,設(shè)計(jì)核心,整個(gè)程序的設(shè)計(jì)都將圍繞這四個(gè)模塊進(jìn)行,各個(gè)模塊都相互銜接,所以需要在設(shè)計(jì)好各個(gè)部分地同時(shí),還要把握好各個(gè)部分的連接。3功能模塊圖(英文詞典排版系統(tǒng)單詞錄入文件存儲(chǔ)單詞瀏覽 4數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu)采用指針數(shù)組或二維數(shù)組:char* dictionaryn; 或 char dictionaryn20。其中n是宏定義#define n 256 (表示單詞個(gè)數(shù))(1)單詞錄入模塊 輸入一個(gè)單詞,存放在一個(gè)臨時(shí)字符數(shù)組中,以空格或回車(chē)表示單詞的結(jié)束(這也是默認(rèn)操作),然后換行輸出剛剛輸入的單詞。采用插入排序算法的思想把該單
4、詞插入單詞數(shù)組中,不同的是如果兩個(gè)單詞相同則不插入。(2)文件存儲(chǔ)模塊 采用fwrite或fprintf把單詞數(shù)組輸入到文件中。(3)單詞瀏覽模塊采用fread或fscanf把單詞從文件中讀出,然后輸出。 5算法設(shè)計(jì)1.主函數(shù) 【流程圖】 顯示一系列的功能選項(xiàng)輸入n,判斷n是否是19ny根據(jù)n的值調(diào)用各功能模塊函數(shù)【程序】#include stdio.h #include stdlib.h #include string.h #include ctype.h #define rows 256 #define cols 32 static file *fp; static char arowsc
5、ols; char get_option(void); int b(int count); void c(char *pt, int count); int check(char arr, int count); void storage(char *pt, int count);intn;/*n全局變量*/charwordn20;void menu()/*主界面*/int n,w;/*變量n保存選擇菜單數(shù)字,w判斷輸入的數(shù)字是否在功能菜單對(duì)應(yīng)數(shù)字范圍內(nèi)*/doputs(tt*menu*nn);puts(tttwelcome to djs program!nn);puts(tttt 1.add
6、 new word.);puts(tttt 2.browse all the words.);puts(tttt 3.search the word.);puts(tttt 4.sort the words.);puts(tttt 5.order by a-z.);puts(tttt 6.exit!);puts(nntt*n);printf(choice your number(1-6): bb);scanf(%d,&n);if(n6)/*對(duì)選擇的數(shù)字作判斷*/w=1;getchar();else w=0;while(w=1);switch(n)case 1:add();break;/*追加模
7、塊*/case 2:browse();break;/*瀏覽模塊*/case 3:search();break;/*查找模塊*/case 4:sort();break;/*分類(lèi)模塊*/case 5:order();break;/*排序模塊*/case 6:exit(0);/*退出*/void main() /*主函數(shù)*/ menu();2.公共函數(shù)【程序】int load()/*加載函數(shù)*/int i,count; int start; char *ptrows; char ch, len; char input;if(fp=fopen(words.txt,a+)=null)/*以輸出打開(kāi)方式,
8、在此前的記錄被覆蓋*/printf(ncannot open file!n);return null;for(i=0;!feof(fp);i+)fscanf(fp,%s,&wordi);fclose(fp);return i+1;/*返回記錄個(gè)數(shù)*/void save(int n)/*保存函數(shù),保存n個(gè)記錄*/file *fp;int i;if(fp=fopen(words.txt,a+)=null)/*以輸出打開(kāi)方式,在此前的記錄被覆蓋*/printf(ncannot open file!n);exit(0);for(i=0;in;i+)fprintf(fp,%s,&wordi);fclos
9、e(fp);3.各功能模塊設(shè)計(jì)1)分類(lèi)模塊【程序】void sort()int i,j,k;char c20;if(n=load()=0)printf(ncannot open file!n);exit(0);for(i=0;in;i+)for(j=0;j0)strcmp(c,wordj);strcmp(wordj,wordj+1);strcmp(wordj+1,c);save(n);printf(successful!_.n);printf(nnow? 1.browse all 2.back);scanf(%d,&k);if(k=1)browse();else if(k=2)menu();
10、用選擇法排序2)排序模塊【流程圖】【程序】 保 存void order() /*排序模塊*/int an,i,j,t; 返回主菜單struct words;n=load();for(i=0;in;i+)for(i=0;in-1;i+)for(j=i+i;jaj)t=ai;ai=aj;aj=t;for(j=0;jn;j+)printf(%3d,ai);3)修改模塊【流程圖】顯示所有記錄,讓用戶看哪個(gè)要修改輸入要修改的單詞是否找到此單詞記錄yn顯示找到的單詞,調(diào)用修改函數(shù)提示沒(méi)有找到詢問(wèn)用戶是否繼續(xù)修改y返回主菜單y【程序】void modify(int a) /*修改模塊*/char c20;p
11、rintf(enter the new word:);scanf(%s,c);strcpy(worda,c);save(n);4)刪除模塊【流程圖】顯示所有記錄,讓用戶看哪個(gè)需要?jiǎng)h除輸入需要?jiǎng)h除的單詞是否找到此單詞記錄yn提示沒(méi)有找到顯示找到的記錄 調(diào) 用 刪 除 函 數(shù)返回主菜單詢問(wèn)用戶是否繼續(xù)刪除yn【程序】void del(int a) /*刪除模塊*/int x,i,y;printf(are you sure to delete this word?nt1).sure 2).no and back menu bb);scanf(%d,&x); /*輸入要修改的單詞*/if(x=1)fo
12、r(i=a;in-1;i+) /*查找要修改的單詞*/strcpy(wordi,wordi+1);save(n-1);printf(successful!_.nnow? 1).one more 2).back menu);scanf(%d,&y);if(y=1)search();else if(x=2)menu();else if(x=2)menu();5)追加模塊詢問(wèn)用戶是否繼續(xù)追加單詞保存追加的單詞輸入用戶要追加的的單詞調(diào)用加載函數(shù)n=load();并計(jì)算可以記錄個(gè)數(shù)n【流程圖】返回主菜單yn【程序】void add() /*追加模塊*/int i,x,w1,w2,w;char c20;i
13、f(n=load()=0)exit(0);elseputs(enter the new word!n);scanf(%s,c); /*輸入要追加的單詞*/for(i=0;in;i+)if(strcmp(wordi,c)=0)break;if(in)w=1;doprintf(the word has already exit!n);printf(nnwhat do you want to do?nt1).enter one more 2).back menu bb);scanf(%d,&x);if(x2)w1=1;elsew1=0;while(w1=1);elsew2=1;strcpy(word
14、i,c);save(n+1);printf(successful!_.now choose what you will do next?nt1).add another 2).back menu bb);doscanf(%d,&x);if(x2)w2=1;elsew2=0;while(w2=1);switch(x)case 1:add();break;case 2:menu();break;顯示所有單詞記錄6)瀏覽(全部)模塊【流程圖】用戶進(jìn)行選項(xiàng)回到分類(lèi)模塊返回主菜單【程序】void browse() /*瀏覽(全部)模塊*/int i,w;if(n=load()=0) /*加載記錄*/pr
15、intf(ncannot open file!n);exit(0);for(i=0;in-1;i+)printf(%s/n,wordi);puts(successful!_.now 1.back menu 2.sort);scanf(%d,&w);if(w=1)menu();else if(w=2)sort();7)查找模塊是否找到該單詞記錄輸入需要查找的單詞【流程圖】yn返回主菜單讓用戶選擇1).查找另一個(gè)2).返回詢問(wèn)用戶是否繼續(xù)查找提示沒(méi)有找到顯示找到的記錄yn【程序】void search() /*查找模塊*/int i,x,y;char vs20;if(n=load()=0) /*加
16、載記錄*/printf(ncannot open file!n);exit(0);printf(enter the word what you want to search!);scanf(%s,vs); /*輸入要查找的單詞*/for(i=0;in;i+) /*查找要修改的單詞*/if(strcmp(wordi,vs)=0)printf(successful!_.nthe word is:%sn,wordi);/*找到需要修改的單詞*/printf(what would you like to do with the word?nt1).modify 2).delrte 3).nothing
17、 bb);scanf(%d,&y);if(y=1)modify(i);elsedel(i);if(i=n)printf(hoho!sorry.not found);printf(now.1).one more 2).back 3).exit);scanf(%d,&x);switch(x) case 1:search();break;case 2:menu();break;case 3:exit(0); 6程序代碼#include stdio.h #include stdlib.h #include string.h #include ctype.h #define rows 256 #defi
18、ne cols 32 static file *fp; static char arowscols; char get_option(void); int b(int count); void c(char *pt, int count); int check(char arr, int count); void storage(char *pt, int count); int main(void) int i,count; int start; char *ptrows; char ch, len; char input; if(fp=fopen(words.txt,a+)=null) f
19、puts(不能打開(kāi)或建立文件!n,stderr); exit(1); fseek(fp,0l,seek_end); start=(int)ftell(fp)/32; count=start; rewind(fp); if(fread(a,32*sizeof(char),start,fp)=0) i=0; puts(開(kāi)始創(chuàng)建詞庫(kù));puts(請(qǐng)輸入單詞(每行一個(gè));puts(在新行輸入end結(jié)束輸入:); while(irows&scanf(%s, ai)=1) fflush(stdin); if(strncmp(ai,end,3)=0) count+=i; break; if(check(ai
20、, i) continue; i+; puts(tt*歡迎使用字典排版系統(tǒng)*nn);puts( menu );puts(您要做些什么?); puts(a. 顯示已有的單詞 b. 添加新單詞); puts(c. 對(duì)已有的單詞進(jìn)行排序 d. 退出); puts(nntt*n);while(input=get_option()!=d) if(input=a) puts(已有的單詞:); for(i=0;icount;i+) printf( ); puts(ai); if(input=b) puts(開(kāi)始創(chuàng)建詞庫(kù));puts(請(qǐng)輸入新的單詞(每行一個(gè));puts(在新行輸入end結(jié)束輸入: ); co
21、unt=b(count); if(input=c) puts(對(duì)單詞進(jìn)行排序:); c(pt, count); for(i=0;icount;i+) printf( ); puts(pti); puts(還要做些什么?); storage(pt,count); fclose(fp); puts(謝謝使用,再見(jiàn)!); return 0; char get_option(void) char ch; while(ch=getchar()d) while(ch=getchar()!=n) ; puts(請(qǐng)輸入a,b,c或者d.); fflush(stdin); return ch; int b(in
22、t count) int i; i=count; while(irows&scanf(%s, ai)=1) fflush(stdin); if(check(ai, i) continue; if(strncmp(ai,end,3)=0) count=i; break; i+; return count; void c(char *pt, int count) int i,j; char *temp; for(i=0;irows;i+) pti=ai; for(i=0;icount;i+) for(j=i+1;j0) temp=pti; pti=ptj; ptj=temp; int check(
23、char arr, int count) int i; int flag=0; for(i=0;istrlen(arr);i+) if(isalpha(arri)=0) printf(%s不是一個(gè)單詞.n,arr); flag=1; break; for(i=0;icount;i+) if(strncmp(ai,acount,strlen(acount)+1)=0) puts(重復(fù)的單詞!); flag=1; return flag; void storage(char *pt, int count) int i,j; char ptrrowscols; c(pt, count); for(i
24、=0;icount;i+) for(j=0;ptij!=0;j+) ptrij=ptij; fp=fopen(words.txt,w+); rewind(fp); fwrite(ptr,32*sizeof(char),count,fp); 7程序運(yùn)行結(jié)果8編程中遇到的困難及解決方法在學(xué)習(xí)c語(yǔ)言時(shí),最初使用的是turboc計(jì)算機(jī)編程軟件,實(shí)習(xí)則用vc軟件編程。兩個(gè)軟件各有自己的特點(diǎn)。vc作為后來(lái)開(kāi)發(fā)的軟件,功能上來(lái)講比turboc有優(yōu)勢(shì),但是在很多方面vc并不能兼容turboc。以前在turboc的習(xí)慣用法,在vc中使用就會(huì)出錯(cuò)。一開(kāi)始是很難適應(yīng)的,。比如,子函數(shù)寫(xiě)在vc,前面必須要聲明其類(lèi)型,在turboc中時(shí)不必的,這類(lèi)的問(wèn)題很多,在以后索性只要涉及到的我都會(huì)注明類(lèi)型。在編程的過(guò)程中,很容易出現(xiàn)一個(gè)問(wèn)題,就時(shí)少大括號(hào)“”的問(wèn)題。這是,error只有一個(gè),但是錯(cuò)誤的地方很多,且都在括號(hào)處。按照計(jì)算機(jī)所指出的錯(cuò)誤位置尋找是不容易找出錯(cuò)誤的。直到整個(gè)
溫馨提示
- 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. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 美容美發(fā)店員工入股2025年度全新合作框架合同匯編
- 2025年度高端服裝店品牌代理權(quán)轉(zhuǎn)讓合同范本
- 砌體抹灰勞務(wù)分包合同書(shū)
- 工業(yè)生產(chǎn)過(guò)程質(zhì)量控制要點(diǎn)
- 農(nóng)業(yè)養(yǎng)殖業(yè)智能化養(yǎng)殖管理系統(tǒng)建設(shè)
- 新能源車(chē)充電樁建設(shè)合同
- 汽車(chē)工程車(chē)輛維護(hù)與故障診斷技能考試試題集
- 中學(xué)生物多樣性的感悟
- 城市商業(yè)管理系統(tǒng)升級(jí)服務(wù)協(xié)議
- 給排水安裝工程勞務(wù)合同
- 《西式點(diǎn)心制作》課件-抹茶戚風(fēng)蛋糕卷
- MOOC 體能攻略-浙江工商大學(xué) 中國(guó)大學(xué)慕課答案
- 部編版二年級(jí)語(yǔ)文下冊(cè)第一單元大單元整體作業(yè)設(shè)計(jì)
- 中國(guó)十五冶招聘線上筆試測(cè)評(píng)題庫(kù)
- xx基層團(tuán)支部建設(shè)培訓(xùn)
- 2020年山西省公務(wù)員錄用考試《行測(cè)》真題及答案
- 關(guān)于某工廠減免部分利息的申請(qǐng)
- 醫(yī)務(wù)人員手衛(wèi)生規(guī)范培訓(xùn)課件預(yù)防醫(yī)院感染的手衛(wèi)生措施
- 《反竊電技術(shù)》課件
- 學(xué)生宿舍電路負(fù)荷和電線阻燃要求
- 2023年污水處理行業(yè)洞察報(bào)告及未來(lái)五至十年預(yù)測(cè)分析報(bào)告(修訂版)
評(píng)論
0/150
提交評(píng)論