嵌入式系统课程设计 快译通词典.docx

上传人:b****1 文档编号:2374497 上传时间:2023-05-03 格式:DOCX 页数:18 大小:391.66KB
下载 相关 举报
嵌入式系统课程设计 快译通词典.docx_第1页
第1页 / 共18页
嵌入式系统课程设计 快译通词典.docx_第2页
第2页 / 共18页
嵌入式系统课程设计 快译通词典.docx_第3页
第3页 / 共18页
嵌入式系统课程设计 快译通词典.docx_第4页
第4页 / 共18页
嵌入式系统课程设计 快译通词典.docx_第5页
第5页 / 共18页
嵌入式系统课程设计 快译通词典.docx_第6页
第6页 / 共18页
嵌入式系统课程设计 快译通词典.docx_第7页
第7页 / 共18页
嵌入式系统课程设计 快译通词典.docx_第8页
第8页 / 共18页
嵌入式系统课程设计 快译通词典.docx_第9页
第9页 / 共18页
嵌入式系统课程设计 快译通词典.docx_第10页
第10页 / 共18页
嵌入式系统课程设计 快译通词典.docx_第11页
第11页 / 共18页
嵌入式系统课程设计 快译通词典.docx_第12页
第12页 / 共18页
嵌入式系统课程设计 快译通词典.docx_第13页
第13页 / 共18页
嵌入式系统课程设计 快译通词典.docx_第14页
第14页 / 共18页
嵌入式系统课程设计 快译通词典.docx_第15页
第15页 / 共18页
嵌入式系统课程设计 快译通词典.docx_第16页
第16页 / 共18页
嵌入式系统课程设计 快译通词典.docx_第17页
第17页 / 共18页
嵌入式系统课程设计 快译通词典.docx_第18页
第18页 / 共18页
亲,该文档总共18页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

嵌入式系统课程设计 快译通词典.docx

《嵌入式系统课程设计 快译通词典.docx》由会员分享,可在线阅读,更多相关《嵌入式系统课程设计 快译通词典.docx(18页珍藏版)》请在冰点文库上搜索。

嵌入式系统课程设计 快译通词典.docx

嵌入式系统课程设计快译通词典

软件学院

课程设计报告书

 

课程名称嵌入式系统课程设计

设计题目快译通词典

专业班级嵌入式软件09-2班

学号0920010201

姓名车文通

指导教师王建立

 

年月

1设计时间

2012年6月11日-2012年6月15日

2设计目的

通过本次课程设计,全面掌握、熟悉C语言的程序设计与技巧,进一步提高编写程序,分析程序及上机操作,调试程序的能力,提高动手操作能力及分析问题和解决问题的能力

3设计任务

一单词查询

给定文本文件“dict.txt”,该文件用于存储词库。

词库为“英-汉”,“汉-英”双语词典,每个单词和其解释的格式固定,如下所示:

#单词

Trans:

解释1@解释2@…解释n

每个新单词由“#”开头,解释之间使用“@”隔开。

一个词可能有多个解释,解释均存储在一行里,行首固定以“Trans:

”开头。

下面是一个典型的例子:

#abyssinian

Trans:

a.阿比西尼亚的@n.阿比西尼亚人;依索比亚人

该词有两个解释,一个是“a.阿比西尼亚的”;另一个是“n.阿比西尼亚人;依索比亚人”。

要求编写程序将词库文件读取到内存中,接受用户输入的单词,在字典中查找单词,并且将解释输出到屏幕上。

用户可以反复输入,直到用户输入“exit”字典程序退出。

程序执行格式如下所示:

./app–text

-text表示使用文本词库进行单词查找。

二、建立索引,并且使用索引进行单词查询

要求建立二进制索引,索引格式如下图所示。

将文本文件“dict.txt”文件转换为上图所示索引文件“dict.dat”,使用索引文件实现单词查找。

程序执行格式如下:

./app–index

-index表示使用文本词库dict.txt建立二进制索引词库dict.dat

./app–bin

-bin表示使用二进制索引词库进行单词查找。

三、支持用户自添加新词

用户添加的新词存放在指定文件中。

如果待查单词在词库中找不到,则使用用户提供的词库。

