电子英汉字典.docx

上传人:牧羊曲112 文档编号:2093228 上传时间:2023-01-09 格式:DOCX 页数:30 大小:326.38KB
返回 下载 相关 举报
电子英汉字典.docx_第1页
第1页 / 共30页
电子英汉字典.docx_第2页
第2页 / 共30页
电子英汉字典.docx_第3页
第3页 / 共30页
电子英汉字典.docx_第4页
第4页 / 共30页
电子英汉字典.docx_第5页
第5页 / 共30页
点击查看更多>>
资源描述

《电子英汉字典.docx》由会员分享,可在线阅读,更多相关《电子英汉字典.docx(30页珍藏版)》请在三一办公上搜索。

1、课程设计(论文)说明书 课 题: 电子英汉字典 学 院: 电子工程与自动化 专 业: 测控技术与仪器 学生姓名: 覃 娇 容 学 号: 1100820304 指导老师 : 陈 寿 宏 摘要英汉字典作为一个常用的学习工具,是我们经常要使用的。运用C语言编写程序,使得系统能完成一个简单的电子英汉词典的功能,如:单词的查找、增词、删除、修改和保存等功能。关键字:C语言、电子英汉字典、查找、增词、删除、修改、保存、显示目录1 设计任务与要求42 总体设计43 详细设计5 3.1 设计思路5 3.2 各功能模块实现的具体流程5 3.2.1 菜单显示5 3.2.2 查找6 3.2.3 增加8 3.2.4

2、删除9 3.2.5 修改11 3.2.6 显示13 4 调试分析15总结与心得20参考文献21附录2230 电子英汉字典设计1 设计任务与要求:该设计要求实现简单电子英汉字典的功能,具体管理操作包括单词的添加、显示、查找、删除、修改和保存等。(1) 使用结构体实现,每个数据的结构应包括:单词的英文拼写,单词的中文释义。(2) 系统功能: A.词条录入:即添加单词记录。 B.信息显示:将所有的单词按字母顺序显示。 C.词条修改:对已经输入的单词信息进行修改。 D.词条删除:删除某个单词记录。 E.单词查询:输入单词英文拼写,输出该单词的中文释义。 F.信息保存:将单词信息保存到文件。 G.退出系

3、统。2 总体设计 系统功能分析:本系统可以实现词条录入、信息显示、词条修改、词条删除、单词查询、信息保存、退出系统等功能。系统功能模块图如图2.1、图2.2所示。主函数主函数删除退出修改显示增加查找图2.1系统功能模块图(1)开始显示菜单输入指令 输入其他输入5输入4输入3输入2输入1显示修改删除增加查找退出继续输入指令图2.2系统功能模块图(2)3 详细设计3.1 设计思路:根据设计任务与要求,该设计主要实现简单电子英汉字典的功能。具体实现单词的录入、显示、查找、修改、删除、保存与退出等功能。单词录入之后将自动保存到文件中,然后调用显示函数,将保存在文件中的单词信息按照单词字母顺序排序前后显

4、示出来。调用查找函数,可以查找保存在文件中的单词信息并显示出来。调用修改函数,可以对保存在文件中的信息进行修改。调用删除函数,可以对保存在文件中的信息进行修改。3.2 各功能模块实现的具体流程:3.2.1 菜单显示:打开运行窗口,进入菜单显示页面。根据菜单的提示,选择继续执行或者是退出。 switch (a)case 1:Search(); break;/查找case 2:Append(); break;/添加case 3:Delete(); break;/删除case 4:Update(); break;/修改case 5:Display(); break;/显示default :break

5、;/退出根据菜单提示,输入a,选择要执行的指令。具体流程如图3.2.1所示。开始菜单显示输入aa=1 a=2 a=3 a=4 a=5 a=其他 删除退出 显示修改增加查找 图3.2.1菜单显示流程图3.2.2 查找:选择查找指令后,提示你输入要查找的单词。输入要查找的单词后,开始判断文件中是否存在此单词,若存在则显示出此单词及其意译,否则提示不存在此单词,然后提示你是否继续执行。可以进行显示也可以到你所建立的文本文档里查看是否存在你所要查找的单词。 fp = fopen(G:file.txt, rb);for (i=0; iW; i+)fread(&wordi, sizeof (struct

6、zidian), 1, fp);if (strcmp(wordi.danci, chazhao) = 0) printf(%st%sn, wordi.danci, wordi.yisi);printf(继续执行请输入指令,否则退出程序n);scanf(%d, &a);break;fclose(fp);if (i = W)printf(不存在此单词!n);printf(继续执行请输入指令,否则退出程序n);scanf(%d, &a); 将要查找的单词跟文件中存有的单词进行比较,若文件中存在所要查找的单词,则输出该单词及其意译,否则输出“不存在此单词!”。具体流程如图3.2.2所示。开始菜单显示输

7、入要执行的指令输出“不存在此单词”输入1进行查找指令输入非1进行其他指令输入要查找的单词是否存在该单词否 是输入该单词及其意译 图3.2.2查找模块的流程图我的查找方法是:将保存在文件中的单词内容读出,然后将要查找的单词与之进行一一比较。这一方法非常笨拙。较好的方法可以是:先将保存在文件中的单词进行排序,然后用二分查找的方法来进行查找。这一查找方法是较好的,可是之前没有想到,后来老师问起才想起这一方法。今后有机会,我一定再改改这算法。3.2.3 增加:选择录入单词的指令,提示你录入要添加的单词,如果文件里面存储的单词达到W(在程序中我设W=20)个了,就会提醒你“储存已满,不能增词”。如果没有

8、超过,那就引导你输入你想增加的单词及其意思。若你所增加的单词之前已经存储,就会提醒你“已存在此单词”,否则即可成功增加单词。后面还会提示你是否继续执行。可以进行显示也可以到你所建立的文本文档里查看是否存在你所要查找的单词。fp = fopen(G:file.txt, a);/添加单词时以追加的方式打开文件。fread(&wordi, sizeof (struct zidian), 1, fp);if (strcmp(wordi.danci, zengci) = 0) printf(已存在此单词!n); printf(继续执行请输入指令,否则退出程序n); scanf(%d, &a); brea

9、k;/判断文件中是否已存在所要添加的单词,若已存在则提示“已存在此单词”。fwrite(&wordi, sizeof (struct zidian), 1, fp); fclose(fp);/否则,将所要添加的单词写入文件中进行保存。具体流程如图3.2.3所示。在比较单词是否存在时也是与查找的方法一样,也是进行一一比较。其实,我也可以先将文件中的单词进行排序然后再用二分查找的方法来比较的查找的。这样的话,时间复杂度就要比我所用的那种一一比较的方法小得多。开始菜单显示输入要执行的指令输入2进行增加指令输入非2进行其他指令输出“已存在此单词”输入要增加的单词是否存在该单词是 否输入该单词及其意译将

10、所添加单词及其意译保存至文件中 图3.2.3增加模块的流程图3.2.4 删除:选择删除指令,出现“请输入需要删除的单词”,后面输进你想删除的单词,然后根据提示语输入单词,若输入的单词在文件中不存在则会提醒你“不存在此单词”。否则就会告诉你成功删除了。且之后会提示你是否继续执行。可以进行显示也可以到你所建立的文本文档里查看是否删除成功。fread(&wordi, sizeof (struct zidian), 1, fp);if (strcmp(wordi.danci, shanchu)=0)/要删除的单词存在,进行删除 t = 1;k = i;printf(确定要删除请输入3,否则退出程序n)

11、;scanf(%d, &a);if (3 = a)for (j=0; jD;j+)wordi.dancij = 0;wordi.yisij= 0;for (i=k; wordi+1.danci0 !=0; i+)strcpy(wordi.danci, wordi+1.danci);strcpy(wordi.yisi, wordi+1.yisi);for(j=0; jD;j+)wordi+1.dancij = 0;wordi+1.yisij= 0;if (i = W)/否则提示不存在此单词printf(不存在此单词!n);printf(继续执行请输入指令,否则退出程序n);scanf(%d, &

12、b);for (i=0; iW; i+)/加入这一部分才能成功删除,否则无法删除 fread(&wordi, sizeof (struct zidian), 1, fp); fclose(fp);fp = fopen(G:file.txt, wb); for (i=0; wordi.danci0 != 0; i+) fwrite(&wordi, sizeof (struct zidian), 1, fp);fclose(fp);具体流程如图3.2.4所示。开始菜单显示输入要执行的指令输入3进行删除指令输入非3进行其他指令输出“不存在此单词”输入要删除的单词是否存在该单词否 是是否确定删除 否

13、进行删除操作 是图3.2.4删除模块流程图3.2.5 修改:选择修改指令。会出现“请输入需要修改的单词”的提示语,后面输进你想修改的单词,若此单词不存在,系统将会提示你“不存在此单词”,否则,会提示你是修改单词还是意译,然后,系统会根据你的选择,提示你输入单词或者意译,之后就会告诉你修改完成了。后面还会提示你是否继续执行。可以进行显示也可以到你所建立的文本文档里查看是否修改成功 。fread(&wordi, sizeof (struct zidian), 1, fp);if (strcmp(wordi.danci, xiugai) = 0)/要修改的单词存在printf(修改单词输入41,修改

14、意译输入42n);scanf(%d, &a);if (a = 41)for (j=0; jD;j+)wordi.dancij = 0;printf(请输入修改后的单词n);scanf(%s, xiugaih);strcpy(wordi.danci, xiugaih);/修改单词fclose(fp);if (a = 42)for (j=0; jD;j+)wordi.yisij= 0;printf(请输入修改后的意译n);scanf(%s, xiugaihy);strcpy(wordi.yisi, xiugaihy);/修改意思fclose(fp);printf(修改成功!n);printf(继续

15、执行请输入指令,否则退出程序n);scanf(%d, &b);break;fclose(fp);if (i = W)/不存在要修改的单词 printf(不存在此单词!n);printf(继续执行请输入指令,否则退出程序n);scanf(%d, &b); for (i=0; iW; i+)/加入这一部分才能成功修改,否则无法修改 fread(&wordi, sizeof (struct zidian), 1, fp); fclose(fp);fp = fopen(G:file.txt, wb); for (i=0; wordi.danci0 != 0; i+) fwrite(&wordi, si

16、zeof (struct zidian), 1, fp);fclose(fp);具体流程如图3.2.5所示。开始菜单显示输入要执行的指令输入4进行修改指令输入非4进行其他指令输出“不存在此单词”输入要修改的单词是否存在该单词否 是 保存修改修改单词或者是意译 图3.2.5修改模块流程图3.2.6 显示:选择显示指令。会按照字母顺序排序前后显示单词及其意译。 fread(&wordi, sizeof (struct zidian), 1, fp);for (j=0; wordj.danci0!=0; j+)for (i=j+1, k=j; wordi.danci0!=0; i+) if(strc

17、mp(wordi.danci, wordk.danci)0)/比较单词大小k = i;/记录下小的那一个单词的下标strcpy(t, wordj.danci); /比较完之后,进行排序strcpy(t1, wordj.yisi);strcpy(wordj.danci, wordk.danci);strcpy(wordj.yisi, wordk.yisi);strcpy(wordk.danci, t);strcpy(wordk.yisi, t1);printf(%st%sn, wordj.danci, wordj.yisi);fclose(fp);具体流程如图3.2.6所示。开始菜单显示输入要执

18、行的指令输入5进行显示指令输入非5进行其他指令进行排序并显示 图3.2.6排序显示模块流程图排序的方法是:冒泡排序法。即第一趟比较先将最小的找出来放至数组中的第一个位置,接下来找次小的放到第二个位置,接下去同理,直到排完为止。此算法简单容易实现且易于理解,但是时间复杂度较大,在这一点上不是很好。要是能够用到数据结构中的链表来实现排序的话会好很多。可是,我不精于数据结构,所以,我只能用最简单易于实现的算法来实现了。今后我会好好弥补此方面的不足,争取用更好的算法来实现。对于力所能及者,我还是建议用链表来实现。 4 调试分析*进入菜单页面:进入菜单页面后:有六个选项,1.是查找单词;2.是增加单词;

19、3.删除单词;4.是修改单词;5.是按字母顺序显示单词;其他则是退出。* 单词录入:输入2,按回车就进入增词的程序了。如果里面存储的单词达到W(在程序中我设W=20)个了,就会提醒你“储存已满,不能增词”。如果没有超过,那就引导你输入你想增加的单词及其意思。若你所增加的单词之前已经存储,就会提醒你“已存在此单词”,否则即可成功增加单词。后面还会提示你是否继续执行。 *按照字母顺序显示单词及其意译: 输入5,回车。然后系统就会按照字母顺序排序前后显示单词及其意译。 * 查找单词:进入菜单,输入1 ,按回车。就会出现提示语“请输入要查找的单词:”,然后输入你想查询的单词,并按回车。如果存储有这个单

20、词就会输出这个单词和它的中文意思,并提示你是否继续执行。如果你输入的单词不存在,就提示你“不存在此单词”,后面还会提示你是否继续执行。 * 修改单词: 输入4,回车。会出现“请输入需要修改的单词”的提示语,后面输进你想修改的单词,若此单词不存在,系统将会提示你“不存在此单词”,否则,会提示你是修改单词还是意译,然后,系统会根据你的选择,提示你输入单词或者意译,之后就会告诉你修改完成了。后面还会提示你是否继续执行。 修改前后对比:修改前:修改后:* 删除单词:输入3,回车。在出现“请输入需要删除的单词”,后面输进你想删除的单词,然后根据提示语输入单词,若输入的单词不存在则会提醒你“不存在此单词”

21、。否则就会告诉你成功删除了。且之后会提示你是否继续执行。删除前后对比:删除前:删除后:总结与心得该设计要求实现简单电子英汉字典的功能,具体管理操作包括单词的添加、显示、查找、删除、修改和保存等。其中涉及到对文件进行读、写、追加等操作。而之前对于文件不太了解,所以在对文件操作过程中有一定的困难。不过正是有困难才会让我们想方设法去克服困难。刚开始,我对文件的操作是一窍不通,于是我就去查看大量有关于文件操作的资料,以及一些别人写的有关于文件的程序。同时也在反思为何别人能做到,我却不知从何处开始,于是我便尝试自己设计一个程序。经过几个夜晚冥想与数次上机操作,程序初步能够运行。但实用度很底,数据修改,增

22、减都是临时的,退出程序后不能保存。所查的单词也只能是机构体中输入的单词,查阅范围有限。经过老师的一番指导,我也找到了初步解决的方案以文件的形式保存词条,这样就能初步保存修改后的词典。再经过后来的种种努力,终于可以实现基本要求。在这一周多的课程设计中,虽然设计不是一路畅通,从一开始的错误重重,几经周转,到最后能够运行程序,并能够查阅、显示、删除、修改。而且,通过这一课设,我对文件操作也有了一定的了解。我很享受这个过程,为最终能够运行程序,感到由衷的欣喜,但程序中存在种种不足还需通过更深一步的学习,不断完善。我会在今后的日子里,努力学好C语言,并使C语言成为自己的长项。同时,在此感谢此次课程设计过

23、程中给予我们悉心指导的陈寿宏老师,同时也感谢其他同学,因为有老师和同学的帮助,我才能克服各种各样的难题成功完成了这次课程设计。同时更感谢学校给我们提供的这次课设机会,让我们学到了很多知识,提高我们的编程能力。参考文献1刘丕顺等著.C语言宝典(第二版).北京:电子工业出版社,20112谭浩强著.C语言设计(第四版). 北京:清华大学出版社,20103林锐著.高质量C程序设计指南.北京:电子工业出版社,2012附录(一)主要源程序:#include#include#include#define W 20#define D 10FILE *fp;void Search();/查找void Appen

