-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
0 parents
commit 40aeac7
Showing
11 changed files
with
395 additions
and
0 deletions.
There are no files selected for viewing
Empty file.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
|
||
#设计欢迎的界面 | ||
import time | ||
def welcomView(): | ||
print("******************************************") | ||
print("******************************************") | ||
print("***** *****") | ||
print("***** 欢迎进入系统 *****") | ||
print("******************************************") | ||
print("******************************************") | ||
time.sleep(2) | ||
def loginView(): | ||
#模拟帐号和密码 | ||
amdinUserName = 1 | ||
adminPasswd = 1 | ||
username = eval(input("请输入你的帐号:")) | ||
passwd = int(input("请输入密码:")) | ||
#验证帐号和密码 | ||
if not username == amdinUserName: #账户不正确 | ||
print("您输入的帐号不存在!") | ||
loginView() | ||
return -1 #用-1表示输入的结果不对 | ||
if not passwd ==adminPasswd: | ||
print("您输入的密码不存在") | ||
loginView() | ||
return -1 | ||
print("恭喜您登录成功!") | ||
return 1 | ||
#显示主功能页面 | ||
def funcView(): | ||
print("******************************************") | ||
print("***** 开户(1) 查询(2) *****") | ||
print("***** 存款(3) 取款(4) *****") | ||
print("***** 转账(5) 改密(6) *****") | ||
print("***** 锁定(7) 解锁(8) *****") | ||
print("***** 补卡(9) 注销(0) *****") | ||
print("***** 退出(q) *****") | ||
|
Binary file not shown.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,108 @@ | ||
''' | ||
类: | ||
类名:程序界面类 | ||
属性: | ||
方法:显示欢迎页面,显示登陆页面登陆,显示主程序界面 | ||
类名:user | ||
属性:名字,身份证号,手机号 | ||
方法: | ||
类名:卡card | ||
属性:卡号,密码,金额 | ||
方法: | ||
类名:bankFunc | ||
属性: | ||
方法:开户。查询,存款。取款,转账,改密,锁定,解锁,补卡,注销,退出 | ||
类名: | ||
属性: | ||
方法 | ||
''' | ||
|
||
#mian 函数 | ||
import adminView | ||
from bankFunc import BankFunc | ||
import time | ||
import pickle | ||
import os | ||
def main(): | ||
adminView.welcomView() | ||
if adminView.loginView() == -1: #表示登录失败 | ||
# 作业:重新登录,一般出错三次,程序直接退出 | ||
pass | ||
# 登录成功,则跳到主页面 | ||
# 显示主功能页面 | ||
path = os.path.join(os.getcwd(), "alluser.txt") | ||
#判断该文件是否存在 | ||
if not os.path.exists(path): | ||
#不存在用户信息时,传入一个空的字典 | ||
bank = BankFunc({}) | ||
else:#存在 | ||
rf = open(path,"rb") | ||
#读取alluser | ||
alluser = pickle.load(rf) | ||
#从文件中获取所有用户有信息 | ||
#pickle.load() | ||
|
||
|
||
|
||
#创建银行对象 | ||
bank = BankFunc(alluser) | ||
while True: | ||
adminView.funcView() | ||
#bank = BankFunc() | ||
funNumber= input("请输入您要选择的功能:") | ||
if funNumber == "1": #开户 | ||
bank.createUser() | ||
elif funNumber =="2": #查询 | ||
bank.queryMoney() | ||
elif funNumber =="3": #存款 | ||
bank.saveMoney() | ||
elif funNumber =="4": #取款 | ||
bank.getMoney() | ||
elif funNumber =="5": #转账 | ||
bank.translateMoney() | ||
elif funNumber =="6": #改密 | ||
bank.ditPasswd() | ||
elif funNumber =="7": #锁定 | ||
bank.lockCard() | ||
elif funNumber =="8": #解锁 | ||
bank.unlockCard() | ||
elif funNumber =="9": #补卡 | ||
bank.fillCard() | ||
elif funNumber =="0": #注销 | ||
bank.killCard() | ||
elif funNumber =="q": #退出 | ||
# 验证 | ||
#将所有的用户信息存储到文件中去 | ||
|
||
#打开一个文件 | ||
#获取路径 | ||
|
||
wf = open(path,"wb") | ||
pickle.dump(bank.allUser,wf) | ||
|
||
|
||
print("您正在退出系统......") | ||
|
||
|
||
|
||
time.sleep(1.5) | ||
print("退出成功") | ||
break | ||
else: | ||
print("您输入的不正确:") | ||
|
||
def test(): | ||
bank = BankFunc() | ||
print(bank.createCardNumber()) | ||
if __name__ == '__main__': | ||
main() | ||
#test() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,233 @@ | ||
import random | ||
from card import Card | ||
from user import User | ||
import pickle | ||
|
||
|
||
class BankFunc(object): | ||
# 方法:开户。查询,存款。取款,转账,改密,锁定,解锁,补卡,注销,退出 | ||
# 开户 | ||
|
||
# 需要一个字典存储该银行系统的账户信息,卡号作为key,---user作为value | ||
def __init__(self, alluser): | ||
self.allUser = alluser | ||
# self.allUser ={} | ||
|
||
def createUser(self): | ||
# 输入名字 | ||
name = input("请输入您的名字:") | ||
# 输入身份证号 | ||
idNumber = input("请输入您的身份证号:") | ||
# 输入用户手机号 | ||
phone = input("请输入您的手机号:") | ||
# 验证,数据格式的合法性,数据是否正确(身份证号是否合法,手机号是否是个人的等) | ||
|
||
# 系统随机生产一个卡号(唯一的,不能与系统中其他卡号重复) | ||
cardNumber = self.createCardNumber() | ||
|
||
# 设置密码(新密码需要输入两次(不一样需要重新设置)) | ||
resPasswd = self.setPasswd() | ||
if resPasswd == -1: # 如果设置密码时返回的是 -1 ,表示是个恶意的行为,则终止开户 | ||
return -1 | ||
|
||
# 设置余额 | ||
money = input("请输入您的金额:") | ||
# 判断money需要大于零 | ||
# 创建一个card对象 | ||
|
||
|
||
card = Card(cardNumber, resPasswd, money) | ||
# 创建一个user对象 | ||
user = User(name, idNumber, phone, card) | ||
|
||
# 把用户存到allUser中,卡号作为key,user作为value | ||
self.allUser[cardNumber] = user | ||
# 测试 | ||
print(self.allUser) | ||
|
||
# 设置密码 | ||
def setPasswd(self): | ||
for i in range(3): | ||
passwd1 = input("请输入您的新密码:") | ||
passwd2 = input("请确认您的密码:") | ||
if passwd1 == passwd2: # 设置密码成功 | ||
return passwd1 | ||
# 此时三次设置都失败 | ||
return -1 | ||
|
||
# 生产一个随机卡号 | ||
def createCardNumber(self): | ||
# 666 666 0-9 | ||
|
||
while True: | ||
cardNumber = "" | ||
for i in range(0, 6): | ||
cardNumber += str(random.randrange(0, 10)) | ||
# ·· 检查该卡号已经存在 | ||
if not cardNumber in self.allUser: # 卡号是否不存在 | ||
return cardNumber | ||
# print() | ||
|
||
# 查询 | ||
|
||
def queryMoney(self): | ||
|
||
# 查询余额 | ||
# 请输入您的卡号 | ||
cardNumber = input("请输入您要查询的卡号:") | ||
# 在alluser中查到对应的卡 | ||
user = self.allUser.get(cardNumber) | ||
if user == None: | ||
# | ||
# 作业:可以输入三次卡号,超过三次,推出 | ||
print("您输入的卡号不存在") | ||
return -1 | ||
|
||
# 判断该卡是否已锁定 | ||
if user.card.lock == True: | ||
print("此卡已经被锁定,无法查询") | ||
|
||
return -1 | ||
|
||
# 输入密码(输入错误,则可以重新输入三次,就锁定) | ||
passwd = input("请输入您的密码") | ||
res = self.checkPasswd(passwd, user) | ||
if res == -1: # 多次输入的密码多次错误,锁定该卡,并退出该功能 | ||
# 锁起来 | ||
user.card.lock = True | ||
|
||
return -1 | ||
|
||
# 查询数据 | ||
print("cardNumber:%s,money:%s" % (cardNumber, int(user.card.money)+int(user.card.money1)-int(user.card.money2))) | ||
|
||
# 找到user | ||
# 找到卡 | ||
# pass | ||
|
||
# 用来检查密码是否正确 | ||
def checkPasswd(self, passwd, user): | ||
for i in range(3): | ||
if passwd == user.card.passwd: # 表示密码匹配成功 | ||
return 1 | ||
# 表示最后一次没有匹配成功 | ||
if i == 2: | ||
return -1 | ||
# 匹配失败 | ||
passwd = input("您的密码错误,请重新输入:") | ||
|
||
|
||
|
||
|
||
|
||
# 存款 | ||
|
||
|
||
def saveMoney(self): | ||
|
||
|
||
|
||
# 请输入您要存入的卡号 | ||
cardNumber = input("请输入您要存入的卡号:") | ||
|
||
user = self.allUser.get(cardNumber) | ||
if user == None: | ||
# | ||
# 作业:可以输入三次卡号,超过三次,推出 | ||
print("您输入的卡号不存在") | ||
return -1 | ||
|
||
# 判断该卡是否已锁定 | ||
if user.card.lock == True: | ||
print("此卡已经被锁定,无法查询") | ||
|
||
return -1 | ||
# 输入密码(输入错误,则可以重新输入三次,就锁定) | ||
passwd = input("请输入您的密码") | ||
res = self.checkPasswd(passwd, user) | ||
if res == -1: # 多次输入的密码多次错误,锁定该卡,并退出该功能 | ||
# 锁起来 | ||
user.card.lock = True | ||
|
||
return -1 | ||
# 请输入您要存入的金额 | ||
user.card.money1 = input("请输入您要存入的金额:") | ||
print("您账户余额为:%s"%(int(user.card.money1)+int(user.card.money))) | ||
# 需要把存的金额返到总金额里面 | ||
|
||
# 取款 | ||
def getMoney(self): | ||
cardNumber = input("请输入您要存入的卡号:") | ||
|
||
user = self.allUser.get(cardNumber) | ||
if user == None: | ||
# | ||
# 作业:可以输入三次卡号,超过三次,推出 | ||
print("您输入的卡号不存在") | ||
return -1 | ||
|
||
# 判断该卡是否已锁定 | ||
if user.card.lock == True: | ||
print("此卡已经被锁定,无法取款") | ||
|
||
return -1 | ||
# 输入密码(输入错误,则可以重新输入三次,就锁定) | ||
passwd = input("请输入您的密码") | ||
res = self.checkPasswd(passwd, user) | ||
if res == -1: # 多次输入的密码多次错误,锁定该卡,并退出该功能 | ||
# 锁起来 | ||
user.card.lock = True | ||
|
||
return -1 | ||
user.card.money2 = input("请输入您要取出的金额:") | ||
print("您账户余额为:%s" % (int(user.card.money1) + int(user.card.money)-int(user.card.money2))) | ||
|
||
|
||
# 转账 | ||
def translateMoney(self): | ||
cardNumber = input("请输入您要存入的卡号:") | ||
|
||
user = self.allUser.get(cardNumber) | ||
if user == None: | ||
# | ||
# 作业:可以输入三次卡号,超过三次,推出 | ||
print("您输入的卡号不存在") | ||
return -1 | ||
|
||
# 判断该卡是否已锁定 | ||
if user.card.lock == True: | ||
print("此卡已经被锁定,无法取款") | ||
|
||
return -1 | ||
# 输入密码(输入错误,则可以重新输入三次,就锁定) | ||
passwd = input("请输入您的密码") | ||
res = self.checkPasswd(passwd, user) | ||
if res == -1: # 多次输入的密码多次错误,锁定该卡,并退出该功能 | ||
# 锁起来 | ||
user.card.lock = True | ||
|
||
return -1 | ||
cardNumber2 = input("请输入您要转账的卡号:") | ||
if cardNumber2 == None: | ||
#作业,可以输入三次卡号,超过三次,退出 | ||
return -1 | ||
|
||
# 改密 | ||
def editPasswd(self): | ||
pass | ||
|
||
# 锁卡 | ||
def lockCard(self): | ||
pass | ||
|
||
# 解锁 | ||
def unlockCard(self): | ||
pass | ||
|
||
# 补卡 | ||
def fillCard(self): | ||
pass | ||
|
||
# 注销 | ||
def killCard(self): | ||
pass |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
# 银行卡的类 | ||
class Card(object): | ||
def __init__(self,cardNumbe,passwd,money=0,money1=0,money2=0): | ||
self.cardNumber = cardNumbe #银行卡卡号 | ||
self.passwd = passwd #银行卡密码 | ||
self.money = money #银行余额 | ||
self.money1 = money1 #存入的钱 | ||
self.money2 = money2#取出的钱 | ||
self.lock = False #此属性表示该卡是否锁定,默认是不锁定状态 |
Oops, something went wrong.