課程名稱 C語言課程設計
課題名稱 電子英漢詞典
專 業 電氣工程及其自動化
一、設計內容與設計要求 1.設計內容:電子英漢詞典
1)問題描述:
該設計實現簡單雙向電子英漢詞典的功能,即具有英譯漢和漢譯英的功能。具體管理操作包括單詞的添加、顯示、查找、刪除、修改和保存等。
2)功能描述:
(1)本設計采用結構體數組,每個數據的結構應當包括:單詞、音標、詞性、中文釋義1、中文釋譯2和中文釋譯3。
(2)系統功能:
詞條錄入:即添加單詞記錄。
信息顯示:將所有的單詞按字母順序顯示。
詞條修改:對已經輸入的單詞信息進行修改。
詞條刪除:刪除某個單詞記錄。
單詞查詢: 輸入單詞,輸出該單詞的中文釋義;輸入中文,輸出該中文意思相同的英語單詞。
信息保存:將單詞信息保存到文件。
退出系統
(3)系統使用說明:執行一個具體的功能之后,程序將重新顯示功能菜單。系統的功能并不限于上述,可以對其進行擴充完善,如在對信息進行修改和刪除時,可以考慮系統的安全性,在執行前若輸入正確密碼,才可進行操作。
3)測試數據:
要求被選用的詞條有30個左右,簡單單詞為主。 2.設計要求: 1)設計正確,方案合理。 2)界面友好,使用方便。 3)程序精煉,結構清晰。 4)上機演示。 3.設計報告要求: 課程設計報告格式如下: 1)正文的格式:一級標題用3號黑體,二級標題用四號宋體加粗,正文用小四號宋體,行距為22。 2)正文的內容:課題的主要功能、課題的功能模塊的劃分、主要功能的實現、程序調試、總結、附件(所有程序的源代碼,要求對程序寫出必要的注釋),課程設計報告需5000字左右(不含附件)。 3)課程設計報告裝訂順序:封面、任務書、目錄、正文、評分、程序清單附件。
二、進度安排
目錄
1 系統需求分析 2 概要設計 3 詳細設計 4 系統測試 5課程設計總結 1 系統需求分析英漢詞典-作為一個常用的學習工具,是我們經常要使用的。該系統能完成一個簡單的電子英漢詞典的功能.電子英漢字典有著傳統文本詞典無法相比的優越性:多種多樣的探索方法,便利的查詢窗口,靈活的顯示界面,盒連續的參考功能,無一不體現這種知識媒體的智能化和人性化特色,電子多媒體在詞典中的應用,更使得單調,呆板的詞典變的形象生動在詞典中獲取知識 變得輕松和快捷系統功能.具體管理操作包括單詞的添加,顯示,查找,刪除,修改,保存,和維護等。 功能描述 :本設計采用結構體數據,每個數據的構應當包括:單詞的英文拼寫,單詞的中文解釋;
2 . 概要設計 系統功能模塊圖:
1.程序的模塊組成:主函數:main( ) 初始換函數:init( ) 輸入函數:scanf() 輸出函數:printf( ) 刪除函數:memset ( ) 查詢函數:find() 增加函數add() 刪除函數:del ( ) 修改函數:modify() 瀏覽函數表:view() 維護函數:store() 結束函數:return(); 2. 各個函數的主要功能: 輸入函數:隨時輸入數據。 菜單函數;顯示系統主菜單。查找函數;能夠隨時查找某個單詞。 增加函數;能夠隨時增加想要增加的單詞。 刪除函數;能夠刪除某單詞信息。 修改函數;能夠隨時修改單詞信息。 瀏覽函數:能夠瀏覽所有單詞。 3 . 詳細設計 <1>數據結構擁有與時并進的步伐,為迎接未來作好最佳準備。 被譽為數據中心服務供應商巨擎之一的名氣通,擁有多個世界Tier3+等級的數據中心為客戶提供針對性的專業管理服務,以及可靠的「云計算」服務。除符合香港政府第二級保安指引, 并獲頒ISO 27001:2005, ISO 14001:2004, 20000-1:2005, FISC及TIA-942等國際標準之外,更為鄰近地區樹立起優質服務的標準。 香港作為亞洲信息與通訊科技樞紐,對數據中心的業務需求甚殷。名氣通目前在香港營運兩個大型的數據中心,分別位于新蒲崗的名氣通香港1號數據中心(于2006年建立);而作為中立電訊供應商,新落成的名氣通香港2號數據中心則位于將軍澳工業村,在政府的未來規劃下,將軍澳工業邨亦勢成亞洲區重要數據中心地帶之一。名氣通香港2號數據中心樓高5層,建筑面積約22,000平方米,名氣通配備先進及安全的數據中心設備,確保客戶的數據享有嚴密的保安.
<2>主菜單:開始- 執行查詢函數 2.執行新增函數 3.執行刪除函數 4.執行修改函數 5.推出詞典
(一) 菜單顯示 /*基本的庫函數*/
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define szWORD 32
#define szSTRN 224
#define szITEM sizeof(struct TItem)
char fileDict[szSTRN];
typedef struct TItem {
char word[szWORD];
char mean[szSTRN];
} Item;
fpos_t lookup(char *word, char *mean)
{
FILE * f = 0; Item i;
int r = 0; fpos_t p = 0;
if(!word) return 0;
f = fopen(fileDict, "rb");
if (!f) return 0;
while(!feof(f)) {
fgetpos(f, &p);
r = fread(&i, szITEM, 1, f);
if(r < 1) break;
if(i.word[0] == 0) continue;
if(strcmp(i.word , word)) continue;
if(mean) strcpy(mean, i.mean );
fclose(f);
return p+1;
}
fclose(f);
return 0;
}
歡迎使用電子英漢詞典! <3>添加模塊設計 void append(void)
{
Item i; FILE * f = 0; fpos_t p = 0;
memset(&i, 0, szITEM);
printf("請輸入單詞:"); scanf("%s", i.word );
p = lookup(i.word, 0 );
if(p) {
printf("字典內已經有該單詞記錄!\n");
return;
}
printf("請輸入釋義,按回車結束:");
fflush(stdin);
gets(i.mean );
f = fopen(fileDict, "ab");
fwrite(&i, szITEM, 1, f);
fclose(f);
printf("詞條已新增\n");
}
<4>顯示模塊設計 void erase(void)
{
Item i; FILE * f = 0; fpos_t p = 0;
memset(&i, 0, szITEM);
printf("請輸入單詞:"); scanf("%s", i.word );
p = lookup(i.word, 0 );
if(p==0) {
printf("字典內沒有該單詞記錄!\n");
return;
}
p--;
memset(&i, 0, szITEM);
f = fopen(fileDict, "rb+");
fsetpos(f, &p);
fwrite(&i, szITEM, 1, f);
fclose(f);
printf("詞條已刪除\n");
}
void edit(void)
{
Item i; FILE * f = 0; fpos_t p = 0;
memset(&i, 0, szITEM);
printf("請輸入單詞:"); scanf("%s", i.word );
p = lookup(i.word, 0 );
if(p==0) {
printf("字典內沒有該單詞記錄!\n");
return;
}
p--;
printf("請輸入釋義,按回車結束(輸入abort放棄修改):");
fflush(stdin);
gets(i.mean );
if(strstr(i.mean ,"abort")) {
printf("已放棄修改!\n");
return ;
}
f = fopen(fileDict, "rb+");
fsetpos(f, &p);
fwrite(&i, szITEM, 1, f);
fclose(f);
printf("詞條已保存\n");
}
<5> 刪除模塊設計
void query(void)
{
Item i; fpos_t p = 0;
memset(&i, 0, szITEM);
printf("請輸入單詞:"); scanf("%s", i.word );
p = lookup(i.word, i.mean );
if(p==0) {
printf("字典內沒有該單詞記錄!\n");
return;
}
printf("【詞條】%s\n【釋義】%s", i.word , i.mean );
}
退出
void set(void)
{
int cmd = 0;
printf("當前字典為%s,需要改變嗎(選擇y或Y改變)?", fileDict);
cmd = getch();
if(cmd == 'y' || cmd == 'Y') {
printf("請輸入字典文件名稱(包含路徑):");
scanf("%s", fileDict);
printf("設置成功!\n");
}
}
int main(int argc, char * argv[])
{
int cmd = 0;
if(argc >1)
strcpy(fileDict, argv[1]);
else
strcpy(fileDict, "c:\\dict.txt");
/*end if*/
for(;;) {
printf("\n\
************************\n\
** 歡迎使用迷你字典!**\n\
************************\n\
** 0 - 設置字典 **\n\
** 1 - 查詢詞條 **\n\
** 2 - 新增詞條 **\n\
** 3 - 編輯詞條 **\n\
** 4 - 刪除詞條 **\n\
** 5 - 退出字典 **\n\
************************\n");
cmd = getch() - '0';
switch(cmd) {
case 0: set(); break;
case 1: query(); break;
case 2: append(); break;
case 3: edit(); break;
case 4: erase(); break;
default: return 0;
}
}
return 0;
} 4 系統測試 4.1 菜單顯示 介紹一下思路,以進行必須說明,不能只是把代碼放上來而沒有任何說明! 也可以把測試時出現的錯誤寫來進行分析總結!
4.2 添加 將程序運行時的圖截下來附上,并進行必要的文字說明,不能只是把圖貼上來而沒有文字!
4.3 顯示 將程序運行時的圖截下來附上,并進行必要的文字說明,不能只是把圖貼上來而沒有 5 .課程設計總結 經過一個學期的學習,我對C語言有了一定的了解。C語言是學習計算機科學的基礎,作為一名計算機專業學生,掌握C語言更是毋庸置疑。在上課之前,就經常聽同學說,C語言很難學,確實,剛開始聽課時覺得老師不知所云。不過,發現對后續內容的預習后,前面的疑團都迎刃而解,這讓我對C語言的學習更有信心。 計算機最重要的就是上機操作,自己編寫程序,在VisualC++運行,剛開始經常會出現錯誤,經過分析改正后,終于能夠運行了,就覺得特別激動。 課程設計是一個把需求分析、程序編寫、程序調試、撰寫報告結合為一體的過程。在這個過程中,不僅鍛煉了我們縝密的思維和堅持不解的毅力,更磨練了一個隊伍的團結互助的精神。只有通過大家一起努力才能將課程設計的所有環節都順利的完成。另外程序設計中我們遇到問題并解決問題的過程,使得我們獨自探索并解決問題的能力了有了一個提高,這有利于我們以后的學習。同時這整一個過程,也使我們對程序編寫的整個過程有了一個統籌全局的思想,因為需求分析、程序編寫、程序調試、撰寫報告這些過程是環環相扣的,絕對不可能獨立進行。 課程設計是學習《C程序設計》后對知識的全面測試,剛拿到題目時不知道怎么去處理,覺得很復雜,經過和小組成員的討論,上網查資料,逐個問題逐個擊破,問題不再那么復雜。通過課程設計,我發現自己還存在很多知識漏洞,編寫程序時,經常會出現低級錯誤,很多知識點都不熟悉。在今后的時間里,我一定要投入更多精力學習C語言,以課本為基礎,請教老師,與同學討論,參考資料,上機操作,我相信我一定能把C語言學好。
完整的Word格式文檔51黑下載地址:
C語言電子英漢詞典設計.doc
(608 KB, 下載次數: 19)
2018-12-6 16:52 上傳
點擊文件名下載附件
|