java基础实现水果超市系统(数组+集合+对象持久化(io流存储到txt文件))

本博客介绍了一个使用Java基础实现的水果超市系统,包括数组、集合和对象持久化(io流存储到txt文件)的运用。系统包含Fruit、User、Order和Supermarket四个核心类,实现了水果管理、用户注册登录、购买水果和订单管理等功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

java基础实现水果超市系统(数组+集合+对象持久化(io流存储到txt文件))

Fruit类

package com.zr.fruitSupermarket;

/**
 * 水果
 * @author ZR
 *
 */
public class Fruit {
	private String fname;
	private double price;
	private int count;
	public Fruit() {
		super();
		// TODO Auto-generated constructor stub
	}
	public Fruit(String fname, double price, int count) {
		super();
		this.fname = fname;
		this.price = price;
		this.count = count;
	}
	public String getFname() {
		return fname;
	}
	public void setFname(String fname) {
		this.fname = fname;
	}
	public double getPrice() {
		return price;
	}
	public void setPrice(double price) {
		this.price = price;
	}
	public int getCount() {
		return count;
	}
	public void setCount(int count) {
		this.count = count;
	}
	@Override
	public String toString() {
		return fname +"\t"+ price + "\t\t"+count;
	}
	
	
}

User类

package com.zr.fruitSupermarket;

import java.io.Serializable;

public class User implements Serializable{
	/**
	 * 序列化ID
	 */
	private static final long serialVersionUID = 1L;
	private String username;
	private String password;
	private Order[] orders=new Order[200];
	public User() {
		super();
		// TODO Auto-generated constructor stub
	}
	public User(String username, String password) {
		super();
		this.username = username;
		this.password = password;
	}
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public Order[] getOrders() {
		return orders;
	}
	@Override
	public String toString() {
		return username + "\t\t" + password;
	}
	
	
}


Order类

package com.zr.fruitSupermarket;

import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * 订单
 * @author ZR
 *
 */
public class Order {
	private int orderId;
	private String fname;
	private double fprice;
	private int count;
	private double totalPrice;
	private String orderTime;
	public Order() {
		super();
		// TODO Auto-generated constructor stub
	}
	public Order(String fname, double fprice, int count) {
		super();
		this.fname = fname;
		this.fprice = fprice;
		this.count = count;
		this.totalPrice=this.fprice*this.count;
		this.orderTime=new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss").format(new Date());
	}
	public int getOrderId() {
		return orderId;
	}
	public void setOrderId(int orderId) {
		this.orderId = orderId;
	}
	public String getFname() {
		return fname;
	}
	public void setFname(String fname) {
		this.fname = fname;
	}
	public double getFprice() {
		return fprice;
	}
	public void setFprice(double fprice) {
		this.fprice = fprice;
	}
	public int getCount() {
		return count;
	}
	public void setCount(int count) {
		this.count = count;
	}
	public double getTotalPrice() {
		return totalPrice;
	}
	public void setTotalPrice(double totalPrice) {
		this.totalPrice = totalPrice;
	}
	public String getOrderTime() {
		return orderTime;
	}
	public void setOrderTime(String orderTime) {
		this.orderTime = orderTime;
	}
	@Override
	public String toString() {
		return orderId + "\t\t" + fname + "\t\t" + fprice + "\t\t" + count
				+ "\t\t" + totalPrice + "\t\t" + orderTime;
	}
	
	
}

Supermarket类

package com.zr.fruitSupermarket;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner;

/**
 * 超市
 * @author ZR
 *
 */
public class Supermarket {
	ArrayList<Fruit> fList=new ArrayList<Fruit>();
	
	ArrayList<User> users=new ArrayList<User>();

	/**
	 * 超市初始化
	 */
	public Supermarket() {
		Fruit f1=new Fruit("apple",5.8,100);
		Fruit f2=new Fruit("oranger",3.9,100);
		Fruit f3=new Fruit("banana",5.5,100);
		Fruit f4=new Fruit("watermelon",1.0,100);
		Fruit f5=new Fruit("pear",6.5,100);
		
		fList.add(f1);
		fList.add(f2);
		fList.add(f3);
		fList.add(f4);
		fList.add(f5);
		init();
	}
	
