電子英漢字典課程設計報告(附程序清單)_第1頁
電子英漢字典課程設計報告(附程序清單)_第2頁
電子英漢字典課程設計報告(附程序清單)_第3頁
電子英漢字典課程設計報告(附程序清單)_第4頁
電子英漢字典課程設計報告(附程序清單)_第5頁
已閱讀5頁,還剩18頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、課程設計報告 課 題: 電子英漢字典 學 院: 電子工程與自動化 專 業: 測控技術與儀器 學生姓名: 學 號: 指導老師 : 2013年3月18目錄1、 內容摘要與關鍵詞-32、 設計任務與關鍵詞-43、 總體設計-5 1、程序設計組成框圖-5 2、各函數主要功能-5 3、主要功能的實現-6 3.1、菜單顯示-6 3.2、顯示函數-7 3.3、查找函數-8 3.4、修改函數-9 3.5、刪除函數-10 3.6、錄入函數-12四、調試分析-13五、總結與體會-16六、參考文獻-17七、附件-18內容摘要:電子英漢字典的主要功能是進行單詞的添加、顯示、查找、刪除、修改、保存等。該課題使用結構體數

2、組實現,每個數據的結構應包括:單詞的英文拼寫,單詞的中文釋義。(程序見附件)關鍵詞:字典、c語言編程、單詞添加、添加、顯示、查找、刪除、修改、保存設計任務與要求一、課程設計總結報告包括如下內容:編寫課程設計總結報告的目的是訓練同學撰寫科學論文和科研總結報告的能力。課程設計報告不僅應把設計調試的內容進行全面的總結,而且應將實踐內容上升到理論高度。(1) 課程名稱(2) 目錄、內容摘要、關鍵字。(3) 設計任務及要求。(4) 總體設計(程序設計組成圖、流程圖)(5) 詳細設計(模塊功能說明如函數功能、入口 及出口參數說明、函數調用關系描述等)(6) 調試與測試:調用方法、測試結果的分析與討論,測試

3、過程中遇到的主要問題及采取的解決措施。(7) 總結收獲與體會。(8) 參考文獻。(9) 源程序清單和執行結果:清單中應有足夠的注釋。總體設計開始1、程序設計組成框圖 mod函數veiw函數del函數add函數return函數find函數輸出結果 (1) 開始顯示菜單輸入指令 輸入6輸入5輸入4輸入3輸入2輸入1錄入刪除修改顯示查找退出繼續輸入指令 (2)2、各函數的主要功能電子英漢詞典設計系統能完成一個簡單的電子英漢詞典的功能,這個系統有六個功能,如:查找、增加、刪除、修改、顯示、結束 。把這六功能編該成六個子函數。在主函數當中對這六個子數調用,來實現對整個系統的操作。 使用結構體數組實現,每

4、個數據的結構應包括:單詞的英文拼寫,單詞的中文釋義。 各個函數的主要功能: 菜單函數main():顯示系統主菜單。 查找函數find():能夠隨時查找某個單詞 增加函數add():能夠隨時增加想要增加的單詞 刪除函數del():能夠刪除某單詞信息 修改函數mod():能隨時修改單詞信息 顯示函數veiw():能夠瀏覽所有單詞3、主要功能的實現 整個系統除了主函數外,實現七個功能:查找功能、增加功能、刪除功能、修改功能、顯示功能、結束功能。各個函數的詳細設計說明如下: 3.1、主函數main()通過scanf函數顯示菜單,利用switch語句實現各函數的調用,根據系統提示輸入的數字選項來調用相應

5、的函數。while(1) /按6退出,否則無限循環printf(請輸入選擇菜單:n);scanf(%d,&key);switch(key) case 1:find();break;case 2:view();break;case 3:mod();break;case 4:del();break;case 5:add();break;case 6: printf(33333歡迎再次使用3333n);return 0; default:return 0;開始mod函數veiw函數del函數add函數return函數find函數 圖3.13.2 顯示函數 veiw()首先清空結構體,再打開磁盤文件,

