词典变位词检索系统课程设计报告

合集下载

电子词典_java课程设计

电子词典_java课程设计

英汉电子词典一、需求分析二十世纪后半叶,以电子计算机为代表的现代科学获得了突飞猛进的开展并迅速和人们的日常生活结合在一起。

计算机技术的开展和进步也使电子语言词典的诞生成为可能。

我们日常的学习生活中,常会碰到如此的咨询题:在工作时或在网上冲浪,或者电子邮箱中收到一封外国朋友发的英文E-mail,碰到某些生疏的单词,可又疲于往翻查厚重的英文字典时,电脑中所安装的英汉电子词典便成为了最为方便、快捷的选择。

电子词典是一种多功能的词典类工具软件,它能够即时翻译,快速、正确、具体地查阅英文单词,或将中文单词进行英文翻译,使自己的知识面拓展得更宽、更广。

尽管电子词典只有十来年的历史,但它却差不多开展壮大,成为词典家族中具有旺盛生命力的一员。

尽管目前它尚缺乏以取代传统词典,但在英语学习和教学中,由于它有用、快捷、正确、经济等特点,差不多成为传统英汉词典的有力竞争者,并对传统的词典提出了挑战。

本系统是一个采纳MicrosoftAccess作为数据库,用JAVA作为开发工具的英汉电子词典,内有英汉词典、汉英词典和备份词库。

它不仅可实现英译汉、汉译英的全然翻译功能,还能够让用户依据自己的需要添加、修改、删除词库,形成自己的词库。

其功能结构图如图1.1所示:图功能结构图功能模块讲明:1、英译汉功能模块讲明:能够实现对英文单词对中文单词的查询功能。

用户文本框中输进要查询的英语单词。

假设该单词存在于词库中,那么会在文件对话框中显示其词性及中文翻译;假设该单词没有存在于词库中,那么会弹出“警告〞,讲明“查无此词〞;假设没有输进直截了当点击“查询〞,那么会弹出“警告〞,讲明“查询对象不能为空〞。

2、汉译英功能模块讲明:能够实现对中文单词对英文单词的查询功能。

用户可在文本框中输进要查询的中文单词。

假设该单词存在于词库中,那么会在文件对话框中显示一个或多个对应的英文;假设该单词没有存在于词库中,那么会弹出“警告〞,讲明“查无此词〞;假设没有输进直截了当点击“查询〞,那么会弹出“警告〞,讲明“查询对象不能为空〞。

电子词典课程设计

电子词典课程设计

电子词典课程设计一、课程目标知识目标:1. 学生能理解电子词典的基本概念,掌握其功能特点和使用方法。

2. 学生能掌握电子词典中常见词汇的查找、读音、释义等功能操作。

3. 学生能了解电子词典在学习和生活中的实际应用。

技能目标:1. 学生能熟练运用电子词典进行词汇查询,提高查词效率。

2. 学生能通过电子词典学习新词汇,拓展词汇量,提高语言表达能力。

3. 学生能运用电子词典辅助学习,提升自学能力和信息检索能力。

情感态度价值观目标:1. 学生能认识到电子词典在语言学习中的重要性,培养积极使用电子词典的习惯。

2. 学生在使用电子词典的过程中,能体会科技发展对学习方式的改变,增强时代感和责任感。

3. 学生通过电子词典的学习,增强合作交流意识,培养团队精神和共享资源的价值观。

课程性质:本课程为实用技能类课程,旨在帮助学生掌握电子词典的使用方法,提高学习效率。

学生特点:六年级学生具备一定的计算机操作能力和自主学习能力,对新鲜事物充满好奇心。

教学要求:教师需结合学生特点,采用任务驱动、合作探究等教学方法,激发学生学习兴趣,提高课程效果。

通过课程学习,使学生能够将电子词典应用到实际学习和生活中,达到学以致用的目的。

在教学过程中,注重培养学生的自主学习能力、团队协作能力和信息素养。

二、教学内容1. 电子词典的基本概念:介绍电子词典的定义、发展历程及其与纸质词典的区别。

2. 电子词典的功能特点:讲解电子词典的查词、发音、释义、例句、翻译等功能。

3. 电子词典的使用方法:教授如何开关机、输入关键词、查找词汇、听取发音、查看释义等操作。

- 教学大纲:- 第一课时:电子词典的基本概念及功能特点- 第二课时:电子词典的使用方法及操作技巧4. 常见电子词典介绍:介绍几款市面上常见的电子词典,分析各自特点,帮助学生选择合适的电子词典。

5. 电子词典在生活中的应用:举例说明电子词典在语言学习、阅读、写作等方面的实际应用。

6. 电子词典的正确使用习惯:教育学生养成良好的电子词典使用习惯,如合理规划使用时间、避免过度依赖等。

C语言英汉词典课程设计

C语言英汉词典课程设计

C语言英汉词典课程设计一、课程目标知识目标:1. 学生能够掌握C语言基础语法,包括变量声明、数据类型、运算符、控制结构等。

2. 学生能够理解结构体在C语言中的应用,并能够使用结构体创建英汉词典的数据结构。

3. 学生能够运用文件操作函数实现英汉词典的存储与读取。

技能目标:1. 学生能够运用C语言编写程序,实现英汉词典的增删查功能。

2. 学生能够通过调试和优化程序,提高英汉词典的运行效率。

3. 学生能够通过小组合作,共同完成一个具有实用价值的英汉词典项目。

情感态度价值观目标:1. 学生培养对编程的兴趣,提高解决实际问题的能力。

2. 学生在团队合作中,学会相互尊重、沟通协作,培养团队精神。

3. 学生通过英汉词典项目,认识到编程在生活中的应用,激发创新意识。

课程性质:本课程为C语言编程实践课程,以项目为导向,注重培养学生的动手能力和实际应用能力。

学生特点:学生为高年级学生,已具备一定的C语言基础,对编程有一定了解,具备一定的自学和解决问题能力。

教学要求:教师需引导学生运用所学知识,以小组合作形式完成英汉词典项目,注重培养学生的编程思维和实际操作能力。

在教学过程中,关注学生的情感态度价值观的培养,激发学生的学习兴趣和团队协作精神。

通过课程目标的分解,确保学生能够达到预期学习成果,为后续教学设计和评估提供依据。

二、教学内容1. C语言基础回顾:变量声明、数据类型、运算符、控制结构(条件语句、循环语句)。

2. 结构体概念与应用:结构体的定义、声明、初始化;结构体数组、结构体指针。

3. 文件操作:文件的打开、关闭、读写操作;二进制读写;文本文件与二进制文件的转换。

4. 英汉词典项目实战:a. 数据结构设计:定义单词结构体,创建单词列表。

b. 功能模块设计:实现添加、删除、查找、显示全部单词等功能。

c. 文件操作:实现词典的存储与读取。

d. 界面设计:设计简单易懂的用户界面,提供用户操作接口。

5. 调试与优化:分析程序性能,进行调试优化,提高词典运行效率。

英汉小词典课程设计方案报告

英汉小词典课程设计方案报告

2012-2013学年第二学期《高级语言程序设计》课程设计报告题目:英汉小词典专业:计算机科学与技术班级:计科2班姓名:XXXX指导教师:XXX成绩:计算机与信息工程系2013年06月28日目录1设计内容及要求 (3)1.1设计内容 (3)1.2设计任务及具体要求 (3)2概要设计 (4)2.1系统功能简介 (4)2.2总体设计框图 (4)3设计过程或程序代码 (5)3.1对关键代码加以分析说明 (5)3.2程序运行界面 (10)4 程序设计结果与分析 (12)5 心得 (13)致谢 (13)参考文献 (13)附录:源程序 (14)英汉小词典1 设计内容及要求1.1设计内容(1)、在计算机中建立有限规模的电子英汉词典(文件),利用程序实现电子英汉词典的查询、增词、删除、修改和维护工作。

(2)、词典的内容为:每行对应一个词条,每个词条由两个字符串组成,字符串用若干空格符分开;前一个是单词字符串(英文),后一个是释义字符串(中文),使用分号作为多个释义的分隔符(无空格)。

(3)、对单词和释义字符串长度的限定分别为不少于20个与40个字符,词条数限定为不多于200条。

(4)、采用菜单工作方式。

在一个操作执行之后,程序询问是否继续执行该操作。

如输入A或a,则重复同一操作,不退回到菜单;如输入其它信息,则回到菜单等待另一次选择。

仅当选择退出操作时,程序应询问是否将修改后的词典存盘,并根据用户选择存盘退出或不存盘退出。

1.2设计任务及具体要求主要利用c语言的文件操作能力设计开发一个英汉小词典,至少具有如下功能:查询、删除、增词、修改单词。

