C語言課程設(shè)計報告_一種簡單的英文詞典排版系統(tǒng)的實現(xiàn)_第1頁
C語言課程設(shè)計報告_一種簡單的英文詞典排版系統(tǒng)的實現(xiàn)_第2頁
C語言課程設(shè)計報告_一種簡單的英文詞典排版系統(tǒng)的實現(xiàn)_第3頁
C語言課程設(shè)計報告_一種簡單的英文詞典排版系統(tǒng)的實現(xiàn)_第4頁
C語言課程設(shè)計報告_一種簡單的英文詞典排版系統(tǒng)的實現(xiàn)_第5頁
已閱讀5頁,還剩40頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、下載可編輯中國地質(zhì)大學(xué)本科生課程論文封面課程名稱C語言課程設(shè)計教師姓名.專業(yè) .整理 .下載可編輯本科生姓名本科生學(xué)號本科生專業(yè)所在院系日期 :.專業(yè) .整理 .下載可編輯課程設(shè)計評語對課程論文的評語:平時成績 :課程論文成績 :總 成 績:評閱人簽名 :注: 1、無評閱人簽名成績無效;.專業(yè) .整理 .下載可編輯2、必須用鋼筆或圓珠筆批閱,用鉛筆閱卷無效;3、如有平時成績 ,必須在上面評分表中標(biāo)出,并計算入總成績。目 錄課程設(shè)計評語3目 錄41 課程論文題目62 程序設(shè)計思路73 功能模塊圖84 數(shù)據(jù)結(jié)構(gòu)設(shè)計85 算法設(shè)計56 程序代碼167 程序運行結(jié)果218 編程中遇到的困難及解決方法2

2、49 總結(jié)心得及良好建議2410 致謝24.專業(yè) .整理 .下載可編輯.專業(yè) .整理 .下載可編輯1課程論文題目一種簡單的英文詞典排版系統(tǒng)的實現(xiàn):【要求】( 1)能輸入和現(xiàn)實打入的單詞 ;( 2)能分辨出單詞 ;( 3)對重復(fù)的單詞和已經(jīng)輸入的單詞能自動排除 ;( 4)能按 AZ 的順序排版 ;( 5)能將運行結(jié)果以文本形式儲存 ;( 6)具有添加新單詞重新排版的能力 。提示( 1)需求分析 :運行結(jié)果以文本形式儲存 ,因而要提供文件的輸入輸出操作 ;通過查找操作檢查重復(fù)單詞 ;提供排序操作現(xiàn)實按 AZ 的順序排版 ;提供插入操作添加新單詞并重新排版 。另外通過鍵盤式菜單實現(xiàn)功能選擇 。( 2

3、)總體設(shè)計 :整個系統(tǒng)被設(shè)計為單詞錄入模塊 ,文件存儲模塊和單詞瀏覽模塊。其中單詞錄入模塊要完成輸入單詞 ,檢查是否重復(fù) ,排序操作 。 文件存儲模.專業(yè) .整理 .下載可編輯塊把存放單詞的數(shù)組中的數(shù)據(jù)寫入文件。單詞瀏覽模塊完成英文詞典的輸出,即文件的輸出操作 。( 3)數(shù)據(jù)結(jié)構(gòu)采用指針數(shù)組或二維數(shù)組 。以 【Enter 】鍵或者空格鍵作為單詞輸入結(jié)束標(biāo)志 ,對重復(fù)的單詞自動排除可選用查找方法 ,數(shù)據(jù)結(jié)構(gòu)可采用指針和數(shù)組。2程序設(shè)計思路在英文詞典排版當(dāng)中,人工統(tǒng)計的速度很慢 ,且容易出現(xiàn)差錯 。本英文詞典排版系統(tǒng)的自動化加速了排版工作,提高工作效率本程序主要采用對零散的單詞進(jìn)行自動讀取 ,然后

