Java之------单机版书店管理系统(设计思想和设计模式系列六)销售模块

书店管理系统

书店管理系统可以说是设计模式及设计思想的一个比较经典的例子。

本系列将分为多个部分讲述此输电管理系统。

书店管理系统将分为:用户、图书、进货、销售和库存五个模块,另外还有公共包、工具包和登录包,另外还有一个框架。

对于分层设计,都是表现层可以调用逻辑层,逻辑层调用数据层,数据层调用工具和公共包,方向不可打乱,必须严格按照这种模式。

本篇将做销售模块。

注:本篇需要使用到的框架在本系列二的用户模块:

链接:http://blog.csdn.net/x121850182/article/details/51362269

和进货模块相同的,进货模块分成了数据层、逻辑层、表现层和值对象层,数据层也要多出一个进货明细。

销售模块和进货模块其实是一摸一样的,可以直接对拷,就只要更改里面的名字即可。

数据层:

接口:

OutMainDAO

[java] view
plain
 copy

  1. package cn.hncu.out.dao.dao;
  2. import java.util.List;
  3. import cn.hncu.out.vo.OutMainModel;
  4. import cn.hncu.out.vo.OutMainQueryModel;
  5. public interface OutMainDAO {
  6. public boolean create(OutMainModel outMain);
  7. public boolean delete(String uuid);
  8. public boolean upDate(OutMainModel outMain);
  9. public OutMainModel getSingle(String uuid);
  10. public List<OutMainModel> getAll();
  11. public List<OutMainModel> getByCondition(OutMainQueryModel imqm);
  12. }

OutDetailDAO

[java] view
plain
 copy

  1. package cn.hncu.out.dao.dao;
  2. import java.util.List;
  3. import cn.hncu.out.vo.OutDetailModel;
  4. import cn.hncu.out.vo.OutDetailQueryModel;
  5. public interface OutDetailDAO {
  6. public boolean create(OutDetailModel outDetail);
  7. public boolean delete(String uuid);
  8. public boolean upDate(OutDetailModel outDetail);
  9. public OutDetailModel getSingle(String uuid);
  10. public List<OutDetailModel> getAll();
  11. public List<OutDetailModel> getByCondition(OutDetailQueryModel idqm);
  12. }

实现类:

OutMainDAOImpl

[java] view
plain
 copy

  1. package cn.hncu.out.dao.impl;
  2. import java.util.ArrayList;
  3. import java.util.List;
  4. import cn.hncu.out.dao.dao.OutMainDAO;
  5. import cn.hncu.out.vo.OutMainModel;
  6. import cn.hncu.out.vo.OutMainQueryModel;
  7. import cn.hncu.utils.FileIo;
  8. public class OutMainDAOImpl implements OutMainDAO {
  9. private final String FILE_NAME="OutMain.txt";
  10. @Override
  11. public boolean create(OutMainModel outMain) {
  12. List<OutMainModel> list=FileIo.read(FILE_NAME);
  13. for (OutMainModel model:list){
  14. if (model.getUuid().equals(outMain.getUuid())){
  15. return false;
  16. }
  17. }
  18. list.add(outMain);
  19. FileIo.write(list, FILE_NAME);
  20. return true;
  21. }
  22. @Override
  23. public boolean delete(String uuid) {
  24. List<OutMainModel> list=FileIo.read(FILE_NAME);
  25. for (OutMainModel model:list){
  26. if (model.getUuid().equals(uuid)){
  27. list.remove(model);
  28. FileIo.write(list, FILE_NAME);
  29. return true;
  30. }
  31. }
  32. return false;
  33. }
  34. @Override
  35. public List<OutMainModel> getAll() {
  36. List<OutMainModel> list=FileIo.read(FILE_NAME);
  37. return list;
  38. }
  39. @Override
  40. public List<OutMainModel> getByCondition(OutMainQueryModel omqm) {
  41. List<OutMainModel> list=getAll();
  42. List<OutMainModel> result=new ArrayList<OutMainModel>();
  43. for (OutMainModel outMain:list){
  44. if (omqm.getUuid()!=null&&omqm.getUuid().trim().length()>0){
  45. if (!omqm.getUuid().equals(outMain.getUuid())){
  46. continue;
  47. }
  48. }
  49. if (omqm.getOutUserId()!=null&&omqm.getOutUserId().trim().length()>0){
  50. if (!omqm.getOutUserId().equals(outMain.getOutUserId())){
  51. continue;
  52. }
  53. }
  54. if (omqm.getOutDate()>0){
  55. if (omqm.getOutDate()>outMain.getOutDate()){
  56. continue;
  57. }
  58. }
  59. if (omqm.getOutDate2()>0){
  60. if (omqm.getOutDate2()<outMain.getOutDate()){
  61. continue;
  62. }
  63. }
  64. result.add(outMain);
  65. }
  66. return result;
  67. }
  68. @Override
  69. public OutMainModel getSingle(String uuid) {
  70. List<OutMainModel> list=FileIo.read(FILE_NAME);
  71. for (OutMainModel model:list){
  72. if (model.getUuid().equals(uuid)){
  73. return model;
  74. }
  75. }
  76. return null;
  77. }
  78. @Override
  79. public boolean upDate(OutMainModel outMain) {
  80. List<OutMainModel> list=FileIo.read(FILE_NAME);
  81. for (int i=0;i<list.size();i++){
  82. OutMainModel model=list.get(i);
  83. if (model.getUuid().equals(outMain.getUuid())){
  84. list.set(i, outMain);
  85. return true;
  86. }
  87. }
  88. return false;
  89. }
  90. }

OutDetailDAOImpl