操作界面要符合用户的一般习惯,图形或文本界面都可以。

要求:明确课程设计的目的,能根据课程设计的要求,查阅相关文献,为完成设计准备必要的知识;提高学生用高级语言进行程序设计的能力,重点提高用C语言进行文件操作和绘图应用的编程技术水平;初步了解软件开发的一般方法和步骤;提高撰写技术文档的能力。

词典变位词检索系统课程设计报告

词典变位词检索系统课程设计报告

词典变位词检索系统目录摘要 (2)1绪论 (2)2系统分析 (2)2.1功能需求 (2)2.2数据需求 (2)2.3性能需求 (2)3总体设计 (2)3.1系统设计方案.................................................................... 错误!未定义书签。

4详细设计 .. (3)4.1数据结构定义 (3)4.2读入词典模块 (4)4.3求出变位词并输出合法单词模块 (6)4.4循环输入单词模块 (8)5调试与测试 (8)5.1调试 (8)5.2测试 (8)6结论 (9)结束语 ......................................................................................... 错误!未定义书签。

参考文献 .. (9)附录1-用户手册 (11)附录2-源程序 (12)摘要本系统的开发是用C语言作为程序开发的工具,利用抽象数据类型,实现单词的变位词检索功能,系统首先处理用户给出的词典文件,之后系统从标准输入函数中反复接受一个单词或字符串的输入,然后系统输出该字符串的所有可能排列和其中形成的合法单词。

本文从分析词典变位词检索系统开发需求出发,描述了系统的总体设计、详细设计、调试和测试等整个系统的设计和实现过程,并对系统的完成情况进行总结。

关键词:单词全排列;合法单词;词典文件1绪论词典变位词检索系统就是从词典中查找输入单词的变位词中的合法单词的系统。

(扩充)根据课程设计任务书要求,本系统开发主要完成以下功能和性能。

(1) 处理词典文件:从用户给出的词典文件中读取单词进线性表。

(2)求出变位词并输出合法单词:输入单词后输出单词字母所有可能形成的变位词,即单词的全排列,然后从词典中检索出生成的全排列中的合法单词。

(3)循环输入单词:系统可以循环输入单词进行检索。

电子词典系统设计实验报告

电子词典系统设计实验报告

电子词典系统设计实验报告12121583 曹连强周四6-8一、项目要求:1、在实验板上设计实现一个无操作系统的简易电子词典2、设计友好的人机交互界面3、:字符输入、功能选择、英汉翻译。

二、电子词典系统实现具体功能:1.能够通过键盘输入英文。

键盘作为本系统中最主要的输入设备,需要完成26个英文字母的输入,并且需要上翻页,下翻页,上一行,下一行,翻译,退格等功能。

要求键盘至少要有16个按键,每个按键都可以被处理器及时,准确地读入。

2.提供友好的人机界面,将输入的内容和翻译的结果显示在LCD的相应区域内。

3. 对输入的单词即时翻译。

4.可以记忆3个已经查询过的的单词。

在无操作系统的电子词典系统中,由于是单任务环境,因此此时系统的各个功能模块均按照顺序执行。

初始化后,即进入翻译待机状态,等待用户的输入操作。

当用户输入操作发生后,系统调用键盘或触摸屏中断进行键值读取,将键值传给主函数中的系统功能实现模块,该模块按不同的输入键值进行相应的功能选择,最后将此次操作的结果输出到LCD上。

三、程序设计可将电子词典的软件设计分为如下几个主要模块:键值处理、翻译、词库设计和LCD 显示。

1、键值处理电子词典的输入设备为键盘和触摸屏,要完成的功能为:(1)键盘:10个英文字母和6个功能键输入(2)触摸屏:6各功能键的输入2、翻译:3、词库设计翻译功能中通过将输入单词和词库中相应的单词进行比较得到要显示的翻译结果,因此,词库可采用结构体实现,此结构中包括4项:英文单词、词性、汉语释意、英文例句。

4、LCD显示功能翻页、选行及翻页结果的输出都可以归到LCD显示功能中,这些功能都可以通过调用LCD 实验中的相关函数完成。

