未完待续的小程序

要是能做的好看为啥不做的好看

在同目录下生成程序

1.程序文件

run.py

from login import login
from register import register
from balance_enquiry import balance_enquiry
from top_up import top_up
msg_dict ={
'1':login,
'0':register,
'2':top_up,
'3':balance_enquiry,
'q':'quit'
}
Login_name = [None]
while True:
print("\033[0;31;44m\t\t杨大爷超市欢迎您\t\t\t\033[5m")
print(38*'-')
print("\033[0;30;42m\t\t输入0进入注册界面\t\t\t\033[5m")
print("\033[0;30;42m\t\t输入1进入登入界面\t\t\t\033[5m")
print("\033[0;30;42m\t\t输入2进入充值界面\t\t\t\033[5m")
print("\033[0;30;42m\t\t输入3进入余额查询界面\t\t\033[5m")
print("\033[0;30;42m\t\t输入q退出程序 \t\t\t\t\033[5m")
print(38 * '-')
user_shopping_chiose = input('请输入你要选择的功能')
if user_shopping_chiose not in msg_dict:
print('请好好输入')
continue
elif user_shopping_chiose=='q':
print('再见')
break
msg_dict[user_shopping_chiose]()

2.自制文件读取模块

open_mode.py

def read_all(filename):
with open (filename,'a+',encoding='utf8') as fr :
fr.seek(0)
res = fr.read()
return res #文件信息格式为info_list=[name:pwd:aggregate score:The remaining points:freeze0为解冻,1为冻结:账户余额 ]
#info_dict[name:[pwd:aggregate score:The remaining points:freeze0为解冻,1为冻结]]
def to_info_dict(filename):
info_dict = dict()
with open (filename,'a+',encoding='utf8') as fr :
fr.seek(0)
for info in fr:
info_list = info.strip().split(':')
name = info_list[0]
info_dict[name] = info_list[1:]
return info_dict
#账号:密码:总积分:剩余积分:是否为冻结0为未冻结,1位冻结:账户余额
def add_info(user_name,user_pwd):
with open('用户注册信息.txt', 'a', encoding='utf8') as fw:
fw.write(f'{user_name}:{user_pwd}:0:0:0:0\n') def add_purchase_history(user,goods,nums,price,Discounted_price):
with open('购买记录.txt', 'a', encoding='utf8') as fw:
fw.write(f'{user}:{goods}:{nums}:{price}:{Discounted_price}\n')

3..功能模块

1.登入

login.py

import open_mode
#Login_successful[0]来判断是否登入成功
Login_name = [None]
def login():
print("\033[0;40;46m\t\t欢迎使用登入功能\t\t\t\033[0m")
info = open_mode.read_all()
if info == '':
print('无人注册会员请先注册')
return
user_dict = open_mode.to_info_dict('用户注册信息.txt')
if not Login_name[0]:
while True:
print(38*'-')
print('输入q可以退出登入程序')
user_name = input('请输入你的名字\n')
if user_name =='q':
return False
if user_name not in user_dict:
print('账号不存在请重新登入')
continue
print(38*'-')
user_pwd = input('请输入你账号密码\n')
if user_pwd != user_dict[user_name][0]:
print('密码错误请重新登入')
continue
elif user_dict[user_name][3]=='1':
print(f'该账号{user_name}已经被冻结不能使用')
continue
print('登入成功')
Login_name[0] = user_name
return True
while True:
print(38*'-')
print("\033[0;40;46m\t\t欢迎使用登入功能\t\t\t\033[0m")
print(f'账号{Login_name[0]}已经登入')
chiose = input('输入1当前账号退出并退出登入程序\n'
'输入2当前账号退出并重新登入程序\n'
'输入Q退出当前程序')
print(38*'-')
if chiose == '1':
Login_name[0] = None
return False
elif chiose =='2':
Login_name[0] = None
login()
return
elif chiose =='Q':
return True
else:
print('请正确输入')

2.注册

register.py

import open_mode
def register():
while True:
print(38*'-')
print("\033[0;40;46m\t\t注册功能\t\t\t\033[0m")
user_name = input('请输入注册账号(退出程序输入q)\n'
'(账号大于6位小于9位由纯字母组成)\n'
)
if user_name=='q':
return False
elif len(user_name.replace(' ','')) != len(user_name):
print('输入的账号有空格请重洗输入')
continue
elif len(user_name) < 6:
print('输入账号太短不能小于6位')
continue
elif len(user_name) > 9:
print('输入账号太长不能大于9位')
continue
elif not user_name.isalpha():
print('账号有字母注册')
continue
print(38*'-')
user_pwd = input('请输入密码\n'
'(密码由纯数字组成)\n')
if len(user_name.replace(' ','')) != len(user_name):
print('输入的密码有空格请重洗输入')
continue
elif not user_pwd.isdigit():
print('密码要纯数字')
else:
info = open_mode.read_all('用户注册信息.txt')
if user_name in info:
print('账号存在请重新注册')
continue
open_mode.add_info(user_name,user_pwd)
print('注册成功')
print(38*'-')
return True

