一、需求分析
根据题目要求,我们需要使用微信小程序开发一个简单的记账管理应用。具体要求包括:
-
用户登录:用户可以使用微信账号登录记账管理应用。
-
记账功能:用户可以记录每天的收入和支出,并可以添加备注。
-
显示账目列表:用户可以查看自己的账目列表,包括日期、收入、支出和备注等信息。
-
统计功能:用户可以查看自己的收入和支出的统计信息,包括总收入、总支出和净收入等。
二、开发环境准备
为了开发微信小程序,我们需要准备以下开发环境:
-
微信开发者工具:用于编写、调试和预览微信小程序的工具。
-
微信小程序注册账号:用于发布和管理微信小程序。
-
代码编辑器:可以选择使用 Visual Studio Code、Sublime Text 等常见的代码编辑器。
三、开发步骤
接下来,我们按照需求分析的顺序,逐步开发记账管理应用。
- 用户登录
用户登录是应用的入口,我们需要在小程序的首页中实现登录功能。
首先,我们需要在首页的 JSON 文件中设置微信登录的权限:
{
"pages": [
"pages/index/index",
"pages/home/home"
],
"permission": {
"scope.userLocation": {
"desc": "获取您的登录状态"
}
}
}
然后,在首页的 JS 文件中实现登录功能:
Page({
data: {
userInfo: null
},
onLogin: function(e) {
wx.login({
success: (res) => {
if (res.code) {
wx.getUserInfo({
success: (res) => {
this.setData({
userInfo: res.userInfo
});
wx.navigateTo({
url: '/pages/home/home',
});
}
});
} else {
console.log('登录失败!' + res.errMsg);
}
}
});
}
})
最后,在首页的 WXML 文件中添加登录按钮和用户信息展示的区域:
<view class="container">
<view class="header">
<text class="title">记账管理应用</text>
</view>
<view class="content">
<button class="login-btn" open-type="getUserInfo" bindgetuserinfo="onLogin">登录</button>
<view class="user-info" wx:if="{{userInfo}}">
<image class="avatar" src="{{userInfo.avatarUrl}}" />
<text class="nickname">{{userInfo.nickName}}</text>
</view>
</view>
</view>
- 记账功能
记账功能是应用的核心功能,我们需要在记账页面中实现该功能。
首先,我们需要在记账页面的 JSON 文件中设置界面布局:
{
"navigationBarTitleText": "记账"
}
然后,在记账页面的 JS 文件中添加记账功能:
Page({
data: {
income: 0,
expenditure: 0,
remark: ''
},
onInputIncome: function(e) {
this.setData({
income: e.detail.value
});
},
onInputExpenditure: function(e) {
this.setData({
expenditure: e.detail.value
});
},
onInputRemark: function(e) {
this.setData({
remark: e.detail.value
});
},
onSave: function() {
// 保存账目,可以使用 wx.request 方法发送请求到后端保存账目信息
console.log('保存账目:', this.data);
wx.showToast({
title: '保存成功',
icon: 'success',
duration: 2000
});
}
})
最后,在记账页面的 WXML 文件中添加输入框和保存按钮:
<view class="container">
<view class="header">
<text class="title">记账</text>
</view>
<view class="content">
<view class="input-group">
<text class="label">收入:</text>
<input class="input" type="number" bindinput="onInputIncome" />
</view>
<view class="input-group">
<text class="label">支出:</text>
<input class="input" type="number" bindinput="onInputExpenditure" />
</view>
<view class="input-group">
<text class="label">备注:</text>
<input class="input" bindinput="onInputRemark" />
</view>
<button class="save-btn" bindtap="onSave">保存</button>
</view>
</view>
- 显示账目列表
显示账目列表是为了给用户查看自己的账目信息,我们需要在列表页面中实现该功能。
首先,我们需要在列表页面的 JSON 文件中设置界面布局:
{
"navigationBarTitleText": "账目列表"
}
然后,在列表页面的 JS 文件中添加显示账目列表的功能:
Page({
data: {
accountList: [
{ date: '2021-01-01', income: 100, expenditure: 50, remark: '买菜' },
{ date: '2021-01-02', income: 200, expenditure: 100, remark: '买衣服' },
{ date: '2021-01-03', income: 300, expenditure: 200, remark: '买电子产品' },
]
}
})
最后,在列表页面的 WXML 文件中添加列表展示区域:
<view class="container">
<view class="header">
<text class="title">账目列表</text>
</view>
<view class="content">
<view class="account-list" wx:for="{{accountList}}">
<view class="account-item">
<text class="date">{{item.date}}</text>
<text class="income">收入:{{item.income}}</text>
<text class="expenditure">支出:{{item.expenditure}}</text>
<text class="remark">备注:{{item.remark}}</text>
</view>
</view>
</view>
</view>
- 统计功能
统计功能用于给用户查看收入和支出的统计信息,我们需要在统计页面中实现该功能。
首先,我们需要在统计页面的 JSON 文件中设置界面布局:
{
"navigationBarTitleText": "统计"
}
然后,在统计页面的 JS 文件中添加统计功能:
Page({
data: {
totalIncome: 0,
totalExpenditure: 0,
netIncome: 0
},
onLoad: function() {
// 统计账目信息,可以使用 wx.request 方法发送请求到后端获取账目信息
let accountList = [
{ date: '2021-01-01', income: 100, expenditure: 50, remark: '买菜' },
{ date: '2021-01-02', income: 200, expenditure: 100, remark: '买衣服' },
{ date: '2021-01-03', income: 300, expenditure: 200, remark: '买电子产品' },
];
let totalIncome = 0;
let totalExpenditure = 0;
accountList.forEach((item) => {
totalIncome += item.income;
totalExpenditure += item.expenditure;
});
this.setData({
totalIncome: totalIncome,
totalExpenditure: totalExpenditure,
netIncome: totalIncome - totalExpenditure
});
}
})
最后,在统计页面的 WXML 文件中添加统计信息展示区域:
<view class="container">
<view class="header">
<text class="title">统计</text>
</view>
<view class="content">
<view class="statistic-item">
<text class="label">总收入:</text>
<text class="value">{{totalIncome}}</text>
</view>
<view class="statistic-item">
<text class="label">总支出:</text>
<text class="value">{{totalExpenditure}}</text>
</view>
<view class="statistic-item">
<text class="label">净收入:</text>
<text class="value">{{netIncome}}</text>
</view>
</view>
</view>
四、项目部署与