词典变位词检索系统课程设计报告
词典变位词检索系统
《数据结构课程设计》实验报告•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;}}。
java课设报告-基于数据库的电子词典
课程设计报告课程名称:java .班级:学号:姓名:完成日期:2021、11、16沈阳航空工业学院北方软件学院北方软件学院课程设计任务书专业名称:计算机科学与技术课程名称:Java课程设计设计题目:基于数据库的词典工具起止时间:问题描述:实现一个基于数据库电子词典,输入一个词汇后能在数据库中检索出该词的解释,并显示出来。
根本要求:要求使用MySQL做为后台存储数据库,使用Java GUI的方法,具有联想功能。
用户可以添加词汇和解释,可以定义定制常用词汇列表。
较高要求:在查词框的下拉列表中能显示历史查词记录。
实现提示学生姓名:学号:指导教师:基于数据库的词典工具1概要设计(1)程序分析:用java程序编写一个基于数据库的词典工具,实现一个基于数据库电子词典,输入一个词汇后能在数据库中检索出该词的解释,并显示出来。
要求使用MySQL做为后台存储数据库,使用Java GUI的方法,具有联想功能。
用户可以添加词汇和解释,可以定义定制常用词汇列表。
(2)用到的工具:MySQL-Front〔SQL编辑器〕,MySQL做为后台数据库。
(3)模块图:2详细设计(1)数据库的相关知识:利用JDBC开发数据库应用一般包括如下步骤:1、建立与数据库的连接数据库连接的建立包括两个步骤:首先要加载相应数据库的JDBC驱动程序;然后建立连接。
Class.forName()方法的执行,将创立数据库驱动的实例并注册到驱动管理器。
在某种数据库的驱动程序加载后,就可以建立与该DBMS的连接了。
定义如下: Class.forName(〞〞);创立数据库连接这个步骤中要使数据库驱动连接到相应的DBMS。
连接的建立通过使用DriverManager类中的static方法getConnection(),该方法的定义如下:Cion(“jdbc:mysql://.14/KEMDB?useUniCode=true&characterEncoding=utf-8”);2、执行SQL语句在所建立的数据库连接上,创立Statement对象,对各种SQL语句发送到所连接的数据库执行。
C语言电子词典报告
北京联合大学课程设计报告课程名称:C语言程序设计课设项目名称: 电子生词库软件学院:自动化学院专业:信息处理与只能技术姓名:彭霜辰(组长) 刘轩张鑫学号:202020指导教师: 梁军成绩:2008年7月1日目录第一部分课程设计题目与要求ﻩ错误!未定义书签。
1.问题描述.............................................................................. 错误!未定义书签。
2.功能要求ﻩ错误!未定义书签。
3.大致任务分工ﻩ错误!未定义书签。
第二部分《电子生词库软件》的设计与功能实现ﻩ错误!未定义书签。
1.总体设计: ............................................................................ 错误!未定义书签。
2.数据结构.............................................................................. 错误!未定义书签。
3.算法设计.............................................................................. 错误!未定义书签。
4.程序代码设计ﻩ错误!未定义书签。
5.测试与调试ﻩ错误!未定义书签。
第三部分课程设计总结....................................................... 错误!未定义书签。
1.个人总结ﻩ错误!未定义书签。
2.结束语............................................................................... 错误!未定义书签。
附录Ⅰ程序清单........................................................................ 错误!未定义书签。
C语言课程设计报告--一种简单的英文词典排版系统的实现
中国地质大学本科生课程论文封面课程名称C语言课程设计教师姓名本科生姓名本科生学号本科生专业所在院系日期:课程设计评语2、必须用钢笔或圆珠笔批阅,用铅笔阅卷无效;3、如有平时成绩,必须在上面评分表中标出,并计算入总成绩。
目录课程设计评语 (2)目录 (3)1.课程论文题目 (4)2.程序设计思路 (4)3.功能模块图 (5)4.数据结构设计 (5)5.算法设计 (5)6.程序代码 (16)7.程序运行结果 (21)8.编程中遇到的困难及解决方法 (24)9.总结心得及良好建议 (24)10.致谢 (24)1.课程论文题目一种简单的英文词典排版系统的实现:【要求】(1)能输入和现实打入的单词;(2)能分辨出单词;(3)对重复的单词和已经输入的单词能自动排除;(4)能按A~Z的顺序排版;(5)能将运行结果以文本形式储存;(6)具有添加新单词重新排版的能力。
[提示](1)需求分析:运行结果以文本形式储存,因而要提供文件的输入输出操作;通过查找操作检查重复单词;提供排序操作现实按A~Z的顺序排版;提供插入操作添加新单词并重新排版。
另外通过键盘式菜单实现功能选择。
(2)总体设计:整个系统被设计为单词录入模块,文件存储模块和单词浏览模块。
其中单词录入模块要完成输入单词,检查是否重复,排序操作。
文件存储模块把存放单词的数组中的数据写入文件。
单词浏览模块完成英文词典的输出,即文件的输出操作。
(3)数据结构采用指针数组或二维数组。
以【Enter】键或者空格键作为单词输入结束标志,对重复的单词自动排除可选用查找方法,数据结构可采用指针和数组。
2.程序设计思路在英文词典排版当中,人工统计的速度很慢,且容易出现差错。
本英文词典排版系统的自动化加速了排版工作,提高工作效率本程序主要采用对零散的单词进行自动读取,然后按单词首字母顺序讲单词保存到文档,这样的结构化非常便于程序后续的排版工作。
排版具体过程涉及到自动排除重复单词与添加新单词并重新排版等问题,将于正问中详细介绍。
数据结构课程设计报告(简易英汉词典系统)
数据结构课程设计报告(简易英汉词典系统)数据结构课程设计报告(简易英汉词典系统)广西大学课程设计报告课程:《数据结构》题目:简易英汉词典系统学院:______计算机与电子信息学院_专业:______计网类___________班级:______计网071_____ ___ _学号: 0707100103学生姓名:蓝冠恒指导教师:__ ________二〇〇九年四月一、实验目的和要求【实验目的】设计一个简易英汉词典系统,实现基本的单词检索功能,即输入英文单词则系统输出其汉语,反之亦然;并能够进行基本的词典维护操作,包括插入和删除,要求按英语的词典顺序排列单词。
【设计要求】(1)使用图形化界面。
(2)建立英语词汇表,输入为小写字母时为合法输入。
(3)每个词条应包含单词的英语形式、汉语释义、发音等基本信息。
二、设计概要:1、根据实验要求,与及所了解的数据类型相关知识,定义了如下数据类型:链接数据库声明的变量:Connection connection = null;Statement statement = null;ResultSet Result = null;声明全局变量:String newWord, pronunciations,indexWord="", deleteWord, searchEnglish, searchChinese,isSound;它们分别是:新增单词、新单词音标、引擎词、删除词、查找的英文、查找的汉语、判断音频是否存在。
2、实验功能所定义的各种按钮、文本框、选择框和列表框:取消删除功能按钮:JButton deleteCancelButton = new JButton();英汉互译面板上的发音按钮:JButton sound = new JButton();浏览词库面板上的发音按钮:JButton scanSoundButton = new JButton();添加单词的按钮:JButton addOkJButton = new JButton();取消添加功能的按钮:JButton addCancelButton = new JButton();删除词库单词信息按钮:JButton deleteOkButton = new JButton();浏览词库按钮:JButton scanButton = new JButton();要查找的英文或汉语的文本框输入框:JTextField inputSearchWord = new JTextField();新增单词文本输入框:JTextField inputNewWord = new JTextField();新增单词音标输入框:JTextField pronunciation = new JTextField();新增单词释义输入框:JTextField newWordChinese = new JTextField();新增单词过去式输入框:JTextField newWordPreterite = new JTextField();新增单词现在进行时态输入框:JTextField newWordModernism = new JTextField();要删除的单词输入框:JTextField inputDeleteWord = new JTextField();新增单词词性复选框:JComboBox newWordClass = new JComboBox();列出要查找的词的记录信息的多行文本框:TextArea outputSearchEnglish = new TextArea();列出要删除的单词的记录信息的多行文本框:TextArea deleteWordChinese = new T extArea();列出浏览时需浏览单词信息的多行文本框:TextArea scanOutput = new TextArea();DefaultListModel model = new DefaultListModel();列出所查找的英文或汉语对应的单词的列表框:JList listSearchEnglish = new JList(model);列出备选英标的列表框:JList pronunciationJList = new JList(listItem);列出可能且可以被删除的单词的列表框:JList deleteJList = new JList(model);列出词库所有单词的列表框:JList scanWordJList = new JList(model);3、实现功能所定义的各种函数:1)public static String Return(String str)将数据库里的单词的音标进行还原。
VB课程设计查词典
VB课程设计查词典一、教学目标本节课的教学目标是让学生掌握VB编程中查词典的应用程序设计方法。
知识目标要求学生理解查词典程序的需求分析、设计思路和实现方法;技能目标要求学生能够运用VB编程语言独立完成一个简单的查词典程序;情感态度价值观目标则是培养学生的编程兴趣,提高学生解决实际问题的能力。
二、教学内容本节课的教学内容主要包括以下几个部分:首先是查词典程序的需求分析,让学生理解查词典程序的功能和用途;其次是VB编程语言的基本语法和数据类型,为学生编写程序打下基础;然后是查词典程序的设计思路和实现方法,引导学生学会独立思考和解决问题;最后是程序调试和优化,让学生掌握程序运行的基本原理。
三、教学方法为了达到本节课的教学目标,我们将采用多种教学方法相结合的方式进行教学。
首先,采用讲授法向学生讲解VB编程语言的基本语法和数据类型;其次,通过案例分析法引导学生分析查词典程序的需求,并设计出相应的程序;然后,采用实验法让学生动手编写和调试程序,提高学生的实践能力;最后,采用讨论法让学生分享自己的编程心得,培养学生的团队协作精神。
四、教学资源为了支持本节课的教学内容和教学方法的实施,我们将准备以下教学资源:教材《VB编程与应用》及相关参考书,为学生提供理论知识的支持;多媒体教学课件,直观地展示程序运行过程和效果;在线编程平台,让学生可以随时随地编写和调试程序;查词典API接口,用于实现查词典程序的核心功能。
五、教学评估本节课的教学评估将采用多元化的评价方式,以全面、客观、公正地评价学生的学习成果。
评估主要包括以下几个方面:1.平时表现:通过观察学生在课堂上的参与程度、提问回答、小组讨论等表现,评估学生的学习态度和积极性。
2.作业完成情况:评估学生作业的完成质量,包括编程代码的正确性、规范性和创新性。
3.考试成绩:通过课后布置的编程练习和模拟考试,评估学生对查词典程序设计的掌握程度。
4.自我评价:要求学生撰写自我评价报告,反思自己在学习过程中的收获和不足。
英汉小词典课程设计方案报告
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)循环输入单词:系统可以循环输入单词进行检索。
电子英汉词典课程设计
课程设计报告2020~2021学年第一学期课程可视化程序设计课程设计题目电子英汉词典院(系): 计算机学院(软件学院)姓名学号专业班级2019级计科2班指导教师2020年 12 月 31 日目录第一章绪论 (1)1.1 课题背景及意义 (1)1.2 开发环境及技术 (2)第二章概要设计 (2)2.1页面设计 (2)2.1.1 系统首页设计 (2)2.1.2 注册界面设计 (3)2.2 数据库设计 (4)2.2.1 数据库概念结构设计 (4)2 2.2数据库逻辑结构设计 (6)2.2.3 数据库物理结构设计 (7)第三章功能详细设计与实现 (8)3.1实现的全部功能表 (9)3.2功能1 (10)3.3功能2 (11)3.4功能3 (12)3.5功能4 (13)3.6功能5 (14)3.7功能6 (15)3.8功能7 (16)第四章检测及评价 (17)第五章结语 (23)第一章绪论当今时代是信息化时代,而信息的数字化也越来越被人们所重视,所以,数字化技术的重要性也逐渐体现了出来,主要体现在以下几个方面: 数字化是数字计算机的基础,数字化是软件技术的基础,是智能技术的基础,数字化是信息社会的技术基础,数字化是信息社会的经济基础。
词典作为一种为大众服务的工具书,已经渐渐退居二线了,进而出现了另一种查找方式更加简便,更加精确,词汇量更加丰富而且随身携带更加方便的工具,那就是电子英汉词典,应该说这是一个新旧交替的过程,电子英汉词典取代传统词典只是时间的问题。
所以说电子词典的发展前景是明朗的,电子英汉词典生产厂家也如同雨后春笋般崛起了。
电子英汉词典是一种将传统的印刷词典转成数码方式、进行快速查询的数字学习工具。
电子英汉词典以轻便易携、查询快捷、功能丰富等特点,成为21世纪学生学习生活、社会人士移动办公的掌上利器。
它不仅可实现英译汉、汉译英的基本翻译功能,还可以让用户根据自己的需要添加、修改、删除词库,形成自己的词库。
英汉小词典专业课程设计方案报告
- 第二学期《高级语言程序设计》课程设计汇报题目:英汉小词典专业:计算机科学和技术班级:计科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语言进行文件操作和绘图应用编程技术水平;初步了解软件开发通常方法和步骤;提升撰写技术文档能力。
电子词典系统设计实验报告
电子词典系统设计实验报告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++);}。
成语词典查询系统设计实验报告
成语词典查询系统设计实验报告一、实验目的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 所示。
C语言课程设计——电子英汉词典解析
课程设计报告课程名称 C语言课程设计课题名称电子英汉词典专业纺织服装学院班级纺工1203学号姓名指导教师田媛2014年 01 月06 日湖南工程学院课程设计任务书课程名称 C语言课程设计课题电子英汉词典专业班级纺工工程学生姓名学号指导老师田媛审批任务书下达日期 2013 年 12 月 26 日任务完成日期2014年 01 月 06 日一、设计内容与设计要求1.设计内容:课题一:电子英汉词典。
具体内容见附录。
2.设计要求:1)设计正确,方案合理。
2)界面友好,使用方便。
3)程序精炼,结构清晰。
4)上机演示。
3.设计报告要求:课程设计报告格式如下:1)正文的格式:一级标题用3号黑体,二级标题用四号宋体加粗,正文用小四号宋体,行距为22。
2)正文的内容:课题的主要功能、课题的功能模块的划分、主要功能的实现、程序调试、总结、附件(所有程序的源代码,要求对程序写出必要的注释),课程设计报告需5000字左右(不含附件)。
3)课程设计报告装订顺序:封面、任务书、目录、正文、评分、程序清单附件。
二、进度安排上课时间另外安排上课时间另外安排。
附录:设计课题三:电子英汉词典一、问题描述:该设计实现简单电子英汉词典的功能,具体管理操作包括单词的添加、显示、查找、删除、修改和保存等。
二、功能描述:1、本设计采用结构体数组,每个数据的结构应当包括:单词的英文拼写,单词的中文释义。
2、系统功能:a.词条录入:即添加单词记录。
b.信息显示:将所有的单词按字母顺序显示。
c.词条修改:对已经输入的单词信息进行修改。
d.词条删除:删除某个单词记录。
e.单词查询: 输入单词英文拼写,输出该单词的中文释义。
f.信息保存:将单词信息保存到文件。
g.退出系统3、系统使用说明:执行一个具体的功能之后,程序将重新显示功能菜单。
系统的功能并不限于上述,可以对其进行扩充完善,如在对信息进行修改和删除时,可以考虑系统的安全性,在执行前若输入正确密码,才可进行操作。
英汉电子词典设计报告设计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. 查询模块设计............................ 错误!未定义书签。
嵌入式课程设计电子词典硬件设计
嵌入式课程设计电子词典硬件设计嵌入式课程设计是现代电子技术专业中非常重要的一个课程,其作用是帮助学生掌握嵌入式系统的设计与开发技术,从而能够开发出满足实际应用需求的高性能硬件设备。
在嵌入式课程设计中,电子词典硬件设计是一个既重要又有挑战性的任务,本文将着重介绍该任务的具体内容和实现过程。
一、电子词典硬件设计所涉及的主要内容电子词典硬件设计的主要任务就是设计出一款能够实现扫描、存储、查询等功能的小型化电子设备,以帮助用户快速准确地查询词语的意义、拼音、读音以及基本用法等相关信息。
具体而言,其设计涉及以下方面:1. 控制器模块:主要作用是完成电子词典的各项控制功能,包括键盘输入、液晶显示、声音播放等操作。
2. 存储器模块:主要作用是储存待查询的词库信息,以便在查询时能够快速地提供所需信息。
3. 人机交互模块:主要作用是提供用户与电子词典之间的交互接口,包括屏幕显示、声音输出、键盘输入等操作。
4. 供电模块:主要作用是为整个电子词典提供稳定可靠的电源,以保证其正常工作。
5. 其他模块:包括外壳设计、线路板设计、软件编写等多个方面,以保证电子词典具有完整、稳定的功能。
二、电子词典硬件设计的实现过程1. 原理图设计:在完成电子词典硬件设计之前,需要根据其功能需求绘制一套完整的原理图,以确定各个电路模块的布局、连接方式等详细参数。
2. PCB设计:根据原理图设计的电路连接方式,需要完成电路板的布局、走线等设计工作。
通过点击绘制工具和观察其3D效果,我们可以查看设计的钢板与其他元件的距离是否合适。
即可进入到样板板打样的阶段。
3. 程序编写:完成硬件设计之后,还需要编写相应的软件程序,以控制各个电路模块的工作,实现电子词典的各个功能。
4. 组装调试:完成原理图设计、PCB设计以及程序编写之后,还需要组装整个电子词典,并进行调试,以确保其所有功能正常可用。
5. 产品测试:在完成组装调试之后,还需要进行一些必要的测试和评估工作,以确保电子词典的性能和品质都能够满足所需的技术要求和市场需求。
c语言课程设计电子词典
沈阳工程学院课程设计设计题目:电子词典系别信息工程系班级计本083学生姓名学号24指导教师姜柳、吕海华职称讲师、讲师起止日期:2021年6月15日起——至2021年6月26日止沈阳工程学院课程设计任务书课程设计题目:电子词典〔第 1 组〕系别信息工程系班级计本083学生姓名张余学号2021412304指导教师姜柳、吕海华职称讲师、讲师课程设计进行地点:实训F任务下达时间:2021年6月15日起止日期:2021年6月15日起——至2021年6月26日止教研室主任姜柳2021年6月15日批准一、课程设计的原始资料及依据在计算机中建立有限规模的电子英汉词典,利用程序实现电子英汉词典的查找、增加、删除、修改等功能。
查阅有关资料,进一步理解程序设计模块化的思想,并利用此思想编写一个简单的电子词典。
通过本设计可以加深理解利用程序设计思想开发一个系统的整个流程,提高分析问题、解决问题和实际动手的能力。
二、课程设计主要内容及要求1.认真阅读资料,掌握程序设计模块化的思想。
2.要求在设计的过程中,建立清晰的层次结构。
4.实现功能:⑴查找单词。
⑵增加单词。
⑶万年历⑷修改单词。
⑸显示单词。
⑹保存单词。
⑺返回⑻帮助⑼退出5. 要求操作简单,用户界面友好。
6. 运行程序,检查结果是否和理论值一致。
7. 环境使用Windows,Turbo C环境。
三、对课程设计说明书撰写内容、格式、字数的要求1.课程设计说明书是表达和总结课程设计成果的载体,主要内容包括:设计题目、设计目的、设备器材、设计原理及内容、设计步骤、遇到的问题及解决方法、设计总结、参考文献等。
一般不应少于3000字。
2.在适当位置配合相应的实验原理图、功能模块图、算法流程图等图表进行说明。
应做到文理通顺,内容正确完整,书写工整,装订整齐。
3.设计总结局部主要写本人完成工作简介以及自己的设计体会,包括通过课程设计学到了什么,哪里遇到了困难,解决的方法以及今后的目标。
C语言程序设计课程设计报告电子英汉词典设计
C语言程序设计课程设计报告电子英汉词典设计课程设计报告课程名称《C语言程序设计》课题名称电子英汉词典设计专业信息管理与信息系统班级学号姓名指导教师2011年6月22日一、设计内容与设计要求1.课程设计目的全面熟悉、掌握C语言基本知识,增强对不同的问题运用和灵活选择合适的数据结构以及算法描述的本领,熟悉编制和调试程序的技巧,掌握分析结果的若干有效方法,进一步提高上机动手能力,培养使用计算机解决实际问题的能力,养成提供文档资料的惯和规范编程的思想,为后继课程(数据结构和数据库等课程)的实验以及课程设计打下较扎实的基础。
2.课题题目⑴班级成绩管理系统⑵班级档案管理系统⑶飞机订票系统⑷猜数字游戏⑸电子英汉词典设计⑹通信录管理体系3.设计要求掌握结构化程序设计的主体思想,以自顶向下逐步求精的方法编制程序解决一些实际的中型问题,为将来开发软件积累一些典型的案例处理经验。
具体要求如下:⑴设计课题题目:每位同学根据自己学号除以6所得的余数加一选择相应题号的课题。
原则上不予换提,私自换题者不记成绩。
⑵根据自己对应的课题完成以下主要工作:①完成系统需求分析:包括系统设计目的与意义;系统功能需求;输入输出的要求。
②完成系统概要设计:程序由哪些模块组成以及模块之间的层次结构、各模块的调用关系;每个模块的功能;课题涉及的数据结构和数据库结构;即要存储什么数据,这些数据是什么样的结构,它们之间有什么关系等。
③完成系统详细设计:包括采用C语言定义相关的数据类型;写出各模块的类C码算法;画出函数的调用关系图。
④调试分析、设计体会、测试数据:准备典型的测试数据和测试方案,包括正确的输入及输出结果和含有错误的输入及输出结果;程序调试中遇到的问题以及解决问题的方法;课程设计过程经验教训、心得体会。
⑤关键源程序(带注释)⑶按规定格式完成课程设计报告,将其打印稿(A4纸)上交给老师存档。
⑷不得抄袭别人程序、课程设想报告,每一个人应体现本人的个性设想。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
词典变位词检索系统目录摘要 (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)循环输入单词:系统可以循环输入单词进行检索。
2系统分析2.1 功能需求本系统主要是从词典中检索出单词变位词的系统。
该系统需要有处理词典、求出变位词并输出合法单词、循环输入单词的功能。
2.2数据需求根据分析,本系统中主要涉及到的数据为单词。
扩充2.3 性能需求要求性能稳定可靠、运算速度快、安全性能高、方便易懂性、使用合理性、实用性强、可移植性好。
3总体设计3.1 功能模块设计词典变位词检索系统分为三个模块,分别为读入词典、求出变位词并输出合法单词、循环输入单词。
功能模块图如图1所示。
图1功能模块图(1) 读入词典模块读入词典模块,实现从用户给出的词典文件中读入单词进线性表。
(2) 求出变位词并输出合法单词模块求出变位词并输出合法单词模块,实现输入单词后输出单词字母所有可能形成的变位词,即单词的全排列,并从词典中检索出生成的全排列中的合法单词。
(3) 循环输入单词模块系统可以循环输入单词进行检索。
3.2 系统设计方案。
4详细设计词典变位词检索系统主要实现读入词典、求出变位词并输出合法单词、循环输入单词,它们的详细设计和实现过程如下介绍。
4.1 数据结构定义在本系统中使用了线性表数据结构,结构类型定义如下。
定义词典typedef char ElemType;typedef struct Diction{ElemType word[100];//单词struct Diction *next;//指针}Diction;4.2读入词典模块读入词典模块是将用户给出的diction.txt词典文件读入到链式存储结构的顺序表中。
具体实现流程如图2所示。
图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 求出变位词并输出合法单词流程图用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 测试测试数据过程如下:输入单词:post此单词的全排列为: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语言的编程思路,能够熟练的运用学到的函数,学会了在曾经编写过的函数上加以修改实现了我期望实现的功能,知道学习编程必须亲手将每一个字符敲入电脑中这样才能真正的学到课本或一些理论中学不到的知识,这才达到了实践的目的,当程序编写完成而且能够正常运行心里一种说不出的自豪感,虽然这对于一名程序员来说可能什么也不是,但这是我编程的开始,如果希望在编程这方面能够有所发展我所要走过的路还很长,还需要不断的学习!学习!参考文献[1] 谭浩强. C语言程序设计(第三版).北京:清华大学出版社[2] 林碧英. C语言程序设计教程.中国电力出版社,2006[3] 美赫伯特.希尔特,王子恢等译.C语言大全.电子工业出版社,2003(3到5个)。
源代码清单:#include<string.h>#include<stdio.h>#include<malloc.h>typedef char ElemType;typedef struct Diction{ElemType word[100];struct Diction *next;}Diction;int m;//记录字符串长度int n;//记录字符串中的字符种类数char map[256];//记录是哪几种字符char A[256];int count[256];//记录每种字符有多少个void 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) {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);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;}putchar(' ');}else{int i;for(i=0;i<n;i++)if(count[i]){stack[depth]=i;count[i]--;Find(depth+1,head,HEAD);count[i]++;}}return HEAD;}Diction *read(void){int k;Diction *head;Diction *p1,*p2;FILE *fp;p1=p2=(Diction *)malloc(sizeof(Diction));k=0;head=NULL;if((fp=fopen("diction.txt","rb"))==NULL){printf("打不开\n");return(head);}while(1){if(fread(p1,sizeof(Diction),1,fp)==1){k=k+1;if(k==1) head=p1;else p2->next=p1;p2=p1;p1=(Diction *)malloc(sizeof(Diction));}elsebreak;}p2->next=NULL;fclose(fp);printf("词典中共%d个单词\n",k);return(head);}void main(){int x=0;Diction *head,*q;printf("单词变位词查询系统\n");head=read();while(1){Diction *HEAD=(Diction *)malloc(sizeof(Diction));HEAD->next=NULL;char str[1000];printf("输入单词:");gets(str);Make_Map(str);printf("此单词的全排列为:\n");HEAD=Find(0,head,HEAD);putchar('\n');q=HEAD->next;if(q==NULL){printf("没有这个单词\n");}else{printf("其中是单词的有:\n");while(q!=NULL){printf("%s\n",q->word);q=q->next;}}printf("输入0继续1退出");scanf("%d",&x);getchar();map[256]='1';A[256]='1';if(x==1)break;}}完成日期:2009年07月02日。