安卓课设

 

Android应用程序开发

课程设计报告

2019—2020学年 第Ⅰ学期)

基于Android的背单词APP的设计与实现

 

 

               信息与控制工程           

              计算机科学与技术          

                   1701                 

                  闵可欣                

指导教师                                

 

 

目录

一、 绪论1

(一) 设计背景及意义 1

(二) 编写目的 1

二、 需求分析2

(一) 需求分析 2

(二) UML需求用例图及用例分析说明 2

三、 系统设计4

(一) 系统总体设计 4

(二) 系统数据库设计 4

 系统详细设计 5

 各模块功能 5

 UML设计 6

、系统测试7

(一)测试登录界面 7

(二)测试录入界面面 8

五、系统实现12

(一)系统实现目标 12

(二)界面布局 12

附件 48

 

一、绪论

(一)设计背景及意义

随着经济全球化,我们与外国人的接触越来越多,英语已经成为了中国与外面交流的主要工具,同时我国的英语教育也开始普及到了小学,人们对学习英语越来越重视。而对于学习英语特别是英语单词记忆,记忆单词的方式也在不断的更新,而今移动互联网时代的到来,尤其智能手机的广泛应用,英语学习的平台已经逐渐向计算机或者手机等移动设备上转移,背单词的方式方法进入一个新的领域。背单词软件是当下比较流行且方便有效的辅助记忆工具,本文介绍的背单词软件是一款基于android平台的应用软件,其主要功能有单词学习,单词背诵,单词测试,真人发音,添加生词本等。同时本文对背单词软件开发中有关系统设计,系统实施方法和设计词库等方面进行了探索,以此推动计算机英语辅助软件开发。

  1. 编写目的

    以前人们用最简单的辞典,在众多的资料中翻阅、查找,费时、费力,而且应用性非常差。设计这么一个背单词系统,使得用户可以便捷,快速的进行操作,同时也达到了稳定,准确的目的。基于Android的英语背单词程序的设计可以进一步扩大学习英语的途径,让广大公众能够随时随地方便且快捷地认识与记忆英语单词,以提高自身的英语水平。本软件提供从初次记忆单词到熟记单词的所有功能,帮助大家科学学习。当您初次使用本软件记忆单词后,系统会自动为您制定学习复习计划,帮助您科学快速地完成记忆单词的过程。软件提供测试功能,帮助您自我检测学习状态。更好地发挥了Android技术对移动互联网的现实性作用。

二、需求分析

(一)需求分析


1.技术可行性上Android是一个成熟强的移动操作系统。而且是一个开源系统,市场占有率很高。Androld应用是用java语,虽然版有好多但一般会向下兼容,用Android Studio来创建应用程序,Android提供开发的足够的接口API让开发者开发功能强大的应用程序。
2. 经济可行性上,该应用程序不需要服务器端,不需要与别的用进行交互,只需要本地Android智能机设置好。用户学习内容动保存,而且复习计划
行设置提醒。占用内存小,用户电池消耗小。所以该方案是行的。
3. 操作可行性上,利用现有的windows系统进行开发。使用Android studio 作为开发工具以及使用Sqlite作为数据库,通过模拟器进行程序调试,然后通过Android智能机进行功能测试。整个过程平台厂泛,皆可实现。
4.系统性能分析方面要求程序响应速度快、安全性高、信息处理速度快
(二)UML需求用例图及用例分析说明

用例分析说明

登录界面:登录页面用户输入账号和密码进行登录

开始学习界面:开始学习界面取一个昵称

录入界面:

添加信息:在录入界面,用户可以添加想要记录的单词及其翻译,这些数据会被存储到数据库中

查询信息:在录入界面,用户可以查询自己添加的单词及其翻译,这些数据会从数据库中调取出来

修改信息:在录入界面,用户可以修改自己添加的单词及其翻译,这些数据

会覆盖原数据库中的信息,

删除信息:在录入界面,用户可以删除自己添加的单词及其翻译,这些数据会从数据库中删除

背诵界面

数据库存储的数据会一一显示出来,点击我会会自动删除之前存储的数据,点击不会会显示该单词的汉语意思,点击下一个就会跳到数据库存储的下一条数据

个人中心界面:

分为我的单词库和修改密码两部分;点击我的单词库会看到之前存储的所有数据;点击修改密码,用户可以修改自己的密码

用户

三、系统设计

(一)系统总体设计
(二)系统数据库设计

名称

数据类型

长度

约束

说明

_id

INTEGER

0

PRIMARY KEY AUTOINCREMENT

编号

Word

VARCHAR

20

 

单词

Translate

VARCHAR

20

 

翻译

_id

Word

translate

1

apple

苹果

2

