Java面向对象程序设计–购物车系统
人员分配
任务 | 人员 |
---|---|
前期调查与功能设计、UML图、系统功能结构图 | 贡觉桑旦 |
代码编写、博客制作 | 史东成 |
前期调查
京东商城购物车:
购物车最主要的功能为商品条目显示、商品小计、商品数量累加、商品单价显示、商品总价。每添加一件不同的商品到购物车中,购物车会生成一个条目,条目中显示商品名、单价、商品数量以及小计。购物车中还包括删除商品的功能,也就是直接删除一件商品的条目。
编码规范:
代码中的命名严禁使用拼音与英文混合的方式,更不允许直接使用中文的方式。说明:正确的英文拼写和语法可以让阅读者易于理解,避免歧义。注意,即使纯拼音命名方式也要避免采用。
正例:alibaba / taobao / youku / hangzhou 等国际通用的名称,可视同英文。
反例:DaZhePromotion [打折] / getPingfenByName() [评分] / int 某变量 = 3
类名使用 UpperCamelCase 风格,必须遵从驼峰形式,但以下情形例外:DO / BO /DTO / VO / AO
正例:MarcoPolo / UserDO / XmlService / TcpUdpDeal / TaPromotion
反例:macroPolo / UserDo / XMLService / TCPUDPDeal / TAPromotion
方法名、参数名、成员变量、局部变量都统一使用 lowerCamelCase 风格,必须遵从驼峰形式。
正例: localValue / getHttpMessage() / inputUserId
包名统一使用小写,点分隔符之间有且仅有一个自然语义的英语单词。包名统一使用单数形式,但是类名如果有复数含义,类名可以使用复数形式。
正例: 应用工具类包名为 com.alibaba.open.util、类名为 essageUtils(此规则参考spring 的框架结构)
各层命名规约:
A) Service/DAO 层方法命名规约
1) 获取单个对象的方法用 get 做前缀。
2) 获取多个对象的方法用 list 做前缀。
3) 获取统计值的方法用 count 做前缀。
4) 插入的方法用 save/insert 做前缀。
5) 删除的方法用 remove/delete 做前缀。
6) 修改的方法用 update 做前缀。
B) 领域模型命名规约
1) 数据对象:xxxDO,xxx 即为数据表名。
2) 数据传输对象:xxxDTO,xxx 为业务领域相关的名称。
3) 展示对象:xxxVO,xxx 一般为网页名称。
4) POJO 是 DO/DTO/BO/VO 的统称,禁止命名成 xxxPOJO。
结构功能图:
系统功能
功能1:根据商品名称增加商品进购物车
功能2:根据商品编号增加商品进购物车
功能3:根据商品名称删除购物车内商品
功能4:根据商品编号删除购物车内商品
功能5:根据商品名称减少购物车内商品数量
功能6:根据商品编号减少购物车内商品数量
功能7:清空购物车
功能8:显示购物车内的商品
UML类图:
流程图:
删除购物车内商品:
减少购物车内商品数量:
显示购物车内商品 :
封装性体现:
商品名称、单价是购物车中商品的基本属性,这些属性在程序的运行过程中是不可改变的,面向对象的封装性把类内部的信息统一保护起来,防止外包随意修改内部数据,保证数据的安全性。
主要代码结构:
1.shopping package
Main class
package shopping;
import java.util.Scanner;
import functiondisplay.Display;
import shoppingcart.ShoppingCart;
public class Main {
private static Scanner in;
public static void main(String[] args) {
in = new Scanner(System.in);
ShoppingCart.list();
Display.begin(args);
int Choose = in.nextInt();
//System.out.println(Choose);
while(Choose!=7)
{
switch (Choose) {
case 1:
Display.showYourShoppingCart(args);
break;
case 2:
ShoppingCart.EmptyShoppingCart();
break;
case 3:
System.out.print("输入您要查询的商品名称:");
String name1= in.nextLine();
int theID1=ShoppingCart.FindTheNameOfCommodity(name1);
if(theID1>=0&&theID1<=9)
{
Display.showTheCommodities(theID1);
}
else
{
System.out.println("未能找到您说要找的商品,请确认您的输入是否正确!");
}
break;
case 4:
System.out.print("输入您要查询的商品编号:");
int id1=in.nextInt();
int theID2=ShoppingCart.FindTheIDOfCommodity(id1);
if(theID2>=0&&theID2<=9)
{
Display.showTheCommodities(theID2);
}
else
{
System.out.println("未能找到您说要找的商品,请确认您的输入是否正确!");
}
break;
case 5:
System.out.print("输入您要结算的商品编号或名称,编号请输入1/名称请输入2:");
int cho1=in.nextInt();
switch(cho1) {
case 1:
System.out.print("输入您要结算的商品编号:");
int id2=in.nextInt();
if(id2>=0&&id2<=9)
{
if(ShoppingCart.yourShoppingCart[id2]!=0)
{
System.out.print("您要结算的商品编号:");
ShoppingCart.FindTheIDOfCommodity(id2);
System.out.println("您购买的数量为"+ShoppingCart.yourShoppingCart[id2]+"所以您所需要支付的总价为"+(ShoppingCart.yourShoppingCart[id2]*ShoppingCart.priceOfCommodities[id2]));
System.out.print("您确定要支付吗?确定请输入1/否定请输入2:");
int cho11=in.nextInt();
switch(cho11) {
case 1:
ShoppingCart.yourShoppingCart[id2]=0;
System.out.println("购买成功!");
break;
case 2:
System.out.println("购买失败!");
break;
default:
System.out.println("只能输入1或2,请确认您的输入是否正确!");
break;
}
}
}
else
{
System.out.println("请确定您所输入的商品编号是否正确!");
}
break;
case 2:
System.out.print("输入您要结算的商品名称:");
String name2= in.nextLine();
int id3=-1;
if(ShoppingCart.FindTheNameOfCommodity(name2)>0)
{
id3=ShoppingCart.FindTheNameOfCommodity(name2);
System.out.println("您购买的数量为"+ShoppingCart.yourShoppingCart[id3]+"故您所需要支付的总价为"+(ShoppingCart.yourShoppingCart[id3]*ShoppingCart.priceOfCommodities[id3]));
System.out.print("您确定要支付吗?确定请输入1/否定请输入2:");
int cho11=in.nextInt();
switch(cho11) {
case 1:
ShoppingCart.yourShoppingCart[id3]=0;
System.out.println("购买成功!");
break;
case 2:
System.out.println("购买失败!");
break;
default:
System.out.println("只能输入1或2,请确认您的输入是否正确!");
break;
}
}
else
{
System.out.println("请确定您所输入的商品名称是否正确!");
}
break;
default:
System.out.println("只能输入1或2,请确认您的输入是否正确!");
break;
}
break;
case 6:
Display.showList(args);
System.out.print("您需要将某商品加入购物车吗?需要请输入1/否则请输入2:");
int cho11=in.nextInt();
switch(cho11) {
case 1:
System.out.print("输入您要加入的商品编号或名称,编号请输入1/名称请输入2:");
int cho12=in.nextInt();
switch(cho12) {
case 1:
System.out.print("您要加入的商品编号:");
int cho121=in.nextInt();
if(cho121>=0&&cho121<=9)
{
System.out.print("请输入您要添加的数量:");
int cho1211=in.nextInt();
ShoppingCart.yourShoppingCart[cho121]=cho1211;
System.out.println("添加成功!");
}
else
{
System.out.println("您的输入有误!");
}
break;
case 2:
System.out.print("您要加入的商品名称:");
String cho122=in.nextLine();
int cho1221=ShoppingCart.FindTheNameOfCommodity(cho122);
if(cho1221>=0&&cho1221<=9)
{
System.out.print("请输入您要添加的数量:");
int cho1222=in.nextInt();
ShoppingCart.yourShoppingCart[cho1221]=cho1222;
System.out.println("添加成功!");
}
else
{
System.out.println("您的输入有误!");
}
break;
default:
System.out.println("只能输入1或2,请确认您的输入是否正确!");
}
break;
case 2:
System.out.println("添加失败!");
break;
default:
System.out.println("只能输入1或2,请确认您的输入是否正确!");
break;
}
break;
case 7:
return;
default:
System.out.println("请确定您的输入是否正确!");
break;
}
Display.begin(args);
Choose = in.nextInt();
}
}
}
2.shoppingcart package
ShoppingCart class
package shoppingcart;
public class ShoppingCart {
public static int[] priceOfCommodities = new int[10];
public static String[] nameOfCommodities = new String[10];
public static int[] yourShoppingCart = new int[10];
public static void list() {
for (int i = 0; i < 10; i++) {
yourShoppingCart[i]=0;
switch (i) {
case 0:
nameOfCommodities[i] = "华为NFC手环赤茶橘";
priceOfCommodities[i] = 350;
break;
case 1:
nameOfCommodities[i] = "小米NFC手环热力橙";
priceOfCommodities[i] = 269;
break;
case 2:
nameOfCommodities[i] = "YONEX锐速NR200A白色";
priceOfCommodities[i] = 585;
break;
case 3:
nameOfCommodities[i] = "YONEX疾光NF160蓝色";
priceOfCommodities[i] = 340;
break;
case 4:
nameOfCommodities[i] = "李宁悟道2";
priceOfCommodities[i] = 999;
break;
case 5:
nameOfCommodities[i] = "安踏KT3";
priceOfCommodities[i] = 429;
break;
case 6:
nameOfCommodities[i] = "阿米洛鸯红轴108键";
priceOfCommodities[i] = 969;
break;
case 7:
nameOfCommodities[i] = "阿米洛海韵粉轴87键";
priceOfCommodities[i] = 749;
break;
case 8:
nameOfCommodities[i] = "罗技GPW";
priceOfCommodities[i] = 599;
break;
case 9:
nameOfCommodities[i] = "雷蛇蝰蛇V2";
priceOfCommodities[i] = 469;
break;
}
}
}
public static void EmptyShoppingCart() {
for(int i=0;i<10;i++)
{
yourShoppingCart[i]=0;
}
}
public static int FindTheNameOfCommodity(String name) {
for(int i=0;i<10;i++)
{
if(name.equals(nameOfCommodities[i]))
{
//System.out.println("找到了该商品,商品编号、名称、价格依次如下:");
//System.out.println(i+" | "+nameOfCommodities[i]+" | "+priceOfCommodities[i]);
return i;
}
}
//System.out.println("未能找到您说要找的商品,请确认您的输入是否正确!");
return -1;
}
public static int FindTheIDOfCommodity(int id) {
switch (id) {
case 0:
//System.out.println(id+" | "+nameOfCommodities[id]+" | "+priceOfCommodities[id]);
return id;
case 1:
//System.out.println(id+" | "+nameOfCommodities[id]+" | "+priceOfCommodities[id]);
return id;
case 2:
//System.out.println(id+" | "+nameOfCommodities[id]+" | "+priceOfCommodities[id]);
return id;
case 3:
//System.out.println(id+" | "+nameOfCommodities[id]+" | "+priceOfCommodities[id]);
return id;
case 4:
//System.out.println(id+" | "+nameOfCommodities[id]+" | "+priceOfCommodities[id]);
return id;
case 5:
//System.out.println(id+" | "+nameOfCommodities[id]+" | "+priceOfCommodities[id]);
return id;
case 6:
//System.out.println(id+" | "+nameOfCommodities[id]+" | "+priceOfCommodities[id]);
return id;
case 7:
//System.out.println(id+" | "+nameOfCommodities[id]+" | "+priceOfCommodities[id]);
return id;
case 8:
//System.out.println(id+" | "+nameOfCommodities[id]+" | "+priceOfCommodities[id]);
return id;
case 9:
//System.out.println(id+" | "+nameOfCommodities[id]+" | "+priceOfCommodities[id]);
return id;
default:
System.out.println("未能找到您说要找的商品,请确认您的输入是否正确!");
return -1;
}
}
}
3.functiondisplay package
Display class
package functiondisplay;
import shoppingcart.ShoppingCart;
public class Display {
public static void begin(String[] args) {
System.out.println("请选择你所需要实现的功能:");
System.out.println("(1)查看购物车");
System.out.println("(2)清空购物车");
System.out.println("(3)查询商品名(Name)");
System.out.println("(4)查询商品编号(ID)");
System.out.println("(5)结算部分商品");
System.out.println("(6)查看所有商品并可选择部分商品将其加入购物车");
System.out.println("(7)结束");
System.out.print("请输入选项:");
}
public static void end(String[] args) {
System.out.println("===================================");
System.out.println("============谢谢您的使用,再见!===========");
System.out.println("===================================");
}
public static void showList(String[] args) {
System.out.println("商品编号 商品名 商品价格");
for(int i=0;i<10;i++)
{
System.out.println(i+" | "+ShoppingCart.nameOfCommodities[i]+" | "+ShoppingCart.priceOfCommodities[i]);
}
}
public static void showYourShoppingCart(String[] args)
{
System.out.println("商品编号 商品名 商品价格 个数");
for(int i=0;i<10;i++)
{
if(ShoppingCart.yourShoppingCart[i]!=0)
{
System.out.println(i+" | "+ShoppingCart.nameOfCommodities[i]+" | "+ShoppingCart.priceOfCommodities[i]+" | "+ShoppingCart.yourShoppingCart[i]);
}
}
}
public static void showTheCommodities(int id)
{
System.out.println("找到了该商品,商品编号、名称、价格依次如下:");
System.out.println(id+" | "+ShoppingCart.nameOfCommodities[id]+" | "+ShoppingCart.priceOfCommodities[id]);
}
}