Android 小程序APP成语字典课程设计



内容及要求:

1.设计一个成语字典APP,要求此APP能够在手机上准确的看到成语的释义,并且能正确跳转。

2.设计主要的显示页面布局。

3.实现成语字典中添加成语的功能,删除成语的功能。

4.在打开此APP后,点击退出按钮能够退出此应用软件。

5.APP能够在电脑上实现运行,并且此程序能够运行出来。

 

 

 

 

    

1   题目要求................................................... 3

2   系统设计................................................... 3

2.1   功能模块设计1......................................... 3

2.2   功能模块设计2......................................... 4

3   运行结果分析............................................... 4

4   总结....................................................... 4

参考文献...................................................... 4

 

 

 


 

 

1     题目要求

简单成语字典

理解和熟悉成语字典的功能以及怎么实现其主要功能的。主要实现界面布局、新建、修改、删除成语的功能。

  1. 设计一个成语字典的APP,要求此APP能够在手机上准确显示成语的释义,并且能正确跳转。

  2. 设计主要的页面布局。

  3. 实现成语字典中添加成语的功能,删除成语的功能。

  4. 再打开此APP 后,点击退出按钮能够退出此应用程序。

  5. APP能够在电脑上实现运行,并且此程序能够运行出来。

1.1    功能模块设计1

描述本功能模块的设计,应包括

功能说明:

必要知识点:

  1. 首先要设计界面,作显示用的,如下图所示:

     

     

    XML 代码如下所示:

<?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:layout_width="match_parent"     android:layout_height="match_parent"     android:paddingTop="@dimen/activity_vertical_margin"     tools:context="com.mycompany.myapplication.MainActivity"> <LinearLayout     android:layout_width="match_parent"     android:layout_height="match_parent"     android:orientation="vertical"     >     <TextView         android:id="@+id/toolbar"         android:layout_width="match_parent"         android:layout_height="wrap_content"         android:text="成语字典"         android:textSize="38sp"         android:gravity="center"         />     <TextView         android:layout_width="wrap_content"         android:layout_height="wrap_content"         android:text="请输入成语:"         android:textSize="25sp"         />     <EditText         android:id="@+id/edit_word"         android:layout_width="match_parent"         android:layout_height="wrap_content"         android:textSize="25sp" />     <Button         android:id="@+id/button"         android:layout_width="match_parent"         android:layout_height="wrap_content"         android:text="开始查询"         android:textSize="24dp"         />     <TextView         android:id="@+id/result"         android:layout_width="match_parent"         android:layout_height="wrap_content"         android:textSize="16sp"         /> </LinearLayout> </RelativeLayout>

 

  1. 界面是用来显示输入的成语的,当输入成语后,界面跳转如下图所示:

     

  2. 界面是用来显示此成语相关信息(拼音、释义、引申、出处、同义、反义)的,当点击开始查询后,界面跳转如下图所示:

    4.如果输入的不是成语或输入为空时,点击开始查询不会发生跳转。

     

1.2    功能模块设计2

  1. java中建立APP所要用到的类

    MainActivity.java 代码:

     