Banana

香蕉

3

Orange

橘子

(三)系统详细设计
1.录入界面

编号

输入

处理

输出

1

点击添加

将数据存入数据库

显示添加成功

2

点击查询

将数据库信息调取出来

显示单词及其翻译

3

点击修改

输入修改内容,将修改后的内容存入数据库

显示修改后的单词及其翻译

4

点击删除

将数据从数据库中删除

显示删除成功

3.背诵界面

编号

输入

处理

输出

1

点击会

将数据从数据库中删除

数据已删除

2

点击不会

从数据库中调用数据

显示单词的翻译

3

点击下一个

显示下一个单词

跳到下一个单词

(四)各模块功能

登录模块:登录页面上会显示账户和密码,使用EditText组件,让用户输入账户和密码,使用onCreat方法,实现页面跳转

开始学习模块:输入自己的昵称,点击开始学习按钮跳转到主页面

首页模块:首页模块主要由三部分组成,分别是录入,背诵,个人中心,用户可以点击录入按钮,进行添加单词,并存入数据库;使用线性布局及帧布局进行设计

录入模块:使用了SQLite数据库,实现了用户对单词及其翻译的添加查询修改删除的功能同时查询显示用户信息时调适配器实现了Listview

背诵模块:使用了SQLite数据库,当用户点击点击会时,会删除这个单词数据,点击不会时,该单词的翻译就会显示,点击下一个时,就会切换成下一个单词;

个人中心模块:该模块由两部分组成,分别是我的单词库和修改我的密码;点击我的单词库会查询显示用户添加的所有单词及其翻译,使用了自定义适配器实现Listview点击修改密码按钮,用户确认后会转到登录界面重新登录;

(五)UML设计
1.UML时序图
2. 系统类图

四、系统测试

本次课程设计所用的开发环境为:Android studio

开发技术:Android java

数据库:SQLite数据库

(一)测试登录页面

点击登录,跳转到开始学习界面

 

                 
(二)测试录入界面
1. 添加测试

添加单词及其翻译后显示“添加成功”

 

2.查询测试

添加的单词及其翻译会在下面显示出来

                   

 

3.修改测试

修改单词或者翻译,显示修改成功,再次点击查询会变成所修改的数据

   

 

 

 

 

4.删除测试

点击删除,会将存入的数据从数据库删除,并显示删除成功,再次查询时无记录

   

 

五、系统实现

(一)系统实现目标

Android 将带给我们更加智能、便捷、现代的生活。从而,Android应用的开发,将会越来越庞大,需求将会越来越丰富。开发英语背单词手机软件和其他应用将会越来越普遍,Android将会越来越壮大。 Android系统的背单词APP系统,主要实现的用户记单词,背单词,查看单词,了解数据的增加、查询、删除、修改,页面跳转list view的功能。

(二)界面布局

drAnoidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.keshe">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".Main7Activity"></activity>
        <activity android:name=".Main6Activity" />
        <activity android:name=".Main1Activity" />
        <activity android:name=".Main5Activity" />
        <activity android:name=".Main4Activity" />
        <activity android:name=".Main3Activity" />
        <activity android:name=".Main2Activity" />
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

1.登录页面

 

代码

//线性布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:app="http://schemas.android.com/apk/res-auto"
 xmlns:tools="http://schemas.android.com/tools"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:background="@drawable/b"
 android:id="@+id/activity_main"
 android:orientation="vertical">//设置垂直排列

//线性布局

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal">
//使用组件TextView输入文字

<TextView
    android:id="@+id/textView9"
        android:layout_width="wrap_content"
        android:layout_height="50dp"
        android:layout_marginLeft="43dp"
        android:layout_marginTop="50dp"
        android:text="天天记单词"
        android:textColor="#0E0E0D"
        android:textSize="28sp" />
</LinearLayout>

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal">

//实现账号输入框

<TextView
    android:layout_width="80dp"
    android:layout_height="50dp"
    android:layout_marginTop="130dp"
    android:layout_marginLeft="50dp"
    android:text="账号:"
    android:textSize="20sp"/>//设置文字大小
<EditText
    android:layout_width="200dp"
    android:layout_height="50dp"
    android:layout_marginTop="130dp"
    android:layout_marginLeft="15dp"
    android:hint="请输入账号:" />
</LinearLayout>

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal">//设置水平排列

//实现密码输入框

<TextView
    android:layout_width="80dp"
    android:layout_height="50dp"
    android:layout_marginTop="20dp"
    android:layout_marginLeft="50dp"
    android:text="密码:"
    android:textSize="20sp"/>
<EditText
    android:layout_width="200dp"
    android:layout_height="50dp"
    android:layout_marginTop="20dp"
    android:layout_marginLeft="15dp"
        android:hint="请输入密码:" />
