项目总结:

1.简介:

该系统是一款基于字符界面的收银台系统,实现了商品管理,浏览支付订单等功能。

2.实现要求:

掌握了JavaSE的基本知识,以及掌握了MySQL数据库,JDBC编程等知识并且能够熟练使用融会贯通。

在本次项目中我们使用DataSource连接数据库

DataSource连接数据库

我们使用PrepareStatement而放弃使用Statement的原因:

PrepareStatement和Statement的区别

3.功能列表:

4.数据库设计:

5.系统设计思路:

采用类似于MVC的设计模式:

6.项目中比较重要的几点知识:

1.构造实体类:

实体类中属性的要求需要和数据库中表的字段相对应

2.构造一个命令接口:

实现Scanner对象和一个执行(excute)方法

public interface Command {//所有实现此接口的类都会拥有Scanner对象Scanner scanner = new Scanner(System.in);//统一的方法操作Service层void excute(Subject subject);
}

3.构造抽象类实现该接口

抽象类实现的Comand接口有统一的Scanner对象和excute方法。
并且启动所有的服务(启动Service层),这样启动的每一个服务都会拥有Scanner对象和excute方法。

//抽象类实现的Comand接口有统一的Scanner对象和excute方法
//启动的每一个服务就会拥有Scanner对象和excute方法
public abstract class AbstractCommand implements Command {//启动所有服务public AccountService accountService;public GoodsService goodsService;public OrderService orderService;public AbstractCommand() {accountService = new AccountService();goodsService = new GoodsService();orderService = new OrderService();}//通用的打印信息的方法public void printlnInfo(String info) {System.out.println(info);}
}

测试类继承抽象类,调用执行(excute)方法,进行下一步的操作。

4.创建一个观察对象的类:

用来观察当前的账户(可能是管理员也有可能是用户)

//观察对象
//观察一个账户(可能是管理员,可能是普通客户)
public class Subject {private Account account;public Account getAccount() {return account;}public void setAccount(Account account) {this.account = account;}
}

5使用注解技术(★★★★★)

注解的使用:使用注解对命令进行分类,命令分为:管理员命令;用户命令;入口命令