[java] view
plain
 copy

  1. package cn.hncu.out.dao.impl;
  2. import java.util.ArrayList;
  3. import java.util.List;
  4. import cn.hncu.out.dao.dao.OutDetailDAO;
  5. import cn.hncu.out.vo.OutDetailModel;
  6. import cn.hncu.out.vo.OutDetailQueryModel;
  7. import cn.hncu.out.vo.OutMainModel;
  8. import cn.hncu.utils.FileIo;
  9. public class OutDetailDAOImpl implements OutDetailDAO {
  10. private final String FILE_NAME="OutDetail.txt";
  11. @Override
  12. public boolean create(OutDetailModel outDetail) {
  13. List<OutDetailModel> list=FileIo.read(FILE_NAME);
  14. for (OutDetailModel model:list){
  15. if (model.getUuid().equals(outDetail.getUuid())){
  16. return false;
  17. }
  18. }
  19. list.add(outDetail);
  20. FileIo.write(list, FILE_NAME);
  21. return true;
  22. }
  23. @Override
  24. public boolean delete(String uuid) {
  25. List<OutDetailModel> list=FileIo.read(FILE_NAME);
  26. for (OutDetailModel model:list){
  27. if (model.getUuid().equals(uuid)){
  28. list.remove(model);
  29. FileIo.write(list, FILE_NAME);
  30. return true;
  31. }
  32. }
  33. return false;
  34. }
  35. @Override
  36. public List<OutDetailModel> getAll() {
  37. List<OutDetailModel> list=FileIo.read(FILE_NAME);
  38. return list;
  39. }
  40. @Override
  41. public List<OutDetailModel> getByCondition(OutDetailQueryModel odqm) {
  42. List<OutDetailModel> list=getAll();
  43. List<OutDetailModel> results=new ArrayList<OutDetailModel>();
  44. for (OutDetailModel model:list){
  45. if (odqm.getUuid()!=null&&odqm.getUuid().trim().length()>0){
  46. if (!model.getUuid().equals(odqm.getUuid())){
  47. continue;
  48. }
  49. }
  50. if (odqm.getOutUuid()!=null&&odqm.getOutUuid().trim().length()>0){
  51. if (!model.getOutUuid().equals(odqm.getOutUuid())){
  52. continue;
  53. }
  54. }
  55. if (odqm.getBookUuid()!=null&&odqm.getBookUuid().trim().length()>0){
  56. if (!model.getBookUuid().equals(odqm.getBookUuid())){
  57. continue;
  58. }
  59. }
  60. if (odqm.getSumNum()>0){
  61. if (model.getSumNum()<odqm.getSumNum()){
  62. continue;
  63. }
  64. }
  65. if (odqm.getSumNum2()>0){
  66. if (model.getSumNum()>odqm.getSumNum2()){
  67. continue;
  68. }
  69. }
  70. if (odqm.getSumMoney()>0){
  71. if (model.getSumMoney()<odqm.getSumMoney()){
  72. continue;
  73. }
  74. }
  75. if (odqm.getSumMoney2()>0){
  76. if (model.getSumMoney()>odqm.getSumMoney2()){
  77. continue;
  78. }
  79. }
  80. results.add(model);
  81. }
  82. return results;
  83. }
  84. @Override
  85. public OutDetailModel getSingle(String uuid) {
  86. List<OutDetailModel> list=FileIo.read(FILE_NAME);
  87. for (OutDetailModel model:list){
  88. if (model.getUuid().equals(uuid)){
  89. return model;
  90. }
  91. }
  92. return null;
  93. }
  94. @Override
  95. public boolean upDate(OutDetailModel outDetail) {
  96. List<OutDetailModel> list=FileIo.read(FILE_NAME);
  97. for (int i=0;i<list.size();i++){
  98. OutDetailModel model=list.get(i);
  99. if (model.getUuid().equals(outDetail.getUuid())){
  100. list.set(i, outDetail);
  101. return true;
  102. }
  103. }
  104. return false;
  105. }
  106. }

工厂类:

OutMainDAOFactory

[java] view
plain
 copy

  1. package cn.hncu.out.dao.factory;
  2. import cn.hncu.out.dao.dao.OutMainDAO;
  3. import cn.hncu.out.dao.impl.OutMainDAOImpl;
  4. public class OutMainDAOFactory {
  5. public static OutMainDAO getOutMainDAO(){
  6. return new OutMainDAOImpl();
  7. }
  8. }

OutDetailDAOFactory

[java] view
plain
 copy

  1. package cn.hncu.out.dao.factory;
  2. import cn.hncu.out.dao.dao.OutDetailDAO;
  3. import cn.hncu.out.dao.impl.OutDetailDAOImpl;
  4. public class OutDetailDAOFactory {
  5. public static OutDetailDAO getOutDetailDAO(){
  6. return new OutDetailDAOImpl();
  7. }
  8. }

逻辑层:

接口:

[java] view
plain
 copy

  1. package cn.hncu.out.business.ebi;
  2. import java.util.List;
  3. import java.util.Map;
  4. import cn.hncu.out.vo.OutDetailModel;
  5. import cn.hncu.out.vo.OutDetailQueryModel;
  6. import cn.hncu.out.vo.OutMainModel;
  7. import cn.hncu.out.vo.OutMainQueryModel;
  8. public interface OutMainEbi {
  9. public boolean create(OutMainModel outMain,List<OutDetailModel> details);
  10. public Map<OutMainModel, List<OutDetailModel>> getAll();
  11. public Map<OutMainModel, List<OutDetailModel>> getByCondition(OutMainQueryModel omqm,OutDetailQueryModel idqm);
  12. }

实现类:

[java] view
plain
 copy

  1. package cn.hncu.out.business.ebo;
  2. import java.util.List;
  3. import java.util.Map;
  4. import java.util.TreeMap;
  5. import javax.swing.JOptionPane;
  6. import cn.hncu.book.business.ebi.BookEbi;
  7. import cn.hncu.book.business.factory.BookEbiFactory;
  8. import cn.hncu.common.UuidModelConstance;
  9. import cn.hncu.common.uuid.dao.dao.UuidDAO;
  10. import cn.hncu.common.uuid.dao.factory.UuidDAOFactory;
  11. import cn.hncu.out.business.ebi.OutMainEbi;
  12. import cn.hncu.out.dao.dao.OutDetailDAO;
  13. import cn.hncu.out.dao.dao.OutMainDAO;
  14. import cn.hncu.out.dao.factory.OutDetailDAOFactory;
  15. import cn.hncu.out.dao.factory.OutMainDAOFactory;
  16. import cn.hncu.out.vo.OutDetailModel;
  17. import cn.hncu.out.vo.OutDetailQueryModel;
  18. import cn.hncu.out.vo.OutMainModel;
  19. import cn.hncu.out.vo.OutMainQueryModel;
  20. import cn.hncu.stock.business.factory.StockEbiFactory;
  21. import cn.hncu.stock.dao.dao.StockDAO;
  22. import cn.hncu.stock.dao.factory.StockDAOFactory;
  23. import cn.hncu.stock.vo.StockModel;
  24. import cn.hncu.stock.vo.StockQueryModel;
  25. public class OutMainEbo implements OutMainEbi {
  26. OutMainDAO outMainDAO=OutMainDAOFactory.getOutMainDAO();
  27. OutDetailDAO outDetailDAO=OutDetailDAOFactory.getOutDetailDAO();
  28. UuidDAO uuidDAO=UuidDAOFactory.getUuidDAO();
  29. BookEbi bookEbi=BookEbiFactory.getBookEbi();
  30. @Override
  31. public boolean create(OutMainModel outMain, List<OutDetailModel> details) {
  32. //※※※库存操作1:在添加销售信息之前要进行防护:检查库存,看是否可能库存不够。
  33. //如果不够,本次添加直接失败,不进行数据存储---return false;
  34. //注入stock模块的DAO
  35. StockDAO stockDAO=StockDAOFactory.getStockDAO();
  36. for (OutDetailModel detail:details){
  37. StockQueryModel sqm=new StockQueryModel();
  38. sqm.setBookUuid(detail.getBookUuid());
  39. List<StockModel> list = stockDAO.getByCondition(sqm);
  40. if (list==null||list.size()==0){
  41. JOptionPane.showMessageDialog(null, "库存中不存在《"+detail.getBookName()+"》,本次销售添加失败!");
  42. return false;
  43. }else {
  44. StockModel stock=list.get(0);
  45. if (stock.getSumNum()<detail.getSumNum()){
  46. JOptionPane.showMessageDialog(null, "库存中《"+detail.getBookName()+"》数量不足,本次销售添加失败!");
  47. return false;
  48. }
  49. }
  50. }
  51. //////////1存储outMain信息///////////
  52. //补全outMain中的数据
  53. //需要:outUuid,outDate,outUserUuid   已组织:outUserUuid
  54. //还缺(需补):outUuid,outDate
  55. String outUuid=uuidDAO.getNextUuid(UuidModelConstance.OUT_MAIN);
  56. outMain.setUuid(outUuid);
  57. outMain.setOutDate(System.currentTimeMillis());
  58. outMainDAO.create(outMain);
  59. //////////2存储outDetail信息///////////
  60. for (OutDetailModel outDetail:details){
  61. //补全每一个outDetail中的数据
  62. //需要:outDetailUuid,outMainUuid,bookUuid,sumNum,sumMoney   已组织:bookUuid,sumNum
  63. //还缺(需补):outDetailUuid,outMainUuid,sumMoney
  64. outDetail.setUuid(uuidDAO.getNextUuid(UuidModelConstance.OUT_DETAIL));
  65. outDetail.setOutUuid(outUuid);
  66. double sumMoney=outDetail.getSumNum()*bookEbi.getSingle(outDetail.getBookUuid()).getSalePrice();
  67. outDetail.setSumMoney(sumMoney);
  68. outDetailDAO.create(outDetail);
  69. //※※※库存操作2:更新库存---把对应的每种图书的数量  减去  这次销售的数量
  70. StockQueryModel sqm=new StockQueryModel();
  71. sqm.setBookUuid(outDetail.getBookUuid());
  72. List<StockModel> list = StockEbiFactory.getStockEbi().getByCondition(sqm);
  73. StockModel stock=list.get(0);
  74. stock.setSumNum(stock.getSumNum()-outDetail.getSumNum());
  75. stockDAO.upDate(stock);
  76. }
  77. return true;
  78. }
  79. @Override
  80. public Map<OutMainModel, List<OutDetailModel>> getAll() {
  81. Map<OutMainModel, List<OutDetailModel>> map=new TreeMap<OutMainModel, List<OutDetailModel>>();
  82. List<OutMainModel> outMains=outMainDAO.getAll();
  83. for (OutMainModel outMain:outMains){
  84. OutDetailQueryModel odqm=new OutDetailQueryModel();
  85. String outUuid=outMain.getUuid();
  86. odqm.setOutUuid(outUuid);
  87. List<OutDetailModel> details=outDetailDAO.getByCondition(odqm);
  88. map.put(outMain, details);
  89. }
  90. return map;
  91. }
  92. @Override
  93. public Map<OutMainModel, List<OutDetailModel>> getByCondition(
  94. OutMainQueryModel omqm, OutDetailQueryModel odqm) {
  95. Map<OutMainModel, List<OutDetailModel>> map=new TreeMap<OutMainModel, List<OutDetailModel>>();
  96. List<OutMainModel> outMains=OutMainDAOFactory.getOutMainDAO().getByCondition(omqm);
  97. for (OutMainModel outMain:outMains){
  98. odqm.setOutUuid(outMain.getUuid());
  99. List<OutDetailModel> details=OutDetailDAOFactory.getOutDetailDAO().getByCondition(odqm);
  100. if (details.size()!=0){
  101. map.put(outMain, details);
  102. }
  103. }
  104. return map;
  105. }
  106. }

