基于Android studio+SSH的单词记忆(背单词)APP设计

目录

  1. 引言 3
    1.1. 项目介绍 3
    课程设计选题《单词记忆APP》 3
    1.2. 项目的目的和意义 3
    1.3. 相关技术介绍 5
    1.3.1. ionic + angular + cordova混合框架 5
    1.4. 后端SSH框架 6
  2. 系统需求分析 8
    2.1. 软件功能 8
    2.1.1. 需求分析 8
    2.2. 功能性需求 9
  3. 项目介绍 10
    3.1. 系统的开发环境 10
    3.2. 系统的技术路线 11
    3.3. 系统的具体功能 11
    3.3.1. 登录注册模块 11
    3.3.2. 单词学习模块 11
    3.3.3. 单词列表模块 12
    3.3.4. 单词翻译模块 12
    3.3.5. 翻译收藏模块 12
    3.3.6. 阅读模块 12
    3.3.7. 个人中心模块 12
    3.3.8. 今日计划版块 13
    3.3.9. 单词进度模块 13
  4. 系统设计 13
    4.1. 总体设计 13
    4.1.1. 处理流程 13
    4.1.2. 总体结构和模块外部设计 14
    4.1.3. 系统类关系设计 14
    4.2. 系统功能模块设计 15
    4.2.1. 用户登陆修改信息模块 16
    4.2.2. 单词学习模块 17
    4.2.3. 搜索模块 19
    4.2.4. 查看词典 19
    4.2.5. 收藏模块 20
    4.2.6. 个人中心模块 21
    4.2.7. 今日计划模块 22
    4.2.8. 管理员管理模块 23
    4.3. 数据库设计 23
    4.3.1. 逻辑结构设计 23
    4.3.2. 物理结构设计 24
    4.4. 后端服务器API规约 27
    4.4.1. 用户相关API 27
    4.4.2. 单词相关API 27
    4.4.3. 词典相关API 27
    4.4.4. 收藏相关API 28
    4.4.5. 管理员相关API 28
  5. 各模块具体功能实现 28
    5.1. 用户登陆实现 29
    5.1.1. 向后端服务器提交用户登录信息算法 29
    5.1.2. 用户登录成功向后端服务器获取相关信息算法 29
    5.2. 用户注册实现 30
    5.2.1. 向后端服务器提交用户注册信息算法 30
    5.3. 用户信息修改实现 31
    5.3.1. 向后端服务器提交用户更改的信息算法 31
    5.4. 单词学习流程实现 31
    5.4.1. 初步学习页面 32
    5.4.2. 初步学习算法 32
    5.4.3. 单词复习算法 33
    5.4.4. 单词复习页面 36
    5.5. 单词计划实现 37
    5.5.1. 单词计划页面 37
    5.5.2. 单词计划相关代码 38
    5.6. 单词列表实现 39
    5.6.1. 单词列表页面 39
    5.7. 单词搜索实现 40
    调用API接口实现翻译 42
    5.8. 查询单词收藏功能实现 43
    5.9. 个人信息修改实现 43
    5.10. 今日计划部分实现 43
  6. 功能展示 43
    6.1. 单词学习系统主要界面 43
    6.1.1. 登陆界面 43
    6.1.2. 用户注册界面 44
    6.1.3. 单词学习界面 45
    6.1.4. 计划修改页面 47
    6.1.5. 单词列表页面 48
    6.1.6. 单词搜索界面 49
    6.1.7. 个人信息查看与修改界面 49
    6.1.8. 背单词系统管理系统 50
    2.系统需求分析
    2.1.软件功能
    2.1.1.需求分析
    随着科学技术的发展,人类社会日新月异,智能手机自出现以来就在人类的生产生活中饰演着重要的角色,越来越成为大家日常生活中必不可少的生活工具。在学校、在家中、在交通工具上甚至在工作中随处可见智能手机的身影。与此同时手机软件也日益发展壮大。而在全球化的背景下,对于英语的学习也变得越来越重要。手机电子词典或生词记忆软件作为学习英语的工具,凭借其便捷、简单、高效的优势,日益受到年轻人的青睐。
    本项目APP主要针对用户有需要英语四六级考试、考研、出国留学考雅思、托福等在校大学生。还有就是初高中需要背英语单词的学生,以及想要提升自己词汇量的上班白领。这些用户的特征有(1)学生群体,受教育程度高,主动学习能力强;(2)好奇心强,对好玩有趣易用的新鲜事物感兴趣;(3)备考需要,想要提升自己的考试能力。经分析,这些用户的需求有(1)提高词汇量,满足考试、生活及工作需要;(2)充分利用碎片化时间,更有效率地学习;(3)需要有一套合理、科学的背单词学习计划,日积月累,成长看得见;(4)需要更有趣味地记单词,拒绝传统式枯燥、而且容易忘的记单词方式;(5)在记单词的时候,也想要提高自己的听力。
    为满足目标用户的需求,基本可以去确定本电子词典软件设计所要完成的功能目标。以下是本项目中电子词典具备的功能。
    (1)登录界面,用户进行登录,保障用户信息安全;
    (2)注册界面,供新用户进行注册;
    (3)主菜单界面,供用户选择要执行的操作界面;
    (4)单词列表界面,供用户查看当前词典所有单词以及学习中收藏的单词
    (5)计划更改界面,供用户选择词典以及制定每日所学习的单词数
    (6)单词学习界面,供用户进行单词记忆主要功能模块;
    (7)翻译界面,供用户进行生词的英汉互译;
    (8)翻译收藏界面,供用户收藏自己查询的易混单词;
    (9)单词本界面,供用户对学习问题及生词进行标注;
    (10)个人中心页面,供用户修改个人信息及头像;
    在设计软件之前,我们首先要对要解决的问题进行详细的分析,弄清楚问题的要求,包括需要输入什么,要得到什么结果,最后应输出什么。本文转载自http://www.biyezuopin.vip/onews.asp?id=15129使用电子词典软件的最大群体是学生,他们需要准确性很强的单词解释,而对操作界面没有太高的要求。因而,我们最重要的就是增强电子词典软件的准确性。我们使用有道API、百度API这样准确性很强的电子词典接口,在词典中加入四六级、雅思托福等实用性强的词库。软件设计的布局要清晰,功能不宜太复杂,只有这样才能使不参与本软件编写的人熟练的使用。
