100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 分享大三改进后的python写的【银行管理系统】 超详细 【内附源码】

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

时间:2022-03-17 04:42:25

相关推荐

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

目录

大二的时候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.pyfrom kaihu import kaihufrom qu import qufrom cun import cunfrom cha import chafrom zhuan import zhuanfrom gai import gaifrom alldata import alldatafrom shuju import shujufrom admin import guanlizong=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.pyfrom datetime import datetimedef 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 zidianimport randomdef 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.pyfrom datetime import datetimedef 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.pyfrom 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.pyfrom datetime import datetimedef 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.pyfrom datetime import datetimedef 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.pyfrom 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.pyimport pandas as pddef 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.pyimport pandas as pddef 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.pydef 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环境的电脑运行了,有兴趣的小伙伴可以关注走一波哦~

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。