目录

大二的时候python有个课堂作业是银行管理系统,不太满意当时的功能,于是添加了点功能。后来大三了,对python的认知又更进了一步就再次改良了我的代码。

程序入口(首页)文件名: home.py

实现开户功能(随机生成六位数的卡号、储存卡号密码、验证密码,记录开户动作): kaihu.py

取款(输入卡号密码进行取款操作,验证余额,校对密码,记录取款动作):qu.py

存款(输入卡号密码进行存款操作,校对密码,更新用户数据,记录存款动作):cun.py

查询(输入账号密码,验证账号密码,记录查询动作):cha.py

转账(输入账号密码,验证账号密码,输入转账对象账号,验证账号,记录转账动作):zhuan.py

修改密码(输入账号密码,验证账号密码,输入修改密码,验证密码,记录修改密码动作):gai.py

数据写出(写成dataframe的表格,详列账号、密码、身份证、手机号)生成客户数据.txt文件:alldata.py

数据读取(从客户数据.txt的dataframe的表格中读取账号、密码、身份证、手机号):shuju.py

管理员系统:

里面包含七项功能

获取所有用户的卡号

获取所有客户姓名

查询今日此银行的流水

用户所有信息的总览(账号密码卡号余额手机号等)

恢复出厂设置(清空所有用户的数据)

系统上所记录的所有的用户的操作(开户、取款、转账等)

按余额区间来查询用户(剩下姓名查询和地区查询功能现在才发现并没添加上去)

完整管理员系统代码:amin.py

【银行管理系统】部分截图:

客户数据明细

开户、存款

管理员系统

系统数据明细

个人数据


大二的时候python有个课堂作业是银行管理系统,不太满意当时的功能,于是添加了点功能。后来大三了,对python的认知又更进了一步就再次改良了我的代码。

拥有存、查、改、取、开户的基本用户操作,还设置了专门的管理员系统,能记录存、查、改、取、开户的基本用户操作的时间和用户实时余额的信息,可将信息存储至数据库,再次启用时可导入所有用户数据。每个客户信息都被详细记录,包括身份证、地址、开户查存取等具体时间。用户也可查询到自己的所有操作记录。

程序入口(首页)文件名: home.py

#home.py
from kaihu import kaihu
from qu import qu
from cun import cun
from cha import cha
from zhuan import zhuan
from gai import gai
from alldata import alldata
from shuju import shuju
from admin import guanli
zong=shuju()c=list(zong.keys())
moneys=[]
for c1 in c:money = zong[c1][2]moneys.append(money)
money = sum(moneys)
#zong= {'111111':['1','小白',9999],'222222':['2','小李',9999]}#数据初始化,上帝模式
while 1:print('''
------------------------------
|   1.开户\t2.取款     |
|                            |
|   3.存款\t4.查询     |
|                            |
|   5.转账\t6.改密码   |
|                            |
|       输入‘q’退出          |
------------------------------
''')choose=input('输入1到6:')if choose =='1':zidiankaihu=kaihu()zong.update(zidiankaihu)alldata(zong)if choose =='2':quhou=qu(zong)if len(quhou)!=0:zong[quhou[1]][2]=quhou[0]alldata(zong)if choose == 'q':breakif choose == '3':cunhou=cun(zong)if len(cunhou)!=0:zong[cunhou[1]][2]=cunhou[0]alldata(zong)if choose == '4':cha(zong)if choose == '5':zhuanhou=zhuan(zong)if len(zhuanhou)!=0:zong[zhuanhou[1]][2]=zhuanhou[0]zong[zhuanhou[2]][2]=zong[zhuanhou[2]][2]+zhuanhou[3]alldata(zong)if choose == '6':new_psw=gai(zong)if len(new_psw)!=0:zong[new_psw[0]][0]=new_psw[1]alldata(zong)if choose == 'admin':adminpsw = input('请输入管理员密码:')cishu = 0while cishu<2:if adminpsw == 'admin123':zong=guanli(zong,money)alldata(zong)breakelse:cishu+=1adminpsw = input('你的输入有误!(你还有{}次机会)\n请输入管理员密码:'.format(3-cishu))if choose not in ['1','2','3','4','5','6','q','admin']:print('你的输入有误,请重新输入!!')

