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

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

时间: 2018-08-07

有关彩票的python编程教程_python实现彩票系统相关推荐

  1. 视频教程-快速入门Python基础教程_Python基础知识大全-Python

    快速入门Python基础教程_Python基础知识大全 十余年计算机技术领域从业经验,在中国电信.盛大游戏等多家五百强企业任职技术开发指导顾问,国内IT技术发展奠基人之一. 杨千锋 ¥99.00 立即 ...

  2. 视频教程-快速入门Python基础教程_Python基础进阶视频-Python

    快速入门Python基础教程_Python基础进阶视频 十余年计算机技术领域从业经验,在中国电信.盛大游戏等多家五百强企业任职技术开发指导顾问,国内IT技术发展奠基人之一. 杨千锋 ¥199.00 立 ...

  3. 人人都能学会的python编程教程(基础篇)完整版

    人人都能学会的python编程教程1:第一行代码 人人都能学会的python编程教程2:数据类型和变量 人人都能学会的python编程教程3:字符串和编码 人人都能学会的python编程教程4:关系运 ...

  4. 人人都能学会的python编程教程1:第一行代码

    前言 众所周知,现在IT行业很火,行业薪酬也很高,国家在2017年也发布了人工智能教育的推广计划,人人会编程的时代将要到来.不会编程.不懂编程可能有些跟不上时代的节奏,普通人不懂技术也许会觉得这个很难 ...

  5. python是人都能学会_人人都能学会的python编程教程15:高级特性2

    生成器 如果你想要一百万个数,而这些数里只有一百个数是你经常要用的,剩下的都几乎不怎么会用到,那么如果直接把这一百万个数全部放在list中是不明智的因为这会浪费较多存储空间,生成器就是为了解决这个问题 ...

  6. 零基础新手自学Python编程教程入门精通学习资料网站大全

    零基础新手自学Python编程教程入门精通学习资料网站大全 今天说下关于Python的一些普及知识,以及学习资料,这一节我来跟大家分享下. 1 为什么要学习Python? 1 Python是一个脚本语 ...

  7. python多线程教程_Python多线程编程教程【2小时学会】

    Python多线程编程教程[2小时学会] 中级共14课 从0开始学习python多任务编程,想了解python高并发实现,从基础到实践,通过知识点 + 案例教学法帮助你想你想迅速掌握python多任务 ...

  8. python编程自学_Python编程自学:一小时python入门教程

    python好学吗?python入门要多久?python编程自学行吗?做为没有python编程基础的初学者肯定有各种各样的疑问!以下为python学习网整理的一位台湾小姐姐写的"一小时pyt ...

  9. python编程教程第九讲_Python入门学习视频,最全面讲解视频无偿分享,这些基础知识你都懂了吗?...

    2020最新Python零基础到精通资料教材,干货分享,新基础Python教材,看这里,这里有你想要的所有资源哦,最强笔记,教你怎么入门提升!让你对自己更加有信心,重点是资料都是免费的,免费!!! 如 ...

最新文章

  1. R语言e1071包中的支持向量机:构建nu-classification类型的支持向量机SVM并分析不同nu值惩罚下模型分类螺旋线型(sprials)线性不可分数据集的表现
  2. android 6.0 自定义application,Android6.0之App中的资源管理对象创建
  3. 简单分析@Configuration
  4. 2017.4.11 AM
  5. Intellij idea 自动生成serialVersionUID
  6. 使用字符在终端打印图形汉字
  7. 如何通过索引说数据库优化能力
  8. DB2计划三招“破甲” IBM在华能否得偿所愿
  9. SQL:postgresql中合并多个查询结果UNION (ALL)
  10. ISA Server 2006速战速决实验指南(7) 创建元素-网络对象
  11. 【POCKET 51】用 pocket 51学51单片机 :使用pocket 51播放音乐
  12. python的镜像安装和设置
  13. 桃子CCD视觉高速喷射点胶机,用它你就会爱上它
  14. package-lock和package-shrinkwrap
  15. 支付宝小程序uni-app的map多边形polygons不显示问题解决
  16. 7人制足球技战术要点
  17. android ndk如何安装,android NDK安装
  18. 绕过 word 文档的密码,对加密文档
  19. Android -- 每日一问:在项目中使用AsyncTask会有什么问题吗?
  20. UE4 蓝图常用节点汇总及意译(一)

热门文章

  1. 【转载】知性女人 美丽旗袍
  2. Ubuntu 12.04编译mt6582错误 - Tracy Mcgrady的专栏 - 博客频道 - CSDN.NET awk: line 4: function strtonum never def
  3. Java_SE中的经典面试题
  4. 通过document.createElement 后,某些设置无反应
  5. linux下文件或目录是否存在的函数,Linux下的C++程序:判断目录/文件是否存在
  6. PHP代码覆盖率测试
  7. 开源终端工具electerm,取代Xshell
  8. 去掉Win7,XP快捷方式小箭头
  9. T96 不同的二叉搜索树
  10. 夏天火气大,能认真写代码么?