</LinearLayout>

//实现登录按钮,跳转页面
<Button
    android:id="@+id/main_btn"
    android:layout_width="wrap_content"
    android:layout_height="50dp"
    android:layout_marginLeft="160dp"
    android:layout_marginTop="70dp"
    android:background="#FFD2D2"
    android:text="登录"
    android:onClick="click0"//设置onclick实现界面跳转
    android:textSize="20sp"
    android:alpha="0.8"/>//设置按钮透明度

</LinearLayout>

2. 开始学习界面

                   

 

代码:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"//居中
    android:background="@drawable/b">

    <TextView
        android:layout_marginLeft="20dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="你好!取个名字把!"
        android:textColor="#000"
        android:textSize="30sp"
        android:layout_marginBottom="50dp"
        android:id="@+id/main1_tv"
        />
    <EditText
        android:layout_width="300dp"
        android:layout_height="50dp"
        android:hint="请输入昵称:"
        android:textColorHint="#000"
        android:paddingLeft="10dp"
        android:textSize="16sp"
        android:textColor="#000"
        android:id="@+id/main_et_username"
        android:layout_below="@+id/main1_tv"
        />
    <Button
        android:layout_marginTop="20dp"
        android:layout_marginLeft="100dp"
        android:layout_below="@id/main_et_username"
        android:onClick="click1"
        android:layout_width="wrap_content"
        android:layout_height="50dp"
        android:text="开始学习"
        android:textSize="20sp"
        android:background="#FFD2D2"
        android:id="@+id/main6_btn"
        android:alpha="0.8"/>
</RelativeLayout>



3.主界面

 

代码:


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:background="@drawable/b"
    >
<LinearLayout

    android:layout_width="match_parent"
    android:layout_height="100dp"  >
 </LinearLayout>

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="开始你的单词!"
    android:layout_marginLeft="110dp"
    android:layout_marginTop="15dp"
    android:textSize="30dp">
</TextView>
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="20dp">
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="输入单词 :"
        android:layout_marginLeft="60dp"
        android:textSize="25dp">
    </TextView>
    <EditText
        android:id="@+id/et_name"
        android:layout_width="200dp"
        android:layout_height="wrap_content"
        android:hint="请输入单词:"
        android:layout_marginLeft="10dp"
        android:textSize="20dp">
    </EditText>

</LinearLayout>
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    >
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="输入翻译 :"
        android:layout_marginLeft="60dp"
        android:textSize="25dp">
    </TextView>
    <EditText
        android:id="@+id/et_phone"
        android:layout_width="200dp"
        android:layout_height="wrap_content"
        android:hint="请输入翻译"
        android:layout_marginLeft="10dp"
        android:textSize="20dp">
    </EditText>

</LinearLayout>
<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal">
    <Button
        android:id="@+id/btn_add"
        android:layout_width="wrap_content"
        android:layout_height="60dp"
        android:background="#FFD2D2"
        android:alpha="0.5"
        android:text="添加"
        android:textSize="20dp"
        android:layout_marginLeft="2dp"
        android:layout_margin="8dp">
    </Button>
    <Button
        android:id="@+id/btn_query"
        android:layout_width="wrap_content"
        android:layout_height="60dp"
        android:background="#FFD2D2"
        android:alpha="0.5"
        android:text="查询"
        android:textSize="20dp"
        android:layout_margin="8dp">
    </Button>
    <Button
        android:id="@+id/btn_update"
        android:layout_width="wrap_content"
        android:layout_height="60dp"
        android:text="修改"
        android:background="#FFD2D2"
        android:alpha="0.5"
        android:textSize="20dp"
        android:layout_margin="8dp">
    </Button>
    <Button
        android:id="@+id/btn_delete"
        android:layout_width="wrap_content"
        android:layout_height="60dp"
        android:text="删除"
        android:background="#FFD2D2"
        android:alpha="0.5"
        android:textSize="20dp"
        android:layout_margin="8dp">
    </Button>
</LinearLayout>
<TextView
    android:id="@+id/tv_show"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text=""
    android:textSize="20dp"
    android:layout_marginTop="10dp">

</TextView>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:layout_below="@+id/first_fl"
        android:layout_alignParentBottom="true"
        android:layout_marginTop="100dp"
        android:gravity="center">
        <Button
            android:layout_marginRight="20dp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="录入"
            android:textSize="16sp"
            android:background="#FFD2D2"
            android:id="@+id/main2_btn_input"
            android:alpha="0.8" />
        <Button
            android:layout_marginRight="20dp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="背诵"
            android:onClick="click2"
            android:textSize="16sp"
            android:background="#FFD2D2"
            android:id="@+id/main2_btn_recite"
            android:alpha="0.8" />
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="个人中心"
            android:textSize="16sp"
            android:background="#FFD2D2"
            android:id="@+id/main2_btn_self"
            android:alpha="0.8"
            android:onClick="click6" />
    </LinearLayout>