6、把磁盤文件內的信息進行冒泡排序后再顯示在屏幕上。for (i=0;i0)k=p; if(k!=j)strcpy(temp,wordj.english);strcpy(temp1,wordj.mean);strcpy(wordj.english ,wordk.english );strcpy(wordj.mean ,wordk.mean );strcpy(wordk.english ,temp);strcpy(wordk.mean ,temp1);fclose(fp); fp=fopen(f:word.txt,wb);for(i=0;wordi.english0!=0;i+)fwrite(&wo

7、rdi,sizeof(struct dia),1,fp);printf(%6s %-6s n,wordi.english,wordi.mean);具體流程圖如下 開始菜單顯示輸入指令輸入2輸入非2進行其他指令進行排序并顯示 3.3查找函數find()首先讀入文件內容,利用輸入函數scanf輸入要查找的單詞,如果找到則顯示出所找的單詞和中文意思,如果沒有找到則顯示出該單詞不存在,返回主菜單。printf(請輸入要查找的單詞:n);scanf(%s,a);for(i=0;i20;i+)fread(&wordi,sizeof(struct dia),1,fp);if(strcmp(wordi.eng

8、lish,a)=0)printf(%s的中文意思是:%sn,wordi.english,wordi.mean);break;if(i=20)printf(該單詞不存在n);具體流程圖如下開始 菜單顯示 輸入指令輸入非1進行其他指令輸出“不存在此單詞”輸入1進行查找指令輸入要查找的單詞是否存在該單詞否 是輸出該單詞及其意譯 3.4修改函數mod()首先打開文件,輸入選擇,按1輸入要修改的單詞,如果找到單詞,就輸入單詞新的意思,存儲之后再返回主菜單,如果沒有找到則顯示該單詞不存在,返回主菜單。按2則輸入要修改的意思,如果找到則輸入要修改的意思,如果沒有找到則顯示該單詞不存在,返回主菜單。print

9、f(修改單詞請按1,修改意思請按2:n);scanf(%d,&a);if(a=1)printf(請輸入要修改的單詞:n);scanf(%s,mod);for(i=0;i20;i+)fread(&wordi,sizeof(struct dia),1,fp);if(strcmp(wordi.english,mod)=0)printf(輸入修改后的單詞:n);scanf(%s,mod);strcpy(wordi.english,mod);printf(修改完成n);fp=fopen(g:word.txt,wb);for(j=0;j20;j+)fwrite(&wordj,sizeof(struct d

10、ia),1,fp);fclose(fp);break; if(i=20) printf(該單詞不存在n);fclose(fp);return;else if(a=2)printf(請輸入要修改的意思:n);scanf(%s,mod2);for(i=0;i20;i+)fread(&wordi,sizeof(struct dia),1,fp);if(strcmp(wordi.mean,mod2)=0)printf(輸入修改后的意思:n);scanf(%s,mod2);strcpy(wordi.mean,mod2);printf(修改完成n);break;if(i=20)printf(該單詞不存在n

11、);修改模塊流程圖如下開始菜單顯示輸入指令輸入非3進行其他指令輸入3進行修改指令輸出“不存在此單詞”修改單詞按1,修改意思按21?2? 1 2是否存在該單詞 否 是 修改單詞或者是意譯 保存修改 3.5 刪除函數 del()首先以只讀方式打開文件,輸入要刪除的單詞,如果找到并按1確定刪除則利用strcpy函數對它進行復制覆蓋,打開文件進行復制到磁盤文件,顯示已刪除。返回主菜單,如果沒有找到,則顯示該單詞不存在。printf(請輸入要刪除的單詞:n);scanf(%s,del);for(i=0;i20;i+)fread(&wordi,sizeof(struct dia),1,fp);if(str

12、cmp(wordi.english,del)=0)printf(確定刪除請按1,否則退出n);scanf(%d,&b);if(b=1) for(j=i+1;j20;i+,j+)strcpy(wordi.english,wordj.english);strcpy(wordi.mean,wordj.mean);for(k=0;k20;k+)wordj.englishk=0;wordj.meank=0;fp=fopen(f:word.txt,wb);for(i=0;wordi.english0!=0;i+)fwrite(&wordi,sizeof(struct dia),1,fp);fclose(f

13、p);printf(已刪除n);break;if(i=20)printf(該單詞不存在n);刪除模塊流程圖開始菜單顯示輸入指令輸入非4進行其他指令輸出“不存在此單詞”輸入4進行刪除指令輸入要刪除的單詞是否存在該單詞 否 是確定刪除1 否 否 進行刪除操作 是3.6 添加函數add() 首先以追加方式打開打開文件,利用輸入函數輸入要增加的單詞,再判斷該單詞是否存在,如果存在,則顯示“該單詞已經存在,輸入任何字符返回”,否則輸入該單詞的意思,返回主菜單。若儲存空間已滿,顯示“空間已滿,不能錄入”,返回主菜單。for(i=0;i20;i+)if(wordi.english0!=0)continue;