用户的词库使用文本形式保存,便于用户修改。

程序执行格式图1-1所示。

./app词库选择选项-f用户词库文件名

词库选项为-test1,或者-test2,表示使用文本词库或者二进制索引词库。

-f为固定参数,用来指定用户词库文件名。

4设计内容

4.1需求分析

4.1.1功能需求

实现用户输入要查询的单词,在字典中查找单词,并且将解释输出到屏幕上。

1.将英文单词翻译为中文意思。

2.用户利用索引进行单词查询。

3.用户可以自行添加新词。

4.1.2性能需求

(1)用户输入的单词中仅含有英文文字的分隔符空格、逗号、句号和换行符,除些之外再不含其它文字。

(2)用户输入单词时,必须以以下格式有效:

“#单词”。

解释中需遵循以下原则:

解释之间使用“@”隔开。

一个词可能有多个解释,解释均存储在一行里,行首固定以“Trans:

”开头。

并且表明词性。

例:

#单词

Trans:

a.解释1@n.解释2@..解释n

(3)用户输入时,判断单词是否相同时不区分大小写。

例如ABC、Abc、Abc、aBC、abc…都是同一个单词。

(4)若单词库中,无所查询的单词时,进行提示“查无此词”。

(5)尽量考虑缩短程序的运行时间,提高程序运行速度。

4.2总体设计

概要设计

(1)单词查询

(2)建立索引文件

(3)在索引文件中查询

(4)添加新词

具体系统流程图如图4.2.1

1-1

图4.2.1系统流程图

1-1模块

功能需求:

要求编写程序将词库文件读取到内存中,接受用户输入的单词,在字典中查找单词,并且将解释输出到屏幕上。

用户可以反复输入,直到用户输入“exit”字典程序退出。

4.2.1抽象数据类型

typedefstructword

{

charwd[20];

chartrans[300];

structword*next;

}word,*wordp;

功能流程图:

如图4.2.2所示

图4.2.2单词查询模块流程图

描述:

开始,将文本加载到链表中,输入所查单词,判断是否输入exit,若是则结束,若否则判断输入单词格式是否正确,若格式不正确,则返回等待继续输入,若格式正确在链表中查询,查询之后判断在链表中否找到所输入的单词,若没找到,输出无此词,并返回等待输入,若找到,则输出单词意思,然后结束。

4.3详细设计

4.3.1抽象数据类型

charwd[20]

chartrans[300]

4.3.2主要函数模块

4.3.2.1:

查找单词模块

函数原型:

intcmpWord(char*,char*)

函数返回值类型:

int

函数参数了类型:

cha*

函数功能:

到链表中查找单词判断找到的单词与用户输入单词是否一致

4.3.2.2得到单词模块

函数原型:

char*getWord(wordpwp,charword[])

函数参数:

structword,charword

函数返回值类型:

char*单词的地址

函数作用:

返回找到的单词的地址

4.3.2.3输出模块

函数原型:

intputInfo(structword*)

函数参数:

structword*

函数返回值类型:

int

函数作用:

输出单词所对应的单词解释

1.详细模块设计

(1)具体在链表中查询模块

功能需求:

在链表中查找要查询的单词。

功能流程图:

如图4.3.1

图4.3.1在链表中查找单词

(2)将文件加载到内存模块

功能需求:

从文件“dict.txt”读取单词到内存,内存存储结构采用链表结构。

图4.3.2将文件加载到内存模块

初始化装载内存模块

函数原型:

structword*Initdic(void);

函数参数:

函数返回值类型:

结构体word指针类型

函数功能:

将文件dict.txt以链表的形式存入内存每个链表是个结构体存放单词和解释

4.4测试与分析

4.4.1测试

图1和2为模块测试

图3.4.5为整体测试

模块测试图如图1和图2所示

图1

图2

图3正确测试

图4错误测试

图5退出测试

4.4.2分析

内容包括:

系统实现了单词的查询功能但是初始化链表的时候没有分类存储,如果文件dict.txt的单词量很大的话会导致系统耗时很久,如果能分类存储就更好了时间会缩短很多。

4.5附录

#include

#include

#include

#include"headfile.h"

#defineLENsizeof(word)

