移动应用开发课程设计


    移动应开发课程设计报告









    学院名称: 计算机信息工程学院
    班级名称: 计科口
    学生姓名:
    学 号:
    题 目: 基理财通计算器
    课教师
    姓 名:
    起止日期: 2017年04月18日04月30日




    目 录
    移动应开发课程设计报告 1
    摘 3
    1 项目需求分析 3
    11 需求分析 3
    12 功需求 3
    2系统总体设计 5
    21系统架构设计 5
    22系统功体系 5
    3系统详细设计 6
    31 数库设计 6
    32系统界面设计 7
    33数存储设计 13
    34信息统计设计 14
    35图轨迹设计 14
    36 服务应设计 24
    4系统编码实现 25
    41框架引 25
    42交互实现 25
    43单元测试 28
    5 系统测试发布 29
    51手机环境实测 29
    52 APP发布实测 29
    参考文献 30
    成绩评定 31





    着移动终端迅速普Android系统台引软件需求增伴着Android智手机板电脑已出现生活量越越基Android开发台出丰富Android智产品途帮记录事情设计开发通研究Android体系结构理财理方面知识设计实现理财通系统够理财信息进行获取汇总整理计算等功实现身时进行日常理财活动


    1 项目需求分析
    11 需求分析
    物质科技飞速发展生活水断提高快节奏生活中迷失迷茫觉没钱月工资低知道钱花什月底钱包会空空正样需款理财软件简单界面易懂操作十分便携直观理财方式更进行理财软件功:
    ①登录界面:初始登陆时没密码方便户保护隐私行设置密码
    ②新增支出:添加支出金额时间类点等信息
    ③新增收入:添加收入金额时间类付款方等信息
    ④数理:支出汇总收入汇总便签信息
    ⑤便签功:添加便签设置提醒事项
    ⑥计 算 器:数进行计算方便记录长结果直接复制
    ⑦移动课堂:泛雅台中安卓课程访问
    ⑧帮 助:理财通功部件介绍
    ⑨退 出:退出该系统
    12 功需求
    目前国外理财软件已百种美国直觉公司QUICKEN软件美国13州加客户提供金融理预算等财务问题国财务理方面做较突出属金蝶公司然手机理财软件方面做突出没软件针户款Android软件理财收入支出做记录统计户收入支出记录做添加删查询修改理软件该具备功:
    ①功操作方便易懂余复杂操作
    ②户收入支出信息做添加删查询修改
    ③系统功复合实际情况
    ④界面直观简洁方便户更
    ⑤保证软件安全性




    2系统总体设计
    理财通
    启动界面
    登陆界面界面
    新增支出
    新增收入
    支出
    收入
    数理
    系统设置
    收支便签
    计算器
    移动课堂



    退


    21系统架构设计










    图21 系统架构图
    22系统功体系
    系统总体功包括系统功模块详细划分定义子功模
    块具体实现细节通详细划分定义细节系统功进行效区分防
    止功重叠功冗余等现象系统总体功分析表22示

    户功
    具体描述
    新增支出
    户新增支出财产进行详细记录
    新增收入
    处添加计算器方便户收入支出财产进行详细记录
    支出
    户支出财产记录进行详细查询
    收入
    户收入财产进行详细查询
    数理
    户理账户虚拟账户等
    系统设置
    手机系统进行规范化设置
    收支便签
    财产收支进行记录
    计算器
    数进行计算长结果进行复制
    移动课堂
    学泛亚台中安卓课程


    3系统详细设计
    31 数库设计
    (1) 数类型简规
    程序中需定义常量变量需指定类型面介绍常见数库类型表31 示
    数类型
    简写
    整形
    int
    字符型
    str
    布尔型
    bl
    单精度浮点型
    flt
    双精度浮点型
    dbl

    表31 数类型简规

    (2) 组件命名规

    组件象名称拼音简写果发现突采简写规组件命名表32示
    控件
    缩写形式
    EditText
    txt
    Button
    btn
    Spinner
    sp
    ListView
    lv

    表32 组件命名规

    理财通款运行Android系统程序Android系统中集成种轻量型数库SQLite该数库C语言编写开源嵌入式数库支持数库2TB该数库户SQL Server数库者Oracle数库样存储理维护数系统采SQLite数库命名accountdb该数库中4数表分tb_flagtb_inaccounttb_outaccounttb_pwd




    32系统界面设计
    1启动界面:清新简洁启动界面标识着理财通开发者微博提升整体软件美观程度图31示

    图31
    2 户登录:首次登录需密码进系统设置里设置密码软件属客户端通常情况没户名直接进入密码输入环节便保护户隐私图32示

    图32
    3 户登入进入软件界面界面包括软件功图标户根需图33示

    图33
    4 计算器:基加减方便户金额进行计算方便记录计算机中计算结果长结果进行复制收入支出页面进行快捷粘贴图3435示

    图34 图35

    5新增支出:模块功添加户新增支出样新增支出选择金额时间类点备注类选择餐费应酬礼金车费长金额面填写框快捷复制计算器计算结果图3637示

    图36 图37
    6 新增收入:模块功添加户新增收入时理财程中添加收入记录频繁操作模块户提供非常实便捷操作程模块中户添加收入信息记录容包括:金额时间类付款方备注户够方便查收入记录收入类进行分类具体分五类分工资兼职分红奖金长金额面填写框快捷复制计算器计算结果图3839示

    图38 图39
    7 支出收入:新增收入模块进行添加操作添加收入记录会显示模块中两界面中清楚记录图310311示

    图310 图311
    8 数理:家庭理财系统说数理功非常重功理支出收入便签记录信息图312示

    图312
    9系统设置:户设置密码密码设置成功户次登录时需设置密码图313示

    图313
    10新增便签实现添加便签记录便签模块记录进行收入支出信息相备忘录功图314示

    图314
    11 移动课堂:泛雅台移动应开发学界面户里学安卓关知识图315示

    图315
    12 帮助:理财通帮助解决系统中遇问题图316示

    图316
    13退出:户点击退出图标回登录界面

    33数存储设计
    package cneduchzuxxysp15dao
    import androidcontentContext
    import androiddatabasesqliteSQLiteDatabase
    import androiddatabasesqliteSQLiteOpenHelper

    public class DBOpenHelper extends SQLiteOpenHelper {
    private static final int VERSION 1 定义数库版号
    private static final String DBNAME accountdb 定义数库名

    public DBOpenHelper(Context context){ 定义构造函数

    super(context DBNAME null VERSION) 重写基类构造函数
    }

    @Override
    public void onCreate(SQLiteDatabase db){ 创建数库

    dbexecSQL(create table tb_outaccount (_id integer primary keymoney decimaltime varchar(10)
    + type varchar(10)address varchar(100)mark varchar(200))) 创建支出信息表
    dbexecSQL(create table tb_inaccount (_id integer primary keymoney decimaltime varchar(10)
    + type varchar(10)handler varchar(100)mark varchar(200))) 创建收入信息表
    dbexecSQL(create table tb_pwd (password varchar(20))) 创建密码表
    dbexecSQL(create table tb_flag (_id integer primary keyflag varchar(200))) 创建便签信息表
    }

    @Override
    public void onUpgrade(SQLiteDatabase db int oldVersion int newVersion){ 覆写基类onUpgrade方法便数库版更新
    }
    }

    34信息统计设计
    点击支出汇总收入汇总便签信息时方会出现支出收入便签信息图317318示

    图317 图318


    35图轨迹设计
    package cneduchzuxxysp15hwl

    **
    * 计算器项目
    *
    import androidappActivity
    import androidosBundle
    import androidutilLog
    import androidviewView
    import androidviewViewOnClickListener
    import androidviewViewTreeObserver
    import androidviewViewTreeObserverOnGlobalLayoutListener
    import androidwidgetButton
    import androidwidgetGridLayout
    import androidwidgetGridLayoutLayoutParams
    import androidwidgetTextView
    import androidwidgetToast
    public class Calculator extends Activity {
    private static final boolean isDebug true 判断项目否处debug调试模式控制否印log
    char 进行判断
    private static final char CJia '+'
    private static final char CJian ''
    private static final char CCheng '*'
    private static final char CChu '÷'
    String 进行显示
    private static final String SJia +
    private static final String SJian
    private static final String SCheng *
    private static final String SChu ÷
    private TextView textView
    private Button mCopy 複製鈕
    private boolean isTextViewInputted false 判断textView否输入判断0钮功
    private Button btn_c btn_del CDEL
    private Button btn_jia btn_jian btn_chu btn_cheng +x÷
    private Button btn_dian btn_dengyu
    private Button btn_0 btn_1 btn_2 btn_3 btn_4 01234
    private Button btn_5 btn_6 btn_7 btn_8 btn_9 56789 ∞
    protected void onCreate(Bundle savedInstanceState) {
    superonCreate(savedInstanceState)
    setContentView(Rlayoutactivity_calculator)
    布局
    动态设置Gridlayout中控件宽度全屏匹配屏幕
    GridLayout gridlayout (GridLayout) findViewById(Ridgridlayout_c)
    ViewTreeObserver vto gridlayoutgetViewTreeObserver()
    vtoaddOnGlobalLayoutListener(new OnGlobalLayoutListener() {
    public void onGlobalLayout() {
    GridLayout gl (GridLayout) findViewById(Ridgridlayout_c)
    fillview(gl)

    ViewTreeObserver obs glgetViewTreeObserver()
    obsremoveGlobalOnLayoutListener(this)
    }
    })

    获钮点击事件
    initViews()
    }

    Button设置onClick属性
    public void onClick(View view) {
    switch (viewgetId()) {
    09
    case Ridbtn_0
    button0Function()
    break

    case Ridbtn_1
    button1Function()
    break

    case Ridbtn_2
    button2Function()
    break
    case Ridbtn_3
    button3Function()
    break
    case Ridbtn_4
    button4Function()
    break

    case Ridbtn_5
    button5Function()
    break

    case Ridbtn_6
    button6Function()
    break
    case Ridbtn_7
    button7Function()
    break
    case Ridbtn_8
    button8Function()
    break
    case Ridbtn_9
    button9Function()
    break

    case Ridbtn_dian
    buttonDianFunction()
    break
    C
    case Ridbtn_c
    buttonClear()
    break

    DEL
    case Ridbtn_del
    buttonDel()
    break
    +
    case Ridbtn_jia
    buttonJiaYunSuanFunction()
    break

    case Ridbtn_jian
    buttonJianYunSuanFunction()
    break

    X
    case Ridbtn_cheng
    buttonChengYunSuanFunction()
    break

    ÷
    case Ridbtn_chu
    buttonChuYunSuanFunction()
    break


    case Ridbtn_dengyu
    buttonDengYuFunction()
    break

    default
    Button b (Button) view
    ToastmakeText(this bgetText() ToastLENGTH_SHORT)show()
    break
    }
    }

    * *
    * private 私方法 *
    * *
    private void fillview(GridLayout gl) {
    Button buttontemp
    GridLayoutLayoutParams params

    for (int i 0 i < glgetChildCount() i++) {
    buttontemp (Button) glgetChildAt(i)
    params (LayoutParams) buttontempgetLayoutParams()
    paramswidth (glgetWidth() glgetColumnCount())
    paramsrightMargin paramsleftMargin
    buttontempsetLayoutParams(params)
    }

    }

    初始化控件
    private void initViews() {
    textView (TextView) findViewById(Ridcalculate_textview)
    mCopy (Button) findViewById(Ridfz)

    mCopysetOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) {
    TODO 动生成方法存根
    if (textViewgetText()toString()equals()) {
    ToastmakeText(Calculatorthis 結果為空 ToastLENGTH_SHORT)
    show()
    return
    }
    }
    })
    }
    private void printDebugInfo(String str) {
    if (isDebug) {
    Logi(TAG Debug + str)
    }
    }
    Textv尾部追加容
    private void appendTextView(String str) {
    CharSequence text textViewgetText()
    text text + str
    printDebugInfo(texttoString())
    textViewsetText(text)
    }
    添加数字钮功start
    0输入注意点:
    1没输入时textview显示0时什做继续保持0
    2textview显示0时textview尾部追加0
    问题:判断条件样确定两方案
    1获取textview容然调较方法否0相等
    2设置Boolean标记textview第次输入0时标记设true然根标记进行0钮功实现
    :方案点简单缺点相说耗性次读取textview值然进行较方案二点性第高控制条件第复杂
    0钮功
    private void button0Function() {
    if (isTextViewInputted && textViewgetText()toString()equals(0)) {
    条件成立textview值0
    appendTextView(0)
    } else if (textViewgetText()toString()equals(0)) {
    textViewsetText(0) 运算操作isTextViewInputtedfalse时需textView设置0
    }
    }
    果已输入textview尾部追加第次输入textview显示改1规样适数字钮
    1钮功
    private void button1Function() {
    if (isTextViewInputted) {
    appendTextView(1)
    } else {
    第次进行输入
    isTextViewInputted true
    textViewsetText(1)
    }
    }
    2钮功
    private void button2Function() {
    if (isTextViewInputted) {
    appendTextView(2)
    } else {
    第次进行输入
    isTextViewInputted true
    textViewsetText(2)
    }
    }
    3钮功
    private void button3Function() {
    if (isTextViewInputted) {
    appendTextView(3)
    } else {
    第次进行输入
    isTextViewInputted true
    textViewsetText(3)
    }
    }
    4钮功
    private void button4Function() {
    if (isTextViewInputted) {
    appendTextView(4)
    } else {
    第次进行输入
    isTextViewInputted true
    textViewsetText(4)
    }
    }
    5钮功
    private void button5Function() {
    if (isTextViewInputted) {
    appendTextView(5)
    } else {
    第次进行输入
    isTextViewInputted true
    textViewsetText(5)
    }
    }
    6钮功
    private void button6Function() {
    if (isTextViewInputted) {
    appendTextView(6)
    } else {
    第次进行输入
    isTextViewInputted true
    textViewsetText(6)
    }
    }
    7钮功
    private void button7Function() {
    if (isTextViewInputted) {
    appendTextView(7)
    } else {
    第次进行输入
    isTextViewInputted true
    textViewsetText(7)
    }
    }
    8钮功
    private void button8Function() {
    if (isTextViewInputted) {
    appendTextView(8)
    } else {
    第次进行输入
    isTextViewInputted true
    textViewsetText(8)
    }
    }
    9钮功
    private void button9Function() {
    if (isTextViewInputted) {
    appendTextView(9)
    } else {
    第次进行输入
    isTextViewInputted true
    textViewsetText(9)
    }
    }
    添加数字钮功end
    功四代码start
    C钮功清屏幕显示0改变输入状态未输入
    private void buttonClear() {
    if (isTextViewInputted) {
    isTextViewInputted false
    textViewsetText(0)
    } else if (textViewgetText()toString()equals(0)) {
    textViewsetText(0)
    }

    }
    DEL钮功输入时次点击删位字符字符时显示变成0改变输入状态未输入
    private void buttonDel() {
    if (isTextViewInputted) {

    CharSequence text textViewgetText()
    int length textlength()
    if (length > 1) {
    if (length 2) {
    果2字符第0情况时候果删位时剩0输入状态改false
    char c textcharAt(0)
    if (c '0') {
    isTextViewInputted false
    }
    }

    text textsubSequence(0 length 1) 截取前面部分容网搜索CharSequencesubSequence()方法
    textViewsetText(text)
    printDebugInfo(textViewgetText()toString())
    } else {
    buttonClear() 调清功
    }
    } else if (textViewgetText()toString()equals(0)) {
    textViewsetText(0)
    }
    }
    功四代码end
    运算符号添加原:
    1果textview字符运算符直接末尾添加修改输入状态true激活0DEL钮功
    2果字符运算符时换字符前点击运行符
    运算符号 start
    +钮功
    private void buttonJiaYunSuanFunction() {
    if (isTextViewInputted) {
    CharSequence text textViewgetText()
    int length textlength()
    char c textcharAt(length 1)

    if (c CJia) {
    printDebugInfo(已+号运算符)
    return
    } else if (c CJian || c CCheng || c CChu) {
    text textsubSequence(0 length 1) + SJia
    textViewsetText(text)
    } else {
    appendTextView(SJia)
    }
    } else {
    isTextViewInputted true
    appendTextView(SJia)
    }
    }
    钮功
    private void buttonJianYunSuanFunction() {
    if (isTextViewInputted) {
    CharSequence text textViewgetText()
    int length textlength()
    char c textcharAt(length 1)

    if (c CJian) {
    printDebugInfo(已号运算符)
    return
    } else if (c CJia || c CCheng || c CChu) {
    text textsubSequence(0 length 1) + SJian
    textViewsetText(text)
    } else {
    appendTextView(SJian)
    }
    } else {
    isTextViewInputted true
    appendTextView(SJian)
    }
    }
    X钮功
    private void buttonChengYunSuanFunction() {
    if (isTextViewInputted) {
    CharSequence text textViewgetText()
    int length textlength()
    char c textcharAt(length 1)
    if (c CCheng) {
    printDebugInfo(已X号运算符)
    return
    } else if (c CJia || c CJian || c CChu) {
    text textsubSequence(0 length 1) + SCheng
    textViewsetText(text)
    } else {
    appendTextView(SCheng)
    }
    } else {
    isTextViewInputted true
    appendTextView(SCheng)
    }
    }
    ÷钮功
    private void buttonChuYunSuanFunction() {
    if (isTextViewInputted) {
    CharSequence text textViewgetText()
    int length textlength()
    char c textcharAt(length 1)
    if (c CChu) {
    printDebugInfo(已÷号运算符)
    return
    } else if (c CJia || c CJian || c CCheng) {
    text textsubSequence(0 length 1) + SChu
    textViewsetText(text)
    } else {
    appendTextView(SChu)
    }
    } else {
    isTextViewInputted true
    appendTextView(SChu)
    }
    }
    点钮功
    出现条件isTextViewInputtedtrue者0时
    private void buttonDianFunction() {
    if (isTextViewInputted) {
    appendTextView()

    } else if (textViewgetText()toString()equals(0)) {
    appendTextView()
    isTextViewInputted true
    }
    }
    运算符号 end
    钮功start
    钮功较复杂重新规划进度说明进度务
    钮实现需运java中String类
    String类split方法根四运算符吧字符串分成段终数字运算符分离
    数字字符串转化基数类型根运算符进行计算
    实现步骤:
    目前先做两数运行考虑输入正确情况条件判断进行
    1先创建4方法应四运算中加减(写完加法算法进行测试时发现运算完第次点击数字钮时textView显示正常时显示刚点击钮数字
    点击0时发现数显示前运算结果时需button0Function方法中加条件判断时候点击0时textView显示0)(样CDEL需处理情况)
    2分析textview字符串容获取数字运算符进行运算出结果更改textview显示
    3进行次等操作时候textview输入状态改false结束次运算
    private void buttonDengYuFunction() {
    String text textViewgetText()toString()
    包含加减四运算中进行计算
    if (textcontains(SJia) || textcontains(SJian)
    || textcontains(SCheng) || textcontains(SChu)) {
    isTextViewInputted false

    onlyOneOperator(text) 种运算符情况
    }
    }
    private void onlyOneOperator(String text) {
    boolean isFisrtWeiFu false 判断第否负数
    左起第数负数时
    if (textstartsWith()) {
    text textsubstring(1) 第掉
    isFisrtWeiFu true
    }
    运算符情况果数字加运算符结果数字身进行操作
    boolean isInteger true 判断否全部int数
    +
    if (textcontains(SJia)) {
    String[] arr textsplit([+]) 四运行中特殊符号需处理需理解split()方法
    int length arrlength

    float[] arrFlaotNumber new float[length]
    for (int i 0 i < length i++) {
    if (arr[i]contains()) {
    isInteger false
    }
    arrFlaotNumber[i] FloatparseFloat(arr[i])
    if (0 i && isFisrtWeiFu) {
    arrFlaotNumber[i] arrFlaotNumber[i]
    }
    }
    if (isInteger) {
    全部int类型整数方法float数强转int
    int[] arrIntNumber new int[length]
    for (int i 0 i < length i++) {
    arrIntNumber[i] (int) arrFlaotNumber[i]
    }
    textViewsetText(jiaFa(arrIntNumber) + )
    } else {
    textViewsetText(jiaFa(arrFlaotNumber) + )
    }
    }

    else if (textcontains(SJian)) {

    String[] arr textsplit([])
    int length arrlength

    float[] arrFlaotNumber new float[length]
    for (int i 0 i < length i++) {
    if (arr[i]contains()) {
    isInteger false
    }
    arrFlaotNumber[i] FloatparseFloat(arr[i])
    if (0 i && isFisrtWeiFu) {
    arrFlaotNumber[i] arrFlaotNumber[i]
    }
    }
    if (isInteger) {
    果全部int类型整数方法
    int[] arrIntNumber new int[length]
    for (int i 0 i < length i++) {
    arrIntNumber[i] (int) arrFlaotNumber[i]
    }
    textViewsetText(jianFa(arrIntNumber) + )
    } else {
    textViewsetText(jianFa(arrFlaotNumber) + )
    }
    }
    else if (textcontains(SCheng)) {
    String[] arr textsplit([*])
    int length arrlength

    float[] arrFlaotNumber new float[length]
    for (int i 0 i < length i++) {
    if (arr[i]contains()) {
    isInteger false
    }
    arrFlaotNumber[i] FloatparseFloat(arr[i])
    if (0 i && isFisrtWeiFu) {
    arrFlaotNumber[i] arrFlaotNumber[i]
    }
    }
    if (isInteger) {
    果全部int类型整数方法
    int[] arrIntNumber new int[length]
    for (int i 0 i < length i++) {
    arrIntNumber[i] (int) arrFlaotNumber[i]
    }
    textViewsetText(chengFa(arrIntNumber) + )
    } else {
    textViewsetText(chengFa(arrFlaotNumber) + )
    }
    }
    ÷
    else if (textcontains(SChu)) {
    String[] arr textsplit([÷])
    int length arrlength

    float[] arrFlaotNumber new float[length]
    for (int i 0 i < length i++) {
    if (arr[i]contains()) {
    isInteger false
    }
    arrFlaotNumber[i] FloatparseFloat(arr[i])
    if (0 i && isFisrtWeiFu) {
    arrFlaotNumber[i] arrFlaotNumber[i]
    }
    }

    if (isInteger) {
    果全部int类型整数方法
    int[] arrIntNumber new int[length]
    for (int i 0 i < length i++) {
    arrIntNumber[i] (int) arrFlaotNumber[i]
    }
    textViewsetText(chuFa(arrIntNumber) + )
    } else {
    textViewsetText(chuFa(arrFlaotNumber) + )
    }
    }
    }
    两数加法
    private int jiaFa(int[] a) {
    int result 0

    for (int i 0 length alength i < length i++) {
    result + a[i]
    }
    return result
    }
    两数减法
    private int jianFa(int[] a) {
    int result a[0]
    for (int i 1 length alength i < length i++) {
    result a[i]
    }
    return result
    }
    两数法
    private int chengFa(int[] a) {
    int result a[0]
    for (int i 1 length alength i < length i++) {
    result * a[i]
    }
    return result
    }
    两数法
    private int chuFa(int[] a) {
    int result a[0]

    for (int i 1 length alength i < length i++) {
    if (a[i] 0) {
    return result
    }
    result a[i]
    }
    return result
    }
    进度10数计算数字中出现数时想float类型进行计算提供方法重载
    两数加法
    private float jiaFa(float[] a) {
    float result 0

    for (int i 0 length alength i < length i++) {
    result + a[i]
    }
    return result
    }
    两数减法
    private float jianFa(float[] a) {
    float result a[0]

    for (int i 1 length alength i < length i++) {
    result a[i]
    }
    return result
    }
    两数法
    private float chengFa(float[] a) {
    float result a[0]

    for (int i 1 length alength i < length i++) {
    result * a[i]
    }
    return result
    }
    两数法
    private float chuFa(float[] a) {
    float result a[0]

    for (int i 1 length alength i < length i++) {
    if (a[i] 0) {
    return result
    }
    result a[i]
    }

    return result
    }
    钮功end

    }
    36 服务应设计
    移动课堂:
    package cneduchzuxxysp15hwl
    import androidappActivity
    import androidcontentIntent
    import androidosBundle
    import androidosHandler
    import androidviewWindow
    import androidviewWindowManager
    移动课堂
    import androidwebkitWebView
    import androidwebkitWebViewClient
    public class FyClassActivity extends Activity {
    WebView mWebView
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    TODO 动生成方法存根
    superonCreate(savedInstanceState)
    setContentView(Rlayoutactivity_fy_class)
    mWebView (WebView) findViewById(Ridwebview)
    mWebViewgetSettings()setSupportZoom(true)
    mWebViewgetSettings()setBuiltInZoomControls(true)
    mWebViewloadUrl(httpmooc1chaoxingcomcourse95609226html)

    覆盖WebView默认第三方系统默认浏览器开网页行网页WebView开
    mWebViewsetWebViewClient(new WebViewClient(){
    @Override
    public boolean shouldOverrideUrlLoading(WebView view String url) {
    TODO Autogenerated method stub
    返回值true时候控制WebView开false调系统浏览器第三方浏览器
    viewloadUrl(url)
    return true
    }
    })
    }
    }
    4系统编码实现
    41框架引

    图41 图42
    42交互实现
    计算器:

    androidlayout_widthmatch_parent
    androidlayout_heightmatch_parent
    androidbackground#FFFFFF
    androidorientationvertical >
    androidid@+idcalculate_textview
    androidlayout_widthmatch_parent
    androidlayout_heightwrap_content
    androidlayout_margin10dp
    androidbackground#ffffff
    androidgravityright
    androidpaddingRight2dp
    androidtext0
    androidtextColor#6699ff
    androidtextIsSelectabletrue
    androidtextSize40sp >
    androidlayout_width1dp
    androidlayout_height0dp
    androidlayout_weight1 >
    androidid@+idgridlayout_c
    androidlayout_widthmatch_parent
    androidlayout_heightwrap_content
    androidlayout_margin10dp
    androidcolumnCount4
    androidrowCount5 >
    < 第 0排 CDEL ÷ X >
    androidid@+idbtn_c
    androidlayout_column0
    androidlayout_row0
    androidonClickonClick
    androidtextC
    androidtextSize25dp >
    androidid@+idbtn_del
    androidlayout_column1
    androidlayout_row0
    androidonClickonClick
    androidtextDEL
    androidtextSize25dp >
    androidid@+idbtn_chu
    androidlayout_column2
    androidlayout_row0
    androidonClickonClick
    androidtext÷
    androidtextSize25dp >
    androidid@+idbtn_cheng
    androidlayout_column3
    androidlayout_row0
    androidonClickonClick
    androidtext*
    androidtextSize25dp >
    < 第 1排 78 9 >
    androidid@+idbtn_7
    androidlayout_column0
    androidlayout_row1
    androidonClickonClick
    androidtext7
    androidtextSize25dp >
    androidid@+idbtn_8
    androidlayout_column1
    androidlayout_row1
    androidonClickonClick
    androidtext8
    androidtextSize25dp >
    androidid@+idbtn_9
    androidlayout_column2
    androidlayout_row1
    androidonClickonClick
    androidtext9
    androidtextSize25dp >
    androidid@+idbtn_jian
    androidlayout_column3
    androidlayout_row1
    androidonClickonClick
    androidtext
    androidtextSize25dp >
    < 第 2排 45 6 + >
    androidid@+idbtn_4
    androidlayout_column0
    androidlayout_row2
    androidonClickonClick
    androidtext4
    androidtextSize25dp >
    androidid@+idbtn_5
    androidlayout_column1
    androidlayout_row2
    androidonClickonClick
    androidtext5
    androidtextSize25dp >
    androidid@+idbtn_6
    androidlayout_column2
    androidlayout_row2
    androidonClickonClick
    androidtext6
    androidtextSize25dp >
    androidid@+idbtn_jia
    androidlayout_column3
    androidlayout_row2
    androidonClickonClick
    androidtext+
    androidtextSize25dp >
    < 第 3排 12 3 >
    androidid@+idbtn_1
    androidlayout_column0
    androidlayout_row3
    androidonClickonClick
    androidtext1
    androidtextSize25dp >
    androidid@+idbtn_2
    androidlayout_column1
    androidlayout_row3
    androidonClickonClick
    androidtext2
    androidtextSize25dp >
    androidid@+idbtn_3
    androidlayout_column2
    androidlayout_row3
    androidonClickonClick
    androidtext3
    androidtextSize25dp >
    androidid@+idbtn_dengyu
    androidlayout_column3
    androidlayout_gravityfill_vertical
    androidlayout_row3
    androidlayout_rowSpan2
    androidonClickonClick
    androidtext
    androidtextSize25dp >
    < 第 4排 0 >
    androidid@+idbtn_0
    androidlayout_column0
    androidlayout_columnSpan2
    androidlayout_gravityfill_horizontal
    androidlayout_row4
    androidonClickonClick
    androidtext0
    androidtextSize25dp >
    androidid@+idbtn_dian
    androidlayout_column2
    androidlayout_row4
    androidonClickonClick
    androidtext
    androidtextSize25dp >

    androidid@+idfz
    styleandroidattrbuttonStyleSmall
    androidlayout_width265dp
    androidlayout_heightwrap_content
    androidonClickonClickCopy
    androidtext长结果进行复制
    androidtextSize25dp >
    androidlayout_width1dp
    androidlayout_height0dp
    androidlayout_weight1 >

    43单元测试
    设备检测:美图华
    API检测:没问题
    功测试:功实现达预期目标







    5 系统测试发布
    51手机环境实测

    图51 图52


    52 APP发布实测
    1 JDK 70 or JDK 80 (JRE alone is not sufficient)
    2 Eclipse
    3 Android SDK
    4 ADT2306
    5 Eclipse安装ADT 插件





    参考文献
    [1]吴亚峰 等编著Android核心技术实例详解[M]民邮电出版社2010年10月
    [2]李兴华 Google Android SDK开发范例全[M]民邮电出版社 2010年6月
    [3] 汪永松 Android台开发旅机械工业出版社2010年8月
    [4]郭宏志Android应开发详解[M]电子工业出版社2010年1月
    [5]邓 深入理解Android机械工业出版社 2010年8月




    成绩评定
    课程设计基求


    中等

    优秀
    没修改增强理财通实现功仅修改图标界面设计
    增加活动窗体数交互结果返回修改实现数库操作
    完成部分求实现服务搭建服务器存储数等
    完成绝部分求实现线程跨进程服务网络数库网络数应
    完成全部求文件规范机整合增强系统功性优化具体见说明

    评定课程成绩
    考勤成绩:

    实验成绩:
    实验
    实验二
    实验三
    实验四
    实验五






    课程设计成绩:





    课程成绩:考勤成绩*20+实验成绩*20+课程设计成绩*60



    课老师签字: 评定时间:2017年04月 日

    文档香网(httpswwwxiangdangnet)户传

    《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
    该内容是文档的文本内容,更好的格式请下载文档

    下载文档到电脑,查找使用更方便

    文档的实际排版效果,会与网站的显示效果略有不同!!

    需要 2 香币 [ 分享文档获得香币 ]

    下载文档

    相关文档

    图书管理系统数据库设计数据库应用系统开发课程设计

    信息工程学院《数据库应用系统开发》课程设计论文题 目:图书管理系统数据库设计学 号:专业班级:信管级(X)班姓 名:魏 金 风指导老师:完成日期:2007摘 要在计算机日益普及...

    2年前   
    419    0

    Web系统开发课程设计报告

    录入学生基本信息的功能学生基本信息主要包括:学号、姓名、年龄、出生地、专业、班级总学分,在插入时,如果数据库已经存在该学号,则不能再插入该学号。1.2、修改学生基本信息的功能

    4年前   
    1219    0

    Lightboard在线教学开发与应用

    Lightboard在线教学开发与应用摘要:随着教师出镜在网络课程中获得日益普遍的使用,学生对影响他们的注意状况和学习效果、显著增强沉浸感以及师生的互动性也提出了更高的要求。为解决目前广泛使用...

    1年前   
    289    0

    移动互联网应用方案

    移动互联网平台应用方案根据用户习惯移动互联网的开发应用应该遵从简单、明了、便于操作的原则,建立一整套的移动营销系统。借用微信庞大的用户群体进行品牌宣传和客户沉淀;建立APP进行老客户关系维护,...

    1年前   
    423    0

    单片机原理及应用课程设计

    单片机课程设计数字音频频率测试仪班级:电气姓名:学号:日期:2010年X月X日 目录一、课程设计要求···········································1软硬...

    3年前   
    788    0

    数据库原理及应用课程设计

    数据库原理及应用课程设计设计报告题 目:学校人力资源管理系统 学 号: 学生姓名: 指导教师...

    3年前   
    735    0

    移动电子商务应用研究

    移动电子商务应用研究郑晓明(辽宁移动通信有限公司)逯宇铎(大连理工大学管理学院)摘要 本文根据移动电子商务的特点,通过基于支撑技术的应用服务开 发,市场细化及对不同客户市场提供对应的数据服务...

    9年前   
    511    0

    移动电子商务应用研究

    移动电子商务应用研究摘要 本文根据移动电子商务的特点,通过基于支撑技术的应用服务开 发,市场细化及对不同客户市场提供对应的数据服务,使得无线数据服务的整体解决方案得以实现,从而最终为移动终端...

    11年前   
    491    0

    有源逆变技术的工程应用课程设计

     编 号: 审定成绩...

    3年前   
    439    0

    软件项目管理在高校软件开发中的应用

    软件项目管理在高校软件开发中的应用  [摘要]不少高校在做软件研发时,尤其是自用软件,重点更集中于科技创新,而对于在软件项目小组中引入项目管理的认知度还未达成共识。以中国民航飞行学院广汉分院飞...

    11年前   
    656    0

    耐热钢的开发及应用

    目录摘要 1关键词 1正文 1高铬耐热钢的发展历程……. 1高铬耐热钢的组织结构和强化机理 2 高铬耐热钢的性能退化和失效 3结语 5参考文献 6高铬耐热钢的开发摘 要: 高铬耐热合金钢是典...

    2年前   
    306    0

    基于Android手机的NFC开发与应用

    基于Android手机的NFC开发与应用摘 要随着信息时代的快速发展,NFC作为一种由RFID演变来的新型近距离无线通信技术也受到人们的关注,相较于红外、Wifi等其他无线通信有启动速度快、...

    1年前   
    351    0

    软件项目管理研究及在项目开发中的应用

    软件项目管理研究及在项目开发中的应用  配置管理则是软件项目能顺利进行的基础。一个软件项目开发过程中,会有大量的“中间产品”产生,典型的如代码、技术文档、产品文档、管理文档、数据、脚本、执行文...

    10年前   
    715    0

    职工住房管理系统说明书软件项目开发课程设计

    ******************* 实践教学 ******************* XX大学 计算机与通信学院 20XX年春季学期 软件开发综合训...

    5年前   
    1269    0

    《Web开发》课程设计报告聊天室

    《Web开发》课程设计报告(2011— 2012学年 第 2 学期)题 目: 聊 天 室 专 业: 计算机网络技术 班 ...

    3年前   
    606    0

    《Android平台软件开发》课程设计报告

    《Android平台软件开发》课程设计报告题 目 基于安卓的计算标准体重的应用程序 专 业 计算机科学与技术 ...

    3年前   
    676    0

    游戏设计与开发详细课程设计文档

    为了学习Unity3D游戏引擎,为了进一步了解并熟悉该款引擎,本文描述了如何制作了一个三维的RPG类游戏项目,这个游戏的背景来源于一部叫做《草原历险记》的电影。通过对该项目的制作和学习,来了解用...

    2年前   
    451    0

    职工考勤管理系统说明书软件项目开发课程设计

    ******************* 实践教学 ******************* XX大学 计算机与通信学院 20XX年秋季学期 软件开发综合训...

    5年前   
    1435    0

    广东海洋大学.NET开发技术课程设计论坛

     《.NET开发技术》课程论文 BBS论坛 姓名__________ 班级__ _ 学号__ ...

    5年前   
    1057    0

    腾讯面试-移动JAVA开发

    1)笔试:c++,基础题目与程序员考试水平相当。  附加题:  1.有10亿个浮点数,从中找出1万个最大的数。写一个高性能的算法  2.unix后台进程的实现  3.mfc的多文档模板的加载 ...

    9年前   
    441    0

    文档贡献者

    文***品

    贡献于2021-06-06

    下载需要 2 香币 [香币充值 ]
    亲,您也可以通过 分享原创文档 来获得香币奖励!
    下载文档

    该用户的其他文档