</LinearLayout>


4.背诵界面

 

代码:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/activity_main3"
    android:background="@drawable/b">
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

    </LinearLayout>

    <LinearLayout
        android:layout_marginTop="30dp"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:orientation="horizontal"
        android:id="@+id/title">
        <TextView
            android:gravity="center"
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:text="开始你的单词!"
            android:textSize="30sp"
            android:id="@+id/first_tv"
            android:layout_alignParentTop="true"
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true" />

    </LinearLayout>
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true">

    </LinearLayout>

    <FrameLayout
        android:layout_below="@id/title"
        android:layout_width="match_parent"
        android:layout_height="300dp"
        android:id="@+id/first_fl">

        <TextView
            android:id="@+id/recite_tv_translate"
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:gravity="center"
            android:text="这里显示单词"
            android:layout_marginTop="70dp"
            android:textSize="20sp" />

        <TextView
            android:id="@+id/recite_tv_word"
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:layout_weight="0.01"
            android:gravity="center"
            android:layout_marginTop="120dp"
            android:text="这里显示翻译"
            android:textSize="20sp" />
        <Button
            android:layout_marginRight="20sp"
            android:layout_width="80dp"
            android:layout_height="60dp"
            android:textSize="20sp"
            android:text="我会"
            android:background="#FFD2D2"
            android:layout_marginTop="180dp"
            android:layout_marginLeft="40dp"
            android:id="@+id/main3_btn_hui"
            android:alpha="0.5"/>

        <Button
            android:id="@+id/main3_btn_next"
            android:layout_width="80dp"
            android:layout_height="60dp"
            android:background="#FFD2D2"
            android:layout_marginTop="180dp"
            android:layout_marginLeft="170dp"
            android:text="不会"
            android:textSize="20sp"
            android:alpha="0.5"/>

        <Button
            android:id="@+id/main3_btn_buhui"
            android:layout_width="80dp"
            android:layout_height="60dp"
            android:layout_marginRight="20sp"
            android:background="#FFD2D2"
            android:layout_marginTop="180dp"
            android:layout_marginLeft="295dp"
            android:text="下一个"
            android:textSize="20sp"
            android:alpha="0.5"/>

    </FrameLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:layout_below="@+id/first_fl"
        android:layout_alignParentBottom="true"
        android:gravity="center">
        <Button
            android:layout_marginRight="20dp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="录入"
            android:onClick="click4"
            android:textSize="16sp"
            android:background="#FFD2D2"
            android:id="@+id/frist_btn_input"
            android:alpha="0.8"
            />
        <Button
            android:layout_marginRight="20dp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="背诵"
            android:textSize="16sp"
            android:background="#FFD2D2"
            android:id="@+id/frist_btn_recite"
            android:alpha="0.8"
            />
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="个人中心"
            android:onClick="click3"
            android:textSize="16sp"
            android:background="#FFD2D2"
            android:id="@+id/frist_btn_self"
            android:alpha="0.8"
            />

    </LinearLayout>

</RelativeLayout>

 
5.个人中心页面

 

代码:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/activity_main4"
android:background="@drawable/b">
<LinearLayout
    android:layout_marginTop="30dp"
    android:layout_width="match_parent"
    android:layout_height="50dp"
    android:orientation="horizontal"
    android:id="@+id/title">
    <TextView
        android:gravity="center"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:text="开始你的单词!"
        android:textSize="30sp"
        android:id="@+id/first_tv"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" />

</LinearLayout>
<LinearLayout
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center">

    <Button
        android:layout_width="200dp"
        android:layout_height="50dp"
        android:layout_marginBottom="80dp"
        android:alpha="0.5"
        android:background="#FFD2D2"
        android:onClick="click5"
        android:text="我的单词库"
        android:textSize="20sp" />

    <Button
        android:layout_width="200dp"
        android:layout_height="50dp"
        android:layout_marginBottom="200dp"
        android:alpha="0.5"
        android:background="#FFD2D2"
        android:text="修改密码"
        android:onClick="click9"
        android:textSize="20sp" />

</LinearLayout>

<FrameLayout
    android:layout_below="@id/title"
    android:layout_width="match_parent"
    android:layout_height="300dp"
    android:id="@+id/first_fl">

