shell程序设计财务管理系统linux作业-创新互联
财务管理系统-shell程序说明手册成都创新互联公司网站建设公司一直秉承“诚信做人,踏实做事”的原则,不欺瞒客户,是我们最起码的底线! 以服务为基础,以质量求生存,以技术求发展,成交一个客户多一个朋友!专注中小微企业官网定制,成都网站建设、成都网站制作,塑造企业网络形象打造互联网企业效应。0.程序介绍
当前标题:shell程序设计财务管理系统linux作业-创新互联
地址分享:http://scyanting.com/article/djegoi.html
这是一个简单的财务账单管理程序,个人原创。
主要包含如下功能- 账单添加
- 账单删除
- 账单修改
- 分类显示
- 账单汇总
- 账单排序
- 数据分析
如果需要有数据,请确保程序目录下包含data.csv
文件以及其相应数据。
data.csv
文件数据内容如下:
- bash finacialManager.sh
- ./finacialManager.sh
2.增删改查注意:使用第二种方法前请确保程序文件具有可执行权限,可以使用
chmod +x finacialManager.sh
赋权。
添加
使用功能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://scyanting.com/article/djegoi.html