3.购物

shopping.py

import  open_mode
import login
#Login_successful[0]来判断是否登入成功
Login_name = [None] goods_dict = {
'0':['草泥马',100],
'1':['《nick写真集》',1],
'2':['奥特曼玩偶',50],
'3':['钢铁侠真人套装',10000],
'4':['《产品经理强哥自传》',188],
'5':['《马叉虫是如何炼成的》',888],
'6':['《YwY自传》',8888888888888]
} user_car = dict() def shopping():
a = '0'
money = 0
if not Login_name[0]:
print('请先登入')
return
while a == '0':
print(38*'-')
print("\033[0;30;46m\t\t输入0是草泥马100元\t\t\t\t\033[5m")
print("\033[0;30;46m\t\t输入1是《nick写真集》1元\t\t\t\033[5m")
print("\033[0;30;46m\t\t输入2是奥特曼玩偶50元 \t\t\t\033[5m")
print("\033[0;30;46m\t\t输入3是钢铁侠真人套装10000元 \t\033[5m")
print("\033[0;30;46m\t\t输入4是《产品经理强哥自传》18888元\033[5m")
print("\033[0;30;46m\t\t输入5是《马叉虫是如何炼成的》888元\033[5m")
print("\033[0;30;46m\t\t输入6是《YwY自传》8888888888888元\033[5m")
print("\033[0;30;46m\t\t输入q退出程序\t\t\t\t\t\033[5m")
print(38 * '-')
goods_chiose = input('请输入你要购买的商品')
if goods_chiose not in goods_dict:
print('请好好输入')
continue
elif goods_chiose=='q':
return
else:
a = '2'
while True:
goods_nums = input('请输入商品的数量')
if not goods_nums.isdigit():
print('请输入数字')
break
goods = goods_dict[goods_chiose][0]
price = goods_dict[goods_chiose][1]*int(goods_nums) #生成购物车
global user_car
if goods not in user_car:
user_car[goods] = [goods_nums,price]
else:
user_car[goods][0] += goods_nums
user_car[goods][1] += price
judge = 1
while judge == 1:
print(50 * '-')
jump = input('输入0结算\n'
'输入1继续购买\n'
'输入2清空购物车继续购买\n'
'输入3清空购物车退出\n'
'请输入您的选择\n'
'').strip()
if jump not in ['0','1','2','3']:
print('请正确输入0,1,2,3中任意数字')
continue
if jump == '1':
judge = 4 # 跳出功能选择
a = '0' # 继续购买
elif jump == '2':
user_car = dict() # 清空购物车
judge = 4 # 跳出功能选择
a = '0' # 继续购买
elif jump == '3':
user_car = dict()
judge = 4 # 跳出功能选择
print("-" * 50)
print('欢迎下次光临')
elif jump == '0':
judge = 4 # 跳出功能选择
print("-" * 50)
#打印内容
for user_car_info in user_car.items():
print(f'{user_car_info[0]}{user_car_info[1][0]}个 合计{user_car_info[1][1]}元')
money += int(user_car_info[1][1])
print(f'\t\t\t\t\t一共{money}元')
print("-" * 50)
print('欢迎下次光临')

4.余额查询(学了js模块再该)

balance_enquiry.py

def balance_enquiry():
pass

5.4.充值(学了js模块再该)

top_up.py

def top_up():
pass

