#!/bin/bash
# 定义保存账务信息的文件路径
FILE_PATH="account.txt"
# 函数:添加账务信息
add_account() {
echo "请输入以下账务信息:"
read -p "消费时间(YYYY-MM-DD): " date
read -p "消费类型: " type
read -p "金额: " amount
# 将账务信息添加到文件末尾
echo "$date $type $amount" >> $FILE_PATH
echo "账务信息已添加成功!"
}
# 函数:删除账务信息
delete_account() {
read -p "请输入要删除的账务信息的行号: " line
# 删除指定行的账务信息
sed -i "${line}d" $FILE_PATH
echo "账务信息已删除!"
}
# 函数:修改账务信息
modify_account() {
read -p "请输入要修改的账务信息的行号: " line
# 获取指定行的账务信息
account=$(sed -n "${line}p" $FILE_PATH)
if [ -z "$account" ]; then
echo "该行不存在账务信息!"
return
fi
echo "账务信息: $account"
read -p "消费时间(YYYY-MM-DD): " date
read -p "消费类型: " type
read -p "金额: " amount
# 替换指定行的账务信息
sed -i "${line}s/.*//$date $type $amount/" $FILE_PATH
echo "账务信息已修改!"
}
# 函数:查询账务信息
query_account() {
echo "请选择查询方式:"
echo "1. 按消费时间段查询"
echo "2. 按消费类型查询"
read -p "请输入选项: " option
case $option in
1)
read -p "请输入起始时间(YYYY-MM-DD): " start_date
read -p "请输入截止时间(YYYY-MM-DD): " end_date
# 查询指定时间段的账务信息
awk -v start_date="$start_date" -v end_date="$end_date" -F ' ' '$1 >= start_date && $1 <= end_date { print $0 }' $FILE_PATH
;;
2)
read -p "请输入消费类型: " type
# 查询指定类型的账务信息
grep "$type" $FILE_PATH
;;
*)
echo "输入无效!"
;;
esac
}
# 函数:统计账务信息
statistic_account() {
echo "请选择统计方式:"
echo "1. 按消费时间段统计"
echo "2. 按消费类型统计"
echo "3. 按消费年月统计"
read -p "请输入选项: " option
case $option in
1)
read -p "请输入统计年份(YYYY): " year
awk -v year="$year" -F ' ' '$1 ~ year { sum += $3 } END { print sum }' $FILE_PATH
;;
2)
read -p "请输入消费类型: " type
3)
read -p "请输入统计年份(YYYY): " year
read -p "请输入统计月份(MM): " month
awk -v year="$year" -v month="$month" -F ' ' '$1 ~ year && $1 ~ month { sum += $3 } END { print sum }' $FILE_PATH
;;
*)
echo "输入无效!"
;;
esac
}
# 主程序
while true; do
echo "============== 记账系统 =============="
echo "1. 添加账务信息"
echo "2. 删除账务信息"
echo "3. 修改账务信息"
echo "4. 查询账务信息"
echo "5. 统计账务信息"
echo "0. 退出"
read -p "请输入选项: " option
case $option in
1)
add_account
;;
2)
delete_account
;;
3)
modify_account
;;
4)
query_account
;;
5)
statistic_account
;;
0)
break
;;
*)
echo "输入无效!"
;;
esac
echo
done