</FrameLayout>
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="50dp"
    android:layout_below="@+id/first_fl"
    android:layout_alignParentBottom="true"
    android:gravity="center">
    <Button
        android:layout_marginRight="20dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="录入"
        android:onClick="click7"
        android:textSize="16sp"
        android:background="#FFD2D2"
        android:id="@+id/frist_btn_input"
        android:alpha="0.8"
        />
    <Button
        android:layout_marginRight="20dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="背诵"
        android:onClick="click8"
        android:textSize="16sp"
        android:background="#FFD2D2"
        android:id="@+id/frist_btn_recite"
        android:alpha="0.8"
        />
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="个人中心"
        android:textSize="16sp"
        android:background="#FFD2D2"
        android:id="@+id/frist_btn_self"
        android:alpha="0.8" />

</LinearLayout>
</RelativeLayout>

6.我的单词库界面

 

代码:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/b">
//设置listview
    <ListView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/list">
    </ListView>
</LinearLayout>

7.修改密码界面

 

代码:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/b">
    <TextView
        android:layout_marginLeft="150dp"
        android:layout_width="150dp"
        android:layout_height="50dp"
        android:text="修改密码"
        android:textColor="#000"
        android:textSize="30sp"
        android:layout_marginTop="200dp"
        android:id="@+id/main6_tv"
        />
    <EditText
        android:layout_width="300dp"
        android:layout_height="50dp"
        android:hint="请输入新密码:"
        android:textColorHint="#000"
        android:paddingLeft="10dp"
        android:textSize="16sp"
        android:textColor="#000"
        android:layout_marginTop="25dp"
        android:layout_marginLeft="45dp"
        android:id="@+id/main6_et_username"
        android:layout_below="@+id/main6_tv"
        />
    <EditText
        android:layout_width="300dp"
        android:layout_height="50dp"
        android:hint="请确认密码:"
        android:textColorHint="#000"
        android:paddingLeft="10dp"
        android:textSize="16sp"
        android:textColor="#000"
        android:layout_marginTop="25dp"
        android:layout_marginLeft="45dp"
        android:id="@+id/main6_et6_username"
        android:layout_below="@+id/main6_tv"
        />
    <Button
        android:layout_width="100dp"
        android:layout_height="50dp"
        android:background="#FFD2D2"
        android:alpha="0.5"
        android:text="确定"
        android:textSize="20sp"
        android:layout_marginTop="25dp"
        android:layout_marginLeft="150dp"
        android:onClick="click10"
        />

</LinearLayout>

list_item.xml

//设置list view样式

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/b">
    <TextView
        android:layout_marginLeft="10dp"
        android:gravity="center"
        android:layout_width="wrap_content"
        android:layout_height="50dp"
        android:text="1."
        android:textSize="20sp"
        android:id="@+id/id"/>
    <TextView
        android:layout_toRightOf="@+id/id"
        android:layout_marginLeft="20dp"
        android:gravity="center"
        android:layout_width="wrap_content"
        android:layout_height="50dp"
        android:text="apple"
        android:textSize="20sp"
        android:id="@+id/word"/>
    <TextView
        android:gravity="center"
        android:layout_toRightOf="@+id/word"
        android:layout_marginLeft="20sp"
        android:layout_width="wrap_content"
        android:layout_height="50dp"
        android:text="苹果"
        android:textSize="20sp"
        android:id="@+id/translate"/>

</RelativeLayout>

附件:

一、课设题目

基于Android的背单词APP的设计与实现

二、技术说明

1.Activity之间的跳转

实现页面跳转

2. Sqlite数据库

现对单词数据的添加,查询,修改,删除功能

3.控件的使用

Textview 、Button、Edittext 等

4.Listview的使用

适配器的调试自定义

5.事件的监听

OnClickListener()方法实现监听

6.页面布局

使用线性布局(LinearLayout)、相对布局(RelativeLayout)、帧布局

7.OnClickliskListener接口

用来相应button按钮的操作

三、UML类图

四、代码

清单文件

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.keshe">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".Main7Activity"></activity>
        <activity android:name=".Main6Activity" />
        <activity android:name=".Main1Activity" />
        <activity android:name=".Main5Activity" />
        <activity android:name=".Main4Activity" />
        <activity android:name=".Main3Activity" />
        <activity android:name=".Main2Activity" />
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

布局文件:

  1. 布局文件

2.Java文件

Java原码

Word.java

//设置listview

package com.example.keshe;
public class Word {

    private Integer conId;
    private String conName;
    private String content;
    private Integer imgId;

    public Word(){

    }

    public Word(Integer conId,String conName,String content){
        this.conId = conId;
        this.conName = conName;
        this.content = content;
    }

    public Integer getConId() {
        return conId;
    }

    public void setConId(Integer conId) {
        this.conId = conId;
    }

    public String getConName() {
        return conName;
    }

    public void setConName(String conName) {
        this.conName = conName;
    }

    public String getContent() {
        return content;
    }

    public void setContent(String content) {
        this.content = content;
    }

}

WordAdapter.java
@Override

//  适配器的使用
package com.example.keshe;

import java.util.List;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;

public class WordAdapter extends ArrayAdapter{
    private int resourceId;
    public WordAdapter(@NonNull Context context, int resource, @NonNull List objects) {
        super(context, resource, objects);
        resourceId = resource;
    }

    @NonNull
    @Override

//加载布局文件
    public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
        //获取当前项的实体类对象
        Word cons = (Word) this.getItem(position);
        //使用LayoutInflater加载自定义布局,并实例化一个View对象
        View view = LayoutInflater.from(getContext()).inflate(resourceId,null);
        //获取布局内的控件
        TextView consName = (TextView)view.findViewById(R.id.word);
        TextView content = (TextView)view.findViewById(R.id.translate);
        //为布局内的控件设置实体对象中的数据consImage.setImageResource(cons.getImgId());
        consName.setText(cons.getConName());
        content.setText(cons.getContent());
        //将适配好的ListView返回
        return view;
    }
}

ReciteBean.java

package com.example.keshe;

public class reciteBean {
    private String id;
    private String eng;
    private String chs;

    public String getId() {
        return this.id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getEng() {
        return eng;
    }

    public void setEng(String eng) {
        this.eng = eng;
    }

    public String getChs() {
        return chs;
    }

    public void setChs(String chs) {
        this.chs = chs;
    }


}

MainActivity.java

package com.example.keshe;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import androidx.appcompat.app.AppCompatActivity;

//继承
public class MainActivity extends AppCompatActivity {
//    private Button main_btn;
//    public void init(){
//         main_btn=(Button)findViewById(R.id.main_btn);
//       }
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
  //     init();
  //     main_btn.setOnClickListener(new View.OnClickListener() {

        }

//实现界面跳转
    public void click0(View view) {
        Intent intent=new Intent(MainActivity.this,Main1Activity.class);
        startActivity(intent);
        overridePendingTransition(android.R.anim.fade_in,android.R.anim.fade_out);
    }

    }
MainActivity1.java

package com.example.keshe;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;

import androidx.appcompat.app.AppCompatActivity;

public class Main1Activity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main1);
    }
    public void click1(View view) {
        Intent intent=new Intent(Main1Activity.this,Main7Activity.class);
        startActivity(intent);
        overridePendingTransition(android.R.anim.fade_in,android.R.anim.fade_out);
    }
}

MainActivity7.java

package com.example.keshe;

import android.content.ContentValues;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import androidx.appcompat.app.AppCompatActivity;



public class Main7Activity extends AppCompatActivity implements View.OnClickListener {
        MyHelper myHelper;
        private EditText mEtName, mEtPhone;
        private TextView mTvShow;
        private Button mBtnAdd, mBtnQuery, mBtnUpdate, mBtnDelete;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main7);

//实现事件监听,点击按钮
            myHelper = new MyHelper(this);
            mEtword = (EditText) findViewById(R.id.et_word);
            mEttranslate = (EditText) findViewById(R.id.et_translate);
            mTvShow = (TextView) findViewById(R.id.tv_show);
            mBtnAdd = (Button) findViewById(R.id.btn_add);
            mBtnQuery = (Button) findViewById(R.id.btn_query);
            mBtnUpdate = (Button) findViewById(R.id.btn_update);
            mBtnDelete = (Button) findViewById(R.id.btn_delete);
            mBtnAdd.setOnClickListener(this);
            mBtnQuery.setOnClickListener(this);
            mBtnUpdate.setOnClickListener(this);
            mBtnDelete.setOnClickListener(this);
        }
//    public  void zxClick(View view){
//        Intent intent = new Intent();
//        intent.setClass(Wode.this, MainActivity.class);
//        startActivity(intent);
//        finish();
//    }

