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