Undertake the last database design and come to the database programming module!
1, Description
- Technology stack: Java language programming, JDBC, Swing graphical user interface design, database design
- Related tools: IntelliJ IDEA, JDK-15, SSMS, SQL Server.
2, Code organization mode
Imitating MVC pattern design, the view layer is responsible for handling user interaction, the control layer is responsible for handling user requests, and the logic layer is responsible for handling specific operations and database interaction.
Main class diagram:
3, Project construction
3, Project construction
At the initial stage of the project, there were many ideas and multiple functions were designed. After the programming practice, some functions were deleted, and the core functions of the demand analysis stage were retained, that is, register customers - > purchase goods by customers - > issue orders - > issue invoices.
The following figure shows the project directory (some functions are deleted and some classes are not implemented)
SSMS table creation:
4, Class file description
All classes in the above figure that are not described below can be ignored!
Program entry:
Application_Entrance.java
Constant file:
Constant.java: save various constants, etc
View layer class:
Login_Frame.java: administrator login interface
Administrator_Frame.java: administrator function interface
CustomerManage_Frame.java: customer management interface
GoodsManage_Frame.java: commodity management interface
OrderManage_Frame.java: order management interface
InvoiceManage_Frame.java: Invoice Management Interface
Control layer class:
LoginController.java: administrator login control
QueryController.java: query control
UpdateContriller.java: update control
AddController.java: add control
Logical layer class:
AddCustomerAction.java: new customer processing
AddGoodsInfoInOrder.java: add commodity information processing in order
AddInvoiceAction.java: add invoice processing
AddOrderAction.java: add order processing
QueryAdministratorAction.java: query administrator
QueryCustomerAction.java: query customer
QueryGoodsAction.java: query goods
QueryGoodsInfoInOrderAction.java: query the product information in the order
QueryInvoiceAction.java: query invoice
QueryOrderAction.java: query order
UpdateGoodsAction.java: update product information
The documents mentioned above are valid.
5, Running example
Operation sequence of core business: administrator enters password to log in - > add customer - > go shopping - > customer purchases goods - > issue order - > Save order - > issue invoice - > select payment method - > go payment - > Save (print) invoice
The above is the core business! Of course, the author has also implemented some other functions, which can be known in the source code!
6, Complete source code
The following is part of the class source code. The author has uploaded all the code. All the uploaded files are free!!! Do not need any form of currency!!!
Complete source code direct, biubiubiu~~~
Constant.java:
/* *@author W-nut * */ package application_Constant; import java.util.ArrayList; public interface Constant { //the link to database String DATABASE_URL="jdbc:sqlserver://W-NUT:1433;DatabaseName=CustomerPurchase"; String USER_NAME="sa"; String USER_PASSWORD="123456"; //the name of actions String LOAD_DATABASE="application_Action.LoadDatabaseAction"; //the query of SQL String QUERY_ADMINISTRATOR_NAME_PASSWORD="select ad_Name,ad_Password from CP_administrator"; String QUERY_CUSTOMER="select* from CP_customer"; String QUERY_CUSTOMER_NUM="select cus_Num from CP_customer"; String QUERY_CUSTOMER_BY_NAME="select cus_Name from CP_customer where cus_Name=?"; String QUERY_CUSTOMER_ALL_BY_NAME="select cus_Num,cus_Name,cus_Tel,cus_Address from CP_customer where cus_Name=?"; String QUERY_CUSTOMER_NUM_BY_NAME="select cus_Num from CP_customer where cus_Name=?"; String QUERY_CUSTOMER_NAME="select cus_Name from CP_customer"; String QUERY_GOODS= "select* from CP_goods"; String QUERY_GOODS_BY_NAME="select * from CP_goods where goods_Name=?"; String QUERY_GOODS_STORE_NUM_BY_NAME="select goods_StoreNum from CP_goods where goods_Name=?"; String QUERY_GOODS_STORE_NUM="select goods_StoreNum from CP_goods where goods_Name=?"; String QUERY_GOODS_INFO_IN_ORDER_BY_ORDER_NUM= "select goods_Name,goods_ChooseNum from CP_goodsInfoInOrder where order_Num=?"; String QUERY_GOODS_INFO_IN_ORDER_LAST_PK="select info_PK from CP_goodsInfoInOrder "; String QUERY_ORDER_NUM="select order_Num from CP_Order"; String QUERY_INVOICE_NUM="select inv_Num from CP_invoice"; String ADD_CUSTOMER="insert into CP_customer values(?,?,?,?) "; String ADD_ORDER="insert into CP_order(order_Num,order_CustomerNum,order_Date) values(?,?,?)"; String ADD_GOODS_INFO_IN_ORDER="insert into CP_goodsInfoInOrder values(?,?,?,?,?)"; String ADD_INVOICE="insert into CP_invoice values(?,?,?,?,?,?)"; String UPDATE_GOODS_STORE_NUM="update CP_goods set goods_StoreNum=? where goods_Name=?"; //the table info of customer ArrayList<String>CUSTOMER_INFO_HEADER=new ArrayList<>(); //Customer table header ArrayList<String>CUSTOMER_INFO_NUM=new ArrayList<>(); //Customer number ArrayList<String>CUSTOMER_INFO_NAME=new ArrayList<>(); //Customer name ArrayList<String>CUSTOMER_INFO_TEL=new ArrayList<>(); //Customer telephone ArrayList<String>CUSTOMER_INFO_ADDRESS=new ArrayList<>(); //Customer address ArrayList<String>CUSTOMER_INFO_ALL=new ArrayList<>(); //All customer information //the table info of goods ArrayList<String>GOODS_INFO_HEADER=new ArrayList<>(); //Item table header ArrayList<String>GOODS_INFO_SELECTED_HEADER=new ArrayList<>(); //Selected item table header ArrayList<String>GOODS_INFO_NUM=new ArrayList<>(); //Commodity No ArrayList<String>GOODS_INFO_NAME=new ArrayList<>(); //Trade name ArrayList<Float>GOODS_INFO_PRICE=new ArrayList<>(); //item pricing ArrayList<Integer>GOODS_INFO_STORE_NUM=new ArrayList<>(); //Commodity inventory ArrayList<String>GOODS_SELECTED_HEADER=new ArrayList<>(); //Selected item table header ArrayList<String>GOODS_SELECTED_NAME=new ArrayList<>(); //Selected product name ArrayList<String>GOODS_SELECTED_CHOOSE_NUM=new ArrayList<>(); //Number of selected products //the info of order table ArrayList<String>ORDER_INFO_NUM=new ArrayList<>(); //Order No. queried ArrayList<String>INVOICE_INFO_NUM=new ArrayList<>(); //Invoice No. queried //some state flags int CUSTOMER_NAME_OVER_LENGTH=0; //Incorrect length of customer name entered int CUSTOMER_NAME_OVERLOAD=1; //Enter customer name duplicate name int CUSTOMER_NAME_NOT_OVERLOAD=2; //Customer name is not the same int CUSTOMER_TEL_OVER_LENGTH=3; //Wrong phone length for customer name input int CUSTOMER_ADDRESS_OVER_LENGTH=4; //Input customer name address length error int ADD_CUSTOMER_ALLOWED=5; //All customer information entered are legal int DATABASE_ERROR=6; //Database error int GOODS_STORE_NUM_SHORT=7; //Insufficient inventory of goods int GOODS_STORE_NUM_ENOUGH=8; //Sufficient inventory of goods int INPUT_NOT_INTEGER=9; //Input is not an integer int ERROR=10; //Operation successful int SUCCESS=11; //operation failed //the ways of paying String [] PAY_WAYS={"Alipay","WeChat","bank card","cash"}; //Payment method }
Application_Entrance.java:
/* * @author W-nut * Business process: register customer information - > purchase goods - > generate orders - > issue invoices * Framework mode: imitate MVC (model view controller) */ package application_Entrance; import application_Frame.Login_Frame; @SuppressWarnings("unused") public class Application_Entrance { public static void main(String[] args) { Login_Frame login_frame=new Login_Frame(); } }
Login_Frame.java:
/* * @author W-nut */ package application_Frame; import application_Controller.LoginController; import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Login_Frame extends JFrame { // JFormDesigner - Variables declaration - DO NOT MODIFY //GEN-BEGIN:variables private JButton button_Login; private JButton button_Esc; private JTextField textField_User_Name; private JLabel label_User_Name; private JLabel label_Password; private JPasswordField passwordField_Password; private Administrator_Frame administrator_frame; private LoginController loginController; // JFormDesigner - End of variables declaration //GEN-END:variables public Login_Frame() { initComponents(); Load_Login_Frame(); } public String get_textField_User_Name() { return textField_User_Name.getText(); } public String get_passwordField_Password() { return String.valueOf(passwordField_Password.getPassword()); } private void Load_Login_Frame() { this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); this.setSize(400,300); this.setVisible(true); } private void button_Login_MouseClicked(MouseEvent e) { boolean input_message= !get_textField_User_Name().equals("") && !get_passwordField_Password().equals(""); if(input_message) { loginController=new LoginController(get_textField_User_Name(),get_passwordField_Password()); boolean id_verifiedMessage = loginController.getVerifiedMessage(); if(id_verifiedMessage) { administrator_frame = new Administrator_Frame(); this.setVisible(false); } else JOptionPane.showMessageDialog(this,"Wrong user name or password!"); } else JOptionPane.showMessageDialog(this,"User name and password cannot be empty!"); } private void button_Esc_MouseClicked(MouseEvent e) { System.exit(0); } private void initComponents() { // Generated using JFormDesigner Evaluation license - nut button_Login = new JButton(); button_Esc = new JButton(); textField_User_Name = new JTextField(); label_User_Name = new JLabel(); label_Password = new JLabel(); passwordField_Password = new JPasswordField(); //======== this ======== setTitle("W-nut Login"); var contentPane = getContentPane(); contentPane.setLayout(null); //---- button_Login ---- button_Login.setText("Login"); button_Login.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { button_Login_MouseClicked(e); } }); contentPane.add(button_Login); button_Login.setBounds(new Rectangle(new Point(115, 215), button_Login.getPreferredSize())); //---- button_Esc ---- button_Esc.setText("Esc"); button_Esc.addMouseListener(new MouseAdapter() { @Override //Override parent method declaration public void mouseClicked(MouseEvent e) { button_Esc_MouseClicked(e); } }); contentPane.add(button_Esc); button_Esc.setBounds(new Rectangle(new Point(265, 215), button_Esc.getPreferredSize())); contentPane.add(textField_User_Name); textField_User_Name.setBounds(155, 65, 135, textField_User_Name.getPreferredSize().height); //---- label_User_Name ---- label_User_Name.setText("User_Name"); contentPane.add(label_User_Name); label_User_Name.setBounds(new Rectangle(new Point(70, 70), label_User_Name.getPreferredSize())); //---- label_Password ---- label_Password.setText("Password"); contentPane.add(label_Password); label_Password.setBounds(new Rectangle(new Point(70, 125), label_Password.getPreferredSize())); contentPane.add(passwordField_Password); passwordField_Password.setBounds(155, 115, 135, passwordField_Password.getPreferredSize().height); { // compute preferred size Dimension preferredSize = new Dimension(); for(int i = 0; i < contentPane.getComponentCount(); i++) { Rectangle bounds = contentPane.getComponent(i).getBounds(); preferredSize.width = Math.max(bounds.x + bounds.width, preferredSize.width); preferredSize.height = Math.max(bounds.y + bounds.height, preferredSize.height); } Insets insets = contentPane.getInsets(); preferredSize.width += insets.right; preferredSize.height += insets.bottom; contentPane.setMinimumSize(preferredSize); contentPane.setPreferredSize(preferredSize); } pack(); setLocationRelativeTo(getOwner()); // JFormDesigner - End of component initialization //GEN-END:initComponents } }
Adminstrator_Frame.java:
/* * Created by JFormDesigner on Mon Nov 16 17:55:01 CST 2020 * @author W-nut */ package application_Frame; import java.awt.*; import java.awt.event.*; import javax.swing.*; import application_Frame_Administrator_ChildFrame.*; @SuppressWarnings("unused") public class Administrator_Frame extends JFrame { public Administrator_Frame() { initComponents(); Load_Administrator(); } private void Load_Administrator() { this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setSize(400,300); this.setVisible(true); } private void menuItem_AddCustomer_ActionPerformed(ActionEvent e) { CustomerManage_Frame customerManage_frame=new CustomerManage_Frame(0); this.setVisible(false); } private void menuItem_QueryCustomer_ActionPerformed(ActionEvent e) { CustomerManage_Frame customerManage_frame=new CustomerManage_Frame(1); this.setVisible(false); } private void menuItem_DeleteCustomer_ActionPerformed(ActionEvent e) { CustomerManage_Frame customerManage_frame=new CustomerManage_Frame(2); this.setVisible(false); } private void menuItem_UpdateCustomer_ActionPerformed(ActionEvent e) { CustomerManage_Frame customerManage_frame=new CustomerManage_Frame(3); this.setVisible(false); } private void menuItem_QueryOrder_ActionPerformed(ActionEvent e) { OrderManage_Frame orderManage_frame=new OrderManage_Frame(0); this.setVisible(false); } private void menuItem_AddOrder_ActionPerformed(ActionEvent e) { OrderManage_Frame orderManage_frame=new OrderManage_Frame(1); orderManage_frame.checkCustomer(); this.setVisible(false); } private void menuItem_AddInvoice_ActionPerformed(ActionEvent e) { InvoiceManage_Frame invoiceManage_frame=new InvoiceManage_Frame(); invoiceManage_frame.checkCustomer(); this.setVisible(false); } private void menuItem_SelectGoods_ActionPerformed(ActionEvent e) { GoodsManage_Frame goodsManage_frame=new GoodsManage_Frame(0); goodsManage_frame.checkCustomer(); this.setVisible(false); } private void menuItem_AddCustomer_MouseClicked(MouseEvent e) { // TODO add your code here } private void menuItem_QueryCustomer_MouseClicked(MouseEvent e) { // TODO add your code here } private void menuItem__DeleteCustomer_MouseClicked(MouseEvent e) { // TODO add your code here } private void menuItem_UpdateCustomer_MouseClicked(MouseEvent e) { // TODO add your code here } //Method function: initialize framework private void initComponents() { // JFormDesigner - Component initialization - DO NOT MODIFY //GEN-BEGIN:initComponents // Generated using JFormDesigner Evaluation license - nut menuBar_1 = new JMenuBar(); menu_CustomerManage = new JMenu(); menuItem_AddCustomer = new JMenuItem(); menuItem_QueryCustomer = new JMenuItem(); menuItem_DeleteCustomer = new JMenuItem(); menuItem_UpdateCustomer = new JMenuItem(); menu_GoodsManage = new JMenu(); menuItem_SelectGoods = new JMenuItem(); menuItem_AddGoods = new JMenuItem(); menuItem_DeleteGoods = new JMenuItem(); menuItem_QueryGoods = new JMenuItem(); menuItem_UpdateGoods = new JMenuItem(); menu_OrderManage = new JMenu(); menuItem_QueryOrder = new JMenuItem(); menuItem_AddOrder = new JMenuItem(); menu_InvoiceManage = new JMenu(); menuItem_AddInvoice = new JMenuItem(); menu_Own = new JMenu(); menuItem_OwnInfo = new JMenuItem(); //======== this ======== setTitle("Nut Dynasty-Administrator"); setIconImage(new ImageIcon("E:\\CodeFile\\DataBase-CustomerPurchaseManagementSystem\\Code\\src\\META-INF\\background.jpg").getImage()); var contentPane = getContentPane(); contentPane.setLayout(null); //======== menuBar_1 ======== { //======== menu_CustomerManage ======== { menu_CustomerManage.setText("\u5ba2\u6237\u7ba1\u7406"); //---- menuItem_AddCustomer ---- menuItem_AddCustomer.setText("\u65b0\u589e\u5ba2\u6237\u4fe1\u606f"); menuItem_AddCustomer.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { menuItem_AddCustomer_MouseClicked(e); } }); menuItem_AddCustomer.addActionListener(e -> menuItem_AddCustomer_ActionPerformed(e)); menu_CustomerManage.add(menuItem_AddCustomer); //---- menuItem_QueryCustomer ---- menuItem_QueryCustomer.setText("\u67e5\u8be2\u5ba2\u6237\u4fe1\u606f"); menuItem_QueryCustomer.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { menuItem_QueryCustomer_MouseClicked(e); } }); menuItem_QueryCustomer.addActionListener(e -> menuItem_QueryCustomer_ActionPerformed(e)); menu_CustomerManage.add(menuItem_QueryCustomer); //---- menuItem_DeleteCustomer ---- menuItem_DeleteCustomer.setText("\u5220\u9664\u5ba2\u6237\u4fe1\u606f"); menuItem_DeleteCustomer.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { menuItem__DeleteCustomer_MouseClicked(e); } }); menuItem_DeleteCustomer.addActionListener(e -> menuItem_DeleteCustomer_ActionPerformed(e)); menu_CustomerManage.add(menuItem_DeleteCustomer); //---- menuItem_UpdateCustomer ---- menuItem_UpdateCustomer.setText("\u4fee\u6539\u5ba2\u6237\u4fe1\u606f"); menuItem_UpdateCustomer.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { menuItem_UpdateCustomer_MouseClicked(e); } }); menuItem_UpdateCustomer.addActionListener(e -> menuItem_UpdateCustomer_ActionPerformed(e)); menu_CustomerManage.add(menuItem_UpdateCustomer); } menuBar_1.add(menu_CustomerManage); //======== menu_GoodsManage ======== { menu_GoodsManage.setText("\u5546\u54c1\u7ba1\u7406"); //---- menuItem_SelectGoods ---- menuItem_SelectGoods.setText("\u9009\u8d2d\u5546\u54c1"); menuItem_SelectGoods.addActionListener(e -> menuItem_SelectGoods_ActionPerformed(e)); menu_GoodsManage.add(menuItem_SelectGoods); //---- menuItem_AddGoods ---- menuItem_AddGoods.setText("\u65b0\u589e\u5546\u54c1\u4fe1\u606f"); menu_GoodsManage.add(menuItem_AddGoods); //---- menuItem_DeleteGoods ---- menuItem_DeleteGoods.setText("\u5220\u9664\u5546\u54c1\u4fe1\u606f"); menu_GoodsManage.add(menuItem_DeleteGoods); //---- menuItem_QueryGoods ---- menuItem_QueryGoods.setText("\u67e5\u8be2\u5546\u54c1\u4fe1\u606f"); menu_GoodsManage.add(menuItem_QueryGoods); //---- menuItem_UpdateGoods ---- menuItem_UpdateGoods.setText("\u4fee\u6539\u5546\u54c1\u4fe1\u606f"); menu_GoodsManage.add(menuItem_UpdateGoods); } menuBar_1.add(menu_GoodsManage); //======== menu_OrderManage ======== { menu_OrderManage.setText("\u8ba2\u5355\u7ba1\u7406"); //---- menuItem_QueryOrder ---- menuItem_QueryOrder.setText("\u67e5\u8be2\u8ba2\u5355\u4fe1\u606f"); menuItem_QueryOrder.addActionListener(e -> { menuItem_QueryOrder_ActionPerformed(e); menuItem_QueryOrder_ActionPerformed(e); }); menu_OrderManage.add(menuItem_QueryOrder); //---- menuItem_AddOrder ---- menuItem_AddOrder.setText("\u65b0\u589e\u8ba2\u5355\u4fe1\u606f"); menu_OrderManage.add(menuItem_AddOrder); } menuBar_1.add(menu_OrderManage); //======== menu_InvoiceManage ======== { menu_InvoiceManage.setText("\u53d1\u7968\u7ba1\u7406"); //---- menuItem_AddInvoice ---- menuItem_AddInvoice.setText("\u65b0\u589e\u53d1\u7968\u4fe1\u606f"); menuItem_AddInvoice.addActionListener(e -> menuItem_AddInvoice_ActionPerformed(e)); menu_InvoiceManage.add(menuItem_AddInvoice); } menuBar_1.add(menu_InvoiceManage); //======== menu_Own ======== { menu_Own.setText("\u4e2a\u4eba\u4e2d\u5fc3"); //---- menuItem_OwnInfo ---- menuItem_OwnInfo.setText("\u4e2a\u4eba\u4fe1\u606f"); menu_Own.add(menuItem_OwnInfo); } menuBar_1.add(menu_Own); } setJMenuBar(menuBar_1); { // compute preferred size Dimension preferredSize = new Dimension(); for(int i = 0; i < contentPane.getComponentCount(); i++) { Rectangle bounds = contentPane.getComponent(i).getBounds(); preferredSize.width = Math.max(bounds.x + bounds.width, preferredSize.width); preferredSize.height = Math.max(bounds.y + bounds.height, preferredSize.height); } Insets insets = contentPane.getInsets(); preferredSize.width += insets.right; preferredSize.height += insets.bottom; contentPane.setMinimumSize(preferredSize); contentPane.setPreferredSize(preferredSize); } pack(); setLocationRelativeTo(getOwner()); // JFormDesigner - End of component initialization //GEN-END:initComponents } // JFormDesigner - Variables declaration - DO NOT MODIFY //GEN-BEGIN:variables // Generated using JFormDesigner Evaluation license - nut private JMenuBar menuBar_1; private JMenu menu_CustomerManage; private JMenuItem menuItem_AddCustomer; private JMenuItem menuItem_QueryCustomer; private JMenuItem menuItem_DeleteCustomer; private JMenuItem menuItem_UpdateCustomer; private JMenu menu_GoodsManage; private JMenuItem menuItem_SelectGoods; private JMenuItem menuItem_AddGoods; private JMenuItem menuItem_DeleteGoods; private JMenuItem menuItem_QueryGoods; private JMenuItem menuItem_UpdateGoods; private JMenu menu_OrderManage; private JMenuItem menuItem_QueryOrder; private JMenuItem menuItem_AddOrder; private JMenu menu_InvoiceManage; private JMenuItem menuItem_AddInvoice; private JMenu menu_Own; private JMenuItem menuItem_OwnInfo; // JFormDesigner - End of variables declaration //GEN-END:variables }