网络资源模板--基于Android Studio 实现的记账本App

发布于:2025-07-13 ⋅ 阅读:(15) ⋅ 点赞:(0)

目录

一、测试环境说明

二、项目简介

三、项目演示

四、部设计详情(部分)

登录页

首页

记账管理

五、项目源码 


一、测试环境说明

二、项目简介

该项目是一个基于Android Studio开发、使用Java语言和SQLite数据库的记账本应用,主要功能包括用户注册与登录、收支记录管理(增删改查)、条件筛选与金额统计等。

项目采用MVC架构,通过SQLite存储数据,使用Android基础UI控件构建界面,并实现了后台音乐播放服务(Service),整体结构清晰,功能完整。

三、项目演示

网络资源模板--基于Android studio 记账本App

四、部设计详情(部分)

登录页

package com.yxj.jizhangben;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import java.util.ArrayList;


public class MainActivity extends AppCompatActivity {
    EditText edt_id,edt_pwd;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        edt_id = findViewById(R.id.edt_uid);
        edt_pwd =findViewById(R.id.edt_upwd);
        Button btn_login = findViewById(R.id.btn_login);
        //登录按键
        btn_login.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                try {
                    String userId=edt_id.getText().toString();
                    String userPwd=edt_pwd.getText().toString();
                    DBHelper dbuserHelper=new DBHelper(getApplicationContext());
                    User user = dbuserHelper.userlogin(userId,userPwd);

                    //登录成功跳转对应类型界面
                    if(user!=null) {
                        Toast.makeText(getApplicationContext(), user.getUsername() + "登录成功", Toast.LENGTH_SHORT).show();
                        Intent intent;
                        ArrayList<User> list = new ArrayList<>();
                        list.add(user);

                        intent = new Intent(getApplicationContext(), UserCenterActivity.class);
                        intent.putParcelableArrayListExtra("LoginUser", list);
                        startActivity(intent);

                    }else{
                        Toast.makeText(getApplicationContext(),"登录失败,账号不存在或密码错误!",Toast.LENGTH_SHORT).show();
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                    Toast.makeText(getApplicationContext(),"数据库异常",Toast.LENGTH_SHORT).show();
                }
            }
        });
        //注册按键
        Button btn_register=findViewById(R.id.btn_register);
        btn_register.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent=new Intent(getApplicationContext(),RegisterActivity.class);

                startActivity(intent);
            }
        });
    }
}

1. 页面的结构

该页面采用经典的登录界面结构,整体布局为垂直方向的线性布局,包含多个核心组件。

顶部是应用Logo和"用户登录"标题,中部是用户名和密码输入框,每个输入框左侧配有相应的图标。

底部并排摆放登录和注册两个圆形按钮。

布局采用ConstraintLayout作为根容器,内部嵌套LinearLayout实现垂直排列,各元素间通过margin和padding保持适当间距,整体设计简洁明了,符合Material Design规范。

2. 使用到的技术

该页面运用了Android开发中的多种核心技术。布局方面使用XML定义界面结构,结合ConstraintLayout和LinearLayout实现响应式设计。

视图组件包括TextView、EditText、ImageView和Button等基础控件。

功能实现上采用Java编写逻辑代码,通过findViewById获取控件实例,设置点击监听器处理用户交互。

数据存储方面通过DBHelper类与SQLite数据库交互,实现用户认证功能。

页面跳转使用Intent机制,数据传递采用Parcelable接口实现对象序列化。

3. 页面详细介绍

这是一个标准的用户登录界面,主要功能包括用户身份验证和注册导航。

界面顶部展示品牌标识,中部提供表单输入区域,用户可输入用户名和密码进行登录认证。

输入框带有视觉提示和图标装饰,提升用户体验。底部两个功能按钮分别触发登录验证和跳转注册页面。

登录成功后会跳转到用户中心界面并携带用户数据,失败则显示错误提示。

整体采用蓝色系配色方案,文字大小和间距设置合理,兼顾美观性和可用性,符合移动端登录界面的最佳实践。

