用python建立一个简易银行管理小系统

要求实现效果如下:在这里插入图片描述
任务需求如下:在这里插入图片描述其中分为两个包两个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仓库自取

  • 11
    点赞
  • 64
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值