面向对象设计大作业:购物车(第一次)
目录
目录
1. 人员分工
| 成员 | 任务分工 |
|---|---|
| 张文娟 | 完成项目包括结构和关键代码的编写,前期调查,解释封装性的体现 |
| 王宇坤 | 完成系统描述和功能设计,博客的编写,代码规范 |
2. 前期调查
我们以京东商城为例,演示从查找商品、选择商品并加入购物车,然后在购物车内进行查看、添加、删除、结算的全过程。
- 查找商品

2. 选择商品及商品数量并加入购物车

3. 在购物车内进行查看、添加、删除、结算的全过程

3. 系统描述
购物车系统能够满足买家和店家的不同需求:
店家:可以添加、删除、更改可供买家选购的商品信息(编号、名称、价格、数量)
买家:可以根据卖家提供出的商品信息来选购商品的编号、名称、价格、数量,然后添加到购物车中
在购物车中可以更改、添加、删除已经选购的商品信息,最后会核算出选购的商品的总价格
4. 系统功能流程图


5. UML类图

6. 本系统哪里体现了面向对象的封装性
class Goods{
private Integer id;
private String name;
private Double price;
private Integer number;
7. 关键代码
购物车系统(cart)
package supermarket;
import java.util.Scanner;
import java.util.Map;
import java.util.HashMap;
public class Cart {
public static void Choose() {
System.out.println("请选择您的身份哦~");
System.out.println("1----我是店主");
System.out.println("2----我是买家");
Scanner sc=new Scanner(System.in);
int choose=sc.nextInt();
if(choose==1) {
System.out.println("请输入6位密码");
int password=sc.nextInt();
if(password==220022) {
System.out.println("密码输入正确,今天上班也要积极哦!!!");
Manager.Show();
}
else {System.out.println("很抱歉,密码输入错误");
Choose();
}
}
else if(choose==2)User.userMenu();
else System.out.println("没有这个选项哦,请重新选择");
}
//选择身份
Map<Integer,Goods> al=new HashMap<Integer,Goods>();
//添加进主菜单
public void Content1() {
Scanner sc=new Scanner(System.in);
System.out.println("请输入商品的ID");
Integer id = sc.nextInt();
Goods m=new Goods();
if(al.containsKey(id)) {
al.get(id).setNumber((al.get(id).getNumber()+1));
}
else {
m.setId(id);
System.out.println("请输入商品的名字");
String name = sc.next();
m.setName(name);
System.out.println("请输入商品的价格");
double price2 = sc.nextDouble();
m.setPrice(price2);
m.setNumber(1);
al.put(id, m);
}
// sc.close();
}
//添加商品
public void showMenu() {
//Scanner sc = new Scanner(System.in);
for (int i = 0; i < 10; i++) {
Goods m = new Goods();
switch (i) {
case 0:
m.setId(i);
m.setName("铅笔");
m.setPrice(2.00);
m.setNumber(10);
al.put(i,m);
break;
case 1:
m.setId(i);
m.setName("橡皮");
m.setPrice(1.00);
m.setNumber(10);
al.put(i,m);
break;
case 2:
m.setId(i);
m.setName("明信片");
m.setPrice(10.00);
m.setNumber(10);
al.put(i,m);
break;
case 3:
m.setId(i);
m.setName("笔记本");
m.setPrice(6.00);
m.setNumber(10);
al.put(i,m);
break;
case 4:
m.setId(i);
m.setName("小台灯");
m.setPrice(20.00);
m.setNumber(10);
al.put(i,m);
break;
case 5:
m.setId(i);
m.setName("卡通小杯子");
m.setPrice(25.00);
m.setNumber(10);
al.put(i,m);
break;
case 6:
m.setId(i);
m.setName("水晶球");
m.setPrice(15.00);
m.setNumber(10);
al.put(i,m);
break;
case 7:
m.setId(i);
m.setName("水性笔");
m.setPrice(1.50);
m.setNumber(10);
al.put(i,m);
break;
case 8:
m.setId(i);
m.setName("口罩");
m.setPrice(0.50);
m.setNumber(10);
al.put(i,m);
break;
case 9:
m.setId(i);
m.setName("便利贴");
m.setPrice(2.5);
m.setNumber(10);
al.put(i,m);
break;
case 10:
m.setId(i);
m.setName("书签");
m.setPrice(2.00);
m.setNumber(10);
al.put(i,m);
break;
}
}
}
//查看店内商品
public void viewOne() {
System.out.println("请输入要查看商品的ID");
Scanner sc=new Scanner(System.in);
Integer id = sc.nextInt();
System.out.println("Id\t名字\t价格\t数量");
System.out.println(al.get(id).getId()+"\t"+al.get(id).getName()+"\t"+al.get(id).getPrice()+"\t"+al.get(id).getNumber());
//sc.close();
}
//查看指定商品
public void Delete(){
System.out.println("请输入要删除的商品的ID");
Scanner sc=new Scanner(System.in);
Integer id = sc.nextInt();
if(al.containsKey(id)) {
al.remove(id);
System.out.println("删除成功!");
}else {
System.out.println("没有这个商品!");
}
//sc.close();
}
//删除指定商品
public void viewCart() {
for(Goods g:al.values()) {
System.out.println("ID\t名字\t价格\t数量");
System.out.println(g.getId()+"\t"+g.getName()+"\t"+g.getPrice()+"\t"+g.getNumber());
}
}
//查看购物车信息
public static void main(String[] args) {
Cart myg=new Cart();
Scanner sc =new Scanner(System.in);
//myg.menu();
myg.Choose();
/*Integer it = sc.nextInt();
switch(it) {
case 0: myg.showmenu();
myg.viewcart();
break;
case 1: myg.cun();
break;
case 2:myg.viewone();
break;
case 3:myg.delete();
break;
case 4:myg.viewcart();
break;
case 5:
myg.allmoney();
break;
case 6:
myg.endmenu();
break;
default:System.out.println("您的输入有误,还请重新输入哦");
break;
}*/
}
}
class Goods{
private Integer id;
private String name;
private Double price;
private Integer number;
Goods(){}
public Integer getId() {
return id;
}
public void setId(Integer 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 Integer getNumber() {
return number;
}
public void setNumber(Integer number) {
this.number=number;
}
public Goods(Integer id, String name, Double price, Integer number) {
super();
this.id = id;
this.name = name;
this.price = price;
this.number = number;
}
}
店主(manager)
package supermarket;
import java.util.Scanner;
import java.util.Map;
import java.util.HashMap;
public class Manager {
public static void Show() {
Cart man = new Cart();
man.showMenu();
Scanner sc = new Scanner(System.in);
do {
System.out.println("请按照指示选择功能~");
System.out.println("0----查看店内所有商品");
System.out.println("1----添加商品的库存或种类");
System.out.println("2----查看指定商品信息");
System.out.println("3----删除店内的商品");
System.out.println("4----退出登录");
Integer a = sc.nextInt();
if (a == 0) {
//man.showMenu();
man.viewCart();
}
else if (a == 1)
man.Content1();
else if(a==2)man.viewOne();
else if (a == 3)
man.Delete();
else if (a == 4)
Back();
else
System.out.println("并没有这个选项哦");
}while(true);
}
// manager的操作流程
public static void Back() {
System.out.println("您真的要退出了吗?");
System.out.println("1----确认退出");
System.out.println("2----再看看吧");
Scanner sb = new Scanner(System.in);
Integer b = sb.nextInt();
if (b == 1) {
System.out.println("请确认今天的工作都准确无误哦!");
System.out.println("下次也不要忘了来店里看看商品种类和库存啊主人!");
Cart.Choose();
}
else if (b == 2)
Manager.Show();
else {
System.out.println("输错啦输错啦");
Manager.Show();
}
}
}
//结束菜单
买家(user)
package supermarket;
import java.util.Scanner;
import java.util.Map;
import java.util.HashMap;
public class User {
private static Cart use2;
public static void userMenu()
{
User use1=new User();
use2=new Cart();
use2.showMenu();
do {
System.out.println("------------------------------------------------");
System.out.println("欢迎来到张望网上购物中心~");
System.out.println("------------------------------------------------");
System.out.println("来看看喜欢什么呀!");
System.out.println("请按照以下的序号选择想要做的事哦~");
System.out.println("[0]看看店里都有啥");
System.out.println("[1]查看指定商品详情");
System.out.println("[2]添加该商品到购物车");
System.out.println("[3]从购物车中删除该商品");
System.out.println("[4]查看购物车中的所有商品");
System.out.println("[5]结算购物车总价");
System.out.println("[6]清除购物车");
System.out.println("[7]离开本店");
Scanner sd=new Scanner(System.in);
Integer c=sd.nextInt();
if(c==0) {
use2.viewCart();
}
else if(c==1)use2.viewOne();
else if(c==2)use1.Content2();
else if(c==3)use1.deleteCart();
else if(c==4)use1.showCart();
else if(c==5)use1.Calculate();
else if(c==6)use1.Clear();
else if(c==7)endMenu();
}while(true);
}
//主菜单
Map<Integer, Goods> a2=new HashMap<Integer,Goods>();
public void Content2() {
Scanner sc=new Scanner(System.in);
Goods n=new Goods();
System.out.println("请输入想要添加商品的ID");
Integer id = sc.nextInt();
System.out.println("请问您确定要添加该商品吗?");
System.out.println("0----再想想");
System.out.println("1----确认添加");
Integer answer=sc.nextInt();
if(answer==0)userMenu();
else if(answer==1) {
if(a2.containsKey(id)) {
System.out.println("购物车中已有该商品,商品数量+1");
a2.get(id).setNumber((a2.get(id).getNumber()+1));
}
else {
n.setId(id);
n.setName(use2.al.get(id).getName());
n.setPrice(use2.al.get(id).getPrice());
n.setNumber(1);
a2.put(id,n);
System.out.println("添加成功!");
}
}
else {
System.out.println("对不起,没有这个选项哦");
userMenu();
}
}
public void deleteCart() {
System.out.println("请输入想要从购物车中删除的商品的ID");
Scanner sc=new Scanner(System.in);
Integer id = sc.nextInt();
if(a2.containsKey(id)) {
a2.remove(id);
System.out.println("删除成功!");
}else {
System.out.println("没有这个商品!");
}
}
public void Calculate()
{
int i;
double sum=0;
for(Map.Entry<Integer, Goods> entry : a2.entrySet()){
sum+=entry.getValue().getPrice()*entry.getValue().getNumber();
}
System.out.println("购物车总价为"+sum);
}
public void showCart() {
for(Goods k:a2.values()) {
System.out.println("ID\t名字\t价格\t数量");
System.out.println(k.getId()+"\t"+k.getName()+"\t"+k.getPrice()+"\t"+k.getNumber());
}
}
public void Clear()
{
System.out.println("请问您确认要删除购物车吗?");
System.out.println("0----再想想");
System.out.println("1----确定删除");
Scanner sc=new Scanner(System.in);
int cleara;
cleara=sc.nextInt();
if(cleara==0)userMenu();
else if(cleara==1) {a2.clear();
System.out.println("删除成功!");
}
else {System.out.println("对不起,没有这个选项哦");
userMenu();
}
}
public static void endMenu()
{
System.out.println("------------------------------------------------");
System.out.println("希望本次购物愉快!!!");
System.out.println("欢迎下次光临~");
System.out.println("------------------------------------------------");
Cart.Choose();
}
}
8. 运行结果展示
主菜单
店主
买家

店主页面及功能

查看店内所有商品

添加商品库存或种类



查看指定商品信息

删除店内的商品

退出登录

买家页面及功能

看看店里都有啥

查看指定商品详情

添加该商品到购物车

从购物车中删除该商品
查看购物车中的所有商品并结算购物车总价

清除购物车

离开本店

浙公网安备 33010602011771号