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实现求数列和的方法示例
Jan 12 Python
在Django中输出matplotlib生成的图片方法
May 24 Python
Python模块的加载讲解
Jan 15 Python
使用Template格式化Python字符串的方法
Jan 22 Python
Django实现微信小程序的登录验证功能并维护登录态
Jul 04 Python
Python实现代码统计工具
Sep 19 Python
Python 实现自动获取种子磁力链接方式
Jan 16 Python
python db类用法说明
Jul 07 Python
如何基于pandas读取csv后合并两个股票
Sep 25 Python
Python中用xlwt制作表格实例讲解
Nov 05 Python
详解python中的异常和文件读写
Jan 03 Python
Python Django模型详解
Oct 05 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
swoole和websocket简单聊天室开发
2017/11/18 PHP
Bootstrap+PHP实现多图上传功能实例详解
2018/04/08 PHP
PHP抽象类与接口的区别详解
2019/03/21 PHP
简单的js分页脚本
2009/05/21 Javascript
Javascript中正则表达式的全局匹配模式分析
2011/04/26 Javascript
Node.js入门教程:在windows和Linux上安装配置Node.js图文教程
2014/08/14 Javascript
Flexigrid在IE下不显示数据的有效处理方法
2014/09/04 Javascript
js+canvas绘制矩形的方法
2016/01/28 Javascript
Laravel中常见的错误与解决方法小结
2016/08/30 Javascript
JS实现的几个常用算法
2016/11/12 Javascript
学习vue.js中class与style绑定
2016/12/03 Javascript
thinkphp标签实现bootsrtap轮播carousel实例代码
2017/02/19 Javascript
Vue press 支持图片放大功能的实例代码
2018/11/09 Javascript
jQuery实现上下滚动公告栏详细代码
2018/11/21 jQuery
你不知道的Vue技巧之--开发一个可以通过方法调用的组件(推荐)
2019/04/15 Javascript
JS对日期操作封装代码实例
2019/11/08 Javascript
微信公众号网页分享功能开发的示例代码
2020/05/27 Javascript
vue组件入门知识全梳理
2020/09/21 Javascript
[03:03]DOTA2校园争霸赛 济南城市决赛欢乐发奖活动
2013/10/21 DOTA
Python 字符串定义
2009/09/25 Python
python在指定目录下查找gif文件的方法
2015/05/04 Python
tensorflow入门之训练简单的神经网络方法
2018/02/26 Python
Python实现DDos攻击实例详解
2019/02/02 Python
python3通过selenium爬虫获取到dj商品的实例代码
2019/04/25 Python
利用anaconda作为python的依赖库管理方法
2019/08/13 Python
python数据库编程 Mysql实现通讯录
2020/03/27 Python
解决HTML5中的audio在手机端和微信端的不能自动播放问题
2019/11/04 HTML / CSS
全球500多个机场的接送服务:Suntransfers
2019/06/03 全球购物
EJB的几种类型
2012/08/15 面试题
学习雷锋精神心得体会范文
2014/03/12 职场文书
四议两公开实施方案
2014/03/28 职场文书
法律专业自荐信
2014/06/03 职场文书
中专毕业生的自荐书
2014/07/01 职场文书
七一讲话心得体会
2014/09/05 职场文书
学前班教学反思
2016/02/24 职场文书
Python实战之疫苗研发情况可视化
2021/05/18 Python