答:
/***********************批发类******************************/
import java.text.NumberFormat;
import java.util.Map;
import java.util.Scanner;
import java.util.Set;
import java.util.TreeMap;
public class Wholesale {
//数字格式化器
private static NumberFormat format = NumberFormat.getInstance();
//库存对象.
private static Map<Integer,Goods> warehouse = new TreeMap<Integer, Goods> ();
/**
* 构造批发对象.
*/
Wholesale(){
//初始化库存信息.
warehouse.put(1, new Goods(1,"电风扇", 124.23));
warehouse.put(2, new Goods(2,"洗衣机", 4500.0));
warehouse.put(3, new Goods(3,"电视机", 8800.9));
warehouse.put(4, new Goods(4,"冰箱", 5000.88));
warehouse.put(5, new Goods(5,"空调机", 4456.0));
//设置数字格式化器,最小保留一位小数.
format.setMinimumFractionDigits(1);
}
/**
* 运行批发系统.
*/
public void run(){
//打开控制台
Scanner conin = new Scanner(System.in);
//登录系统
if(login(conin)){
System.out.println("登录成功!");
//打印使用信息
show();
//进行一次交易
change(conin);
}else{
System.out.println("登录失败系统退出.");
}
}
/**
* 进行一次交易.
*/
private void change(Scanner conin) {
System.out.print("请输入您批发的商品编号: ");
//商品编号
Integer code = null;
//批发数量
Integer amount = null;
//循环收集用户输入的商品编号与批发数量.
while(conin.hasNext()){
if(null == code){
//收集商品编号
code = conin.nextInt();
//验收商品编号的有效性
Goods g = warehouse.get(code);
if(null == g){
System.out.print("您输入的商品编号不存在,请重新输入: ");
code = null;
continue;
}else{
//商品编号验证有效后,提示输入批发数量.
System.out.print("请输入批发数量: ");
continue;
}
}else if(null == amount){
//收集批发数量
amount = conin.nextInt();
break;
}else{
//收集商品编号与批发数量成功完成.
break;
}
}
Double total = warehouse.get(code).getPrice() * amount;
System.out.println("您需要付款: "+format.format(total));
//交易结束,关闭系统.
conin.close();
}
/**
* 用户登录方法.
* @return 如果登录成功返回true,如果登录失败返回false.
*/
private boolean login(Scanner conin){
System.out.print("请输入用户名: ");
//表示是否登录成功
Boolean logined = false;
//循环等待输入.
while(conin.hasNext()){
String name = conin.next();
if("TOM".equals(name)){
System.out.print("请输入密码: ");
String password = conin.next();
if("123".equals(password)){
logined = true;
break;
}else{
System.out.print("密码错误!");
break;
}
}else{
System.out.print("用户名错误!");
break;
}
}
return logined;
}
/**
* 打印本系统的使用信息.
*/
private void show(){
StringBuffer sb = new StringBuffer();
sb.append("*********欢迎进入商品批发城*********\n");
sb.append("\t编号\t商品\t价格\n");
Set<Integer> keys = warehouse.keySet();
for(Integer code : keys){
Goods g = warehouse.get(code);
sb.append("\t"+g.getCode()+"\t"+g.getName()+"\t"+format.format(g.getPrice())+"\n");
}
sb.append("**********************************\n");
System.out.println(sb.toString());
}
public static void main(String[] args) {
Wholesale w = new Wholesale();
w.run();
}
}
/***********************商品类******************************/
/**
* 商品类
*/
public class Goods {
/**商品编码*/
private Integer code;
/**商品名称*/
private String name;
/**商品单价*/
private Double price;
/**
* 以商品编码,名称,单价,构建一个商品对象.
* @param code 商品编码
* @param name 商品名称
* @param price 商品单价
*/
public Goods(Integer code, String name, Double price) {
super();
this.code = code;
this.name = name;
this.price = price;
}
public Integer getCode() {
return code;
}
public void setCode(Integer code) {
this.code = code;
}
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;
}
}
我的运行结果如图: