电子词典程序设计.docx
《电子词典程序设计.docx》由会员分享,可在线阅读,更多相关《电子词典程序设计.docx(9页珍藏版)》请在冰豆网上搜索。
电子词典程序设计
电子词典程序设计
电子词典程序开发
一、需求分析
(1)程序的功能英汉词典作为一个常用的学习工具,是我们经常要使用的。
该系统能完成一个简单的电子英汉词典的功能,如:
单词的查找、增词、删除、修改和维护等工作。
在计算机中建立有限规模的电子英汉词典(文件),利用程序实现电子英汉词典的查找、增词、删除、修改和维护工作。
词典的内容为:
每行对应一个词条,每个词条由两个字符串组成,字符串用若干空格符分开;前一个是单词字符串(英文),后一个是释义字符串(中文),使用分号作为多个释义的分隔符(无空格)。
对单词和释义字符串长度的限定分别为不少于10个与15个字符,词条数限定为不多于1000条。
(2)输入输出的要求。
采用菜单工作方式。
在一个操作执行之后,程序询问是否继续执行该操作。
如输入Y或y,则重复同一操作,不退回到菜单;如输入其它信息,则回到菜单等待另一次选择。
仅当选择退出操作时,程序应询问是否将修改后的词典存盘,并根据用户选择存盘退出或不存盘退出。
要求整个设计以人为本,用户界面友好。
二、总体设计
1、程序共有五个子函数和一个主函数。
1.search是查找函数,用户通过系统提示输入要查找的单词,只要单词库中含有此单词便能找到相应的中文解释。
这个查找函数使用的是从头到尾的线性查找发,虽然查找效率在数据很大上午时候无法容忍的。
但是因为这里涉及的数据量很小,使用线性查找对系统性能没有很大上午损害。
2.add是增加函数,用户可通过此函数来增加单词库单词的数量。
3.modify是修改函数,程序提示用户输入要修改的单词,还是用线性查找的方法查找相应的纪录,如果找到,则提示输入新单词及中文解释。
4.delete是删除函数,程序提示用户输入要删除的单词,使用线性查找的方法找到相应的纪录,如果找到,提示用户确认删除才做。
在得到确认后,删除这个单词的纪录。
5.主程序通过无限循环来接收输入的命令,并且根据命令调用相应的函数处理。
2、课题中涉及到的数字主要是英文单词,和数据1-4,它们都属于字符型数据,它们的结果还应该是字符型。
三:
详细设计
四、调试分析与设计体会:
1、输入1就是添加新的单词,输入2是删除已有的单词,输入3是查找要找的单词,它包括两种方法,1:
是输入英语找单词,2:
是输入汉语找单词,输入4是退出程序。
2、感谢老师让我有机会再次学习C语言.我们这次设计的课题是电子英汉词典的设计,通过这次的程序设计,知道了自己以前在学习C语言方面的不足,光是书本上的知识是不够的,自己编写出程序也是学习过程中相当重要的一环,以前学习过程中出现的问题在这次课题设计中全都暴露出来.例如:
对知识的掌握不牢,程序的理解不透彻等等.所以,我不得不再翻开课本以巩固以前学过的知识,这让我有效的弥补了知识的漏洞.
一开始我就对C语言很感兴趣。
我觉得每每听完一堂课,我都有一种说不出的高兴,有时也会发愁,因为课程越往后越难学而且讲课进度再加快,但我没有退缩,每天坚持看C语言。
就这样一步步走到课程设计。
虽然在这个实习周里的语言设计遇到了很多困难,但我并没有退缩,找同学老师帮着改正错误,终于完成了,使自己尝到了成功的甜头。
希望学校继续给我们这样的学习机会。
五、参考文献:
《C语言程序设计》主编谭浩强清华大学出版社2005年7月
《C语言程序设计实验指导与习题解答》主编谭浩强清华大学出版社2005年7月
《计算机软件基础》主编麦中凡苗明川何玉洁高等教育出版社2007年3月
六、原程序设计清单:
#include
#include
main()
{staticintn=32;
charm;
struct
{
chareng[10];
charci[15];
charyin[10];
charchi[30];
}word[1000]={{"good","a","goud","hao"},
{"aide","n","eid","zhushou"},
{"bone","n","boun","gutou"},
{"ball","n","bo:
","qiu"},
{"cat","n","cat","mao"},
{"cattle","n","katl","niu"},
{"clean","adj+d+v","kli:
n","1.ganjin2.gongzheng"},
{"a","num","ei","yige"},
{"finally","ad","fai'nens","zuizhong"},
{"fine","adj+ad+v+n","fain","1.shushi2.hao"},
{"finish","v+n","finish","wancheng"},
{"girl","n","ge:
l","nvhai"},
{"five","v","giv","gei"},
{"go","n+v","gou","zou"},
{"help","int+n","help","bangzhu"},
{"he","pron","hi:
","ta"},
{"here","ad+ini","hie","zheli"},
{"high","aadj+ad+n","hai","gao"},
{"ice","n","ais","bing"},
{"idea","n","ai'die","zhuyi"},
{"imagine","v","i'madgin","xiangxiang"},
{"in","v","in:
","zailimian"},
{"kill","v","kil","shasi"},
{"king","n","king","guowang"},
{"kiss","v+n","kis","wen"},
{"knight","n+v","nait","qishi"},
{"late","adj+ad","leit","1.chide2.yihoude"},
{"left","adj+ad+n","left","zuobian"},
{"line","n+v","lain","xian"},
{"name","n+v","neim","mingzi"},
{"mission","v","mision","rengwu"}};
clrscr();
loop:
for(;;)
{clrscr();
printf("\n\t****Pleasemakeachoise****\n");
printf("\n\n\t1.Addthenewword\n");
printf("\t2.Delword\n");
printf("\t3.findword\n");
printf("\t4.Exittheprocess\n\n");
printf("Pleasechoose1~4toenter\n");
printf("Pleasepressthekey:
");
scanf("%c",&m);
switch(m)
{
case'1':
{
charj[10],k[15],l[10],p[30];
++n;
printf("\nAddnewword");
printf("\n\npleaseentertheDanci:
");
scanf("%s",j);
printf("\nEntertheCixing:
");
scanf("%s",k);
printf("\nEntertheYingbiao:
");
scanf("%s",l);
printf("\nEntertheChinese:
");
scanf("%s",p);
strcpy(word[n].eng,j);
strcpy(word[n].ci,k);
strcpy(word[n].yin,l);
strcpy(word[n].chi,p);
printf("\nPleasecheckit:
");
printf("\n\nEnglish.%s",word[n].eng);
printf("\n\nCixing:
%s",word[n].ci);
printf("\n\nYinbiao:
%s",word[n].yin);
printf("\n\nChinese:
%s\n\n",word[n].chi);
printf("\nPleasepressanykeywithEnterkeyback!
");
scanf("%s",m);
}gotoloop;
case'2':
{
charr[10];
ints,t,u,z=0,x=0;
printf("PleasepresstheEnglishyouwanttodel:
");
scanf("%s",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)
{
printf("\n\nDelsucessful!
!
\n");
n--;
printf("\nPleasepressanykeywithEnterkeyback!
");
scanf("%s",m);
}
else
{
printf("\n\nDelfailed!
!
");
printf("\nPleasepressanykeywithEnterkeyback!
");
scanf("%s",m);
}
}
break;
case'3':
{
intl;clrscr();
printf("\n\nSearchtheword\n");
printf("1.SearchbyEnglish:
\n");
printf("2.SearchbyChinese:
\n");
printf("Otherkeyback\n");
printf("Pleasechooseone:
");
scanf("%d",&l);
switch(l)
{case1:
{charr[10],m[1];ints;
printf("\nPleaseentertheEnglishword:
");
scanf("%s",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];
printf("\nNothisword!
!
\nPleasepressanykeywithEnterkeyback!
");
scanf("%s",m);
gotoloop;
}
}
printf("\n\nEnglish.%s",word[s].eng);
printf("\n\nCixing:
%s",word[s].ci);
printf("\n\nYinbiao:
%s",word[s].yin);
printf("\n\nChinese:
%s",word[s].chi);
printf("\n\n\nPleasepressanykeywithEnterkeyback!
");
scanf("%s",m);
}gotoloop;
case2:
{charr[10],m[1];ints;
printf("\nPleaseentertheChinese:
");
scanf("%s",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];
printf("\nNothisword!
!
\nPleasepressanykeywithEnterkeyback!
");
scanf("%s",m);
gotoloop;
}
}
printf("\nEnglish.%s",word[s].eng);
printf("\n\nCixing:
%s",word[s].ci);
printf("\n\nYinbiao:
%s",word[s].yin);
printf("\n\nChinese:
%s",word[s].chi);
printf("\n\n\nPleasepressanykeywithEnterkeyback!
");
scanf("%s",m);
default:
gotoloop;break;}
}
}
case'4':
exit(0);
default:
break;
}
}
}