Skip to content

Commit

Permalink
first commit
Browse files Browse the repository at this point in the history
  • Loading branch information
Cherry93 committed Dec 10, 2017
0 parents commit 40aeac7
Show file tree
Hide file tree
Showing 11 changed files with 395 additions and 0 deletions.
Empty file added __init__.py
Empty file.
Binary file added __pycache__/adminView.cpython-36.pyc
Binary file not shown.
Binary file added __pycache__/bankFunc.cpython-36.pyc
Binary file not shown.
Binary file added __pycache__/card.cpython-36.pyc
Binary file not shown.
Binary file added __pycache__/user.cpython-36.pyc
Binary file not shown.
38 changes: 38 additions & 0 deletions adminView.py
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 added alluser.txt
Binary file not shown.
108 changes: 108 additions & 0 deletions bangkSystem.py
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()
233 changes: 233 additions & 0 deletions bankFunc.py
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
9 changes: 9 additions & 0 deletions card.py
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 #此属性表示该卡是否锁定,默认是不锁定状态
Loading

0 comments on commit 40aeac7

Please sign in to comment.