package me.hades.yqword;

import android.app.Activity;
import android.app.Application;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;

import com.umeng.analytics.MobclickAgent;
import com.umeng.commonsdk.UMConfigure;

import me.hades.yqword.model.DaoMaster;
import me.hades.yqword.model.DaoSession;
import me.hades.yqword.preference.ApiPreference;
import me.hades.yqword.utils.CommonValues;
import me.hades.yqword.utils.Config;
import me.hades.yqword.utils.SPUtil;
import me.hades.yqword.utils.WordDatabase;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;

/**
 * Created by hades on 2018/6/2.
 */

public class App extends Application implements Application.ActivityLifecycleCallbacks{

    private static final String TAG = App.class.getSimpleName();

    public static Context globalContext = null;

    public static ApiPreference apiPreference;

    /**
     * DEBUG 开关
     */
    public static final Boolean DEBUG = true;

    DaoMaster.DevOpenHelper helper;
    SQLiteDatabase db;
    DaoMaster daoMaster;
    private DaoSession daoSession;

    @Override
    public void onCreate() {
        super.onCreate();
        if(globalContext == null) {
            globalContext = getApplicationContext();
        }
        /**
         * 初始化common库
         * 参数1:上下文,不能为空
         * 参数2:【友盟+】 AppKey
         * 参数3:【友盟+】 Channel
         * 参数4:设备类型,UMConfigure.DEVICE_TYPE_PHONE为手机、UMConfigure.DEVICE_TYPE_BOX为盒子,默认为手机
         * 参数5:Push推送业务的secret
         */
        UMConfigure.init(this, CommonValues.UMengAppkey,
                "Umeng",UMConfigure.DEVICE_TYPE_PHONE,null);

        /**
         * 对数据库进行初始化
         */
        boolean isFirstOpen = !SPUtil.contains(globalContext, CommonValues.FIRST_OPEN);
//        isFirstOpen=false; //for init db , delete this later
        if (isFirstOpen) {
            globalContext.deleteDatabase(CommonValues.DATABASE_NAME);
            new WordDatabase(globalContext).getWritableDatabase();
            helper = new DaoMaster.DevOpenHelper(this, CommonValues.DATABASE_NAME, null);
            db = helper.getWritableDatabase();
            daoMaster = new DaoMaster(db);
            daoSession = daoMaster.newSession();

            SPUtil.putAndApply(globalContext, CommonValues.FIRST_OPEN, "no");

        } else {

            db = new WordDatabase(globalContext).getWritableDatabase();
            daoMaster = new DaoMaster(db);
            daoSession = daoMaster.newSession();
        }

        // 初始化配置工具
        Config.setContext(globalContext);

        //初始化Retrofit
        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl(CommonValues.SERVER_URL)
                .addConverterFactory(GsonConverterFactory.create())
                .build();
        apiPreference = retrofit.create(ApiPreference.class);
    }

    @Override
    public void onActivityCreated(Activity activity, Bundle savedInstanceState) {

    }

    @Override
    public void onActivityStarted(Activity activity) {

    }

    @Override
    public void onActivityResumed(Activity activity) {
        if(DEBUG){

        }
        MobclickAgent.onResume(this);
    }

    @Override
    public void onActivityPaused(Activity activity) {
        MobclickAgent.onPause(this);
    }

    @Override
    public void onActivityStopped(Activity activity) {

    }

    @Override
    public void onActivitySaveInstanceState(Activity activity, Bundle outState) {

    }

    @Override
    public void onActivityDestroyed(Activity activity) {

    }

    /**
     * 返回数据库Session
     * @return
     */
    public DaoSession getDaoSession() {
        return daoSession;
    }
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/sheziqiong/article/details/126827779
今日推荐