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

合集下载

电子行业C语言电子词典报告

电子行业C语言电子词典报告

电子行业C语言电子词典报告1. 引言本报告旨在介绍电子行业C语言电子词典的设计与实现。

电子词典是一种方便用户查询和使用的工具,具有快速、准确和便捷的特点。

C语言电子词典是专门为C语言程序员设计的词典,用于查询C语言中的关键词、函数和库等相关信息。

本报告将首先介绍电子词典的需求分析,然后详细描述电子词典的设计和实现过程。

最后进行功能测试和性能评估,以验证电子词典的正确性和稳定性。

2. 需求分析电子词典主要针对C语言程序员的需求,具体需求如下:•提供C语言关键词的解释和示例代码;•提供C语言常用函数的说明和用法;•提供C标准库的函数、常量和宏定义等相关信息;•支持用户自定义词汇,并提供相应的解释和示例代码;•支持查询历史记录功能,方便用户追溯查询过的内容;•提供用户界面友好的交互界面,支持快速查询功能。

3. 设计与实现3.1 数据结构设计在设计电子词典的数据结构时,需要考虑到效率和易用性。

本文采用哈希表作为主要的数据结构,用于存储词汇和对应的解释。

哈希表的设计考虑了查询效率的问题,通过合理的哈希函数和解决冲突的方法,来优化查询过程。

每个词汇将作为哈希表的键,对应的解释将作为哈希表的值。

typedef struct Node{char word[MAX_WORD_LENGTH];charexplanation[MAX_EXPLANATION_LENGTH]; } Node;typedef struct Dictionary{Node* nodes[MAX_SIZE];int size;} Dictionary;3.2 查询功能实现电子词典的查询功能是核心功能之一,用户可以输入关键词或函数名进行查询。

查询功能的实现思路如下:1.用户输入关键词;2.根据关键词计算哈希值;3.在哈希表中查找对应的节点;4.如果找到节点,则输出解释和示例代码;5.如果未找到节点,则提示用户未找到相关信息。

3.3 用户界面设计用户界面设计需要考虑到用户的使用习惯和操作习惯,以减小用户的学习成本。

电子词典的设计与实现

电子词典的设计与实现

电子词典的设计与实现近年来,随着科技的发展,各类电子产品不断涌现,其中电子词典成为越来越多人的必备工具。

电子词典具有方便携带、实用便捷等优点,而其设计与实现也往往牵扯到词库的建设、功能的设计以及用户体验等多个方面。

一、词库建设词库是电子词典的核心,影响着其使用效果。

词库的建设需要收集大量的文字资料,并采用专业的编辑方式进行整理,保证词库数据的质量。

除此之外,还需要考虑电子词典使用的场景和需求,例如列入特定行业的词汇、常用外语词汇等。

此外,词库的更新也是不可忽视的一个问题。

随着时代的发展,新兴词汇不断涌现,旧有词汇的用法也在不断改变。

因此,词库的更新需要跟随时代步伐,及时收录新兴词汇和新用法,保证用户使用的准确性和时效性。

二、功能设计电子词典除了基本的单词查询外,还需要具备一些其他便捷的功能,例如词语发音、例句展示、翻译等。

这些功能的设计需要考虑用户使用场景和使用习惯,同时也需要具有良好的交互性和易用性。

例如,在词语发音方面,需要保证发音准确性和流畅性,以及提供多种发音选项以满足不同用户的需求。

在例句展示方面,需要提供丰富的例句,并保证其与词汇语境的紧密联系。

在翻译方面,需要考虑多语言翻译的准确性和自然性,并能提供多种语言相互翻译的功能。

三、用户体验用户体验是电子词典设计与实现中不可忽视的一个方面。

良好的用户体验不仅可以提高用户使用的便捷度和效率,还可以提高用户的满意度和忠诚度。

因此,电子词典的设计需要从用户的角度出发,考虑用户的使用场景和使用习惯,提供便捷的操作方式和良好的视觉效果。

良好的用户体验应该具有以下特点:1.简洁明了:界面简洁明了,功能齐全但不过于复杂,操作简单直观。

2.快速响应:查询速度快,无卡顿、无延迟。

3.多语言支持:提供多语言支持,方便不同语种用户的使用。

4.数据准确性:数据源准确可靠,避免用户因错误数据导致的使用误解。

5.便捷携带:轻便、小巧、易于携带,方便用户在室内、室外、旅途中使用。

python英语词典实验报告实践报告

python英语词典实验报告实践报告

python英语词典实验报告实践报告
实验报告/实践报告
实验名称:Python英语词典的实现
实验目的:
1. 熟悉Python编程语言
2.理解字典数据结构及其操作
3.实现一个简单的英语词典应用程序
实验器材:
1.计算机
2. Python编程环境
实验原理与方法:
1. 字典是Python中的内置数据类型,由键值对(key-value pair)组成
2. 键(key)是唯一的,用于索引值(value)
3. 使用Python的`dict(`函数,可以创建一个空的字典;使用花括号`{}`表示字典,键值对之间使用冒号`:`分隔
4. 字典的键(key)可以是任意不可更改的类型(数字、字符串、元组等),值(value)可以是任意类型
5. 使用字典的索引(key),可以获取对应的值(value)
实验步骤:
1. 创建一个空字典`dictionary`,用于存储英语单词和对应的释义
2.使用键值对形式,将一些英语单词和释义添加到字典中
3.编写一个函数,实现根据用户输入的单词,查询对应的释义并输出
4.编写一个循环,让用户可以多次查询单词直到退出程序
实验结果:
成功实现了一个基本的Python英语词典应用程序。

用户可以输入单
词查询对应的释义,并多次查询直到退出程序。

实验心得:
通过这次实验,我对Python编程语言的基本语法有了更深入的理解,并学会了如何使用字典数据结构。

通过实践的方式提高了我的编程技能和
解决问题的能力。

这个简单的英语词典应用程序虽然功能不复杂,但对我
的学习和实践有着积极的影响。

JAVA电子英汉词典课程设计报告

JAVA电子英汉词典课程设计报告

课程设计报告课程设计名称Java程序设计专业_____________________________班级_____________________________学号____________________________姓名__________________________指导教师__________________________成绩_____________________________年月日目录、设计任务与要求1. 1.1设计任务与要求 1. 1.2 选题目的与意义1. 、需求分析2.. 2.1用户需求分析 .2. 2.2 开发环境分析.3. 三、系统设计 4.. 3.1 系统总体设计 .4. 3.2 功能模块设计 .5. 3.3 类的设计 6.. 3.4 数据库设计.9. 四、程序实现 1..1. 五、测试运行 六、设计体会4.1程序流程图 4.2 关键算法与技术实现 4.3 类与数据结构实现5.1系统测试方案 5.2 运行结果分析 .1..1. .1..3. .2..7.. 2..8.. .2..8. .2..9. 3..3..、设计任务与要求1.1 设计任务与要求通过本课程设计实践,达到以下目的:(1)培养学生严谨务实的工作态度,并在老师的指导下,提高分析问题和解决问题的能力,促进理论联系实际学风养成。

(2)巩固和加深对面向对象程序设计的基本概念、基本理论和实现技术的理解。

(3)掌握Java 开发的主要环境与工具,掌握面向对象的常用控件的使用方法。

(4)初步掌握面向对象系统分析与设计的基本方法和步骤,并能针对简单的实际应用问题进行初步地分析和设计。

(5)掌握Java编程语言,并针对具体应用问题进行编程实现。

(6)通过撰写课程设计论文,锻炼学生科技论文写作能力。

电子英汉词典功能要求:能够编辑词典库中的信息,能够实现英译汉,汉译英(要考虑一词多义)。

该系统主要用于实现英汉互译的功能,先选择是英译汉还是汉译英然后再查询框中查询,该系统会自动弹出匹配信息1.2 选题目的与意义我选择电子英汉互译词典这一课题的目的在于巩固所学JAVA语言编辑基本功,掌握Jdk, Editplus,Eclipse,Jcreator等开发工具的运用,拓宽常用类库的应用。

电子词典设计与实现

电子词典设计与实现

电子词典的设计与实现摘要二十世纪后半叶,伴随着社会的迅速发展与进步,以电子计算机为代表的现代科学获得了突飞猛进的发展并迅速和人们的日常生活结合在一起。

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

虽然只有十来年的历史,电子词典却已经迅速发展壮大,成为词典家族中具有旺盛生命力的一员。

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

本文将要介绍的软件就是一个多功能学单词软件,主要介绍了这个软件制作环境,制作流程,对数据库的操作以及它的使用方法。

用户可以根据自己的需要去查询单词,添加单词,删除单词,编辑单词,浏览词库中的单词,也可以进行四六级考研词汇等。

另外,它还给单词学习者们提供了一个背单词的好方法。

每一个用户都可以通过创建一个用户名来背诵单词,随时查看自己的历史记录,以便确定自己的背诵进度。

本文从软件工程的角度进行了详细的阐述。

该系统的开发工具是Microsoft Visual Basic 6.0,使用的数据库为Microsoft Access version 7.0 。

关键词:电子词典,Microsoft Visual Basic 6.0,数据库ABSTRACT20 half after centuries leaf,with the rapid development of society, with computer for representative of the development that modern science acquires to advance by leaps and bounds combine quick combine together with the people's daily life.The calculator technical development and progresses also make the naissance of the electronicslanguage Electron Dictionary make possible.Although only ten histories of the next years, the electronics Electron Dictionary has already developped quickly strong, become having a member of the prosperous vitality in the Electron Dictionary household.Though it is still not enough to replace the traditional Electron Dictionary currently, in English study and teaching, because of it practical, fast, accurate, economy etc. characteristics, have already become the emollient competitor of the traditional English-to-Chinese Electron Dictionary , and put forward the challenge to the traditional Electron Dictionary .The software that this text will introduce is a multi-function learn the single phrase software, mainly introduced this software manufacture environment, the manufacture process, to operation and its operation methods of the database.The customer can search the single phrase according to own demand, increasing the single phrase, deleting the single phrase, editting single phrase etc..Moreover, it returned to provide a good method that carries on the back the single phrase for the single phrase learners.Each customer can pass to establish an user's name to recite from memory the single phrase.At any time look into own history record, for the purpose of assurance recite from memory the degree of progress ownly.Carried on to elaborate carefully from the angle of the software engineering.It is Access database that the development tool of that system is the powerbuilder 9.0 databases of the usages.Key words:The Electron Dictionary ,Microsoft Visual Basic 6.0, Access database目录摘要 (1)ABSTRACT (2)1 概述 (1)2 系统分析 (2)2.1系统目标.................................. 错误!未定义书签。

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

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

电子词典系统设计实验报告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语言课程设计电子词典随着科技的不断进步和发展,计算机技术也在不断的发展和完善。

计算机编程语言也应运而生,其中c语言成为了最为流行和广泛应用的一种编程语言。

为了更好地学习和掌握c语言,我们需要不断地进行练习和实践。

而课程设计电子词典就是一个非常好的实践项目。

本文将对c语言课程设计电子词典进行详细的介绍和分析。

一、电子词典简介电子词典是一种类似于纸质词典的电子设备。

电子词典将词典内容数字化存储在内部芯片中,通过一个屏幕显示出来。

电子词典拥有很多优点,比如存储空间更大、功能更强大、可搜索性更高等等。

今天,电子词典是很多人学习和工作必不可少的工具之一。

二、c语言课程设计电子词典的设计思路c语言课程设计电子词典是一种将词典内容和c程序功能相结合的设计项目。

他的设计思路如下:1.定义词典内容结构体在程序中需要定义一个结构体,用来存储词典内容。

结构体的成员包括单词、单词的释义、音标等。

