嵌入式C-快譯通電子詞典-課程設計_第1頁
嵌入式C-快譯通電子詞典-課程設計_第2頁
嵌入式C-快譯通電子詞典-課程設計_第3頁
嵌入式C-快譯通電子詞典-課程設計_第4頁
嵌入式C-快譯通電子詞典-課程設計_第5頁
已閱讀5頁,還剩11頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

軟件學院課程設計報告書課程名稱嵌入式系統課程設計設計題目快譯通電子詞典專業班級嵌入式軟件09-2班學號8,9,10,11,12,14姓名劉磊,劉振寧,宋盼盼,唐駿,田雨,王翀指導教師王老師2023年6月目錄1設計時間32設計目的33設計任務34設計內容44.1需求分析54.1.1功能分析54.1.2性能分析54.2總體設計5快譯通總體設計5查詢單詞模塊總體設計54.3詳細設計6〔單詞查詢〕系統流程圖6功能流程圖6〔鏈表創立〕系統流程圖6〔比擬查詢〕系統流程圖6〔進入內存鏈表取數據〕系統流程圖64.4測試與分析114.5附錄Ⅰ程序清單12參考文獻16成績評定161設計時間2023年6月11日——2023年6月152設計目的全面熟悉,掌握C語言根本知識,增強對不同的問題運用和靈活選擇適宜的數據結構以及算法描述的本領,熟悉編制和調試程序的技巧,掌握分析,結果的假設干有效方法,進一步提高上級動手能力,培養使用計算機解決實際問題的能力,養成提供文檔資料的習慣和標準編程的思想,為日后自主完成設計任務打下扎實的根底。將理論教學中涉及到的知識點貫穿起來,對不同的數據類型、程序控制結構、數據結構作一比擬和總結,結合設計題目進行綜合性應用,對所學知識到達融會貫穿的程度。通過課程設計,在下述各方面的能力應該得到鍛煉:對于給定的設計題目,如何進行分析,理清思路,并給出相應的數學模型。掌握自頂而下的設計方法,將大問題進行模塊化,領會結構化程序設計的方法。熟練掌握C語言的根本語法,靈活運用各種數據類型。進一步掌握在集成環境下如何調試程序〔單步調試,設置斷點、觀察表達式,分塊調試〕和修改程序。3設計任務給定文本文件“dict.txt〞,該文件用于存儲詞庫。詞庫為“英-漢〞,“漢-英〞雙語詞典,每個單詞和其解釋的格式固定,如下所示:#單詞Trans:解釋1@解釋2@…解釋n每個新單詞由“#〞開頭,解釋之間使用“@〞隔開。一個詞可能有多個解釋,解釋均存儲在一行里,行首固定以“Trans:〞開頭。下面是一個典型的例子:#abyssinianTrans:a.阿比西尼亞的@n.阿比西尼亞人;依索比亞人該詞有兩個解釋,一個是“a.阿比西尼亞的〞;另一個是“n.阿比西尼亞人;依索比亞人〞。要求編寫程序將詞庫文件讀取到內存中,接受用戶輸入的單詞,在字典中查找單詞,并且將解釋輸出到屏幕上。用戶可以反復輸入,直到用戶輸入“exit〞字典程序退出。程序執行格式如下所示:./app–text-text表示使用文本詞庫進行單詞查找。4設計內容4.1需求分析功能分析1、在計算機中建立有限規模的電子英漢詞典〔文件〕,利用程序實現電子英漢詞典的單詞查找,建立索引,使用索引進行查找,添加新詞等功能。2、詞典的內容為:每行對應一個詞條,每個詞條由兩個字符串組成,字符串用假設干空格符分開;前一個是單詞字符串〔英文〕,后一個是釋義字符串〔中文〕,使用分號作為多個釋義的分隔符〔無空格〕。3、對單詞和釋義字符串長度的限定分別為不少于20個與40個字符,詞條數限定為不多于200條。4、采用菜單工作方式。在一個操作執行之后,程序詢問是否繼續執行該操作。如輸入Y或y,那么重復同一操作,不退回到菜單;如輸入其它信息,那么回到菜單等待另一次選擇。僅中選擇退出操作時,程序應詢問是否將修改后的詞典存盤,并根據用戶選擇存盤退出或不存盤退出。5、要求整個設計以人為本,用戶界面友好。性能分析英譯漢功能塊,可以實現對英文單詞對中文單詞的查詢功能,給定文本文件“dict.txt〞,該文件用于存儲詞庫。用戶文本框中輸入要查詢的單詞。如該單詞存在于詞庫中,那么會在文件對話框中顯示其詞性及中文翻譯;如該單詞沒有存在于詞庫中,那么會彈出“警告〞,說明“查無此詞〞;假設沒有輸入,直接點擊“查詢〞,那么會彈出“警告〞說明查詢對象不能為空。4.2總體設計快譯通總體設計建建立索引使用索引進行查詢添加新詞快譯通單詞查詢圖1快譯通總體設計4.2.2查詢單詞模塊總體設計單詞查詢單詞查詢輸入單詞進入詞庫查找輸出查詢結果圖2查詢單詞模塊總體設計4.3詳細設計〔單詞查詢〕系統流程圖開始開始進入數組查找N是否找到Exit輸出詞義解釋查無此詞結束YYN退出Y從文件dict.txt讀取并存到內存,內存以鏈表形式存儲輸入單詞圖3〔單詞查詢〕系統流程圖4.3.2功能流程圖開始開始創立鏈表翻開文件dict.txtEof?為節點分配空間從文件讀取到節點將節點插入鏈表關閉文件dict.txt結束YN圖4功能流程圖4.3.3〔鏈表創立〕系統流程圖開始開始開始建立頭指針head,指針p1,p2給p1,p2分配相同的空間,head指向p1,p2用fgets〔〕得到dict.txt中的word,trans。p1指向word,p2指向trans是否到文件尾頭結點head指回NY圖5〔鏈表創立〕系統流程圖4.3.4〔比擬查詢〕系統流程圖從數組第一個元素開始字符串比擬從數組第一個元素開始字符串比擬是否匹配輸出結果NY查無此詞開始結束進入內存查找圖6〔比擬查詢〕系統流程圖〔進入內存鏈表取數據〕系統流程圖圖7〔進入內存鏈表取數據〕系統流程圖4.4測試與分析測試截圖圖8代碼局部截圖圖9輸入單詞,顯示輸出結果圖10假設詞庫中找不到所要查找的單詞,顯示查無此詞4.5附錄Ⅰ程序清單#include<stdio.h>#include<malloc.h>#include<stdlib.h>#include<string.h>structnode//定義結構體//{charword[30];chartrans[120];structnode*next;};structnode*creat(void)//定義一個可以返回頭指針的函數//{ord,ch);strcpy(p1->trans,st)FILE*fp;charch[30],st[120];structnode*head;structnode*p1;structnode*p2;intn;fp=fopen("dic0.txt","r");//以只讀的方式翻開詞庫,把詞庫的地址賦給fp//if(fp==NULL){printf("cannotopenfile\n");exit(1);}head=NULL;//冗錯//p1=p2=(structnode*)malloc(sizeof(structnode));//創立鏈表,給p1,p2分配空間//n=0;fgets(ch,30,fp);//從詞庫中取“#單詞〞賦給ch//fgets(st,120,fp);//從詞庫中取“trans〞賦給st//strcpy(p1->w;while(!feof(fp)){n=n+1;if(n==1)head=p1;elsep2->next=p1;p2=p1;p1=(structnode*)malloc(sizeof(structnode));fgets(ch,20,fp);fgets(st,20,fp);strcpy(p1->word,ch);//把“#單詞〞拷貝到鏈表中//strcpy(p1->trans,st);//把“trans〞拷貝到鏈表中//}p2->next=NULL;return(head);}intcmpChar(char*dst,char*src){if(strcmp(src,dst)==0)return1;elsereturn0;}char*getOut(structnode*wp,charword[]){inti=0;char*q;for(i=0;i<30;i++){word[i]=wp->word[i];if(word[i]=='\n')word[i]='\0';}q=word;return(q);}IntoutPut(structnode*wp){inti=0;printf("查詢結果:");for(i=0;i<30;i++){printf("%c",wp->word[i]);}printf("\n");for(i=0;i<=30;i++){printf("%c",wp->trans[i]);}return0;}intmain(intargc,char*argv[]){structnode*c1;structnode*c2;charin[30];charout[30];inti=0;c1=creat();//翻開文件,創立鏈表//c2=c1;printf("\n\n請輸入要查找的單詞:");scanf("%s",in);//輸入要查找的單詞//if((in[0]=='e')&&(in[1]=='x')&&(in[2]=='i')&&(in[3]=='t'))//判斷是否為exit如果是那么退出,不是進行下一步//exit(1);while(!cmpChar(getOut(c1,out),in))//判斷字符串是否為要查找的單詞,是的話停止循環,getout()從節點中取出,cmpchar比擬取出的節點的單詞是否與輸入的單詞一致,一致的話退出停止循環,//{if(c1->next!=NULL){c1=c1->next;outPut(c1);}//如果循環停止時c1指向的節點不為空,那么調用output函數輸出查找結果//elsebreak;}if(c1->next!=NULL)outPut(c1);elseprintf("\n查無此詞");c1=c2;gotoa;return0;}5總結與展望通過本次課題的課程設計,讓我感到獲益匪淺的。這是再學習完C語言這門課程后,對其知識的穩固與拓展。這次實訓的目的就是為了穩固C語言所學根本課程;提高C語言編程的綜合應用能力;以及C語言程序的編譯、調試方法。這次我們組的實訓內容就是電子生詞庫的編程。內容要求就是掌握C語言中的根本數據輸入、輸出;熟練掌握C語言中的三種根本結構的使用;熟練使用C語言中的函數;熟練使用C語言中的結構體;和熟練掌握C語言中的文件使用。這次的實訓,讓我感觸最深的就是:上機實驗是學習程序設計語言必不可少的實踐環節,特別是C語言靈活、簡潔,更需要通過編程的實踐來真正掌握它。所以,對于當今缺少動手實踐的大學生們,這次的實訓就顯得更有意義。歷時一周的實訓,馬上結束了,在這幾天編程的過程中暴露出了許多我自身存在的問題,同時也對自身有了很大的提高。通過這兩周的實訓和學習,我知道了此次實訓的目的,也清楚目前自己的缺乏,那就是缺乏相應的知識與經驗,對所學的C語言知識不能夠很好地運用于實踐操作。但是我也有許多收獲,在這次實訓中,我第一次體會到編譯上百條語句有多么的困難,也發現了很多以前不曾注意到的細節。相信這對我接下來所要學習專業知識會起到很有效的幫助。總之,這次實訓,讓我體會了與眾不同的學習方法,從書本被動的學習改為自身實踐的主動學習,再這次的實訓操作中,我總結出一些屬于自己的實踐經驗,我想,任何一個單位也不愿意聘請一位沒有實踐經驗的員工。所以我們要從現在就開始,多多參與類似這樣的鍛煉,嚴格自我,完善自我。我相信通過我們的努力奮斗,不管在以后的社會工作中遇到多少困難,我們一定會克服困難,開拓一片屬于我們自己的新天地。同組同學熟悉并掌握C語言根本知識,增強對不同的問題運用和靈活選擇適宜的數據結構以及算法描述的本領,熟悉編制和調

溫馨提示

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

評論

0/150

提交評論