14、elsefp=fopen(f:word.txt,ab);printf(請輸入要錄入的單詞:n);scanf(%s,c);for(j=0;j20;j+)if(strcmp(c,wordj.english)=0)printf(這個單詞已經存在,輸入任何字符返回n);getch();return;printf(請輸入錄入單詞的意思:n);scanf(%s,d);strcpy(wordi.english,c);strcpy(wordi.mean,d);fseek(fp,0l,1); /定位fwrite(&wordi,sizeof(struct dia),1,fp);printf(成功添加n);fclo

15、se(fp);return;if(i=20)printf(空間已滿,不能錄入n);開始菜單顯示輸入指令輸入非5進行其他指令輸入5進行增加指令輸出“已存在此單詞”輸入要增加的單詞是否存在該單詞 是 將所添加單詞及其意譯保存至文件中輸入該單詞及其意譯 否 4、 調試分析 4.1、進入選擇菜單頁面以后,有六個選項,1、查找單詞;2、顯示單詞;3、修改單詞;4、刪除單詞;5、添加單詞;6、結束。 4.2、輸入5,按回車就進入添加函數程序了,如果里面存儲的單詞達到20個了,就會提醒你“空間已滿,不能錄入”。否則,就引導輸入想增加的單詞及其意思。 4.3、輸入1進入查找函數按回車就會出現提示語,然后輸入你

16、想查詢的單詞,并按回車。如果程序里面存有這個單詞就會輸出它的中文意思。如果不存在就顯示“不存在這個單詞”。 4.4、 輸入3,修改單詞請按1,修改意思請按2,若不存在該單詞則顯示該單詞不存在。修改單詞:修改意思: 4.5、輸入4,回車,在出現“請輸入要刪除的單詞”,后面輸入你想刪除的單詞,然后若確定刪除輸入1,之后就會顯示“已刪除”了。 4.6 輸入6,結束 總結與體會程序代碼我是借鑒別人的,從網上查看其他同學的相關程序,給了我一個程序設計的方向。首先要明確自己程序設計的目的;根據目的,設置思路框架;再根據思路框架分步驟寫出相關調用函數和主函數。我沒把握自己完全原創,借鑒時候難免出現這樣那樣的

17、錯誤。如開始設計出來的菜單不是預想的那樣,而是總出現混亂,解決的這個問題的辦法是調試。我嘗試自己設計一個程序。經過幾個夜晚冥想與數次上機操作,程序初步能夠運行。但實用度很底,數據修改,增減都是臨時的,退出程序后不能保存。所查的單詞也只能是當次輸入的單詞,查閱范圍有限。經過老師的一番指導和與同學們的交流,我也找到了初步解決的方案:以文件的形式保存詞條,這樣就能初步保存修改后的詞典,在調試的時候,由于對文件的操作并不是很熟悉,基本上每一步的進行都影響其他子函數。尤其是修改和刪除那部分,每個子函數的調試總是和顯示那部分一起調試,才能保證不出錯。在設計過程中遇到問題,可以說是困難重重,因為畢竟是第一次

18、做的,難免會遇到各種各樣的問題,同時在設計過程中發現了自己的不足之處,對以前的所學過的知識理解的不夠深刻,掌握的不夠牢固。通過這次課程設計之后,覺得以前學過的知識要重新溫習才能夠達到查漏補缺的效果。我會在今后的日子里,努力學好c語言,并使c語言成為自己的長項。這次課程設計終于完成了,在設計中遇到了許多的問題,但在老師的指導和同學們的幫助下終于完成了,總的來說還不是很完善,但我不會放棄繼續完善這份程序,我會在課余時間里繼續修改完善這份程序。感謝所有幫助過我的同學和指導老師。參考文獻:1 譚浩強著.c程序設計(第四版).北京:清華大學出版社,20102 林銳著.高質量c編程指南.北京:電子工業出版

19、社,20013stephen a.maguire.編程精粹:編寫高質量c語言代碼.人民郵電出版社,2009附件/*課設1:電子英漢字典編寫人:朱彩玲編寫日期:2012-3-4*/#include#include#include#includefile *fp;struct diachar english20;char mean20;word20;void init() /*初始化函數*/int i; for (i=0;i20;i+)memset(wordi.english,0,20); memset(wordi.mean,0,20);/fp=fopen(g:word.txt,w); fp=fo

