版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、目 錄課程設(shè)計評語2目 錄31課程論文題目42程序設(shè)計思路43功能模塊圖54數(shù)據(jù)結(jié)構(gòu)設(shè)計55算法設(shè)計66程序代碼137程序運行結(jié)果228編程中遇到的困難及解決方法259總結(jié)心得及良好建議2610致謝261課程論文題目 一種簡單的英文詞典排版系統(tǒng)的實現(xiàn)【要求】(1)能輸入和現(xiàn)實打入的單詞(2)能分辨出單詞(3)對重復的單詞和已經(jīng)輸入的單詞能自動排除(4)能按az的順序排版(5)能將運行結(jié)果以文本形式儲存(6)具有添加新單詞蹦重新排版的能力提示(1)需求分析:運行結(jié)果以文本形式儲存,因而要提供文件的輸入輸出操作;通過查找操作檢查重復單詞;提供排序操作現(xiàn)實按az的順序排版;提供插入操作添加新單詞并重
2、新排版。另外通過鍵盤式菜單實現(xiàn)功能選擇。(2)總體設(shè)計:整個系統(tǒng)被設(shè)計為單詞錄入模塊,文件存儲模塊和單詞瀏覽模塊。其中單詞錄入模塊要完成輸入單詞,檢查是否重復,排序操作。文件存儲模塊把存放單詞的數(shù)組中的數(shù)據(jù)寫入文件。單詞瀏覽模塊完成英文詞典的輸出,即文件的輸出操作。(3)數(shù)據(jù)結(jié)構(gòu)采用指針數(shù)組或二維數(shù)組。以【enter】鍵或者空格鍵作為單詞輸入結(jié)束標志,對重復的單詞自動排除可選用查找方法,數(shù)據(jù)結(jié)構(gòu)可采用指針和數(shù)組。2程序設(shè)計思路整個系統(tǒng)被設(shè)計為單詞錄入模塊,文件存儲模塊和單詞瀏覽四個模塊。其中單詞錄入模塊要完成輸入單詞,檢查是否重復,排序操作。文件存儲模塊把存放單詞的詞組中的數(shù)據(jù)寫入文件。單詞瀏
3、覽模塊完成英文詞典的輸出,即文件的輸出操作。這四個模塊是整體的設(shè)計思路,設(shè)計核心,整個程序的設(shè)計都將圍繞這四個模塊進行,各個模塊都相互銜接,所以需要在設(shè)計好各個部分地同時,還要把握好各個部分的連接。3功能模塊圖(英文詞典排版系統(tǒng)單詞錄入文件存儲單詞瀏覽 4數(shù)據(jù)結(jié)構(gòu)設(shè)計數(shù)據(jù)結(jié)構(gòu)采用指針數(shù)組或二維數(shù)組:char* dictionaryn; 或 char dictionaryn20。其中n是宏定義#define n 256 (表示單詞個數(shù))(1)單詞錄入模塊 輸入一個單詞,存放在一個臨時字符數(shù)組中,以空格或回車表示單詞的結(jié)束(這也是默認操作),然后換行輸出剛剛輸入的單詞。采用插入排序算法的思想把該單
4、詞插入單詞數(shù)組中,不同的是如果兩個單詞相同則不插入。(2)文件存儲模塊 采用fwrite或fprintf把單詞數(shù)組輸入到文件中。(3)單詞瀏覽模塊采用fread或fscanf把單詞從文件中讀出,然后輸出。 5算法設(shè)計1.主函數(shù) 【流程圖】 顯示一系列的功能選項輸入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ù)字是否在功能菜單對應數(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)/*對選擇的數(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;/*分類模塊*/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)/*以輸出打開方式,
8、在此前的記錄被覆蓋*/printf(ncannot open file!n);return null;for(i=0;!feof(fp);i+)fscanf(fp,%s,&wordi);fclose(fp);return i+1;/*返回記錄個數(shù)*/void save(int n)/*保存函數(shù),保存n個記錄*/file *fp;int i;if(fp=fopen(words.txt,a+)=null)/*以輸出打開方式,在此前的記錄被覆蓋*/printf(ncannot open file!n);exit(0);for(i=0;in;i+)fprintf(fp,%s,&wordi);fclos
9、e(fp);3.各功能模塊設(shè)計1)分類模塊【程序】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)修改模塊【流程圖】顯示所有記錄,讓用戶看哪個要修改輸入要修改的單詞是否找到此單詞記錄yn顯示找到的單詞,調(diào)用修改函數(shù)提示沒有找到詢問用戶是否繼續(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)刪除模塊【流程圖】顯示所有記錄,讓用戶看哪個需要刪除輸入需要刪除的單詞是否找到此單詞記錄yn提示沒有找到顯示找到的記錄 調(diào) 用 刪 除 函 數(shù)返回主菜單詢問用戶是否繼續(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)追加模塊詢問用戶是否繼續(xù)追加單詞保存追加的單詞輸入用戶要追加的的單詞調(diào)用加載函數(shù)n=load();并計算可以記錄個數(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)瀏覽(全部)模塊【流程圖】用戶進行選項回到分類模塊返回主菜單【程序】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).查找另一個2).返回詢問用戶是否繼續(xù)查找提示沒有找到顯示找到的記錄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(不能打開或建立文件!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(開始創(chuàng)建詞庫);puts(請輸入單詞(每行一個);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. 對已有的單詞進行排序 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(開始創(chuàng)建詞庫);puts(請輸入新的單詞(每行一個);puts(在新行輸入end結(jié)束輸入: ); co
21、unt=b(count); if(input=c) puts(對單詞進行排序:); c(pt, count); for(i=0;icount;i+) printf( ); puts(pti); puts(還要做些什么?); storage(pt,count); fclose(fp); puts(謝謝使用,再見!); return 0; char get_option(void) char ch; while(ch=getchar()d) while(ch=getchar()!=n) ; puts(請輸入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不是一個單詞.n,arr); flag=1; break; for(i=0;icount;i+) if(strncmp(ai,acount,strlen(acount)+1)=0) puts(重復的單詞!); 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程序運行結(jié)果8編程中遇到的困難及解決方法在學習c語言時,最初使用的是turboc計算機編程軟件,實習則用vc軟件編程。兩個軟件各有自己的特點。vc作為后來開發(fā)的軟件,功能上來講比turboc有優(yōu)勢,但是在很多方面vc并不能兼容turboc。以前在turboc的習慣用法,在vc中使用就會出錯。一開始是很難適應的,。比如,子函數(shù)寫在vc,前面必須要聲明其類型,在turboc中時不必的,這類的問題很多,在以后索性只要涉及到的我都會注明類型。在編程的過程中,很容易出現(xiàn)一個問題,就時少大括號“”的問題。這是,error只有一個,但是錯誤的地方很多,且都在括號處。按照計算機所指出的錯誤位置尋找是不容易找出錯誤的。直到整個
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030年垃圾回收分揀機器人制造企業(yè)制定與實施新質(zhì)生產(chǎn)力戰(zhàn)略研究報告
- 批發(fā)業(yè)渠道沖突與協(xié)調(diào)管理考核試卷
- 印刷業(yè)知識產(chǎn)權(quán)保護考核試卷
- 2025-2030年地熱供暖系統(tǒng)設(shè)計企業(yè)制定與實施新質(zhì)生產(chǎn)力戰(zhàn)略研究報告
- 2025-2030年戶外燒烤家具套裝行業(yè)深度調(diào)研及發(fā)展戰(zhàn)略咨詢報告
- 2025-2030年塑木遮陽棚與雨棚行業(yè)深度調(diào)研及發(fā)展戰(zhàn)略咨詢報告
- 2025-2030年手工拉坯陶瓷碗盤行業(yè)跨境出海戰(zhàn)略研究報告
- 交通樞紐建筑物清潔要點考核試卷
- 工業(yè)物聯(lián)網(wǎng)與制造業(yè)的數(shù)字化趨勢考核試卷
- 乳品質(zhì)量管理工具與方法考核試卷
- 醫(yī)院消防安全培訓課件(完美版)
- 人教版(2024新版)一年級上冊數(shù)學第一單元《數(shù)學游戲》單元整體教學設(shè)計
- 魏寧海超買超賣指標公式
- 防洪防汛安全知識教育課件
- (正式版)FZ∕T 80014-2024 潔凈室服裝 通 用技術(shù)規(guī)范
- 新起點英語二年級下冊全冊教案
- 【幼兒園戶外體育活動材料投放的現(xiàn)狀調(diào)查報告(定量論文)8700字】
- 剪映專業(yè)版:PC端短視頻制作(全彩慕課版) 課件 第3章 短視頻剪輯快速入門
- 湖南省長沙市開福區(qū)青竹湖湘一外國語學校2023-2024學年九年級下學期一模歷史試題
- 帶狀皰疹與帶狀皰疹后遺神經(jīng)痛(HZ與PHN)
- 漢密爾頓抑郁和焦慮量表
評論
0/150
提交評論