首页

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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/background"
    tools:context=".UserCenterActivity">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintTop_toTopOf="parent">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="120dp"
            android:layout_marginTop="10dp"
            android:gravity="center"
            android:orientation="horizontal">

            <ImageView
                android:id="@+id/imageView"
                android:layout_width="120dp"
                android:layout_height="120dp"
                app:srcCompat="@drawable/login_logo" />

        </LinearLayout>

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

            <TextView
                android:id="@+id/tv_welcome"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:gravity="center"
                android:textColor="#090909"
                android:textSize="24sp" />

        </LinearLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:gravity="center_horizontal"
            android:layout_marginTop="40dp">

            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginHorizontal="20dp"
                android:background="#BBDEFB"
                android:gravity="center_horizontal"
                android:orientation="vertical"
                android:padding="25dp"
                >

                <ImageView
                    android:id="@+id/btn_recordmanage"
                    android:layout_width="60dp"
                    android:layout_height="60dp"
                    app:srcCompat="@drawable/jizhang" />

                <TextView
                    android:id="@+id/textView17"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="20dp"
                    android:text="记账管理"
                    android:textColor="#252020"
                    android:textSize="18sp" />
            </LinearLayout>

            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:orientation="vertical"
                android:gravity="center_horizontal"
                android:layout_marginHorizontal="20dp"
                android:background="#BBDEFB"
                android:padding="25dp"
                >

                <ImageView
                    android:id="@+id/btn_searchrecord"
                    android:layout_width="60dp"
                    android:layout_height="60dp"
                    app:srcCompat="@drawable/search" />

                <TextView
                    android:id="@+id/textView22"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="查看收支"
                    android:textColor="#FF252020"
                    android:textSize="18sp"
                    android:layout_marginTop="20dp"/>
            </LinearLayout>
        </LinearLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:gravity="center_horizontal"
            android:layout_marginVertical="30dp">

            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:orientation="vertical"
                android:gravity="center_horizontal"
                android:layout_marginHorizontal="20dp"
                android:background="#BBDEFB"
                android:padding="25dp">

                <ImageView
                    android:id="@+id/btn_exit"
                    android:layout_width="60dp"
                    android:layout_height="60dp"
                    app:srcCompat="@drawable/back" />

                <TextView
                    android:id="@+id/textView4"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:gravity="center"
                    android:text="退出登录"
                    android:textColor="#FF252020"
                    android:textSize="18sp"
                    android:layout_marginTop="20dp"/>


            </LinearLayout>

        </LinearLayout>

    </LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>

1. 页面的结构

该用户中心页面采用分层式布局设计,顶部显示用户欢迎信息和应用图标,中部是功能入口区,底部设置退出登录选项。

整体采用垂直线性布局嵌套水平布局的方式构建,功能入口以卡片式设计呈现,每个功能模块包含图标和文字说明。

界面元素采用浅蓝色背景与深色文字形成对比,确保视觉清晰度。

布局层次分明,功能分区明确,顶部展示区、中部操作区和底部安全区划分合理,符合用户操作习惯。

2. 使用到的技术

该页面运用了Android的多种核心技术组件。通过IntentService实现后台音乐播放功能,使用Parcelable机制传递用户对象数据。

界面交互采用AlertDialog实现二次确认弹窗,确保关键操作的安全性。布局系统结合ConstraintLayout和LinearLayout实现响应式设计,图片资源通过ImageView展示。

事件处理采用匿名内部类实现点击监听,页面跳转通过显式Intent完成。整体采用MVC模式,将界面展示与业务逻辑分离,提升代码可维护性。

3. 页面详细介绍

这是用户登录后的主功能界面,主要提供财务管理相关操作入口。顶部醒目标注欢迎语和用户名称,建立亲切感。

中部两个主要功能入口分别对应记账管理和收支查询,采用图标加文字说明的直观设计。底部退出登录按钮采用警示性设计,点击后弹出确认对话框防止误操作。

界面整体采用舒缓的蓝色系配色,所有交互元素保持一致的圆角矩形风格。功能模块间距合理,点击区域大小适中,符合人机交互设计规范,为用户提供清晰明确的操作指引。

