安卓课设报告

                                                                                              安卓课程设计报告

                                                                                                 记账管理系统

               

                                                                                           学校:沈阳科技学院

                                                                                           系别:信息与控制工程系

                                                                                            专业:计算机科学与技术

                                                                                             班级:1702

                                                                                             学号:173230222

                                                                                             姓名:封焱

                                                                                             指导教师:郭丹

                                  

                                                

                                                                                                       目录

一.需求分析..................................

二.技术说明..................................

三.代码......................................

四.系统测试..................................

五.系统实现..................................

六.总结......................................

  一:需求分析

  1. 功能描述:

添加账目,查询及修改账目,统计账目信息,退出系统

  1. 设计思路:

(1)新增账目:可以增加账目内容,保存新增账目信息

(2)查询及修改:查看账目信息,查账后可以对账目进行修改,并保存修改信息

(3)统计账目:统计系统自动分类一段时间的账目,方便查看

(4)退出系统:当想关闭系统时,可以快速退出系统

二.技术说明

如今,科技水平不断提高,人们对于高科技的需求也越来越高,基于Android平台的应用软件需求也越来越多。本次课程设计主要实现一个记账管理系统,实现对收入的记录以及支出的记录,并且可以统计本月的收入与支出,并可以进行登录注册。利用SQLite技术存储收入与支出信息。

UML类图

例图分析:

三.代码

清单文件:

 

布局文件:

1. 截图

记账统计主界面

添加收入支出

登录

2. 原文件

  

(1)LoginActivity.java:  主要用来进行登录

/**
 * login event
 * @param v
 */
public void OnMyLoginClick(View v){
    if(pubFun.isEmpty(editPhone.getText().toString()) || pubFun.isEmpty(editPwd.getText().toString())){
        Toast.makeText(this, "手机号或密码不能为空!", Toast.LENGTH_SHORT).show();
        return;
    }

//call DBOpenHelper
    DBOpenHelper helper = new DBOpenHelper(this,"qianbao.db",null,1);
    SQLiteDatabase db = helper.getWritableDatabase();
    Cursor c = db.query("user_tb",null,"userID=? and pwd=?",new String[]{editPhone.getText().toString(),editPwd.getText().toString()},null,null,null);
    if(c!=null && c.getCount() >= 1){
        String[] cols = c.getColumnNames();
        while(c.moveToNext()){
            for(String ColumnName:cols){
                Log.i("info",ColumnName+":"+c.getString(c.getColumnIndex(ColumnName)));
            }
        }
        c.close();
        db.close();

//将登陆用户信息存储到SharedPreferences中
        SharedPreferences mySharedPreferences= getSharedPreferences("setting",Activity.MODE_PRIVATE); //实例化SharedPreferences对象
        SharedPreferences.Editor editor = mySharedPreferences.edit();//实例化SharedPreferences.Editor对象
        editor.putString("userID", editPhone.getText().toString()); //用putString的方法保存数据
        editor.commit(); //提交当前数据

        this.finish();
    }
    else{
        Toast.makeText(this, "手机号或密码输入错误!", Toast.LENGTH_SHORT).show();
    }
}

(2)RegistActivity  主要注册成为会员

.java:

/**

* Description : 注册信息

*/

/**
 * register event
 * @param v
 */
public void OnMyRegistClick(View v)
{
    boolean isTrue = true;
    if(pubFun.isPhoneNumberValid(editPhone.getText().toString()) == false){
        isTrue = false;
        Toast.makeText(this, "手机号格式不正确!", Toast.LENGTH_SHORT).show();
        return;
    }
    if(pubFun.isEmpty(editPwd.getText().toString())){
        isTrue = false;
        Toast.makeText(this, "密码不能为空!", Toast.LENGTH_SHORT).show();
        return;
    }

if(isTrue = true){
        //call DBOpenHelper
        DBOpenHelper helper = new DBOpenHelper(this,"qianbao.db",null,1);
        SQLiteDatabase db = helper.getWritableDatabase();
        Cursor c = db.query("user_tb",null,"userID=?",new String[]{editPhone.getText().toString()},null,null,null);
        if(c!=null && c.getCount() >= 1){
            Toast.makeText(this, "该用户已存在", Toast.LENGTH_SHORT).show();
            c.close();
        }
        else{
            //insert data
            ContentValues values= new ContentValues();
            values.put("userID",editPhone.getText().toString());
            values.put("pwd",editPwd.getText().toString());
            long rowid = db.insert("user_tb",null,values);

Toast.makeText(this, "注册成功", Toast.LENGTH_SHORT).show();
            this.finish();
        }
        db.close();
    }else{
        return;
    }
}

