c語言課程設計電子英漢詞典源碼
《c語言課程設計電子英漢詞典源碼》由會員分享,可在線閱讀,更多相關《c語言課程設計電子英漢詞典源碼(16頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、 C語言課程設計 軟件學院 指導老師: 學號: 姓名: 一、實驗題目及要求 題目 : 電子英漢詞典 設計要求 : 1.用圖形用戶界面實現(xiàn) 2.能夠編輯詞典庫中的信息 3.能夠實現(xiàn)英譯漢,漢譯英。(要考慮一詞多義) 二、實驗過程 主要思想 : 1
2、建立詞典庫(相關文件的處理) 2 設計詞典圖形用戶界面 3 查找單詞及詞典的重復使用(實現(xiàn)一詞多義) 主要過程 1.詞典庫的建立: 文件的建立,寫入和調出參考老師給的FILE.C 文件 FILE.C大致內容 { FILE *fp/*建立文件指針*/ fp=fopen("d:\list.txt","wb+");/*在指定路徑建立文本文件*/ for(i=0;
3、i 4、的指定內容調出*/
}
單詞庫存儲在指定路徑的指定文件中方便后文的查詢和調出
單詞庫的建立利用結構體可以包含一詞多義,并將漢譯英和英譯漢的詞典庫分 開以便實現(xiàn)英漢互譯 (在中文dos環(huán)境下運行)
圖例:(未在中文dos環(huán)境下運行)
2. 設計詞典圖形用戶界面
參考文件Graph.c 進行圖形驅動
void init()
{
int gdriver, gmode, i, j;
5、 gdriver = DETECT;
registerbgidriver(EGAVGA_driver);
initgraph(&gdriver, &gmode, "");
}
圖例(未設置鼠標前)
上網(wǎng)查找相關資料調用鼠標
鼠標繪制函數(shù)
設置鼠標指針位置函數(shù)
設置函數(shù)得到鼠標左右鍵點擊的不同狀態(tài)
(設置鼠標后運行結果全屏無法截圖)
6、
在圖形界面下設計用戶界面并使用該鼠標設置相關區(qū)域的鼠標鍵點擊后
得到不同的結果,進入英譯漢或漢譯英界面
3. 查找單詞及詞典的重復使用(考慮一詞多義)
利用文件指針和函數(shù)fseek ,fread 對結構體內的單詞名稱查找和該相關 釋義的調用同時考慮英漢互譯
設置查找不到單詞的頁面和利用while語句使實現(xiàn)詞典是否需要重復使用 7、 功能
圖例:
三、實驗結果及心得
根據(jù)題目描述基本達到題目要求。
在實驗過程中對照老師給予的幫助程序和相關軟件不斷構思得到大致的框架,不斷 的調試不斷的查詢函數(shù)用法的同時加深對c語言的認識,也許只是簡單的一句話也許只 是簡單的一個功能也是需要一個一個經(jīng)過深思熟慮的代碼敲打出來。
此次試驗中了解圖形用戶界面,相關文件的存儲和調用,鼠標的調用及使用等等平 常沒有接觸到的c語言的知識。深深感受到c語言博大精深,將為以后的軟件方面知識 的學習打下深刻的基礎。
8、
四、代碼(dictionary)
#include 9、 /*為讀取鼠標的各個狀態(tài)*/
#define LEFT_PRESSED 1
#define RIGHT_PRESSED 2
void DrawMouse(float x,float y);
int setMousePos(int x,int y);
int mouseStatus(int* x,int* y);
void init();
void box(int startx,int starty,int high,int width) ;
struct word
{
char name[10]; /*存儲英 10、譯中詞典單詞名*/
char exp[3][20]; /*存儲英譯中詞典單詞釋義*/
char namm[10]; /*存儲中譯英詞典單詞名*/
char exx[3][20]; /*存儲英譯中詞典單詞釋義*/
}; /*創(chuàng)建存放單詞及其釋義的結構體*/
char buf[20*20*4]; /*設置緩存區(qū)*/
main()
{
char *f[]={"Chinese-English Translation(中譯英)", 11、"English-Chinese Translation(英譯中)"};
int key,y,x;
char u;
int t=0,r;
int o1[SIZE];
int o2[SIZE]; /*o1,o2數(shù)組用來儲存單詞的釋義數(shù)目*/
char seek[10]; /*存儲查詢功能時用戶輸入的單詞*/
int last_x,last_y;
int x1,y1; int x0,y0 12、;
int m=0;
struct word stu[SIZE],stu_eg; /*為讀取文件中內容設定的相關結構 體變量*/
FILE *fp; /*定義文件指針*/
int i,j;
fp=fopen("c:\list.txt","wb+");
if(fp==NULL)
{
printf("cannot open this file\n");
exit(0); 13、
} /*創(chuàng)建或打開特定路徑的文件*/
for(i=0;i 14、 查詢用戶是否需要添加釋義*/
j=0; /*變量j的數(shù)值能控制每個單詞釋義在 三個之內*/
while(u==y&&j<=2)
{
o1[i]=j; /*int類型數(shù)組o1記載每個單詞擁有的 15、 釋義數(shù)*/
printf("Chinese explanation %d :",j+1);
y=wherey();
scanf("%s",stu[i].exp[j]);
gettext(1,1,60,14,buf);
if(j<2)
printf("\nanother explaination ? (nor y)\n") ;
getchar();
16、 scanf("%c",&u);
clrscr();
puttext(1,1,60,14,buf);
gotoxy(1,y+2);
j++;
}
clrscr();
} /*添加英譯中詞典中單詞*/
17、 /*利用循環(huán)語句添加單詞釋義實現(xiàn)一次 多義功能 */
for(i=0;i 18、]=j;
printf("英文釋義 %d :",j+1);
y=wherey();
scanf("%s",stu[i].exx[j]);
gettext(1,1,60,14,buf);
if(j<2)
printf("\n增加釋義 ? (nor y)\n") ;
getchar();
scanf("%c",&u);
clrscr();
19、 puttext(1,1,60,14,buf);
gotoxy(1,y+2);
j++;
/*相關解釋同上文英譯漢詞典中注釋*/
} /*添加中譯英詞典中單詞*/
clrscr();
}
for(i=0;i 20、uct word),1,fp)!=1)
{
printf("file write error!");
exit(0);
} /*利用文件指針和fwrite語句將單詞存
放在指定打開文件中/*
window(1,1,80,25);
gettext(20,10,40,14,buf);
u=y;
ini 21、t();
x0=250;
y0=250; /*設定鼠標的初始位置*/
textbackground(15);
textcolor(0);
clrscr();
outtextxy(180,220,f[0]); /*在設定好的背景顏色和字體顏色下指 定位置輸出目錄文字*/
outtextxy(180, 22、270,f[1]);
setMousePos(x0,y0);
setwritemode(1);
DrawMouse(x0,y0); /*調用相關的鼠標函數(shù)*/
last_x=x0;
last_y=y0;
line(170,210,470,210);line(170,240,470,240);
line(170,260,470,260);line(170,290,470,290);
line(170,210,1 23、70,240);line(470,210,470,240);
line(170,260,170,290);line(470,260,470,290); /*設計界面相關文字的框框*/
while(m==0)
{
m=0;
while(mouseStatus(&x1,&y1) == NO_PRESSED&&m==0)
{
if(last_x!=x1 && last_y!=y1)
{
DrawM 24、ouse(last_x,last_y);
DrawMouse(x1,y1);
last_x=x1;
last_y=y1;
}
} /*設計當鼠標坐標移動且沒有按下任 何鍵時鼠標的移動軌跡*/
while(!(mouseStatus( 25、&x1,&y1)==NO_PRESSED) )
{
if(mouseStatus(&x1,&y1)==LEFT_PRESSED&&x1>170&&x1<470&&y1>210 && y1<240)
{
m=1;
break;
}
if(mouseStatus(&x1 26、,&y1)==LEFT_PRESSED&&x1>170&&x1<470&&y1>260 && y1<290)
{
m=2;
break;
}
if(x1<170 ||x1>470 ||y1<210 || y1>290);
} /*設定鼠標在界面內一定區(qū) 27、域進行相關點
擊后實現(xiàn)的功能*/
}
restorecrtmode(); /*設計詞典的界面*/
while(u==y) /*利用u==y使詞典能重復使用*/
while(1)
{
textbackground(3);
textcolor(15);
if(m==1)
{
t=0; 28、
clrscr();
box(15,10,10,65);
gotoxy(27,7);
printf("English-Chinese Translation");
gotoxy(31,12);
rewind(fp);
printf("enter the word:");
gotoxy(31+strlen("enter the word:"),12);/ *設計英譯漢詞典查找功能 29、 時的頁面*/
scanf("%s",seek);
for(i=0;i 30、 } /*利用字符串strcmp函數(shù)實現(xiàn)查 找對比功能*/
if(t==1) /*如果找到相同單詞名令t=1,判 31、 斷是否執(zhí)行下個步驟*/
{
fseek(fp,i*sizeof(struct word),0);
fread(&stu_eg,sizeof(struct word),1,fp);
gotoxy(31,15);
for(j=0;j<=o1[i];j++)
{
if(j==0)
printf("the explanation is :(%d) %s",j+1 32、,stu_eg.exp[j]);
else
{
gotoxy(31+strlen("the explanation is :"),15+j);
printf("(%d) %s",j+1,stu_eg.exp[j]);
}
} /*如果t=1,找到該單詞在文件中存儲的位置后,利用 33、 循環(huán)結構,fseek和fread語句將其所有釋義調出, 循環(huán)的判斷次數(shù)取決o1數(shù)組內相對應的數(shù)字*/
}
for(i=0;i 34、trcmp(stu[i].exx[r],seek)==0)
{
t=2;
break;
}
} /*如果找到相同單詞釋義令t=2,判 斷是否執(zhí)行下個步驟*/
if(t==2 35、)
break;
}
if(t==2)
{
rewind(fp);
fseek(fp,(i)*sizeof(struct word),0);
fread(&stu_eg,sizeof(struct word),1,fp);
gotoxy(31,15);
printf("the explanation is :(1) %s",stu_eg.namm); 36、
/*如果t=2在漢譯英詞典庫中找到相關 釋義并將其單詞名調出*/
}
if(t==0)
{
gotoxy(31,15);
printf("sorry,dont find it"); /*詞典庫中沒有此單詞則輸出 37、 sorry,dont find it*/
}
getchar();
scanf("%c",&u)
clrscr(); /*停頓使用戶看清結果*/
gotoxy(22,10);
printf("Do you want use is again ?(n or y)");
gotoxy(35,14 38、);
printf("enter:");
gotoxy(35+strlen("enter:"),14); /*設計沒有查到單詞的界面*/
scanf("%c",&u);
break; /*對u進行賦值來判定用戶是 否需要重新使用詞典*/
}
if(m==2)
39、 {
t=0;
clrscr();
gotoxy(38,7);
printf("漢譯英");
box(20,10,10,60);
gotoxy(35,12);
rewind(fp);
printf("輸入單詞:");
gotoxy(35+strlen("輸入單詞:"),12);
scanf("%s",se 40、ek);
for(i=0;i 41、of(struct word),0);
fread(&stu_eg,sizeof(struct word),1,fp);
gotoxy(35,15);
for(j=0;j<=o2[i];j++)
{
if(j==0)
printf("釋義:(%d) %s",j+1,stu_eg.exx[j]);
else
42、 {
gotoxy(35+strlen("釋義:"),15+j);
printf("(%d) %s",j+1,stu_eg.exx[j]);
}
}
}
for(i=0;i 43、r++)
{
if(strcmp(stu[i].exp[r],seek)==0)
{
t=2;
break;
}
}
if(t==2)
break;
}
44、 if(t==2)
{
rewind(fp);
fseek(fp,(i)*sizeof(struct word),0);
fread(&stu_eg,sizeof(struct word),1,fp);
gotoxy(35,15);
printf("釋義:(1) %s",stu_eg.name);
}
if(t 45、==0)
{
gotoxy(35,15);
printf("對不起,沒有這個單詞");
}
getchar();
scanf("%c",&u);
clrscr();
gotoxy(27,10);
printf("重新查詢?(n or y)");
gotoxy(35,14);
46、 printf("輸入:");
gotoxy(35+strlen("輸入:"),14);
scanf("%c",&u);
break; /*相關注釋參考上文英譯中詞典*/
}
}
}
int mouseStatus(int* x,int* y)
{
/*定義兩個寄存器變量,分別存儲入口參數(shù)和出口參數(shù)*/
union REGS inregs,outregs;
int st 47、atus;
status=NO_PRESSED;
/*入口參數(shù)AH=3,讀取鼠標位置及其按鈕狀態(tài)*/
inregs.x.ax=3;
int86(0x33,&inregs,&outregs);
/*CX表示水平位置,DX表示垂直位置*/
*x=outregs.x.cx;
*y=outregs.x.dx;
/*BX表示按鍵狀態(tài)*/
if(outregs.x.bx&1)
status=LEFT_PRESSED;
else if(outregs.x.bx&2)
48、 status=RIGHT_PRESSED;
return (status);
}
/*設置鼠標指針位置函數(shù)*/
int setMousePos(int x,int y)
{
union REGS inregs,outregs;
/*入口參數(shù)AH=4,設置鼠標指針位置*/
inregs.x.ax=4;
inregs.x.cx=x;
inregs.x.dx=y;
int86(0x33,&inregs,&outregs);
}
/*繪制鼠標函數(shù)*/
void DrawMouse(float x,floa 49、t y)
{
line(x,y,x+5,y+10);
line(x,y,x+10,y+5);
line(x+5,y+10,x+10,y+5);
line(x+7,y+8,x+12,y+13);
line(x+8,y+7,x+13,y+12);
line(x+14,y+12,x+13,y+13); /*利用line函數(shù)一條一條繪制鼠標形狀*/
}
void init() /*進行相關圖形驅動*/
{
int gdriver 50、, gmode, i, j;
gdriver = DETECT;
registerbgidriver(EGAVGA_driver);
initgraph(&gdriver, &gmode, "");
}
void box(int startx,int starty,int high,int width) /*框框的建立*/
{
int i;
gotoxy(startx,starty);
putch(0xda);
for (i=startx+1;i 51、 putch(0xbf);
for(i=starty+1;i
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 市教育局冬季運動會安全工作預案
- 2024年秋季《思想道德與法治》大作業(yè)及答案3套試卷
- 2024年教師年度考核表個人工作總結(可編輯)
- 2024年xx村兩委涉案資金退還保證書
- 2024年憲法宣傳周活動總結+在機關“弘揚憲法精神推動發(fā)改工作高質量發(fā)展”專題宣講報告會上的講話
- 2024年XX村合作社年報總結
- 2024-2025年秋季第一學期初中歷史上冊教研組工作總結
- 2024年小學高級教師年終工作總結匯報
- 2024-2025年秋季第一學期初中物理上冊教研組工作總結
- 2024年xx鎮(zhèn)交通年度總結
- 2024-2025年秋季第一學期小學語文教師工作總結
- 2024年XX村陳規(guī)陋習整治報告
- 2025年學校元旦迎新盛典活動策劃方案
- 2024年學校周邊安全隱患自查報告
- 2024年XX鎮(zhèn)農村規(guī)劃管控述職報告