实现开户功能(随机生成六位数的卡号、储存卡号密码、验证密码,记录开户动作): kaihu.py

#kaihu.py
from datetime import datetime
def kaihu():ming=input('请输入您的名字:')mi=int(input('请输入您要设置的六位数的密码:'))while 1:if not len(str(mi))==6:mi=int(input('\n您的操作有误!\n请重新输入您要设置的六位数的密码:'))else:breakperson_id=input('请输入您的身份证:')while 1:if not len(person_id)==18:person_id=input('\n您的操作有误!\n请输入您的身份证:')else:breakphone =input('请输入您的手机号码:')while 1:if not phone[0]=='1' or not len(phone)==11:phone =input('您输入的号码有误,请重新输入:')else:breakzhang=str(suiji())zidian={}zidian[zhang]=[mi,str(ming),0,person_id,phone]print('开户成功!\n你的卡号是{}\n请牢记您的卡号。'.format(zhang))path = r"C:\Users\ge\Desktop\test1\银行管理系统\个人数据/"+ming+'.txt'dt01 = datetime.today()b=str(dt01.time())a=str(dt01.date())with open(path,'w',encoding='utf8') as f:f.write(a+b+'\n进行了开户操作\n余额:'+ '0元')with open(r"C:\Users\ge\Desktop\test1\银行管理系统\客户数据明细.txt",'a',encoding='utf8') as f:f.write(a+b+'\n用户:'+zhang+'\n进行了开户操作\n余额:'+ '0元\n\n\n')return zidian
import random
def suiji():ss=str(random.randint(0,9))for i in range(5):x=str(random.randint(0,9))ss = str(ss) + str(x)return ss

取款(输入卡号密码进行取款操作,验证余额,校对密码,记录取款动作):qu.py

#qu.py
from datetime import datetime
def qu(zong):kahao=input('请输入您的卡号:')b=[]a=[]for key in zong.keys():b.append(key)if kahao in b:mi=int(input('请输入您的密码:'))if mi ==zong[kahao][0]:qu=int(input('你剩{},取:'\.format(zong[kahao][2])))if qu>zong[kahao][2]:print('余额不足,请重新输入')while qu>zong[kahao][2]:qu=int(input('你剩{},取:'\.format(zong[kahao][2])))else:shengxia=zong[kahao][2]-quprint('取出成功\n余额{}'.format(shengxia))path = r"C:\Users\ge\Desktop\test1\银行管理系统\个人数据/"+zong[kahao][1]+'.txt'dt01 = datetime.today()bb=str(dt01.time())aa=str(dt01.date())yue = str(zong[kahao][2]-qu)with open(path,'a',encoding='utf8') as f:f.write(aa+bb+'\n取出'+str(qu)+'\n余额:'+ yue +'元\n\n\n') with open(r"C:\Users\ge\Desktop\test1\银行管理系统\客户数据明细.txt",'a',encoding='utf8') as f:f.write(aa+bb+'\n用户:'+kahao+'\n取出'+str(qu)+'\n余额:'+ yue +'元\n\n\n')a.append(shengxia)a.append(kahao)else:print('密码错误')                else:print('没这个卡号')return a

存款(输入卡号密码进行存款操作,校对密码,更新用户数据,记录存款动作):cun.py

