Java自动售货机程序设计思路
1. 简介
自动售货机是一种能够自动完成商品销售的设备,它能够接受用户选择的商品、接收付款并提供所购商品的功能。本文将介绍如何使用Java编写一个简单的自动售货机程序,实现基本的购买流程和管理功能。
2. 功能需求
为了实现一个完善的自动售货机程序,我们需要考虑以下功能需求:
1.用户能够浏览商品列表并选择购买。
2.用户能够输入金额进行支付,并根据支付情况进行相应处理。
3.程序需要根据用户选择和支付情况来计算和零。
4.程序需要记录每次交易的信息,包括购买商品、支付金额和零等。
5.程序需要提供管理员功能,包括添加新商品、修改商品信息和查看销售统计等。
3. 设计思路
3.1 商品类设计
我们需要设计一个商品类来表示售货机中的商品。该类应包含以下属性:
•商品名称
•商品价格
•商品数量(库存)
该类还应提供以下方法:
•获取商品名称
•获取商品价格
•获取商品数量
•减少商品数量(用于购买时减少库存)
3.2 自动售货机类设计
接下来,我们设计一个自动售货机类来管理售货机的整个流程。该类应包含以下属性:
•商品列表(包含多个商品对象)
•用户选择的商品
•用户支付金额
•交易记录
该类还应提供以下方法:
•初始化商品列表
•显示商品列表
•用户选择商品
•用户输入支付金额
•处理支付情况(判断是否足够支付)
•计算零金额
•更新商品库存数量
•添加交易记录
3.3 管理员功能设计
为了提供管理员功能,我们可以在自动售货机类中添加一些额外的方法:
•添加新商品:管理员可以输入新商品的名称、价格和数量,然后将其添加到商品列表中。
•修改商品信息:管理员可以选择要修改的商品,并输入新的价格和数量进行修改。
•查看销售统计:管理员可以查看每次交易的信息,包括购买商品、支付金额和零等。
4. 代码实现
下面是一个简单的Java自动售货机程序的代码示例:
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
class Product {
private String name;
private double price;
private int quantity;
public Product(String name, double price, int quantity) {
this.name = name;
this.price = price;
this.quantity = quantity;
}
public String nextint()方法getName() {
return name;
}
public double getPrice() {
return price;
}
public int getQuantity() {
return quantity;
}
public void decreaseQuantity(int amount) {
quantity -= amount;
}
}
class VendingMachine {
private List<Product> products;
private Product selectedProduct;
private double payment;
private List<String> transactionHistory;
public VendingMachine() {
products = new ArrayList<>();
transactionHistory = new ArrayList<>();
// 初始化商品列表
products.add(new Product("Coke", 1.5, 10));
products.add(new Product("Chips", 2.0, 5));
products.add(new Product("Water", 1.0, 8));
}
public void displayProductList() {
System.out.println("Available products:");
for (int i = 0; i < products.size(); i++) {
Product product = products.get(i);
System.out.println(i + ". " + product.getName() + " - $" + product.getPrice());
}
}
public void selectProduct(int index) {
if (index >= 0 && index < products.size()) {
selectedProduct = products.get(index);
System.out.println("Selected product: " + selectedProduct.getName());
} else {
System.out.println("Invalid product selection.");
}
}
public void enterPayment(double amount) {
payment += amount;
System.out.println("Payment entered: $" + payment);
}
public void processPayment() {
if (selectedProduct != null) {
if (payment >= selectedProduct.getPrice()) {
double change = payment - selectedProduct.getPrice();
selectedProduct.decreaseQuantity(1);
transactionHistory.add("Purchased: " + selectedProduct.getName() +
" | Payment: $" + payment +
" | Change: $" + change);
System.out.println("Thank you for your purchase!");
System.out.println("Change: $" + change);
} else {
System.out.println("Insufficient payment.");
}
} else {
System.out.println("No product selected.");
}
}
public void addNewProduct(String name, double price, int quantity) {
products.add(new Product(name, price, quantity));
System.out.println("New product added: " + name);
}
public void modifyProduct(int index, double price, int quantity) {
if (index >= 0 && index < products.size()) {
Product product = products.get(index);
product.price = price;
product.quantity = quantity;
System.out.println("Product modified: " + product.getName());
} else {
System.out.println("Invalid product selection.");
}
}
public void viewTransactionHistory() {
System.out.println("Transaction history:");
for (String transaction : transactionHistory) {
System.out.println(transaction);
}
}
}
public class Main {
public static void main(String[] args) {
VendingMachine vendingMachine = new VendingMachine();
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论