typedef struct word{ char name[30]; // 单词名称char symbol[30]; // 单词音标charmean[400]; // 单词含义}word;2.构建词典数据将词典中的单词、释义、音标等内容保存到结构体中。

并将多个结构体数据包含在一个数组中。

word dictionary[] = { { "apple", "[ˈæpl]", "a round fruit with smooth red or yellow skin and firm white flesh" }, { "banana", "[bəˈnɑː.nə]", "a long curved fruit with a yellow skin" }, { "cat", "[kæt]", "a small animal with fur, four legs, a tail, and claws" }, { "dog", "[dɒɡ]", "a common animal with four legs, fur, and a tail" }, { "elephant", "[ˈel.ɪ.fənt]", "a very large grey animal with a long nose called a trunk" }};3.实现单词查询功能在程序中,我们需要实现一个单词查询的功能。

基于WinCE的电子词典的设计与实现的开题报告

基于WinCE的电子词典的设计与实现的开题报告

基于WinCE的电子词典的设计与实现的开题报告一、选题背景:随着人们生活水平的提高,英语学习已经成为了越来越多人的追求。

尤其是在高校英语学习中,电子词典已经成为了一种重要的辅助工具。

然而,普通的电子词典无法满足学生和教师的需求,需要一种更为功能强大的词典。

本课题基于 WinCE 平台开发一款电子词典,来满足用户需求。

二、主要内容:本课题主要涉及以下方面的内容:1.需求分析:通过分析用户需求,明确电子词典的主要功能、特点和优点。

通过分析市场情况,确定本电子词典在设计上所要满足的独特需求。

2. 系统架构设计:本系统基于WinCE平台,需要确定系统的架构、模块划分及各模块之间的交互方式等。

3. 数据库设计:对于一个电子词典系统,必须有一个强大而且稳定的数据库系统。

本系统数据库采用MySQL数据库,需要设计词汇以及相关属性的表格,以满足词典查询和管理。

4. 界面设计:采用视觉化模块,以确保该电子词典的操作界面友好、美观、易于使用。

5. 功能实现:本系统应用了一些基本的查询算法,如模糊查询、联想查询、相似词查询等,并可支持听读模式,可以在线发音。

同时,还考虑实现用户自定义词典、背单词等较为高级的功能。

6. 测试与评估:采用合适的测试方法,对电子词典进行测试,发现存在的问题并及时改进,以确保该系统的稳定性、高效性以及可靠性。

三、研究目标与意义:本课题开发的电子词典系统,主要研究基于WinCE平台的系统设计和实现方案,以及一些重要的算法开发实践。

该词典系统具有功能强大、易于使用的特点。

其通过该系统可有效提升学生和教师在英语学习方面的体验和效率,同时也可以作为WinCE系统开发方案的一个经典的案例。

四、研究方法:本课题主要采用以下方法进行研究:1. 调查方法:调查目标群体的需求和反馈,并据此进行需求分析和功能设计。

2. 数据库设计方法:采用MySQL数据库,通过设计表格实现数据存储与检索。

3. 软件开发方法:根据需求分析结果,采用面向对象的设计思想、UML建模工具进行系统的设计,并使用VC++进行软件开发。

英汉电子词典设计报告设计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()菜单选择函数, 可从新选择功能。

英汉电子词典设计报告_设计_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. 系统功能电子行业电子词典系统主要包括以下功能:2.1 术语查询用户可以通过输入关键词来查询相关的电子行业术语。

系统会根据用户输入的关键词,在数据库中查找匹配的术语,并返回相应的解释和示例。

用户可以根据需要调整查询结果的排序方式,以获取更加准确的结果。

2.2 概念解释除了术语查询,系统还提供了对电子行业相关概念的解释。

用户可以通过输入一个概念的名称,系统将返回与该概念相关的详细解释和说明。

2.3 历史记录系统还会自动保存用户的查询历史记录,用户可以随时查看之前的查询记录,并进行再次查询。

这个功能可以帮助用户更好地管理和回顾自己的学习和工作过程。

2.4 收藏夹用户可以将常用的术语或概念收藏起来,以便在需要的时候快速查找。

收藏夹功能使得用户可以直观地管理自己喜欢的词条,避免重复查询或遗忘。

3. 系统特点电子行业电子词典系统有以下特点:3.1 多语言支持系统支持多种语言,用户可以根据自己的需要设置查询的语言。

这样,不同语种的用户都可以方便地使用该系统进行查询。

3.2 多平台支持电子行业电子词典系统支持多平台使用,包括Windows系统、Mac系统、Android系统和iOS 系统等。

网络电子词典实习报告

网络电子词典实习报告

大学计算机学院毕业实习成绩鉴定表计算机科学与技术学院2011级学生毕业实习报告专业:班级:姓名:指导教师:实习单位:实习时间:网络电子词典项目编写时间:作者:版本:v-1.0.0一、实验目的1.1引言二十世界后半叶,伴随着社会的迅速发展与进步,以电子计算机为代表的现代科学技术获得了突飞猛进的发展并迅速和人们的日常生活结合在一起。

计算机技术的发展和进步也使电子词典的诞生变得可能。

虽然只有十来年的历史,电子词典却已经迅速发展壮大,成为词典家族中具有生命力的一员。

本系统是一个网络电子词典,主要功能是为用户提供一个能实现查询用户注册,用户登陆和查询单词机查询历史记录等功能。

本文从项目的角度进行了简单的描述。

该系统是基于Linux系统下里利用了网络的基本知识,及sqlite数据库的相关知识。

1.2背景任何一种词语,使用频率高了,就会成为公共词汇。

英语作为一种国际通用性语言,部分单词已成为公共词汇,并且直接应用到汉语中来。

因其表达简洁,准确而受到人们青睐。

但是,这些新引入或者比较专业词汇,对于较少关注新闻,接触网络的群体而言,就会造成阅读困难。

传统的纸质英汉词典因为更新周期久,携带不便,价格相对昂贵而不能广泛应用。

方便,高效,快捷的电子词典才能满足现代人的需要。

1.3参考资料二、系统概述我们的这套系统采用的是tcp协议的并发服务器设计,可以满足多用户同时登录,用户登录后可以查询单词及历史记录,对于数据的存储我们采用的是sql 数据库技术,查找快速,保密性好!>具体功能能如下:<1>主界面(1) 用户登录(2) 用户注册(3) 用户退出<2>登陆成功后界面(1) 查询单词(2) 查询历史(3) 退出三、拓扑结构如下四、详细设计4.2结构体的设计注:__attribute__((__packed__))表示取消结构体对齐typedef struct{char _username[25]; //用户名char _word[25]; //密码} __attribute__((__packed__))user_t;typedef struct{int typed;int size;union{user_t uinfo; //用户信息char _word[100];}//客户端填词,服务端填写单词解释#define word content._word#define username content.uinfo._username#define password content.uinfo._passwd}__attribute__((__packed__))mhead_t;#define EXEC_SQL(db,sql,errmsg) do{\if(sqlite3_exec(db,sql,NULL,NULL,&merrmsg) < 0)\{\fprintf(stderr,“sqlite exec [%s]error : %s\n”,sql,errmsg);\exit(EXIT_FAILURE);}\}while(0);4.4部分核心代码1)服务器端登陆处理函数int do_login(int sockfd,sqlite3*pdb,char*_username,char*_password){char *errmsg;char buf[1024];char **dbresult;int nrow,ncolumn;char sql[1024] = {0};mhead_t *head = (mhead_t *)buf;//const char*sql="select * from user_table where NAME='%s' and PASSWORD='%s'";sprintf(sql,"select * from user_table where NAME='%s' and PASSWORD='%s';",_username,_password);if(sqlite3_get_table(pdb,sql,&dbresult,&nrow,&ncolumn,&errmsg)!=SQLITE_O K){fprintf(stderr,"sqlite3 get table error : %s.\n",errmsg);exit(EXIT_FAILURE);}if(nrow< 1){bzero(sql,sizeof(sql));//sprintf(sql,"insert into user_table values('%s','%s');",_username,_password);//EXEC_SQL(pdb,sql,errmsg);//rc = sqlite3_open(sql, &db);//if(rc!=SQLITE_OK){//fprintf(stderr,"Can't open database: %s\n",sqlite3_errmsg(db));head->type = USER_FAILURE;if(send(sockfd,buf,sizeof(mhead_t),0) < 0){perror("Fail to send");exit(EXIT_FAILURE);}printf("??????????\n");}else{head->type = USER_LOGIN;if(send(sockfd,buf,sizeof(mhead_t),0) < 0){perror("Fail to send");exit(EXIT_FAILURE);}//printf("???????\n");}sqlite3_free_table(dbresult);return 0;}单词查询函数int do_query(int sockfd,sqlite3* pdb,char*_word){char*errmsg;char danci[1024];char**dbresult;int nrow,ncolumn;char sql[1024]={0};mhead_t *head=(mhead_t*)danci;int i = 0,j = 0;sprintf(sql,"select* from dict_table where word='%s';",_word);if(sqlite3_get_table(pdb,sql,&dbresult,&nrow,&ncolumn,&errmsg)!=SQLITE_OK) {fprintf(stderr,"sqlite3 get table error:%s\n",errmsg);exit(EXIT_FAILURE);}int index = ncolumn;for(i = 0;i < nrow;i++){for(j = 0;j < ncolumn;j++){printf("%d : %s\t",index,dbresult[index]);index++;}}//printf("nrow : %d\n",nrow);sprintf(head->word,"%s",dbresult[3]);printf("result : %s\n",head->word);if(nrow == 0){bzero(sql,sizeof(sql));if(send(sockfd,danci,sizeof(mhead_t),0)<0){perror("Fail to send");exit(EXIT_FAILURE);}printf("没有查处此单词");}else{if(send(sockfd,danci,sizeof(mhead_t),0)<0){perror("Fail to send");exit(EXIT_FAILURE);}}sqlite3_free_table(dbresult);return 0;}绑定套接字,连接IP端口int init_tcp(char *ip,char *port){int sockfd;struct sockaddr_in server_addr;if((sockfd = socket(AF_INET,SOCK_STREAM,0)) < 0) {perror("Fail to socket");exit(EXIT_FAILURE);}bzero(&server_addr,sizeof(server_addr));server_addr.sin_family = AF_INET;server_addr.sin_port = htons(atoi(port));server_addr.sin_addr.s_addr = inet_addr(ip);if(bind(sockfd,(struct sockaddr *)&server_addr,sizeof(server_addr)) < 0) {perror("Fail to bind");exit(EXIT_FAILURE);}listen(sockfd,5);printf("listen....\n");return sockfd;}2)客户端登陆请求函数int do_login(int sockfd){int n=0;int count=0;char buf[1024] = {0};mhead_t *head = (mhead_t *)buf;printf("\n登陆,请输入用户名和密码\n");head->type = USER_LOGIN;head->size = sizeof(mhead_t);printf("Input username : ");fgets(head->username,sizeof(head->username),stdin);head->username[strlen(head->username) - 1] = '\0';printf("Input password : ");fgets(head->password,sizeof(head->password),stdin);head->password[strlen(head->password) - 1] = '\0';if(send(sockfd,buf,sizeof(mhead_t),0) < 0){perror("Fail to send");exit(EXIT_FAILURE);}bzero(&buf,sizeof(buf));while(1){n = recv(sockfd,buf + count,sizeof(mhead_t) - count,0);if(n <= 0){perror("Fail to send");exit(EXIT_FAILURE);}//若是数据未发送完成,再次接收的时候可补充count += n;if(count == sizeof(mhead_t))break;}if(head->type == USER_LOGIN){printf("\n恭喜您,登陆成功!\n");return 0;}else{printf("\n很遗憾,登录失败,请重新登陆\n");//printf("\n");return -1;}return 0;}单词查询函数int do_query(int sockfd){ int n=0,count=0;char buf[1024];// char yisi[1024];;int i = 0;printf("\n请输入你要查询的单词>");mhead_t *head=(mhead_t *)buf;fp=fopen("log.txt","a+");if(fp == NULL){fprintf(stderr,"Fail to open : %s\n",strerror(errno));exit(EXIT_FAILURE);}int line=get_line(fp);time_t t;//可能需要加头文件struct tm *ptm;t=time(NULL);ptm=localtime(&t);//printf("%s\n",head->word);//fprintf(fp,"%d,%s\n",++line,head->word);head->type=USER_WORD;head->size=sizeof(mhead_t);fgets(head->word,sizeof(head->word),stdin);head->word[strlen(head->word)-1]='\0';fprintf(fp,"%d ,%s: ",++line,head->word);if(send(sockfd,buf,sizeof(mhead_t),0)<0){perror("Fail to send");exit(EXIT_FAILURE);}bzero(buf,sizeof(buf));n=recv(sockfd,buf,sizeof(mhead_t),0);if(n<0){perror("Fail to send");exit(EXIT_FAILURE);}fprintf(fp,"%s,%d-%d-%d%d:%d:%d.\n",head->word,ptm->tm_year+1900,ptm->tm_ mon,ptm->tm_mday,ptm->tm_hour,ptm->tm_min,ptm->tm_sec);fflush(fp);fclose(fp);//printf("len : %d\n",strlen(buf));printf("单词的意思是:");printf("%s\n",head->word);do_word(sockfd);return 0;}记录查询函数int do_history(int sockfd){int n=0,count=0;char jilu[1024];;mhead_t *head=(mhead_t*)jilu;head->type=USER_WORD;head->type=sizeof(mhead_t);head->word[strlen(head->word)-1]='\0';printf("历史记录为:\n");fp=fopen("log.txt","a+");if(fp==NULL){perror("Fail to read");exit(EXIT_FAILURE);}// system("clear");while(fgets(jilu,sizeof(jilu),fp)!=NULL){printf("%s\n",jilu);}fclose(fp);//printf("%s\n",head->word);do_word(sockfd);return 0;}五、心得体会通过这次实习,我对计算机专业在行业实践中面临问题及解决办法有了一个较为全面的认识。

python英语词典实验报告实践报告(一)

python英语词典实验报告实践报告(一)

python英语词典实验报告实践报告(一)Python英语词典实验实践报告引言本报告旨在介绍Python英语词典实验实践的相关内容。

通过实践,我们将构建一个功能完善的英语词典,利用Python编程语言的强大功能,提高用户在英语学习中的便利性和体验。

实验目的•掌握Python编程语言的基本语法和数据类型•学习使用Python编写英语词典的基本功能•了解如何使用Python调用API获取单词解释•提高英语学习者的词汇积累能力和应用能力实验环境1.Python编程环境:建议使用最新版本的Python2.文本编辑器:可自行选择,推荐使用Atom、Sublime Text等3.英语词典API:可选择在线API或本地数据库实验步骤1.设计程序的界面和交互方式–将界面设计简洁明了,方便用户操作–设置适当的输入框和按钮,以便用户输入待查询的单词并获取解释2.编写程序的基本功能–获取用户输入的单词并保存–调用API或数据库查询单词解释–将查询结果显示在界面上3.实现高级功能–添加单词收藏功能,方便用户保存学习过的单词–提供单词朗读功能,帮助用户正确发音–支持模糊查询,提高用户查词的便利性4.进行功能测试和优化–针对不同的输入情况进行测试,确保程序能正确处理各种情况–优化程序性能,提高查询速度和用户体验实验结果经过实验,我们成功构建了一个功能完善的Python英语词典。

用户可以通过简洁明了的界面输入待查询的单词,并获得准确的解释。

同时,我们还添加了单词收藏、朗读和模糊查询等高级功能,提高了用户的学习效果和体验。

总结与展望通过本次实验,我们掌握了Python编程语言的基本语法和数据类型,学会了使用Python编写英语词典的基本功能。

同时,通过调用API和数据库查询单词解释,提高了用户的学习效果和便利性。

未来,我们将继续改进和完善Python英语词典,在功能和用户体验上提供更多的选择和优化。

实验心得体会在这次实验中,我们深入了解了Python编程语言的基本语法和数据类型,并将其应用于实际项目中。

电子词典实训报告

电子词典实训报告

实训报告院系:计算机与通信工程学院班级:学号:姓名:指导老师:电子词典(英译汉)实训目的:本次试验主要的目的是在VC6.0的环境下,建立一个电子词典,通过函数实现英文单词的查找、翻译、添加等功能。

一、实训分析这次试验的内容是实现英文单词的查找、翻译和添加功能,所以,要有相应的查找函数、翻译文本文件和添加函数。

其次,这些函数之间的调用关系,当然,main函数是主体函数。

那么,还需要一个测试函数,需要对下面所编写的查找等函数进行测试。

具体造作步骤是:首先,先建立一个空工程,然后建立一个.h文件,即dict.h 文件,然后是.C文件,.C文件需要多建立几个,以备使用。

然后就可以进行下一步代码的书写了。

二、代码分析毫无疑问,main函数是要先写出来的,这个函数也是最简单的函数,在这个函数体里面只需要去调用测试函数即可,也即调用函数text1(void)。

再看测试函数,需要输入需要查找的函数,输入完毕后,会牵扯到查找问题,也就是说要调用查找函数search(),如果查找不到,要调用函数get_txt_usr(),在文本文件dict_usr.txt中继续进行查找,如果还是没有查找到的话,那么就调用添加函数add_txt_usr(),把所查找到的单词添加到文本文档中,以备以后的使用。

最后,清除缓冲区,程序调用结束。

具体的函数调用流程如下:1、调用函数get_nword(),打开文本dict.txt2、调用函数get_wordarr(),实现从文件中读取文件内容,放在数据结构内存储,以便实现快速的查询。

3、输入需要查找的单词。

4、判断需要查找的单词是不是exit:(1)、如果是exit,那么,退出程序。

(2)、如果不是,那么调用函数search()进行查找,如果查找到了就打印输出;找不到就调用函数get_txt_usr()(找到返回的是0,找不到返回值是1)在文本dict_usr.txt中查找,如果在这个文本中能查找到,那么打印输出,这个过程实现了单词的查找功能。

电子词典系统3

电子词典系统3

目录1 引言 (1)2 设计内容 (2)2.1 小组总体框架 (2)2.1.1 系统总体功能介绍 (2)2.1.2 系统总体功能模块图 (2)2.2 个人模块功能 (3)2.2.1 主界面功能 (3)2.2.2 英译汉功能 (3)2.2.3 汉译英功能 (3)2.2.4 单词发音功能 (3)2.3 小组分工表 (3)3 数据库设计 (4)3.1 数据库需求分析 (4)3.2 数据库表设计 (4)4 功能实现 (5)4.1 主界面功能 (5)4.1.1 主界面 (5)4.1.2 程序源代码 (5)4.2 英译汉功能 (10)4.2.1 英译汉界面 (10)4.2.2 程序源代码 (11)4.3 汉译英功能 (12)4.3.1 汉译英界面 (12)4.3.2 程序源代码 (13)4.4 单词发音功能 (12)4.3.1 单词发音界面 (12)4.3.2 程序源代码 (13)结论 (15)致谢 (16)参考文献 (17)1 引言在这一周的实训中,我们小组开发的课题是电子词典功能的实现。

电子词典作为一种学习工具,有着不可估量的市场前景。

作为一名学生,我们在学习英语的时候会经常碰到很多的生词,有时,为了读懂一篇文章,经常是读文章用一小时,但是其中却有半个小时都在翻阅英语字典。

所以我们小组为了解决这一问题,才将选材方向定位于电子词典的功能实现,主要的目的就是为同学们解决这一问题。

在做电子词典功能实现的时候,我们小组主要从以下几个方面入手,即:英汉互译、汉英互译、单词发音。

在英译汉、汉译英这两个功能模块上,我们首先提供了一个查询界面,即使用者需要输入要查询的关键字,点击确定按钮,屏幕上就会出现其对应的答案。

在做这个模块的时候,我们主要解决了JAVA与数据库的链接问题,进而实现其功能。

在娱乐天地中,扫雷游戏是用JAVA来实现的。

之所以要加入这一模块,是因为我们充分考虑到在学习疲惫之余可以让使用者能够有个放松的空间,同时也提高其整体的娱乐性。

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

电子词典系统设计实验报告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++);}。

相关文档
最新文档