#cun.py
from datetime import datetimedef cun(zong):kahao=input('请输入您的卡号:')b=[]a=[]for key in zong.keys():b.append(key)if kahao in b:mi=int(input('请输入您的密码:'))if mi ==zong[kahao][0]:cun=int(input('你剩{},存:'\.format(zong[kahao][2])))shengxia=int(zong[kahao][2]+cun)print('存入成功\n余额{}'.format(shengxia))path = r"C:\Users\ge\Desktop\test1\银行管理系统\个人数据/"+zong[kahao][1]+'.txt'dt01 = datetime.today()bb=str(dt01.time())aa=str(dt01.date())yue = str(zong[kahao][2]+cun)with open(path,'a',encoding='utf8') as f:f.write(aa+bb+'\n存入'+str(cun)+'\n余额:'+ yue +'元\n\n\n')   with open(r"C:\Users\ge\Desktop\test1\银行管理系统\客户数据明细.txt",'a',encoding='utf8') as f:f.write(aa+bb+'\n用户:'+kahao+'\n存入'+str(cun)+'\n余额:'+ yue +'元\n\n\n') a.append(shengxia)a.append(kahao)else:print('您输入的密码有误!!')                else:print('没这个卡号')return a

查询(输入账号密码,验证账号密码,记录查询动作):cha.py

#cha.py
from datetime import datetime
def cha(zong):kahao=input('请输入您的卡号:')b=[]for key in zong.keys():b.append(key)if kahao in b:mi=int(input('请输入您的密码:'))if mi ==zong[kahao][0]:print('用户:{}\n你剩{}'\.format(zong[kahao][1],zong[kahao][2]))  path = r"C:\Users\ge\Desktop\test1\银行管理系统\个人数据/"+zong[kahao][1]+'.txt'dt01 = datetime.today()bb=str(dt01.time())aa=str(dt01.date())yue = str(zong[kahao][2])with open(path,'a',encoding='utf8') as f:f.write(aa+bb+'\n进行了余额查询的操作'+'\n余额:'+ yue +'元\n\n\n') with open(r"C:\Users\ge\Desktop\test1\银行管理系统\客户数据明细.txt",'a',encoding='utf8') as f:f.write(aa+bb+'\n用户:'+kahao+'\n进行了余额查询的操作'+'\n余额:'+ yue +'元\n\n\n') else:print('密码错误')                else:print('没这个卡号')

转账(输入账号密码,验证账号密码,输入转账对象账号,验证账号,记录转账动作):zhuan.py

#zhuan.py
from datetime import datetime
def zhuan(zong):kahao=input('请输入您的卡号:')a=[]b=[]for key in zong.keys():b.append(key)if kahao in b:mi=int(input('请输入您的密码:'))if mi ==zong[kahao][0]:while 1:zhang1=input('请输入你转账的对象账号:')if zhang1 ==kahao:print('你无法向自己转账,请重新输入:')elif zhang1 in b:breakelse:print('你输入的卡号不存在,请重新输入:')zhuan=int(input('你剩{},转:'\.format(zong[kahao][2])))if zhuan>zong[kahao][2]:print('余额不足,请重新输入')while zhuan>zong[kahao][2]:zhuan=int(input('你剩{},转:'\.format(zong[kahao][2])))else:shengxia=zong[kahao][2]-zhuanprint('转账成功\n余额{}'.format(shengxia))path = r"C:\Users\ge\Desktop\test1\银行管理系统\个人数据/"+zong[kahao][1]+'.txt'path1 = r"C:\Users\ge\Desktop\test1\银行管理系统\个人数据/"+zong[zhang1][1]+'.txt'dt01 = datetime.today()bb=str(dt01.time())aa=str(dt01.date())yue = str(zong[kahao][2]-zhuan)yue1 = str(zong[zhang1][2]+zhuan)with open(path,'a',encoding='utf8') as f:f.write(aa+bb+'\n向卡号:'+ zhang1 +',姓名:'+zong[zhang1][1]+',转出:'+str(zhuan) +'元\n余额:'+ yue +'元\n\n\n') with open(path1,'a',encoding='utf8') as f:f.write(aa+bb+'\n账号:'+ kahao +',姓名:'+zong[kahao][1]+',向这个账号转入:'+str(zhuan)+'元\n余额'+yue1+'元\n\n\n')with open(r"C:\Users\ge\Desktop\test1\银行管理系统\客户数据明细.txt",'a',encoding='utf8') as f:f.write(aa+bb+'\n用户:'+kahao+'\n向卡号:'+ zhang1 +',姓名:'+zong[zhang1][1]+',转出:'+str(zhuan) +'元\n余额:'+ yue +'元\n\n\n') a=[]a.append(shengxia)a.append(kahao)a.append(zhang1)a.append(zhuan)return aelse:print('密码错误')                else:print('没这个卡号')return a