记账管理

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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/register_background"
    tools:context=".ManageActivity">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center_horizontal"
        android:orientation="vertical"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintTop_toTopOf="parent">

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

            <ImageView
                android:id="@+id/imageView2"
                android:layout_width="150dp"
                android:layout_height="150dp"
                android:layout_marginTop="20dp"
                app:srcCompat="@drawable/login_logo" />

            <TextView
                android:id="@+id/textView20"
                android:layout_width="wrap_content"
                android:layout_height="30dp"
                android:text="收支管理"
                android:textColor="#0C0C0C"
                android:textSize="20dp" />
        </LinearLayout>


        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:gravity="center_vertical"
            android:orientation="horizontal">

            <TextView
                android:id="@+id/textView36"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginHorizontal="20dp"
                android:text="您选择的序号是:"
                android:textColor="#152029"
                android:textSize="18sp"
                android:textStyle="bold" />

            <TextView
                android:id="@+id/tv_test"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:hint="暂未选择"
                android:textColor="#0004FF"
                android:textColorHint="#0066FF"
                android:textSize="20dp" />

        </LinearLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginHorizontal="20dp"
            android:layout_marginVertical="10dp"
            android:gravity="center"
            android:orientation="horizontal">

            <TextView
                android:id="@+id/textView29"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:layout_weight="1"
                android:text="序号"
                android:textColor="#111819"
                android:textSize="18sp" />

            <TextView
                android:id="@+id/textView26"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="日期"
                android:textColor="#111819"
                android:textSize="18sp" />

            <TextView
                android:id="@+id/textView25"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="类型"
                android:textColor="#111819"
                android:textSize="18sp" />

            <TextView
                android:id="@+id/textView27"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="金额"
                android:textColor="#111819"
                android:textSize="18sp" />

            <TextView
                android:id="@+id/textView28"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="说明"
                android:textColor="#111819"
                android:textSize="18sp" />

        </LinearLayout>

        <ImageView
            android:layout_width="380dp"
            android:layout_height="0.5dp"
            android:background="#0091EA"
            android:paddingHorizontal="20dp" />

        <ListView
            android:id="@+id/recordlistview"
            android:layout_width="wrap_content"
            android:layout_height="120dp"
            android:layout_weight="1">

        </ListView>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginHorizontal="14dp"
            android:orientation="horizontal">

            <TextView
                android:id="@+id/textView18"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="日期: "
                android:textColor="#101112"
                android:textSize="18sp" />

            <EditText
                android:id="@+id/edt_date"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:ems="10"
                android:hint="填写日期,如:202507表示2025年7月"
                android:inputType="textPersonName"
                android:textColor="#0004FF"
                android:textColorHint="#0066FF"
                android:textSize="15dp" />
        </LinearLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginHorizontal="14dp"
            android:orientation="horizontal">

            <TextView
                android:id="@+id/textView21"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="类型: "
                android:textColor="#101112"
                android:textSize="18sp" />

            <EditText
                android:id="@+id/edt_type"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:ems="10"
                android:hint="0代表支出/1代表收入"
                android:inputType="textPersonName"
                android:textColor="#0004FF"
                android:textColorHint="#0066FF"
                android:textSize="15dp" />

        </LinearLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginHorizontal="14dp"
            android:orientation="horizontal">

            <TextView
                android:id="@+id/textView30"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="金额: "
                android:textColor="#101112"
                android:textSize="18sp" />

            <EditText
                android:id="@+id/edt_money"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:ems="10"
                android:hint="请输入金额"
                android:inputType="textPersonName"
                android:textColor="#0004FF"
                android:textColorHint="#0066FF"
                android:textSize="15dp" />
        </LinearLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginHorizontal="14dp"
            android:orientation="horizontal">

            <TextView
                android:id="@+id/tv_state"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="说明: "
                android:textColor="#101112"
                android:textSize="18sp" />

            <EditText
                android:id="@+id/edt_state"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:ems="10"
                android:hint="阐述说明"
                android:inputType="textPersonName"
                android:textColor="#0004FF"
                android:textColorHint="#0066FF"
                android:textSize="15dp" />
        </LinearLayout>

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginVertical="30dp">

            <Button
                android:id="@+id/btn_add"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginHorizontal="10dp"
                android:layout_weight="1"
                android:text="添加"
                app:backgroundTint="#0091EA" />

            <Button
                android:id="@+id/btn_update"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginHorizontal="10dp"
                android:layout_weight="1"
                android:text="修改"
                app:backgroundTint="#0091EA" />

            <Button
                android:id="@+id/btn_delete"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginHorizontal="10dp"
                android:layout_weight="1"
                android:text="删除"
                app:backgroundTint="#0091EA" />
        </LinearLayout>
    </LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>

1. 页面的结构

该收支管理页面采用典型的数据管理界面设计,整体为垂直线性布局。

顶部显示应用图标和功能标题,中部包含数据展示区和操作区。数据展示区采用ListView展示收支记录列表,每行显示序号、日期、类型、金额和说明五个字段。

操作区提供四个文本输入框用于录入或修改数据,底部三个功能按钮分别实现添加、修改和删除操作。

界面采用蓝白配色方案,关键操作区域使用醒目的蓝色按钮,重要信息使用加粗字体,整体布局层次清晰,功能分区明确。

2. 使用到的技术

该页面综合运用了Android数据库和界面交互技术。

使用SQLite数据库存储收支记录,通过原生SQL语句实现CRUD操作。

数据展示采用ListView配合SimpleAdapter实现,自定义列表项布局展示多字段数据。

界面交互方面,实现列表项点击事件获取选中记录,使用AlertDialog实现删除确认对话框。数据验证确保输入完整性,操作结果通过Toast提示用户。

页面采用响应式设计,适配不同屏幕尺寸,输入框设置提示文字引导用户正确输入。

3. 页面详细介绍

这是一个完整的收支记录管理界面,提供记账数据的增删改查功能。

用户可查看所有收支记录列表,点击某条记录自动填充到下方编辑区。通过填写日期、类型、金额和说明等信息,可新增记录或修改选中记录。

删除操作需二次确认防止误操作。界面设计注重实用性,列表展示关键字段,编辑区提供详细输入。

日期格式提示、类型说明等引导信息帮助用户规范输入。操作按钮状态反馈及时,成功或错误都有明确提示。整体交互流程符合数据管理类应用的操作习惯,兼顾功能完整性和使用便捷性。

五、项目源码 

👇👇👇👇👇快捷方式👇👇👇👇👇


网站公告

今日签到

点亮在社区的每一天
去签到