python實現(xiàn)彩票系統(tǒng)
本文為大家分享了python實現(xiàn)彩票系統(tǒng)的具體代碼,供大家參考,具體內(nèi)容如下
功能:1、注冊 2、登錄 3、充錢 4、提現(xiàn) 5、下注 6、開獎 7、退出
簡述:彩民需要用身份證號碼開戶注冊一個彩票號碼,購買彩票時需要先登錄,可以充值以及提現(xiàn)。購買的彩票金額可以自己給定。此系統(tǒng)主要采用面向?qū)ο蟮姆椒?,信息存儲方式采用pickle模塊來進行存儲。
系統(tǒng)主函數(shù):
from lotterysystem import lotterySystem
import displayview
import os
import pickle
import time
def main():
displayview.display()
path = r"H:\myPythonFile\彩票系統(tǒng)\彩票系統(tǒng)\userInformation.txt"
f = open(path, "rb")
# uersdict = {}
uersdict = pickle.load(f)
# 打印出所有用戶的信息
for x in uersdict:
print("name:%s idCard:%s phone:%s cardNum:%s password:%s money:%d" %
(uersdict.get(x).name, uersdict.get(x).idCard, uersdict.get(x).phoneNum,
uersdict.get(x).card.cardNum, uersdict.get(x).card.password, uersdict.get(x).card.cardMoney))
f.close()
lotterysystem = lotterySystem(uersdict)
islogin = None
while True:
time.sleep(3)
displayview.chooseview()
operation = input("請選擇您的操作:")
if operation == '1':
islogin = lotterysystem.register()
elif operation == '2':
islogin = lotterysystem.login()
print("登錄成功!")
elif operation == '3':
if islogin:
lotterysystem.charge(islogin)
else:
print("請先登錄...")
elif operation == '4':
if islogin:
lotterysystem.embody(islogin)
else:
print("請先登錄...")
elif operation == '5':
if islogin:
buyLotteryNum, buymoney = lotterysystem.buylottery(islogin)
else:
print("請先登錄...")
elif operation == '6':
if islogin:
lotterysystem.kaijiang(islogin, buymoney, buyLotteryNum)
else:
print("請先登錄...")
elif operation == '7':
if islogin:
lotterysystem.quit(islogin)
print("退出成功!")
f = open(path, "wb")
pickle.dump(uersdict, f)
f.close()
return -1
else:
print("請先登錄...")
else:
print("操作有誤!系統(tǒng)自動退出...")
return -1
if __name__ == "__main__":
main()
用pickle模塊讀取文件信息時,文件必須有內(nèi)容,否則會報錯。所以,第一次執(zhí)行該程序時,必須先將信息寫入文件后才能讀。
系統(tǒng)界面函數(shù):
def display():
print("""
*******************************************
* *
* *
* 歡迎來到木子李彩票系統(tǒng) *
* *
* *
*******************************************
""")
def chooseview():
print("""
*******************************************
* 1、注冊 2、登錄 *
* 3、充錢 4、提現(xiàn) *
* 5、下注 6、開獎 *
* *
* 7、退出 *
*******************************************
""")
系統(tǒng)功能函數(shù):實現(xiàn)注冊等功能
from uers import Uers
from card import Card
import check
import random
class lotterySystem():
def __init__(self, userDict):
self.userDict = userDict
def register(self):
name = input("請輸入您的名字:").strip()
if not check.checkName(name):
return -1
idCard = input("請輸入您的身份證號碼:").strip()
if not check.checkIdentity(idCard):
return -1
phoneNum = input("請輸入您的電話號碼:").strip()
if not check.checkPhone(phoneNum):
return -1
cardNum = check.getlotteryCardNum()
while True:
if self.userDict.get(cardNum) != None:
card = check.getBankCardNum()
else:
break
prestoredMoney = int(input("請輸入預存款金額:"))
if not check.checkPrestoredMoney(prestoredMoney):
return -1
onePassword = input("請設置您的密碼:").strip()
for x in range(2):
if not check.checkPassword(onePassword):
print("密碼輸入不正確!")
else:
break
else:
print("密碼輸入不正確!開戶失敗...")
return -1
card = Card(cardNum, onePassword, prestoredMoney)
uers = Uers(name, idCard, phoneNum, card)
self.userDict[cardNum] = uers
print("恭喜您!注冊成功,請牢記您的卡號:", cardNum)
return cardNum
def login(self):
cardNum = input("請輸入您的卡號:").strip()
password = input("請輸入您的密碼:").strip()
uers = self.userDict.get(cardNum)
if uers == None or uers.card.password != password:
print("該卡不存在或密碼不正確!登錄失敗...")
return False
return cardNum
def charge(self, cardNum):
money = int(input("請輸入充值金額:"))
if money > 0:
pass
else:
print("充值失敗...")
return -1
self.userDict.get(cardNum).card.cardMoney += money
print("充值成功,余額 %d 元:" % self.userDict.get(cardNum).card.cardMoney)
def embody(self, cardNum):
print("余額: %d 元" % self.userDict.get(cardNum).card.cardMoney)
money = int(input("請輸入提現(xiàn)金額:"))
if money < self.userDict.get(cardNum).card.cardMoney:
pass
else:
print("余額不足!提現(xiàn)失敗...")
return -1
self.userDict.get(cardNum).card.cardMoney -= money
print("提現(xiàn)成功,余額: %d 元" % self.userDict.get(cardNum).card.cardMoney)
def buylottery(self, cardNum):
lotteryNum = input('請輸入所購買的彩票的序列號(6位數(shù)字,只含0和1):')
while True:
for x in lotteryNum:
if len(lotteryNum) == 6:
pass
else:
lotteryNum = input('輸入位數(shù)有誤!請重新輸入...:')
if x == '0' or x == '1':
pass
else:
lotteryNum = input('輸入數(shù)字有誤!請重新輸入...:')
break
buymoney = int(input("請輸入購買金額:"))
if buymoney < self.userDict.get(cardNum).card.cardMoney:
pass
else:
print("余額不足!購買失敗...")
return -1
self.userDict.get(cardNum).card.cardMoney -= buymoney
print("購買成功!購買號碼為:",lotteryNum)
print('購買彩票需要 %d 元!您的余額還有 %d 元'%(buymoney, self.userDict.get(cardNum).card.cardMoney))
return lotteryNum, buymoney
def kaijiang(self, cardNum, buymoney, lotteryNum):
lotteryStr = ''
for x in range(6):
lotteryStr += random.choice(['0', '1'])
print('開獎號碼為:', lotteryStr)
lotteryNum = input("werwe")
if lotteryNum == lotteryStr:
self.userDict.get(cardNum).card.cardMoney += buymoney * 200
print("恭喜您中了 %d 元大獎!!!您的彩票卡余額還有 %d 元" % (buymoney * 200, self.userDict.get(cardNum).card.cardMoney))
else:
print("很遺憾沒中獎,繼續(xù)努力!")
def quit(self, cardNum):
print('您的余額還有 %d 元' % self.userDict.get(cardNum).card.cardMoney)
系統(tǒng)驗證函數(shù):主要用于驗證身份證、手機號、卡號等是否正確
import random
def checkName(user):
if len(user) != 1:
print("用戶名長度不合法!")
return False
for x in user:
if x >= '0' and x <= '9' or x >= 'a' and x <= 'z' or x >= 'A' and x <= 'Z' or x == '_':
pass
else:
print("用戶名輸入不合法!")
return False
return True
# 檢查身份證號碼是否合法
def checkIdentity(identity):
if len(identity) != 1:
print("身份證長度不合法!")
return False
for x in identity:
if x >= '0' and x <= '9':
pass
else:
print("身份證輸入不合法!")
return False
return True
# 檢查電話號碼是否合法
def checkPhone(identity):
if len(identity) != 1:
print("電話號碼長度不合法!")
return False
for x in identity:
if x >= '0' and x <= '9':
pass
else:
print("電話號碼輸入不合法!")
return False
return True
# 檢查預存款金額是否合法
def checkPrestoredMoney(money):
if money > 0:
return True
else:
print("預存款金額輸入有誤!")
return False
# 檢查密碼是否正確
def checkPassword(password):
AgainPassword = input("請確認您的密碼:").strip()
if password == AgainPassword:
return True
else:
return False
# 產(chǎn)生一個卡號
def getlotteryCardNum():
bankCardNum = ""
for i in range(6):
bankCardNum += chr(random.randrange(10) + 48)
return bankCardNum
if __name__ == "__main__":
pass
用戶信息:主要用于存儲用戶的信息。
class Uers(): def __init__(self, name, idCard, phoneNum, card): self.name = name self.idCard = idCard self.phoneNum = phoneNum self.card = card def __str__(self): return "%s-%s-%s-%s" % (self.name, self.idCard, self.phoneNum, self.card)
卡信息:主要用于存儲卡的信息
class Card(): def __init__(self, cardNum, password, cardMoney): self.cardNum = cardNum self.password = password self.cardMoney = cardMoney def __str__(self): return "%s-%s-%d" % (self.cardNum, self.password, self.cardMoney)
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
Django實現(xiàn)auth模塊下的登錄注冊與注銷功能
這篇文章主要介紹了Django實現(xiàn)auth模塊下的登錄注冊與注銷功能,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2019-10-10
PyTorch中的方法torch.randperm()示例介紹
在 PyTorch 中,torch.randperm(n) 函數(shù)用于生成一個從 0 到 n-1 的隨機排列的整數(shù)序列,這篇文章主要介紹了PyTorch中的方法torch.randperm()介紹,需要的朋友可以參考下2024-05-05
Python基礎常用內(nèi)建函數(shù)圖文示例解析
這篇文章主要為大家Python常用內(nèi)建函數(shù),文中通過圖例詳細的給大家作出了講解分析,有需要的朋友可以借鑒參考下,希望可以有所幫助2021-09-09

