中 北 大 学
课程设计说明书
学 院、系:
软件学院
专 业:
软件工程
学 生 姓 名:
学 号:
设 计 题 目:
C语言关键字中英翻译机
班级
起 迄 日 期:
2013年10月11日~2013年11月16日
指 导 教 师:
何志英
日期: 2013年11月16日
1 设计目的
在尽可能大的词库下通过简易的程序快速的运行出来结果。
2 任务概述
要求输入中文的名词和关键字,可以将其翻译成英语,如输入“基本整型”+回车,得到int;输入英文的单词int,则可以翻译成中文“基本整型”。若输入的不是关键字则要求继续输入,可以多次查询。输入bye时退出程序。
3 模块划分
a) 主函数main()
b) 函数Yinghan()
c) 函数Hanying()
4 主要函数说明及其N-S图
a) 主函数main() 图4.1
函数实现功能:该函数功能是判断用户是进入英汉函数查找中文关键字还是进入汉英函数查找英文关键字以及通过strcmp语句实现返回主菜单和退出程序的功能。
参数意义:定义字符数组k[m]用来存放用户输入的内容e(进入英汉函数)或c(进入汉英函数)或u(返回上一级)或bye(退出程序)。而x[n][m]和y[n][m]这两个二维数组是用来做词库用的。
b) 函数Yinghan() 图4.2
函数实现功能:输入中文关键字就可以通过在词库中查找相应的英文释意,如果词库中无用户输入的中文关键词的释意的话则输出“查找不到该单词”,如果用户输入“u”的话,则会返回主菜单。
参数意义:x[n][m]和y[n][m]这两个二维数组是从主函数main调用的。而k[m]则是存放用户输入的中文关键字。
c)函数Hanying() 图4.3
函数实现功能:输入英文关键字就可以通过在词库中查找相应的中文释意,如果词库中无用户输入的英文关键词的释意的话则输出“查找不到该单词”,如果用户输入“u”的话,则会返回主菜单。
参数意义:x[n][m]和y[n][m]这两个二维数组是从主函数main调用的。而k[m]则是存放用户输入的英文关键字。
5 程序运行数据及其结果
1)
进入程序后显示主菜单界面
2)
输入“e+回车”进入英汉词典,用来查找中文释意。
3)
输入“c+回车”进入汉英词典,用来查找英文释意。
4) 翻译
5)
按“u+回车”返回主菜单
6) 找不到关键字:输入词库中没有的关键字
7)
按“bye+回车”退出程序,要在主菜单中退出。
6 课程设计心得
A. 发现问题和解决方法:
a) 在程序调试的过程中,一开始没有用二维数组存放词库,而是用一维数组,结果发现一维数组并不能很好的运行“在词库中找不到单词”这个语句,后来改用二维数组,不仅可以存放更多的单词以及解决了“找不到单词”这个语句。
b) 第二个困扰我的问题就是“按u返回主菜单这个语句”,一开始这个功能是我在网上搜集资料时看到的,但要把这个功能加入我的函数就要进行改进了,因为我使用的是调用函数,所以我利用两个while语句,外围的while语句实现了返回主函数的功能,而回到主函数就回到了主界面。
c) 调试过程中还会出现一些零零总总的语法错误,这些语法错误是容易纠正的,就像有时会漏掉“;”“}”这些符号。
B. 心得:
课程设计是锻炼我们实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程,在当今这个信息时代,拥有计算机开发实践能力十分重要。通过这次的课程设计,我对C语言这门课程又有了更深的了解。自从拿到题目到完成整个编程,从理论到实践,我觉得我学到很多很多的的东西,同时不仅巩固了以前所学过的知识,并且学习到了一些在书本上所没有的知识。我觉得这是一场理论和实践的相结合的实战,光有理论知识而没有实践动手能力是无法完成任务的,我们要从理论中得出结论,在实践中应用。从而提高自身的综合能力。在设计的过程中,我们能及时发现自己的不足,进而查缺补漏,温故知新。
附录:
#include
#include
#include
#define n 10
#define m 100
void yinghan(char x[n][m],char y[n][m]) //该函数的作用是:英汉词典
{
char k[m],k1[m]={"u"}; //字符数组k[m]的作用是:保存输入的单词
int i;
printf("如果要返回主菜单,输入u \n");
while(1)
{
while(1)
{
printf("请输入英语单词: ");
gets(k);
if(strcmp(k,k1)==0) break; //如果输入的单词为u则退出该循环
for(i=0;i=n) printf("抱歉,查找不到该单词\n");
else printf("%s的意思为:%s \n",k,y[i]);
}
if(strcmp(k,k1)==0) break; //入输入的单词为u则退出该循环返回主菜单
}
}
void hanying(char x[n][m],char y[n][m])//该函数的作用是:汉英词典
{
char k[m],k1[m]={"u"};
int i;
printf("如果要返回主菜单,输入u \n");
while(1)
{
while(1)
{
printf("请输入汉语: ");
gets(k);
if(strcmp(k,k1)==0) break;//如果输入的单词为u则退出该循环
for(i=0;i=n) printf("抱歉,查找不到该单词\n");
else printf("%s的意思为:%s \n",k,x[i]);
}
if(strcmp(k,k1)==0) break;//入输入的单词为u则退出该循环返回主菜单
}
}
void main()
{
char k[m];
char x[n][m]={"auto","break","do","else","float","double","if","switch","register","int"};
char y[n][m]={"自动","中断","循环体","否则","单精度","双精度","如果","开关","寄存器","整形"};
while(1)
{
printf("\t|*********************电子词典模拟软件*********************|\n");
printf("\t 1.先选择词典:输入字母e/c选择英汉还是汉英词典\n");
printf("\t 2.输入要查询的词,回车结束输入\n");
printf("\t 3.输入字母u返回主菜单,重新选择词典\n");
printf("\t 4.退出:主菜单下输入字母 bye 退出此此电子词典程序\n");
printf("\t|******************** All rights reserved******************|\n");
printf("输入字母e/c选择英汉还是汉英词典 \n");
gets(k);
if(strcmp(k,"e")==0) yinghan(x,y); //如果输入的字符数组等于e则执行英汉词典
else if(strcmp(k,"c")==0) hanying(x,y);//如果输入的字符数组等于c则执行汉英词典
else if(strcmp(k,"u")==0); //如果输入的字符数组等于u则返回主菜单
else if(strcmp(k,"bye")==0) break; //如果输入的字符数组等于bye则退出程序
}
}