admin 管理员组

文章数量: 887021


2023年12月19日发(作者:ascii码与unicode关系)

课 程 设 计 报 告

学院、系:

专业名称:

课程设计科目

所在班级:

学生学号:

学生姓名:

指导教师:

完成时间:

吉林大学珠海学院计算机科学与技术系

软件工程

C语言程序课程设计

7班

********

***

***

2012年3月-5月

题目:C语言关键字中英翻译机

一、 设计任务与目标

要求输入中文的名词和关键字,可以将其翻译成英语,如输入“基本整型”+回车,得到int;输入英文的单词int,则可以翻译成中文“基本整型”。若输入的不是关键字则要求继续输入,可以多次查询。输入bye时退出程序。目前,市场上各种翻译器都有这功能,编译这种功能的程序并不难,但要优化到市场欢迎,其功能多样性和词库大小就十分重要,而词库太过巨大或多或少会影响到计算机运行的速度,所以我的目标是在尽可能大的词库下通过简易的程序快速的运行出来结果。

本次上机实践所使用的平台和相关软件。

平台:Windows 2000

相关软件:VC6.0……

二、 方案设计与论证

1. 定义两个字符型二维数组用来存放中文关键字和英文关键字,中文和英文的顺序要一一对应。

2. 定义两个函数,函数yinghan()是用来实现英文关键字翻译成中文关键字的功能,函数hanying()是用来实现中文关键字翻译成英文关键字的功能。

3. 定义一个字符型数组用来存放要查询关键字的字符串。另外定义一个字符型数组k用来确定是进入英汉词典还是进入汉英词典。

4. 利用while(1)可以无限次查询关键字。

5. 利用strcmp()函数和for循环等语句比较英文(汉字)关键字和词库中的英文(汉字)关键字逐一比较来找出对应的释意。

6. 若输入的关键字和已有的比较相同则输出对应的释意,若输入的关键字在词库中

7. 找不到的话,则输出“抱歉,输出查找不到该单词”,这时你可以选择再次输入单词或者按“u+回车”返回主菜单。

8. 用exit()函数实现输入“bye”时退出。

三、 程序框图或流程图,程序清单与调用关系

a) 主函数main()

函数实现功能:该函数功能是判断用户是进入英汉函数查找中文关键字还是进入汉英函数查找英文关键字以及通过strcmp语句实现返回主菜单和退出程序的功能。

参数意义:定义字符数组k[m]用来存放用户输入的内容e(进入英汉函数)或c(进入汉英函数)或u(返回上一级)或bye(退出程序)。而x[n][m]和y[n][m]这两个二维数组是用来做词库用的。

b) 函数Yinghan()

函数实现功能:输入中文关键字就可以通过在词库中查找相应的英文释意,如果词库中无用户输入的中文关键词的释意的话则输出“查找不到该单词”,如果用户输入“u”的话,则会返回主菜单。

参数意义:x[n][m]和y[n][m]这两个二维数组是从主函数main调用的。而k[m]则是存放用户输入的中文关键字。

c) 函数Hanying()

函数实现功能:输入英文关键字就可以通过在词库中查找相应的中文释意,如果词库中无用户输入的英文关键词的释意的话则输出“查找不到该单词”,如果用户输入“u”的话,则会返回主菜单。

参数意义:x[n][m]和y[n][m]这两个二维数组是从主函数main调用的。而k[m]则是存放用户输入的英文关键字。

四、 全部源程序清单

#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

if(strcmp(k,x[i])==0) break; //如果数组x[n][m]中的一个单词与输入的单词相同时则退出循环

if(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

if(strcmp(k,y[i])==0) break;//如果数组y[n][m]中的一个汉语词与输入的单词相同时则退出循环

if(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则退出程序

}

}

五、 程序运行结果测试与分析

1) 进入程序后显示主菜单界面

2) 输入“e+回车”进入英汉词典,用来查找中文释意。

3) 输入“c+回车”进入汉英词典,用来查找英文释意。

4) 翻译

5) 按“u+回车”返回主菜单

6) 找不到关键字:输入词库中没有的关键字

7) 按“bye+回车”退出程序,要在主菜单中退出。

六、 结论与心得

A. 发现问题和解决方法:

a) 在程序调试的过程中,一开始我并不是用二维数组存放词库,而是用一维数组,结果发现一维数组并不能很好的运行“在词库中找不到单词”这个语句,后来改用二维数组,不仅可以存放更多的单词以及解决了“找不到单词”这个语句。

b) 第二个困扰我的问题就是“按u返回主菜单这个语句”,一开始这个功能是我在网上搜集资料时看到的,但要把这个功能加入我的函数就要进行改进了,因为我使用的是调用函数,所以我利用两个while语句,外围的while语句实现了返回主函数的功能,而回到主函数就回到了主界面。

c) 调试过程中还会出现一些零零总总的语法错误,这些语法错误是容易纠正的,就像有时会漏掉“;”“}”这些符号,按下F4找到错误就能很快解决解决!

B. 未完成的想法和目标:

虽然编程完成了,当我觉得如果词库非常巨大的话,这样通过for循环一次次查找是十分浪费资源和时间的,所以我在网上查到数据结构中有索引功能,我觉得可以利用它,然后像课本中的英文单词一样,字母a为一组,b为一组,然后通过查找第一个字母,确定范围,然后再进行查找,可是由于网上查到的资料实在有限,现阶段是实现不了的了,所以,我的目标就是在将来能攻破这个难关,通过学习来强化自己的知识,解决这个问题。

C. 心得:

课程设计是锻炼我们实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程,在当今这个信息时代,拥有计算机开发实践能力十分重要。通过这次的课程设计,我对C语言这门课程又有了更深的了解。自从拿到题目到完成整个编程,从理论到实践,我觉得我学到很多很多的的东西,同时不仅巩固了以前所学过的知识,并且学习到了一些在书本上所没有的知识。我觉得这是一场理论和实践的相结合的实战,光有理论知识而没有实践动手能力是无法完成任务的,我们要从理论中得出结论,在实践中应用。从而提高自身的综合能力。在设计的过程中,我们能及时发现自己的不足,进而查缺补漏,温故知新。

七、

参考资料

[1]来自百度贴吧8-10楼 /f?kz=755234664

八、致谢

这次课程设计终于顺利完成了,在次我要感谢蔡同学的帮助以及曾老师的指导。感谢百度贴吧的那位热心网友提供的程序。

课程设计成绩评定表

对课程设计工作过

程的简短介绍和自

我评价

学生签名:

2012年 月 日

(以下由评定小组教师填写)

质量评价指标(在相应栏目打√)

评 价 质 量

评 价 项 目

优秀

工作量和态度

实验、计算可靠性

文字和图表质量

总体评价

良好

中等

及格

不及格

评定成绩(百分制)

评定小组成员签名

2012年 月 日

制定人:王钲旋,单缅 审定人: 陈守孔


本文标签: 输入 关键字 函数 数组 能力