課程設計報告-電子詞典_第1頁
課程設計報告-電子詞典_第2頁
課程設計報告-電子詞典_第3頁
課程設計報告-電子詞典_第4頁
課程設計報告-電子詞典_第5頁
已閱讀5頁,還剩25頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

PAGE課程設計報告課程名稱《C語言程序設計》課題名稱電子英漢詞典設計專業(yè)信息管理與信息系統(tǒng)班級學號姓名指導教師2011年6湖南工程學院課程設計任務書

課程名稱《C語言程序設》課題電子英漢詞典設計專業(yè)班級信息管理與信息系統(tǒng)學生姓名學號指導老師審批任務書下達日期2011年6月4日任務完成日期2011年6月22日一、設計內容與設計要求1.課程設計目的全面熟悉、掌握C語言基本知識,增強對不同的問題運用和靈活選擇合適的數據結構以及算法描述的本領,熟悉編制和調試程序的技巧,掌握分析結果的若干有效方法,進一步提高上機動手能力,培養(yǎng)使用計算機解決實際問題的能力,養(yǎng)成提供文檔資料的習慣和規(guī)范編程的思想,為后繼課程(數據結構和數據庫等課程)的實驗以及課程設計打下較扎實的基礎。2.課題題目⑴班級成績管理系統(tǒng)⑵班級檔案管理系統(tǒng)⑶飛機訂票系統(tǒng)⑷猜數字游戲⑸電子英漢詞典設計⑹通訊錄管理系統(tǒng)3.設計要求掌握結構化程序設計的主體思想,以自頂向下逐步求精的方法編制程序解決一些實際的中型問題,為將來開發(fā)軟件積累一些典型的案例處理經驗。具體要求如下:設計課題題目:每位同學根據自己學號除以6所得的余數加一選擇相應題號的課題。原則上不予換提,私自換題者不記成績。⑵根據自己對應的課題完成以下主要工作:①完成系統(tǒng)需求分析:包括系統(tǒng)設計目的與意義;系統(tǒng)功能需求;輸入輸出的要求。②完成系統(tǒng)概要設計:程序由哪些模塊組成以及模塊之間的層次結構、各模塊的調用關系;每個模塊的功能;課題涉及的數據結構和數據庫結構;即要存儲什么數據,這些數據是什么樣的結構,它們之間有什么關系等。③完成系統(tǒng)詳細設計:包括采用C語言定義相關的數據類型;寫出各模塊的類C碼算法;畫出函數的調用關系圖。④調試分析、設計體會、測試數據:準備典型的測試數據和測試方案,包括正確的輸入及輸出結果和含有錯誤的輸入及輸出結果;程序調試中遇到的問題以及解決問題的方法;課程設計過程經驗教訓、心得體會。⑤關鍵源程序(帶注釋)⑶按規(guī)定格式完成課程設計報告,將其打印稿(A4紙)上交給老師存檔。⑷不得抄襲他人程序、課程設計報告,每個人應體現自己的個性設計。二、進度安排第17周星期一8時:00分——11時:30分星期二8時:00分——11時:30分星期四8時:00分——11時:30分星期五8時:00分——11時:30分第18周星期一8時:00分——11時:30分第18周星期二14時:30分——18時:00分目錄1.系統(tǒng)需求分析 11.1問題描述 11.2功能要求 12.概要設計 22.1系統(tǒng)的總體設計 22.2各模塊的功能 32.3相關數據結構設計 33.詳細設計 43.1采用C語言定義相關的數據類型 43.2各功能模塊的流程圖 54.系統(tǒng)調試 105.運行結果 115.1查詢單詞界面 115.2新增詞條界面 135.3編輯詞條界面 155.4刪除詞條界面 175.5退出字典 176.心得體會 187.附錄 187.1參考書目 187.2源程序清單 198.評分表 25PAGE251.系統(tǒng)需求分析1.1問題描述英漢詞典作為一個常用的學習工具,是我們經常要使用的。該系統(tǒng)能完成一個簡單的電子英漢詞典的功能,如:單詞的查找、增詞、刪除、修改和維護等工作。1.2功能要求(1)在計算機中建立有限規(guī)模的電子英漢詞典(文件),利用程序實現電子英漢詞典的查找、增詞、刪除、修改和維護工作。(2)詞典的內容為:每行對應一個詞條,每個詞條由兩個字符串組成,字符串用若干空格符分開;前一個是單詞字符串(英文),后一個是釋義字符串(中文),使用分號作為多個釋義的分隔符(無空格)。(3)對單詞和釋義字符串長度的限定分別為不少于20個與40個字符,詞條數限定為不多于200條。(4)采用菜單工作方式。在一個操作執(zhí)行之后,程序詢問是否繼續(xù)執(zhí)行該操作。如輸入Y或y,則重復同一操作,不退回到菜單;如輸入其它信息,則回到菜單等待另一次選擇。僅當選擇退出操作時,程序應詢問是否將修改后的詞典存盤,并根據用戶選擇存盤退出或不存盤退出。(5)要求整個設計以人為本,用戶界面友好。2.概要設計2.1系統(tǒng)的總體設計程序共有六個子函數和一個主函數:(1)query(void)是查找函數。(2)append(void)是新增函數。(3)edit(void)是編輯函。(4)erase()是刪除函數。(5)add()是一個初始化函數。(6)lookup()是用來實現單詞查詢的一個子函數。(7)主程序通過無限循環(huán)來接收輸入的命令,并且根據命令調用相應的函數處理。主函數主函數查詢函數query(void)新增函數append(void)編輯函數edit(void)刪除函數erase()初始化add()查找功能函數lookup()圖2.1總體設計圖2.2各模塊的功能(1)query是查找函數,用戶通過系統(tǒng)提示輸入要查找的單詞,只要單詞庫中含有此單詞便能找到相應的中文解釋。(2)append是新增函數,用戶可通過此函數來增加單詞庫單詞的數量。(3)edit是編輯函數,程序提示用戶輸入要修改的單詞,如果找到,則提示輸入新單詞及中文解釋。(4)erase是刪除函數,程序提示用戶輸入要刪除的單詞,在得到確認后,刪除這個單詞的紀錄。(5)add是一個初始化函數,讓建立的詞庫里有一部分單詞。(6)lookup是用來實現單詞查詢的一個子函數。2.3相關數據結構設計(1)宏定義的一些相關數據#defineszWORD32#defineszSTRN224#defineszITEMsizeof(structTItem)charfileDict[szSTRN];(2)開頭定義一個結構體數組用于單詞和釋義的存放單詞釋義charchar3.詳細設計3.1采用C語言定義相關的數據類型定義結構體數組:typedefstructTItem{charword[szWORD];charmean[szSTRN];}Item;宏定義的數據:#defineszWORD32#defineszSTRN224#defineszITEMsizeof(structTItem)charfileDict[szSTRN];定義的文件:File*f;3.2各功能模塊的流程圖開始(1)查詢函數query(void)流程圖開始否否輸入要查詢的單詞調用lookup()函數是否能打開文件返回到查詢函數用while函數進行單詞查詢關閉文件,回到查詢函數是否找到單詞輸出沒有該單詞記錄輸出該單詞和釋義是否是圖3.1查詢函數query(void)流程圖(2)新增函數append(void)流程圖開始開始輸入要新增的單詞判斷詞庫里是否有該單詞輸出字典內已有該單詞記錄輸出請輸入釋義,按回車結束:把獲得的字符串給i.mean打開這個文件以追加的方式寫入函數,把i所指向的1*szITEM個字節(jié)輸入到f所指的文件中關閉文件詞條已新增是否圖3.2新增函數append(void)流程圖(3)編輯函數edit(void)流程圖開始開始輸入要編輯的單詞判斷詞典里是否有該單詞輸出字典內沒有該單詞記錄!請輸入釋義,按回車結束(輸入abort放棄修改):獲得字符串,放在i.mean中判斷是否為abort已放棄修改以讀寫的方式打開fileDict將&i所指向的一個szITEM字節(jié)的數據項放進f詞條已保存關閉文件否是否是圖3.3編輯函數edit(void)流程圖(4)刪除函數erase()流程圖開始開始輸入要刪除的單詞調用lookup()函數在文件中查找單詞是否能查找到該單詞輸出字典內沒有該單詞記錄!如果有,則打開文件,重新讀寫關閉文件詞條已刪除否是圖3.4刪除函數erase()流程圖(5)詞庫初始化函數add()流程圖開始開始將定義的結構體賦初值指定一個文件以追加的方式打開文件把i所指向的1*szITEM個字節(jié)輸入到f所指的文件中關閉文件輸出詞條以初始化圖3.5初始化函數add()流程圖4.系統(tǒng)調試在程序運行時開始查不到單詞,后來查找原因,是由于此庫里沒有單詞,這樣的電子詞典給了用戶也用不了,所以我就加了一個add子函數進行初始化,使詞庫里有一部分單詞。這樣的電子詞典就比較實用。在函數的幾個功能中,刪除函數在運行時不能刪除單詞,但經過分析,刪除函數中沒有錯誤,而是其中調用的lookup()中的一條語句沒有起到它應起的作用,后來我在if(strcmp(i.word,word))后面加上{p=p+szITEM;continue;}就實現了單詞刪除的功能。因為我加了一個初始化的功能,讓所定義的文件中有部分單詞,而這個功能就是要給結構體初始化,而我開始定義的結構體后就在后面直接初始化,運行的時候并沒有達到我預期的效果,還是顯示詞庫里沒有單詞。于是我在結構體上下工夫,我開始的賦值出現了問題,導致我定義的結構體是個非法結構體。所以我重新定義結構體,按照規(guī)范的要求重新賦值,就達到了我想要的效果了。由于主函數是運用的無限循環(huán)體,所以在運行時,友好界面會一直出現,不僅不美觀,看起來結不簡潔,所以我在后面加了一條清屏的語句,就是界面看起來美觀大方了。5.運行結果5.1初始化界面圖5.1初始化界面5.2查詢單詞界面(1)查詢單詞的界面圖5.2查詢單詞界面(2)未初始化下查詢單詞界面圖5.3未初始化查詢單詞(3)初始化后查詢單詞圖5.4初始化后查詢單詞(5)查不到單詞的情況圖5.5查不到單詞的情況5.2新增詞條界面(1)新增詞條界面圖5.6新增詞條的界面(2)輸入新增的單詞圖5.7輸入新增的單詞(3)輸入新增單詞的釋義圖5.8輸入新增單詞的釋義(4)新增成功圖5.9新增成功5.3編輯詞條界面(1)輸入要編輯的單詞和釋義圖5.10輸入要編輯的單詞和釋義(2)編輯成功界面圖5.11編輯成功(3)放棄編輯的界面圖5.12放棄編輯5.4刪除詞條界面圖5.13刪除詞條5.5退出字典圖5.14退出字典6.心得體會7.附錄7.1參考書目[1]譚浩強.C語言程序設計(第四版)[M].北京:清華大學出版社,20106(4)[2]姜仲秋等.C語言程序設計[M].南京:南京大學出版社,19981(2)[3]陳朔鷹等.C語言程序設計基礎教程[M].北京:兵器工業(yè)出版社,19949[4]劉瑞挺.計算機二級教程[M].天津:南開大學出版社,1996107.2源程序清單/*基本的庫函數*/#include<conio.h>#include<stdio.h>#include<stdlib.h>#include<string.h>#defineszWORD32#defineszSTRN224#defineszITEMsizeof(structTItem)charfileDict[szSTRN];typedefstructTItem/*定義一個結構體*/{charword[szWORD];charmean[szSTRN];}Item;voidadd(void)/*詞庫初始化*/{ Itemi[2]={"you","你","me","我"};/*初始化*/ FILE*f=0;intp=0;/*定義指針型未打開的文件f,整型p=0*/f=fopen(fileDict,"ab");/*以追加的方式打開文件*/fwrite(&i,szITEM,2,f);/*寫入函數,把i所指向的1*szITEM個字節(jié)輸入到f所指的文件中*/fclose(f);/*關閉文件*/printf("詞條已初始化\n");}intlookup(char*word,char*mean)/*實現單詞查詢功能*/{FILE*f=0;Itemi;/*定義指針型未打開的文件f,i表示Item*/intr=0;intp=0;/*定義整型r=0整型p=0*/if(!word)return0;/*如果找不到該單詞,則返回*/f=fopen(fileDict,"rb");/*如果有打開這個文件以rb的方式*/if(!f)return0;/*如果文件不存在,返回*/while(!feof(f))/*如果文件存在當如果未遇到輸入文件的結束標志*/{r=fread(&i,szITEM,1,f);/*從f中讀取長度為szITEM的一個數據項存到i所指向的內存*/if(r<1)break;/*如果r<1,則跳出該循環(huán)*/if(i.word[0]==0)continue;/*如果i.word[0]==0,則結束本次循環(huán)*/if(strcmp(i.word,word)){p=p+szITEM;continue;}/*如果要查的單詞在詞庫里有則執(zhí)行下一步否則結束本次循環(huán)*/if(mean)strcpy(mean,i.mean);/*把單詞的意思copy到mean中*/fclose(f);/*關閉該文件*/returnp+1;/*返回到下一個單詞*/}fclose(f);/*關閉該文件*/return0;/*返回主函數*/}voidappend(void)/*新增詞條*/{Itemi;FILE*f=0;intp=0;/*定義指針型未打開的文件f,i表示Item定義整型p=0*/printf("請輸入單詞:");scanf("%s",i.word);p=lookup(i.word,0);/*p=要新增的單詞*/if(p)/*如果p=0,則輸出字典內已經有該單詞記錄!*/{printf("字典內已經有該單詞記錄!\n");return;}printf("請輸入釋義,按回車結束:");/*否則輸出請輸入釋義,按回車結束:*/fflush(stdin);/*清空輸入緩沖區(qū)*/gets(i.mean);/*把獲得的字符串給i.mean*/f=fopen(fileDict,"ab");/*打開這個文件以追加的方式*/fwrite(&i,szITEM,1,f);/*寫入函數,把i所指向的1*szITEM個字節(jié)輸入到f所指的文件中*/fclose(f);/*關閉文件*/printf("詞條已新增\n");}voiderase(void)/*刪除詞條*/{Itemi;FILE*f=0;intp=0;/*定義指針型未打開的文件f,i表示Item定義整型p=0*/memset(&i,0,szITEM);/*清除數組的內容*/printf("請輸入單詞:");scanf("%s",i.word);p=lookup(i.word,0);/*p=要查找的單詞*/if(p==0)/*如果p=0,則輸出字典內沒有該單詞記錄!*/{printf("字典內沒有該單詞記錄!\n");return;}p--;/*p回到它原來的位置*/memset(&i,0,szITEM);/*清除數組的內容*/f=fopen(fileDict,"rb+");/*以讀寫的方式打開fileDict*/fwrite(&i,szITEM,2,f);/*寫入函數,把i所指向的1*szITEM個字節(jié)輸入到f所指的文件中*/fclose(f);/*關閉文件*/printf("詞條已刪除\n");}voidedit(void)/*編輯詞條*/{Itemi;FILE*f=0;intp=0;/*定義指針型未打開的文件f,i表示Item定義整型p=0*/memset(&i,0,szITEM);/*清除數組的內容*/printf("請輸入單詞:");scanf("%s",i.word);p=lookup(i.word,0);/*p=要編輯的單詞*/if(p==0)/*如果p=0,則輸出字典內沒有該單詞記錄!*/{printf("字典內沒有該單詞記錄!\n");return;}p--;/*p回到它原來的位置*/printf("請輸入釋義,按回車結束(輸入abort放棄修改):");fflush(stdin);/*清空輸入緩沖區(qū)*/gets(i.mean);/*獲得字符串,放在i.mean中*/if(strstr(i.mean,"abort"))/*如果abort字符串的出現則表示已經放棄修改*/{printf("已放棄修改!\n");return;}f=fopen(fileDict,"rb+");/*以讀寫的方式打開fileDict*/fwrite(&i,szITEM,1,f);/*將&i所指向的一個szITEM字節(jié)的數據項放進f*/fclose(f);/*關閉文件*/printf("詞條已保存\n");}voidquery(void)/*查詢單詞*/{Itemi;intp=0;/*i表示Item定義整型p=0*/memset(&i,0,szITEM);/*清除數組的內容*/printf("請輸入單詞:");scanf("%s",i.word);p=lookup(i.word,i.mean);/*p=要查詢的單詞*/if(p==0)/*如果p=0,則輸出字典內沒有該單詞記錄*/{printf("字典內沒有該單詞記錄!\n");return;}printf("【詞條】%s\n【釋義】%

溫馨提示

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

評論

0/150

提交評論