小型电子辞典

上传人:dfg****19 文档编号:203155691 上传时间:2023-04-24 格式:DOC 页数:27 大小:955KB
收藏 版权申诉 举报 下载
小型电子辞典_第1页
第1页 / 共27页
小型电子辞典_第2页
第2页 / 共27页
小型电子辞典_第3页
第3页 / 共27页
资源描述:

《小型电子辞典》由会员分享,可在线阅读,更多相关《小型电子辞典(27页珍藏版)》请在装配图网上搜索。

1、小型英汉电子辞典。小型英汉电子辞典田鑫目录摘 要11绪论12. 系统分析12.1 数据需求12.2功能需求12.3 性能需求23. 总体设计23.1功能模块设计23.2系统设计方案34. 详细设计44.1插入词条模块44.2修改单词信息模块54.3查询单词信息模块64.4显示单词模块所有信息84.5添加新单词模块94.6删除单词模块104.7保存模块115. 结论12结束语13参考文献13附录1用户手册14附录2源程序17摘 要小型英汉电子辞典是一个生活不可缺少的部分,它是人们学习生活的必须品,是人们学习知识的好工具。他能使人们在学习时不再为单词所困,学习变的更加方便有效,是人们学习的好助手。

2、 本系统使用C语言作为程序开发的语言,开发小型英汉电子辞典,实现英汉互译功能,可以对单词信息进行添加、删除、修改和查询功能。本文从分析综合训练的题目背景、题目意义、题目要求等出发,分别从需求分析、总体设计、详细设计等各个方面详细介绍了系统的设计与实现过程,最后对系统的完成情况进行了总结。关键词:单词;汉字;解释1绪论小型英汉电子辞典是一个生活不可缺少的部分,它是人们学习生活的必须品,是人们学习知识的好工具。他能使人们在学习时不再为单词所困,学习变的更加方便有效,是人们学习的好助手。根据综合训练任务书要求,本系统开发主要完成以下功能和性能。 Wf21(1) 英译汉或汉译英:查询英语单词的汉语信息

3、,查询汉语词组的英语翻译,系统可以根据使用者的给出的条件查询对应的信息;(2) 词库的管理:根据使用者的要求,可以对系统的词库进行添加、修改和删除单词及其解释;(3) 新增单词解释:用户可以根据需要对词库中汉语的解释进行丰富。当使用者添加了重复的单词和解释时,系统回提示使用者录入重复并取消录入;(4) 循环显示的主菜单:使用者可以对整个系统进行反复的使用,保证系统的连贯性与使用性。2. 系统分析2.1 数据需求本系统主要是小型英汉电子词典系统。需要向系统输入单词、汉字及其解释。2.2功能需求本系统需要有添加,删除,查询,修改、循环显示主菜单,保存信息功能,能将单词词条注销,利用显示函数将单词信

4、息显示。要求有循环显示菜单工能。2.3 性能需求在运行本程序时只要按照正确的操作方法要求不会出现无法运行的情况,系统稳定性好,安全,可靠。3. 总体设计3.1功能模块设计根据分析整个系统主要划分为7个功能模块,分别执行要求中的功能。该系统需要有添加,删除,查询,修改,插入,循环显示主菜单,保存信息功能,能将录入单词进行删除注销,利用显示函数将单词内所有信息显示。要求有循环显示菜单工能。功能模块图如图1所示。图1功能模块图(1)插入词条模块插入单词信息,对单词进行更新;(2) 修改单词信息模块对单词内部信息的修改,其内部分为对单词,汉字,及其解释等子模块;(3) 查询单词信息模块对单词内部信息的

5、查询包括通过单词和按汉字。对单词的解释等信息查询的子模块;(4) 显示单词资料系统所有资料模块该模块实现显示单词系统内部一切单词信息清单;(5) 添加新单词模块实现对新单词一切信息的输入并保存使系统自动生成新词条;(6) 删除录入单词模块实现对已存单词所有信息的删除;(7) 保存模块即在运行完系统功能后自动保存信息,此功能不在菜单中显示;3.2系统设计方案(1) 菜单设计一个总菜单,1添加,2删除,3修改,4插入,5按单词查找,6按汉字查找,9结束。基本功能的实现都将体现在这几个菜单选项中。(2) 数据结构建立结构体如下:#include#include#include#define NULL

6、 0#define LEN sizeof(struct dictionary)struct dictionarychar ci20,shi20,han20,jie30,dao30; int num; struct dictionary *next; int n;类型的结构体成员定义一个指向结构体的指针根据模块需要本系统需要用到链表结构。(3) 函数定义了9个函数,都实现以下功能:/struct dictionary *del(struct dictionary *head,char ci20);/删除struct dictionary *correct(struct dictionary *h

7、ead,char ci30);/修改struct dictionary *insert(struct dictionary *head, struct dictionary *chee);/插入 struct dictionary *search(struct dictionary *head,char ci20);/按单词查找struct dictionary *seek(struct dictionary *head,char han20);/按汉字查找void save(struct dictionary *head); /保存struct dictionary *load(struct

8、 dictionary *head);/读取struct card *show (void);/显示4. 详细设计 4.1插入词条模块插入词条主要是操作员将需要插入的单词插入到以有的词条当中。程序流程如图2所示。图1插入词条流程图4.2修改单词信息模块对单词内部信息的修改,其内部分为对单词,汉字,解释等子模块,找到要修改的单词,输入修改后的信息覆盖原有信息。 图2修改单词信息流程图4.3查询单词信息模块该模块包括两种可查询的选项:按字母查找,按汉语意思查找。对单词内部信息的查询包括通过字母查询和汉语意思查询的子模块,每一个子模块基本思想相同,先输入需要查寻的方式然后输入查询所需要的信息,如果输

9、入信息与系统中的单词信息相匹配则输出此单词所有信息。图3.1按单词范围查找流程图 图3.2按汉字范围查找流程图4.4显示单词模块所有信息该模块实现显示单词系统内部一切单词信息清单。打开已存文本文件调用fopen()函数,用被定义的两个指针p1,p2完成文件的读取,返回头指针,调用print函数输出文件信息。 图4显示单词系统流程图4.5添加新单词模块实现对新单词一切信息的输入后使系统自动生成词条并保存到文本文件中。程序中的自动生成词条就是在新添加单词时将单词当时已注册到的号码找到,然后使这个数加1,赋给即将要添加的单词的词条。图5添加新单词流程图4.6删除单词模块先定义两个头指针p1,p2,找

10、到要删除的单词,如果单词是链表的头则将head赋给此会员所存结点的next,此会员所存结点不是头结点就将此会员上一个结点的next与此会员的结点的next相连。图6 删除单词流程图4.7保存模块保存所存储的单词信息,以二进制写的方式打开一个名字为card 的文本文件,调用fwrite()函数将信息存储到名为null的文本文件中,最后关闭文件。图7 保存单词信息流程图5. 结论综合训练顺利完成,任务书中所提出的要求全部实现,可以对单词信息进行添加、修改、删除以及按各种信息查找。不过这个程序还有些不够完善,例如:在添加新单词时当单词信息全部输入之后系统中的全部单词信息自动显示,这样非常占用操作界面

11、,使操作不是十分清晰;再一个就是系统无法正确识别汉语字意只能靠操作人员的认真细心才能减少出错,改进方式:调用一个可以判断号码位数的函数,如果输入位数不合法则提出警告重新输入。结束语为期一个礼拜的C语言综合训练设计实习终于顺利完成,在这期间真正的学到了一些经验,能够熟练的掌握一些C语言的编程思路,能够熟练的运用学到的函数,学会了在曾经编写过的函数上加以修改实现了我期望实现的功能,知道学习编程必须亲手将每一个字符敲入电脑中这样才能真正的学到课本或一些理论中学不到的知识,这才达到了实践的目的,当程序编写完成而且能够正常运行心里一种说不出的自豪感,虽然我不是专业的编程人员但是通过这次实习还是体会到其中

12、的艰辛,同时这也是对我的自勉,望我以后能更加努力的学习知识! 参考文献1 谭浩强. C语言程序设计(第三版).北京:清华大学出版社,2005 2 林碧英.C语言程序设计教程.中国电力出版社,20063 美赫伯特.希尔特,王子恢等译.C语言大全.电子工业出版社,200326附录1用户手册点击运行,首先出现的是菜单界面,选择菜单选项进行操作,可进行如图8所示。图8 菜单界面点“1后按回车”即进行添加新单词的操作,在添加完所有信息输入0结束添加如图9所示。图9 添加界面输入3后点击回车执行对单词修改操作,如图10所示图10 单词修改界面输入5后点击回车进行单词查找操作,如图11所示 图11单词查找界

13、面输入6后点击回车进行汉字查找功能的操作。如图12所示 图12 显示界面输入2后点击回车进行对单词删除操作。如图13所示图13 删除单词界面附录2源程序#include#include#include#define NULL 0#define LEN sizeof(struct dictionary)struct dictionarychar ci20,shi20,han20,jie30,dao30; int num; struct dictionary *next; int n;/添加struct dictionary *creat(void) struct dictionary *head

14、; struct dictionary *p1,*p2; n=0; p1=p2=(struct dictionary *)malloc(LEN); printf(请输入单词:); scanf(%s,p1-ci); printf(请输入汉字:); scanf(%s,p1-han); printf(请输入解释:); scanf(%s,p1-jie); head=NULL; while(strcmp(p1-ci,0)!=0) n=n+1; if(n=1)head=p1; else p2-next=p1; p2=p1; p1=(struct dictionary *)malloc(LEN); prin

15、tf(请输入单词:); scanf(%s,p1-ci); printf(请输入汉字:); scanf(%s,p1-han); printf(请输入解释:); scanf(%s,p1-jie); p2-next=NULL; return(head);/建立链表void print(struct dictionary *head)struct dictionary *p1; printf(n现在,有%d个词典信息:n,n); p1=head; printf(n); printf(单词 汉字 解释 ); if(head!=NULL)doprintf(%s %s %s n,p1-ci, p1-han,

16、p1-jie); p1=p1-next;while(p1!=NULL); printf(n);void menu()printf( n); printf( n); printf( top-英汉电子词典! n); printf( n); printf( n); printf( 1. 添加 2. 删除 3. 修改 4.插入 n); printf( n); printf( 5. 单词查找 6. 汉字查找 n); printf( n); printf( 9. 结束 n); printf( n); printf( n); /删除struct dictionary *del(struct dictiona

17、ry *head,char ci20)struct dictionary *p1,*p2; if (head=NULL) printf(nlist null!n);goto end; p1=head; while(strcmp(ci,p1-ci)!=0&p1-next!=NULL) p2=p1;p1=p1-next; if(strcmp(ci,p1-ci)=0) if(p1=head)head=p1-next; else p2-next=p1-next; printf(删除:%sn,ci); n=n-1; else printf(%s 未找到! n,ci); end: return(head)

18、;/修改struct dictionary *correct(struct dictionary *head,char ci30)struct dictionary *p1,*p2; if(head=NULL) printf(输入错入!n); goto end; p1=head; while(strcmp(ci,p1-ci)!=0&p1-next!=NULL) p2=p1;p1=p1-next; if(strcmp(ci,p1-ci)=0) printf(输入新的单词信息:n); printf(请输入单词:); scanf(%s,p1-ci); printf(请输入汉字:); scanf(%s

19、,p1-han); printf(请输入解释:); scanf(%s,p1-jie); printf(修改后的信息为:n); printf(n); printf(单词 汉字 解释 ); printf(%s %s %s n,p1-ci, p1-han,p1-jie);printf(n); end: return(head);/插入struct dictionary *insert(struct dictionary *head, struct dictionary *chee) struct dictionary *p0,*p1,*p2;p1=head;p0=chee;if(head=NULL)

20、head=p0;p0-next=NULL;elsewhile(strcmp(p0-ci,p1-ci)0&(p1-next!=NULL)p2=p1;p1=p1-next;if(strcmp(p0-ci,p1-ci)ci,p1-ci)=0)if(head=p1)head=p0;elsep2-next=p0;p0-next=p1;elsep1-next=p0;p0-next=NULL;n=n+1;return(head);/通过单词查找struct dictionary *search(struct dictionary *head,char ci20)struct dictionary *p1,*

21、p2; if (head=NULL) printf(nlist null!n);goto end; p1=head; while(strcmp(ci,p1-ci)!=0&p1-next!=NULL) p2=p1;p1=p1-next; if(strcmp(ci,p1-ci)=0) printf(单词信息为:n); printf(n); printf(单词 汉字 解释);printf(%s %s %s n,p1-ci, p1-han,p1-jie);printf(n); else printf(错误输入!n); end: return(head);/通过汉字查找struct dictionary

22、 *seek(struct dictionary *head,char han20)struct dictionary *p1,*p2; if (head=NULL) printf(nlist null!n);goto end; p1=head; while(strcmp(han,p1-han)!=0&p1-next!=NULL)p2=p1;p1=p1-next; if(strcmp(han,p1-han)=0) printf(单词信息为:n); printf(n);printf(单词 汉字 解释); printf(%s %s %s n,p1-ci, p1-han,p1-jie);printf

23、(n); else printf(输入错误!n); end: return(head);/保存void save(struct dictionary *head)struct dictionary *p1;FILE *fp;if(fp=fopen(dictionary.txt,w+)=NULL)printf(不能打开!n);return;for(p1=head;p1!=NULL;p1=p1-next)if(fwrite(p1,sizeof(struct dictionary),1,fp)!=1)printf(写入错误!n);fclose(fp);/读取struct dictionary *lo

24、ad(struct dictionary *head)struct dictionary *p1,*p2;FILE *fp;if(fp=fopen(dictionary.txt,a+)=NULL)printf(不能打开!n);return head;n=0;p1=p2=(struct dictionary *)malloc(LEN);head=NULL;while(1)if(fread(p1,sizeof(struct dictionary),1,fp)=1)n=n+1;if(n=1)head=p1;else p2-next=p1;p2=p1;p1=(struct dictionary *)m

25、alloc(LEN);elsebreak;fclose(fp);return(head);/主函数void main() struct dictionary *head,*dict; char del_ci20,cor_ci20,sea_ci20,se_han20;int a; domenu();printf(输入你想选择的内容:);scanf(%d,&a);switch(a)case 1: head=creat();print(head);break;case 2:printf(n输入要删除的单词信息: );scanf(%s,del_ci);while(strcmp(del_ci,0)!=0

26、)head=del(head,del_ci);print(head);printf(n输入要删除的单词信息:);scanf(%s,del_ci);break;case 3:printf(n输入要修改的单词信息:); scanf(%s,cor_ci); while(strcmp(cor_ci,0)!=0) head=correct(head,cor_ci); print(head); printf(n输入要修改的单词信息:); scanf(%s,cor_ci);break; case 4: printf(输入要插入的信息:);dict=(struct dictionary *)malloc(LE

27、N);printf(请输入单词:); scanf(%s,dict-ci); printf(请输入汉字:); scanf(%s,dict-han); printf(请输入解释:); scanf(%s,dict-jie); while(strcmp(dict-ci,0)!=0) head=insert(head,dict); print(head); printf(输入要插入的信息:); dict=(struct dictionary *)malloc(LEN); printf(请输入单词:); scanf(%s,dict-ci); printf(请输入汉字:); scanf(%s,dict-ha

28、n); printf(请输入解释:); scanf(%s,dict-jie); ;break;case 5:printf(n输入要查找的单词信息:);scanf(%s,sea_ci);while(strcmp(sea_ci,0)!=0)head=search(head,sea_ci);scanf(%s,sea_ci);break;case 6: printf(n输入要查找的单词信息:);scanf(%s,se_han);while(strcmp(se_han,0)!=0)head=seek(head,se_han);printf(n输入要查找的单词信息:);scanf(%s,se_han);break;case 7:save(head);break;case 8:head=load(head);print(head);break;while(a!=9);printf(谢谢使用!n);完成日期:2009年7月

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!