	public void init() {
		ObjectInputStream objectInputStream=null;
		try {
			objectInputStream=new ObjectInputStream(new FileInputStream(new File("src/com/zr/fruitSupermarket/user.txt")));
			users = (ArrayList<User>) objectInputStream.readObject();
		} catch (FileNotFoundException e) {
			File file=new File("src/com/zr/fruitSupermarket/user.txt");
			users=new ArrayList<User>();
			try {
				file.createNewFile();
			} catch (IOException e1) {
				// TODO Auto-generated catch block
				e1.printStackTrace();
			}
		} catch (IOException e) {
			//当user.txt为空时,处理该异常
			System.out.println("尚无用户注册");
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally {
			if (objectInputStream!=null) {
				try {
					objectInputStream.close();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		}
	}
	/**
	 * 水果菜单
	 */
	public void fruitMenu() {
		System.out.println("水果名称\t\t价格\t\t数量");
		for (Fruit fruit : fList) {
			System.out.println(fruit);
		}
	}
	
	/**
	 * 用户列表
	 */
	public void userList() {
		System.out.println("用户名\t\t密码");
		for (User user : users) {
			System.out.println(user);
		}
	}
	
	/**
	 * 订单列表
	 */
	public void orderMenu(User user) {
		Order[] orders = user.getOrders();
		System.out.println("订单号\t\t水果名称\t\t水果单价\t\t购买数量\t\t总价\t\t订单日期");
		for (int i = 0; i < orders.length; i++) {
			if (orders[i]==null) {
				return;
			}
			System.out.println(orders[i]);
		}
	}
	
	/**
	 * 添加水果
	 */
	public void appendFruit() {
		Scanner sc = new Scanner(System.in);
		System.out.println("添加水果商品:");
		System.out.println("请输入水果名称:");
		String fname = sc.nextLine();
		System.out.println("请输入商品价格:");
		double price = sc.nextDouble();
		System.out.println("请输入商品数量:");
		int count = sc.nextInt();
		Fruit fruit=new Fruit(fname,price,count);
		for (Fruit f : fList) {
			if (f.getFname().equals(fname)) {
				System.out.println("该水果已存在,您可以修改该水果价格或者添加该水果数量");
				return;
			}
			fList.add(fruit);
			System.out.println("添加水果成功");
		}
		System.out.println("水果添加失败,原因:超市货满放不下");
	}
	
	/**
	 * 购买水果
	 */
	public void buyFruit(User user) {
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入购买水果的名称:");
		String fname = sc.nextLine();
		System.out.println("请输入购买水果的数量:");
		int count = sc.nextInt();
		for (Fruit fruit : fList) {
			if (fruit.getFname().equals(fname)) {
				if (fruit.getCount()==0) {
					System.out.println("购买失败,库存为0,请购买其他水果");
					return;
				}
				if (count<=0||count>fruit.getCount()) {
					System.out.println("购买失败,请输入正确的购买数量");
					return;
				}
				fruit.setCount(fruit.getCount()-count);
				System.out.println("购买成功");
				Order order=new Order(fname,fruit.getPrice(),count);
				Order[] orders = user.getOrders();
				for (int j = 0; j < orders.length; j++) {
					if (orders[j]==null) {
						order.setOrderId(new Random().nextInt(100000));
						orders[j]=order;
						return;
					}
				}
			}
			System.out.println("超市未售卖这种水果,请购买其他水果");
			return;
		}
	}
	
	/**
	 * 修改水果价格
	 */
	public void changePrice() {
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入水果的名称:");
		String fname = sc.nextLine();
		System.out.println("请输入需要修改的水果价格:");
		double price = sc.nextDouble();
		if (price<=0) {
			System.out.println("输入的价格不合法");
			return;
		}
		for (Fruit fruit : fList) {
			if (fruit.getFname().equals(fname)) {
				fruit.setPrice(price);
				System.out.println("修改价格成功");
				return;
			}
		}
		System.out.println("输入的水果名称不合法");
		return;
	}
	
	/**
	 * 添加水果数量
	 */
	public void changeCount() {
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入水果的名称:");
		String fname = sc.nextLine();
		System.out.println("请输入需要添加的水果数量:");
		int count = sc.nextInt();
		if (count<=0) {
			System.out.println("输入的数量不合法");
			return;
		}
		for (Fruit fruit : fList) {
			if (fruit.getFname().equals(fname)) {
				fruit.setCount(count);
				System.out.println("添加水果数量成功");
				return;
			}
		}
		System.out.println("输入的水果名称不合法");
		return;
	}
	
	/**
	 * 用户注册
	 */
	public void userRegister() {
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入用户名:");
		String username = sc.nextLine();
		System.out.println("请输入密码:");
		String password = sc.nextLine();
		int num=(int)((Math.random()*9+1)*100000);
		System.out.println("验证码:"+num);
		System.out.println("请输入验证码:");
		int code = sc.nextInt();
		if (code==num) {
			User user=new User(username,password);
				
			for (User u : users) {
				if (u.getUsername().equals(username)) {
					System.out.println("该用户名已注册,请更改用户名");
					return;
				}
			}
			users.add(user);
			System.out.println("注册成功");
			ObjectOutputStream objectOutputStream=null;
			try {
				objectOutputStream = new ObjectOutputStream(new FileOutputStream("src/com/zr/fruitSupermarket/user.txt"));
				objectOutputStream.writeObject(users);
			} catch (FileNotFoundException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}finally {
				if (objectOutputStream!=null) {
					try {
						objectOutputStream.close();
					} catch (IOException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
				}
				
			}
			
		}else {
			System.out.println("验证码错误");
		}
		
	}

	/**
	 * 用户登录
	 */
	public User userLogin() {
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入用户名:");
		String username = sc.nextLine();
		System.out.println("请输如密码:");
		String password = sc.nextLine();
		for (User u : users) {
			if (u.getUsername().equals(username)&&u.getPassword().equals(password)) {
				System.out.println("登录成功,进入水果商店");
				return u;
			}
		}
		System.out.println("用户名或密码错误");
		return null;
	}
	
	/**
	 * 管理员登录
	 */
	public int adminLogin() {
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入管理员用户名:");
		String username = sc.nextLine();
		System.out.println("请输入管理员密码:");
		String password = sc.nextLine();
		if ("admin".equals(username)&&"admin".equals(password)) {
			System.out.println("登录成功");
			return 1;
		}
		System.out.println("用户名或密码错误");
		return 0;
	}
}


客户端运行

package com.zr.fruitSupermarket;

import java.util.Scanner;

/**
 * 客户
 * @author ZR
 *
 */
public class Client {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		System.out.println("********************欢迎进入水果超市系统***********************************");
		Supermarket supermarket=new Supermarket();
		while(true) {
			menu();
			System.out.println("请输入要执行的功能序号:");
			int num = sc.nextInt();
			switch (num) {
			case 1:
				int flag = supermarket.adminLogin();
				if (flag==1) {
					while(true) {
						adminMenu();
						System.out.println("请输入要执行的功能序号:");
						int num2 = sc.nextInt();
						switch (num2) {
						case 1:
							supermarket.fruitMenu();
							break;
						case 2:
							supermarket.appendFruit();;
							break;
						case 3:
							supermarket.userList();
							break;
						case 4:
							supermarket.changePrice();;;
							break;
						case 5:
							supermarket.changeCount();;
							break;
						case 6:
							System.out.println("退出系统成功,欢迎下次光临.");
							System.exit(0);
							break;
						default:
							System.out.println("请输入正确的操作指令序号");
							break;
						}
					}
				}
				break;
			case 2:
				User userLogin = supermarket.userLogin();
				if(userLogin!=null) {
					while(true) {
						userMenu();
						System.out.println("请输入要执行的功能序号:");
						int num3 = sc.nextInt();
						switch (num3) {
						case 1:
							supermarket.fruitMenu();
							break;
						case 2:
							supermarket.buyFruit(userLogin);
							break;
						case 3:
							supermarket.orderMenu(userLogin);
							break;
						case 4:
							System.out.println("退出系统成功,欢迎下次光临.");
							System.exit(0);
							break;
						default:
							System.out.println("请输入正确的操作指令序号");
							break;
						}
					}
					
				}
				break;
			case 3:
				supermarket.userRegister();
				break;
			case 4:
				System.out.println("退出系统成功,欢迎下次光临.");
				System.exit(0);
				break;
			default:
				System.out.println("请输入正确的操作指令序号");
				break;
			}
		}
		
		

	}

	/**
	 * 初始执行功能
	 */
	public static void menu() {
		System.out.println("1.管理员登录");
		System.out.println("2.用户登录");
		System.out.println("3.用户注册");
		System.out.println("4.退出系统");
	}
	/**
	 * 管理员执行功能
	 */
	public static void adminMenu() {
		System.out.println("1.查询水果菜单");
		System.out.println("2.添加水果");
		System.out.println("3.查询用户列表");
		System.out.println("4.修改水果价格");
		System.out.println("5.添加水果数量");
		System.out.println("6.退出系统");
	}
	
	/**
	 * 用户执行功能
	 */
	public static void userMenu() {
		System.out.println("1.查询水果菜单");
		System.out.println("2.购买水果,并添加到订单");
		System.out.println("3.查看订单");
		System.out.println("4.退出系统");
	}
}

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值