四.设计程序////////////////////////////////////////////////////////////#include "Ts_sep.h"#include <string.h>///////////////////////////////////////////////////////////#include "def.h"#include "2410lib.h"#include "option.h"#include "2410addr.h"#include "interrupt.h"#include "lcdlib.h"//#define STN_LCD#define TFT_8_0/////////////////8888888////////////////////////////#define LOOP 1#define ADCPRS 39#define TS_JUSTIFY_LEFTTOP 1#define TS_JUSTIFY_RIGHTBOT 2#define TS_START 3///////////////////8888888888888888//////////////////////void Lcd_Disp_Char(void);void Lcd_Disp_Grap(void);void Frame(void);//设置背景框架void Clearscreen(void);//清屏//void Key_init(void);//初始化键盘void Cursor(int flag);void CursorCl(int flag);void delay( int count );void disp();void translate(int num);static int x=0,y=0,letter=0,flag=0,wei=0,prev[5],i,j;//函数里有调用我换成全局变量int which[20];//此时满足罗列单词int word,w;int m,n;////////////////////////////////////////////////int ts_status = TS_JUSTIFY_LEFTTOP;int ts_lefttop_x, ts_lefttop_y, ts_rightbot_x, ts_rightbot_y;int ts_lcd_x, ts_lcd_y;///////////////////////////////////////////////typedef struct{int w; //单词对应的值int o;int r;int d;int s;char c[20]; //英文单词char e[20]; //翻译}str_word;str_word dictionary[20]={{1,3,5,0,0,"ACE","王牌"},{2,5,5,0,0,"BEE","蜜蜂"},{1,4,4,0,0,"ADD","增加,计算"},{2,1,4,0,0,"BAD","坏的"},{4,5,3,1,4,"DECAD","十;十数"}};////////////////////////////////////////////////////////void Adc_or_TsSep() __attribute__ ((interrupt("IRQ")));void Adc_or_TsSep(void){int i;U32 Ptx[6], Pty[6];rINTSUBMSK |= (BIT_SUB_ADC|BIT_SUB_TC); // Mask sub interrupt (ADC and TC)// TC(Touch screen Control) Interruptif(rADCTSC & 0x100){PRINTF("\nStylus Up!!\n");rADCTSC &= 0xff; // Set stylus down interrupt}else{PRINTF("\nStylus Down!!\n");// <X-Position Read>rADCTSC=(0<<8)|(0<<7)|(1<<6)|(1<<5)|(0<<4)|(1<<3)|(0<<2)|(1);// Down,Hi-Z,AIN5,GND,Ext vlt,Pullup Dis,Normal,X-positionfor(i=0;i<LOOP;i++); //delay to set up the next channelfor(i=0;i<5;i++){rADCCON|=0x1; // Start X-position conversionwhile(rADCCON & 0x1); // Check if Enable_start is lowwhile(!(0x8000&rADCCON)); // Check ECFLGPtx[i]=(0x3ff&rADCDAT0);}Ptx[5]=(Ptx[0]+Ptx[1]+Ptx[2]+Ptx[3]+Ptx[4])/5;// <Y-Position Read>rADCTSC=(0<<8)|(0<<7)|(1<<6)|(1<<5)|(0<<4)|(1<<3)|(0<<2)|(2);// Down,GND,Ext vlt,Hi-Z,AIN7,Pullup Dis,Normal,Y-positionfor(i=0;i<LOOP;i++); //delay to set up the next channelfor(i=0;i<5;i++){rADCCON|=0x1; // Start X-position conversionwhile(rADCCON & 0x1); // Check if Enable_start is lowwhile(!(0x8000&rADCCON)); // Check ECFLGPty[i]=(0x3ff&rADCDAT1);}Pty[5]=(Pty[0]+Pty[1]+Pty[2]+Pty[3]+Pty[4])/5;rADCTSC=(1<<8)|(1<<7)|(1<<6)|(0<<5)|(1<<4)|(0<<3)|(0<<2)|(3);// Up,GND,AIN,Hi-z,AIN,Pullup En,Normal,Waiting modePRINTF("TOUCH Position = (%04d, %04d) ", Ptx[5], Pty[5]);m=Ptx[5];n=Pty[5];if(ts_status == TS_JUSTIFY_LEFTTOP){ts_lefttop_x = Ptx[5];ts_lefttop_y = Pty[5];ts_status = TS_JUSTIFY_RIGHTBOT;PRINTF("\nLeft top (0, 0) -> (%04d, %04d)\n", ts_lefttop_x, ts_lefttop_y);PRINTF(" 请触摸屏幕右下角位置\n");}else if(ts_status == TS_JUSTIFY_RIGHTBOT){ts_rightbot_x = Ptx[5];ts_rightbot_y = Pty[5];ts_status = TS_START;PRINTF("\nRight bottom (319, 239) -> (%04d, %04d)\n", ts_rightbot_x, ts_rightbot_y);PRINTF("[2] 请点击触摸屏\n");}else{/* ts_lcd_x = 320 - (Ptx[5] - ts_rightbot_x) * 1.0 / (ts_lefttop_x - ts_rightbot_x) * 320.0 ;ts_lcd_y = (Pty[5] - ts_lefttop_y) * 1.0 / (ts_rightbot_y - ts_lefttop_y) * 240.0 ;if(ts_lcd_x > 319) ts_lcd_x = 319;if(ts_lcd_x < 0) ts_lcd_x = 0;if(ts_lcd_y > 239) ts_lcd_x = 239;if(ts_lcd_y < 0) ts_lcd_x = 0;PRINTF("LCD Position = (%04d, %04d)\n", ts_lcd_x, ts_lcd_y);*/}}rSUBSRCPND |= BIT_SUB_TC;rINTSUBMSK =~ (BIT_SUB_TC); // Unmask sub interrupt (TC)ClearPending(BIT_ADC);}void Ts_Sep(void){PRINTF("------触摸屏测试------\n");PRINTF("[1] 触摸屏校准\n 请触摸屏幕左上角位置\n");ts_status = TS_JUSTIFY_LEFTTOP;rADCDLY = (50000); // ADC Start or Interval DelayrADCCON = (1<<14)|(ADCPRS<<6)|(0<<3)|(0<<2)|(0<<1)|(0);// Enable Prescaler,Prescaler,AIN7/5 fix,Normal,Disable read start,No operationrADCTSC = (0<<8)|(1<<7)|(1<<6)|(0<<5)|(1<<4)|(0<<3)|(0<<2)|(3);// Down,YM:GND,YP:AIN5,XM:Hi-z,XP:AIN7,XP pullup En,Normal,Waiting for interrupt modepISR_ADC = (unsigned)Adc_or_TsSep;rINTMSK &=~(BIT_ADC);rINTSUBMSK =~(BIT_SUB_TC);// while(1);delay(200);// rINTSUBMSK |= BIT_SUB_TC;//rINTMSK |= BIT_ADC;// PRINTF("----触摸屏测试结束----\n");}//////////////////////////////////////////////////////void Main(void){unsigned char ch='1';/* 配置系统时钟 */ChangeClockDivider(1,1); // 1:2:4ChangeMPllValue(0xa1,0x3,0x1); // FCLK=202.8MHz/* 初始化端口 */Port_Init();/* 初始化串口 */Uart_Init(0,115200);Uart_Select(0);/* 打印提示信息 */PRINTF("\n---LCD测试程序---\n");PRINTF("\n请将UART0与PC串口进行连接,然后启动超级终端程序(115200, 8, N, 1)\n");/* LCD初始化 */Lcd_Port_Init();#ifdef STN_LCDLcd_Init(MODE_CSTN_8BIT);Glib_Init(MODE_CSTN_8BIT);Lcd_CstnOnOff(1);Glib_ClearScr(0xff, MODE_CSTN_8BIT);#else#ifdef TFT_8_0rGPCCON &= ~(3<<8);rGPCCON |= (2<<8);Lcd_Init(MODE_TFT_16BIT_640480);Glib_Init(MODE_TFT_16BIT_640480);Glib_ClearScr(0xffff, MODE_TFT_16BIT_640480);Lcd_PowerEnable(0, 1);Lcd_EnvidOnOff(1);#elseLcd_Init(MODE_TFT_16BIT_240320);Glib_Init(MODE_TFT_16BIT_240320);Glib_ClearScr(0xffff, MODE_TFT_16BIT_240320);Lcd_PowerEnable(0, 1);Lcd_EnvidOnOff(1);#endif#endif#define LCD_DISP_CHAR#ifdef LCD_DISP_CHARLcd_Disp_Grap();#endif//布局Glib_FilledRectangle(0,0,640,240,0xffff); //白底// Glib_Rectangle(60,80,620,110,0x0000);//首字母框Glib_Rectangle(60,80,620,440,0x0000);//主框Glib_Line(290,110,290,410,0x0000);//分割线1Glib_Line(60,110,620,110,0x0000);//分割线2Glib_Line(60,410,620,410,0x0000);//分割线3Glib_Line(172,410,172,440,0x0000);//分割线4Glib_Line(284,410,284,440,0x0000);//分割线5Glib_Line(396,410,396,440,0x0000);//分割线6Glib_Line(508,410,508,440,0x0000);//分割线7// Glib_Rectangle(520,80,620,120,0x0000);//upGlib_disp_hzk16(110,420,"上", 0x0000);// Glib_Rectangle(520,140,620,180,0x0000);//downGlib_disp_hzk16(222,420,"下", 0x0000);// Glib_Rectangle(520,200,620,240,0x0000);//DelGlib_disp_hzk16(334,420,"清屏", 0x0000);// Glib_Rectangle(520,260,620,300,0x0000);//EnterGlib_disp_hzk16(446,420,"查询", 0x0000);// Glib_Rectangle(520,320,620,360,0x0000);//CancelGlib_disp_hzk16(558,420,"返回", 0x0000);Ts_Sep();while(1)//大循环等键按下{Cursor(flag);ch = Key_GetKeyPoll();/////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////if((m>=145&&m<237)&&(n>395&&n<540))ch='E';//qingpinif((m>=145&&m<237)&&(n>678&&n<830))ch='C';//Shangif((m>=145&&m<237)&&(n>540&&n<678))ch='D';//Xiaif((m>=145&&m<237)&&(n>57&&n<219))ch='B';///shanchuif((m>=145&&m<237)&&(n>219&&n<395))ch='F';//quedingm=n=0;/////////////////////////////////////////////////////////////////////////////// /////////////////////////////switch(ch){case '1'://aGlib_FilledRectangle(65,120,280,400,0xffff);//先清罗列单词区letter=1;//1表示输入字母为1Glib_disp_hzk16(90+wei*20,90,"A", 0x0000);//显示界面显示aprev[wei]=1;//存放disp();//显示单词区的单词wei++;//下一个放字母位置if(wei>=5){Glib_disp_hzk16(340,90,"已满", 0x0000);//单词字母小于等于四个delay(1000);Glib_disp_hzk16(340,90,"已满", 0xffff);//清掉"已经满了"};//超出错误,只能查四位break;case '2'://bGlib_FilledRectangle(65,120,280,400,0xffff);//先清罗列单词区letter=2;//1表示输入字母为1Glib_disp_hzk16(90+wei*20,90,"B", 0x0000);//显示界面显示aprev[wei]=2;//存放disp();//显示单词区的单词wei++;//下一个放字母位置if(wei>=5){Glib_disp_hzk16(340,90,"已满", 0x0000);//单词字母小于等于四个delay(1000);Glib_disp_hzk16(340,90,"已满", 0xffff);//清掉"已经满了"};//超出错误,只能查四位break;case '3'://cGlib_FilledRectangle(65,120,280,400,0xffff);//先清罗列单词区letter=3;//1表示输入字母为1Glib_disp_hzk16(90+wei*20,90,"B", 0x0000);//显示界面显示aprev[wei]=3;//存放disp();//显示单词区的单词wei++;//下一个放字母位置if(wei>=5){Glib_disp_hzk16(340,90,"已满", 0x0000);//单词字母小于等于四个delay(1000);Glib_disp_hzk16(340,90,"已满", 0xffff);//清掉"已经满了"};//超出错误,只能查四位break;case '4'://dGlib_FilledRectangle(65,120,280,400,0xffff);//先清罗列单词区letter=4;//1表示输入字母为1Glib_disp_hzk16(90+wei*20,90,"D", 0x0000);//显示界面显示aprev[wei]=4;//存放disp();//显示单词区的单词wei++;//下一个放字母位置if(wei>=5){Glib_disp_hzk16(340,90,"已满", 0x0000);//单词字母小于等于四个delay(1000);Glib_disp_hzk16(340,90,"已满", 0xffff);//清掉"已经满了"};//超出错误,只能查四位break;case '5'://eGlib_FilledRectangle(65,120,280,400,0xffff);//先清罗列单词区letter=5;//1表示输入字母为1Glib_disp_hzk16(80+wei*20,90,"E", 0x0000);//显示界面显示aprev[wei]=5;//存放disp();//显示单词区的单词wei++;//下一个放字母位置if(wei>=5){Glib_disp_hzk16(340,90,"已满", 0x0000);//单词字母小于等于四个delay(1000);Glib_disp_hzk16(340,90,"已满", 0xffff);//清掉"已经满了"};//超出错误,只能查四位break;case '6'://fbreak;case '7'://gbreak;case '8'://hbreak;case '9'://ibreak;case '0'://jbreak;case 'A'://kletter=11;break;case 'C'://上flag--;if(flag>=0&&flag<=3){Cursor(flag);//单词列表选中变色CursorCl(flag+1);}//再上恢复刚才那条的背景色else flag=0;break;case 'D'://下flag++;if(flag>=0&&flag<=3){Cursor(flag);CursorCl(flag-1);}else flag=3;break;case 'E'://cancel清屏Glib_FilledRectangle(70,90,339,109,0xffff);//先清单词区Glib_FilledRectangle(65,120,280,400,0xffff);//先清罗列单词区Glib_FilledRectangle(300,120,610,400,0xffff);//清翻译区for(j=0;j<=10;j++){which[j]=0;};letter=0;wei=0;for(j=0;j<=5;j++){prev[j]=0;};break;case 'F'://enter确定Glib_FilledRectangle(300,120,610,400,0xffff);//主翻译区if(flag>=0&&flag<=3)translate(which[flag]);//显示结果break;case 'B'://del删除Glib_FilledRectangle(70,120,280,400,0xffff);//先清罗列单词区letter=0;wei--;prev[wei]=0;//上一位变0Glib_FilledRectangle(70+wei*30,90,70+wei*30+20,109,0xffff);//消掉一个字母wei--;disp();wei++;break;default:Glib_disp_hzk16(500,90,"←请输入单词", 0x0000);break;}}}void disp(){y=0;//初始单词显示位置for(i=0;i<=20;i++){if((dictionary[i].w==prev[0])&&(wei==0)){//第一个字母正which[y]=i;//存放哪几个单词显示了Glib_disp_hzk16(80,120+32*y,dictionary[i].c, 0x0000);//显示单词y++;//位置改变}if((dictionary[i].w==prev[0])&&(dictionary[i].o==prev[1])&&(wei==1)){//前两个字母正确which[y]=i;//存放哪几个单词显示了Glib_disp_hzk16(80,120+32*y,dictionary[i].c, 0x0000);//显示单词y++;//位置改变}if((dictionary[i].w==prev[0])&&(dictionary[i].o==prev[1])&&(dictionary[i].r==pr ev[2])&&(wei==2)){//前3个字母正确which[y]=i;//存放哪几个单词显示了Glib_disp_hzk16(80,120+32*y,dictionary[i].c, 0x0000);//显示单词y++;//位置改变}if((dictionary[i].w==prev[0])&&(dictionary[i].o==prev[1])&&(dictionary[i].r ==prev[2])&&(dictionary[i].d==prev[3])&&(wei==3)){//前4个字母正确which[y]=i;//存放哪几个单词显示了Glib_disp_hzk16(80,120+32*y,dictionary[i].c, 0x0000);//显示单词y++;//位置改变}}}void translate(int num){//显示单词选项3个Glib_disp_hzk16(300,120,dictionary[num].e, 0x0000);}//void Clearscreen(void) //清屏//{// Glib_FilledRectangle(65,81,499,99,0xffff);// Glib_FilledRectangle(65,121,499,439,0xffff);// Glib_Line(240,120,240,440,0x0000);//}void Cursor(int flag){Glib_FilledRectangle(65,121+flag*32,75,153+flag*32,0x55);}void CursorCl(int flag){Glib_FilledRectangle(65,121+flag*32,75,153+flag*32,0xffff);}void Lcd_Disp_Grap(void){int i,j;for(j=0;j<240;j++)for(i=0;i<320;i++) //RRRGGGBBPutPixel(i,j,((i/40)<<5)+((j/30)<<2)+(((j/15)%2)<<1)+((i/20)%2)); }void delay( int count ){int cnt;for( count = count; count>0; count--)for( cnt = 0; cnt < 100; cnt++);}。

c英汉词典课程设计

c英汉词典课程设计

c 英汉词典课程设计一、课程目标知识目标:1. 学生能够掌握英汉词典的基本结构和使用方法,包括字母顺序、词条布局等。

2. 学生能够通过查阅词典,理解并学习新单词的含义、用法和例句。

3. 学生能够了解英汉词典中提供的词性、时态、同义词、反义词等语言知识点。

技能目标:1. 学生能够培养快速准确查阅词典的技能,提高学习效率。

2. 学生能够运用词典中的资源进行词汇拓展和语言表达能力的提升。

3. 学生能够通过词典学习,培养独立解决问题的能力。

情感态度价值观目标:1. 学生能够增强对英语学习的兴趣和自信心,认识到工具书在语言学习中的重要性。

2. 学生能够培养良好的学习习惯,主动利用词典资源进行自主学习。

3. 学生能够通过学习英汉词典,拓宽国际视野,了解不同文化背景下的词汇用法。

课程性质:本课程为实用工具课程,旨在帮助学生掌握英汉词典的使用方法,提高英语学习效果。

学生特点:考虑到学生所在年级,具备一定的英语基础,但词典使用技巧和自主学习能力有待提高。

教学要求:教师应注重培养学生的实际操作能力,将理论与实践相结合,使学生在实际运用中掌握词典使用技巧。

同时,关注学生的情感态度,激发学习兴趣,提高学习积极性。

通过本课程的学习,使学生能够达到具体的学习成果,为后续的英语学习奠定基础。

二、教学内容1. 词典基本结构认知:介绍英汉词典的组成部分,如字母索引、词条、例句、词性、时态、同义词、反义词等。

- 教材关联章节:课本中关于词典使用的基础知识部分。

2. 词典查阅技巧:教授快速定位单词、理解词条布局、查找同义词和反义词等方法。

- 教材关联章节:课本中关于查阅词典技巧的内容。

3. 词汇拓展学习:利用词典资源,学习新单词的用法、搭配及其在不同语境中的应用。

- 教材关联章节:课本中词汇学习相关章节。

4. 实践应用:设计实例,让学生运用所学查阅词典,解决实际问题,提高语言表达能力。

- 教材关联章节:课本中实践应用部分。

5. 自主学习策略:培养学生利用词典进行自主学习,养成良好的学习习惯。

英汉电子词典设计报告设计C语言C语言程序设计

英汉电子词典设计报告设计C语言C语言程序设计

英汉电子词典设计报告设计C语言C语言程序设计设计报告:英汉电子词典设计目标:本次设计的目标是开发一个基于C语言的英汉电子词典,实现用户通过输入英文单词或汉字查询其对应的中文释义或英文翻译。

同时,用户还可以对查询结果进行添加、修改、删除操作,方便用户自定义个性化词库。

设计思路:1.使用C语言实现用户界面,包括菜单选项和用户输入功能;2.使用文件管理系统进行词库的存储和读取,并实现对词库的增删改查功能;3.使用字符串匹配算法进行单词或汉字的查询,保证查询的精确性;4.使用二叉查找树(BST)作为数据结构,实现词库的快速查找和插入功能。

模块设计:1.用户界面模块:-显示菜单选项,包括查询、添加、修改、删除和退出;-提示用户输入相应选项,并获取用户输入;2.文件管理模块:-创建存储词库的文件,并检查文件是否存在;-实现读取文件内容到内存和将内存内容写入文件的功能;3.数据结构模块:-设计结构体,包含英文单词和中文释义;-使用二叉查找树作为词库的数据结构,实现快速查找和插入功能;4.查询模块:-根据用户输入的英文单词或汉字,进行查询;-使用字符串匹配算法进行匹配,找到对应的词条并显示;5.添加模块:-接受用户输入的英文单词和中文释义,并将其插入词库中;6.修改模块:-接受用户输入的英文单词和新的中文释义,并替换原有词条的中文释义;7.删除模块:-根据用户输入的英文单词或汉字,从词库中删除对应的词条;测试计划:-对每个模块进行单元测试,确保其功能正常;-集成测试,检查各个模块之间的交互是否正常;-进行用户测试,验证整个电子词典系统的可用性和稳定性。

总结:通过以上的设计,我们可以实现一个基于C语言的英汉电子词典,能够方便用户进行英文单词和汉字的查询,并支持用户对词库进行个性化操作。

该电子词典设计简洁,功能完备,并且具有较好的扩展性,适用于不同平台和系统的实际应用。

简单的英文词典排版系统实验报告

简单的英文词典排版系统实验报告

