当前位置:文档之家› 电子英汉词典的设计

电子英汉词典的设计

C语言高级编程技术课程设计报告电子词典的设计指导老师:***班级:电子信息1611姓名:刘尧(2016111130)目录一.课程设计与要求-----------------------------------------------------------------31.1设计要求----------------------------------------------------------------------32.1设计目的----------------------------------------------------------------------3二.可行性分析------------------------------------------------------------------------3三.需求分析--------------------------------------------------------------------------33.1程序的功能------------------------------------------------------------------33.2输入输出的要求------------------------------------------------------------3四.总体设计与详细设计----------------------------------------------------------44.1程序功能模块---------------------------------------------------------------44.2课设涉及的数据------------------------------------------------------------44.3详细设计----------------------------------------------------------------------4五. 编码实现--------------------------------------------------------------------------65.1主函数和头文件定义------------------------------------------------------65.2程序的实现-------------------------------------------------------------------6六. 结果--------------------------------------------------------------------------------116.2.1英汉词典的输入界面----------------------------------------------------96.2.1选择功能,查找单词----------------------------------------------------96.2.3选择功能,增加单词----------------------------------------------------106.2.44选择功能,删除单词--------------------------------------------------106.2.5选择功能,修改单词----------------------------------------------------106.2.6选择功能,保存单词----------------------------------------------------106.2.7查看字典函数,退出----------------------------------------------------10七.总结归纳----------------------------------------------------------------------------11八.附录-----------------------------------------------------------------------------------12一、课程设计要求1.在计算机内建立有限规模的电子词典(txt文件),词典中包含有有限个英语单词(单词具有词性、中文词义)。

词典功能:(1)较为精确的查找单词;(2)能够修改单词;(3)能够增添或删除单词;(4)退出系统;具有显示界面,能够在执行操作后询问是否退出,并给出退出方法和继续执行操作的方法供使用者选择。

界面应尽量简明易懂。

2、设计目的全面熟悉、掌握C语言基本知识,掌握C程序设计中的顺序、分支、循环三种结构及数组、函数和C语言基本图形编程等方法,把编程和实际结合起来,增强对不同的问题运用和灵活选择合适的数据结构以及算法描述的本领,熟悉编制和调试程序的技巧,掌握分析结果的若干有效方法,进一步提高上机动手能力,培养使用计算机解决实际问题的能力,养成提供文档资料的习惯和规范编程的思想,为以后在专业课程中应用计算机系统解决计算、分析、实验和设计等学习环节打下较扎实的基础。

二、可行性分析本次要求为制作英汉电子词典,实现有限单词情况下的英译汉功能,是可以进行的,具有显示界面,能够在执行操作后询问是否退出,并给出退出方法和继续执行操作的方法供使用者选择。

界面应尽量简明易懂。

要求整个设计以人为本,用户界面简明,用词精确易懂。

三、需求分析1、程序功能:为满足客户的需求,需要实现电子英汉词典功能,要实现英译汉,查找单词,修改单词,增加单词,删除单词,显示单词,保存单词,返回,帮助,退出的功能,操作简单,用户界面友好。

2、输入输出要求:电子词典运行时,首先要执行的是打开电子词典的字库,读取字库类容添加到程序内存中的链表中。

该功能的完成在电子词典后台完成的,在电子词典的界面是无法看到的,因此当程序主界面显示出来的时候,该功能已经完成。

四、总体设计与详细设计1、程序功能模块2、课设涉及的数据电子词典程序定义了一个单词节点的结构体,该结构体包含的成员如下所示。

struct Dict //字典结构体定义{char * Englishword; //定义Englishword为字符型指针变量char * Chinese; //定义Chinese为字符型指针变量struct Dict * pNext; //pNext指向一个和它本身储存指向下一个节点的指针};在该电子词典中,程序会创建一个以此结构体为单个节点的链表,该链表的头指针为head变量保存,当用户进行增、删、改、查等行为的时候,就是对该链表进行相应的增、删、改、查操作。

当用户对该电子词典进行保存的时候,就是把该链表的每一个节点写回到读取字库文件中。

3、详细设计主流程图词典链表建立流程图五.编码实现1.主函数:int main(void) 创建链表函数:Creat_Dict(struct Dict * head) 查找函数:Search_Word(); 增加函数:Add_Word(); 删除函数:Delete_Word(); 修改函数:Modify_Word();保存函数: Save_Word(); 释放函数:Free_Words(); 功能函数: Gong_Neng(); 结束函数:return(); 2.程序的实现 #include <stdio.h> #include <stdlib.h>#include <string.h>struct Dict //字典结构体定义{char * Englishword; //定义Englishword为字符型指针变量char * Chinese; //定义Chinese为字符型指针变量struct Dict * pNext; //pNext指向一个和它本身储存指向下一个节点的指针};static bool isSave = true;//true说明已经保存 false未保存void Menu(); //主菜单函数void Creat_Dict (struct Dict * head);//创建字典结构体链表void Search_Word(struct Dict * head);//查找单词操作void Add_Word (struct Dict * head);//添加单词void Delete_Word(struct Dict * head);/删除单词void Modify_Word(struct Dict * head);//修改单词void Save_Word (struct Dict * head); //保存单词,把链表里面的数据重新写到文件中void Free_Words (struct Dict * head);//释放分配空间函数void Gong_Neng();int main(void){char i;struct Dict * head=(struct Dict *)malloc(sizeof(Dict));memset(head, 0, sizeof(Dict));Creat_Dict(head);//读取字典函数while (1){Menu();printf("\n\n请选择你需要的功能:");scanf("%c",&i);switch (i){case '1':Search_Word(head); break;case '2':Add_Word(head); break;case '3':Delete_Word(head); break;case '4':Modify_Word(head); break;case '5':Save_Word(head); break;case '7':Gong_Neng(); exit(0); break;case'6':if(!isSave)Save_Word(head);Free_Words(head);exit(0); break;default:printf("请输入正确的选择:"); break;}}}void Menu(){printf("\t※※※※※※※※电子英汉词典※※※※※※※※\n"); printf("\t※作者:刘尧 2016111130 ※\n"); printf("\t※指导老师:吉向东※\n"); printf("\t※ 1、查找单词 2、增加单词※\n"); printf("\t※ 3、删除单词 4、修改单词※\n"); printf("\t※ 5、保存单词 6、退出※\n"); printf("\t※ 7、查看字典的功能※\n"); printf("\t※※※※※※※请选择您需要的操作序号(1-6)按回车确认※※※※※ "); }void Creat_Dict(struct Dict * head) //初始化链表创建字典结构体链表*/{struct Dict * p = head;//定义变量指向头指针,用于链表遍历浮标char buf[600] = {0};/存储读取每行单词的缓冲区int index = 0;//表示单词长度int len = 0; //表示单词和翻译的长度,和index一起使用用来计算翻译的长度(len-index) FILE * file; //打开字库文件打开一个已经存在的词典文件if ((file=fopen("英汉词典.txt", "r")) == NULL) //如果词典文件不存在{printf("英文词典打开失败。

相关主题