修改密码(输入账号密码,验证账号密码,输入修改密码,验证密码,记录修改密码动作):gai.py

#gai.py
from datetime import datetime
def gai(zong):kahao=input('请输入您的卡号:')b=[]for key in zong.keys():b.append(key)if kahao in b:mi=int(input('请输入您的密码:'))if mi ==zong[kahao][0]:while 1:mi1=int(input('请输入你要更改的密码:'))mi2=int(input('请再次输入你要更改的密码:') )if mi1==mi2:print('\n\n\n\n更改成功!')path = r"C:\Users\ge\Desktop\test1\银行管理系统\个人数据/"+zong[kahao][1]+'.txt'dt01 = datetime.today()bb=str(dt01.time())aa=str(dt01.date())yue = str(zong[kahao][2])with open(path,'a',encoding='utf8') as f:f.write(aa+bb+'\n进行了修改密码的操作'+'\n原密码为:'+str(mi)+'\n现密码为:'+str(mi1)+ '\n余额为:'+yue +'\n\n\n')                     with open(r"C:\Users\ge\Desktop\test1\银行管理系统\客户数据明细.txt",'a',encoding='utf8') as f:f.write(aa+bb+'\n用户:'+kahao+'\n进行了修改密码的操作'+'\n原密码为:'+str(mi)+'\n现密码为:'+str(mi1)+ '\n余额为:'+yue +'\n\n\n')                     return [kahao,mi1]break  else:print('\n\n\n\n两次输入不一致,请重新输入!')else:print('密码错误')                else:print('没这个卡号')return [kahao,mi1]

数据写出(写成dataframe的表格,详列账号、密码、身份证、手机号)生成客户数据.txt文件:alldata.py

#alldata.py
import pandas as pd
def alldata(zong):alldata=pd.DataFrame(zong,index=['密码','姓名','余额','身份证','手机号码'])alldata.to_csv(r"C:\Users\ge\Desktop\test1\银行管理系统\客户数据.txt",index=True,sep='\t',header=True)

数据读取(从客户数据.txt的dataframe的表格中读取账号、密码、身份证、手机号):shuju.py

#shuju.py
import pandas as pd
def shuju():#导入数据zong1=pd.read_table(r"C:\Users\ge\Desktop\test1\银行管理系统\客户数据.txt",sep='\t',engine='python')#获取卡号c=[]for i in zong1.columns:i = str(i)c.append(i)del c[0]#获取卡号总数geshu=len(zong1.loc[1])-1#把获取的数据储存为字典a,zong={},{}for g in range(geshu):a = {c[g]:[int(zong1.iloc[0,g+1]),zong1.iloc[1,g+1],int(zong1.iloc[2,g+1])]}zong.update(a)zong['222222'][0],zong['111111'][0],zong['222222'][2],zong['111111'][2]=2,1,9999,9999return zong

管理员系统:

里面包含七项功能

获取所有用户的卡号

获取所有客户姓名

查询今日此银行的流水

用户所有信息的总览(账号密码卡号余额手机号等)

恢复出厂设置(清空所有用户的数据)

系统上所记录的所有的用户的操作(开户、取款、转账等)

按余额区间来查询用户(剩下姓名查询和地区查询功能现在才发现并没添加上去)

完整管理员系统代码:amin.py

