基于面向对象的方式编程
根据商城菜单分析如下的对象的内容:
对象 | 属性 | 行为 |
用户 | 用户名和密码 | 注册,登录,购买,查看 |
管理员 | 用户名和密码 | 添加,修改,删除 |
商城 | 当前登录用户 管理员 商品集合 用户集合 扫描器 |
显示菜单的方法 获取用户输入的菜单 判断用户输入的菜单 |
商品 | 编号,名称,价格,数量 |
User类:
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Scanner;
/**
* User
* 这个been类实现了Serializable这个接口(实现文件读写(序列化))
* 所具有的属性:用户名,密码
* 所具有的行为:注册,登录,购买,查看
* @author
*
*/
public class User implements Serializable{
String username;
String userpwd;
Goods goods = new Goods();
//验证是否登录
private boolean isLogin;
public boolean isLogin() {
return isLogin;
}
public void setLogin(boolean isLogin) {
this.isLogin = isLogin;
}
/*
* 校验用户名合法性
*/
private boolean checkUsername(String username) {
//定义一个为false的bool值
boolean res = false;
//用户名长度不满6位,则重新输入
if (username.length() != 6) {
System.out.println("用户名长度必须为6位");
return res;
} else if (Character.isDigit(username.charAt(0))) {//用户名不能以数字开头,则重新输入
System.out.println("用户名不能以数字开头");
return res;
} else {
//成功,返回true,继续下一步操作
return res = true;
}
}
/*
* 购买商品的方法
*/
public void buy() {
while (true) {
System.out.println("请选择您需要购买商品的编号:");
int id = Shop.sc.nextInt();
System.out.println("您将要的购买的商品信息如下:");
Goods shopGoods = this.findGoodsById(id);
System.out.println(shopGoods);
System.out.println("请输入您需要购买商品的数量:");
int num = Shop.sc.nextInt();
Goods myGoods = new Goods();
// myGoods.setId(shopGoods.getId());
// myGoods.setName(shopGoods.getName());
// myGoods.setPrice(shopGoods.getPrice());
//通过clone()方法,就省去了以上备注释的内容
myGoods = shopGoods.clone();
myGoods.setNum(num);
//将已选择的商品添加到我的商品集合中
Shop.myGoodsList.add(myGoods);
System.out.println("是否继续Y/N");
String choice = Shop.sc.next();
choice = choice.toUpperCase();
if (choice.equals("N")) {
break;
}
}
this.showMyGoodsList();
}
/*
* 展示已购买的商品信息
*/
private void showMyGoodsList() {
System.out.println("******您购买的商品列表如下******");
BigDecimal total = new BigDecimal("0");
for (Goods myGoods : Shop.myGoodsList) {
System.out.println(myGoods);
//将在buy()方法中储存的信息提取出来,获取商品的价格
BigDecimal price = myGoods.getPrice();
//获取商品的数量
int num = myGoods.getNum();
//计算
total = total.add(price.multiply(new BigDecimal(num)));
//total = total.add(myGoods.getPrice().multiply(new BigDecimal(myGoods.getNum())));
}
System.out.println("总价格为:" + total);
}
/*
* 注册方法
*/
public void registUser() {
//校