24、d();/添加void Delete();/删除void Update();/修改void Display();/显示void MyClear();/清空struct zidianchar danciD;char yisiD; wordW; /菜单显示:int main()int a;printf(*电子英汉字典 *nn);printf( 作者:覃娇容 学号:1100820304nn);printf(*查找单词请输入 1*n);printf(*增加单词请输入 2*n);printf(*删除单词请输入 3*n);printf(*修改单词请输入 4*n);printf(*按字母顺序显示单词请输入5

25、*n);printf(*输入其他则退出 *n); scanf(%d, &a);switch (a)case 1:Search(); break;case 2:Append(); break;case 3:Delete(); break;case 4:Update(); break;case 5:Display(); break;default :break;return 0;/清空void MyClear()int i=0, j;for(i=0; iW; i+)for(j=0; jD; j+)wordi.dancij = 0;wordi.yisij = 0;/(一)显示void Display

26、()int a, i, j, k, temp;char tD, t1D; MyClear();fp = fopen(G:file.txt, r);printf(未排序之前为:n); for (i=0; iW; i+)fwrite(&wordi, sizeof(struct zidian), 1, fp);fclose(fp); fp = fopen(G:file.txt, rb);for (i=0; iW; i+)fread(&wordi, sizeof(struct zidian), 1, fp);printf(%st%sn, wordi.danci, wordi.yisi);fclose(

27、fp);fp = fopen(G:file.txt, rb);printf(排序之后为:n);for (i=0; iW; i+)fread(&wordi, sizeof(struct zidian), 1, fp);for (j=0; wordj.danci0!=0; j+)for (i=j+1, k=j; wordi.danci0!=0; i+)if (strcmp(wordi.danci, wordk.danci)0)temp = k;k = i;strcpy(t, wordj.danci);strcpy(t1, wordj.yisi);strcpy(wordj.danci, wordk.

28、danci);strcpy(wordj.yisi, wordk.yisi);strcpy(wordk.danci, t);strcpy(wordk.yisi, t1);printf(%st%sn, wordj.danci, wordj.yisi);fclose(fp);printf(n);printf(继续执行请输入指令,否则退出程序n);scanf(%d, &a);break;switch(a)case 1:Search(); break;case 2:Append(); break;case 3:Delete(); break;case 4:Update(); break;case 5:D

29、isplay(); break;default :break;/(二)查找:void Search()int a, i; dochar chazhaoD;printf(请输入要查找的单词:);scanf(%s, chazhao);fp = fopen(G:file.txt, rb);for (i=0; iW; i+)fread(&wordi, sizeof(struct zidian), 1, fp);if (strcmp(wordi.danci, chazhao) = 0)printf(%st%sn, wordi.danci, wordi.yisi);printf(继续执行请输入指令,否则退

30、出程序n);scanf(%d, &a);break;fclose(fp);if (i = W)printf(不存在此单词!n);printf(继续执行请输入指令,否则退出程序n);scanf(%d, &a);while (1 = a);switch(a)case 2:Append(); break;case 3:Delete(); break;case 4:Update(); break;case 5:Display(); break;default :break;/(三)添加:void Append()int a, i, k;char zengciD, zengcimD;dofp = fop

31、en(G:file.txt, r);for(i=0; iW; i+)fread(&wordi, sizeof(struct zidian), 1, fp);fclose(fp);fp = fopen(G:file.txt, a);if (wordW-1.danci0 = 0)for (i=0; iW; i+)if (wordi.danci0 != 0)continue;elsek = i;printf(请输入需要增添的单词n);scanf(%s, zengci);fp = fopen(G:file.txt, a);if(k != 0)for (i=0; ik; )fread(&wordi, s

32、izeof(struct zidian), 1, fp);if(strcmp(wordi.danci, zengci) = 0)printf(已存在此单词!n);printf(继续执行请输入指令,否则退出程序n);scanf(%d, &a);break;else i+;if(i = k) i = k;fp = fopen(G:file.txt, a);printf(请输入意译n);scanf(%s, zengcim);strcpy(wordi.danci, zengci);strcpy(wordi.yisi, zengcim);printf(成功增添!n);printf(%st%sn,wordi.danci,wordi.yisi);printf(继续执行请输入指令,否则退出程序n);fwrite(&wordi, sizeof (struct zidian), 1, fp);fclose(fp);scanf(%d, &a);break; break; if (wordW-1.danci0 != 0)printf(存储已满,不能增词)

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号