工厂类:

[java] view
plain
 copy

  1. package cn.hncu.out.business.factory;
  2. import cn.hncu.out.business.ebi.OutMainEbi;
  3. import cn.hncu.out.business.ebo.OutMainEbo;
  4. public class OutMainEbiFactory {
  5. public static OutMainEbi getOutMainEbi(){
  6. return new OutMainEbo();
  7. }
  8. }

值对象层:

OutMainModel

[java] view
plain
 copy

  1. package cn.hncu.out.vo;
  2. import java.io.Serializable;
  3. import cn.hncu.utils.DateUtil;
  4. public class OutMainModel implements Serializable,Comparable<OutMainModel>{
  5. private String uuid;
  6. private long outDate;
  7. private String outUserId;
  8. private String outUserName;
  9. public String getOutUserName() {
  10. return outUserName;
  11. }
  12. public void setOutUserName(String outUserName) {
  13. this.outUserName = outUserName;
  14. }
  15. public String getUuid() {
  16. return uuid;
  17. }
  18. public void setUuid(String uuid) {
  19. this.uuid = uuid;
  20. }
  21. public long getOutDate() {
  22. return outDate;
  23. }
  24. public void setOutDate(long outDate) {
  25. this.outDate = outDate;
  26. }
  27. public String getOutUserId() {
  28. return outUserId;
  29. }
  30. public void setOutUserId(String outUserId) {
  31. this.outUserId = outUserId;
  32. }
  33. @Override
  34. public int hashCode() {
  35. final int prime = 31;
  36. int result = 1;
  37. result = prime * result + ((uuid == null) ? 0 : uuid.hashCode());
  38. return result;
  39. }
  40. @Override
  41. public boolean equals(Object obj) {
  42. if (this == obj)
  43. return true;
  44. if (obj == null)
  45. return false;
  46. if (getClass() != obj.getClass())
  47. return false;
  48. OutMainModel other = (OutMainModel) obj;
  49. if (uuid == null) {
  50. if (other.uuid != null)
  51. return false;
  52. } else if (!uuid.equals(other.uuid))
  53. return false;
  54. return true;
  55. }
  56. @Override
  57. public String toString() {
  58. return uuid + ", " + outUserName+ ", " + DateUtil.longToString(outDate);
  59. }
  60. @Override
  61. public int compareTo(OutMainModel o) {
  62. return Integer.parseInt(uuid)-Integer.parseInt(o.getUuid());
  63. }
  64. }

OutMainQueryModel

[java] view
plain
 copy

  1. package cn.hncu.out.vo;
  2. public class OutMainQueryModel extends OutMainModel{
  3. private long outDate2;
  4. public long getOutDate2() {
  5. return outDate2;
  6. }
  7. public void setOutDate2(long outDate2) {
  8. this.outDate2 = outDate2;
  9. }
  10. }

OutDetailModel

[java] view
plain
 copy

  1. package cn.hncu.out.vo;
  2. import java.io.Serializable;
  3. public class OutDetailModel implements Serializable{
  4. private String uuid;
  5. private String outUuid;
  6. private String bookUuid;
  7. private int sumNum;
  8. private double sumMoney;
  9. private String bookName;
  10. public String getBookName() {
  11. return bookName;
  12. }
  13. public void setBookName(String bookName) {
  14. this.bookName = bookName;
  15. }
  16. public String getUuid() {
  17. return uuid;
  18. }
  19. public void setUuid(String uuid) {
  20. this.uuid = uuid;
  21. }
  22. public String getOutUuid() {
  23. return outUuid;
  24. }
  25. public void setOutUuid(String outUuid) {
  26. this.outUuid = outUuid;
  27. }
  28. public String getBookUuid() {
  29. return bookUuid;
  30. }
  31. public void setBookUuid(String bookUuid) {
  32. this.bookUuid = bookUuid;
  33. }
  34. public int getSumNum() {
  35. return sumNum;
  36. }
  37. public void setSumNum(int sumNum) {
  38. this.sumNum = sumNum;
  39. }
  40. public double getSumMoney() {
  41. return sumMoney;
  42. }
  43. public void setSumMoney(double sumMoney) {
  44. this.sumMoney = sumMoney;
  45. }
  46. @Override
  47. public int hashCode() {
  48. final int prime = 31;
  49. int result = 1;
  50. result = prime * result + ((uuid == null) ? 0 : uuid.hashCode());
  51. return result;
  52. }
  53. @Override
  54. public boolean equals(Object obj) {
  55. if (this == obj)
  56. return true;
  57. if (obj == null)
  58. return false;
  59. if (getClass() != obj.getClass())
  60. return false;
  61. OutDetailModel other = (OutDetailModel) obj;
  62. if (uuid == null) {
  63. if (other.uuid != null)
  64. return false;
  65. } else if (!uuid.equals(other.uuid))
  66. return false;
  67. return true;
  68. }
  69. @Override
  70. public String toString() {
  71. return uuid +", "+bookName + ", " + sumNum
  72. + "本, " + sumMoney + "元";
  73. }
  74. }

