shell程序设计财务管理系统linux作业-创新互联

财务管理系统-shell程序说明手册

请添加图片描述

成都创新互联公司网站建设公司一直秉承“诚信做人,踏实做事”的原则,不欺瞒客户,是我们最起码的底线! 以服务为基础,以质量求生存,以技术求发展,成交一个客户多一个朋友!专注中小微企业官网定制,成都网站建设、成都网站制作,塑造企业网络形象打造互联网企业效应。0.程序介绍

这是一个简单的财务账单管理程序,个人原创。

主要包含如下功能
  1. 账单添加
  2. 账单删除
  3. 账单修改
  4. 分类显示
  5. 账单汇总
  6. 账单排序
  7. 数据分析
1.快速开始

如果需要有数据,请确保程序目录下包含data.csv文件以及其相应数据。

请添加图片描述

data.csv文件数据内容如下:

请添加图片描述

使用命令运行程序
  • bash finacialManager.sh
  • ./finacialManager.sh

注意:使用第二种方法前请确保程序文件具有可执行权限,可以使用chmod +x finacialManager.sh赋权。

2.增删改查

添加

请添加图片描述

使用功能6账单汇总观察账单添加效果

请添加图片描述
请添加图片描述

其他基本类似操作。

3.分类查询

根据数据里面的类型进行分类显示

请添加图片描述

请添加图片描述

请添加图片描述

4.账单汇总

打印所有数据。

5.账单排序

请添加图片描述

请添加图片描述

请添加图片描述

6.账单分析

请添加图片描述

请添加图片描述

7.部分核心代码
sort_aod(){while [ true ]
    do
      tput clear
      tput cup 2 10;echo "账单排序模块"
      tput cup 4 10;echo "1.升序"
      tput cup 5 10;echo "2.降序"
      tput cup 6 10;echo "3.返回上级"
      tput cup 8 0
      read -p "请输入选项>_" select
      # read -p "升序或者降序?(y/n)" aod
      case $select in
        1)  # 日期排序过程,sed去除表头,sed替换-为,便于排序分隔, 对前3列进行排序使用-k  -n表示以数值排序 ,最后合并日期添加-
          echo "======================================================================="
          awk 'BEGIN{printf "%10s %10s %6s %6s %6s %-6s\n","时间","金额","大分类","二级分类","支付方式","备注"}'
          echo "-----------------------------------------------------------------------"
          if (($1 == 1)) ; then
            sed -n '2,$p' $DATA | sed -e "s/-/,/g" | sort -t "," -k 1,1n -k 2,2n -k 3,3n | awk -v FS=',' '{printf "%s-%s-%s    %-10s %-6s %-6s %-6s %-6s\n",$1,$2,$3,$4,$5,$6,$7,$8}' | nl
          elif (($1 == 2)) ; then
            sed -n '2,$p' $DATA | sort -t "," -k $1,$1 -n | awk -v FS=',' '{printf "%-10s %-10s %-6s %-6s %-6s %-6s\n",$1,$2,$3,$4,$5,$6}' | nl
          fi
          echo "======================================================================="
        ;;
        2)
          echo "======================================================================="
          awk 'BEGIN{printf "%10s %10s %6s %6s %6s %-6s\n","时间","金额","大分类","二级分类","支付方式","备注"}'
          echo "-----------------------------------------------------------------------"
          if (($1 == 1)) ; then
            sed -n '2,$p' $DATA | sed -e "s/-/,/g" | sort -t "," -k 1,1nr -k 2,2nr -k 3,3nr | awk -v FS=',' '{printf "%s-%s-%s    %-10s %-6s %-6s %-6s %-6s\n",$1,$2,$3,$4,$5,$6,$7,$8}' | nl
          elif (($1 == 2)) ; then
            sed -n '2,$p' $DATA | sort -t "," -k $1,$1 -r -n | awk -v FS=',' '{printf "%-10s %-10s %-6s %-6s %-6s %-6s\n",$1,$2,$3,$4,$5,$6}' | nl
          fi
          echo "======================================================================="
        ;;
        3) sort_data
        ;;
        *) error_chose_exception;sleep 1
        ;;
      esac
      read -p "输入任意键继续..." any
    done
}

