单词精灵,Android 记单词 app 开发

使用 Android Studio 开发了一款 记单词 app —— 《单词精灵》

动效

关键词:单词精灵

A. 项目描述

《单词精灵》是一款专为Android平台设计的单机记单词应用。该应用旨在帮助用户系统、高效地扩展词汇量,提升英语水平。应用内置丰富的词库和记忆方法,让用户在轻松愉悦的学习氛围中不断提升自己的词汇量。
这款应用提供了单词拼写、单词查询等功能,通过不同的方式让用户更深入地记忆单词。

B. 开发工具

  • Android Studio Dolphin | 2021.3.1 Patch 1
  • Java , JDK 11.0.13
  • Gradle , gradle-7.4

C. 代码设计

C1、数据库

项目先创建数据库 wordset.db文件,然后将 res/raw 中的词典文件导入数据库当中,接下来通过读文件的方式,从数据库中读取单词信息。

    // 创建数据库
	mSQLiteDatabase=this.openOrCreateDatabase("wordset.db",MODE_PRIVATE,null);
	
    // 将 res/raw 中的词典文件 导入数据库当中
	private void insetdata(String Tablename) {
		if (Tablename == null) {
			return;
		}
		if(Tablename.equals("word4")){
			ins=getResources().openRawResource(R.raw.fourthlevel);
		}
		else if(Tablename.equals("word6")){
			ins=getResources().openRawResource(R.raw.sixthlevel);
		}
		else{
			ins=getResources().openRawResource(R.raw.college);
		}
		createTable(Tablename);
		m_ProgressBar.setVisibility(View.VISIBLE);
		m_ProgressBar.setProgress(0);
		m_ProgressBar.setMax(100);
		try{
			InputStreamReader inR=new InputStreamReader(ins);
			BufferedReader BR=new BufferedReader(inR);
			String str=BR.readLine();
			while(str!=null)
			{
				String[] temp=str.split(" ");
				AddData(temp[0],temp[1],Tablename);
				str=BR.readLine();

			}
			inR.close();
			ins.close();
			BR.close();
		}
		catch(FileNotFoundException e)
		{
			System.out.println(e);
		}
		catch(IOException e)
		{
			System.out.println(e);
		}
		new Thread(new Runnable(){

			public void run() {
				for(int i=0;i<10;i++){
					try{
						intCounter = (i+1)*20;
						Thread.sleep(1000);
						if(i==4){
							Message msg = new Message();
							msg.what = STOP;
							MyDataActivity.this.mHandler.sendMessage(msg);
							break;
						}else{
							Message msg= new Message();
							msg.what = NEXT;
							MyDataActivity.this.mHandler.sendMessage(msg);
						}
					}catch(Exception ex){
						ex.printStackTrace();
					}
				}
			}

		}){

		}.start();

		mHandler = new Handler() {
			public void handleMessage(Message msg) {
				switch(msg.what){
					case STOP://到了最大值
						m_ProgressBar.setVisibility(View.GONE);
						Thread.currentThread().interrupt();//中断当前线程.
						break;
					case NEXT:
						if(!Thread.currentThread().isInterrupted()){//当前线程正在运行
							m_ProgressBar.setProgress(intCounter);
							MyDataActivity.this.setProgress(intCounter*100);
							MyDataActivity.this.setSecondaryProgress(intCounter*100);
						}
						break;
				}
				super.handleMessage(msg);
			}
		};
	}

	//创建表
	public void createTable(String tablename){
		try{
			mSQLiteDatabase.execSQL("CREATE TABLE "+tablename+"("+Table_ID
					+" INTEGER PRIMARY KEY autoincrement, "+English +" char[20] ,"+ Meaning+" TEXT );");
		}catch(Exception e){

		}
	}
	
    // 插入单条词汇以及对应的含义
	public void AddData(String english,String mean,String tablename){
		ContentValues cv=new ContentValues();
		cv.put(English,english);
		cv.put(Meaning, mean);
		mSQLiteDatabase.insert(tablename, null, cv);
	}

C2、单词查询

点击查询按钮式,调取 mSQLiteDatabasequery函数获得 Cursor 对象,然后调用Cursor 对象的 getColumnIndex函数获取单词对应字段的信息,最后通过AlertDialog控件展示出来。

            // 查询单词含义
				Cursor S_cursor=SearchData(english,tablename);
				if(S_cursor.getCount()!=0){
					elish =S_cursor.getString(S_cursor.getColumnIndex("English"));
					mean=S_cursor.getString(S_cursor.getColumnIndex("Meaning"));
					openOptionsDialog();
				}

    // 查询数据库
	public Cursor SearchData(String english,String tablename) throws SQLException{
		Cursor mCursor =
				mSQLiteDatabase.query(true, tablename,new String[]{"_id", "English","Meaning" },
						"English" + "=?" ,new String[]{english},null,null,null,null);
		if(mCursor!=null){
			mCursor.moveToFirst();
		}
		return mCursor;
	}

    // 展示查询结果
	private void openOptionsDialog() {
		new AlertDialog.Builder(this)
				.setTitle("查询结果").setMessage(elish+"\n"+mean).show();
	}