wdpInitialize(void)

{

FILE*fp;

intn=0;

inti=0;

charch,cl;

wdphead;

wdpp1,p2;

wordwrd;

p1=p2=(wdp)malloc(LEN);

if((fp=fopen("dict.txt","r"))==NULL)

{

printf("CANNOTOPENTHEFILETHATYOUNEED\n");

exit

(1);

}

for(i=0;;i++)

{

ch=fgetc(fp);

cl=fgetc(fp);

if(ch!

='\n')

p1->wd[i]=cl;

elsebreak;

}

for(i=1;;i++)

{

ch=fgetc(fp);

if(ch!

='\n')

{p1->trans[0]='T';

p1->trans[i]=ch;}

elsebreak;

}

head=NULL;

do{

n++;

if(n==1)head=p1;

elsep2->next=p1;

p2=p1;

p1=(wdp)malloc(LEN);

for(i=0;;i++)

{

ch=fgetc(fp);

if(ch!

='\n')

p1->wd[i]=ch;

elsebreak;

}

for(i=0;;i++)

{

ch=fgetc(fp);

if(ch!

='\n')

p1->trans[i]=ch;

elsebreak;

}

}while((ch=fgetc(fp))!

=EOF);

p2->next=NULL;

fclose(fp);

return(head);

}

char*getOut(wdpwp,charword[])

{

inti=0;

char*q;

for(i=0;i<30;i++)

{

word[i]=wp->wd[i];

}

q=word;

return(q);

}

intcmpChar(char*dst,char*src)

{

if(strcmp(src,dst)==0)return1;

elsereturn0;

}

intoutPut(wdpwp)

{

inti=0;

printf("yourword:

");

for(i=0;i<30;i++)

{

printf("%c",wp->wd[i]);

}

printf("\n");

for(i=0;i<=30;i++)

{

printf("%c",wp->trans[i]);

}

return0;

}

头文件代码

typedefstructword

{

charwd[30];

chartrans[300];

structword*next;

}word,*wdp;

#ifndefHEADFILE_H_

#defineHEADFILE_H_

structword*Initialize(void);

char*getOut(structword*,char[]);

intcmpChar(char*,char*);

intoutPut(structword*);

#endif

Main函数代码

#include

#include

#include

#include"headfile.h"

intmain(intargc,char*argv[])

{

word*wp1;

word*wp2;

charputin[30];

chargetout[30];

inti=0;

wp1=Initialize();

wp2=wp1;

printf("*************************");

printf("\nENLISH-CHINESEDICTIONARY");

printf("\n*************************\n");

printf("二班一组作品");

a:

printf("\n\npleaseinputword:

");

scanf("%s",putin);

if((putin[0]=='e')&&(putin[1]=='x')&&(putin[2]=='i')&&(putin[3]=='t'))

exit

(1);

while(!

cmpChar(getOut(wp1,getout),putin))

{

if(wp1->next!

=NULL)

wp1=wp1->next;

elsebreak;

}

if(wp1->next!

=NULL)outPut(wp1);

elseprintf("\nCONNOTFOUNDYOURWORD");

wp1=wp2;

gotoa;

return0;

}

 

5总结与展望

通过这一周的课程设计,是我更加了解C语言linux的一些知识,增强了我分析问题的能力和综合知识的运用,分析问题和解决问题,锻炼实际解决问题的重要环节。

在这一周的时间里让我学会并复习了很多知识,提高自己的动手的能力,而且在本次时间中让我深深体会到了团队的重要性,做嵌入式设计,个人是不肯能完成的,需要整个团队的共同努力,团队很好的合作是我们这次课程设计成功完成的最重要的基础。

虽然在本次课程设计中遇到了许多问题,例如流程图的错误,代码的运行测试等等,但是在老师和同学们的帮助下都得到了解决.,最终完成整个设计。

参考文献

[1]浩强,C程序设计,第3版,出版社:

清华大学出版社,2005

[2]赵苍明,穆煜,Linux开发教程,北京:

人民邮电出版社,2009

[3]严蔚敏,吴伟民,数据结构(C语言)[M],北京:

北京清华大学出版社,2010

成绩评定

成绩教师签字

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2