好的,以下是构造程序的代码:
```python
class AccountBook:
def __init__(self):
self.records = []
self.income = 0
self.expense = 0
self.balance = 0
def add_record(self, category, detail, amount, date):
record = [len(self.records)+1, category, detail, amount, date]
self.records.append(record)
if category == '收入':
self.income += amount
else:
self.expense += amount
self.balance = self.income - self.expense
def print_records(self):
for record in self.records:
print(record)
print('总收入:', self.income)
print('总支出:', self.expense)
print('结余:', self.balance)
book = AccountBook()
book.add_record('收入', '生活费', 3000, '2020-04-01')
book.add_record('支出', '午餐', 12.5, '2020-04-30')
book.add_record('支出', '买书', 25, '2020-04-30')
book.add_record('支出', '晚餐', 16, '2020-04-30')
book.add_record('收入', '生活费', 3500, '2020-05-01')
book.add_record('支出', '峨嵋山旅游', 500, '2020-05-01')
book.print_records()
```
运行程序后,输出结果如下:
```
[1, '收入', '生活费', 3000, '2020-04-01']
[2, '支出', '午餐', 12.5, '2020-04-30']
[3, '支出', '买书', 25, '2020-04-30']
[4, '支出', '晚餐', 16, '2020-04-30']
[5, '收入', '生活费', 3500, '2020-05-01']
[6, '支出', '峨嵋山旅游', 500, '2020-05-01']
总收入: 6500
总支出: 553.5
结余: 5946.5
```
上述程序中,我们定义了一个 `AccountBook` 类,其中包含了一个 `records` 属性,用于存储记帐记录;以及 `income`、`expense` 和 `balance` 属性,分别用于记录总收入、总支出和结余。
在 `AccountBook` 类中,我们还定义了一个 `add_record` 方法,用于添加新的记帐记录。这个方法接受四个参数:`category`(类别)、`detail`(明细)、`amount`(金额)和 `date`(日期)。在添加新的记帐记录时,我们先将其存储到 `records` 属性中,然后根据类别更新总收入和总支出,最后计算结余。
最后,我们还定义了一个 `print_records` 方法,用于将所有的记帐记录打印出来,并输出总收入、总支出和结余。
在程序的最后,我们创建一个 `AccountBook` 对象,并添加了一些测试数据。最后调用 `print_records` 方法,将所有的记帐记录打印出来,并输出总收入、总支出和结余。