购物车
实体类
public class Goods {
private int id;//编号
private String name;//名称
private double price;//价格
private int number;//数量
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 getNumber() {
return number;
}
public void setNumber(int number) {
this.number = number;
}
public Goods(int id, String name, double price, int number) {
this.id = id;
this.name = name;
this.price = price;
this.number = number;
}
@Override
public String toString() {
return "编号是 "+ id + "\t商品名称是 " + name + "\t价格是 " + price + "\t数量是 " + number ;
}
}
service类
public class ShopCartService {
//定义一个数保存数组中存在的数量
int num = 1;
Goods[] goods;
public ShopCartService(int size) {
goods = new Goods[size];
goods[0] = new Goods(1, "鼠标", 250.2, 2);
}
//add
public boolean add(Goods good) {
if (num == goods.length) {
System.out.println("购物车已满请停止添加");
return false;
}
goods[num] = good;
num++;
return true;
}
//判断id是否重复
public boolean judgement(int id) {
for (int i = 0; i < num; i++) {
if (i == num - 1 && id != goods[i].getId()) {
return true;
}
}
return false;
}
//删除商品
public boolean delete(int id) {
int index = -1;
for (int i = 0; i < num; i++) {
if (id == goods[i].getId()) {
index = i;
}
}
//如果购物车中不存在该商品
if (index == -1) {
return false;
}
//如果购物车中存在该商品
for (int i = index; i < num; i++) {
goods[i] = goods[i + 1];
}
goods[num - 1] = null;
num--;
return true;
}
//修改商品 查找商品
public Goods find(int id) {
for (int i = 0; i < num; i++) {
if (id == goods[i].getId()) {
return goods[i];
}
}
return null;
}
//商品列表逻辑
public Goods[] list() {
return goods;
}
//根据id结算购物车
public double payId(int id) {
double sum = 0;
for (int i = 0; i < num; i++) {
if (id == goods[i].getId()) {
sum += (goods[i].getPrice() * goods[i].getNumber());
}
}
return sum;
}
//结算购物车
public double pay() {
double sum = 0;
for (int i = 0; i < num; i++) {
sum += (goods[i].getPrice() * goods[i].getNumber());
}
return sum;
}
}
view主菜单视图类
public class ShopCartView {
ShopCartService shopCartService = new ShopCartService(10);
//定义变量来执行主菜单循环
boolean loop = true;
//定义key接收用户输入
char key = ' ';
//添加商品
public void addShopCart() {
System.out.println();
System.out.println("========商品添加=======");
int id = 1;
boolean flag = true;
do {
System.out.println("商品编号(不重复)");
id = Utility.readInt();
if (shopCartService.judgement(id)) {
flag = false;
}
} while (flag);
System.out.println("商品名称");
String name = Utility.readString(10);
System.out.println("商品价格");
double price = Utility.readInt();
System.out.println("要购买的数量");
int num = Utility.readInt();
Goods goods = new Goods(id, name, price, num);
Goods[] goods1 = shopCartService.list();
if (shopCartService.add(goods)) {
System.out.println("商品添加成功");
} else {
System.out.println("商品添加失败");
}
}
//删除商品
public void deleteShop() {
System.out.println("请输入要删除的商品编号(-1退出)");
int deleteId = Utility.readInt();
if (deleteId == -1) {
System.out.println("===========放弃删除商品===========");
return;
}
if (!shopCartService.delete(deleteId)){
System.out.println("没有对应的您要删除的商品");
return;
}
System.out.println("真的确定要删除这个商品吗?(Y/N");
char choice = Utility.readConfirmSelection();
if (choice == 'Y') {
if (shopCartService.delete(deleteId)) {
System.out.println("删除商品成功");
}
} else {
System.out.println("===========放弃删除商品===========");
}
}
//修改商品
public void updateShop() {
System.out.println("请输入你要修改的商品id(-1退出)");
int updateId = Utility.readInt();
if (updateId == -1) {
System.out.println("===========放弃修改商品===========");
return;
}
Goods goods = shopCartService.find(updateId);
if (goods == null) {
System.out.println("要修改的商品不存在");
return;
}
//存在的情况
System.out.println("商品数量" + goods.getNumber());
System.out.println("商品数量");
int number = Utility.readInt(-1);
if (number != -1) {
goods.setNumber(number);
}
System.out.println("===========修改成功===========");
}
//商品列表
public void ShopCartList() {
System.out.println();
System.out.println("===========商品列表===========");
System.out.println();
Goods[] goods = shopCartService.list();
for (int i = 0; i < goods.length; i++) {
if (goods[i] == null) {
break;
}
System.out.println(goods[i] + " ");
}
System.out.println("\t\t\t商品列表显示完毕");
}
//查找商品
public void findShop() {
System.out.println("请输入你要查找的商品id(-1退出)");
int findId = Utility.readInt();
if (findId == -1) {
System.out.println("===========放弃查找商品===========");
return;
}
Goods goods = shopCartService.find(findId);
if (goods != null) {
System.out.println(goods);
} else {
System.out.println("要查找的商品不存在");
}
}
//结算购物车
public void payShop() {
System.out.println("===========购物车中商品信息如下===========");
System.out.println();
Goods[] goods = shopCartService.list();
for (int i = 0; i < goods.length; i++) {
if (goods[i] == null) {
break;
}
System.out.println(goods[i] + " ");
}
System.out.println("所购买的商品总金额是" + shopCartService.pay());
}
//根据id结算
public void payShopId(){
System.out.println("请输入你要结算的商品id(-1退出)");
int findId = Utility.readInt();
Goods goods = shopCartService.find(findId);
if (goods != null) {
System.out.println("===========购物车中商品信息如下===========");
System.out.println();
System.out.println(goods);
System.out.println("所购买的商品总金额是" + shopCartService.payId(findId));
} else {
System.out.println("要结算的商品不存在");
}
}
//退出系统
public void exit() {
char choice = Utility.readConfirmSelection();
if (choice == 'Y') {
loop = false;
}
}
public void mainEu() {
do {
System.out.println("==============购物车列表==============");
System.out.println("\t\t\t1、添加商品");
System.out.println("\t\t\t2、删除商品");
System.out.println("\t\t\t3、修改商品");
System.out.println("\t\t\t4、查找商品");
System.out.println("\t\t\t5、商品列表");
System.out.println("\t\t\t6、支 付");
System.out.println("\t\t\t7、退出系统");
System.out.println("请输入你要进行的操作");
key = Utility.readChar();
switch (key) {
case '1':
addShopCart();
break;
case '2':
deleteShop();
break;
case '3':
updateShop();
break;
case '4':
findShop();
break;
case '5':
ShopCartList();
break;
case '6':
// payShop();
payShopId();
break;
case '7':
exit();
break;
default:
System.out.println("您的输入有误请重新输入");
break;
}
} while (loop);
System.out.println("您退出了该系统");
}
}
接收键盘输入类
import java.util.Scanner;
/**
工具类的作用:
处理各种情况的用户输入,并且能够按照程序员的需求,得到用户的控制台输入。
*/
public class Utility {
//静态属性
private static Scanner scanner = new Scanner(System.in);
/**
* 功能:读取键盘输入的一个菜单选项,值:1——5的范围
* @return 1——5
*/
public static char readMenuSelection(){
char c ;
for (; ;){
String str = readKeyBoard(1,false);//包含一个字符的字符串
c = str.charAt(0);
if (c!='1'&&c!='2'&&c!='3'&c!='4'&c!='5'){
System.out.println("选择错误,请重新输入:");
}
else break;
}
return c;
}
/**
* 功能:读取键盘输入的一个字符
* @return 一个字符
*/
public static char readChar(){
String str = readKeyBoard(1,false);//读取字符
return str.charAt(0);
}
/**
* 功能:读取键盘输入的一个字符,如果直接按回车,则返回指定的默认值;否则返回输入的那个字符
* @param defaultValue 指定的默认值
* @return 默认值或输入的字符
*/
public static char readChar(char defaultValue){
String str = readKeyBoard(1,true);//读取结果不是字符就是一个空的字符串
return (str.length()==0)?defaultValue:str.charAt(0);
}
/**
* 功能:读取键盘输入的整型,长度小于2位
* @return 整数
*/
public static int readInt(){
int n;
for(; ;){
String str = readKeyBoard(10,true);//读取一个整数,长度<=10位
try {
n=Integer.parseInt(str);//进行转型,字符转换成整数
break;
}catch (NumberFormatException e){
System.out.println("数字输入的有错误,请重新输入!");
}
}return n;
}
/**
* 功能:读取键盘输入的 整数或默认值,如果直接回车,则返回默认值,否则返回输入的整数
*
* @param defaultValue 指定的默认值
* @return 整数或默认值
*
*/
public static int readInt(int defaultValue){
int n;
for(; ;){
String str = readKeyBoard(10,true);
if (str.equals("")){
return defaultValue;
}
//异常处理
try {
n = Integer.parseInt(str);
break;
}catch (NumberFormatException e){
System.out.println("数字输入的有错误,请重新输入!");
}
}
return n;
}
/**
* 功能:读取键盘输入的指定长度的字符串
* @param limit 限制的长度
* @return 指定长度的字符串
*/
public static String readString(int limit){
return readKeyBoard(limit,false);
}
/**
* 功能:读取键盘输入的指定长度的字符串或默认值,如果直接回车,返回默认值,否则返回字符串
* @param limit 限制的长度
* @param defaultValue 指定的默认值
* @return 指定长度的字符串
*/
public static String readString(int limit,String defaultValue){
String str = readKeyBoard(limit, true);
return str.equals("")? defaultValue : str;
}
/**
* 功能:读取键盘输入的确认选项,Y或N
* 将小的功能,封装到一个方法中.
* @return Y或N
*/
public static char readConfirmSelection(){
System.out.println("请输入你的选择(Y/N)");
char c ;
for(; ; ){
//将接受的字符转换成大写字母
String str = readKeyBoard(1,false).toUpperCase();
c = str.charAt(0);
if (c=='Y'||c=='N'){
break;
}else {
System.out.println("选择有错误,请重新输入!");
}
}
return c;
}
/**
* 功能: 读取一个字符串
* @param limit 读取的长度
* @param blankReturn 如果为true ,表示 可以读空字符串。
* 如果为false表示 不能读空字符串。
*
* 如果输入为空,或者输入大于limit的长度,就会提示重新输入。
* @return
*/
public static String readKeyBoard(int limit,boolean blankReturn){
//定义一个字符串
String line = "";
while (scanner.hasNextLine()){//判断是否有下一行
line = scanner.nextLine();
//如果line.length=0, 即用户没有输入任何内容,直接回车
if (line.length()==0){
if (blankReturn)return line;//如果blankReturn=true,可以返回空串
else continue; //如果blankReturn=false,不接受空串,必须输入内容
}
//如果用户输入的内容大于了 limit,就提示重写输入
//如果用户如的内容 >0 <= limit ,我就接受
if (line.length()<1||line.length()>limit){
System.out.print("输入长度(不能大于" + limit + ")错误,请重新输入:");
continue;
}
break;
}
return line;
}
}
测试类
public class ShopCartTest {
public static void main(String[] args) {
ShopCartView shopCartView = new ShopCartView();
shopCartView.mainEu();
}
}
###运行截图