//    public void wdClick1(View view) {
//        Intent intent = new Intent();
//        intent.setClass(Wode.this, Shouye.class);
//        startActivity(intent);
//        finish();
//    }
//
//    public void wdClick2(View view) {
//        Intent intent = new Intent();
//        intent.setClass(Wode.this, Shujia.class);
//        startActivity(intent);
//        finish();
//    }
//    public void wdClick3(View view) {
//        Intent intent = new Intent();
//        intent.setClass(Wode.this, Wode.class);
//        startActivity(intent);
//        finish();
//    }
// 数据库
        @Override
        public void onClick(View v) {
            String word, translate;
            SQLiteDatabase db;
            ContentValues values;
            switch (v.getId()) {
                case R.id.btn_add://添加数据
                    word = mEtWord.getText().toString();
                    translate = mEtTranslate.getText().toString();
                    db = myHelper.getWritableDatabase();
                    values = new ContentValues();
                    values.put("word", word);
                    values.put("translate", translate);
                    db.insert("danchi", null, values);
                    Toast.makeText(this, "添加成功", Toast.LENGTH_SHORT).show();
                    db.close();
                    break;
                case R.id.btn_query://查询数据
                    db = myHelper.getReadableDatabase();
                    Cursor cursor = db.query("danchi", null, null, null, null, null, null);
                    if (cursor.getCount() == 0) {
                        mTvShow.setText("");
                        Toast.makeText(this, "无记录", Toast.LENGTH_SHORT).show();
                    } else {
                        cursor.moveToFirst();
                        mTvShow.setText("单词:" + cursor.getString(1) + "翻译:" + cursor.getString(2));
                    }
                    while (cursor.moveToNext()) {
                        mTvShow.append("\n" + "单词:" + cursor.getString(1) + "翻译:" + cursor.getString(2));
                    }
                    cursor.close();
                    db.close();
                    break;
                case R.id.btn_update://修改数据
                    db = myHelper.getWritableDatabase();
                    values = new ContentValues();
                    values.put("translate", translate = mEttranslate.getText().toString());
                    db.update("danchi", values, "word=?", new String[]{mEtword.getText().toString()});
                    Toast.makeText(this, "修改成功", Toast.LENGTH_SHORT).show();
                    db.close();
                    break;
                case R.id.btn_delete://删除数据
                    db = myHelper.getWritableDatabase();
                    db.delete("danchi", null, null);
                    Toast.makeText(this, "删除成功", Toast.LENGTH_SHORT).show();
                    mTvShow.setText("");
                    db.close();
                    break;
            }
        }
    public void click2(View view) {
        Intent intent=new Intent(Main7Activity.this,Main3Activity.class);
        startActivity(intent);
        overridePendingTransition(android.R.anim.fade_in,android.R.anim.fade_out);
    }
    public void click6(View view) {
        Intent intent=new Intent(Main7Activity.this,Main4Activity.class);
        startActivity(intent);
        overridePendingTransition(android.R.anim.fade_in,android.R.anim.fade_out);
    }

    }

MainActivity3.java

package com.example.keshe;

import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;

import com.example.keshe.DBOpenHelper;
public class Main3Activity extends AppCompatActivity {

    @Override

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main3);
    }

    public void click3(View view) {
        Intent intent = new Intent(Main3Activity.this, Main4Activity.class);
        startActivity(intent);
        overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out);
    }

    public void click4(View view) {
        Intent intent = new Intent(Main3Activity.this, Main7Activity.class);
        startActivity(intent);
        overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out);
    }
}

MainActivity4.java

package com.example.keshe;

import androidx.appcompat.app.AppCompatActivity;
import com.example.keshe.DBOpenHelper;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;

public class Main4Activity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main4);
    }
    public void click5(View view) {
        Intent intent=new Intent(Main4Activity.this,Main5Activity.class);
        startActivity(intent);
        overridePendingTransition(android.R.anim.fade_in,android.R.anim.fade_out);
    }
    public void click7(View view) {
        Intent intent=new Intent(Main4Activity.this,Main3Activity.class);
        startActivity(intent);
        overridePendingTransition(android.R.anim.fade_in,android.R.anim.fade_out);
    }
    public void click8(View view) {
        Intent intent=new Intent(Main4Activity.this,Main7Activity.class);
        startActivity(intent);
        overridePendingTransition(android.R.anim.fade_in,android.R.anim.fade_out);
    }
    public void click9(View view) {
        Intent intent=new Intent(Main4Activity.this,Main6Activity.class);
        startActivity(intent);
        overridePendingTransition(android.R.anim.fade_in,android.R.anim.fade_out);
    }
}

 MainActivity5.java

package com.example.keshe;

import androidx.appcompat.app.AppCompatActivity;
import java.util.ArrayList;
import java.util.List;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.annotation.SuppressLint;
import android.app.Activity;
public class Main5Activity extends AppCompatActivity {

    private List<Word> consList = new ArrayList();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main5);
        //初始化数据
        initData();
        //创建自定义布局适配器
        WordAdapter adapter = new WordAdapter(Main5Activity.this,R.layout.list_item,consList);
        //获取ListView
        ListView listView = (ListView)findViewById(R.id.list);
        //给ListView设置适配器
        listView.setAdapter((ListAdapter) adapter);
    }

    private void initData(){
        Word apple = new Word(1,"apple","苹果");
        consList.add(apple);
        Word banana = new Word(2,"banana","香蕉");
        consList.add(banana);
        Word orange = new Word(3,"orange","橘子");
        consList.add(orange);
        Word desk = new Word(4,"desk","桌子");
        consList.add(desk);
        Word chair = new Word(5,"chair","椅子");
        consList.add(chair);



    }
}

