收藏 分销(赏)

电子英汉词典设计.doc

上传人:精*** 文档编号:2769129 上传时间:2024-06-05 格式:DOC 页数:45 大小:264.54KB 下载积分:14 金币
下载 相关 举报
电子英汉词典设计.doc_第1页
第1页 / 共45页
电子英汉词典设计.doc_第2页
第2页 / 共45页


点击查看更多>>
资源描述
(完整word版)电子英汉词典设计 课 程 设 计 报 告 课程名称 C语言程序设计 课题名称 电子英汉词典设计 专 业 ********* 班 级 14 ******* 学 号 ************* 姓 名 ****** 指导教师 ****** 2016年 1月 10日 35 ******* 课 程 设 计 任 务 书 课程名称 C语言程序设计 课 题 电子英汉词典设计 专业班级 *************** 学生姓名 ****** 学 号 ************ 指导老师 **** 审 批 任务书下达日期 2015年 12月 27日 任务完成日期 2016年 1月 10日 C语言课程设计任务书 设计课题五:电子英汉词典设计 一、问题描述: 英汉词典作为一个常用的学习工具,是我们经常要使用的。该系统能完成一个简单的电子英汉词典的功能,如:单词的查找、增词、删除、修改和维护等工作。 二、功能描述: 1、在计算机中建立有限规模的电子英汉词典(文件),利用程序实现电子英汉词典的查找、增词、删除、修改和维护工作。 2、词典的内容为:每行对应一个词条,每个词条由两个字符串组成,字符串用若干空格符分开;前一个是单词字符串(英文),后一个是释义字符串(中文),使用分号作为多个释义的分隔符(无空格)。 3、对单词和释义字符串长度的限定分别为不少于20个与40个字符,词条数限定为不多于200条。 4、采用菜单工作方式。在一个操作执行之后,程序询问是否继续执行该操作。如输入Y或y,则重复同一操作,不退回到菜单;如输入其它信息,则回到菜单等待另一次选择。仅当选择退出操作时,程序应询问是否将修改后的词典存盘,并根据用户选择存盘退出或不存盘退出。 5、要求整个设计以人为本,用户界面友好。 三、算法提示: 1、数据结构:结构体数组 2、简单的程序设计 3、友好的窗口菜单的设计 四、测试数据: 要求被选用的词条有200个左右,以中学的单词为主。 五、其它: 对该系统有兴趣的同学可以在实现系统基本功能后,完善系统的其它功能。 目 录 第一章 绪论 1 1.1 课程背景 1 1.2 本文所做工作 1 第二章 需求分析 2 2.1 需求获取 2 2.2 需求建模 2 2.3 需求评审 2 2.4 层次方框图 3 第三章 总体设计 4 3.1 程序模块 4 3.2 函数分析 4 3.3 总体结构 5 第四章 详细设计 6 4.1 主函数main() 6 4.2 添加单词函数add() 6 4.3 查询单词函数look() 6 4.4 删除函数dele() 7 4.5 修改函数change() 7 4.6 浏览函数all() 7 4.7 保存函数store() 8 4.8 退出函数exit() 8 4.9 初始化函数init() 8 第五章 测试 9 5.1 主菜单 9 5.2 单词的录入 9 5.3 单词查询 9 5.4 显示词条 9 5.5 修改单词 10 5.6 删除功能 10 5.7保存记录 10 5.8 退出系统 11 5.9 打开文本 11 第六章 使用说明 12 第七章 总结 13 附录A 源代码 15 附录B 参考资料 21 第一章 绪论 《C语言程序设计》课程设计是对学生的一种全面综合训练,它包括问题分析,总体结构设计,用户界面设计,程序设计基本技能和技巧,多人合作,以至一整套软件工作规范的训练和科学作风的培养。是与课堂听讲、自学和练习相辅相成的必不可少的一个教学环节。通常,课程设计的课题比平时的习题复杂得多,也更接近实际。课程设计着眼于与应用的结合点,使学生学会如何把书上学到的知识用于解决实际问题,培养软件工作所需要的动手能力;另一方面,能使书上的知识变“活”,使学生更好地深化理解和灵活掌握教学内容。为了达到上述目的,本课程设计安排了八个设计课题,训练重点在于基本的程序设计方法和分析问题的能力,而不强调面面俱到。 1.1 课程背景 英汉词典作为一个常用的学习工具,是我们经常要使用的。电子英汉词典设计系统能完成一个简单的电子英汉词典的功能,方便我们查询和记录单词,给我们学习英语提供帮助,同时也激发了我们对学习英语的兴趣。 1.2 本文所做工作 翻阅与编程、项目开发和软件工程的书籍,确定好要制作电子英汉词典设计系统的目标,例如通过这个系统能满足查询、增词等功能的使用。同时要清楚好各个功能之间的关系,及确立好整体的结构。 首先要考虑如下几个问题:如何实现增加单词、删除单词的功能,如何将单词和释义从文件中读取出来并准确无误的显示在显示器上,如何将主菜单始终显示出来不变动位置,如何实现友好化窗口等等,这些都是需要考虑的问题。因此,翻阅了软件工程、项目开发的书籍后,将增加词汇、查询词汇、删除词汇、修改词汇和显示词汇等作为一个个独立的模块进行开发和建立,这样以main函数为主体便有了整体的构造,例如在查询、增词、删除的函数内,都涉及到是否目标搜寻,因此可在其中设置for循环语句,利于逐个搜寻,知道找到目标词汇。另外一个难点就是文件了,利用结构体数组记录所有单词,用fprintf函数再将信息传至文件中。当需要读取文件中的信息时,再用fscanf函数一一将文件中的信息传递给结构体数组内。根据用户的需求,便可以自由的增加、删除单词了。 另外在主函数中加入system(“cls”)可以将显示屏进行清屏处理,再利用whlie(1)语句始终为真,便可将主菜单保持在屏幕的正上方,知道用户要求退出系统,用exit(0)即可退出。 从整体布局到部分的每个模板的设计,再回到整体将所有模块联系在一起。大致的工作便完成了。 第二章 需求分析 需求分析是对用户的业务系统进行调查、分析,对新系统逻辑功能和实现方案进行讨论、评估、综合与协商的阶段。需求分析活动大致分为三个阶段:需求获取、分析建模、需求评审。 2.1 需求获取 电子英汉词典的主要功能是进行单词的查询,来满足用户对于单词释义的需求。而将其衍生出来的就有增加难度大的词和陌生的单词、删除已掌握其用法的简单单词、修改其单词的原本释义或者丰富单词原本的释义、记录系统对单词的操作以及方便下次使用等需求。根据不同的需求建立不同的模块函数来满足需求。输入输出的要求:采用菜单工作方式。在一个操作执行之后,询问是否继续执行该操作。仅当选择退出操作时,程序应询问是否将修改后的词典存盘,并根据用户选择存盘退出或不存盘退出。要求整个设计以人为本,用户界面友好。 2.2 需求建模 由于用户群体的各个用户往往会从不同的角度、不同的抽象级别中阐述他们对原始问题的理解和对目标软件的需求,因此,有必要为原始问题及目标软件及目标软件建立逻辑模型。电子英汉词典程序的功能模型如下: (1)查询单词 (2)增加单词 (3)删除单词 (4)修改单词 (5)显示所有单词 (6)记录数据 (7)退出程序 (8)从文件中读取单词 2.3 需求评审 (1)一致性 模块与模块之间都有精确紧密的联系。 (2)完整性 所有相关功能基本具备,完整性较好。 (3)现实性。 可以实现单词的查询、增添、删除、修改等功能。 (4)有效性。 输入指令即会弹出相应的操作提示,能解决用户的问题。 2.4 层次方框图 如下图 2-1所示。 存储信息 图 2-1 存储信息 增添单词信息 存储信息 存储信息 删除单词信息 查询单词信息 修改单词信息 判断是否储存 文件中未存单词信息 文件中已存在单词信息 单词信息 第三章 总体设计 3.1 程序模块 主 函 数: main() 初始化函数: init() 查找函数: look() 增加函数: add() 删除函数: dele() 修改函数: change() 浏览函数: all() 存储函数: store() 结束函数: exit() 返回函数: return() 3.2 函数分析 增加函数:能够随时增加想要增加的单词。 查找函数:能够随时查找某个单词。 删除函数:能够删除某单词信息。 修改函数:能随时修改单词信息。 浏览函数:能够浏览所有单词。 存储函数:能把修改后的信息存储在文件中。 3.3 总体结构 如图3-1所示。 图3-1 第四章 详细设计 4.1 主函数main() 为主菜单页面,从页面中可以看到,里面包含7个功能选项的函数,其中还有隐藏的函数system(“cls”)用于将界面清屏,使得主菜单始终处于最上方的位置。其次,利用switch语句实现各函数的调用,根据系统提示输入的数字选项来调用相应的函数。如图 4-1所示。 图 4-1 4.2 添加单词函数add() 先输入一个单词,再进行判断该单词是否存在,若存在,则会出现相应的提示,并返回主菜单,若不存在,则提示输入中文释义。添加成功返回主菜单。如图 4-2所示。 图 4-2 4.3 查询单词函数look() 先输入一个单词,再进行判断该单词是否存在,若存在,则会弹出释义,若不存在,则会出现相应的提示,并返回主菜单。如图 4-3所示。 图 4-3 4.4 删除函数dele() 将该单词的位置用后一个单词取代,依次循环,把最后一个单词取空 先输入一个单词,再进行判断该单词是否存在,若不存在则会提示不存在,若存在,则会删除该单词和它的释义。 如图 4-4所示。 存在 提示已删除单词 判断是否存在该单词 删除单词 不存在 提示不存在该单词 返回 主菜单 图 4-4 4.5 修改函数change() 先输入一个单词,再进行判断该单词是否存在,若不存在则会提示不存在,若存在,则会提示输入新的单词释义。如图4-5所示。 显示原释义,提示输入新的释义 存在 提示修改成功 判断是否存在该单词 修改单词 不存在 返回 提示不存在该单词 图 4-5 主菜单 4.6 浏览函数all() 将显示所有的文件中单词且会统计单词个数。 4.7 保存函数store() 利用fscanf函数将结构体数组中的数据保存到指定文件中。如图 4-6所示。 结构体数组对应的单词和释义信息 信息保存 用“只写”的方式打开文件 将信息传递给文件 返回 主菜单 用fprintf记录文件 提示保存成功 图 4-6 图 4-5 4.8 退出函数exit() 退出系统。 4.9 初始化函数init() 打开程序时,自动将文件中的单词信息传递给结构体数组中。 第五章 测试 5.1 主菜单 程序运行的主菜单,如图4-1所示。 图4-1 5.2 单词的录入 单词的录入,如图4-2所示。 图 4-2 5.3 单词查询 单词的查询,如图4-3所示。 图 4-3 5.4 显示词条 显示词条,验证是否录入保存,如图4-4所示。 图 4-4 5.5 修改单词 修改单词功能,如图4-5所示。 图 4-5 显示单词,验证是否修改,如图4-6所示。 图 4-6 5.6 删除功能 单词的删除功能,如图4-7所示。 图 4-7 显示词条,验证单词是否被删除,如图4-8所示。 图 4-8 5.7保存记录 保存记录,如图4-9所示。 图 4-9 5.8 退出系统 退出系统操作,如图4-10所示。 图 4-10 5.9 打开文本 打开文本文件的记录,如图4-11所示。 图 4-11 第六章 使用说明 首先打开‘电子英汉词典.EXE’文件,会出现主菜单屏幕,其中有7个功能选项,分别是:添加单词、查询单词、删除单词、修改单词、总单词表、存储记录和退出程序。单词记录在D盘指定的‘data.txt’文件中,当D盘没有‘data.txt’文件,程序会在D盘自动新建一个。下面将逐一介绍每一个功能选项: 1.增加单词:按 1 ,再按回车键,即可输入新单词,再按回车键,输入单词的释义,再按回车键,返回主菜单。 2.查询单词:按 2 ,再按回车键,即可输入单词,再按回车键,将会显示已存的单词释义,再按回车键,返回主菜单。若未存该单词则会出现相应的提示,按任意键返回主菜单。 3.删除单词:按 3 ,再按回车键,即可输入单词,再按回车键,将删除已存的单词和释义,再按回车键,返回主菜单。若未存该单词则会出现相应的提示,按任意键返回主菜单。 4.修改单词:按 4 ,再按回车键,即可输入要修改的单词,再按回车键,输入新的单词释义,再按回车键,返回主菜单。若未存该单词则会出现相应的提示,按任意键返回主菜单。 5.总单词表:按 5 ,再按回车键,将显示文件已存的单词个数和所有单词和单词的释义;再按任意键后返回主菜单。 6.存储记录:按 6 ,再按回车键,将功能1、3、4修改后的信息让文件记录。(在相应的文本文件中可以看到)再按任意键后返回主菜单。 7.退出程序:按 7 ,再按回车键,将退出系统。 第七章 总结 课程设计是C语言教学中的一个重要的实践环节。因此,课程设计比课程教学、实验复杂一些,要求所涉及的内容有一定的深度和广度,并更加接近实际应用。通过课程设计的综合训练,培养了我们分析问题、编程和解决实际问题的能力,把理论与实践有机结合起来。.随着科学技术发展的日新日异,当今计算机应用在是生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握计算机开发技术十分重要的。 我的题目是电子英汉词典的设计,对于我们这些初学C语言的人来说,这是一个很大的考验,因为这不仅要求我们要熟悉C语言程序设计知识,还要求我们要掌握结构化程序设计的基本思路,利用所学的基本知识和技能,发挥自学能力和查找资料的能力,解决稍微复杂的结构化程序设计问题。在翻阅软件工程的书籍后,了解到在课程设计中追求的总体目标可概括为:选择适当的方法和工具,运用成熟的技术从事软件开发活动,最终实现提高软件产品质量和开发效率,得到可靠性高的,经济适用的、易维护的、满足用户需求的软件产品。 为实现这个总体目标,在软件项目实施过程中,针对分析、设计、编程、测试、维护等具体环节,总结出了一系列具体的目标,如追求高可靠性、可适应性、有效性、可理解性、可互操作性、可重用性、可追踪性和可维护性。这些目标不仅是分析活动、设计活动中追求的目标,也是衡量工作成果,评价产品质量优劣的目标。 回到我的这个题目上,在刚拿到这个题目的时候我的大脑是一片空白,为什么呢?虽然所学的知识都有了一个大致的了解和认识,但是都是零零散散的知识,没有一个系统的概括和总结。因此只能应付考试却不能做出其它的实践。怎么办呢?根据老师的提示,在图书馆内翻阅相关的书籍,其中一本是关于项目开发的,另一本是关于软件工程的。总之,这两本书提供了一种整体性的思维,从用户需求的角度来分析目标,为一个工程或项目提供了有序的工作方案。此外,我还在网上浏览到了往届学长学姐们做的课程设计,真可谓是独具匠心,虽说有些程序代码我看不懂,但是对于看得懂的地方,我觉得设计的非常巧妙,印证了C语言老师上课所说的代码能简则简的要求。可是呢?即使是找到了这么多资料,看了相关的书籍,可脑袋里还是一团乱麻,在学校的图书馆里,为了自己编出这个题目,待了整整一天,看电脑屏幕看着眼睛都花了,就是没任何结果。在这一周内,不停反复的实验,渐渐地对目标清晰了,而且还知道要模块化将每一个功能做好,然后再拼装起来,构成整体。 从完全不会,到慢慢摸索,再到建立雏形,再到调试程序,再到测试。整体算下来差不多一周的时间,在这段时间内我不仅把课程设计的任务完成了,而且还学到了许多课堂所没有的知识,学会了如何去整体性思考问题。 这次课程设计使我学会了很多,虽然其中遇到许多的困难,在上网查资料、翻阅书籍、与同学们相互讨论和向老师请教后,这些问题都被解决。这也使得我越来越有信心将一件事做好。再次感谢我的老师和同学们,因为有了你们的帮助与陪伴,才使得我更加坚信我能行,才有机会向成功迈开步伐。 附录A 源代码 #include <stdio.h> #include<string.h> #include<stdlib.h> //文件处理的头文件 #include<windows.h> //会用到清屏的功能 #include<conio.h> //使函数暂停而不立即返回(getch()) struct diction //结构体设置单词的两个变量:英文和释义(字符串) { char a[20],b[40]; };struct diction dict[200]; void init() //初值函数 { int i; FILE*fp; if((fp=fopen("D:\\data.txt","r"))==NULL) //判断D盘中是否存在一个data.txt文件 { printf("\n本地无单词文件data.txt \n系统将自动新建该文件至d盘中\n");//若无,则在D盘中新建一个这样的文件 fp=fopen("D:\\data.txt","w"); getch(); } for(i=0;i<200;i++) fscanf(fp,"%s %s\n",dict[i].a,dict[i].b); fclose(fp); } void add()//增加单词的函数 { int i; char c[20]; printf("请输入一个单词:"); scanf("%s",c); for(i=0;i<200;i++) { if(strcmp(dict[i].a,c)==0) { printf("\n已经存在该单词,它的中文释义为 %s\n",dict[i].b); printf("\n\n按任意键返回主菜单!"); getch(); break; } if(!*dict[i].a) { printf("请输入它的中文释义:"); scanf("%s",dict[i].b); strcpy(dict[i].a,c); printf("\n添加单词成功!!"); getch(); return; } } if(i>=200) { printf("\n\n磁条记录已满!"); printf("\n\n按任意键返回主菜单!"); getch(); return; } } void look()//寻找单词的函数 { int i; char d[20]; printf("请输入一个单词:"); scanf("%s",d); for(i=0;i<200;i++) { if(strcmp(dict[i].a,d)==0) { printf("%s 的中文释义为:%s",dict[i].a,dict[i].b); printf("\n\n按任意键返回主菜单!"); getch(); return; } if(!*dict[i].a) { printf("无该单词释义"); printf("\n\n按任意键返回主菜单!"); getch(); return; } } if(i>=200) printf("无该单词释义"); printf("\n\n按任意键返回主菜单!"); getch(); return; } void dele()//删除单词的函数 { int i,j; char e[20]; printf("请输入要删除的单词:"); scanf("%s",e); for(i=0;i<200;i++) { if(strcmp(e,dict[i].a)==0) { for(j=i;(*dict[j].a)&&(j<199);j++) { strcpy(dict[j].a,dict[j+1].a); strcpy(dict[j].b,dict[j+1].b); if(j>=198) { strcpy(dict[j+1].a,"\0"); strcpy(dict[j+1].b,"\0"); break; } } if(i>=199) { strcpy(dict[i].a,"\0"); strcpy(dict[i].b,"\0"); } printf("\n该单词已删除!"); printf("\n\n按任意键返回主菜单!"); getch(); return; } } if(i>=200) { printf("无该单词!!"); printf("\n\n按任意键返回主菜单!"); getch(); return; } } void change()//修改单词释义的函数 { int i; char f[20]; printf("请输入要修改的单词:"); scanf("%s",f); for(i=0;i<200;i++) { if(strcmp(f,dict[i].a)==0) { printf("单词原意是%s\n",dict[i].b); printf("请输入单词的修改的释义:"); scanf("%s",dict[i].b); printf("\n\n按任意键返回主菜单!"); getch(); return; } } if(i>=200) { printf("无该单词!!"); printf("\n\n按任意键返回主菜单!"); getch(); return; } } void all()//查看记录的所有单词 { int i,j; system("cls"); for(j=0;(*dict[j].a)&&(j<200);j++); printf("\n\t记录的单词数为%d个\n",j); printf("\n词库中所有单词如下:\n"); for(i=0;(*dict[i].a)&&i<200;i++) { printf("%s:%s\n",dict[i].a,dict[i].b); if((i+1)%20==0) { getch(); system("cls"); printf("\n\t记录的单词数为%d个\n",j); printf("当前显示的是第%d个单词:\n",i+2); } } getch(); } void store()//存储单词的信息至文件中 { int i; FILE*fp; if((fp=fopen("D:\\data.txt","w"))==NULL) { printf("\n单词文件无法被打开!\n"); getch(); return; } for(i=0;i<200;i++) fprintf(fp,"%s %s\n",dict[i].a,dict[i].b); printf("\n单词信息存储成功!!\n按任意键返回主菜单"); getch(); } void main() { char x; init(); while(1) { system("cls"); printf("\n\n 电子英汉词典 \n"); printf("\n\n ********************** 1.添加单词 *************************"); printf("\n\n ********************** 2.查询单词 *************************"); printf("\n\n ********************** 3.删除单词 *************************"); printf("\n\n ********************** 4.修改单词 *************************"); printf("\n\n ********************** 5.总单词表 *************************"); printf("\n\n ********************** 6.储存记录 *************************"); printf("\n\n ********************** 7.退出程序 *************************\n\n"); x=getchar(); switch(x) { case '1':add();break; case '2':look();break; case '3':dele();break; case '4':change();break; case '5':all();break; case '6':store();break; case '7':exit(0); } } exit(0); } 附录B 参考资料 C语言程序设计/陈世清主编、李杰君副主编 --上海交通大学出版社 C语言程序设计实践教程/陈世清主编、曹燚副主编 --上海交通大学出版社 软件工程初级教程/陶华亭主编、吴杰 王海燕副主编 --清华大学出版社 计算机与通信学院课程设计评分表 课题名称: 项 目 评 价 设计方案的合理性与创造性 设计与调试结果 设计说明书的质量 答辩陈述与回答问题情况 课程设计周表现情况 综合成绩 教师签名: 日 期:
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服