python实现彩票系统

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

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

(0)

相关推荐

  • Python分析彩票记录并预测中奖号码过程详解

    0 引言 上周被一则新闻震惊到了,<2454万元大奖无人认领!福彩史上第二大弃奖在广东中山产生 >,在2019年5月2日开奖的双色球中,广东中山一位彩民博中2454万元,兑奖时间截至2019年7月1日. 令人遗憾的是,中奖者最终未现身领奖,2454万元大奖成为弃奖.经中山市福彩中心查证,这是中国福彩史上金额第二大的弃奖.根据<彩票管理条例实施细则>的有关规定,这次的2454万元弃奖奖金将被纳入彩票公益金. 一直在为福彩做贡献的我,啥时候能摊上这样的好事啊.于是我用Python生成了

  • Python数据分析之双色球基于线性回归算法预测下期中奖结果示例

    本文实例讲述了Python数据分析之双色球基于线性回归算法预测下期中奖结果.分享给大家供大家参考,具体如下: 前面讲述了关于双色球的各种算法,这里将进行下期双色球号码的预测,想想有些小激动啊. 代码中使用了线性回归算法,这个场景使用这个算法,预测效果一般,各位可以考虑使用其他算法尝试结果. 发现之前有很多代码都是重复的工作,为了让代码看的更优雅,定义了函数,去调用,顿时高大上了 #!/usr/bin/python # -*- coding:UTF-8 -*- #导入需要的包 import pan

  • Python随机生成彩票号码的方法

    本文实例讲述了Python随机生成彩票号码的方法.分享给大家供大家参考.具体如下: 前些日子在淘宝上买了一阵子彩票,每次都是使用淘宝的机选,每次一注.后来觉得不如自己写一个机选的程序有意思 1. xuanhao.py文件 import random def getResultStr(totalCount, resultCount): elements = [x + 1 for x in range(totalCount)] retStr = '' for i in range(resultCou

  • Python编程实现使用线性回归预测数据

    本文中,我们将进行大量的编程--但在这之前,我们先介绍一下我们今天要解决的实例问题. 1) 预测房子价格 房价大概是我们中国每一个普通老百姓比较关心的问题,最近几年保障啊,小编这点微末工资着实有点受不了. 我们想预测特定房子的价值,预测依据是房屋面积. 2) 预测下周哪个电视节目会有更多的观众 闪电侠和绿箭侠是我最喜欢的电视节目,特别是绿箭侠,当初追的昏天黑地的,不过后来由于一些原因,没有接着往下看.我想看看下周哪个节目会有更多的观众. 3) 替换数据集中的缺失值 我们经常要和带有缺失值的数据集

  • Python实现的彩票机选器实例

    本文实例讲述了Python实现彩票机选器的方法.分享给大家供大家参考.具体实现方法如下: # -*- coding: utf8 -*- from Tkinter import * import tkFont import random class App: def __init__(self, master) : frame = [Frame() for i in range(4)] for i in range(4): frame[i] = Frame(master) frame[i].pac

  • 使用Python计算玩彩票赢钱概率

    工具:Jupyter notebook + Anaconda 游戏规则:时时彩一种玩法是买尾号.2元一个数字,中奖是20元.每个数字出现的概率相等. 目前想到两种买法: 随机购买,人是感性动物,很容易受周围环境干扰.完全随机购买在生活中是不存在的. 分析数字在前面N期出现的概率,选择概率最小的n个数字购买. 导入包 import numpy as np 定义玩法一:完全随机购买 def play_lottery(my_money,play_num,money): ''' 随机选择数的中奖率 re

  • python实现彩票系统

    本文为大家分享了python实现彩票系统的具体代码,供大家参考,具体内容如下 功能:1.注册  2.登录  3.充钱   4.提现  5.下注  6.开奖  7.退出 简述:彩民需要用身份证号码开户注册一个彩票号码,购买彩票时需要先登录,可以充值以及提现.购买的彩票金额可以自己给定.此系统主要采用面向对象的方法,信息存储方式采用pickle模块来进行存储. 系统主函数: from lotterysystem import lotterySystem import displayview impo

  • Python实现信用卡系统(支持购物、转账、存取钱)

    最近一直在做一个有关信用卡系统的项目,所有很少出来给大家打招呼了,今天也该告一段了,本项目是基于python编程语言做的,此信用卡支持购物,转账和存取钱,下面小编把需求及实现思路大概分享一下,仅供参考,如有bug欢迎各位大侠提出,共同学习进步,谢谢! 一.要求 二.思路 1.购物类buy 接收 信用卡类 的信用卡可用可用余额, 返回消费金额 2.信用卡(ATM)类 接收上次操作后,信用卡可用余额,总欠款,剩余欠款,存款 其中: 1.每种交易类型不单独处理金钱,也不单独记录流水账,每种交易类型调用

  • python判断windows系统是32位还是64位的方法

    本文实例讲述了python判断windows系统是32位还是64位的方法.分享给大家供大家参考.具体分析如下: 通常64的windows系统program files文件夹(用来安装应用程序的默认的默认的目录),有2个,一个是program files另外一个是program files(x86), 而32bit的只有program files这一个文件夹. 根据上面这一特点,我们就可以判断windows系统是32还是64位的. import os prg = 'C:Program Files(

  • python在linux系统下获取系统内存使用情况的方法

    本文实例讲述了python在linux系统下获取系统内存使用情况的方法.分享给大家供大家参考.具体如下: """ Simple module for getting amount of memory used by a specified user's processes on a UNIX system. It uses UNIX ps utility to get the memory usage for a specified username and pipe it

  • python脚本设置系统时间的两种方法

    本文为大家分享了两种python脚本设置系统时间的方法,供大家参考,具体内容如下 第一种方法,使用Python设置系统时间,即给系统校时 #电脑时间用了一段时间后,系统时间不准了,想更新一下 #在windows里面,更新系统时间,时常失败,而且速度很忙. #在网上拷贝的代码,发现很好用,比windows自带的实现要快. #-*- coding:utf-8 -*- import socket import struct import time import win32api TimeServer

  • python端口扫描系统实现方法

    本文实例讲述了python端口扫描系统实现方法.分享给大家供大家参考.具体实现方法如下: 该程序的主要功能如下: 1. 从自有API接口获取所有的外网IP段: 2. 用Nmap 遍历扫描所有的IP段,-oX 生成XML的扫描报告: 3. 用xml.etree.ElementTree模块方法读取XML文件,将ip,开放端口,对应服务等写入Mysql数据库. 功能很简单,没有满足老大高大上的需求,所以这个小项目就这么英勇的挂掉了!~~~完全都还没考虑程序异常终止,扫描服务器异常歇菜的情况. 贴上代码

  • Python实现查找系统盘中需要找的字符

    本文实例讲述了Python实现查找系统盘中需要找的字符.分享给大家供大家参考.具体如下: ''' Created on 2011-7-13 @author: 123 ''' import os #保存当前有的磁盘 def existdisk(): curdisks = [] allDisks = ['C:', 'D:', 'E:', 'F:', 'G:', 'H:', 'I:', 'J:', 'K:', \ 'L:', 'M:', 'N:', 'O:', 'P:', 'Q:', 'R:', 'S

  • Python实现购物系统(示例讲解)

    要求: 用户入口 1.商品信息存在文件里 2.已购商品,余额记录. 商家入口 可以添加商品,修改商品价格 Code: 商家入口: # Author:P J J import os ps = ''' 1 >>>>>> 修改商品 2 >>>>>> 添加商品 按q为退出程序 ''' # 打开两个文件,f文件为原来存取商品文件,f_new文件为修改后的商品文件 f = open('commodit', 'r', encoding='utf-8

  • python实现的系统实用log类实例

    本文实例讲述了python实现的系统实用log类.分享给大家供大家参考.具体如下: 每个系统都必不可少会需要一个log类,方便了解系统的运行状况和排错,python本身已经提供了一个logger了,很强大,只要稍微封装一下就可以放到自己的系统了,下面是我自己的log类 文件名:logger.py """This module takes care of the logging logger helps in creating a logging system for the

  • Python实现获取系统临时目录及临时文件的方法示例

    本文实例讲述了Python实现获取系统临时目录及临时文件的方法.分享给大家供大家参考,具体如下: 在开发应用程序的过程中,会有一些临时的信息,或者不太重要的信息,会保存在一个特殊的目录下面,在windows 里面,通常会在 c:\docume~1\admini~1\locals~1\temp 这个地方,而在 centos 中就是 /tmp 目录 比如我们经常上网,网页的的一些临时信息都保存在这个临时目录里面.那么在我们自己写应用程序的时候,怎么得到这个临时目录,怎么创建临时文件呢.在python

随机推荐