徐佳澎、陈俊威
任务分配| 任务 | 成员 |
|---|---|
| 前期调查、博客制作、面向对象设计、功能设计、 | 陈俊威 |
| 面向对象设计、功能设计、编码规范、 | 徐佳澎 |
本次任务要求掌握继承与多态、掌握DAO模式。
使用子类与继承体现不同商品的特性网上商城不同类别的商品有一些共同信息,比如商品名、价格。但有的信息并不相同。比如,书本还要显示出版信息(出版社、ISBN、作业),电脑要显示厂商、规格等信息。设计显示不同商品的页面,可根据商品的类别显示不同的信息。
尝试使用DAO模式商城可能使用文件存储商品数据、也可能使用列表存储数据。尝试使用DAO模式实现此功能,使得涉及到存储相关的代码可以轻松在两种存储模式之间进行切换。
2.编码规范阿里巴巴Java开发手册 终极版(1.3.0)
代码中的命名严禁使用拼音与英文混合的方式,更不允许直接使用中文的方式。说明:正确的英文拼写和语法可以让阅读者易于理解,避免歧义。注意,即使纯拼音命名方式
也要避免采用。
正例:alibaba / taobao / youku / hangzhou 等国际通用的名称,可视同英文。
反例:DaZhePromotion [打折] / getPingfenByName() [评分] / int 某变量 = 3
DTO / VO / AO
正例:MarcoPolo / UserDO / XmlService / TcpUdpDeal / TaPromotion
反例:macroPolo / UserDo / XMLService / TCPUDPDeal / TAPromotion
正例: localValue / getHttpMessage() / inputUserId
包名统一使用小写,点分隔符之间有且仅有一个自然语义的英语单词。包名统一使用单数形式,但是类名如果有复数含义,类名可以使用复数形式。正例: 应用工具类包名为 com.alibaba.open.util、类名为 MessageUtils(此规则参考
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。
父类Commodity,父类Commmodity具有所有商品共有的属性,例如商品的编号、商品的名称以及商品的单价。
子类Foods继承自父类Commmodity,Foods具有特有的属性重量weight。
子类Electronic继承自父类Commmodity,Electronic具有特有的属性尺寸size、品牌brand和配置configuration。
子类Books继承自父类Commmodity,Books具有特有的属性作者writer、出版社publisher。
子类Clothes继承自父类Commmodity,Clothes具有特有的属性颜色color。
子类Toiletries继承自父类Commmodity,Toiletries具有属性品牌。
子类全都继承父类的tostring方法,方便展示商城和购物的信息。
购物车的功能要有添加商品、删除商品、修改商品条目、清空购物车、展示购物车中的内容。有时为了方便用户,在用户保存购物车后,购物车中的商品信息在下一次使用购物车时还能显示,因此设计购物车保存功能。
购物车中的信息以Arraylist的形式储存。保存购物将购物车中的信息打印到txt文件中。
商城可能使用文件存储商品数据、也可能使用列表存储数据。使用DAO接口令商城数据的储存在列表和文件之间切换。
为了方便购物车功能的实现,商城类中添加从商城中取得商品、判断商城中是否有某商品的功能。
public class Commodity {
private String serialnumber;
private String name;
private String price;
public Commodity(String serialnumber, String name, String price) {
super();
this.serialnumber = serialnumber;
this.name = name;
this.price = price;
}
public String getSerialnumber() {
return serialnumber;
}
public void setSerialnumber(String serialnumber) {
this.serialnumber = serialnumber;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPrice() {
return price;
}
public void setPrice(String price) {
this.price = price;
}
@Override
public String toString() {
return "编号-"+serialnumber+" 商品名-"+name+" 价格-"+price+" ";
}
}
class Foods extends Commodity{
public Foods(String serialnumber, String name, String price, String weight) {
super(serialnumber, name, price);
this.weight = weight;
}
private String weight;
public String getWeight() {
return weight;
}
public void setWeight(String weight) {
this.weight = weight;
}
@Override
public String toString() {
return super.toString()+"重量:"+weight;
}
}
class Electronic extends Commodity{
private String size;
private String brand;
private String configuration;
public Electronic(String serialnumber, String name, String price, String size, String brand, String configuration) {
super(serialnumber, name, price);
this.size = size;
this.brand = brand;
this.configuration = configuration;
}
public String getSize() {
return size;
}
public void setSize(String size) {
this.size = size;
}
public String getBrand() {
return brand;
}
public void setBrand(String brand) {
this.brand = brand;
}
public String getConfiguration() {
return configuration;
}
public void setConfiguration(String configuration) {
this.configuration = configuration;
}
@Override
public String toString() {
return super.toString()+"品牌-"+brand+" 规格-"+size+" 配置-"+configuration;
}
}
class Books extends Commodity{
public Books(String serialnumber, String name, String price, String writer, String publisher) {
super(serialnumber, name, price);
this.writer = writer;
this.publisher = publisher;
}
private String writer;
private String publisher;
public String getWriter() {
return writer;
}
public void setWriter(String writer) {
this.writer = writer;
}
public String getPublisher() {
return publisher;
}
public void setPublisher(String publisher) {
this.publisher = publisher;
}
@Override
public String toString() {
return super.toString()+"作者-"+writer+" 出版社-"+publisher;
}
}
class Clothes extends Commodity{
public Clothes(String serialnumber, String name, String price, String color) {
super(serialnumber, name, price);
this.color = color;
}
private String color;
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
@Override
public String toString() {
return super.toString()+"颜色-"+color;
}
}
class Toiletries extends Commodity{
private String brand;
public Toiletries(String serialnumber, String name, String price, String brand) {
super(serialnumber, name, price);
this.brand = brand;
}
@Override
public String toString() {
return super.toString()+"品牌-"+brand;
}
}
ShoppingCenterDao接口
public interface ShoppingCenterDao {
public int HaveCommodity(String serialnumber);
public void showShoppingcenter();
public Commodity getCommodity(String serialnumber);
}
以txt形式储存商城信息
package Item;
import java.io.*;
public class ShoppingCentertxt implements ShoppingCenterDao {
String filepath = "C:\shoppingcart\shoppingcenter.txt";
@Override
public int HaveCommodity(String serialnumber) {
try {
BufferedReader in = new BufferedReader(new FileReader(filepath));
String temp;
String[] strs;
while ((temp = in.readLine()) != null) {
serialnumber = serialnumber;
strs = temp.split(" ");
if (strs[0].equals(serialnumber))
return 1;
}
} catch (IOException e) {
}
return -1;
}
@Override
public void showShoppingcenter() {
System.out.println("-------------------商城-------------------");
try {
BufferedReader in = new BufferedReader(new FileReader(filepath));
String temp;
while ((temp = in.readLine()) != null) {
System.out.println("编号-"+temp);
}
} catch (IOException e) {
}
System.out.println("------------------------------------------");
}
@Override
public Commodity getCommodity(String serialnumber) {
try {
BufferedReader in = new BufferedReader(new FileReader(filepath));
String temp;
String[] str;
serialnumber = serialnumber;
while ((temp = in.readLine()) != null) {
str = temp.split(" ");
if (str[0].equals(serialnumber)) {
String type = serialnumber.substring(0, 1);
switch (type) {
case "F": {
Commodity commodity = new Foods(str[0], str[1], str[2], str[3]);
return commodity;
}
case "I": {
Commodity commodity = new Electronic(str[0], str[1], str[2], str[3], str[4], str[5]);
return commodity;
}
case "B": {
Commodity commodity = new Books(str[0], str[1], str[2], str[3], str[4]);
return commodity;
}
case "C": {
Commodity commodity = new Clothes(str[0], str[1], str[2], str[3]);
return commodity;
}
case "T": {
Commodity commodity = new Toiletries(str[0], str[1], str[2], str[3]);
return commodity;
}
}
}
}
} catch (IOException e) {
}
//Commodity commodity = new Toiletries("T005", "云南白药牙膏薄荷味", "30.90", "云南白药");
return null;
}
}
以Arraylist储存商城信息
package Item;
import java.util.ArrayList;
public class ShoppingCenter implements ShoppingCenterDao {
private ArrayList list = new ArrayList<>();
public ArrayList getShoppingcenter() {
return this.list;
}
{
// 为商场中添加商品
list.add(new Foods("F001", "德芙巧克力", "16.00", "300克"));
list.add(new Electronic("I002", "联想IdeaPad14s", "3799.00", "14.英寸", "联想", "i3-1005G1 8G 256G固态硬盘"));
list.add(new Books("B003", "JAVA学习笔记", "36.90", "林信良", "清华大学出版社"));
list.add(new Clothes("C004", "冬季男装", "89.00", "黑色"));
list.add(new Toiletries("T005", "云南白药牙膏薄荷味", "30.90", "云南白药"));
}
public int HaveCommodity(String serialnumber) {// 判断商场中有没有该商品
for (int i = 0; i < list.size(); i++) {
if (list.get(i).getSerialnumber().equals(serialnumber)) {
return i;
}
}
return -1;
}
public void showShoppingcenter() {
System.out.println("-------------------商城-------------------");
for (Commodity e : list) {
System.out.println(e.toString());
}
System.out.println("------------------------------------------");
}
public Commodity getCommodity(String serialnumber) {
int i=0;
for (i=0;i
ShoppingCart类实现购物车功能
package Item;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Scanner;
public class ShoppingCart {
ShoppingCenter center = new ShoppingCenter();
ArrayList cartitem = new ArrayList<>();
HashMap
测试代码
package Item;
import java.util.*;
public class Main {
public static void main(String[] args) {
//ShoppingCenter a = new ShoppingCenter();
ShoppingCenterDao a = new ShoppingCentertxt();
ShoppingCart cart = new ShoppingCart();
// ShoppingCartDao cart = new ShoppingCartxt();
a.showShoppingcenter();
cart.readcartTxt();
printMune();
Scanner in = new Scanner(System.in);
while (in.hasNext()) {
String choise = in.next();
if (choise.equals("7")) {
System.out.println("成功退出!");
break;
}
switch (choise) {
case "1": {
System.out.print("请输入商品编号:");
String serialnumber = in.next();
int index = a.HaveCommodity(serialnumber);
int cartindex = cart.haveItem(serialnumber);
if (index != -1 && cartindex == -1) {
int number;
System.out.print("请输入数量:");
number = in.nextInt();
if (number == 0) {
System.out.println("数量不能为0!");
System.out.print("请选择功能:");
break;
}
cart.addItem(a.getCommodity(serialnumber), number);
}
else if (index == -1)
System.out.println("商场暂无该商品");
else if (cartindex != -1)
System.out.println("购物车中已有该商品");
System.out.print("请选择功能:");
break;
}
case "2": {
System.out.print("请输入商品编号:");
int index;
String serialnumber = in.next();
index = cart.haveItem(serialnumber);
int centerindex = a.HaveCommodity(serialnumber);
if (index != -1 && centerindex != -1) {
// int centerindex1=a.HaveCommodity(serialnumber);
cart.removeItem(serialnumber);// a.getCommodity(serialnumber)
System.out.print("请选择功能:");
break;
}
else
System.out.println("购物车中无该商品");
System.out.print("请选择功能:");
break;
}
case "3": {
System.out.println("请输入商品编号:");
String serialnumber = in.next();
cart.modifyCart(serialnumber);
System.out.print("请选择功能:");
break;
}
case "4": {
cart.showCart();
System.out.print("请选择功能:");
break;
}
case "5": {
cart.clearCart();
break;
}
case "6": {
cart.printcartTxt();
break;
}
}
}
}
public static void printMune() {
System.out.println("~~~~~~~~~~~~~~~~~~~菜单~~~~~~~~~~~~~~~~~~~");
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:退出~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
System.out.print("请选择功能:");
}
}



