购物商城小程序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了购物商城小程序相关的知识,希望对你有一定的参考价值。

软件版本: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
View Code

 

以上是关于购物商城小程序的主要内容,如果未能解决你的问题,请参考以下文章

毕业设计 微信小程序购物商城系统 含代码

微信小程序代码片段分享

有微信小程序商城源码系统推荐吗?

开发一套微信小程序商城系统多少钱?

小程序分销商城系统源码开发

zara小程序怎么加入购物车