实验目录需求分析———————————— 2 整体设计———————————— 2 详细设计———————————— 4 调试与测试——————————— 6 用户手册———————————— 6 总结—————————————— 6 附录—————————————— 9一需求分析1目的我们所做的程序课题是一个“简单的英文词典排版系统”。

该课题目的在于锻炼我们的自主动手和创新、创造能力, 同时通过自己看书学习文件的输入输出等功能的实现, 提升我们的自学能力。

并通过自己思考程序的算法和函数的组建过程来提升我们的逻辑思维能力, 最后是利用自我程序测试和改进来增加我们对编程的进一步了解, 和提升编程的能力。

其大背景是要为同学提供了一个既动手又动脑, 独立实践的机会, 将课本上的理论知识和实际有机的结合起来, 锻炼同学的分析解决实际问题的能力。

提高学生适应实际, 实践编程的能力。

2 预期达到功能(1) 能输入和显示所打的单词。

(2) 能分辨出单词。

(3) 对重复的单词和已经输入的单词能自动排除。

(4) 能按A-Z的顺序排版。

(5) 能将运行结果以文本形式存储。

(6) 具有添加新单词并重新排版的能力。

(7) 实现以上功能的选择操作3 需解决问题主要解决单词输入到文件和从文件输出以及最后文件保存的问题, 但是我们对C++的学习仍不完全, 这就要求我们提前把课本上的“文件与流”这一章节的相关内容进行自学并应用于其中。

其次我们要解决如何实现查找单词、分辨单词、添加单词以及对单词进行排序的系列问题, 这要求我们能对已学习的内容充分掌握并熟练应用。

二整体设计1 程序设计功能模块图2 程序流程示意图词库文件建立并选择功能添加单词单词排序搜索单词显示单词1)字符排序2) 检查模块三详细设计1 函数功能void write(int r) 将单词写入文件的函数int read() 读取文件函数void zhucaidan() 主菜单函数int paixu() 排序函数void jiancha() 检查单词模块void charu(char*d) 插入单词模块void find(char *s) 查找单词模块void xuanze() 选择菜单模块2 参数说明dic[N][20] N为100, 即但单词库课输入100个单词, 每个单词长度不得大于19*p 为指向Data文件的指针flag, temp 在不同的函数模块中用于不同情况下的结果判断与后续的程序执行s[20], d[20], f[20] char类型的数组s、d和f用于临时的单词输入放置t[20] char类型的数组t是用于临时放置从文件中读取的单词way 是用于switch语句中功能选项的选择i, j, c等是普通的int变量3函数调用1)void xuanze()选择菜单调用的函数: jiancha()检查函数、find(d)查找函数、charu(d)插函数以及zhucaidan()主菜单函数2)void find(char *s) 查找单词模块调用的函数: strcpy复制函数、strcmp比较大小函数、write(r)写入文件函数3)void charu(char*d) 插入单词模块调用的函数: read()读取函数、strcmp比较函数、strcpy复制函数、write(r)写入文件函数、paixu()排序函数、4)void jiancha()检查单词模块调用的函数: write(r)写入文件函数5)int paixu()排序函数调用的函数: read()读取函数、strcmp比较大小函数、strcpy复制函数、write(r)写入文件函数6)int read()读取文件函数调用的函数: write(r)写入文件函数main()主函数调用的函数: jiancha()检查函数、paixu()排序函数、xuanze()菜单选择函数4算法实现1)插入模块void charu(char*d)单词存在情况:先输入单词放置于*d指向的d[20]临时数组中, 再利用for循环和strcmp比较函数看输入的单词是否已经存在, 存在flag=1, 不存在将单词保存break跳出for循环从新输入单词, flag仍等于0;单词不存在情况:若flag=0, 利用strcpy复制函数将新输入的单词复制到单词库已存在单词的后面, 单词个数r增加1;继续输入:利用while语句, 只要继续输入的字符不为0(即输入的为单词, 用户不返回主菜单), 就可以执行while语句继续重复上述的检查单词和保存单词的步骤;2)返回主菜单:3)若输入的字符为0(即用户要返回主菜单), while语句无法执行, 经过从新排序后, 利用return返回调用函数, 即void xuanze()菜单选择函数, 可从新选择功能。

英语词典课程设计报告

英语词典课程设计报告

山东交通学院面向对象课程设计英语学习小词典(院)系: 信电学院班级: 计算111 姓名: 学号: 110811123 指导教师: 钱斌时间:2012-10-10—2012-10-21课程设计任务书题目:英语学习小词典C++语言课程设计系部:信电学院专业:计算机科学与技术班级:计算111姓名:学号:10月10日至10月21 日共2 周指导教师(签字):系主任(签字):年月日课程设计任务书成绩评定表摘要对于我们,随着学习的深入,已经大体掌握了Visual C++6.0环境下的程序开发。

为了将我们的编程能力提升到一个更高的水平,深化面向对象的编程思维和解决问题的能力,值此课程设计周期间,进行基于Visual C++6.0环境的软件开发,先以字符统计软件作为开始,对Visual C++6.0环境和面向对象程序设计进行回忆和熟悉,使得在此基础上的下一个课程设计的开发进行的更加顺利。

本文档详细叙述了基于Visual C++6.0环境下的英语学习小词典系统软件的设计过程以及程序源代码。

本文档从概要设计,详细设计,参考源程序代码以及显示程序运行的截屏等方面详尽的介绍了软件开发过程。

程序在设计的过程中遇到的问题已及时更正,但由于编者的能力和水平有限,字符统计软件和文档中不免会出现一些不期待的错误,望文档读者能够理解和体谅,并欢迎提醒和纠正,在此表示感谢以及敬意。

目录1. 课程设计概述 (8)1.1. 英语学习小词典题目及简介 (8)1.2. 开发环境概述 (8)2.总体设计 (8)2.1. 项目规划 (8)2.2. 系统结构流程图 (9)2.3.数据库逻辑结构 (10)3.功能模块界面及程序代码 (11)3.1. 主界面模块设计 (11)3.2. 数据库登陆框设计 (12)3.3. 操作数据库模块设计 (14)3.3.1 单词添加模块 (14)3.3.2 单词删除模块 (16)3.3.3 单词修改模块 (18)3.4. 查询模块设计............................ 错误!未定义书签。

英汉电子词典设计报告_设计_C语言_C语言程序设计

英汉电子词典设计报告_设计_C语言_C语言程序设计

英汉电子词典设计报告_设计_C语言_C语言程序设计设计报告英汉电子词典一、设计目标:设计一个英汉电子词典,实现用户输入英文单词能够得到对应的中文翻译,并提供简单的用户界面。

二、设计思路:1.定义词典数据库结构:使用结构体来表示一个词条,包括英文单词和中文翻译两个成员变量。

2.读取词典文件:从外部文件中读取词典数据,并将数据存储到内存中的数组中。

3.用户交互界面设计:使用基本的文本界面,提示用户输入英文单词。

4.查询单词:根据用户输入的英文单词,在内存中的数组中查找对应的词条,并将中文翻译打印出来。

5.处理用户输入:对用户输入的英文单词进行处理,如将大写字母转换为小写字母,去除多余的空格等。

三、程序设计:1.定义词典结构体:```ctypedef structchar word[100];char translation[100];} DictionaryEntry;```2.读取词典文件:```cvoid readDictionary(DictionaryEntry* dictionary, int* size) //打开词典文件FILE* file = fopen("dictionary.txt", "r");if (file == NULL)printf("Unable to open dictionary file\n");return;}//逐行读取词典数据char line[256];int i = 0;while (fgets(line, sizeof(line), file))sscanf(line, "%s %s", dictionary[i].word,dictionary[i].translation);i++;}//设置词典大小*size = i;//关闭文件fclose(file);```3.用户交互界面设计:```cvoid printUserInterfacprintf("Please enter an English word: ");```4.查询单词:```cvoid searchWord(DictionaryEntry* dictionary, int size, char* word)for (int i = 0; i < size; i++)if (strcmp(dictionary[i].word, word) == 0)printf("%s: %s\n", dictionary[i].word,dictionary[i].translation);return;}}printf("Word not found\n");```5.处理用户输入:```cvoid processInput(char* input)//去除输入字符串中的多余空格int len = strlen(input);int j = 0;for (int i = 0; i < len; i++)if (input[i] != ' ')input[j] = tolower(input[i]);j++;}}input[j] = '\0';```四、总结:通过以上设计思路和程序设计,实现了一个简单的英汉电子词典。

单词检索课程设计

单词检索课程设计

单词检索课程设计一、教学目标本课程旨在通过单词检索的教学,使学生掌握有效的单词记忆和检索方法,提高学生的词汇量和语言运用能力。

具体目标如下:1.知识目标:使学生了解单词记忆的基本原理,掌握常用的单词检索技巧,如前缀、后缀、词根等。

2.技能目标:培养学生能够独立进行单词检索,提高学生的阅读理解能力和写作能力。

3.情感态度价值观目标:激发学生对英语学习的兴趣,培养学生的自主学习能力,使学生认识到单词学习的重要性。

二、教学内容本课程的教学内容主要包括单词记忆原理、单词检索技巧和实际操作练习。

具体安排如下:1.第一课时:介绍单词记忆的基本原理,如重复、联想、分类等。

2.第二课时:教授常用的单词检索技巧,如前缀、后缀、词根等。

3.第三课时:进行实际操作练习,让学生运用所学技巧进行单词检索。

4.第四课时:总结课程内容,进行课程复习和测试。

三、教学方法为了提高学生的学习兴趣和主动性,本课程将采用多种教学方法,如讲授法、讨论法、案例分析法等。

具体方法如下:1.讲授法:用于教授单词记忆原理和单词检索技巧。

2.讨论法:用于引导学生进行思考和交流,提高学生的理解能力。

3.案例分析法:通过分析实际案例,让学生更好地理解单词检索的应用。

四、教学资源为了支持教学内容和教学方法的实施,丰富学生的学习体验,我们将选择和准备以下教学资源:1.教材:选用权威、实用的英语教材,如《新概念英语》等。

2.参考书:提供相关的英语词汇学习书籍,如《英语词汇用法手册》等。

3.多媒体资料:利用网络资源,为学生提供丰富的英语学习资料,如视频、音频、电子词典等。

4.实验设备:如需进行实际操作练习,准备相应的实验设备,如计算机、投影仪等。

五、教学评估为了全面、客观、公正地评估学生的学习成果,我们将采用以下评估方式:1.平时表现:通过观察学生在课堂上的参与程度、提问回答等情况,评估学生的学习态度和理解能力。

2.作业:布置相关的单词检索练习,要求学生按时完成,并进行批改和反馈。

英汉小词典专业课程设计方案报告

英汉小词典专业课程设计方案报告

- 第二学期《高级语言程序设计》课程设计汇报题目:英汉小词典专业:计算机科学和技术班级:计科2班姓名:XXXX指导老师:XXX成绩:计算机和信息工程系06月28日目录1设计内容及要求 (3)1.1设计内容 (3)1.2设计任务及具体要求 (3)2概要设计 (4)2.1系统功效介绍 (4)2.2总体设计框图 (4)3设计过程或程序代码 (5)3.1对关键代码加以分析说明 (5)3.2程序运行界面 (10)4 程序设计结果和分析 (12)5 心得 (13)致谢 (13)参考文件 (13)附录: 源程序 (14)英汉小词典1 设计内容及要求1.1设计内容(1)、在计算机中建立有限规模电子英汉词典(文件), 利用程序实现电子英汉词典查询、增词、删除、修改和维护工作。

(2)、词典内容为: 每行对应一个词条, 每个词条由两个字符串组成, 字符串用若干空格符分开;前一个是单词字符串(英文), 后一个是释义字符串(汉字), 使用分号作为多个释义分隔符(无空格)。

(3)、对单词和释义字符串长度限定分别为不少于20个和40个字符, 词条数限定为不多于200条。

(4)、采取菜单工作方法。

在一个操作实施以后, 程序问询是否继续实施该操作。

如输入A或a, 则反复同一操作, 不退回到菜单;如输入其它信息, 则回到菜单等候另一次选择。

仅当选择退出操作时, 程序应问询是否将修改后词典存盘, 并依据用户选择存盘退出或不存盘退出。

1.2设计任务及具体要求关键利用c语言文件操作能力设计开发一个英汉小词典, 最少含有以下功效: 查询、删除、增词、修改单词。

操作界面要符适用户通常习惯, 图形或文本界面全部能够。

要求:明确课程设计目标, 能依据课程设计要求, 查阅相关文件, 为完成设计准备必需知识;提升学生用高级语言进行程序设计能力, 关键提升用C语言进行文件操作和绘图应用编程技术水平;初步了解软件开发通常方法和步骤;提升撰写技术文档能力。

词典编码课程设计

词典编码课程设计

词典编码课程设计一、课程目标知识目标:1. 学生能理解词典编码的基本概念,掌握编码的规则和技巧。

2. 学生能够运用所学知识,对给定词汇进行正确编码。

3. 学生了解词典编码在信息技术和语言学中的应用。

技能目标:1. 学生培养快速准确查找词汇的能力,提高信息处理速度。

2. 学生通过词典编码的实践操作,提高逻辑思维和问题解决能力。

3. 学生学会使用词典编码进行信息整理和归纳。

情感态度价值观目标:1. 学生培养对词典编码的兴趣,激发学习信息技术的热情。

2. 学生通过团队协作,增强合作意识,培养共同解决问题的精神。

3. 学生认识到词典编码在现实生活中的重要性,树立正确的信息观念。

课程性质:本课程为信息技术学科,以实践操作为主,注重培养学生的动手能力和逻辑思维能力。

学生特点:六年级学生具备一定的信息素养,对新鲜事物充满好奇,动手能力强,但注意力容易分散。

教学要求:结合学生特点,采用任务驱动法,激发学生学习兴趣,注重理论与实践相结合,提高学生的实际操作能力。

通过课程目标的分解,使学生在完成具体学习成果的过程中,达到课程目标的要求。

后续教学设计和评估将以此为基础,确保课程目标的实现。

二、教学内容1. 词典编码基本概念:介绍词典编码的定义、作用及其在信息技术领域的应用。

- 教材章节:第一章第二节2. 编码规则与技巧:讲解编码的基本规则,如字母与数字的对应关系,特殊字符的编码方法。

- 教材章节:第二章3. 词汇编码实践:选取常见词汇,指导学生进行编码实践,巩固所学知识。

- 教材章节:第三章4. 词典编码应用:介绍词典编码在实际应用中的案例,如电子词典、在线翻译等。

- 教材章节:第四章5. 编码信息处理:教授如何运用词典编码进行信息整理、归纳和查找。

- 教材章节:第五章6. 逻辑思维与问题解决:通过编码练习,培养学生逻辑思维和问题解决能力。

- 教材章节:第六章7. 团队协作与交流:组织学生进行小组活动,共同完成编码任务,提高合作能力。

词典编码的课程设计

词典编码的课程设计

词典编码的课程设计一、课程目标知识目标:1. 学生能理解并掌握词典编码的基本概念与原理;2. 学生能掌握至少三种词典编码方法,并了解各自优缺点;3. 学生能运用所学的词典编码知识,对给定词汇进行编码和解码。

技能目标:1. 学生具备运用计算机软件进行词典编码操作的能力;2. 学生能够通过小组合作,共同解决词典编码过程中的问题;3. 学生能够运用所学知识,设计并实现一个简单的词典编码程序。

情感态度价值观目标:1. 培养学生积极探索、勤于思考的学习态度;2. 增强学生的团队协作意识,提高沟通与协作能力;3. 引导学生认识到编码技术在生活中的应用,激发对信息技术的兴趣。

课程性质:本课程为信息技术课程,旨在让学生掌握词典编码的相关知识,培养其信息技术素养。

学生特点:六年级学生具有一定的信息技术基础,对新鲜事物充满好奇,喜欢动手实践,但注意力容易分散。

教学要求:结合学生特点,注重理论与实践相结合,充分调动学生的主观能动性,提高课堂参与度。

通过小组合作、任务驱动等方式,引导学生主动探究、积极思考,实现课程目标。

在教学过程中,关注学生的学习进度,及时进行教学调整,确保每位学生都能掌握课程内容。

二、教学内容1. 词典编码基本概念:编码原理、编码方法、编码规则。

- 教材章节:第三章第一节“编码与解码的基本概念”- 内容安排:讲解编码原理,介绍编码方法及其应用场景。

2. 常见词典编码方法:霍夫曼编码、ASCII编码、Unicode编码。

- 教材章节:第三章第二节“常见的编码方法”- 内容安排:分别介绍霍夫曼编码、ASCII编码、Unicode编码的原理、特点和应用。

3. 词典编码操作实践:- 教材章节:第三章第三节“编码操作实践”- 内容安排:指导学生运用计算机软件进行词典编码操作,如使用在线编码转换工具。

4. 小组合作设计与实现简单词典编码程序:- 教材章节:第三章第四节“编码程序设计”- 内容安排:分组讨论,共同设计并实现一个简单的词典编码程序。

词典变位词检索系统

词典变位词检索系统