从7点到9点写的小程序(用了模块导入,python终端颜色显示,用了点局部和全局可变和不可变作用域,模块全是自定义)的更多相关文章

  1. 像VUE一样写微信小程序-深入研究wepy框架

    像VUE一样写微信小程序-深入研究wepy框架 微信小程序自发布到如今已经有半年多的时间了,凭借微信平台的强大影响力,越来越多企业加入小程序开发. 小程序于M页比相比,有以下优势: 1.小程序拥有更多 ...

  2. mpvue-编写微信小程序总结

    一.写在前面: .....最近在写一个微信小程序项目,在看完官方微信小程序开发文档后,有一种直接想"放弃"的念头: .....使用微信小程序原生框架可以快速,方便,简洁的搭建项目, ...

  3. 写个小程序01 | 注册微信小程序

    出于兴趣和学习目的,我想自己做一个基于"子弹笔记(Bullet Journal)"的小程序.由于个人开发经验很有限,只在课程作业中写过 web 前端,所以也不知道多久能写出来(逃) ...

  4. [Android] 仿照 Last App Switcher 写的小程序

      在Android众多工具类app中,Last App Switcher绝对算是一个让人用过就不会卸载的工具.LAS这个应用,它的功能很简单,就是通过一个浮动按钮实现在两个应用之间一键切换,但是非常 ...

  5. 用android去写一个小程序

    前言: 软工的一个小作业:实现"黄金分割小游戏", 需要结对编程,队友:陈乐云    共用时两天. 早期思路设计: 采用键值对的形式,以Map作为存储结构.优点:能够将数据与用户对 ...

  6. 利用 Makefile 写的小程序

    1.建立一个工程 2.写一个进度条的程序(原理就是在同一位置重复打印某一个字符(变化),达到动态显示的效果) 所以说我们这里只用回车'\r',覆盖这一行以前的输出,重新向缓冲区写数据刷新缓冲区,就能达 ...

  7. 初学Java必写的小程序。

    1.矩形面积,周长封装测试. /** * @author Administrator *封装好的矩形类 *自己私有的长宽属性 *开放 求面积求周长的方法 和设置长宽的方法 */ public clas ...

  8. 写一个小程序实现win系统定时锁屏

    貌似很久没写程序了,随便用C语言实现吧 #include<stdio.h> #include<stdlib.h> int main(){ system("rundll ...

  9. 第一次用golang写个小程序

    1.下载go1.6并安装.我是win7系统(会自动添加GOOROOT环境变,自己建一个放go文件的工程目录并添加到环境变量中) 2.下载liteide并解压缩.(liteide查看菜单中也可编辑环境变 ...

随机推荐

  1. SendMessage发送自定义消息及消息响应(VC版)

    控件向父窗体发送自定义消息,父窗体定义处理此消息的函数  程序源代码(整个工程)下载:http://download.csdn.net/detail/qq2399431200/6274793 效果描述 ...

  2. MFC OnPaint()函数中最先调用CDialog::OnPaint()和最后调用CDialog::OnPaint()的巨大区别

    OnPaint()函数中最先调用CDialog::OnPaint()和最后调用CDialog::OnPaint()的巨大区别,如果没有注意这个问题就会出现无厘头式的绘图问题-- 效果就是出不来!在经过 ...

  3. Delphi开发 Android 程序启动画面简单完美解决方案

    原文在这里 还是这个方法好用,简单!加上牧马人做的自动生成工具,更是简单. 以下为原文,向波哥敬礼! 前面和音儿一起研究 Android 下启动画面的问题,虽然问题得到了解决,但是,总是感觉太麻烦,主 ...

  4. qtextedit中的光标问题(通过调用repaint去掉Focus的阴影)

    [问题]两个textedit,取名为view0,view1.实现view0输入固定的字符个数后,用setFocus切换聚焦到view1,但是切换完了之后view0还会保留光标残影,出现两个文本框中都有 ...

  5. 基于ASP.NET的新闻管理系统(二)效果展示

    5. 新闻管理系统开发与实现 5.1前台新闻页面 主页面 新闻栏展示新闻 搜索新闻 菜单栏链接新闻 后台登录界面 大管理员后台管理界面 小管理员后台管理界面 修改密码 增加新闻界面 栏目管理界面   ...

  6. 【Aizu - ALDS1_1_C】Prime Numbers(素数筛法)

    Prime Numbers  Descriptions: A prime number is a natural number which has exactly two distinct natur ...

  7. 04 Javascript的运算符

    js中的运算符跟python中的运算符有点类似,但也有不同.所谓运算,在数学上,是一种行为,通过已知量的可能的组合,获得新的量. 1.赋值运算符 以var x = 12,y=5来演示示例| 2.算数运 ...

  8. spring 5.x 系列第17篇 —— 整合websocket (xml配置方式)

    源码Gitub地址:https://github.com/heibaiying/spring-samples-for-all 一.说明 1.1 项目结构说明 项目模拟一个简单的群聊功能,为区分不同的聊 ...

  9. 老雷socket编程之PHP利用socket扩展实现聊天服务

    老雷socket编程之PHP利用socket扩展实现聊天服务 socket聊天服务原理 PHP有两个socket的扩展 sockets和streamssockets socket_create(AF_ ...

  10. 系统学习 Java IO (五)----使用 SequenceInputStream 组合多个流

    目录:系统学习 Java IO---- 目录,概览 SequenceInputStream 可以将两个或多个其他 InputStream 合并为一个. 首先,SequenceInputStream 将 ...