OutDetailQueryModel

[java] view
plain
 copy

  1. package cn.hncu.out.vo;
  2. public class OutDetailQueryModel extends OutDetailModel{
  3. private int sumNum2;
  4. private double sumMoney2;
  5. public int getSumNum2() {
  6. return sumNum2;
  7. }
  8. public void setSumNum2(int sumNum2) {
  9. this.sumNum2 = sumNum2;
  10. }
  11. public double getSumMoney2() {
  12. return sumMoney2;
  13. }
  14. public void setSumMoney2(double sumMoney2) {
  15. this.sumMoney2 = sumMoney2;
  16. }
  17. }

表现层:

与进货模块相同的销售记录要保留所以不能有删除操作,也不能有修改操作,只能通过进货与销售来改变其中保存的值

列表:

[java] view
plain
 copy

  1. /*
  2. * ListPanel.java
  3. *
  4. * Created on __DATE__, __TIME__
  5. */
  6. package cn.hncu.out.ui;
  7. import java.util.List;
  8. import java.util.Map;
  9. import javax.swing.JFrame;
  10. import cn.hncu.out.business.factory.OutMainEbiFactory;
  11. import cn.hncu.out.vo.OutDetailModel;
  12. import cn.hncu.out.vo.OutMainModel;
  13. /**
  14. *
  15. * @author  __USER__
  16. */
  17. public class ListPanel extends javax.swing.JPanel {
  18. private JFrame mainFrame = null;
  19. private Map<OutMainModel, List<OutDetailModel>> map;
  20. /** Creates new form ListPanel */
  21. public ListPanel(JFrame mainFrame) {
  22. this.mainFrame = mainFrame;
  23. this.setOpaque(false);
  24. initComponents();
  25. map = OutMainEbiFactory.getOutMainEbi().getAll();
  26. myInit();
  27. }
  28. public ListPanel(JFrame mainFrame,
  29. Map<OutMainModel, List<OutDetailModel>> map) {
  30. this.mainFrame = mainFrame;
  31. this.setOpaque(false);
  32. this.map = map;
  33. initComponents();
  34. myInit();
  35. }
  36. private void myInit() {
  37. jListOutMain.setListData(map.keySet().toArray());
  38. }
  39. //GEN-BEGIN:initComponents
  40. // <editor-fold defaultstate="collapsed" desc="Generated Code">
  41. private void initComponents() {
  42. jLabel1 = new javax.swing.JLabel();
  43. btnAdd = new javax.swing.JButton();
  44. jScrollPane1 = new javax.swing.JScrollPane();
  45. jListOutMain = new javax.swing.JList();
  46. jScrollPane2 = new javax.swing.JScrollPane();
  47. jListOutDetails = new javax.swing.JList();
  48. btnQuery = new javax.swing.JButton();
  49. setLayout(null);
  50. jLabel1.setFont(new java.awt.Font("Microsoft YaHei UI", 1, 24));
  51. jLabel1.setForeground(new java.awt.Color(0, 255, 0));
  52. jLabel1.setText("\u9500\u552e\u5217\u8868");
  53. add(jLabel1);
  54. jLabel1.setBounds(360, 30, 130, 90);
  55. btnAdd.setText("\u6dfb\u52a0\u9500\u552e");
  56. btnAdd.addActionListener(new java.awt.event.ActionListener() {
  57. public void actionPerformed(java.awt.event.ActionEvent evt) {
  58. btnAddActionPerformed(evt);
  59. }
  60. });
  61. add(btnAdd);
  62. btnAdd.setBounds(160, 410, 93, 50);
  63. jListOutMain.setModel(new javax.swing.AbstractListModel() {
  64. String[] strings = { "" };
  65. public int getSize() {
  66. return strings.length;
  67. }
  68. public Object getElementAt(int i) {
  69. return strings[i];
  70. }
  71. });
  72. jListOutMain
  73. .addListSelectionListener(new javax.swing.event.ListSelectionListener() {
  74. public void valueChanged(
  75. javax.swing.event.ListSelectionEvent evt) {
  76. jListOutMainValueChanged(evt);
  77. }
  78. });
  79. jScrollPane1.setViewportView(jListOutMain);
  80. add(jScrollPane1);
  81. jScrollPane1.setBounds(110, 140, 260, 240);
  82. jListOutDetails.setModel(new javax.swing.AbstractListModel() {
  83. String[] strings = { "" };
  84. public int getSize() {
  85. return strings.length;
  86. }
  87. public Object getElementAt(int i) {
  88. return strings[i];
  89. }
  90. });
  91. jScrollPane2.setViewportView(jListOutDetails);
  92. add(jScrollPane2);
  93. jScrollPane2.setBounds(460, 110, 250, 360);
  94. btnQuery.setText("\u9500\u552e\u67e5\u8be2");
  95. btnQuery.addActionListener(new java.awt.event.ActionListener() {
  96. public void actionPerformed(java.awt.event.ActionEvent evt) {
  97. btnQueryActionPerformed(evt);
  98. }
  99. });
  100. add(btnQuery);
  101. btnQuery.setBounds(310, 410, 93, 50);
  102. }// </editor-fold>
  103. //GEN-END:initComponents
  104. private void btnQueryActionPerformed(java.awt.event.ActionEvent evt) {
  105. mainFrame.setContentPane(new QueryPanel(mainFrame));
  106. mainFrame.validate();
  107. }
  108. private void jListOutMainValueChanged(
  109. javax.swing.event.ListSelectionEvent evt) {
  110. OutMainModel outMain = (OutMainModel) jListOutMain.getSelectedValue();
  111. List<OutDetailModel> details = map.get(outMain);
  112. jListOutDetails.setListData(details.toArray());
  113. }
  114. private void btnAddActionPerformed(java.awt.event.ActionEvent evt) {
  115. mainFrame.setContentPane(new AddPanel(mainFrame));
  116. mainFrame.validate();
  117. }
  118. //GEN-BEGIN:variables
  119. // Variables declaration - do not modify
  120. private javax.swing.JButton btnAdd;
  121. private javax.swing.JButton btnQuery;
  122. private javax.swing.JLabel jLabel1;
  123. private javax.swing.JList jListOutDetails;
  124. private javax.swing.JList jListOutMain;
  125. private javax.swing.JScrollPane jScrollPane1;
  126. private javax.swing.JScrollPane jScrollPane2;
  127. // End of variables declaration//GEN-END:variables
  128. }

添加:

[java] view
plain
 copy

  1. /*
  2. * AddPanel.java
  3. *
  4. * Created on __DATE__, __TIME__
  5. */
  6. package cn.hncu.out.ui;
  7. import java.util.ArrayList;
  8. import java.util.List;
  9. import javax.swing.JFrame;
  10. import javax.swing.JOptionPane;
  11. import javax.swing.JPanel;
  12. import cn.hncu.book.business.factory.BookEbiFactory;
  13. import cn.hncu.book.vo.BookModel;
  14. import cn.hncu.out.business.factory.OutMainEbiFactory;
  15. import cn.hncu.out.vo.OutDetailModel;
  16. import cn.hncu.out.vo.OutMainModel;
  17. import cn.hncu.user.business.factory.UserEbiFactory;
  18. import cn.hncu.user.vo.UserModel;
  19. /**
  20. *
  21. * @author  __USER__
  22. */
  23. public class AddPanel extends JPanel {
  24. private JFrame mainFrame = null;
  25. private List<OutDetailModel> details = new ArrayList<OutDetailModel>();
  26. /** Creates new form AddPanel */
  27. public AddPanel(JFrame mainFrame) {
  28. this.setOpaque(false);
  29. this.mainFrame = mainFrame;
  30. initComponents();
  31. myInit();
  32. }
  33. private void myInit() {
  34. List<BookModel> books = BookEbiFactory.getBookEbi().getAll();
  35. for (BookModel book : books) {
  36. combBook.addItem(book);
  37. }
  38. List<UserModel> users = UserEbiFactory.getUserEbi().getAllOut();
  39. for (UserModel user : users) {
  40. combUser.addItem(user.getName());
  41. }
  42. }
  43. /** This method is called from within the constructor to
  44. * initialize the form.
  45. * WARNING: Do NOT modify this code. The content of this method is
  46. * always regenerated by the Form Editor.
  47. */
  48. //GEN-BEGIN:initComponents
  49. // <editor-fold defaultstate="collapsed" desc="Generated Code">
  50. private void initComponents() {
  51. jLabel1 = new javax.swing.JLabel();
  52. jLabel2 = new javax.swing.JLabel();
  53. combBook = new javax.swing.JComboBox();
  54. jLabel3 = new javax.swing.JLabel();
  55. tfdOutAmount = new javax.swing.JTextField();
  56. btnAddDetails = new javax.swing.JButton();
  57. jLabel4 = new javax.swing.JLabel();
  58. combUser = new javax.swing.JComboBox();
  59. jLabel5 = new javax.swing.JLabel();
  60. jScrollPane1 = new javax.swing.JScrollPane();
  61. outDetailList = new javax.swing.JList();
  62. btnAdd = new javax.swing.JButton();
  63. btnBack = new javax.swing.JButton();
  64. setLayout(null);
  65. jLabel1.setFont(new java.awt.Font("Microsoft YaHei UI", 1, 24));
  66. jLabel1.setForeground(new java.awt.Color(51, 255, 51));
  67. jLabel1.setText("\u6dfb\u52a0\u8fdb\u8d27");
  68. add(jLabel1);
  69. jLabel1.setBounds(360, 10, 140, 90);
  70. jLabel2.setForeground(new java.awt.Color(51, 255, 51));
  71. jLabel2.setText("\u56fe\u4e66\uff1a");
  72. add(jLabel2);
  73. jLabel2.setBounds(150, 110, 60, 40);
  74. combBook.setModel(new javax.swing.DefaultComboBoxModel(
  75. new String[] { "请选择..." }));
  76. combBook.addActionListener(new java.awt.event.ActionListener() {
  77. public void actionPerformed(java.awt.event.ActionEvent evt) {
  78. combBookActionPerformed(evt);
  79. }
  80. });
  81. add(combBook);
  82. combBook.setBounds(210, 120, 160, 26);
  83. jLabel3.setForeground(new java.awt.Color(51, 255, 51));
  84. jLabel3.setText("\u9500\u552e\u6570\u91cf\uff1a");
  85. add(jLabel3);
  86. jLabel3.setBounds(120, 170, 80, 40);
  87. add(tfdOutAmount);
  88. tfdOutAmount.setBounds(210, 180, 130, 26);
  89. btnAddDetails.setText("\u6dfb\u52a0\u660e\u7ec6");
  90. btnAddDetails.addActionListener(new java.awt.event.ActionListener() {
  91. public void actionPerformed(java.awt.event.ActionEvent evt) {
  92. btnAddDetailsActionPerformed(evt);
  93. }
  94. });
  95. add(btnAddDetails);
  96. btnAddDetails.setBounds(530, 180, 93, 30);
  97. jLabel4.setForeground(new java.awt.Color(51, 255, 51));
  98. jLabel4.setText("\u9500\u552e\u4eba\uff1a");
  99. add(jLabel4);
  100. jLabel4.setBounds(460, 110, 70, 40);
  101. combUser.setModel(new javax.swing.DefaultComboBoxModel(
  102. new String[] { "请选择..." }));
  103. add(combUser);
  104. combUser.setBounds(530, 120, 130, 26);
  105. jLabel5.setForeground(new java.awt.Color(51, 255, 51));
  106. jLabel5.setText("\u660e\u7ec6\u5217\u8868\uff1a");
  107. add(jLabel5);
  108. jLabel5.setBounds(120, 220, 90, 30);
  109. outDetailList.setModel(new javax.swing.AbstractListModel() {
  110. String[] strings = { "" };
  111. public int getSize() {
  112. return strings.length;
  113. }
  114. public Object getElementAt(int i) {
  115. return strings[i];
  116. }
  117. });
  118. jScrollPane1.setViewportView(outDetailList);
  119. add(jScrollPane1);
  120. jScrollPane1.setBounds(210, 230, 270, 200);
  121. btnAdd.setText("\u6dfb\u52a0");
  122. btnAdd.addActionListener(new java.awt.event.ActionListener() {
  123. public void actionPerformed(java.awt.event.ActionEvent evt) {
  124. btnAddActionPerformed(evt);
  125. }
  126. });
  127. add(btnAdd);
  128. btnAdd.setBounds(280, 470, 70, 40);
  129. btnBack.setText("\u8fd4\u56de");
  130. btnBack.addActionListener(new java.awt.event.ActionListener() {
  131. public void actionPerformed(java.awt.event.ActionEvent evt) {
  132. btnBackActionPerformed(evt);
  133. }
  134. });
  135. add(btnBack);
  136. btnBack.setBounds(450, 470, 70, 40);
  137. }// </editor-fold>
  138. //GEN-END:initComponents
  139. private void combBookActionPerformed(java.awt.event.ActionEvent evt) {
  140. tfdOutAmount.setText(null);
  141. }
  142. private void btnAddDetailsActionPerformed(java.awt.event.ActionEvent evt) {
  143. //收集参数
  144. BookModel book = (BookModel) combBook.getSelectedItem();
  145. String bookUuid = book.getUuid();
  146. int sumNum = 0;
  147. try {
  148. sumNum = Integer.parseInt(tfdOutAmount.getText());
  149. if (sumNum < 0) {
  150. throw new NumberFormatException();
  151. }
  152. } catch (NumberFormatException e) {
  153. JOptionPane.showMessageDialog(null, "进货数量信息输入格式不正确");
  154. }
  155. //组织参数
  156. OutDetailModel detail = new OutDetailModel();
  157. detail.setBookUuid(bookUuid);
  158. detail.setSumNum(sumNum);
  159. detail.setBookName(book.getName());
  160. details.add(detail);
  161. echoDetails();
  162. }
  163. private void echoDetails() {
  164. String echoStrs[] = new String[details.size()];
  165. for (int i = 0; i < details.size(); i++) {
  166. OutDetailModel detail = details.get(i);
  167. String bookName = BookEbiFactory.getBookEbi().getSingle(
  168. detail.getBookUuid()).getName();
  169. echoStrs[i] = "《" + bookName + "》," + detail.getSumNum() + "本";
  170. }
  171. outDetailList.setListData(echoStrs);
  172. }
  173. private void btnBackActionPerformed(java.awt.event.ActionEvent evt) {
  174. mainFrame.setContentPane(new ListPanel(mainFrame));
  175. mainFrame.validate();
  176. }
  177. private void btnAddActionPerformed(java.awt.event.ActionEvent evt) {
  178. //收集参数
  179. String outUserName = combUser.getSelectedItem().toString();
  180. String outUserUuid = UserEbiFactory.getUserEbi().getUserByName(
  181. outUserName).getUuid();
  182. //组织参数
  183. OutMainModel outMain = new OutMainModel();
  184. outMain.setOutUserId(outUserUuid);
  185. outMain.setOutUserName(outUserName);
  186. //调用逻辑层
  187. OutMainEbiFactory.getOutMainEbi().create(outMain, details);
  188. mainFrame.setContentPane(new ListPanel(mainFrame));
  189. mainFrame.validate();
  190. }
  191. //GEN-BEGIN:variables
  192. // Variables declaration - do not modify
  193. private javax.swing.JButton btnAdd;
  194. private javax.swing.JButton btnAddDetails;
  195. private javax.swing.JButton btnBack;
  196. private javax.swing.JComboBox combBook;
  197. private javax.swing.JComboBox combUser;
  198. private javax.swing.JLabel jLabel1;
  199. private javax.swing.JLabel jLabel2;
  200. private javax.swing.JLabel jLabel3;
  201. private javax.swing.JLabel jLabel4;
  202. private javax.swing.JLabel jLabel5;
  203. private javax.swing.JScrollPane jScrollPane1;
  204. private javax.swing.JList outDetailList;
  205. private javax.swing.JTextField tfdOutAmount;
  206. // End of variables declaration//GEN-END:variables
  207. }