《数据结构课程设计》实验报告•57.词典变位词检索系统•在英文中,把某个单词字母的位置(顺序)加以改变所形成的新字词,英文叫做anagram,不妨译为变位词。

譬如said(say的过去式)就有dais(讲台)这个变位词。

在中世纪,这种文字游戏盛行于欧洲各地,当时很多人相信一种神奇的说法,认为人的姓名倒着拼所产生的意义可能跟本性和命运有某种程度的关联。

所以除了消遣娱乐之外,变位词一直被很严肃地看待,很多学者穷毕生精力在创造新的变位词。

本设计要求词典检索系统实现变位词的查找功能。

dictionary.cchar a[102][30]={//0号单元留空"", "abide","abound","abreast","abstain","absurs","adore","adorn","advent","advers","at", "baby","back","bacon","bad","badge","badly","ball","ban","bank","bar", "cab","cabin","cable","cafe","cage","cake","call","calm","came","camp", "dais","damn","damp","dance","danger","dark","dash","data","date","dawn", "day","dead","deaf","deal","dean","dear","death","debt","deck","deer", "each","eager","eagle","ear","early","earn","earth","ease","east","easy", "eat","edge","edit","effect","effort","egg","ego","elder","elect","else", "face","fact","factor","fade","fail","faint","fair","fake","fall","false", "gain","game","gap","gate","gay","gaze","gear","gene","germ","get", "hail","hair","half","hall","halt","ham","hand","hang","hard","said"};//严格按照字典里的顺序int length=101;bianweici.h#include<string.h>#include<stdio.h>#include<malloc.h>typedef char ElemType;typedef struct Diction{ElemType word[100];struct Diction *next;}Diction;typedef struct LNode{char c[29];struct LNode *next;}LNode,*LinkList;int m;//记录字符串长度int n;//记录字符串中的字符种类数char map[256];//记录是哪几种字符char A[256];int count[256];//记录每种字符有多少个bienweicioperation.cvoid Make_Map(char *str)//统计字符串的相关信息{int s[256];int i;memset(s,0,sizeof(s));memset(count,0,sizeof(count));m=strlen(str);while(*str){s[*str]++;str++;}n=0;for(i=0;i<256;i++)if(s[i]){map[n]=i;count[n]=s[i];n++;}}int stack[1000];Diction *Find(int depth,Diction *head,Diction *HEAD,LinkList *L)//对所输入的单词进行排列,并存在链表L中{LinkList s;Diction *p,*p1,*p2;p=head;if(depth==m){int i;for(i=0;i<depth;i++)A[i]=map[stack[i]];A[i]='\0';/*printf("%s",A);*//*显示所输入单词的所有排列,A就是其中一员,循环输出A*/ s=(LinkList)malloc(sizeof(LNode));for(i=0;i<=depth;i++)s->c[i]=A[i];s->next=(*L)->next;(*L)->next=s;while(p!=NULL){if(strcmp(p->word,A)==0)break;p=p->next;}if(p!=NULL){p1=HEAD;while(p1->next!=NULL){p1=p1->next;}p2=(Diction *)malloc(sizeof(Diction));strcpy(p2->word,A);p1->next=p2;p2->next=NULL;}}else{int i;for(i=0;i<n;i++)if(count[i]){stack[depth]=i;count[i]--;Find(depth+1,head,HEAD,L);count[i]++;}}return HEAD;}Bianweici.c#include"bianweici.h"#include"dictionary.c"#include"bianweicioperation.c"void main(){int x=0;int i=0;int low,mid,high;Diction *head;LinkList L,p;printf("======================================================== ==================\n");printf(" 词典变位词检索系统\n");printf("======================================================== ==================\n");head=NULL;while(1){int j=0;//j用来统计变位词的个数char str[30];Diction *HEAD=(Diction *)malloc(sizeof(Diction));HEAD->next=NULL;L=(LinkList)malloc(sizeof(struct LNode));//建立带头结点的链表L,用来存放所输入单词的所有排列组合L->next=NULL;printf("输入单词:");gets(str);Make_Map(str);HEAD=Find(0,head,HEAD,&L);p=L->next;while(p){//折半查找法low=1;high=length;while(low<=high){mid=(low+high)/2;if(strcmp(p->c,a[mid])==0&&strcmp(p->c,str)!=0){j++;//j用来统计变位词的个数printf("%s ",a[mid]);//找到就输出变位词break;//找到就退出,进行下一排列比较}else if(strcmp(p->c,a[mid])<0)high=mid-1;else low=mid+1;}p=p->next;}//将链表L中的单词与词典中的单词进行比较if(j)printf("是%s的变位词\n",str);else printf("%s没有变位词或本字典不包含它的变位词\n",str);printf("输入0继续1退出\n");scanf("%d",&x);getchar();if(x==1)break;}}。

成语词典查询系统设计实验报告

成语词典查询系统设计实验报告

成语词典查询系统设计实验报告一、实验目的1.了解 SQL 语言各语句的语法与使用方法;2.掌握 DataProvider和DataSet两个核心组件的常用属性、方法的含义及使用方法;3.掌握利用DataProvider 和 DataSet 两个核心组件实现数据库记录的插入、修改、删除的方法;4.使学生能够通过老师讲过的内容灵活运用多种控件,实现对简单数据库的维护,能够自行调试,显示或保存实验结果。

并使学生更深入的掌握面向对象程序设计这门课程。

二、基本要求( 1)创建成语词典查询系统所需的表(成语词典表),并能连接上数据库。

(2)完成对所建成语词典表的插入、修改、删除功能(3)完成对成语的精确和模糊查询(4)为完成上述功能,还需运用菜单、工具条等多种控件三、实验步骤:(1)创建数据库:打开 Microsoft Office Access 2007 ,创建数据库 cd.mdb, 然后新建一个名为 cyk1 的表,如图 1 所示。

图 1 表 cyk1 的结构(2)创建项目:在C#中创建一个名为“成语词典查询系统”的Windows 应用程序项目。

将数据库 cd.mdb 保存至项目中的 Bin\Debug 文件夹下。

如图 2 所示。

图 2(3)设计界面:在空白窗体中添加菜单MenuStrip 、标签、 TextBox、 DataGridView等控件,对控件的属性进行修改,如表 1 所示:表 1 控件属性及属性值控件名称属性属性值MenuStrip浏览(查看所有、保存结果、退出)、查询(精确Items查询、模糊查询)、添加、删除、修改、退出Label1Text选择查询方式:GroupBox1Text操作界面Label2Text设置查询值:Label3Text拼音:Label4Text成语:Label5Text备注:Label6Text显示界面:button1Text精确查询button2Text模糊查询button3Text添加button4Text导出 Word 文件》button5Text修改button6Text删除comboBox1Items拼音检索、汉字检索然后进行整体布局调整,窗体效果如图3、图 4 所示。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

词典变位词检索系统目录1绪论 (1)2系统分析 (1)2.1功能需求 (1)2.2数据需求 (2)2.3性能需求 (2)3总体设计 (2)3.1系统设计方案 (2)3.2功能模块设计 (4)4详细设计 (4)4.1数据结构定义 (4)4.2读入词典模块 (5)4.3求出变位词并输出合法单词模块 (6)4.4循环输入单词模块 (8)5调试与测试 (8)5.1调试 (8)5.2测试 (9)6结论 (10)结束语 (10)参考文献 (10)附录1-用户手册 (11)附录2-源程序 (13)摘要随着人们对英语认识的提高,日常单词量在逐渐增加,为了更快提升人们单词量,可以将一个单词的所有变位词一起记忆。

这就需要开发一种词典变位词检索系统,用来查找出一个单词的所有变位词中的合法单词。

基于这些,应用C 语言为开发工具,运用数据结构中线性表结构来实现词典变位词的检索系统。

本系统的开发是用C语言作为程序开发的工具,利用抽象数据类型,实现单词的变位词检索功能,系统首先处理用户给出的词典文件,之后系统从标准输入函数中反复接受一个单词或字符串的输入,然后系统输出该字符串的所有可能排列和其中形成的合法单词。

本文从分析词典变位词检索系统开发需求出发,描述了系统的总体设计、详细设计、调试和测试等整个系统的设计和实现过程,并对系统的完成情况进行总结。

关键词:全排列;合法单词;词典文件1绪论随着学生英语单词量的不断增加,为了方便学生记忆更多的单词,可以将一个单词的所有变位词一起进行记忆。

词典变位词检索系统就是从词典中查找输入单词的变位词中的合法单词的系统。

根据课程设计任务书要求,本系统开发主要完成以下功能和性能。

(1) 处理词典文件:从用户给出的词典文件中读取单词进线性表。

(2)求出变位词并输出合法单词:输入单词后输出单词字母所有可能形成的变位词,即单词的全排列,然后从词典中检索出生成的全排列中的合法单词。

(3)循环输入单词:系统可以循环输入单词进行检索。

2系统分析2.1 功能需求本系统主要是从词典中检索出单词变位词的系统。

该系统需要有处理词典、求出变位词并输出合法单词、循环输入单词的功能。

2.2数据需求根据分析,本系统中主要涉及到的数据为单词。

2.3 性能需求要求性能稳定可靠、运算速度快、安全性能高、方便易懂性、使用合理性、实用性强、可移植性好。

3总体设计3.1系统设计方案系统采用抽象数据类型线性表,线性表的各种定义如下:(1) 抽象数据类型定义线性表的抽象数据类型定义如下:ADT List{数据对象:D={a i|ai∈ElemSet,i=1,2,...,n, n≥0}数据关系:R1={<ai-1,ai>|ai-1,ai∈D,i=2,...,n}基本操作:InitList(&L)操作结果:构造一个空的线性表L。

DestroyList(&L)初始条件:线性表L已存在。

操作结果:线性表L被销毁。

ClearList(&L)初始条件:线性表L已存在。

操作结果:将线性表L重置为空。

ListEmpty(L)初始条件:线性表L已存在。

操作结果:若线性表L为空,则返回TRUE,否则FALSE。

NextElem(L,cur_e,&next_e)初始条件:线性表L已存在。

操作结果:若cur_e是L的数据元素,且不是最后一个,则用next_e返回它的后继,否则操作失败,next_e无定义。

GetElem(L,i,&e)初始条件:线性表L已存在且非空。

操作结果:用e返回L中第i个元素的值。

}ADT List(2) 全局变量int m;//记录字符串长度int n;//记录字符串中的字符种类数char map[256];//记录是哪几种字符char A[256];//接收排完的字符串int count[256];//记录每种字符有多少个int stack[1000];//记录字符的位置(3) 存储结构采用顺序表的链式存储结构。

(4) 检索算法系统采用单链表存储,检索过程主要采用字符串匹配来实现。

3.2功能模块设计词典变位词检索系统分为三个模块,分别为读入词典、求出变位词并输出合法单词、循环输入单词。

功能模块图如图1所示。

图1功能模块图(1) 读入词典模块读入词典模块,实现从用户给出的词典文件中读入单词进线性表。

(2) 求出变位词并输出合法单词模块求出变位词并输出合法单词模块,实现输入单词后输出单词字母所有可能形成的变位词,即单词的全排列,并从词典中检索出生成的全排列中的合法单词。

(3) 循环输入单词模块系统可以循环输入单词进行检索。

4详细设计词典变位词检索系统主要实现读入词典、求出变位词并输出合法单词、循环输入单词,它们的详细设计和实现过程如下介绍。

4.1 数据结构定义在本系统中使用了线性表数据结构,结构类型定义如下。

定义词典typedef char ElemType;typedef struct Diction{ElemType word[100];//单词struct Diction *next;//指针}Diction;4.2读入词典模块读入词典模块是将用户给出的diction.txt词典文件读入到链式存储结构的顺序表中。

具体实现流程如图2所示。

N图2读入词典流程图读入词典流程图解释如下:首先定义int k;Diction *head,*p1,*p2;FILE *fp;开辟新结点p1=p2=(Diction *)malloc(sizeof(Diction));令k=0记录单词个数,head=NULL,如果文件打不开输出提示并返回head,如果打开成功,读取一个单词给p1,当k=1时,说明是第一个单词head=p1,p2指向p1,以后循环,每读入一个单词给开辟的新结点p1,最后p2->next=NULL,返回head,并输出一共有多少单词。

4.3求出变位词并输出合法单词模块求出变位词并输出合法单词模块,先对输入的单词进行全排列,每排出一个可能,输出排列,从词典中依次对比看是否为合法单词,如果是存入新建的单链表中然后后全部输出合法单词。

程序流程如图3所示。

图3 求出变位词并输出合法单词流程图统计单词字符串的信息,用memset函数将数组空间初始化,m记录字符串长度,n记录字符串中的字符种类数,map记录是哪几种字符,count记录每种字符有多少个。

具体实现流程如图4所示。

N图4 求出变位词并输出合法单词流程图用stack记录字符的位置,复制字符数组map中第stack[i]个字符给A[i],同时输出字符,直到第一个可能的单词结束。

从词典链表中第一个结点存的单词开始,依次查找,知道最后一个,如果是合法单词,则新建结点p2,存入这个单词,直到所有全排列都输出结束后,将存储是合法单词的单链表HEAD带回,在主函数中输出。

4.4循环输入单词模块循环输入单词模块是用来在输出结果后跳转到“请输入单词”位置,使系统能实现循环输入单词进行检索功能。

该功能在主函数中用while(1)循环,printf("输入0继续1退出\n"),输入跳出条件用if判断,break跳出while结束程序来实现。

5调试与测试5.1 调试调试是软件开发过程中的一个重要环节,也是最复杂,对软件开发者来说也是最艰巨的任务。

调试的任务是及时改正测试过程中发现的软件错误。

具体地说,调试过程由两个步骤组成,它从表示程序中存在错误的某迹象开始,首先确定错误的准确位置,也就是找出哪个模块或哪个语句引起的错误。

然后仔细研究推断代码以确定问题的原因,并设法改正。

调试过程主要是运行编制好的程序,然后遇到错误后根据系统的提示,找到相关的问题所在。

本系统调试过程中遇到问题、原因和解决方法如下面介绍。

(1)程序不能运行程序运行到输出单词所有的变位词时,出现错误,其原因是指针指向的位置出现错误导致程序传参错乱无法运行。

解决办法:使程序进入调试状态在传参出现错误的位置一句一句查找传递的参数是否是你所希望的,如若不是就加以修正。

(2)运行完程序一次有错误提醒原因是上次运行程序后没有关闭操作界面当点击编译时会有一个错误提示,解决方法:将上一次运行时的操作界面关闭。

5.2 测试软件测试是软件生存期中的一个重要阶段,是软件质量保证的关键步骤从用户的角度来看,普遍希望通过软件测试暴露软件中隐藏的错误和缺陷,所以软件测试应该是“为了发现错误而执行程序的过程”。

或者说,软件测试应该根据软件开发各阶段的规格说明和程序的内部结构而精心设计一批测试用例(即输入数据及其预期的输出结果),并利用这些测试用例去运行程序,以发现程序错误或缺陷。

过度测试则会浪费许多宝贵的资源。

到测试后期,即使找到了错误,然而付出了过高的代价。

测试数据过程如下:输入单词:stop此单词的全排列为:opst opts ospt otps otsp post pots psot psto ptos ptso sopt sotp spot spot stop stpo tops tosp tpos tpso tsop tspo其中是单词的有:postspotstop输入0继续1退出输入单词:bee此单词的全排列为:bee eeb ebe没有这个单词输入0继续1退出1结束。

经过测试,给出特定的单词在系统中都能找到相应的变位词,系统的功能和性能得以实现。

但是由于用户给出的词典中单词量有限,所以输入有些单词,在词典中不能找到相映的合法单词。

6结论经过两周的课程设计词典变位词检索系统基本完成,实现了任务书中的所有要求。

但是还有不足,比如说不可以将输入的单词的解释一起输出,同时检索单词的同义词,放到学习中实际应用性不算高等等。

最好是丰富其字典中的词汇量,提高其应用性。

结束语为期两个礼拜的C语言综合课程设计实习终于顺利完成,在这期间真正的学到了一些经验,能够熟练的掌握一些C语言的编程思路,能够熟练的运用学到的函数,并实现了一系列的功能。

在这期中我感受到了成功的喜悦,每个子功能实现都是在铺垫成功的基石。

我最大的收获是学会了体验自己独立完成事情的喜悦之情。

与此同时我提高了自己编成的能力,学会了较多的编成技巧,并且融合了C 语言知识,虽不是全部,但对我来说是质的飞跃。

路漫漫其修远兮,吾将上下而求索。

学习编程的路还很长,我将会更加努力的学习C语言,以便于我攀登编成的高峰。

参考文献[1]谭浩强.C语言程序设计(第三版).清华大学出版社[2]林碧英,C语言程序与设计教程.中国电力出版社,2006[3]美赫伯特.希尔特,王子恢等译.C语言大全.电子工业出版社,2003附录1-用户手册点击运行,首先读入词典文件,并输出词典中单词总数,如图4所示。

图5运行界面输入一个单词如“post”,按回车,输出单词的全排列,并输出全排列中的合法单词,如图5所示。

相关文档
最新文档