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设计实现的计算器功能完整实例
Aug 18 Python
Python 高级专用类方法的实例详解
Sep 11 Python
Python从数据库读取大量数据批量写入文件的方法
Dec 10 Python
python Pexpect 实现输密码 scp 拷贝的方法
Jan 03 Python
python 自动批量打开网页的示例
Feb 21 Python
详解在Python中以绝对路径或者相对路径导入文件的方法
Aug 30 Python
python 导入数据及作图的实现
Dec 03 Python
PyQt使用QPropertyAnimation开发简单动画
Apr 02 Python
python网络编程:socketserver的基本使用方法实例分析
Apr 09 Python
keras中的backend.clip用法
May 22 Python
python打包生成so文件的实现
Oct 30 Python
Pycharm中使用git进行合作开发的教程详解
Nov 17 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
将博客园(cnblogs.com)数据导入到wordpress的代码
2013/01/06 PHP
PHP中判断变量为空的几种方法小结
2013/11/12 PHP
php实现图片添加描边字和马赛克的方法
2014/12/10 PHP
PHP共享内存用法实例分析
2016/02/12 PHP
PHP实现数组array转换成xml的方法
2016/07/19 PHP
PHP共享内存使用与信号控制实例分析
2018/05/09 PHP
php时间戳转换代码详解
2019/08/04 PHP
利用JQuery+EasyDrag 实现弹出可拖动的Div,同时向Div传值,然后返回Div选中的值
2009/10/24 Javascript
Javascript仿PHP $_GET获取URL中的参数
2014/05/12 Javascript
jQuery结合CSS制作漂亮的select下拉菜单
2015/05/03 Javascript
javascript实现一个简单的弹出窗
2016/02/22 Javascript
Nodejs获取网络数据并生成Excel表格
2020/03/31 NodeJs
AngularJS  $on、$emit和$broadcast的使用
2016/09/05 Javascript
Javascript基础回顾之(二) js作用域
2017/01/31 Javascript
Node.js爬取豆瓣数据实例分析
2018/03/05 Javascript
浅谈Webpack下多环境配置的思路
2018/06/27 Javascript
jQuery实现手风琴特效
2021/01/11 jQuery
python操作数据库之sqlite3打开数据库、删除、修改示例
2014/03/13 Python
python检查序列seq是否含有aset中项的方法
2015/06/30 Python
利用numpy实现一、二维数组的拼接简单代码示例
2017/12/15 Python
python调用百度REST API实现语音识别
2018/08/30 Python
python3文件复制、延迟文件复制任务的实现方法
2019/09/02 Python
Python 防止死锁的方法
2020/07/29 Python
Python 中Operator模块的使用
2021/01/30 Python
css3实现背景图片拉伸效果像桌面壁纸一样
2013/08/19 HTML / CSS
招商专员岗位职责
2014/02/08 职场文书
三方合作协议书范本
2014/04/18 职场文书
小区的门卫岗位职责
2014/10/01 职场文书
2014年社区民政工作总结
2014/12/02 职场文书
2014年少先队工作总结
2014/12/03 职场文书
财务会计岗位职责
2015/02/03 职场文书
个人自荐书怎么写
2015/03/26 职场文书
裁员通知
2015/04/25 职场文书
请病假条范文
2015/08/17 职场文书
安全生产协议书
2016/03/22 职场文书
Nginx开源可视化配置工具NginxConfig使用教程
2022/06/21 Servers