(3)SpendingActivity  记录记账信息添加

.java:

/**

* Description :记账

*/

String[] titles = new String[]{"明细", "类别报表"};
private static final String[] yearList = {pubFun.getTime("Y") + "年"};
private static final String[] monthList = { "01月", "02月", "03月", "04月", "05月", "06月", "07月", "08月", "09月", "10月", "11月", "12月" };

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    //去除工具栏
    getSupportActionBar().hide();
    setContentView(R.layout.spending);

initViews();

initSpinner();

mFragmentAdapter = new FragmentAdapter(this.getSupportFragmentManager(), mFragmentList);
    vp.setOffscreenPageLimit(2);//ViewPager的缓存为2帧
    vp.setAdapter(mFragmentAdapter);
    vp.setCurrentItem(0);//初始设置ViewPager选中第一帧
    item_detail.setTextColor(Color.parseColor("#1ba0e1"));

//ViewPager的监听事件
    vp.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
        @Override
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

}

@Override
        public void onPageSelected(int position) {
            /*此方法在页面被选中时调用*/
            //title.setText(titles[position]);
            changeTextColor(position);
        }

@Override
        public void onPageScrollStateChanged(int state) {
            /*此方法是在状态改变的时候调用,其中arg0这个参数有三种状态(0,1,2)。
            arg0==1的时辰默示正在滑动,
            arg0==2的时辰默示滑动完毕了,
            arg0==0的时辰默示什么都没做。*/
        }
    });

(4)MainActivity  系统的主界面包括按钮

.java:

/**

* Description :主界面

*/

package com.hyl.accountbook;

import com.hyl.accountbook.CircleMenuLayout.OnMenuItemClickListener;

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.KeyEvent;
import android.view.View;
import android.widget.Toast;

/**
 * @programName: MainActivity.java
 * @programFunction: the home page
 * @createDate:
 * @author: AnneHan
 * @version:
 * xx.   yyyy/mm/dd   ver    author    comments
 * 01.      1.00
 */
public class MainActivity extends AppCompatActivity {

//第一次点击事件发生的时间
    private long mExitTime;

private CircleMenuLayout mCircleMenuLayout;

private String[] mItemTexts = new String[] { "登录&注册", "关于我们", "心愿墙",
            "特色设置", "收入&支出", "统计" };
    private int[] mItemImgs = new int[] { R.mipmap.home_mbank_1_normal,
            R.mipmap.home_mbank_2_normal, R.mipmap.home_mbank_3_normal,
            R.mipmap.home_mbank_4_normal, R.mipmap.home_mbank_5_normal,
            R.mipmap.home_mbank_6_normal };

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

mCircleMenuLayout = (CircleMenuLayout) findViewById(R.id.id_menulayout);
        mCircleMenuLayout.setMenuItemIconsAndTexts(mItemImgs, mItemTexts);

mCircleMenuLayout.setOnMenuItemClickListener(new OnMenuItemClickListener() {
            public void itemClick(View view, int pos) {
                if (mItemTexts[pos] == "特色设置") {
                    openSettingWind(view);
                } else if (mItemTexts[pos] == "收入&支出") {
                    openSpendingWind(view);
                } else if (mItemTexts[pos] == "登录&注册") {
                    openLoginWind(view);
                } else if (mItemTexts[pos] == "统计") {
                    openCountWind(view);
                } else if (mItemTexts[pos] == "关于我们") {
                    openAboutUsAddWind(view);
                } else if (mItemTexts[pos] == "心愿墙") {
                    openWishWind(view);
                }
                ;
            }

public void itemCenterClick(View view) {
                Toast.makeText(MainActivity.this, "you can do something just like login or register", Toast.LENGTH_SHORT).show();
            }
        });
    }