20、pen(f:word.txt,r+); i=0;while( fscanf(fp,%s %sn,wordi.english,wordi.mean)!=eof) i+;fclose(fp); void add() /詞條錄入int i,j;char c20,d20;fp=fopen(f:word.txt,rb); for(i=0;i20;i+)fread(&wordi,sizeof(struct dia),1,fp);fclose(fp);fp=fopen(f:word.txt,ab); for(i=0;i20;i+)if(wordi.english0!=0)continue;elsefp=fo

21、pen(f:word.txt,ab);printf(請輸入要錄入的單詞:n);scanf(%s,c);for(j=0;j20;j+)if(strcmp(c,wordj.english)=0)printf(這個單詞已經存在,輸入任何字符返回n);getch();return;printf(請輸入錄入單詞的意思:n);scanf(%s,d);strcpy(wordi.english,c);strcpy(wordi.mean,d);fseek(fp,0l,1); /定位fwrite(&wordi,sizeof(struct dia),1,fp);printf(成功添加n);fclose(fp);re

22、turn;if(i=20)printf(空間已滿,不能錄入n);fclose(fp);return;void find() /查找函數int i;char a20;fp=fopen(f:word.txt,rb);for(i=0;i20;i+)fread(&wordi,sizeof(struct dia),1,fp);fclose(fp);fp=fopen(f:word.txt,rb); printf(請輸入要查找的單詞:n);scanf(%s,a);for(i=0;i20;i+)fread(&wordi,sizeof(struct dia),1,fp);if(strcmp(wordi.engl

23、ish,a)=0)printf(%s的中文意思是:%sn,wordi.english,wordi.mean);break;if(i=20)printf(該單詞不存在n);fclose(fp);void view() /信息顯示函數int i,j;int k,p;char temp20,temp120;for(i=0;i20;i+) /清空結構體for(j=0;j20;j+)wordi.englishj=0;wordi.meanj=0; fp=fopen(f:word.txt,rb);for(i=0;wordi.english0!=0;i+)fread(&wordi,sizeof(struct

24、dia),1,fp);fclose(fp);fp=fopen(f:word.txt,rb);for (i=0;i0)k=p; if(k!=j)strcpy(temp,wordj.english);strcpy(temp1,wordj.mean);strcpy(wordj.english ,wordk.english );strcpy(wordj.mean ,wordk.mean );strcpy(wordk.english ,temp);strcpy(wordk.mean ,temp1);fclose(fp); fp=fopen(f:word.txt,wb);for(i=0;wordi.eng

25、lish0!=0;i+)fwrite(&wordi,sizeof(struct dia),1,fp);printf(%6s %-6s n,wordi.english,wordi.mean);fclose(fp);return;void mod() /詞條修改int a,i,j;char mod20,mod220;fp=fopen(f:word.txt,rb);for(i=0;i20;i+)fread(&wordi,sizeof(struct dia),1,fp);fclose(fp);fp=fopen(f:word.txt,rb); printf(修改單詞請按1,修改意思請按2:n);scan

26、f(%d,&a);if(a=1)printf(請輸入要修改的單詞:n);scanf(%s,mod);for(i=0;i20;i+)fread(&wordi,sizeof(struct dia),1,fp);if(strcmp(wordi.english,mod)=0)printf(輸入修改后的單詞:n);scanf(%s,mod);strcpy(wordi.english,mod);printf(修改完成n);fp=fopen(g:word.txt,wb);for(j=0;j20;j+)fwrite(&wordj,sizeof(struct dia),1,fp);fclose(fp);brea

27、k; if(i=20) printf(該單詞不存在n);fclose(fp);return;else if(a=2)printf(請輸入要修改的意思:n);scanf(%s,mod2);for(i=0;i20;i+)fread(&wordi,sizeof(struct dia),1,fp);if(strcmp(wordi.mean,mod2)=0)printf(輸入修改后的意思:n);scanf(%s,mod2);strcpy(wordi.mean,mod2);printf(修改完成n);fp=fopen(f:word.txt,wb);for(j=0;j20;j+)fwrite(&wordj,

28、sizeof(struct dia),1,fp);fclose(fp);break;if(i=20)printf(該單詞不存在n); fclose(fp);return;void del() /刪除詞條int b,i,j,k;char del20;fp=fopen(f:word.txt,r);for(i=0;i20;i+)fread(&wordi,sizeof(struct dia),1,fp);fclose(fp);fp=fopen(f:word.txt,rb); printf(請輸入要刪除的單詞:n);scanf(%s,del);for(i=0;i20;i+)fread(&wordi,sizeof(struct di

溫馨提示

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

最新文檔

評論

0/150

提交評論