java实现简单购物车,主要用到了集合知识,实现了增删改查
2017-11-30 00:00
519 查看
源代码如下:
商品类:
package org.jsoft.shoppingcar;
public class Goods {
private String name;
private double price;
private int num;
private int ID;
public int getID() {
return ID;
}
public void setID(int iD) {
ID = iD;
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
private String guiGe;
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 String getGuiGe() {
return guiGe;
}
public void setGuiGe(String guiGe) {
this.guiGe = guiGe;
}
public Goods(int ID,String name,double price,int num,String guiGe){
this.ID=ID;
this.name=name;
this.price=price;
this.num=num;
this.guiGe=guiGe;
}
public Goods(){}
public String toString(){
return this.getID()+"."+this.getName()+",价格:"+this.getPrice()+this.getGuiGe()+",数量:"+this.getNum();
}
}
购物类:
package org.jsoft.shoppingcar;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Scanner;
import java.util.regex.Pattern;
public class Shopping {
private List<Goods> list1=new ArrayList();//保存已有商品
private List<Goods> list2=new ArrayList();//保存购物车商品
private Map map=new HashMap();
public void menu(){
System.out.println("欢迎来到就要发购物商场!有以下商品供您选购,祝您购物愉快:");
Goods g1 = new Goods(1,"巧克力",20,5,"元/盒");
Goods g2 = new Goods(2,"麦片",25,6,"元/盒");
Goods g3 = new Goods(3,"橘子",1.5,10,"元/斤");
Goods g4 = new Goods(4,"苹果",2,20,"元/斤");
list1.add(g1);
list1.add(g2);
list1.add(g3);
display1(list1);
int choose=0;
Scanner sc = new Scanner(System.in);
while(choose!=5){
System.out.println("请输入您要选择的服务编号:");
System.out.println("1.购买商品 2.删除商品 3.修改已买商品数量 4.查看已买商品 5.去结算");
String str = sc.next();
if(isInteger(str)){
choose=Integer.parseInt(str);
if(choose>=1&&choose<=5){
switch(choose){
case 1:addGoods();break;
case 2:deleteGoods();break;
case 3:changeGoods();break;
case 4:displayGoods();break;
case 5:spendMoney();break;
default:System.out.println("输入数字");
}
}
else{
System.out.println("请输入指定的服务编号!");
}
}
else{
System.out.println("请输入指定的服务编号!");
}
}
System.out.println("欢迎下次再来!");
}
public void addGoods(){//解决重复购买商品数量的增加;购买数量为0时,不添加信息;问题不成立,第一次购买后,要想修改直接用3功能
System.out.println("请输入您要购买的商品编号:");
Scanner sc = new Scanner(System.in);
int ID=sc.nextInt();
Goods good=new Goods();
Goods good1=new Goods();
int i;
for(i=0;i<list1.size();i++){
Object obj = list1.get(i);
good= (Goods)obj;
if(good.getID()==ID){
break;
}
}
System.out.println("请输入购买数量:");
int num;
while(true){//判断输入数量大于已有数量
num=sc.nextInt();
if(num>good.getNum()){
System.out.println("对不起没有这么多存货,请重新输入数量:");
}else{
break;
}
}
if(num==good.getNum()){//把某个商品全部买完,则库存没有该商品
good1.setID(good.getID());
good1.setName(good.getName());
good1.setNum(num);
good1.setPrice(good.getPrice());
list2.add(good1);
list1.remove(i);
System.out.println("购买成功!");
System.out.println("剩余商品:");
display1(list1);
}else if(num==0){
System.out.println("购买成功!");
System.out.println("剩余商品:");
display1(list1);
}else{
good1.setID(good.getID());
good1.setName(good.getName());
good1.setNum(num);
good1.setPrice(good.getPrice());
list2.add(good1);
good.setNum(good.getNum()-num);//每个商品购买完后,修改库存的商品数
list1.remove(i);
list1.add(i, good);
System.out.println("购买成功!");
System.out.println("剩余商品:");
display1(list1);
}
}
public void deleteGoods(){
if(list2.size()==0){
System.out.println("购物车里空空如也!");
}else{
displayGoods();
System.out.println("请输入要删除的商品编号:");
Scanner sc = new Scanner(System.in);
int ID=sc.nextInt();
int i;
for(i=0;i<list2.size();i++){
Object obj = list1.get(i);
Goods good= (Goods)obj;
if(good.getID()==ID){
break;
}
}
list2.remove(i);
System.out.println("删除成功!");
}
}
public void changeGoods(){//如果某个商品的数量为零,则该商品在已购买中去除,完成;
if(list2.size()==0){
System.out.println("购物车里空空如也");
}else{
displayGoods();
System.out.println("请输入要修改的商品编号:");
Scanner sc=new Scanner(System.in);
int ID=sc.nextInt();
System.out.println("请输入要修改的数量:");
int num=sc.nextInt();
for(int i=0;i<list2.size();i++){
Object obj = list2.get(i);
Goods good= (Goods)obj;
if(good.getID()==ID){
if(num==0){
list2.remove(i);
}else{
good.setNum(num);
list2.remove(i);
list2.add(i, good);
}
System.out.println("修改成功!");
}
}
}
}
public void displayGoods(){
System.out.println("您已经购买以下商品:");
if(list2.size()==0){
System.out.println("购物车里空空如也");
}
Goods g=new Goods();
for(int i=0;i<list2.size();i++){
Object obj = list2.get(i);
g= (Goods)obj;
System.out.println(g.getID()+"."+g.getName()+",数量:"+g.getNum());
}
}
public void spendMoney(){
double sum=0;
for(int i=0;i<list2.size();i++){
Object obj = list2.get(i);
Goods good= (Goods)obj;
sum+=good.getPrice()*good.getNum();
System.out.println(good.getName()+",数量:"+good.getNum()+",金额:"+good.getPrice()*good.getNum());
}
if(sum==0){
System.out.println("您还什么都没买");
}else{
System.out.println("共计:"+sum);
System.out.println("请输入支付金额:");
Scanner sc=new Scanner(System.in);
double money=sc.nextDouble();
if(money>sum){
System.out.println("找零:"+(money-sum));
}
System.out.println("支付成功");
}
}
public boolean isInteger(String str) { //判断是不是整数
Pattern pattern = Pattern.compile("^[-\\+]?[\\d]*$");
return pattern.matcher(str).matches();
}
public void display1(List list){
for(int i=0;i<list.size();i++){
Object obj = list.get(i);
Goods good= (Goods)obj;
System.out.println(good);
}
}
}
测试类:
package org.jsoft.shoppingcar;
public class TestShopping {
public static void main(String[] args) {
Shopping shop = new Shopping();
shop.menu();
}
}
运行结果:
商品类:
package org.jsoft.shoppingcar;
public class Goods {
private String name;
private double price;
private int num;
private int ID;
public int getID() {
return ID;
}
public void setID(int iD) {
ID = iD;
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
private String guiGe;
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 String getGuiGe() {
return guiGe;
}
public void setGuiGe(String guiGe) {
this.guiGe = guiGe;
}
public Goods(int ID,String name,double price,int num,String guiGe){
this.ID=ID;
this.name=name;
this.price=price;
this.num=num;
this.guiGe=guiGe;
}
public Goods(){}
public String toString(){
return this.getID()+"."+this.getName()+",价格:"+this.getPrice()+this.getGuiGe()+",数量:"+this.getNum();
}
}
购物类:
package org.jsoft.shoppingcar;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Scanner;
import java.util.regex.Pattern;
public class Shopping {
private List<Goods> list1=new ArrayList();//保存已有商品
private List<Goods> list2=new ArrayList();//保存购物车商品
private Map map=new HashMap();
public void menu(){
System.out.println("欢迎来到就要发购物商场!有以下商品供您选购,祝您购物愉快:");
Goods g1 = new Goods(1,"巧克力",20,5,"元/盒");
Goods g2 = new Goods(2,"麦片",25,6,"元/盒");
Goods g3 = new Goods(3,"橘子",1.5,10,"元/斤");
Goods g4 = new Goods(4,"苹果",2,20,"元/斤");
list1.add(g1);
list1.add(g2);
list1.add(g3);
display1(list1);
int choose=0;
Scanner sc = new Scanner(System.in);
while(choose!=5){
System.out.println("请输入您要选择的服务编号:");
System.out.println("1.购买商品 2.删除商品 3.修改已买商品数量 4.查看已买商品 5.去结算");
String str = sc.next();
if(isInteger(str)){
choose=Integer.parseInt(str);
if(choose>=1&&choose<=5){
switch(choose){
case 1:addGoods();break;
case 2:deleteGoods();break;
case 3:changeGoods();break;
case 4:displayGoods();break;
case 5:spendMoney();break;
default:System.out.println("输入数字");
}
}
else{
System.out.println("请输入指定的服务编号!");
}
}
else{
System.out.println("请输入指定的服务编号!");
}
}
System.out.println("欢迎下次再来!");
}
public void addGoods(){//解决重复购买商品数量的增加;购买数量为0时,不添加信息;问题不成立,第一次购买后,要想修改直接用3功能
System.out.println("请输入您要购买的商品编号:");
Scanner sc = new Scanner(System.in);
int ID=sc.nextInt();
Goods good=new Goods();
Goods good1=new Goods();
int i;
for(i=0;i<list1.size();i++){
Object obj = list1.get(i);
good= (Goods)obj;
if(good.getID()==ID){
break;
}
}
System.out.println("请输入购买数量:");
int num;
while(true){//判断输入数量大于已有数量
num=sc.nextInt();
if(num>good.getNum()){
System.out.println("对不起没有这么多存货,请重新输入数量:");
}else{
break;
}
}
if(num==good.getNum()){//把某个商品全部买完,则库存没有该商品
good1.setID(good.getID());
good1.setName(good.getName());
good1.setNum(num);
good1.setPrice(good.getPrice());
list2.add(good1);
list1.remove(i);
System.out.println("购买成功!");
System.out.println("剩余商品:");
display1(list1);
}else if(num==0){
System.out.println("购买成功!");
System.out.println("剩余商品:");
display1(list1);
}else{
good1.setID(good.getID());
good1.setName(good.getName());
good1.setNum(num);
good1.setPrice(good.getPrice());
list2.add(good1);
good.setNum(good.getNum()-num);//每个商品购买完后,修改库存的商品数
list1.remove(i);
list1.add(i, good);
System.out.println("购买成功!");
System.out.println("剩余商品:");
display1(list1);
}
}
public void deleteGoods(){
if(list2.size()==0){
System.out.println("购物车里空空如也!");
}else{
displayGoods();
System.out.println("请输入要删除的商品编号:");
Scanner sc = new Scanner(System.in);
int ID=sc.nextInt();
int i;
for(i=0;i<list2.size();i++){
Object obj = list1.get(i);
Goods good= (Goods)obj;
if(good.getID()==ID){
break;
}
}
list2.remove(i);
System.out.println("删除成功!");
}
}
public void changeGoods(){//如果某个商品的数量为零,则该商品在已购买中去除,完成;
if(list2.size()==0){
System.out.println("购物车里空空如也");
}else{
displayGoods();
System.out.println("请输入要修改的商品编号:");
Scanner sc=new Scanner(System.in);
int ID=sc.nextInt();
System.out.println("请输入要修改的数量:");
int num=sc.nextInt();
for(int i=0;i<list2.size();i++){
Object obj = list2.get(i);
Goods good= (Goods)obj;
if(good.getID()==ID){
if(num==0){
list2.remove(i);
}else{
good.setNum(num);
list2.remove(i);
list2.add(i, good);
}
System.out.println("修改成功!");
}
}
}
}
public void displayGoods(){
System.out.println("您已经购买以下商品:");
if(list2.size()==0){
System.out.println("购物车里空空如也");
}
Goods g=new Goods();
for(int i=0;i<list2.size();i++){
Object obj = list2.get(i);
g= (Goods)obj;
System.out.println(g.getID()+"."+g.getName()+",数量:"+g.getNum());
}
}
public void spendMoney(){
double sum=0;
for(int i=0;i<list2.size();i++){
Object obj = list2.get(i);
Goods good= (Goods)obj;
sum+=good.getPrice()*good.getNum();
System.out.println(good.getName()+",数量:"+good.getNum()+",金额:"+good.getPrice()*good.getNum());
}
if(sum==0){
System.out.println("您还什么都没买");
}else{
System.out.println("共计:"+sum);
System.out.println("请输入支付金额:");
Scanner sc=new Scanner(System.in);
double money=sc.nextDouble();
if(money>sum){
System.out.println("找零:"+(money-sum));
}
System.out.println("支付成功");
}
}
public boolean isInteger(String str) { //判断是不是整数
Pattern pattern = Pattern.compile("^[-\\+]?[\\d]*$");
return pattern.matcher(str).matches();
}
public void display1(List list){
for(int i=0;i<list.size();i++){
Object obj = list.get(i);
Goods good= (Goods)obj;
System.out.println(good);
}
}
}
测试类:
package org.jsoft.shoppingcar;
public class TestShopping {
public static void main(String[] args) {
Shopping shop = new Shopping();
shop.menu();
}
}
运行结果:
相关文章推荐
- Java基础知识强化之集合框架笔记47:Set集合之TreeSet保证元素唯一性和比较器排序的原理及代码实现(比较器排序)
- [java]增删改查后给出操作提示后跳转到数据列表的小问题解决[简单实现]
- Java基础知识:Java实现Map集合二级联动4
- Java基础知识:Java实现Map集合二级联动2
- Java WebSocket 基础知识点及简单实现
- 深入Java集合学习系列:ConcurrentHashSet简单实现
- 利用JAVA数组模拟集合实现简单的对象数组的添加
- salesforce 零基础学习(五十一)使用 Salesforce.com SOAP API 实现用户登录以及简单的增删改查(JAVA访问salesforce)
- JAVA集合Hashtable实现类Properties简单练习
- java(jsp)简单实现数据库学生信息的增删改查案例
- 在一个程序中需要用到全局变量(在多个class之间共享数据),请问如何定义具有这种功能的变量?或者是否有其他的方法解决多个class之间的数据共享(尽量简单实现)。 首先应该明确 Java中没有全局变
- JAVA重点知识集合的简单总结,望高手斧正
- Java 集合的简单实现 (ArrayList & LinkedList & Queue & Stack)
- java8集合框架LinkedList类实现自己简单的理解
- Java基础知识:Java实现Map集合二级联动1
- 简单的Java Web项目(2)——session实现简单的购物车
- JAVA-day08 上午-集合零散知识、集合实现贪吃蛇
- JavaWeb基础+oracle实现简单简单分页商品浏览与加入购物车系统
- Java基础知识强化之集合框架笔记29:使用LinkedList实现栈数据结构的集合代码(面试题)
- Java基础知识:Java实现Map集合二级联动3