python实现彩票系统

作者:YiHong_Li 时间:2021-04-12 21:16:42 

本文为大家分享了python实现彩票系统的具体代码,供大家参考,具体内容如下

功能:1、注册  2、登录  3、充钱   4、提现  5、 *   6、开奖  7、退出

简述:彩民需要用身份证号码开户注册一个彩票号码,购买彩票时需要先登录,可以充值以及提现。购买的彩票金额可以自己给定。此系统主要采用面向对象的方法,信息存储方式采用pickle模块来进行存储。

系统主函数:


from lotterysystem import lotterySystem
import displayview
import os
import pickle
import time

def main():
displayview.display()
path = r"H:\myPythonFile\彩票系统\彩票系统\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("操作有误!系统自动退出...")
 return -1
if __name__ == "__main__":
main()

用pickle模块读取文件信息时,文件必须有内容,否则会报错。所以,第一次执行该程序时,必须先将信息写入文件后才能读。

系统界面函数:


def display():
print("""
*******************************************
*      *
*      *
*  欢迎来到木子李彩票系统  *
*      *
*      *
*******************************************
""")

def chooseview():
print("""
*******************************************
* 1、注册  2、登录  *
* 3、充钱  4、提现  *
* 5、 *  6、开奖  *
*      *
*  7、退出   *
*******************************************
""")

系统功能函数:实现注册等功能


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("请输入提现金额:"))
if money < self.userDict.get(cardNum).card.cardMoney:
 pass
else:
 print("余额不足!提现失败...")
 return -1
self.userDict.get(cardNum).card.cardMoney -= money
print("提现成功,余额: %d 元" % self.userDict.get(cardNum).card.cardMoney)

def buylottery(self, cardNum):
lotteryNum = input('请输入所购买的彩票的序列号(6位数字,只含0和1):')
while True:
 for x in lotteryNum:
 if len(lotteryNum) == 6:
  pass
 else:
  lotteryNum = input('输入位数有误!请重新输入...:')
 if x == '0' or x == '1':
  pass
 else:
  lotteryNum = input('输入数字有误!请重新输入...:')
 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("很遗憾没中奖,继续努力!")

def quit(self, cardNum):
print('您的余额还有 %d 元' % self.userDict.get(cardNum).card.cardMoney)

系统验证函数:主要用于验证身份证、手机号、卡号等是否正确


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
# 产生一个卡号
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)

来源:https://blog.csdn.net/YiHong_Li/article/details/81407158

标签:python,彩票,系统
0
投稿

猜你喜欢

  • php中instanceof 与 is_a()区别分析

    2023-11-19 06:04:56
  • asp伪继承初探_实例代码

    2011-04-19 10:32:00
  • 可以在线创建文件夹吗?

    2009-11-01 18:07:00
  • 该死的IE,走好

    2009-01-15 12:26:00
  • 一空间多域名绑定不同目录方法

    2009-03-09 18:32:00
  • 举例讲解Python中装饰器的用法

    2022-12-26 17:02:23
  • MySQL表设计优化与索引 (九)

    2010-10-25 20:16:00
  • 编写自定义的Django模板加载器的简单示例

    2022-07-02 20:06:44
  • python使用隐式循环快速求和的实现示例

    2022-10-09 13:04:05
  • Laravel框架文件上传功能实现方法示例

    2023-11-15 19:16:31
  • python 读写、创建 文件的方法(必看)

    2023-08-07 11:37:40
  • 使用SQL Server 2008管理非结构化数据

    2009-01-08 15:28:00
  • php处理json格式数据经典案例总结

    2023-11-21 13:54:42
  • Python实现的远程文件自动打包并下载功能示例

    2021-03-25 04:45:51
  • Python中的自定义函数学习笔记

    2023-11-21 15:56:56
  • Python 如何让特征值滞后一行

    2021-06-06 06:30:46
  • Django重装mysql后启动报错:No module named ‘MySQLdb’的解决方法

    2023-02-01 07:31:31
  • 在Golang代码中如何自动生成版本号的方法示例

    2023-10-14 23:25:36
  • Python BeautifulReport可视化报告代码实例

    2023-11-12 14:53:13
  • python sklearn包——混淆矩阵、分类报告等自动生成方式

    2022-05-29 12:19:27
  • asp之家 网络编程 m.aspxhome.com