D. 项目演示

  1. 主页展示了 单词测试导入词典的功能。
    home

  2. 词典包含了 四级、六级和大学英语词汇。
    dicts

  3. 词汇列表页,包含词汇查询功能,并将单词以列表的形式展示出来。
    list

  4. 单词测试页面,看提示信息拼写单词,检验用户的单词的记忆情况 。
    list

演示视频 ⏯

单词精灵,开发了一款 Android 记单词应用

安装试用

下载⏬安装包,试用app

E. 项目源码

关注公众号『数字森林』,后台发送:单词精灵,获取源码。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/506943.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C++AVL树拓展之红黑树原理及源码模拟

前言&#xff1a;我们之前已经从零开始掌握AVL树http://t.csdnimg.cn/LaVCChttp://t.csdnimg.cn/LaVCC 现在我们将继续学习红黑树的原理并且实现插入等功能&#xff0c;学习本章的前提要求是掌握排序二叉树和AVL树&#xff0c;本章不再提及一些基础知识&#xff0c;防止本文结…

LeetCode-560. 和为 K 的子数组【数组 哈希表 前缀和】

LeetCode-560. 和为 K 的子数组【数组 哈希表 前缀和】 题目描述&#xff1a;解题思路一&#xff1a;一边算前缀和一边统计。这里用哈希表统计前缀和出现的次数&#xff0c;那么和为k的子数组的个数就是当前前缀和-k的个数&#xff0c;即preSums[presum - k]。画个图表述就是&a…

sparksql执行流程

1. SparkSQL的自动优化 我们前面的文章已经说过spark RDD定义好后&#xff0c;执行经过DAG sechduler划分号内存管道、逻辑任务&#xff0c;然后经由task scheduler来分配到具体worker来管理运行&#xff0c;RDD的运行会完全按照开发者的代码执行 如果开发者水平有限&#xff…

一文了解JAVA的常用API

目录 常用kpimathSystemRuntimeObjectObjectsBigIntegerBigDecima正则表达式包装类 常用kpi 学习目的&#xff1a; 了解类名和类的作用养成查阅api文档的习惯 math 工具类。因为是工具类&#xff0c;因此直接通过类名.方法名(形参)即可直接调用 abs&#xff1a;获取参数绝对…

Spring如何进行事务管理?什么是面向切面编程?

喜欢就点击上方关注我们吧&#xff01; 本篇将带你快速了解Spring事务管理以及面向切面编程(AOP)相关知识。 一、事务 1、概述 1&#xff09;事务是一组操作的集合&#xff0c;是一个不可分割的工作单位&#xff0c;这些操作要么同时成功&#xff0c;要么同时失败。 2&#xff…

八股 -- C#

面向对象 &#xff08;三大特性&#xff09; 三大特性目的是为了提供更好的代码组织、可维护性、扩展性和重用性 C#基础——面向对象 - 知乎 (zhihu.com) 封装 理解&#xff1a; 你不需要了解这个方法里面写了什么代码&#xff0c;你只需要了解这个方法能够给你返回什么数据&…

矩阵乘法优化:GEMM中如何将大矩阵切割成小矩阵

论文自然还是 Anatomy of High-Performance Matrix Multiplication。 如何拆分 一个矩阵乘法有 6 种拆分方式&#xff0c;其中对 row-major 效率最高的是&#xff1a; 第一次拆分 先做第一次拆分&#xff0c;取 A 的 kc 列&#xff08;PanelA&#xff09;和 B 的 kc 行&…

基于 7 大城市实景数据,清华大学团队开源 GPD 模型

城市&#xff0c;是人们安居乐业的故土&#xff0c;是政府开展经济建设的基石&#xff0c;承载着细腻的人文情怀与宏伟的国家发展脉络。长期以来&#xff0c;管理者一直在探寻更加高效、科学的城市治理方法&#xff0c;解决不同地区资源供给不平衡、交通拥挤、人口流失等问题。…

Qt项目通过.pri文件将众多文件按功能模块分类显示,开发大型项目必备

Chapter1 Qt项目通过.pri文件将众多文件按功能模块分类显示&#xff0c;开发大型项目必备 Chapter2 在Qt项目中添加pri文件 原文链接&#xff1a;在Qt项目中添加pri文件_qtpri-CSDN博客 前言 一般我们创建Qt项目工程的时候&#xff0c;都是直接把所有的项目&#xff0c;头文…