analyze_data(){  while [ true ]
    do
      tput clear
      tput cup 2 10;echo "账单分析模块"
      tput cup 4 10;echo "1.年度账单分析"
      tput cup 5 10;echo "2.月度账单分析"
      tput cup 6 10;echo "3.返回上级"
      tput cup 8 0
      read -p "请输入选项>_" select
      # read -p "升序或者降序?(y/n)" aod
      case $select in
        1)
        tput cup 12 0
        echo "**********年度账单分析**********"
        year=($(cat $DATA|sed -n '2,$p'|sed -e "s/-/,/g"|cut -d ',' -f 1|sort|uniq))
        yearLen=${#year[*]} ; i=0
        while (($i< $yearLen))
        do
            f_year="_year-$RANDOM$(date +%s%N | md5sum |cut -c 1-9)"
            cat $DATA|sed -e "s/-/,/g"|awk -v FS=',' -v y=${year[$i]} '(NF!=0&&$1==y){printf "%s,%s,%s,%s,%s,%s,%s,%s,\n",$1,$2,$3,$4,$5,$6,$7,$8}' >$f_year
            awk -v FS=',' -v y=${year[$i]} 'BEGIN{max=0;min=lshift(1,32)} {if ($4 >max) max = $4; fi}{if ($4< min) min = $4; fi} {sum += $4} END {printf "%s年总计%d条账单,总计消费%.2f,年均消费%.2f元\n其中最高消费为%.2f元,最低消费为%.2f\n\n",y,NR,sum,sum/NR,max,min}' $f_year
            rm $f_year
            ((i++))
        done
        echo "*******************************"
        read -p "按任意键继续..." any
        ;;
        2)
        read -p "输入查询的年份:" y
        tput cup 12 0

        f_year="_year-$RANDOM$(date +%s%N | md5sum |cut -c 1-9)"
        cat $DATA|sed -e "s/-/,/g"|awk -v FS=',' -v y=$y '(NF!=0&&$1==y){printf "%s,%s,%s,%s,%s,%s,%s,%s,\n",$1,$2,$3,$4,$5,$6,$7,$8}' >$f_year
        mon=($(cat $f_year|sed -e "s/-/,/g"|awk -v FS=',' -v y=$y '(NF!=0&&$1==y){printf "%s\n",$2}'|sort -n|uniq))
        monlen=${#mon[*]} ; i=0
        if (($monlen == 0))
        then
          echo "该年份下没有数据!"
          rm $f_year
          read -p "按任意键继续..." any
          continue
        fi
        echo "**********${y}年月度账单分析**********"
        while (($i< $monlen))
        do
            f_mon="_mon-$RANDOM$(date +%s%N | md5sum |cut -c 1-9)"
            awk -v FS=',' -v m=${mon[$i]} '(NF!=0&&$2==m){printf "%s,%s,%s,%s,%s,%s,%s,%s,\n",$1,$2,$3,$4,$5,$6,$7,$8}' $f_year >$f_mon
            awk -v FS=',' -v m=${mon[$i]} 'BEGIN{max=0;min=lshift(1,32)} {if ($4 >max) max = $4; fi}{if ($4< min) min = $4; fi} {sum += $4} END {printf "%s月总计%d条账单,总计消费%.2f,月均消费%.2f元\n其中最高消费为%.2f元,最低消费为%.2f\n\n",m,NR,sum,sum/NR,max,min}' $f_mon
            rm -f $f_mon
            ((i++))
        done
        rm -f $f_year
        echo "*******************************"
        read -p "按任意键继续..." any
        ;;
        3) menu
        ;;
        *) error_chose_exception;sleep 1
        ;;
      esac
    done
}

获取完整资源压缩包

联系方式在程序里面

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


名称栏目:shell程序设计财务管理系统linux作业-创新互联
本文链接:http://myzitong.com/article/djegoi.html