第1次任务:购物车程序的面向对象设计-DAO

小组分工

任务 姓名
面向对象设计、功能设计、DAO模式设计、博客制作 郭宇豪
前期调查、编码规范、主菜单编写 黄常奇

1.前期调查

京东商城中的购物车

在这里插入图片描述

购物车最主要的功能为商品条目显示、商品小计、商品数量累加、商品单价显示、商品总价,附加功能为用户登录和结账。

编码规范

代码中的命名严禁使用拼音与英文混合的方式,更不允许直接使用中文的方式。说明:正确的英文拼写和语法可以让阅读者易于理解,避免歧义。注意,即使纯拼音命名方式也要避免采用。
正例: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。

2.系统功能结构图

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.系统描述

系统运行时应先进入用户登录模块输入账号密码用以登录 ,登录成功后展现功能列表,功能1展示商城中商品编号、名称单价,功能为展示购物车内商品的编号、名称、数量、小计总价,功能3、4为向购物车内增添商品,从购物车里删减商品(搜寻方式可为编号或者名称)(实现时都将对购物车内商品进行小计和购物车内商品总价的计算),功能5为清空购物车,功能6实现对话框形式的结账功能,功能7实现退出购物车功能。

4.UML类图

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

5.封装性体现

商品的信息存储在文件中,在操作中无法更改。
购物车属性在操作时以private数组形式存在,仅能用setter/getter来进行存取数据。操作完毕以后更新完的购物车信息会存入文件中,用户无法随意方法。
DAO模式的设计让使用者无需知道储存方式和具体实现,实现封装保证安全的同时又便于操作。

6.DAO模式设计

接口类分三类——商品、购物车、用户
实体类仅商品类,既能实现功能又能避免冗余
实现类有商品、购物车、用户三类

7.项目包结构与代码

在这里插入图片描述

CartDao类

package shoppingcart;

import java.io.FileNotFoundException;
import java.io.IOException;

public interface CartDao {
   
	public void showCart()throws IOException;
	//展示购物车内容
	public void addCart(int i,int nuin) throws FileNotFoundException, IOException;
	//执行添加功能,并返回是否成功
	public boolean deleteCart(int i,int nuin) throws FileNotFoundException, IOException;
	//执行删减功能,并返回是否成功
	public void clearCart() throws FileNotFoundException;
	//执行清空购物车功能

}

CartDaoImpl类

package shoppingcart;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.PrintStream;

public class CartDaoImpl implements CartDao {
   
	Goods goods=new Goods();
		@Override	
		public void showCart()throws IOException{
   
			System.out.println("编号:      商品名称:      数量:      小计:        ");
			FileReader fr = new FileReader("D:\\大二上\\JAVA\\JAVA项目\\ShoppingCart(1.3-DAO)\\src\\shoppingcart\\data\\Cart.txt");
			BufferedReader br = new BufferedReader(fr);
			while(br.ready()){
   
				System.out.println(br.readLine());
			}
			System.out.println("总计:"+goods.total+"元");
		}//输出购物车内容
		
		@Override
		public void addCart(int i,int nuin) throws IOException {
   
			goods.getQuantity()[i]+=nuin;
			goods.getAccount()[i]+=goods.getPrice()[i]*nuin;
			goods.total+=goods.getAccount()[i]; 
			File file = new File("D:\\大二上\\JAVA\\JAVA项目\\ShoppingCart(1.3-DAO)\\src\\shoppingcart\\data\\Cart.txt");
			PrintStream ps = new PrintStream(new FileOutputStream(file));
			ps.println("");// 清空文件内容
			 FileOutputStream fos = new FileOutputStream ("D:\\大二上\\JAVA\\JAVA项目\\ShoppingCart(1.3-DAO)\\src\\shoppingcart\\data\\Cart.txt",true ) ; 
			 String str="";
			 for(int index=0;index<4;index++) {
   
				 if(goods.getQuantity()[index]!=0) {
   
				 str = goods.getNumber()[index]+"      "+goods.getName()[index]+"      "+goods.getQuantity()[index]+"      "+goods.getAccount()[index]+"\t\n";
				 fos.write(str.getBytes()) ;  
				 }
			 }
			 fos.close (); 
			 
		}//添加商品入购物车
		
		@Override
		public boolean deleteCart(int i,int nuin) throws IOException {
   
			if(goods.getQuantity()
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Gyuhow

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值