/**
     * 跳转至登录&注册界面
     * @param v
     */
    private void openLoginWind(View v){
        Intent intent = new Intent();
        intent.setClass(MainActivity.this, LoginActivity.class);
        this.startActivity(intent);
    }

/**
     * 跳转至开销界面,记录收入与支出
     * @param v
     */
    private void openSpendingWind(View v){
        Intent intent = new Intent();
        intent.setClass(MainActivity.this, SpendingActivity.class);
        this.startActivity(intent);
    }

/**
     * 跳转至统计界面
     * @param v
     */
    private void openCountWind(View v){
        Intent intent=new Intent();
        intent.setClass(MainActivity.this, CountActivity.class);
        this.startActivity(intent);
    }

/**
     * 跳转至特色设置界面
     * @param v
     */
    private void openSettingWind(View v){
        Intent intent = new Intent();
        intent.setClass(MainActivity.this, SettingActivity.class);
        this.startActivity(intent);
    }

/**
     * 跳转至心愿墙界面
     * @param v
     */
    private void openWishWind(View v){
        Intent intent = new Intent();
        intent.setClass(MainActivity.this, WishActivity.class);
        this.startActivity(intent);
    }

/**
     * 跳转至关于我们界面
     * @param v
     */
    private void openAboutUsAddWind(View v){
        Intent intent=new Intent();
        intent.setClass(MainActivity.this, AboutUsActivity.class);
        this.startActivity(intent);
    }

/**
     * 点击两次返回退出app
     */
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK) {
            if ((System.currentTimeMillis() - mExitTime) > 2000) {
                Object mHelperUtils;
                Toast.makeText(this, "再按一次退出金金记较", Toast.LENGTH_SHORT).show();
                //System.currentTimeMillis()系统当前时间
                mExitTime = System.currentTimeMillis();
            } else {
                finish();
            }
            return true;
        }
        return super.onKeyDown(keyCode, event);
    }

}

四.系统测试:

(1)测试能否添加收入支出

(2)测试能否删除账本信息

(3)测试能否修改金额及账本信息

(4)测试能否查看收入支出情况以及账本信息

五.系统实现:

(1)登录功能可以实现

(2)添加功能可以实现

(3)删除功能可以实现

(4)修改功能可以实现

(5)查询功能可以实现

六.总结

通过这次课程设计,我明白了原来安卓是一门非常难学难理解的课程,繁琐复杂的代码运行,难懂的安卓语言等困难必须要有非常坚实的基础,有足够的功底才能学好这门课程。目前我是处于一种完全理解不了安卓语言的水平,所以我需要更加进一步的学习这门课程,争取能理解得了一些。

原文地址:https://www.cnblogs.com/fengyan1/p/11999973.html

时间: 2024-10-30 07:54:09

安卓课设报告的相关文章

私厨--课设报告

Android应用程序开发 课程设计报告 (2019—2020学年 第Ⅰ学期) 基于Android的家庭菜谱系统 系    别            信息与控制工程 专    业           计算机科学与技术 班    级                1701 姓    名              荣瑞瑞 指导教师                郭 丹 目录 TOC \o "1-2" \h \u 一.摘要 1 二.课设题目 1 三.系统设计 2 四.系统测试 6 五.系统实

期末课设报告

一. 设计目的 4 二. 需求分析 4 2.1技术可行性分析: 4 2.2应用可行性分析 4 通讯录是人们生活中必不可少的应用软件:有了通讯录寻找联系人或者是及时修改联系人信息都是很方便的:所以我通过自己本学期所学编制了这个简易的通讯录应用,希望可以在以后能够实现一个更加完整的通讯录系统. 4 2.3 UML 4 2.3.1 用例分析 4 到通讯录界面. 4 4.通讯录界面:在此界面可输入通讯录的信息如姓名.手机号以及地址信 4 2.3.2uml需求用例图 5 三. 总体设计 6 3.1 系统结

