用if和while写一个购物代码

自己用if和while写了一个算是购物的代码玩玩,首先是输入购物卡余额(只是虚拟,现实一般是最后刷卡),然后选择商品,当余额不足时会提示你,并且可以输入数字充值余额,如果不充值就会退出循环。

用了if、while、格式化输出(个人觉得这种情况用%s会比format好用,代码量会少一些)以及一些dict、list的操作方法,list去重用的是转为set再转list的方法。

这个购物代码也可以扩展,比如在外面再套一个大框架,分为管理员入口和顾客入口。

管理员通过预设的账户密码登陆后可以增加删除商品(增加建议用dict[key],如果是setdefault出现重复key会无法更新;删除用pop可以实现类似的上下架功能,可以用get查重再上架,也可以使用del dict[key]直接永久删除)

顾客区域通过输预设的购物卡号和密码来进入,余额可以改为购物卡预设而非手动输入,每次购物完成再把购物卡余额也进行更改,余额不足也可以改为删除余额不足的购物卡号,充值相当于新增了一个购物卡,可以使用dict内嵌套list来实现购物卡的管理(增删改)

这种拓展有兴趣的也可以在我的代码基础上改改(我不写绝对不是因为懒....口亨~)

代码如下:

ware = {1:['游艇',60],2:['飞机',80],3:['火箭',110],4:['别墅',190],5:['豪宅',300]}
shop = []
pay = 0

while 1:
    money = input('请输入您的购物卡余额(数字):\n>>>').upper().strip()
    if money.isdigit():
        print('输入成功,您现在可以选购商品了!')
        print('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n')
        money = int(money) 
        break

else:
    print('输入有误请重新输入')

while 1:  
        for x,y in ware.items():
            print('\n商品序号:%d,商品名称:%s,商品价格:%d元。'%(x,y[0],y[1])) 

        need = input('\n请输入您需要的商品序号,按Q退出:\n>>>').upper().strip()

        if need.isdigit():
            need = int(need)
            if ware.get(need):
                pay = pay + int(ware[need][1])
                if money < pay:
                    print('\n您的余额不足,请充值')
                    yorn = input('\n如需充值请输入:‘Y’,不充值请按其他键\n>>>')
                    if yorn.upper().strip() =='Y':
                        while 1:
                            recharge = input('请输入充值金额\n>>>').strip()
                            if recharge.isdigit():
                                money = money + int(recharge)
                                print('充值成功,充值金额%s元'%(recharge))
                                break   
                            else:
                                print('输入错误,请重试')
                    else:
                        print('感谢惠顾,欢迎下次光临!')
                        break


                shop.append(ware[need][0])
                shop = list(set(shop))
                
                if money == pay:
                    print('您将%s放入了您的购物车,价格为%d元'%(ware[need][0],ware[need][1]))
                    print('您现在已经购买了%s,总计%d元,您的余额已不足无法继续购物'%(shop,pay))
                    print('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~')

                if money > pay:
                    print('您将%s放入了您的购物车,价格为%d元'%(ware[need][0],ware[need][1]))
                    print('您现在已经购买了%s,总计%d元,余额还有%d元'%(shop,pay,money-pay))
                    print('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~')
                    
            else:
                print('您输入的有误,请重新输入')
       
        elif need == 'Q':
            print('欢迎您下次光临')
            break
       
        else:
            print('您输入的有误,请重新输入')

 

好的,我可以为您提供一个简单的购物系统的Java代码使用MySQL作为数据库。 首先,我们需要创建一个名为`shopping_system`的MySQL数据库,其中包含两个表,一个是`products`表,另一个是`orders`表。`products`表包含产品的名称,价格库存,`orders`表包含订单号,产品名称,购买数量总价格。 以下是Java代码的主要部分: ```java import java.sql.*; public class ShoppingSystem { private Connection connection; private Statement statement; public ShoppingSystem() { try { Class.forName("com.mysql.jdbc.Driver"); connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/shopping_system", "root", "password"); statement = connection.createStatement(); } catch (ClassNotFoundException | SQLException e) { e.printStackTrace(); } } // 获取产品列表 public void getProducts() { try { ResultSet resultSet = statement.executeQuery("SELECT * FROM products"); while (resultSet.next()) { String productName = resultSet.getString("name"); double price = resultSet.getDouble("price"); int stock = resultSet.getInt("stock"); System.out.println(productName + " - " + price + " - " + stock); } } catch (SQLException e) { e.printStackTrace(); } } // 添加订单 public void addOrder(int orderNum, String productName, int quantity) { try { PreparedStatement preparedStatement = connection.prepareStatement("INSERT INTO orders(order_num, product_name, quantity, total_price) VALUES (?, ?, ?, ?)"); preparedStatement.setInt(1, orderNum); preparedStatement.setString(2, productName); preparedStatement.setInt(3, quantity); double price = getProductPrice(productName); double totalPrice = price * quantity; preparedStatement.setDouble(4, totalPrice); preparedStatement.executeUpdate(); // 更新产品库存 updateProductStock(productName, quantity); } catch (SQLException e) { e.printStackTrace(); } } // 获取产品价格 private double getProductPrice(String productName) { double price = 0; try { ResultSet resultSet = statement.executeQuery("SELECT price FROM products WHERE name='" + productName + "'"); if (resultSet.next()) { price = resultSet.getDouble("price"); } } catch (SQLException e) { e.printStackTrace(); } return price; } // 更新产品库存 private void updateProductStock(String productName, int quantity) { try { PreparedStatement preparedStatement = connection.prepareStatement("UPDATE products SET stock=stock-? WHERE name=?"); preparedStatement.setInt(1, quantity); preparedStatement.setString(2, productName); preparedStatement.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); } } } ``` 您可以根据需求进行修改扩展。当您调用`getProducts()`方法时,会获取产品列表并打印出来;当您调用`addOrder()`方法时,会添加一个订单并更新产品库存。 请注意,这只是一个基本的示例,实际的购物系统可能需要更多的功能更复杂的业务逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值