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 相关文章推荐
CentOS6.5设置Django开发环境
Oct 13 Python
python anaconda 安装 环境变量 升级 以及特殊库安装的方法
Jun 21 Python
解决matplotlib库show()方法不显示图片的问题
May 24 Python
目前最全的python的就业方向
Jun 05 Python
python 重命名轴索引的方法
Nov 10 Python
python的pytest框架之命令行参数详解(下)
Jun 27 Python
django创建简单的页面响应实例教程
Sep 06 Python
Python读取配置文件(config.ini)以及写入配置文件
Apr 08 Python
keras K.function获取某层的输出操作
Jun 29 Python
通俗易懂了解Python装饰器原理
Sep 17 Python
还在手动盖楼抽奖?教你用Python实现自动评论盖楼抽奖(一)
Jun 07 Python
聊聊基于pytorch实现Resnet对本地数据集的训练问题
Mar 25 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
摩卡咖啡
2021/03/03 咖啡文化
php遍历目录与文件夹的多种方法详解
2013/11/14 PHP
学习php设计模式 php实现抽象工厂模式
2015/12/07 PHP
PHP6连接SQLServer2005的三部曲
2016/04/15 PHP
ajax调用返回php接口返回json数据的方法(必看篇)
2017/05/05 PHP
ext combox 下拉框不出现自动提示,自动选中的解决方法
2010/02/24 Javascript
JQuery操作表格(隔行着色,高亮显示,筛选数据)
2012/02/23 Javascript
用js判断输入是否为中文的函数
2014/03/10 Javascript
jQuery自定义添加&quot;$&quot;与解决&quot;$&quot;冲突的方法
2015/01/19 Javascript
JavaScript把数组作为堆栈使用的方法
2015/03/20 Javascript
js获取表格的行数和列数的方法
2015/10/23 Javascript
JavaScript事件 &quot;事件对象&quot;的注意要点
2016/01/14 Javascript
jQuery使用contains过滤器实现精确匹配方法详解
2016/02/25 Javascript
jQuery中each遍历的三种方法实例分析
2018/09/07 jQuery
JS实现可视化文件上传
2018/09/08 Javascript
js 计数排序的实现示例(升级版)
2020/01/12 Javascript
js 计算月/周的第一天和最后一天代码
2020/02/01 Javascript
如何使用JavaScript实现无缝滚动自动播放轮播图效果
2020/08/20 Javascript
phpsir 开发 一个检测百度关键字网站排名的python 程序
2009/09/17 Python
python友情链接检查方法
2015/07/08 Python
Python简单实现两个任意字符串乘积的方法示例
2018/04/12 Python
PyQt5每天必学之带有标签的复选框
2018/04/19 Python
Python实现的根据文件名查找数据文件功能示例
2018/05/02 Python
使用python 的matplotlib 画轨道实例
2020/01/19 Python
Django多数据库配置及逆向生成model教程
2020/03/28 Python
学python最电脑配置有要求么
2020/07/05 Python
Python自动化测试中yaml文件读取操作
2020/08/20 Python
幼儿教师个人求职信范文
2013/09/21 职场文书
《四季》教学反思
2014/04/08 职场文书
建材投资建议书
2014/05/16 职场文书
争先创优心得体会
2014/09/12 职场文书
中韩经贸翻译专业大学生职业生涯规划范文
2014/09/18 职场文书
2014年化验员工作总结
2014/11/18 职场文书
2014年司法局工作总结
2014/12/11 职场文书
导游词之无锡华莱坞
2019/12/02 职场文书
Django模型层实现多表关系创建和多表操作
2021/07/21 Python