查询:

[java] view
plain
 copy

  1. /*
  2. * QueryPanel.java
  3. *
  4. * Created on __DATE__, __TIME__
  5. */
  6. package cn.hncu.out.ui;
  7. import java.util.List;
  8. import java.util.Map;
  9. import javax.swing.JFrame;
  10. import javax.swing.JOptionPane;
  11. import cn.hncu.book.business.factory.BookEbiFactory;
  12. import cn.hncu.book.vo.BookModel;
  13. import cn.hncu.out.business.factory.OutMainEbiFactory;
  14. import cn.hncu.out.vo.OutDetailModel;
  15. import cn.hncu.out.vo.OutDetailQueryModel;
  16. import cn.hncu.out.vo.OutMainModel;
  17. import cn.hncu.out.vo.OutMainQueryModel;
  18. import cn.hncu.user.business.factory.UserEbiFactory;
  19. import cn.hncu.user.vo.UserModel;
  20. import cn.hncu.utils.DateUtil;
  21. /**
  22. *
  23. * @author  __USER__
  24. */
  25. public class QueryPanel extends javax.swing.JPanel {
  26. private JFrame mainFrame = null;
  27. /** Creates new form QueryPanel */
  28. public QueryPanel(JFrame mainFrame) {
  29. this.mainFrame = mainFrame;
  30. this.setOpaque(false);
  31. initComponents();
  32. myInit();
  33. }
  34. private void myInit() {
  35. List<UserModel> userList = UserEbiFactory.getUserEbi().getAllOut();
  36. for (UserModel user : userList) {
  37. combOutUser.addItem(user);
  38. }
  39. List<BookModel> books = BookEbiFactory.getBookEbi().getAll();
  40. for (BookModel book : books) {
  41. combBook.addItem(book);
  42. }
  43. }
  44. /** This method is called from within the constructor to
  45. * initialize the form.
  46. * WARNING: Do NOT modify this code. The content of this method is
  47. * always regenerated by the Form Editor.
  48. */
  49. //GEN-BEGIN:initComponents
  50. // <editor-fold defaultstate="collapsed" desc="Generated Code">
  51. private void initComponents() {
  52. jLabel1 = new javax.swing.JLabel();
  53. jLabel2 = new javax.swing.JLabel();
  54. jLabel3 = new javax.swing.JLabel();
  55. jLabel4 = new javax.swing.JLabel();
  56. jLabel5 = new javax.swing.JLabel();
  57. jLabel6 = new javax.swing.JLabel();
  58. jLabel7 = new javax.swing.JLabel();
  59. jLabel8 = new javax.swing.JLabel();
  60. jLabel9 = new javax.swing.JLabel();
  61. jLabel11 = new javax.swing.JLabel();
  62. jLabel12 = new javax.swing.JLabel();
  63. jLabel13 = new javax.swing.JLabel();
  64. tfdSumMoney2 = new javax.swing.JTextField();
  65. tfdUuid = new javax.swing.JTextField();
  66. tfdOutDetailUuid = new javax.swing.JTextField();
  67. tfdDate = new javax.swing.JTextField();
  68. tfdDate2 = new javax.swing.JTextField();
  69. tfdOutNum = new javax.swing.JTextField();
  70. tfdOutNum2 = new javax.swing.JTextField();
  71. tfdSumMoney = new javax.swing.JTextField();
  72. combBook = new javax.swing.JComboBox();
  73. combOutUser = new javax.swing.JComboBox();
  74. btnQuery = new javax.swing.JButton();
  75. btnBack = new javax.swing.JButton();
  76. setLayout(null);
  77. jLabel1.setFont(new java.awt.Font("Microsoft YaHei UI", 1, 24));
  78. jLabel1.setForeground(new java.awt.Color(51, 255, 51));
  79. jLabel1.setText("\u9500\u552e\u67e5\u8be2");
  80. add(jLabel1);
  81. jLabel1.setBounds(310, 10, 120, 60);
  82. jLabel2.setText("\u56fe\u4e66\uff1a");
  83. add(jLabel2);
  84. jLabel2.setBounds(460, 250, 60, 20);
  85. jLabel3.setText("\u9500\u552e\u8d77\u59cb\u65f6\u95f4\uff1a");
  86. add(jLabel3);
  87. jLabel3.setBounds(90, 170, 120, 20);
  88. jLabel4.setText("\u9500\u552e\u4eba\uff1a");
  89. add(jLabel4);
  90. jLabel4.setBounds(450, 110, 80, 20);
  91. jLabel5.setText("\u9500\u552e\u5355\u7f16\u53f7\uff1a");
  92. add(jLabel5);
  93. jLabel5.setBounds(100, 110, 110, 20);
  94. jLabel6.setText("\u9500\u552e\u6700\u5927\u91cf\uff1a");
  95. add(jLabel6);
  96. jLabel6.setBounds(410, 330, 100, 20);
  97. jLabel7.setText("\u9500\u552e\u6700\u5c0f\u91cf\uff1a");
  98. add(jLabel7);
  99. jLabel7.setBounds(100, 330, 130, 20);
  100. jLabel8.setText("\u9500\u552e\u660e\u7ec6\u7f16\u53f7\uff1a");
  101. add(jLabel8);
  102. jLabel8.setBounds(90, 250, 130, 20);
  103. jLabel9.setText("\u9500\u552e\u7ed3\u675f\u65f6\u95f4\uff1a");
  104. add(jLabel9);
  105. jLabel9.setBounds(400, 170, 120, 20);
  106. jLabel11.setText("\u683c\u5f0f\u5982\uff1a2016-04-01");
  107. add(jLabel11);
  108. jLabel11.setBounds(110, 200, 170, 20);
  109. jLabel12.setText("\u9500\u552e\u603b\u4ef7\u6700\u5927\u503c\uff1a");
  110. add(jLabel12);
  111. jLabel12.setBounds(380, 400, 140, 20);
  112. jLabel13.setText("\u9500\u552e\u603b\u4ef7\u6700\u5c0f\u503c\uff1a");
  113. add(jLabel13);
  114. jLabel13.setBounds(70, 400, 130, 20);
  115. add(tfdSumMoney2);
  116. tfdSumMoney2.setBounds(530, 400, 130, 30);
  117. add(tfdUuid);
  118. tfdUuid.setBounds(200, 110, 130, 30);
  119. add(tfdOutDetailUuid);
  120. tfdOutDetailUuid.setBounds(200, 250, 130, 30);
  121. add(tfdDate);
  122. tfdDate.setBounds(200, 170, 130, 30);
  123. add(tfdDate2);
  124. tfdDate2.setBounds(530, 170, 130, 30);
  125. add(tfdOutNum);
  126. tfdOutNum.setBounds(200, 330, 130, 30);
  127. add(tfdOutNum2);
  128. tfdOutNum2.setBounds(530, 330, 130, 30);
  129. add(tfdSumMoney);
  130. tfdSumMoney.setBounds(200, 400, 130, 30);
  131. combBook.setModel(new javax.swing.DefaultComboBoxModel(
  132. new String[] { "查询所有" }));
  133. add(combBook);
  134. combBook.setBounds(530, 250, 130, 26);
  135. combOutUser.setModel(new javax.swing.DefaultComboBoxModel(
  136. new String[] { "查询所有" }));
  137. add(combOutUser);
  138. combOutUser.setBounds(530, 110, 130, 26);
  139. btnQuery.setFont(new java.awt.Font("Microsoft YaHei UI", 1, 18));
  140. btnQuery.setText("\u67e5\u8be2");
  141. btnQuery.addActionListener(new java.awt.event.ActionListener() {
  142. public void actionPerformed(java.awt.event.ActionEvent evt) {
  143. btnQueryActionPerformed(evt);
  144. }
  145. });
  146. add(btnQuery);
  147. btnQuery.setBounds(210, 460, 80, 40);
  148. btnBack.setFont(new java.awt.Font("Microsoft YaHei UI", 1, 18));
  149. btnBack.setText("\u8fd4\u56de");
  150. btnBack.addActionListener(new java.awt.event.ActionListener() {
  151. public void actionPerformed(java.awt.event.ActionEvent evt) {
  152. btnBackActionPerformed(evt);
  153. }
  154. });
  155. add(btnBack);
  156. btnBack.setBounds(420, 460, 80, 40);
  157. }// </editor-fold>
  158. //GEN-END:initComponents
  159. private void btnQueryActionPerformed(java.awt.event.ActionEvent evt) {
  160. //收集参数
  161. String outUuid = tfdUuid.getText();
  162. String outUserName = (String) combOutUser.getSelectedItem();
  163. String outUserUuid = null;
  164. if (combOutUser.getSelectedIndex() > 0) {
  165. outUserUuid = UserEbiFactory.getUserEbi().getUserByName(outUserName)
  166. .getUuid();
  167. }
  168. String txtOutDate = tfdDate.getText();
  169. long outDate = 0;
  170. if (txtOutDate != null && txtOutDate.trim().length() > 0) {
  171. txtOutDate += " 00:00:00";
  172. outDate = DateUtil.StringToLong(txtOutDate, "进货起始时间输入格式错误!");
  173. if (outDate == -1) {
  174. return;
  175. }
  176. }
  177. String txtOutDate2 = tfdDate2.getText();
  178. long outDate2 = 0;
  179. if (txtOutDate2 != null && txtOutDate2.trim().length() > 0) {
  180. txtOutDate2 += " 23:59:59";
  181. outDate2 = DateUtil.StringToLong(txtOutDate2, "进货结束时间输入格式错误!");
  182. if (outDate2 == -1) {
  183. return;
  184. }
  185. }
  186. String outDetailUuid = tfdOutDetailUuid.getText();
  187. String bookUuid = null;
  188. if (combBook.getSelectedIndex() > 0) {
  189. String bookName = combBook.getSelectedItem().toString();
  190. bookUuid = BookEbiFactory.getBookEbi().getSingle(bookName)
  191. .getUuid();
  192. }
  193. int sumNum = 0;
  194. if (tfdOutNum.getText() != null
  195. && tfdOutNum.getText().trim().length() > 0) {
  196. try {
  197. sumNum = Integer.parseInt(tfdOutNum.getText());
  198. if (sumNum < 0) {
  199. throw new NumberFormatException();
  200. }
  201. } catch (NumberFormatException e) {
  202. JOptionPane.showMessageDialog(null, "进货最小量格式输入错误!");
  203. }
  204. }
  205. int sumNum2 = 0;
  206. if (tfdOutNum2.getText() != null
  207. && tfdOutNum2.getText().trim().length() > 0) {
  208. try {
  209. sumNum2 = Integer.parseInt(tfdOutNum2.getText());
  210. if (sumNum2 < 0) {
  211. throw new NumberFormatException();
  212. }
  213. } catch (NumberFormatException e) {
  214. JOptionPane.showMessageDialog(null, "进货最大量格式输入错误!");
  215. }
  216. }
  217. double sumMoney = 0;
  218. if (tfdSumMoney.getText() != null
  219. && tfdSumMoney.getText().trim().length() > 0) {
  220. try {
  221. sumMoney = Integer.parseInt(tfdSumMoney.getText());
  222. if (sumMoney < 0) {
  223. throw new NumberFormatException();
  224. }
  225. } catch (NumberFormatException e) {
  226. JOptionPane.showMessageDialog(null, "进货最小量格式输入错误!");
  227. }
  228. }
  229. double sumMoney2 = 0;
  230. if (tfdSumMoney2.getText() != null
  231. && tfdSumMoney2.getText().trim().length() > 0) {
  232. try {
  233. sumMoney2 = Integer.parseInt(tfdSumMoney2.getText());
  234. if (sumMoney2 < 0) {
  235. throw new NumberFormatException();
  236. }
  237. } catch (NumberFormatException e) {
  238. JOptionPane.showMessageDialog(null, "进货最小量格式输入错误!");
  239. }
  240. }
  241. //组织参数-------分别组织OutMainQueryModel和OutDetailQueryModel
  242. OutMainQueryModel imqm = new OutMainQueryModel();
  243. imqm.setOutDate(outDate);
  244. imqm.setOutDate2(outDate2);
  245. imqm.setOutUserId(outUserUuid);
  246. imqm.setOutUserName(outUserName);
  247. imqm.setUuid(outUuid);
  248. OutDetailQueryModel idqm = new OutDetailQueryModel();
  249. idqm.setBookUuid(bookUuid);
  250. idqm.setUuid(outDetailUuid);
  251. idqm.setSumMoney(sumMoney);
  252. idqm.setSumMoney2(sumMoney2);
  253. idqm.setSumNum(sumNum);
  254. idqm.setSumNum2(sumNum2);
  255. //调用逻辑层
  256. Map<OutMainModel, List<OutDetailModel>> map = OutMainEbiFactory
  257. .getOutMainEbi().getByCondition(imqm, idqm);
  258. //返回到结果页面
  259. mainFrame.setContentPane(new ListPanel(mainFrame, map));
  260. mainFrame.validate();
  261. }
  262. private void btnBackActionPerformed(java.awt.event.ActionEvent evt) {
  263. mainFrame.setContentPane(new ListPanel(mainFrame));
  264. mainFrame.validate();
  265. }
  266. //GEN-BEGIN:variables
  267. // Variables declaration - do not modify
  268. private javax.swing.JButton btnBack;
  269. private javax.swing.JButton btnQuery;
  270. private javax.swing.JComboBox combBook;
  271. private javax.swing.JComboBox combOutUser;
  272. private javax.swing.JLabel jLabel1;
  273. private javax.swing.JLabel jLabel11;
  274. private javax.swing.JLabel jLabel12;
  275. private javax.swing.JLabel jLabel13;
  276. private javax.swing.JLabel jLabel2;
  277. private javax.swing.JLabel jLabel3;
  278. private javax.swing.JLabel jLabel4;
  279. private javax.swing.JLabel jLabel5;
  280. private javax.swing.JLabel jLabel6;
  281. private javax.swing.JLabel jLabel7;
  282. private javax.swing.JLabel jLabel8;
  283. private javax.swing.JLabel jLabel9;
  284. private javax.swing.JTextField tfdDate;
  285. private javax.swing.JTextField tfdDate2;
  286. private javax.swing.JTextField tfdOutDetailUuid;
  287. private javax.swing.JTextField tfdOutNum;
  288. private javax.swing.JTextField tfdOutNum2;
  289. private javax.swing.JTextField tfdSumMoney;
  290. private javax.swing.JTextField tfdSumMoney2;
  291. private javax.swing.JTextField tfdUuid;
  292. // End of variables declaration//GEN-END:variables
  293. }
