购物商城小程序

软件版本:python3.x
功能:实现简单购物商城
1.允许用户选择购买多少件
2.允许多用户登录,下一次登录后,继续按上次的余额继续购买
3. 允许用户查看之前的购买记录(显示购买时间)
4. 商品列表分级展示

操作:
1.默认用户,pan,li,密码为123
2.登录后需正确输入用户名和密码
3.按提示选择充值的金额
4.选择购买的商品,按q退出,按c查看易购买记录,按s查看当前已购买商品

注:file_lock.txt,username_file.txt需事先创建

代码如下:

  1 #!/usr/bin/env python
  2 #coding:utf-8
  3 #Auto:Panwenbin
  4 #function:
  5 import shelve
  6 import time
  7 shop_list={  #定义商品清单
  8     ‘数码电器‘:{‘电脑‘:‘8000‘,‘照相机‘:‘10000‘,‘手机‘:‘3800‘,‘打印机‘:‘3600‘},
  9     ‘服装百货‘:{‘牛仔裤‘:‘288‘,‘夹克‘:‘300‘,‘王老吉‘:‘6‘,‘方便面‘:‘4‘},
 10     ‘汽车‘:{‘特斯拉‘:‘999999‘,‘宝马X5‘:‘550000‘,‘帕沙特‘:‘250000‘,‘奇瑞‘:‘100000‘},
 11     ‘化妆品‘:{‘欧莱雅‘:‘888‘,‘欧诗漫‘:‘666‘,‘韩束‘:‘388‘,‘百雀羚‘:‘259‘},
 12 }
 13 count=0#定义一个计数器
 14 jiage=[]
 15 shop_list1={}
 16 shop_name=list(shop_list.keys()) #将商品第一层清单数据类型转换为列表
 17 lock_file=open(‘file_lock.txt‘,‘r+‘)
 18 user_pass=open(‘username_file.txt‘,‘r+‘)
 19 count=0
 20 def show_list():#打印序列号与商品分类清单
 21     for i,j in enumerate(shop_list):
 22         print(‘%d:%s‘%(i,j))
 23 def show_menu(user_choise):#打印序列号与商品第二层清单
 24     user_choise=int(user_choise)
 25     a=shop_name[user_choise]
 26     for index,key in enumerate(shop_list[a]):  #打印序列号与商品第二层清单
 27         print(‘%d:%s %s‘%(index,key,shop_list[a][key]))
 28 def show_menu2(user_choise,user_choise2):#调用用户第一次选择和第二次选择,进入对应的购物列表
 29         user_choise=int(user_choise)
 30         if user_choise2.isdigit() and int(user_choise2) < len(shop_list[shop_name[int(user_choise)]]):#判断用户输入的是否为数字,并小于商品序列号
 31             user_choise2=int(user_choise2)
 32         #    if user_choise2==0:
 33         jiage.clear()
 34         for v,k in enumerate(shop_list[shop_name[user_choise]]):  #获取用户进入第二层商品的清单
 35             jiage.append(shop_list[shop_name[user_choise]][k])#将获取的商品清单存入列表中
 36         jiage2=(int(jiage[user_choise2]))
 37         global jiage2
 38 def quit_time():#查询完成后退出
 39     for i in [3,2,1]:
 40         print(‘\033[32;1m查询完毕,正在返回主菜单.....\033[1m‘,i)
 41         time.sleep(1)
 42 def start():
 43     while True:
 44         if user_choise.isdigit() and int(user_choise) <len(shop_list):#判断用户输入的是否为数字,并小于商品序列号
 45              show_menu(user_choise)#调用show_menu函数,
 46              break
 47         else:
 48             print(‘\033[31;1m无效选项,请重新输入\033[1m‘)#用户重新输入
 49             break
 50 ########################################################################################################################
 51 while count <3:#只要重试不超过3次就不断循环
 52     print(‘\033[31;1m默认用户名密码为:pan,123  li,123\033[1m‘)
 53     username=input(‘\033[34;1m请输入您的用户名:\033[1m‘)
 54     for i in  lock_file.readlines():  #判断用户名是否在锁文件中
 55         i=i.split()
 56         if username in i[0]:
 57             print(‘\033[31;1m对不起 %s 已锁定\033[1m‘%username)
 58             exit()
 59     match = False
 60     for j in user_pass.readlines():
 61         user,password = j.strip(‘\n‘).split()  #去掉每行多余的\n并把这一行按空格分成两列,分别赋值为user,passwd两个变量
 62         if  username == user:  #判断输入的用户是否存在
 63                 passwd=input (‘\033[30;1m请输入密码:‘)
 64                 if password == passwd:
 65                      match = True
 66                      break
 67
 68                 elif  password != passwd:#在用户名正确的前提下,判断输入的密码是否正确
 69                      for i in range(2):
 70                         passwd=input (‘\033[31;1m密码错误,请重新输入密码:\033[1m‘)
 71                         if password == passwd:
 72                              match =True
 73                              break
 74                      else:
 75                         print(‘\033[31;1m密码和用户名不匹配,尝试超过三次,用户被锁定\033[1m‘)
 76                         lock_file.write(‘%s \n‘%username)
 77                         lock_file.close()
 78                         user_pass.close()
 79                         exit()
 80     if username != user:
 81          print(‘\033[31;1m您输入用户名不存在,程序已退出\033[1m‘)
 82          exit()
 83     elif match==True:
 84         break
 85
 86 ########################################################################################################################
 87 f=shelve.open(‘user.db‘,‘c+‘)
 88 try:
 89     if f[user] >0:
 90         pay=f[user]
 91         chong_zhi=input(‘\033[33;1m您的当前余额为%d,是否充值?充值请输入您要充值的金额,任意键进入下一步,退出程序请按q:\033[1m‘%f[user])
 92         if chong_zhi.isdigit() and int(chong_zhi) > 0:
 93             pay=int(chong_zhi)+int(pay)
 94             print(‘\033[35;1m充值后金额为\033[1m‘,pay)
 95 except KeyError:
 96     chong_zhi=input(‘\033[36;1m您的当前余额为0,是否充值?充值请输入您要充值的金额,退出程序请按q:\033[1m‘)
 97     while True:
 98         if chong_zhi.isdigit() and int(chong_zhi) > 0:
 99             pay=int(chong_zhi)
100             print(‘\033[33;1m充值后金额为\033[1m‘,pay)
101             break
102         elif chong_zhi==‘q‘:
103             print(‘\033[36;1m程序正在退出\033[1m‘)
104             exit()
105         else:
106             pass
107 #        pay=input(‘您的当前余额为0,是否充值?充值请输入您要充值的金额,退出程序请按q:‘)
108 ########################################################################################################################
109 while True:
110     show_list()#调用show_list函数,打印商品分类清单
111     user_choise=input(‘\033[32;1m选择购买商品的类型:\033[1m‘) #获取用户选择商品的分类
112     start()#调用start函数
113     user_choise2=input(‘\033[36;1m选择购买商品的类型。按q退出,按c查看易购买记录,按s查看当前已购买商品,任意键返回上一级菜单,:\033[0m‘)#获取用户选择的商品
114 #    user_num=input(‘\033[35;1m请选择需要购买的件数,默认为1:\033[0m‘)#获取用户选择商品的数量
115     if user_choise2.isdigit() and int(user_choise2) < len(shop_list[shop_name[int(user_choise)]]):#判断用户输入的是否为数字,并小于商品序列号
116          user_num=input(‘\033[35;1m请选择需要购买的件数,默认为1:\033[1m‘)#获取用户选择商品的数量
117          show_menu2(user_choise,user_choise2)#调用show_menu2函数,获取用户选择商品的种类和数量,可用金额是否满足
118          if user_num.strip() ==‘‘:#如果用户输入为空,默认为1
119              user_num=int(1)
120          elif user_num.isdigit and int(user_num) > 1:#如果用户输入是数字切大于1,获得用户输入中
121             user_num=int(user_num)
122          else:
123            user_num=int(1)#其余情况下默认为一
124          pay=int(pay)
125          if pay > jiage2*user_num:#判断用户选择商品的价格*数量是否可以支付
126             pay=pay-jiage2*user_num
127             choise=list(shop_list[shop_name[int(user_choise)]].keys())#得到用户进入第二层商品列表
128             count+=1          #计数器值加一
129             goumai_jilu=shelve.open(‘goumai_jilu.txt‘,‘a+‘)  #调用shelve打开一个数据文件
130             goumai_jilu[str(count)]=choise[int(user_choise2)],jiage2,user_num,time.ctime()#向数据文件中插入用户选择的商品,个数和购买时间
131             goumai_jilu.close()#关闭数据文件
132             a=choise[int(user_choise2)]#得到用户选择的商品,choise为用户选择第二层商品列表
133             if a in shop_list1:      #如果用户选择的商品已购买
134                shop_list1[a][0]=int(shop_list1[a][0])+user_num #将购买数加一
135                shop_list1[a][1]=int(shop_list1[a][1])+int(shop_list1[a][1]*user_num) #将总额加
136             else:
137                shop_list1[a]=list([1,jiage2])
138             print(‘\033[32;1m您的余额为:\033[1m‘,pay)
139          else:
140             print(‘\033[32;1m您的余额不足,请重新选择:\033[0m‘)
141     elif user_choise2==‘b‘:#返回商品分类清单
142         continue
143     elif user_choise2==‘q‘:#退出程序
144         f=shelve.open(‘user.db‘,‘a+‘)
145         f[user]=pay
146         f.close()
147         exit()
148     elif user_choise2==‘c‘:
149        goumai_jilu=shelve.open(‘goumai_jilu.txt‘,‘a+‘)
150        print(‘\033[32;1m您的当前购买记录为:\033[1m‘)
151        for i in goumai_jilu.items(): #获取购买记录中的数据
152             print(‘{} {}‘.format(i[0],goumai_jilu[i[0]]))#打印购买记录
153        print(‘\033[32;1m################################################\033[0m‘)
154        quit_time()
155     elif user_choise2==‘s‘:
156        print(‘\033[32;1mp_name      num         total_price\033[1m‘)
157        print(‘\033[32;1m%-10s%-10s%-10s\033[1m‘%(a,shop_list1[a][0],shop_list1[a][1]))#打印当前购买的商品,个数以及总额
158        print(‘\033[32;1m################################################\033[0m‘)
159        quit_time()
160     else:
161         print(‘\033[41;33m无效选项,请重新选择:\033[0m‘)
162         continue

时间: 2024-10-13 00:06:45

购物商城小程序的相关文章

python 实现(简单的一个购物商城小程序)

#!/usr/bin/env python #_*_ coding:utf-8 _*_ #商城仓库(这里用字典模拟) goods = {'phone':5200,'camera':3500,'TV':2200} buy = {} #显示商品清单 def show_goods():     print '''         ----商品仓--------         ID   Name   Money         -----------------         商品1.  phone

商城小程序功能盘点

一.产品展示功能 做一个商城小程序,产品展示是必备的,所有的商品都会在产品展示功能页面中,向用户展示,让用户进一步了解商品,方便用户查看产品信息,增加用户下单率. 二.在线客服功能 用户在购物过程中,难免会产生一些疑问,这个时候需要有一个在线客服功能,这样用户与客户直接取得联系,客户为用户答疑解惑.不仅提高用户体验,而且还增加用户购买率. 三.购物车功能 用户通过产品展示,看到喜欢的产品,直接加入购物车,在进一步进行挑选. 四.物流功能 物流功能在商城小程序是必不可少的功能,物流功能一般有四种方

商城小程序功能有哪些

商家们都能看到微信小程序的商业价值,都想开发微信小程序,对于开发微信小程序类型有很多,比如商城型.预约型.展示型等,其中商城小程序成为商家们最佳选择,在开发之前,需要确定好功能需求,保证在开发工作过程中能够顺利的进行,那么小程序商城功能有哪些,下面木鱼小铺不妨了解一下. 一.产品展示功能 做一个商城小程序,产品展示是必备的,所有的商品都会在产品展示功能页面中,向用户展示,让用户进一步了解商品,方便用户查看产品信息,增加用户下单率. 二.在线客服功能 用户在购物过程中,难免会产生一些疑问,这个时候

如何快速开发一套微信商城小程序?

小程序的价值相信已经不用我多说,未来大部分应用场景都将使用微信小程序进行研发.开发一套商城小程序需要哪些步骤,怎么开通?快搞定小编来为大家解疑. 第一步:确定商城小程序产品功能.UI风格 在设计小程序的时候一定要符合"轻便.即用即走"的定位,小程序只是场景化的产品,功能不宜过多,更多的是起到平台覆盖和完善用户使用场景的作用. 第二步:注册微信小程序并申请微信支付 进入微信公众平台mp.weixin.qq.com,按提示注册即可.需注意的是,个人暂时不能注册小程序,注册时必须提供企业营业

礼物说小程序_礼物说商城小程序开发

礼物说商城小程序开发. 礼物说商城小程序 礼物说红包系统软件开发,礼物说小程序:像发红包一样送礼物. 送礼物太过于普遍了,过年送礼,节日送礼,想要不一样的送礼模式,礼物商家看中了小程序的发展前景,是一个结合了礼物定制化,送礼,活动礼物策划推广营销的小程序 礼物说小程序 一.礼物说小程序开发的简介 礼物说小程序是一个致力于帮助用户通过微信小程序来进行送礼的小程序,可以将自己在小程序中选购的礼物支付购买后,选择你想送的人,如:家人,朋友,爱等,系统为用户提供送货服务,支持商家的个性化卡片定制,相关的

python_项目_ATM和购物商城的程序

1 需求 模拟实现一个ATM + 购物商城程序 额度15000或自定义 实现购物商城,买东西加入购物车,调用信用卡接口结账 可以提现,手续费5% 支持多账户登录 支持账户间转账 记录每月日常消费流水 提供还款接口 ATM记录操作日志 提供管理接口,包括添加账户.用户额度,冻结账户等... 用户认证用装饰器 2 程序目录 1 ├── ATM+购物商城 2 ├── core #入口程序目录 3 │ ├── __init__.py 4 │ └── main.py #入口程序(启动程序) 5 ├── c

5.Python自学之路:购物篮小程序

1 # 购物商城 2 # 商品展示,价格 3 # 购买商品,加入购物车,一直往里面加 4 # 付款,你有4000元,钱不够,就撤单. 5 6 items = {'cpu': '800', '主板': '800', '机箱': '300', '显卡': '2000', '键盘': '800', '耳机': '300'} 7 Cost_list = items.items() 8 print(Cost_list) 9 Cost_items = {} 10 while True: 11 item_na

模拟实现ATM+购物商城的程序

1 1.函数从ATM_Program--core下的main文件运行,其中的ATM功能只能有三次登录机会.登陆成功失败与否均不允许再次登陆. 2 2.文件Bin下的atm.py是信用卡操作主程序:例如账户间转账.存钱.提现功能 3 3.文件夹Bin下的是manager.py是信用卡的管理端:例如冻结账户.改变信用卡额度.添加账户. 4 4.manager.py的主程序在accounts.py里. 5 5.logger.py日志记录模块.记录账户登陆和,购物的流水. 6 6.transaction

炬米商城小程序是怎么发展起来的

炬米商城模式开发,炬米分销系统软件开发炬米分销模式APP开发炬米微商三级分销模式开发炬米微商三级分销平台开发.   目前,我国经济正处于转型期,互联网+实体企业模式已经成为传统企业转变产业链的主流方式.但中小企业面临流动资金少渠道开发难,互联网人才缺乏运营难,品牌不突出获取粉丝难等困境,导致转型难度变大,想转型互联网+而不知道从何下手,面对社交电商这份红利却拿捏不定.类似炬米商城模式的分销平台无疑是给业界树立了一个很好的典范!   一.炬米商城模式介绍:   第一个,是经理待遇   经理待遇是可