溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

python實(shí)現(xiàn)彩票系統(tǒng)的方法

發(fā)布時(shí)間:2021-04-13 09:46:02 來(lái)源:億速云 閱讀:271 作者:小新 欄目:開(kāi)發(fā)技術(shù)

小編給大家分享一下python實(shí)現(xiàn)彩票系統(tǒng)的方法,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

功能:1、注冊(cè)  2、登錄  3、充錢   4、提現(xiàn)  5、下注  6、開(kāi)獎(jiǎng)  7、退出

簡(jiǎn)述:彩民需要用身份證號(hào)碼開(kāi)戶注冊(cè)一個(gè)彩票號(hào)碼,購(gòu)買彩票時(shí)需要先登錄,可以充值以及提現(xiàn)。購(gòu)買的彩票金額可以自己給定。此系統(tǒng)主要采用面向?qū)ο蟮姆椒?,信息存?chǔ)方式采用pickle模塊來(lái)進(jìn)行存儲(chǔ)。

系統(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("請(qǐng)選擇您的操作:")
  if operation == '1':
   islogin = lotterysystem.register()
  elif operation == '2':
   islogin = lotterysystem.login()
   print("登錄成功!")
  elif operation == '3':
   if islogin:
    lotterysystem.charge(islogin)
   else:
    print("請(qǐng)先登錄...")
  elif operation == '4':
   if islogin:
    lotterysystem.embody(islogin)
   else:
    print("請(qǐng)先登錄...")
  elif operation == '5':
   if islogin:
    buyLotteryNum, buymoney = lotterysystem.buylottery(islogin)
   else:
    print("請(qǐng)先登錄...")
  elif operation == '6':
   if islogin:
    lotterysystem.kaijiang(islogin, buymoney, buyLotteryNum)
   else:
    print("請(qǐng)先登錄...")
  elif operation == '7':
   if islogin:
    lotterysystem.quit(islogin)
    print("退出成功!")
    f = open(path, "wb")
    pickle.dump(uersdict, f) 
    f.close()
    return -1
   else:
    print("請(qǐng)先登錄...")
  else:
   print("操作有誤!系統(tǒng)自動(dòng)退出...")
   return -1
if __name__ == "__main__":
 main()

用pickle模塊讀取文件信息時(shí),文件必須有內(nèi)容,否則會(huì)報(bào)錯(cuò)。所以,第一次執(zhí)行該程序時(shí),必須先將信息寫入文件后才能讀。

系統(tǒng)界面函數(shù):

def display():
 print("""
 *******************************************
 *           *
 *           *
 *   歡迎來(lái)到木子李彩票系統(tǒng)   *
 *           *
 *           *
 *******************************************
 """)
 
def chooseview():
 print("""
 *******************************************
 *  1、注冊(cè)   2、登錄   *
 *  3、充錢   4、提現(xiàn)   *
 *  5、下注   6、開(kāi)獎(jiǎng)   *
 *           *
 *    7、退出     *
 *******************************************
  """)

系統(tǒng)功能函數(shù):實(shí)現(xiàn)注冊(cè)等功能

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("請(qǐng)輸入您的名字:").strip()
  if not check.checkName(name):
   return -1
  idCard = input("請(qǐng)輸入您的身份證號(hào)碼:").strip()
  if not check.checkIdentity(idCard):
   return -1
  phoneNum = input("請(qǐng)輸入您的電話號(hào)碼:").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("請(qǐng)輸入預(yù)存款金額:"))
  if not check.checkPrestoredMoney(prestoredMoney):
   return -1
  onePassword = input("請(qǐng)?jiān)O(shè)置您的密碼:").strip()
  for x in range(2):
   if not check.checkPassword(onePassword):
    print("密碼輸入不正確!")
   else:
    break
  else:
   print("密碼輸入不正確!開(kāi)戶失敗...")
   return -1
  card = Card(cardNum, onePassword, prestoredMoney)
  uers = Uers(name, idCard, phoneNum, card)
  self.userDict[cardNum] = uers
  print("恭喜您!注冊(cè)成功,請(qǐng)牢記您的卡號(hào):", cardNum)
  return cardNum
 
 def login(self):
  cardNum = input("請(qǐng)輸入您的卡號(hào):").strip()
  password = input("請(qǐng)輸入您的密碼:").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("請(qǐng)輸入充值金額:"))
  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("請(qǐng)輸入提現(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('請(qǐng)輸入所購(gòu)買的彩票的序列號(hào)(6位數(shù)字,只含0和1):')
  while True:
   for x in lotteryNum:
    if len(lotteryNum) == 6:
     pass
    else:
     lotteryNum = input('輸入位數(shù)有誤!請(qǐng)重新輸入...:')
    if x == '0' or x == '1':
     pass
    else:
     lotteryNum = input('輸入數(shù)字有誤!請(qǐng)重新輸入...:')
   break
  buymoney = int(input("請(qǐng)輸入購(gòu)買金額:"))
  if buymoney < self.userDict.get(cardNum).card.cardMoney:
   pass
  else:
   print("余額不足!購(gòu)買失敗...")
   return -1
  self.userDict.get(cardNum).card.cardMoney -= buymoney
  print("購(gòu)買成功!購(gòu)買號(hào)碼為:",lotteryNum)
  print('購(gòu)買彩票需要 %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('開(kāi)獎(jiǎng)號(hào)碼為:', lotteryStr)
  lotteryNum = input("werwe")
  if lotteryNum == lotteryStr:
   self.userDict.get(cardNum).card.cardMoney += buymoney * 200
   print("恭喜您中了 %d 元大獎(jiǎng)!!!您的彩票卡余額還有 %d 元" % (buymoney * 200, self.userDict.get(cardNum).card.cardMoney))
  else:
   print("很遺憾沒(méi)中獎(jiǎng),繼續(xù)努力!")
 
 def quit(self, cardNum):
  print('您的余額還有 %d 元' % self.userDict.get(cardNum).card.cardMoney)

系統(tǒng)驗(yàn)證函數(shù):主要用于驗(yàn)證身份證、手機(jī)號(hào)、卡號(hào)等是否正確

import random
def checkName(user):
 if len(user) != 1:
  print("用戶名長(zhǎng)度不合法!")
  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
# 檢查身份證號(hào)碼是否合法
def checkIdentity(identity):
 if len(identity) != 1:
  print("身份證長(zhǎng)度不合法!")
  return False
 for x in identity:
  if x >= '0' and x <= '9':
   pass
  else:
   print("身份證輸入不合法!")
   return False
 return True
# 檢查電話號(hào)碼是否合法
def checkPhone(identity):
 if len(identity) != 1:
  print("電話號(hào)碼長(zhǎng)度不合法!")
  return False
 for x in identity:
  if x >= '0' and x <= '9':
   pass
  else:
   print("電話號(hào)碼輸入不合法!")
   return False
 return True
# 檢查預(yù)存款金額是否合法
def checkPrestoredMoney(money):
 if money > 0:
  return True
 else:
  print("預(yù)存款金額輸入有誤!")
  return False
# 檢查密碼是否正確
def checkPassword(password):
 AgainPassword = input("請(qǐng)確認(rèn)您的密碼:").strip()
 if password == AgainPassword:
  return True
 else:
  return False
# 產(chǎn)生一個(gè)卡號(hào)
def getlotteryCardNum():
 bankCardNum = ""
 for i in range(6):
  bankCardNum += chr(random.randrange(10) + 48)
 return bankCardNum
 
if __name__ == "__main__":
 pass

用戶信息:主要用于存儲(chǔ)用戶的信息。

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)

卡信息:主要用于存儲(chǔ)卡的信息

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)

看完了這篇文章,相信你對(duì)“python實(shí)現(xiàn)彩票系統(tǒng)的方法”有了一定的了解,如果想了解更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI