logo资料库

英汉小字典报告.doc

第1页 / 共28页
第2页 / 共28页
第3页 / 共28页
第4页 / 共28页
第5页 / 共28页
第6页 / 共28页
第7页 / 共28页
第8页 / 共28页
资料共28页,剩余部分请下载后查看
题目:小型英汉词典
问题描述:
问题描述:
基本要求:
测试数据:
提高要求:
考核要求:
需求分析
软件的基本功能:
输入形式:
输出形式:
概要设计
抽象数据类型:
流程图:
块调用关系:
详细设计
实现概要设计的数据类型:
主要函数说明:
对话框操作的代码及主要算法的代码:
编码与调试分析
编码与调试过程中遇到的问题及解决办法:
测试结果
用户这方面:这部分只能对文件进行查找功能
管理员这方面:主要是插入删除
自学知识
课程设计心得体会
参考资料:
目录 题目:小型英汉词典........................................................................................................................ 1 问题描述:........................................................................................................................................ 1 问题描述:................................................................................................................................ 1 基本要求:................................................................................................................................ 1 测试数据:................................................................................................................................ 1 提高要求:................................................................................................................................ 1 考核要求:................................................................................................................................ 1 需求分析 ............................................................................................................................................ 1 软件的基本功能: .................................................................................................................... 1 输入要求:................................................................................................................................ 2 输入形式:................................................................................................................................ 2 输出形式:................................................................................................................................ 2 概要设计 ............................................................................................................................................ 3 抽象数据类型:........................................................................................................................ 3 流程图: .................................................................................................................................... 3 块调用关系: ............................................................................................................................ 3 详细设计 ............................................................................................................................................ 5 实现概要设计的数据类型: ....................................................................................................5 主要函数说明:........................................................................................................................ 5 对话框操作的代码及主要算法的代码:................................................................................6 编码与调试分析.............................................................................................................................. 23 编码与调试过程中遇到的问题及解决办法:......................................................................23 测试结果 .......................................................................................................................................... 24 用户这方面:这部分只能对文件进行查找功能 ..................................................................24 管理员这方面:主要是插入删除 ..........................................................................................25 自学知识 .......................................................................................................................................... 27 课程设计心得体会 .......................................................................................................................... 27 参考资料:...................................................................................................................................... 27 页0
题目:小型英汉词典 问题描述: 问题描述: 设计一个英汉词典,支持 Member 的查找、插入、删除操作。 基本要求: 实现字典的常用方法有:有序线性表(用二分检索实现)、AVL 树(二叉搜索树)、Patricia Tree、 散列表等,任选一种方法实现字典的操作,查找单词、插入单词(插入时,先查找,找不到 插入,找到提示用户)、删除单词(删除时,先查找,找到删除,找不到提示用户)。字典是 按字母顺序排列的,不能用顺序查找,插入或删除单词后,要保持字典的有序性。 测试数据: 任一英文单词。 提高要求: 选用两种以上的方法实现字典的操作,要比较不同实现算法的时间复杂度和空间复杂度。 考核要求: (1)如果采用线性结构且无序,成绩为不及格。 (2)选择合适的数据结构,达到了基本要求,成绩为优秀。 (3)鼓励设计图形用户界面。 提示:字典可以自己建立,但必须按字母 a~z 建立 26 个文件,建议从网上下载,文件 类型为 txt。 需求分析 软件的基本功能: 页1
⑴可以输入英文,查找要查找的英文单词的意思; ⑵也可以输入中文,则便会显示一些包含该中文词组的意思,用户可以根据 需要双击要查找的意思,则会输出用户需要的英文单词; ⑶可以插入单词及意思,以完善字典的词汇量; ⑷可以删除单词,有利于管理单词表。 *其中(3)(4)只有管理员才能操作。 输入要求:如下图。在①中输入要操作的单词(中文或英文),根据②中的 索引双击要查找的内容,如果②中没有显示出,则表明不存在该单词。双击②中 你选中的单词,③中会输出相应的解。 输入形式: ⑴ 英文单词或者英文单词的前几个字母 ⑵ 中文词组 输出形式: 在②中输出索引,在③中输出要查找的单词或单词的意思。 页2
测试数据要求: 用户可以根据要求测试该程序,可以输入中文词组或英文单词或英文单词的 前几个字母。 概要设计 抽象数据类型: 根据题目的要求,考虑用平衡二叉树比较适合。 流程图: 管理员界面 输入 插入 删除 用户界面 输入英语字 母或汉字 查找 双击你要的内容 输出相应的结果 块调用关系: 本程序中函数包括:main 函数,平衡二叉树操作相关函数,win32 相关 页3
操作函数 其函数调用关系如下: WinMain Main_Proc Main_OnCommand GetDlgItemText InsertAVL WinMain Main_Proc Main_OnCommand GetDlgItemText InsertAVL DeleteAVL InOrder 是 英 文 吗 CTE SearchBST SetDlgItem 页4
详细设计 实现概要设计的数据类型: ///////////////////////////// 定义结构体 /////////////////////////// typedef struct BSTNode { char *Eng; char *Ch; int bf; struct BSTNode *lchild,*rchild;//左、右孩子指针 //结点的平衡因子 }BSTNode,*BSTree; 主要函数说明: void R_Rotate(BSTree &p); 序树作右旋处理 void L_Rotate(BSTree &p); 序树作左旋处理 //对以*p 为根的二叉排 //对以*p 为根的二叉排 void LeftBalance(BSTree &T); //对以指针T所指结点为根的二叉树作 左平衡旋转处理 void RightBalance(BSTree &T); 为根的二叉树作右平衡旋转处理 //对以指针T所指结点 bool InsertAVL(BSTree &T,int e,bool &taller); bool SearchBST(BSTree &T,int key); //插入结点 e //查找元素 key 是否在树 T中 void PrintBST(BSTree T,int m); //按树状打印输出二叉树 的元素 void CreatBST(BSTree &T); 意:以输入-1 为二叉树建立的结束) void LeftBalance_div(BSTree &p,int &shorter); 理 void RightBalance_div(BSTree &p,int &shorter); 页5 //创建平衡二叉树,(注 //删除结点时左平衡旋转处 //删除结点时右平衡旋转处
理 void Delete(BSTree q,BSTree &r,int &shorter); int DeleteAVL(BSTree &p,int x,int &shorter); //删除结点 //平衡二叉树的删除操作 对话框操作的代码及主要算法的代码: //记录二叉树是否变短了 //记录二叉树是否长高了 1,对话框操作的代码: bool taller=false; int shorter=0; int i = 0; TCHAR temp_Eng_test[NUM]; TCHAR temp_Ch_test[NUM]; TCHAR temp_Eng[NUM]; TCHAR temp_Ch[NUM]; TCHAR filename[14] = "C:\\word\\a.txt"; HWND hwndCombol = GetDlgItem(hwnd,IDC_LIST1); //得到 LISTBOX 这个控件的句柄 HWND hwndCombo2 = GetDlgItem(hwnd,IDD_MAIN); GetDlgItemText(hwnd,IDC_EDIT1,temp_Eng_test,sizeof(temp_Eng_test)); count = strlen(temp_Eng_test); if(temp_Eng_test[0] >=0 && temp_Eng_test[0] <=127) { if(count == 0) { T=(BSTree)malloc(sizeof(BSTNode)); T = NULL; ListBox_ResetContent(hwndCombol); SetDlgItemText(hwnd,IDC_EDIT4," "); } else if(count == 1) { 以行为 页6 //删除列表框中所
if(DBLCLK == false) SetDlgItemText(hwnd,IDC_EDIT4," "); filename[8] = temp_Eng_test[0]; ifstream ifile(filename); if(!ifile) { MessageBox(hwnd,TEXT("open file error!"),TEXT("error"),MB_OK); exit(1); } while(ifile.getline(temp_Eng,256,' ')) { ifile.getline(temp_Ch,256); InsertAVL(T,temp_Eng,temp_Ch,taller); taller=false; } ifile.close(); InOrder(hwnd,T,temp_Eng_test); } else { if(counttest != count)//这是我加的,加上就没有问题了 { if(DBLCLK == false) SetDlgItemText(hwnd,IDC_EDIT4," "); ListBox_ResetContent(hwndCombol);//这是清空 DBLCLK = false; counttest = count; InOrder(hwnd,T,temp_Eng_test); } 页7
分享到:
收藏