#admin.py
def guanli(zong,money):while 1:print('''------------------------------------------|   1.获取所有卡号\t  2.获取所有客户名   |                                        |   3.今日此子银行流水\t4.用户信息总览     |                                        |   5.恢复出厂设置\t  6.系统数据明细    |                                        |              7.查询||            输入‘q’退出                       |                                        ------------------------------------------''')choose1 = input('请输入你的选择:')if choose1 =='1':print(list(zong.keys()))if choose1 =='2':c=list(zong.keys())names=[]for c1 in c:name = zong[c1][1]names.append(name)print(names)if choose1 =='3':c=list(zong.keys())moneys1=[]for c1 in c:money1 = zong[c1][2]moneys1.append(money1)money1 = sum(moneys1)change = money1-moneyprint('今日入账金额:{}'.format(change))if choose1 =='4':print(zong)if choose1 =='5':choose2=input('您真的要将银行管理系统的所有数据恢复出厂设置吗?(注意:此举不可逆!!!)\n请输入“确认”或者“取消”:')while 1:if choose2 =='确认':zong= {'111111':['1','白晋阁',9999,111111111111111111,11111111111],'222222':['2','李铭焕',9999,111111111111111111,11111111111]}print('本系统所有数据已被还原自出厂数据!')breakelif choose2 =='取消':print('\n\n您已取消此操作。')breakelse:choose2=input('您的输入有误!!\n请输入“确认”或者“取消”:')breakif choose1 == 'q':print('您已退出银行管理系统!')breakif choose1 =='6':with open(r"C:\Users\ge\Desktop\test1\银行管理系统\客户数据明细.txt",'r',encoding='utf8') as f:print(f.read())if choose1 =='7':while 1:choose2 == input('请选择用户检索方式:\n1.金额区间查询\n2.姓名查询\n3.地区查询')if choose2 =='1':shangxian = int(input("请输入自定义查询金额上限:"))xiaxian = int(input('请输入自定义查询金额下限:'))c=list(zong.keys())kahaos1 =[]for c1 in c:if zong[c1][2]>=xiaxian and zong[c1][2]<=shangxian:kahaos1.append(c1)else:continueprint(kahaos1)else:print('您的输入有误,请重新输入:')breakreturn zong

以上就是银行管理系统额全部代码,需要注意的是以上文件写出写入的路径我都设置为了绝对路径(当时为了省事),使用的时候需要改一下文件写出导入路径。

【银行管理系统】部分截图:

客户数据明细

开户、存款

管理员系统

系统数据明细

个人数据

改进是改进了,不过改得匆忙,还有很大的改动空间。还有一个问题是这仅能在python环境下运行,过几天有空了的话我会将程序窗体化打包发布,这样就可以在没有python环境的电脑运行了,有兴趣的小伙伴可以关注走一波哦~

分享大三改进后的python写的【银行管理系统】,超详细 【内附源码】相关推荐

  1. 微信小程序UI自动化实践:python+minium+PO模式(超详细教程附源码供下载)

    文章目录 前言 一.minium介绍 二.安装环境 1. 安装minium doc 2. 安装minium 3. 启动小程序 三.准备知识 1. 启动 2. 配置 3. 命令行运行 4. 元素定位 5 ...

  2. 周末用Python写了5个小游戏(附源码)

    周末不能出去玩多无聊啊,那就来几个小游戏给大家助助兴,,可以自己复现玩玩,研究下里面的编程逻辑,对学习编程(特别是初学者)应该会有很大帮助.学会了别忘记教你的小伙伴,好的东西大家要学会分享. 由于文章 ...

  3. 用Python写了一个网易云音乐(附源码、视频教程)

    今天给大家分享一个实战项目,用Python整个网易云出来,实现音乐自由!文末附本项目源码以及视频教程! 这一次,咱们来玩点花活,整个网易云出来,实现音乐自由! 环境 Python3.6.8 PyCha ...

  4. python自动下载安装软件_30行Python代码从百度自动下载图片(内附源码和exe程序)...

    只需要30行代码就可以从百度自动下载图片 大家好,我是行哥,一个专门教小学生撸Python的编程老师(小学生都能学会的编程) 这里行哥想问大家三个问题 : - 你还在为批量下载表情包发愁吗? - 你还 ...

  5. 用Python写了一个上课点名系统(附源码)

    今天刷到了一个这样的短视频,我寻思我是不是也可以写一个类似的上课点名程序,想法经不起等待,说写就写~ 一.准备工作 1.Tkinter Tkinter 是 python 内置的 TK GUI 工具集. ...

  6. Python pygame 实现游戏 彩色 五子棋 详细注释 附源码 单机版

    项目简介 之前学python的时候 写了个游戏来练手 用的是 pygame 没有别的依赖 只用了一两百行的代码就实现了 整体来说功能并不算完整 项目背后的故事 这个项目是在大学的时候 偶然一个机遇交一 ...

  7. python k-means聚类算法 物流分配预测实战(超详细,附源码)

    数据集和地图可以点赞关注收藏后评论区留下QQ邮箱或者私信博主要 聚类是一类机器学习基础算法的总称. 聚类的核心计算过程是将数据对象集合按相似程度划分成多个类,划分得到的每个类称为聚类的簇 聚类不等于分 ...

  8. 【HTML | CSS】纯CSS居然能做出这种效果,一款宝藏网页分享(超详细讲解 | 附源码)

  9. python程序员专用壁纸_程序员炫技必备:用Python生成马赛克画!(文末附源码)...

    原标题:程序员炫技必备:用Python生成马赛克画!(文末附源码) 源 | Python与数据分析文 | 强哥 大家知道马赛克画是什么吗?不是动作片里的马赛克哦~~ 马赛克画是一张由小图拼成的大图,本 ...

  10. wallpaper代码_五行Python代码自动换你的电脑桌面壁纸(内附源码和exe)

    很多行友问行哥,Python能不能自动更换电脑壁纸呀,今天它来了 只需要一行代码,指定图片地址即可更换电脑桌面.加上壁纸文件夹路径,让你随机更换电脑桌面,带来不期而遇的新鲜.使用爬虫技术,自动下载壁纸 ...

最新文章

  1. PHP高并发的解决方案
  2. zabbix监控系统客户端安装
  3. ddr5内存上市时间_辣评烩:SK海力士首发DDR5内存:频率冲上5600MHz
  4. ajax定时器怎么写,js定时器怎么写?就是在特定时间执行某段程序
  5. VMware仅主机模式访问外网
  6. HashMap中的hash算法的几个思考
  7. 问题-关于 in []使用过程中报错 Constant expression violates subrange bounds
  8. JD-GUI(反编译工具)
  9. java项目ppt介绍_Java课设项目介绍及分析.ppt
  10. 我也来谈谈《我不是药神》这部电影
  11. 自媒体新手经常犯,自媒体平台发布作品没收益?分析了这5个原因
  12. RK3288功能介绍
  13. git lfs官网翻译
  14. 非监督神经网络的wake-sleep算法
  15. bzoj2448 挖油
  16. xcode/osx官方直接下载地址(离线下载)
  17. 农民伯伯2009年夜总结
  18. mysql表设计实例
  19. 海洋静力触探仪(CPT)一次故障记录
  20. IT公司都不喜欢招培训班出来的学生,那培训班的意义何在呢?

热门文章

  1. 专业卸载工具Your Uninstaller! Pro
  2. OpenCV 学习笔记-day9 OpenCV自带颜色表操作(colormap(色度图)ColormapTypes 枚举数据类型与applyColorMap()伪彩色函数)
  3. 网站后台爆破工具:WebCrack
  4. 计算机控制面板设置命令,进入开始---设置--控制面板--声音和音频设备命令
  5. 室内声场计算机模拟的声线跟踪法和虚声源法,计算机声场模拟软件ODEON及其应用lowbar;彭庆 - 范文中心...
  6. 批处理之for /f
  7. nProtect GameGuard 的破解
  8. 7z解压crc错误_7-Zip - 常见问题解答(FAQ)
  9. 组合数学之三 —— 生成函数
  10. php 盗链新浪图片_php实现博客,论坛图片防盗链的方法