安卓课设

Android移动应用开发 课程设计报告 (2019—2020学年 第Ⅰ学期) 商品管理系统 系    别        信息与控制工程系 专    业        计算机科学与技术 班    级          计算机1702 学    号          173230221 姓    名           孟繁武 指导教师            郭丹 完成时间       2019年12月05日 目 录 商品管理系统1 一.需求分析1 二.系统设计1 1.数据流图 1 2.功能描述

Android课设报告 123 赵乾

基于Android的天喵购物系统设计与实现 一,选题目的及意义 随着智能手机的普及,基于Android平台的应用软件需求也越来越多.通过计算机系统的设计与开发,验证和扩展本科前三年所学相关课程的理论知识,在实践中深入理解其中的重点和难点,提高基本理论水平,巩固基础知识体系,掌握计算机系统设计与开发的基本技能,培养灵活运用理论知识分析和解决实际问题的能力. 当下我们处于大数据网络时代,无疑,网上购物脱颖而出,即马云阿里巴巴成立以来,网上购物成为人民日益需求的购物来源,而其简单便捷,足不出户便能买到

学生管理系统课设报告

一. 课程设计概述 1.1任务背景 学生信息管理是学校管理中异常重要的一个环节,作为学校,除了育人,就是育知,学生信息管理的计算机化是整个学校教务管理中的重要一部分,能否实现这一步关系到学校办学整体效率的高低,由于它的重要性,学生信息管理系统的开发与应用就逐渐提入议程,并占着越来越重要的份量.  运用学生信息管理系统可以减轻学院教学人员的工作量,缩小开支,提高工作效率与准确率,能够合理安排时间,能够尽快的知道自己的考试成绩,投入新的课程的学习或复习这次没有考过的课程.而学生信息管理系统的应用也为

排序算法及其比较--数据结构课设

 排序算法及其比较 课程设计报告 一. 设计内容 编程实现希尔.快速.堆排序.归并排序算法,并利用程序统计每种算法的执行时间.要求随机产生10000(或50000. 100000. 200000,由用户选择)个数据存入数据文件,然后读数据文件,分别采用不同排序方法进行排序,将结果存入另一个文件中. 二. 设计思想描述 1.  总思想 本程序采用模块化设计思想,分为产生随机数模块,计时模块,写入磁盘模块,读出磁盘模块,希尔排序模块,快速排序模块,堆排序模块,归并排序模块,计时模块.对常见的4 种经

软件课设第二十二天 9.9

今天完成的任务: 1.完成了部分课设报告的内容: 2.在supervisely上完成了人像图片的标注,规定了训练代码的参数. 明天的计划: 1.完成训练权重的校对和测试部分的图片集标注: 2.对训练好的权重进行校对和测试. 每日小结: 今天正式开始了书写课设报告的工作,通过博客园上每天的随笔,我们回顾了过去半个多月来我们的工作历程,我的工作就是将其中最重要的部分放到课设报告中,希望最终的报告能对得起我们这半个多月来的努力. 原文地址:https://www.cnblogs.com/yoona56

漫画app课设

Android移动应用开发 课程设计报告 (2019—2020学年 第Ⅰ学期) 作品主题:漫画app 系    别        信息与控制工程 专    业        计算机科学与技术 班    级          计算机1702 学    号            173230217 姓    名               张宏升 指导教师               郭丹 目录 一.需求分析 1 1.1引言 1 1.1.1编写目的 1 1.1.2项目背景 1 1.2功能需求分析 1

课设第24天

今日计划: 今天继续做了一些报告的内容. 明日计划: 明天是最后一次答辩演示,还需要继 续报告的撰写和上传代码. 小结: 写报告是一件比较繁琐的事情, 需要考虑很多的东西,而且还要回 顾以前做的工作,做一个整合归纳, 其实很多东西都不记得了,明天应该 是课设的最后一天了吧,再坚持一下 就可以结束了. 原文地址:https://www.cnblogs.com/gaoquanli/p/11508738.html