要求实现效果如下:
任务需求如下:其中分为两个包两个csv文件实现低耦合高内聚:
bank_main.py
# coding:utf-8
# 导入
import datetime
import csv
import pandas as pd
import bank_tooks as bt
import math
# 对user_name的资金进行存取操作
def funds_trade(user_name):
# k=0
with open('bank.csv', mode='r+', encoding='utf-8') as f1:
next(f1)
g = csv.reader(f1)
final_list = list(g)
length = int(len(final_list))
# print(length)
# df=pd.read_csv("bank.csv",encoding="utf-8")
for item in range(0,length):
with open('bank.csv', mode='r+', encoding='utf-8') as f2:
# next(f2)
f_b = csv.reader(f2)
bank_list = list(f_b)
length_bank = int(len(final_list))
f2.close()
year_money=0
for k in range(0,length_bank+1):
if bank_list[k][0]==user_name:
year_money=float(bank_list[k][3])
continue
# print(year_money)
# print("您的余额有{}\n".format(final_list[item][3]))
saveMoney=int(input("请输入您存(+)取(-)的金额:"))
new_money=year_money+saveMoney
print("数据更新成功!")
# with open('userInfo.csv', mode='r+', encoding='utf-8') as f3:
# next(f3)
# f3 = csv.reader(f3)
# final_list = list(f3)
# length2 = int(len(final_list))
# f3.close()
time1_str = datetime.datetime.today()
with open('bank.csv', mode='a+', encoding='utf-8') as f4:
f4.write('\n{},{},{},{}'.format(user_name, time1_str, saveMoney, new_money))
print("数据保存成功!")
if saveMoney>=0:
print("您已成功存入{}元,当前余额:{}".format(saveMoney,new_money))
else:
print("您已成功取出{}元,当前余额:{}".format(math.fabs(saveMoney),new_money))
yourChoice=int(input("继续存储请按【1】,返回主菜单请按【2】"))
if yourChoice==1:
# print(user_name)
funds_trade(user_name)
else:
bt.show_menu(user_name)
break
# 打印交易详情
def funds_print(user_name):
csv_data=pd.read_csv('bank.csv',encoding="utf-8")
# # print(csv_data["用户名"].loc[1])
# for i in range(0,len(csv_data)):
print(csv_data[(csv_data['用户名']==user_name)])
if __name__=="__main__":
print("欢迎来到【银行资金管理系统】,请登录:")
while(True):
userChoice=int(input("直接登录请按【1】,注册请按【2】:"))
if userChoice==1:
userName1=input("请输入用户名")
bt.user_login(userName1)
break
elif userChoice==2:
bt.user_register()
userName2 = input("请输入用户名")
bt.user_login(userName2)
break
else:
print("请输入合理值!")
continue
bank_tooks.py
import csv
import bank_main as bm
# 打印出各个功能模块对应的数字
def show_menu(userName):
print("---------------【银行资金管理系统】---------------")
print("1:\t资金存入/取出")
print("2:\t交易账单打印")
print("3:\t退出系统")
print("-----------------------------------------------")
k=0
showName=userName
while k<3:
userInputAct=int(input("请输入数字进行相关操作:"))
if userInputAct==1:
bm.funds_trade(showName)
elif userInputAct==2:
bm.funds_print(showName)
elif userInputAct==3:
print("很高心您的使用,祝您生意兴隆!")
break
else:
print("请您输入有效数字!")
k+=1
# 通过userInfo参数传入用户注册信息进行登录
def user_login(userInfo):
i = 0
with open('userInfo.csv', mode='r+', encoding='utf-8') as f1:
next(f1)
f=csv.reader(f1)
final_list=list(f)
length = int(len(final_list))
f1.close()
k=1
userName=""
while i < 3:
pwd = input('请输入你的密码:')
for index in range(0,length) :
if userInfo == final_list[index][0] and pwd==final_list[index][4]:
k=1
userName = userInfo
break
else:
k=0
if index==length-1:
break
if k==1:
print("登录成功")
show_menu(userName)
break
else:
print("登录失败请从新登录")
i+=1
# 用于用户第一次使用系统时提供资金组测功能
def user_register():
username = input('请输入你要注册的用户名:')
password = input('请输入你要注册的密码:')
with open('userInfo.csv', mode='a+', encoding='utf-8') as f:
f.write('\n{},{},{},{},{}'.format(username,"","","",password))
print('恭喜您,注册成功')
# user_register()
# user_login("wang")
bank.csv实现记录存储:
用户名,时间,存入/支出,余额
wang,2020-12-20 04:33:48.919891,980,1000
wang,2020-12-20 04:40:09.798454,300,300
dong,2020-12-20 04:46:39.195680,800,800
dong,2020-12-20 04:49:15.449054,-300,-300
wang,2020-12-20 04:58:54.090118,200,500
wang,2020-12-20 05:11:01.673708,2000,2300.0
wang,2020-12-20 05:11:09.529418,300,800.0
wang,2020-12-20 05:11:30.880670,200,2500.0
wang,2020-12-20 05:11:37.193144,300,1100.0
wang,2020-12-20 05:13:08.589787,200,2500.0
wang,2020-12-20 05:13:47.934761,200,1300.0
wang,2020-12-20 05:13:57.103731,200,2700.0
dong,2020-12-20 05:15:24.905496,200,-100.0
dong,2020-12-20 05:15:38.801464,300,0.0
dong,2020-12-20 05:15:44.928631,200,100.0
wang,2020-12-20 05:19:02.208143,200,2900.0
wang,2020-12-20 05:20:37.312885,800,3700.0
wang,2020-12-20 05:20:44.487234,-200,3500.0
zhu,2020-12-20 05:23:18.256035,200,200
userinfo.csv(本来打算做bank.csv一个的,但是为了高内聚就做了两个,这一个是按照bank.csv改的):
用户名,时间,存入/支出,余额,密码
wang,,,,123
dong,,,,123
han,,,,123
donghan,,,,123
hanhan,,,,123
xiaoxin,,,,123
zhu,,,,456
有问题请私聊
2020.12.23更新
很多开发者反映有问题,其实并没有哦,只不过功能简单其余像是用户注册判断逻辑没有加,其余就没有什么严重问题了,代码点击git仓库自取