package com.mycompany.myapplication; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; import com.kymjs.rxvolley.RxVolley; import com.kymjs.rxvolley.client.HttpCallback; import com.mycompany.myapplication.R; import org.json.JSONException; import org.json.JSONObject; public class MainActivity extends AppCompatActivity {     public static final String WORD_KEY = "07158adfcd1bf93c52e79f9026da5372";//在聚合数据里面申请的产品秘钥,拥有秘钥才能去访问这个网址     private EditText editword;     private TextView result,result1,result2;     private Handler handler;     private Button button;     @Override     protected void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         setContentView(R.layout.activity_main);         initialize();         initData();     }     private void initData() {         button.setOnClickListener(new View.OnClickListener() {             @Override             public void onClick(View view) {                 switch (view.getId()){                     case R.id.button:                         final String edit_result=editword.getText().toString();                         handler= new Handler() {                             @Override                             public void handleMessage(Message msg) {//handlerThread组成异步线程访问网络                                 super.handleMessage(msg);                                 switch (msg.what) {                                     case 1:                                         if (edit_result!=null) {                                             String url= "http://v.juhe.cn/chengyu/query?key="+ WORD_KEY+"&word="+edit_result;                                                 RxVolley.get(url, new HttpCallback() {                                                 @Override                                                 public void onSuccess(String t) {//字符串是一个json格式的字符串,RxVolley是访问网络的一个框架,是添加的依赖                                                     super.onSuccess(t);                                                     result.setText(parseJson(t));                                                 }                                             });                                             break;                                         }else{                                             Toast.makeText(MainActivity.this, "输入的成语为空"+edit_result, Toast.LENGTH_SHORT).show();                                         }                                 }                             }                         };                         new Thread(){                             @Override                             public void run() {                                 super.run();                                 Message message=new Message();                                 message.what=1;                                 handler.sendMessage(message);                             }                         }.start();                         break;                 }             }         });     }     private void initialize() {         editword = (EditText) findViewById(R.id.edit_word);         result = (TextView) findViewById(R.id.result);         button= (Button) findViewById(R.id.button);     }     private String parseJson(String t) {//解析json字符串         String s="";         try {             JSONObject jsonObject = new JSONObject(t);             JSONObject result = jsonObject.getJSONObject("result");             String pinyin=result.getString("pinyin");             String chengyujs = result.getString("chengyujs");             String from_=result.getString("from_");             String yinzhengjs=result.getString("yinzhengjs");             s=chengyujs+from_+yinzhengjs;             String tongyi = result.getString("tongyi");            // s=s+tongyi;             s=chengyujs+from_+yinzhengjs+tongyi;             String fanyi = result.getString("fanyi");             s=chengyujs+from_+yinzhengjs+tongyi+fanyi;             //s=s+fanyi;            //s=chengyujs;         } catch (JSONException e) {             e.printStackTrace();         }         return s;     }

 

 

 

 

 

2     运行结果分析

基本能够实现成语的输入、查询功能,能够查询成语的释义、出处、引申、引申释义、近义词、反义词,并且能显示出来。

3     总结

本次主要是制作一个小型、简易的成语词典,实现打开软件可以在AVD 模拟器上,手机上进行成语的查询的过程,然后点击返回键可以退出程序。

本次设计运用了Android.bat,AVD Manager.bat 模拟器等工具实现了成语词典的开发,在开发的过程中出现了一系列的问题,但我都虚心请教了同学,进行了一系列的改正。比如:

  1. 在第一次运行时出现了输入成语,但是没有释义出现的问题,经过检查发现没有引入网站接口,在同学的相关指导下,从聚合数据中引入了“String url= "http://v.juhe.cn/chengyu/query?key="+ WORD_KEY+"&word="+edit_result;”用于实现输入成语后开始查询的一个接口;
  2. 在验证时,由于导入包的方法错误,导致程序出现问题,但在上网查询了相关的百度经验后,又询问了同学,解决了这一问题。
在讲解的时候也出现了一些问题,比如:
  1. 在老师问返回格式是一个JSON 类型的还是一个文本的时候,我说了是文本的,实际上返回的是一个JSON 类型的;
  2. 第一次给老师检查的时候代码只能实现成语的释义的实现,第二次添加了新的代码,可以对成语实现查询此成语的释义、出处、引申、引申释义、近义词、反义词的实现。

 

 

参考文献

  1. 来自聚合数据:https://www.juhe.cn/docs
  2. 来自网址:http://Android.Googlesource.com
  3. 来自网址:http://hukai.me
  4. 来自网址:https://zhidao.baidu.com
  5. 来自网址:http://m.csdn.net/
  6. 来自网址:http://jingyan.baidu.com
 
 

 

 

 

  • 7
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值