时间: 2024-08-24 11:41:57

Java之------单机版书店管理系统(设计思想和设计模式系列六)销售模块的相关文章

Java(二)--OOP设计思想

(一)java中的oop思想的由来 机器语言-直接有计算机的指令组成,指令.数据.地址都已"0"和"1"组成:可以被计算机直接执行. 汇编语言-用容易理解和记忆的符号表示指令.数据以及寄存器等,抽象层次低,程序员需要考虑大量的机器细节. 高级语言-接军人类的自然语言,提出了结构化数据和语句,为面向数据和过程抽象的. 面向对象-抽象成了现实的事物. (二)OOP的设计思想 从上图中我们可以看到:OOP的设计思想是:有哪些类?这些类有哪些方法?这些类有哪些属性?类和类之

java之 ------ 设计思想

java的设计思想 (设计思想.是须要不断领悟的.. . ) 一.封装 学java的人都知道这是向对象的编程语言,从字面上理解,就是针对对象的一些操作,将具有某一特性的实体封装成一个类或者是将具有一定功能的方法,抽取出来封装成一个供外面调用的方法,然后通过new这个类或方法生成对象,最后通 过对对象进行操作或者实现对应的功能. 如将一个人封装成一个人的类.人有属性:性别,年龄,出生日期.家庭住址等,外界对人进行操作时.仅仅能改变其属性值.可是不能改变属性的种类,这要更安全.并且当对人进行操作时.

