问题描述:
使用Java编写一个基于控制台的购书系统!1系统输出在售的所有书籍的信息,书籍信息包括编号、书名、单价、库存;2用户输入想要购买的书籍的编号及数量,系统将用户的订单信息,即订单号、订单明细、订单总额打印,返回给用户
问题分析:
定义一个书籍类,将书籍信息作为成员变量并定义相关方法,每本书是作为一个实例化的对象,系统的操作围绕书籍的属性展开。1通过定义一个输出所有属性的方法即可解决。2问题在于让系统将用户输入的编号(即对象的某个属性)认定成对应对象的编号,可以写若干个判断语句,当用户输入编号与书籍对应编号相等,围绕该对象进行一些输出。
代码示例:
package 购书系统;
//购书系统
//系统输出所有可购书籍的详细信息,内容包括编号、书名、单价、库存;用户输入所购书籍的编号跟数量,系统再输出用户的订单信息,包括订单号、订单明细、订单总额
import java.util.Scanner;
class Pur {
int code;
String title;
double price;
int stock;
// 输出所有可购书籍的详细信息
void bookshow() {
System.out.println("书籍编号:"+code);
System.out.println("书名:"+title);
System.out.println("售价:"+price+"元");
System.out.println("库存量:"+stock);
}
// 输出用户的订单信息
}
public class Purchase {
public static void main(String[] args) {
Pur book1=new Pur();
book1.code=1;
book1.title="Java基础案例教程(第二版)";
book1.price=7.59;
book1.stock=6;
Pur book2=new Pur();
book2.code=2;
book2.title="高等数学 上册(第七版)";
book2.price=5.21;
book2.stock=9;
System.out.println("本书店在售书目:");
book1.bookshow();
book2.bookshow();
Scanner s = new Scanner(System.in);
System.out.println("请输入您要购买的书籍编号:");
int code0 = s.nextInt();
System.out.println("请输入您要购买的书籍数量:");
int number = s.nextInt();
double price0 =0;
System.out.print("您已经购买成功!!!\n订单信息:\n");
if(code0==book1.code) {
price0=book1.price;
book1.bookshow();
}else if(code0==book2.code) {
price0=book2.price;
book2.bookshow();
}
System.out.println("数量:"+number);
System.out.println("金额:"+ (price0*number));
}
}
// 需要系统理解用户输入的编号,并以对应编号的对象访问类的各个属性
// 在类里定义一个翻译函数,根据用户输入的编号确定是需要的是哪一个对象,再把它的属性输出。
运行结果:
问题反思:
这个问题并不困难,只是简单的有关类与对象的关系的知识,但我却思考了很久。我一开始一直想将code0(记作用户输入的编号)跟book的某个对象联系起来,但想要从外整体攻破,但显然跟code0有关系的就是code这个属性,而其他的信息其实压根就不参与关键的计算。