电子英汉词典.docx
《电子英汉词典.docx》由会员分享,可在线阅读,更多相关《电子英汉词典.docx(20页珍藏版)》请在冰豆网上搜索。
电子英汉词典
课程设计报告
课程名称C语言程序设计
课落款称电子英汉词典
专业生物工程
班级生物工程0801
学号0110
姓名周洁尘
指导教师黄晓宇陈桥
2009年6月24日
湖南工程学院
课程设计任务书
课程名称C++程序设计
课题电子英汉词典
专业班级生物工程0801
学生姓名周洁尘
学号0110
指导老师黄晓宇陈桥
审批
任务书下达日期2009年6月14日
任务完成日期2009年6月24日
一、设计内容与设计要求
1.设计内容:
(1)、问题描述:
英汉词典作为一个常常利用的学习工具,是咱们常常要利用的。
该系统能完成一个简单的电子英汉词典的功能,如:
单词的查找、增词、删除、修改和保护等工作。
(2)、功能描述:
1)本词典采用一个包括N个数据的结构体数组,每一个数据的结构应当包括:
英文单词、词性、中文词意一、中文词意二、中文词意3。
2)对单词和释义字符串长度的限定别离为很多于10个词条。
3)本系统显示如此的菜单:
(1)输入新辞汇
(2)删除辞汇
(3)翻译/查找(双向)
(4)修改辞汇信息
(5)退出系统
(3)、算法提示:
1、数据结构:
结构体数组
二、数据库结构:
该系统的大体数据库如下表。
英文
词性
音标
中文1
中文2
Char[10]
Char[5]
Char[10]
Char[6]
Char[6]
(4)、测试数据:
要求被选用的词条有10个左右,以中学的单词为主。
对该系统有兴趣的同窗能够在实现系统大体功能后,完善系统的其它功能。
2.设计要求:
掌握结构化程序设计的主体思想,以自顶向下慢慢求精的方式编制程序解决一些实际的问题,为未来编写软件积累一些典型的案例处置经验。
(1)按学号顺序选课题号,并在规定的时刻内独自完成相关课题的C源程序编写、调整和运行。
源程序及编译生成各文件均保留;
(2)按本任务书的要求,编写《课程设计报告》(Word文档格式)。
并用A4的复印纸打印并装订;
(3)在2009年6月29日之前,请各班学习委员收齐课程设计报告交黄晓宇老师,联系电话:
。
附:
课程设计报告内容要求如下:
一、封面
二、课程设计任务书
三、课程设计主文档
内容如下:
1、课程设计题目
2、课程设计目的
3、课程设计主要任务
4、设计环境
5、整体设计方案的选定
(主控模块和各子模块的设计方式及框图)
6、源程序清单
7、收获及体会
参考资料
四、报告内容要求用宋体五号字,主题目用黑三号、一级题目用黑四号字,二级题目用宋体小四号字加粗,要求用A4纸张打印出来。
课程设计说明书装订顺序:
封面、任务书、正文、附件(A4大小的图纸及程序清单)。
二、进度安排
第18周,具体安排如下:
星期
时间
班级
内容
地点
18周星期一
课题讲解
C-405
18周星期二
2:
30-6:
10
0801
编程上机
E-410
18周星期四
8:
00-12:
00
0801
编程上机
E-413
18周星期五
8:
00-12:
10
0801
编程上机
E-413
一课程设计目的………………………………………………………………1
二课程设计主要任务…………………………………………………………1
三设计环境……………………………………………………………………1
四整体设计方案的选定
(主控模块和各子模块的设计方式及框图)………………………………2
五源程序清单…………………………………………………………………4
六收获及体会…………………………………………………………………13
七参考文献……………………………………………………………………14
电子英汉词典设计
1.课程设计目的
掌握结构化程序设计的主体思想,以自顶向下慢慢求精的方式编制程序解决一些实际的问题,为未来编写软件积累一些典型的案例处置经验。
2.课程设计主要任务
(1)、问题描述:
英汉词典作为一个常常利用的学习工具,是咱们常常要利用的。
该系统能完成一个简单的电子英汉词典的功能,如:
单词的查找、增词、删除、修改和保护等工作。
(2)功能要求:
1)本词典采用一个包括N个数据的结构体数组,每一个数据的结构应当包括:
英文单词、词性、中文词意一、中文词意二、中文词意3。
2)对单词和释义字符串长度的限定别离为很多于10个词条。
3)本系统显示如此的菜单:
(1)输入新辞汇
(2)删除辞汇
(3)翻译/查找(双向)
(4)修改辞汇信息
(5)退出系统
3.设计环境
1)硬件:
AMDAthlon(tm)64processor
00+
AT/ATCOMPATIBLE
RAM
2)软件:
WindowsXP\Windows2000
VisualC++
4.整体设计方案的选定
本设计采用模块化结构设计:
程序共有五个子函数和一个主函数。
1.查找函数(search),用户通过系统提示输入要查找的单词,只要单词库中含有此单词便能找到相应的中文解释。
那个查找函数利用的是从头至尾的线性查找发,虽然查找效率在数据专门大上午时候无法容忍的。
可是因为这里涉及的数据量很小,利用线性查找对系统性能没有专门大上午损害。
2.增加函数(add),用户可通过此函数来增加单词库单词的数量。
3.修改函数(modify),程序提示用户输入要修改的单词,仍是用线性查找的方式查找相应的纪录,若是找到,则提示输入新单词及中文解释。
4.删除函数(delete),程序提示用户输入要删除的单词,利用线性查找的方式找到相应的纪录,若是找到,提示用户确认删除才做。
在取得确认后,删除那个单词的纪录
。
5.主程序通过无穷循环来接收输入的命令,而且按照命令挪用相应的函数处置.
(流程图)主要包括
5.源程序清单
#include<>
#include<>
#include<>
#include<>
voidmain()
{
staticintn=13;
charm;
struct
{
chareng[10];
charci[15];
charyin[10];
charchi[30];
}
word[1000]={{"cat","n","cat","猫"},
{"clean","adj+d+v","kli:
n","1.干净2.整洁"},
{"finally","ad","fai'nens","最终,终于"},
{"finish","v+n","finish","完成"},
{"go","n+v","gou","走"},
{"high","aadj+ad+n","hai","高"},
{"help","int+n","help","帮忙"},
{"here","ad+ini","hie","这里"},
{"idea","n","ai'die","注意"},
{"imagine","v","i'madgin","想象"},
{"king","n","king","国王"},
{"late","adj+ad","leit","1.迟到的2.以后地"},
{"name","n+v","neim","名字"},};
int();
loop:
for(;;)
{
system("cls");
int();
cout<<"\n\t============欢迎进入英汉词典============"<cout<<"\n\t*****Pleasemakeachoise*****\n"<cout<<"\n\n\tthenewword(增加单词)\n"<cout<<"\tword(删除单词)\n"<cout<<"\tword(查找单词)\n"<cout<<"\tword(修改单词)\n"<cout<<"\ttheprocess(退出程序)\n\n"<cout<<"Pleasechoose1~5toenter\n"<cout<<"Pleasepressthekey:
";
cin>>m;
switch(m)
{
case'1':
{
charj[10],k[15],l[10],p[30];
++n;
cout<<"\nAddnewword(增加单词)"<cout<<"\n\npleaseentertheword(请输入单词):
";
cin>>j;
cout<<"\nEntertheCixing(输入词性):
";
cin>>k;
cout<<"\nEntertheYinbiao(输入音标):
";
cin>>l;
cout<<"\nEntertheChinese(输入中文):
";
cin>>p;
strcpy(word[n].eng,j);
strcpy(word[n].ci,k);
strcpy(word[n].yin,l);
strcpy(word[n].chi,p);
cout<<"\nPleasecheckit:
";
cout<<"\n\nEnglish(英文):
"<cout<<"\n\nCixing:
"<cout<<"\n\nYinbiao:
"<cout<<"\n\nChinese(中文):
"<cout<<"\nPleasepressanykeywithEnterkeyback!
"<cin>>m;
}
break;
case'2':
{
charr[10];
ints,t,z=0,x=0;
cout<<"\nPleasepresstheEnglishyouwanttodel(请输入您要删除的单词):
";
cin>>r;
for(s=0;s<=n;s++)
{
if(s<=n-1)
{
if(strcmp(word[s].eng,r)==0)
{
x=1;
for(t=s;t{
strcpy(word[t].eng,word[t+1].eng);
strcpy(word[t].ci,word[t+1].ci);
strcpy(word[t].yin,word[t+1].yin);
strcpy(word[t].chi,word[t+1].chi);
}
}
}
else
{
if(strcmp(word[n].eng,r)==0)
z=1;
else
z=0;
}
}
if(z==1||x==1)
{
cout<<"\n\nDelsucessful!
!
(删除成功)\n"<n--;
cout<<"\nPleasepressanykeywithEnterkeyback!
"<cin>>m;
}
else
{
cout<<"\n\nDelfailed!
!
(删除失败)"<cout<<"\nPleasepressanykeywithEnterkeyback!
"<cin>>m;
}
}
break;
case'3':
{
intl;
cout<<"\n\nSearchtheword(查找单词)\n"<cout<<"byEnglish.\n"<cout<<"byChinese.\n"<cout<<"Pleasechooseone(请选择):
";
cin>>l;
switch(l)
{
case1:
{
charr[10],m[1];ints;
cout<<"\nPleaseentertheEnglishword:
";
cin>>r;
for(s=0;s<=n;s++)
{
if(s<=n-1)
if(strcmp(word[s].eng,r)==0)
break;
else
continue;
else
if(strcmp(word[n].eng,r)==0)
break;
else
{
charm[1];
cout<<"\nNothisword!
!
\nPleasepressanykeywithEnterkeyback!
"<cin>>m;
gotoloop;
}
}
cout<<"\n\nEnglish(英文):
"<cout<<"\n\nCixing(词性):
"<cout<<"\n\nYinbiao(音标):
"<cout<<"\n\nChinese(中文):
"<cout<<"\n\n\nPleasepressanykeywithEnterkeyback!
"<cin>>m;
break;
}
case2:
{
charr[10],m[1];
ints;
cout<<"\nPleaseentertheChinese:
";
cin>>r;
for(s=0;s<=n;s++)
{
if(s<=n-1)
if(strcmp(word[s].chi,r)==0)
break;
else
continue;
else
if(strcmp(word[n].chi,r)==0)
break;
else
{
charm[1];
cout<<"\nNothisword!
!
\nPleasepressanykeywithEnterkeyback!
"<cin>>m;
gotoloop;
}
}
cout<<"\nEnglish(英文):
"<cout<<"\n\nCixing:
"<cout<<"\n\nYinbiao:
"<cout<<"\n\nChinese(中文):
"<cout<<"\n\n\nPleasepressanykeywithEnterkeyback!
"<cin>>m;
}
break;
}
}
case'4':
{
charj[10],k[15],l[10],p[30],r[10],m[1];ints;
++n;
cout<<"\nChangetheword(修改单词)"<cout<<"\n\npleaseenterthewordyouwantchange:
";
cin>>r;
for(s=0;s<=n;s++)
{
if(s<=n-1)
if(strcmp(word[s].eng,r)==0)
break;
else
continue;
else
if(strcmp(word[n].eng,r)==0)
break;
else
{
charm[1];
cout<<"\nNothisword!
!
\nPleasepressanykeywithEnterkeyback!
"<cin>>m;
gotoloop;
}
}
cout<<"\n\nEnglish(英文):
"<cout<<"\n\nCixing(词性):
"<cout<<"\n\nYinbiao(音标):
"<cout<<"\n\nChinese(中文):
"<cout<<"\n\nthenyoucanchange."<cout<<"\n\npleaseentertheword(请输入单词):
";
cin>>j;
cout<<"\nEntertheCixing(输入词性):
";
cin>>k;
cout<<"\nEntertheYinbiao(输入音标):
";
cin>>l;
cout<<"\nEntertheChinese(输入中文):
";
cin>>p;
strcpy(word[n].eng,j);
strcpy(word[n].ci,k);
strcpy(word[n].yin,l);
strcpy(word[n].chi,p);
cout<<"\nPleasecheckit:
";
cout<<"\n\nEnglish(英文):
"<cout<<"\n\nCixing:
"<cout<<"\n\nYinbiao:
"<cout<<"\n\nChinese(中文):
"<cout<<"\nPleasepressanykeywithEnterkeyback!
"<cin>>m;
}break;
case'5':
exit
(1);break;
}
}
}
6.收获及体会:
感谢老师让我有这次亲自实践的机缘,通过这次课程设计,我充分熟悉到学无止境。
咱们这次设计的课题是电子英汉词典的设计,通过踊跃查阅各类资料并非断调试,完成了那个模块,至今我仍感慨颇多。
回顾这次的程序设计,我学到了很多,不仅巩固了以前所学的知识,而且学到了很多在书本上所没有学到过的内容。
这次课程设计使我知道了只有理论知识与实践相结合,从理论中的出结论,才能真正理解知识,才能提高自己的实际动手能力,和独立试探的能力。
在设计的进程中碰到了各类各样的问题,同时在设计的进程中发觉了自己的不足的地方。
这次编写出程序也是学习进程中相当重要的一环,以前学习进程中出现的问题在这次课题设计中全都暴露出来,对以前所学过的知识理解不够深刻,掌握得不够牢固。
所以,我不能再也不掀开讲义以巩固以前学过的知识并查阅各类资料,这让我有效的弥补了知识的漏洞,把以前所学过的知识从头温故,巩固了所学的知识。
虽然很累,但当我成功地做出那个系统的时候,当我的程序能够成功地运行,我的心中就不免兴奋,不免激动。
以前各种艰辛这时就变成了最甜美的回忆!
对我而言,知识上的收获重要,精神上的丰收加倍可喜。
让我明白了学无止境的道理。
咱们每一个人永久不能知足于现有的成绩,人生就像在登山,一座山峰的后面还有更高的山峰在等着你。
挫折是一份财富,经历是一份拥有。
这次课程设计必将成为我人生旅途上一个超级美好的回忆!
忙碌了一个多礼拜,咱们总算将此程序设计出来。
虽然不是自己独立完成,但仍然很高兴,因为在设计的进程中,让我了解到要设计一个大型程序,查找资料是相当重要的,在他人的基础上,再按照自己所学进行修改与调试,最后设计出自己想要的程序,这进程艰辛,但只要你锲而不舍,成功为期不远。
一样平时扎实的基础也很关键,所以平时就要养成良好的学习适应,多向老师同窗请教,不要怕难为情。
做完那个课程设计,咱们的自信一下子提高了,咱们也会写程序了;虽然对于有些人这种程序会很简单,可对咱们C++语言初学者来讲,已经很不容易了。
这次体验为以后的学习运算机的咱们增强了信心。
总之,这次设计程序让我受益良多,我会好好珍惜像这种宝贵的机缘
感谢老师的淳淳教诲,感激同窗的踊跃帮忙,我的程序终于顺利完成了。
这次的课程设计,它使我加倍深刻地体会到多看专业书的重要性,只有掌握了必然量的专业知识才能驾轻就熟地解决诸多问题;另外,做任何事都要有耐心,不要一碰到困难就畏缩。
在不断尝试以后终于完成了这次实践,使自己尝到了成功的甜头。
一样也希望学校继续给咱们如此的学习机缘。
7.参考文献
[1]《C++程序设计教程》
出版社:
人民邮电出版社
作者:
吕凤翥
[2