十年阿里java架构师的六大设计原则和项目经验

先看一幅图吧: 这幅图清晰地表达了六大设计原则,但仅限于它们叫什么名字而已,它们具体是什么意思呢?下面我将从原文.译文.理解.应用,这四个方面分别进行阐述. 1.单一职责原则(Single Responsibility Principle - SRP) 原文:There should never be more than one reason for a class to change. 译文:永远不应该有多于一个原因来改变某个类. 理解:对于一个类而言,应该仅有一个引起它变化的原因.说白了就是

框架源码系列一:设计模式(设计思想、设计原则、各种设计模式介绍、设计模式总结)

要分析常用框架spring.mybatis.springboot.springcloud等的源码,首先要了解各种设计模式,因为框架里面应用了各种设计模式 一.设计思想 学习设计模式最重要的是掌握设计思想和设计原则,理解了设计思想和设计原则并运用到平时的编码中是最重要的!!! 1. 我们先来看下面的问题: 天天加班编程,编程到底都做的是什么? 撸代码,加班撸代码,写接口.写类.写方法 用设计模式或做设计的作用是什么? 指导.规定该如何撸代码,如何来写接口.写类.写方法 为什么要做设计.用设计模式?

Java-单机版的书店管理系统(练习设计模块和思想_系列 四(2) )

说明: 本博客为补全上篇-Java-单机版的书店管理系统(练习设计模块和思想_系列 四(1) )的,所以如果不懂,请先看上一篇. 本系列都是我一步一步学习来的, 所以,可能比较适合初学设计模块的人来学. 现在补全我目前写的所以代码: 公共类: 用户类型枚举:UserTypeEnum类 package cn.hncu.bookStore.common; /** * 功能:用户类型的枚举!<br/> * 定义在公共模块.<br/> * 变量:<br/> * ADMIN(1,

Java多个数相加源代码流程图设计思想

一.设计思想: 1.理解题目要求,即  编写程序完成多个数字相加并输出结果,题目中的难点就是命令行的参数为字符串,需要经过转化变为数字后进行计算,通过查询互联网得到解决问题方法,用“*.nextInt()”函数即可解决此问题. 2.设计程序的结构,先申请动态空间,完成可输入多个数字的要求. 最后通过输入.计算.输出完成程序. 二.程序流程图 三.源代码 package sum; import java.util.Scanner; public class Text { public static

Java设计思想(1)

前言:接下来学习的是java中非常重要的东西,也是非常抽象的东西,有种只可意会不可言传的感觉,不过没那么神秘咯,要相信代码功底好,这些都不在话下塞.不过设计思想需要的是不断的学习,不断的领悟,才能更好的体会设计思想. 一.组件 下面通过一个图片抽象的了解下: 这是一种"组件"封装体设计思想,图中的组件(1~k)很显然是组件,还有模块(1~m),子系统(1~n)也是可以看成是组件,而且系统也可能是组件,如果一个很大的软件,那么这部分系统只是项目的一角. 二.Java程序设计的基本原则1

《深入理解Android内核设计思想》已陆续在全国各大书店及网上书店上市,感谢大家一直以来的支持~~

今天星期六了,不知道兄弟姐妹们有没有休息,妮子还在上班,努力着上班.最近总是给大家分享点技术有关的文章!好久没静下心和大家聊聊天.继续第三篇,谈SEOer论行业心态!我们每时每刻都在学习,百度也在每时每刻在更新算法.之前做的可能是对的,但现在不一定会对,为什么.之前觉得发外链就有排名,但现在发外链也不一定有排名.因为百度把我们之前认知的都给否定了.对今天谈谈如何否定曾经一些错误认识. 否定心态 在学习的路上,如何去分辨那些才是对的,那些是好的.这些都是客观性认为,在客观性中否定.妮子现在写的文章

Java的最大优势是保守的设计思想

一位Java大牛和一位普通Java程序员之间的区别是什么? 我认为可以把程序员的层次看作一个金字塔,其中可以大致分成3个层次.在最底层的是很勤劳的程序员,但是他们可能对编程本身兴趣不大,他们也能做好工作,但是他们下班之后就不会再想关于编程的事.这是很正常的现象,软件业需要很多程序员,并且这个需求仍然在不断增长.中间层次上的程序员,想再多做一些,他们阅读科技新闻和网站上的消息,他们会跟进下一个版本的进展,他们关心自己的技能,这个层次的程序员很有趣.而最上层的程序员则是时刻对技艺以及技术的本质着迷.