//@Retention注解不仅被保存在class文件中,jvm加载class文件后,仍然存在
//@Target:说明Annotation所修饰的对象范围
@Retention(RetentionPolicy.RUNTIME)//RUNTIME:运行时信息会保存在class文件中-->反射的应用
@Target(ElementType.TYPE)//TYPE:表明这个注解可以修饰到类
public @interface AdminCommand {}
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface CommandMeta {String name();//命令的英文字母String desc();//命令描述String group();//命令分组}
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface CustomerCommand {
}
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface EntranceCommand {
}

通过反射将命令分类到不同的Map

通过反射将命令分类到不同的Map

通过遍历相应的Map(key为 命令字符串,value为命令对象),得到相应的命令

6.功能实现流程:

每一个相应的命令类都继承自一个抽象类,保证每一个命令都有相应的执行(excute)方法

通过相应的业务逻辑来进行操作:


示例:

功能实现示例

项目总结大体就到这里。如果有新发现会继续补充。

项目源码:

源码

Java实现收银台系统相关推荐

  1. java云服务器系统选择,java云服务器系统选择

    java云服务器系统选择 内容精选 换一换 登录Windows操作系统弹性云服务器时,无法正常进入系统.自启动系统修复模式,但选择修复选项后报错,无法继续进行系统恢复.Windows文件已损坏.登录管 ...

  2. JAVA 多用户商城系统b2b2c-Spring Cloud常见问题与总结(一)

    在使用Spring Cloud的过程中,难免会遇到一些问题.所以对Spring Cloud的常用问题做一些总结.需要JAVA Spring Cloud大型企业分布式微服务云构建的B2B2C电子商务平台 ...

  3. 零基础参加java培训的系统学习路线

    ​ 零基础想要学习java技术,那么最好的选择就是参加java培训,进行系统的学习,以下就是小编为大家整理的零基础参加java培训的系统学习路线,希望能够帮助到正在学习java技术的零基础同学. 零基 ...

  4. java实验系统常用类,Java的常用系统类

    Java的常用系统类Tag内容描述: 1.Java语言与JBuilder应用初步 第六章 常用的Java系统类,本章要点,字符串类 数值(Number)类及其子类 数组类 集合类 Object类,字符 ...

  5. java6.2免费下载_jasperreports(Java开源报表系统)

    jasperreports是一款功能比较大的Java编写开源报表系统:通过该工具,即可快速的对各种类型的数据源进行支持,还可以快捷的完成文档的操作,包括了各种像素级的文档生成,包括了报表的生成工具:支 ...

  6. JAVA 多用户商城系统b2b2c-服务容错保护(Hystrix依赖隔离)

    依赖隔离 "舱壁模式"对于熟悉Docker的读者一定不陌生,Docker通过"舱壁模式"实现进程的隔离,使得容器与容器之间不会互相影响.而Hystrix则使用该 ...

  7. java托盘图标变白在linux,为什么用java实现windows系统托盘图标总是不显示出来

    为什么用java实现windows系统托盘图标总是不显示出来 我用JAVA写了个系统拖盘,不过图标总是不显示出来只有弹出菜单和提示下面是我写的代吗 public class TraySystem ex ...

  8. Java I/O系统学习系列三:I/O流的典型使用方式

    尽管可以通过不同的方式组合IO流类,但我们可能也就只用到其中的几种组合.下面的例子可以作为典型的IO用法的基本参考.在这些示例中,异常处理都被简化为将异常传递给控制台,但是这只有在小型示例和工具中才适 ...

  9. Java I/O系统学习系列二:输入和输出

    编程语言的I/O类库中常使用流这个抽象概念,它代表任何有能力产出数据的数据源对象或者是有能力接收数据的接收端对象."流"屏蔽了实际的I/O设备中处理数据的细节. 在这个系列的第一篇 ...

最新文章

  1. Pandas简明教程:八、Pandas数据透视表
  2. ElementUI+VUE 日期控件禁用用法
  3. Android中的AutoCompleteTextView组件
  4. php mysql 字段不为空_Thinkphp中查询复杂sql查询表达式,如何表达MYSQL中的某字段不为空is not null?...
  5. 王垠:怎样尊重一个程序员?
  6. mysql 数据仓库 元数据_数据仓库中的元数据管理
  7. 字符串固定长度 易语言_易语言字符串操作源码
  8. 吴恩达机器学习 8.应用机器学习的建议
  9. 蓝桥杯——黑色星期五
  10. Hadoop核心架构(1)
  11. sun的EJB开发文档
  12. 软件质量(六大要素及其分析)
  13. PHP数据库CURD接口与实现(接口实战)
  14. 黑白棋——C语言设计
  15. 自写网络验证,支持注册 充值 在线消息 自动更新
  16. 蓝桥杯 基础练习 阶乘计算(C语言)
  17. 牛客网数字化招聘解决方案,支持10万人同时在线笔试
  18. Dungeon Master(poj2251,bfs)
  19. IT人的学习方法论---一定要沉淀成自己的
  20. scriptx.cab下载

热门文章

  1. 11月4日 迅雷白金会员vip账号分享 91freevip 22:00 更新
  2. PDA+VFP对接用友U8,我以为很难,直通透传实在爽,扔掉笨重的JAVA
  3. 遗忘之战2.1_FS无CD地图
  4. vs2010c++调用python,并打包移植到其他电脑
  5. 怎么使用flashfxp,5步学会使用flashfxp
  6. 嵌入式开发板-4412开发板裸机开发环境
  7. 【必知必会】10个好用到爆的 Jupyter Notebook 插件神器
  8. 企业级数据仓库建设最新版(附16页文档)
  9. C语言 Mkl 矩阵乘法,使用MKL的Vector-Sparce矩阵乘法
  10. 智能汽车“增量部件”争夺战(三):蔚来、广汽力推新动力电池,1000公里续航有多大水分?