4、按單詞首字母順序講單詞保存到文檔,這樣的結(jié)構(gòu)化非常便于程序后續(xù)的排版工作。排版具體過程涉及到自動排除重復(fù)單詞與添加新單詞并重新排版等問題 ,將于正問中詳細(xì)介紹 。本程序?qū)崿F(xiàn)了所有設(shè)計要求。整個系統(tǒng)被設(shè)計為單詞錄入模塊、文件存儲模塊和單詞瀏覽模塊。其中單詞錄入模塊要完成輸入單詞、檢查是否重復(fù) 、排序操作 。文件存儲模塊把存放單詞的數(shù)組中的數(shù)據(jù)寫入文件。單詞瀏覽模塊完成英文詞典的輸出,即文件的輸出操作。.專業(yè) .整理 .下載可編輯3功能模塊圖一種簡單的英文詞典排版系統(tǒng)單詞錄入單詞瀏覽單詞排序4數(shù)據(jù)結(jié)構(gòu)設(shè)計數(shù) 據(jù) 結(jié) 構(gòu) 采 用 指 針 數(shù) 組 或 二 維 數(shù) 組 : char*dictionary

5、N;或 chardictionaryN20。其中 N是宏定義 #define N 256(表示單詞個數(shù) )。( 1)單詞錄入模塊輸入一個單詞 ,存放在一個臨時字符數(shù)組中,以空格或回車表示單詞的結(jié)束(這也是默認(rèn)操作 ),然后換行輸出剛剛輸入的單詞。采用插入排序算法的思想把該單詞插入單詞數(shù)組中,不同的是如果兩個單詞相同則不插入。( 2)文件存儲模塊采用 fwrite 或fprintf 把單詞數(shù)組輸入到文件中。( 3)單詞瀏覽模塊采用 fread 或fscanf 把單詞從文件中讀出 ,然后輸出 。.專業(yè) .整理 .下載可編輯5算法設(shè)計( 1)主函數(shù)【流程圖】顯示一系列的功能選項輸入 n,判斷 n 是

6、否是 1 9根據(jù) n 的值調(diào)用各功能模塊函數(shù)NY【程序】#include "stdio.h"#include "stdlib.h"#include "string.h"#include "ctype.h".專業(yè) .整理 .下載可編輯#define ROWS 256#define COLS 32static FILE *fp;static char aROWSCOLS;char get_option(void);int b(int count);void c(char *pt, int count);int chec

7、k(char arr, int count);void storage(char *pt, int count);int n;/*n全局變量 */char wordN20;void menu()/*主界面 */int n,w;/* 變量 n 保存選擇菜單數(shù)字 ,w 判斷輸入的數(shù)字是否在功能菜單對應(yīng)數(shù)字范圍內(nèi) */doputs("tt*MENU*nn");puts("tttWelcome to dj's program!nn");puts("tttt 1.Add new word.");.專業(yè) .整理 .下載可編輯puts(&q

8、uot;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(n&

9、lt;1|n>6)/*對選擇的數(shù)字作判斷 */w=1;getchar();else w=0;while(w=1);switch(n)case 1:add();break;/* 追加模塊 */case 2:browse();break;/*瀏覽模塊 */case 3:search();break;/* 查找模塊 */.專業(yè) .整理 .下載可編輯case 4:sort();break;/* 分類模塊 */case 5:order();break;/*排序模塊 */case 6:exit(0);/* 退出 */void main()/*主函數(shù) */menu();( 2)公共函數(shù)【程序】int

10、load()/*加載函數(shù) */int i,count;int start;char *ptROWS;char ch, len;char input;.專業(yè) .整理 .下載可編輯if(fp=fopen("words.txt","a+")=NULL)/*以輸出打開方式,在此前的記錄被覆蓋 */printf("nCannot open file!n");return NULL;for(i=0;!feof(fp);i+)fscanf(fp,"%s",&wordi);fclose(fp);return i+1;/*返

11、回記錄個數(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);.專業(yè) .整理 .下載可編輯for(i=0;i<n;i+)fprintf(fp,"%s",&wordi);fclose(fp);(3)各功能模塊設(shè)計1)分類模塊【程序】void sort()int i

12、,j,k;char c20;if(n=load()=0)printf("nCannot open file!n");exit(0);for(i=0;i<n;i+).專業(yè) .整理 .下載可編輯for(j=0;j<n-i-1;j+);if(strcmp(wordj,wordj+1)>0)strcmp(c,wordj);strcmp(wordj,wordj+1);strcmp(wordj+1,c);save(n);printf("Successful!_.n");printf("nNow?1.browse all2.back&quo

13、t;);scanf("%d",&k);if(k=1)browse();else if(k=2)menu();2)排序模塊【流程圖】用選擇法排序.專業(yè) .整理 .保存下載可編輯【程序】void order()/* 排序模塊 */int aN,i,j,t;struct words;n=load();for(i=0;i<N;i+)for(i=0;i<N-1;i+)for(j=i+i;j<N;j+)if(ai>aj).專業(yè) .整理 .下載可編輯t=ai;ai=aj;aj=t;for(j=0;j<N;j+)printf("%3d&quo

14、t;,ai);3)修改模塊【流程圖】顯示所有記錄,讓用戶看哪個要修改.專業(yè) .整理 .下載可編輯輸入要修改的單詞是否找到此單詞記錄YN顯示找到的單詞, 調(diào)用提示沒有找到修改函數(shù)YY詢問用戶是否繼續(xù)修改返回主菜單【程序】void modify(int a)/* 修改模塊 */.專業(yè) .整理 .下載可編輯char c20;printf("Enter the new word:");scanf("%s",c);strcpy(worda,c);save(n);4)刪除模塊【流程圖】顯示所有記錄, 讓用戶看哪個需要刪除輸入需要刪除的單詞.專業(yè) .整理 .下載可編輯

15、是否找到此單詞記錄YN顯示找到的記錄提示沒有找到調(diào)用刪除函數(shù)Y詢問用戶是否繼返回主菜單續(xù)刪除N【程序】void del(int a)/* 刪除模塊 */int x,i,y;.專業(yè) .整理 .下載可編輯printf("Areyou sure to deletethis word?nt1).sure2).no and backmenu bb");scanf("%d",&x);/* 輸入要修改的單詞 */if(x=1)for(i=a;i<n-1;i+)/* 查找要修改的單詞 */strcpy(wordi,wordi+1);save(n-1);pr

16、intf("Successful!_.nNow? 1).one more2).back menu");scanf("%d",&y);if(y=1)search();else if(x=2)menu();else if(x=2)menu();.專業(yè) .整理 .下載可編輯5)追加模塊【流程圖】調(diào)用加載函數(shù)n=load() ;并計算可以記錄個數(shù)n輸入用戶要追加的的單詞保存追加的單詞詢問用戶是否繼續(xù)追加單詞Y返回主菜單N.專業(yè) .整理 .下載可編輯【程序】void add()/* 追加模塊 */int i,x,w1,w2,w;char c20;if(n=

17、load()=0)exit(0);elseputs("Enter the new word!n");scanf("%s",c);/* 輸入要追加的單詞 */for(i=0;i<n;i+)if(strcmp(wordi,c)=0)break;if(i<n)w=1;.專業(yè) .整理 .下載可編輯doprintf("The word has already exit!n");printf("nnWhat do you want to do?nt1).enter one more2).back menu bb")

18、;scanf("%d",&x);if(x<1|x>2)w1=1;elsew1=0;while(w1=1);elsew2=1;strcpy(wordi,c);save(n+1);printf("Successful!_.Nowchoosewhatyouwilldonext?nt1).add another2).back menu bb");do.專業(yè) .整理 .下載可編輯scanf("%d",&x);if(x<1|x>2)w2=1;elsew2=0;while(w2=1);switch(x)cas