MainActivity6.java

package com.example.keshe;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import com.example.keshe.DBOpenHelper;
public class Main6Activity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main6);
    }
    public void click10(View view) {
        Intent intent=new Intent(Main6Activity.this,MainActivity.class);
        startActivity(intent);
        overridePendingTransition(android.R.anim.fade_in,android.R.anim.fade_out);
    }
}

MyHelper.java

package com.example.keshe;

//数据库
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class MyHelper extends SQLiteOpenHelper {
    public MyHelper(Context context){
        super(context,"minkexindb.db",null,2);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {

        db.execSQL("CREATE TABLE danchi(_id INTEGER PRIMARY KEY AUTOINCREMENT,word VARCHAR(20),translate VARCHAR(20))");

db.execSQL("CREATE TABLE danci(_id INTEGER PRIMARY KEY AUTOINCREMENT,chs VARCHAR(20),eng VARCHAR(20))")
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    }
}

SQLiteHelper.java

package com.example.keshe;

import java.util.ArrayList;
import java.util.List;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;

public class SQLiteHelper extends SQLiteOpenHelper {
   public static final String DATABASE_NAME="recite";
   public static final String DATABASE_TABLE="reiteend";
   public static final int  DATABASE_VERSION=1;

   public static final String ID = "id";
   public static final String REITEEND_ENGLISH="eng";
   public static final String REITEEND_CHINESE="cge";
    private SQLiteDatabase sqLiteHelper;
//    private reciteBean mRecitrBean;
   public SQLiteHelper(Context context) {
      super(context, DATABASE_NAME, null, DATABASE_VERSION);
      sqLiteHelper = this.getWritableDatabase();
      // TODO Auto-generated constructor stub
   }

   @Override
   public void onCreate(SQLiteDatabase db) {
      // TODO Auto-generated method stub
      db.execSQL("create table "+DATABASE_TABLE+""
            + "("+ID+" integer primary Key autoincrement, "+REITEEND_ENGLISH+" VARCHAR(20),"+REITEEND_CHINESE+" VARCHAR(20))");
   }

   @Override
   public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
      // TODO Auto-generated method stub

   }
    public boolean insert (String enh,String cne) {
         ContentValues values  = new ContentValues();
         values.put(SQLiteHelper.REITEEND_ENGLISH, enh);
         values.put(SQLiteHelper.REITEEND_CHINESE, cne);
          return sqLiteHelper.insert(SQLiteHelper.DATABASE_TABLE, null, values)>0;
      }

    public boolean delect (String id) {
         return sqLiteHelper.delete(SQLiteHelper.DATABASE_TABLE, SQLiteHelper.ID+"=?", new String[] {id})>0;
      }

    public boolean upadta(String enh,String cne ,String id) {
         ContentValues values = new ContentValues();
         values.put("enh", enh);
         values.put("cne", cne);
         return sqLiteHelper.update(SQLiteHelper.DATABASE_TABLE, values , SQLiteHelper.ID+"=?", new String[] {id})>0;
      }

    public List<reciteBean> query() {
         List<reciteBean> list = new ArrayList<reciteBean>();
         reciteBean bean = new reciteBean();
         Cursor cursor =sqLiteHelper.query(SQLiteHelper.DATABASE_TABLE, null, null, null, null, null, null);
         if(cursor!=null) {
            while (cursor.moveToNext()) {
                String id =cursor.getString(cursor.getColumnIndex(SQLiteHelper.ID));
                String english = cursor.getString(cursor.getColumnIndex(SQLiteHelper.DATABASE_NAME));
                String chinese =cursor.getString(cursor.getColumnIndex(SQLiteHelper.REITEEND_CHINESE));
               bean.setId(id);
               bean.setChs(chinese);
               bean.setEng(english);
               list.add(bean);
            }

            cursor.close();
         }
         return list;
         
      }

}

类说明

MyHelper.java——建立数据库表

WordAdapter.java——设置查询时的listview

ReciteBean.java——设置查询listview的方法

MainActivity.java——设置登录页面

MainActivity1.java——设置开始学习页面

MainActivity7.java——设置录入页面

MainActivity3.java——设置背诵页面

MainActivity4.java——设置个人中心页面

MainActivity5.java——设置listview页面

MainActivity6.java——设置修改页面

猜你喜欢

转载自www.cnblogs.com/minmeishaonv/p/11996140.html