Chatopera 云服务的智能问答引擎实现原理,如何融合 #聊天机器人 技术 #Chatbot #AI #NLP

观看视频 Bilibili: https://www.bilibili.com/video/BV1pZ421q7EH/YouTube: https://www.youtube.com/watch?vx0d1_0HQa8o 内容大纲 提前在浏览器打开网址&#xff1a; Chatopera 云服务&#xff1a;https://bot.chatopera.comChatopera 入门教程&#xff1a;https://dwz…

微机原理-基于8086电压报警器系统仿真设计

**单片机设计介绍&#xff0c;微机原理-基于8086电压报警器系统仿真设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于8086的电压报警器系统仿真设计概要主要涉及到系统的整体架构设计、硬件组成、软件逻辑设计以及仿真环境…

【智能算法】黄金正弦算法(GSA)原理及实现

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献 1.背景 2017年&#xff0c;Tanyildizi等人受到正弦函数单位圆内扫描启发&#xff0c;提出了黄金正弦算法&#xff08;Golden Sine Algorithm, GSA&#xff09;。 2.算法原理 2.1算法思想 GSA来源于正弦函…

前端学习<二>CSS基础——14-CSS3属性详解:Web字体

前言 开发人员可以为自已的网页指定特殊的字体&#xff08;将指定字体提前下载到站点中&#xff09;&#xff0c;无需考虑用户电脑上是否安装了此特殊字体。从此&#xff0c;把特殊字体处理成图片的方式便成为了过去。 支持程度比较好&#xff0c;甚至 IE 低版本的浏览器也能…

C语言内存函数(超详解)

乐观学习&#xff0c;乐观生活&#xff0c;才能不断前进啊&#xff01;&#xff01;&#xff01; 我的主页&#xff1a;optimistic_chen 我的专栏&#xff1a;c语言 点击主页&#xff1a;optimistic_chen和专栏&#xff1a;c语言&#xff0c; 创作不易&#xff0c;大佬们点赞鼓…

安全用电监控系统在工厂的研究与应用论述

摘 要&#xff1a;随着社会时代的发展&#xff0c;人们的安全意识越来越强烈&#xff0c;在人们生活和工作中离不开各种用电设备&#xff0c;用电设备的安全使用是保障人们生命安全的重要内容。工厂因自身厂内工作环境的特殊性&#xff0c;用电设备的种类多且复杂&#xff0c;如…

【数据结构与算法初阶(c语言)】插入排序、希尔排序、选择排序、堆排序、冒泡排序、快速排序、归并排序、计数排序-全梳理(万字详解,干货满满,建议三连收藏)

目录 1.排序的概念及其运用 1.1排序的概念 1.2排序运用 1.3常见的排序算法 2.插入排序 2.1 原理演示&#xff1a;​编辑 2.2 算法实现 2.3 算法的时间复杂度和空间复杂度分析 3.希尔排序 3.1算法思想 3.2原理演示 3.3代码实现 3.4希尔算法的时间复杂度 4.冒泡排序 4.1冒泡排…

二、图的表示和带权图

文章目录 1、图的表示1.1 邻接矩阵1.2 邻接表1.3 关联矩阵 2、带权图2.1 最短路径问题2.2 中国邮递员问题2.3 旅行商问题 THE END 1、图的表示 1.1 邻接矩阵 \qquad 将图的所有顶点分别构成一个二维矩阵的行列&#xff0c;将顶点之间的边关系表示在构成的矩阵之中&#xff0c;…

在CentOS 8.5.2111下安装vncserver

# 参考&#xff1a; 如何在 CentOS 8/RHEL 8 上安装配置 VNC 服务器 安装CentOS 8.5.2111 及 vncserver # 标准安装步骤 安装GNOME桌面环境使用屏幕号:1。安装VNC服务器&#xff08;tigervnc-server tigervnc&#xff09;设置VNC密码设置VNC服务器配置文件开启vnc服务。开放防…

FX110网:货币交易5个亏损典型,你有中招吗?

人生百年几今日&#xff0c;今日不为真可惜&#xff01;若言姑待明朝至&#xff0c;明朝又有明朝事。很多投资朋友总是抱怨&#xff0c;为什么总是看见别人赚钱&#xff0c;自己一进场就亏损&#xff0c;那么在这里投资失败无非两点&#xff1a;一是自身原因&#xff0c;自己没…

SAP 销售分销中的免费货物

销售业务中&#xff0c;免费货物在您与客户协商价格时起着重要作用。在零售、化工或消费品这样的行业部门中&#xff0c;通常以免费货物的形式向客户提供折扣。 作为用户&#xff0c;业务用户希望能自动确定免费货物并将它们归入销售凭证中。同时需要向成本控制部门提供免费货物…