19、e 1:add();break;case 2:menu();break;6)瀏覽(全部)模塊.專業(yè) .整理 .下載可編輯【流程圖】顯示所有單詞記錄用戶進(jìn)行選項回到分類模塊返回主菜【程序】void browse()/* 瀏覽(全部)模塊 */int i,w;if(n=load()=0)/* 加載記錄 */printf("nCannot open file!n");exit(0);.專業(yè) .整理 .下載可編輯for(i=0;i<n-1;i+)printf("%s/n",wordi);puts("Successful!_.Now 1.back

20、menu2.sort");scanf("%d",&w);if(w=1)menu();else if(w=2)sort();.專業(yè) .整理 .下載可編輯7)查找模塊【流程圖】輸入需要查找的單詞是否找到該單詞記錄YN顯示找到的記錄提示沒有找到詢問用戶是否繼續(xù)查找讓用戶選擇1).查找返回主菜單另一個 2).返回YN【程序】void search()/* 查找模塊 */.專業(yè) .整理 .下載可編輯int i,x,y;char vs20;if(n=load()=0)/* 加載記錄 */printf("nCannot open file!n");e

21、xit(0);printf("Enter the word what you want to search!");scanf("%s",vs);/* 輸入要查找的單詞 */for(i=0;i<n;i+)/* 查找要修改的單詞 */if(strcmp(wordi,vs)=0)printf("Successful!_.nThewordis:%sn",wordi);/*找到需要修改的單詞 */printf("What would you like to do with the word?nt1).modify2).delrt

22、e3).nothingbb");scanf("%d",&y);if(y=1)modify(i);else.專業(yè) .整理 .下載可編輯del(i);if(i=n)printf("HOHO!Sorry.Not found");printf("Now.1).one more2).back3).exit");scanf("%d",&x);switch(x)case 1:search();break;case 2:menu();break;case 3:exit(0);6程序代碼#include &

23、quot;stdio.h"#include "stdlib.h"#include "string.h"#include "ctype.h"#define ROWS 256.專業(yè) .整理 .下載可編輯#define COLS 32static 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(ch

24、ar *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)fputs(" 不能打開或建立文件 !n",stderr);.專業(yè) .整理 .下載可編輯exit(1);fseek(fp,0L,SEEK_END);start=(int)ftell(fp)/32;count=start;rewind(fp);if(fread(a,32*sizeof(c

25、har),start,fp)=0)i=0;puts(" 開始創(chuàng)建詞庫 ");puts(" 請輸入單詞 (每行一個 )");puts(" 在新行輸入 END 結(jié)束輸入 :");while(i<ROWS&&scanf("%s", ai)=1)fflush(stdin);if(strncmp(ai,"END",3)=0)count+=i;break;.專業(yè) .整理 .下載可編輯if(check(ai, i)continue;i+;puts("tt*歡迎使用字典排版系統(tǒng)*

26、nn");puts("MENU");puts(" 您要做些什么 ?");puts("a. 顯示已有的單詞b. 添加新單詞 ");puts("c. 對已有的單詞進(jìn)行排序d. 退出 ");puts("nntt*n");while(input=get_option()!='d')if(input='a')puts(" 已有的單詞 :");for(i=0;i<count;i+).專業(yè) .整理 .下載可編輯printf(" &q

27、uot;);puts(ai);if(input='b')puts(" 開始創(chuàng)建詞庫 ");puts(" 請輸入新的單詞 (每行一個 )");puts(" 在新行輸入 END 結(jié)束輸入 : ");count=b(count);if(input='c')puts(" 對單詞進(jìn)行排序 :");c(pt, count);for(i=0;i<count;i+)printf(" ");puts(pti);.專業(yè) .整理 .下載可編輯puts(" 還要做些什么

28、?");storage(pt,count);fclose(fp);puts(" 謝謝使用 ,再見 !");return 0;char get_option(void)char ch;while(ch=getchar()<'a'|ch>'d')while(ch=getchar()!='n');puts(" 請輸入 a,b,c 或者 d.");.專業(yè) .整理 .下載可編輯fflush(stdin);return ch;int b(int count)int i;i=count;while(

29、i<ROWS&&scanf("%s", ai)=1)fflush(stdin);if(check(ai, i)continue;if(strncmp(ai,"END",3)=0)count=i;break;.專業(yè) .整理 .下載可編輯i+;return count;void c(char *pt, int count)int i,j;char *temp;for(i=0;i<ROWS;i+)pti=ai;for(i=0;i<count;i+)for(j=i+1;j<count;j+)if(strcmp(pti,ptj)>0)temp=pti;pti=ptj;.專業(yè) .整理 .下載可編輯ptj=temp;int check(char arr, int count)int i;int flag=0;for(i=0;i<strlen(arr);i+)if(isalpha(arri)=0)printf("%s 不是一個單詞 .n",arr);flag=1;break;for(i=0;i<count;i+)if(strncmp(ai,acount,strlen(acount)+1)=0

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論