案例3-1 基于控制台的购书系统

第一个类:图书类:用于输出图书的信息;

//封装类,封装图书的信息
public class book {
//图书的编号,名字,单价,库存
	private int id;
	private String name;
	private double price;
	private int storage;
	
	

	public book(int id, String name, double price, int storage) {
		super();
		
		this.id = id;
		this.name = name;
		this.price = price;
		this.storage = storage;
	}


	public int getId() {
		return id;
	}


	public void setId(int id) {
		this.id = id;
	}


	public String getName() {
		return name;
	}


	public void setName(String name) {
		this.name = name;
	}


	public double getPrice() {
		return price;
	}


	public void setPrice(double price) {
		this.price = price;
	}


	public int getStorage() {
		return storage;
	}


	public void setStorage(int storage) {
		this.storage = storage;
	}

	

}

订单信息类:用于输出订单买的哪本书,购买数量

//订单的信息
public class order {
	private book book;//图书,就是指定买的哪本书
	private int num;//购买这本书的数量
	public order(book book, int num) {
		this.book = book;
		this.num = num;
	}
	public book getBook() {
		return book;
	}
	public void setBook(book book) {
		this.book = book;
	}
	public int getNum() {
		return num;
	}
	public void setNum(int num) {
		this.num = num;
	}
	
	

}

订单类用于输出订单号,订单总金额,订单列表;
 

//订单类,用于输出订单号,订单总额,订单项列表
public class orders1 {
	private String oid;//订单号
	private order[] items;//订单项列表
	private double total;//订单总额
	//创建构造函数
	public orders1(String oid) {
		super();
		this.oid = oid;
		//new出item数组
		this.items=new order[3];
	}
	
	public String getOid() {
		return oid;
	}
	public void setOid(String oid) {
		this.oid = oid;
	}
	//用于输出订单项列表
	public order[] getItems() {
		return items;
	}
	//因为是一个数组对象,所以要处理一下,用i来索引,把值传入成员变量里面
	public void setItems(order items,int i) {
		this.items[i] = items;
	}

	public double getTotal() {
		return total;
	}

	public void setTotal(double total) {
		this.total = total;
	}
	
	private void calcTotal() {
		//用来计算订单的总价格。
		double total=0;
		//getNum用来获取对于订单项的数量,items[i].getBook().getPrice()用来获取对应的图书.的价格
		for(int i=0;i<items.length;i++) {
			total +=items[i].getNum()*items[i].getBook().getPrice();
		}
		//不可以用return返回值,就用this关键字传值给成员变量
		this.total=total;
	}
	
	
	

}

最后就是测试类;
 

import java.time.*;
import java.util.Iterator;
import java.util.Scanner;

//购买书的测试类
public class BookDemo {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		//三本书就定义3
		book[] books=new book[3];
		
		//输出每个图书的信息,把books值传入里面
		outbook(books);
		
		//定义购买图书的方法,调用buy方法获得啦订单列表,用一个订单对象来接受
		orders1 order1=buy(books);
		

		//打印订单信息
		printfinfo(order1);
		
		
	}
	private static void printfinfo(orders1 order1) {
		// TODO Auto-generated method stub
		System.out.println("订单编号:"+order1.getOid());
		System.out.println("图书的名称\t\t图书单价\t\t购买数量");
		//把传进来的order1的订单项列表赋值给items
		order[] items=order1.getItems();
		for (int i = 0; i < items.length; i++) {
			System.out.println(items[i].getBook().getName()+"\t"+items[i].getBook().getPrice()+"\t"+items[i].getNum());
		}
		System.out.println("总金额:"+order1.getTotal());
		
		
	}
	private static orders1 buy(book[] books) {
		
		// TODO Auto-generated method stub
		
		//因为每购买一次会产生一个订单,要记得赋值,因为orders1类里面构造方法有参数
		//这里有一个快捷键alt+/,点击第二个
		orders1 order=new orders1("001");
		Scanner sc=new Scanner(System.in);
		for (int i = 0; i < books.length; i++) {
			System.out.println("请输入图书的编号");
			int id=sc.nextInt();
			System.out.println("请输入购买数量");
			int price=sc.nextInt();
			//再这里用到order订单信息类,把订单信息打到item里面,再order类里面的构造方法的形参列表是books的,所以需要用到books数组传值进去,id-1;
			order item=new order(books[id-1],price);
			//把订单信息保存到订单项列表里面,用这边的i来做索引
			order.setItems(item,i);
		}
		return order;
		
		}
	//这个方法这里要加static关键字,因为程序无法这个类里面无法调用非静态的方法
	public static void outbook(book[] books) {
		//书的存储
		books[0]=new book (1,"java程序设计",60,30);
		books[1]=new book (2,"程序设计",16,15);
		books[2]=new book (3,"c程序设计",12,20);
		
		//输出图书的信息
		System.out.println("--------------------------------------------------------------");
		System.out.println("图书编号\t\t图书名称\t\t图书价格\t\t图书库存");
		for(int i=0;i<books.length;i++) {
			//创建一个图书的临时变量,用于保存数组books的值
			book b=books[i];
			System.out.println(b.getId()+"\t\t"+b.getName()+"\t\t"+b.getPrice()+"\t\t"+b.getStorage());
		}
		
		
		
	}

}

  • 0
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,一个基于控制台购书系统可以分为以下几个模块: 1. 用户登录/注册模块:用户可以通过输入用户名和密码进行登录或者注册新用户。 2. 书籍浏览模块:用户可以浏览系统中的所有书籍,并查看书籍的详细信息,如书名、作者、出版社、价格等。 3. 购物车模块:用户可以将自己想要购买的书籍添加到购物车中,并可以查看购物车中的所有书籍和总价。 4. 订单确认模块:用户可以确认购物车中的书籍并生成订单,包括订单号、购买时间、购买数量、总价等信息。 5. 订单查询模块:用户可以查询自己的历史订单,并查看订单的详细信息,如订单号、购买时间、购买数量、总价等。 下面是一个简单的实现示例: 1. 用户登录/注册模块: a. 用户登录:用户输入用户名和密码,系统验证后允许用户登录。 b. 用户注册:用户输入用户名和密码,系统验证后允许用户注册新账户。 2. 书籍浏览模块: a. 显示所有书籍:系统从数据库中读取所有书籍信息,并在控制台上显示出来。 b. 显示书籍详细信息:用户选择一本书籍后,系统显示该书籍的详细信息。 3. 购物车模块: a. 添加书籍到购物车:用户选择一本书籍后,可以将该书籍添加到购物车中。 b. 显示购物车中的书籍:系统显示购物车中的所有书籍和总价。 4. 订单确认模块: a. 确认购物车中的书籍:用户确认购物车中的书籍后,系统生成订单并显示订单信息。 5. 订单查询模块: a. 显示历史订单:系统从数据库中读取用户的历史订单,并在控制台上显示出来。 b. 显示订单详细信息:用户选择一个订单后,系统显示该订单的详细信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

灭掉c与java

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值