python实现彩票系统


Posted in Python onJune 28, 2020

本文为大家分享了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)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python黑魔法之参数传递
Feb 12 Python
python去除文件中空格、Tab及回车的方法
Apr 12 Python
python 线程的暂停, 恢复, 退出详解及实例
Dec 06 Python
Python实现KNN(K-近邻)算法的示例代码
Mar 05 Python
python点击鼠标获取坐标(Graphics)
Aug 10 Python
PyTorch和Keras计算模型参数的例子
Jan 02 Python
详细分析Python可变对象和不可变对象
Jul 09 Python
Django-Scrapy生成后端json接口的方法示例
Oct 06 Python
Python爬虫+Tkinter制作一个翻译软件的示例
Feb 20 Python
opencv实现图像几何变换
Mar 24 Python
写好Python代码的几条重要技巧
May 21 Python
请求模块urllib之PYTHON爬虫的基本使用
Apr 08 Python
django框架自定义用户表操作示例
Aug 07 #Python
Python实现基于POS算法的区块链
Aug 07 #Python
tensorflow学习教程之文本分类详析
Aug 07 #Python
Django添加feeds功能的示例
Aug 07 #Python
Python爬虫实现抓取京东店铺信息及下载图片功能示例
Aug 07 #Python
Django添加favicon.ico图标的示例代码
Aug 07 #Python
Python实现的json文件读取及中文乱码显示问题解决方法
Aug 06 #Python
You might like
PHP加速 eAccelerator配置和使用指南
2009/06/05 PHP
微信自定义分享php代码分析
2016/11/24 PHP
php利用ob_start()清除输出和选择性输出的方法
2018/01/18 PHP
PHP递归遍历文件夹去除注释并压缩php源代码的方法示例
2018/05/23 PHP
javascript检测对象中是否存在某个属性判断方法小结
2013/05/19 Javascript
IE8的JavaScript点击事件(onclick)不兼容的解决方法
2013/11/22 Javascript
jQuery中:submit选择器用法实例
2015/01/03 Javascript
jQuery学习笔记之创建DOM元素
2015/01/19 Javascript
javascript实现俄罗斯方块游戏的思路和方法
2015/04/27 Javascript
H5移动端图片压缩上传开发流程
2016/11/09 Javascript
canvas实现弧形可拖动进度条效果
2017/05/11 Javascript
JavaScript实现body内任意节点的自定义属性功能示例
2017/09/18 Javascript
JavaScript模拟实现封装的三种方式及写法区别
2017/10/27 Javascript
详解TypeScript+Vue 插件 vue-class-component的使用总结
2019/02/18 Javascript
30分钟精通React今年最劲爆的新特性——React Hooks
2019/03/11 Javascript
TypeScript中的方法重载详解
2019/04/12 Javascript
javascript-hashchange事件和历史状态管理实例分析
2020/04/18 Javascript
Vue ElementUI实现:限制输入框只能输入正整数的问题
2020/07/31 Javascript
前端vue+elementUI如何实现记住密码功能
2020/09/20 Javascript
Python删除windows垃圾文件的方法
2015/07/14 Python
Python 探针的实现原理
2016/04/23 Python
python3中bytes和string之间的互相转换
2017/02/09 Python
python wxpython 实现界面跳转功能
2019/12/17 Python
基于Python爬虫采集天气网实时信息
2020/06/05 Python
详解Pymongo常用查询方法总结
2021/01/29 Python
用css3制作纸张效果(外翻卷角)
2013/02/01 HTML / CSS
美国杂志订阅折扣与优惠网站:Magazines.com
2016/08/31 全球购物
美国学校校服,儿童和婴儿服装:Cookie’s Kids
2016/10/14 全球购物
车辆工程专业求职信
2014/06/14 职场文书
小学校园文化建设汇报材料
2014/08/19 职场文书
农行心得体会
2014/09/02 职场文书
立志成才演讲稿
2014/09/04 职场文书
机关党员四风问题个人整改措施
2014/10/26 职场文书
领导干部学习十八届五中全会精神心得体会
2016/01/05 职场文书
2016年劳模先进事迹材料
2016/02/25 职场文书
C#连接ORACLE出现乱码问题的解决方法
2021/10/05 Oracle