Linux作业5

#!/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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值