3atv精品不卡视频,97人人超碰国产精品最新,中文字幕av一区二区三区人妻少妇,久久久精品波多野结衣,日韩一区二区三区精品

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

JAVA学习作品之销售管理系统V1.0

發布時間:2023/12/31 windows 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JAVA学习作品之销售管理系统V1.0 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

? ? ?這套管理系統是本人學習JAVA一個月的作品,開發周期近10天左右,代碼量約1500行,基于Eclipse JDK1.7,運用了Swing/SWT 開發工具Windowbuilder,配套的還包括JDBC驅動、以及微軟的SQL Server數據庫。源碼全部開放,本人多輪測試,結果OK。由于本人初學JAVA,代碼漏洞及不足之處難免,還請多多指正!實用方面,如果加入掃碼器接口,軟件應該會更完美!只是條件有限,僅為學習。

第一部分:首先看下軟件信息,大小600k不到,雙擊運行,前提JDK1.7及以上環境配置好, SQL Server數據庫安裝好,數據庫配置3個table如下圖:

?

?

雙擊.jar程序,打開系統,界面如圖:

工具欄兩個選項:數據庫管理、關于,主界面5大功能塊進貨、定價、銷售、報廢、報表。其他(未開發功能)。

點開工具欄數:據庫管理,可以選擇清除系統中舊數據,防止系統運行幾年后數據累積增導致運行速度變慢:

點擊兩年前數據,彈出對話框,提示是否刪除yyyy-mm-dd之前的數據,點擊確定彈出清理成功!

點擊關于,顯示版本等信息:

點擊主界面進貨,進入進貨管理界面,輸入我們進貨的信息:品名(商品名稱)、數量、單位(銷售單位,不支持單位換算)、總價(該數量下的總金額),錄入如下信息

?

點擊提交按鈕,提示成功!(如果商品之前有記錄過,輸入商品名后,按Enter鍵,會自動帶出商品單位)。 我們繼續多輸入一些其他商品。。。

?

點擊定價,進入定價界面,界面左邊兩個按鈕。 查找按鈕:首先選擇日期區間(系統默認一個月,我們調整為最近三天),起始和結束日期,對這一時間區間進貨的商品指定銷售價格

?

我們點擊查找按鈕,顯示我們2016/03/20-2016/03/28的所有進貨商品,系統自動計算出進貨的價格,以此作為銷售價格的參考

?

再看左下角的統一按比例加價(進貨單價*比例)和 統一按固定值加價(進貨單價+固定值),我們模擬比例加價25%,點擊確定按鈕,看下銷售單價變化

?

當然銷售單價可以手動改動,比如我們將雀巢咖啡的價格修改為22元/盒,直接更改后按Enter即可

確定好銷售價格后,我們點提交按鈕,提示提交成功!

?

再點擊我們的銷售功能,進入銷售管理界面:下拉框直接選擇商品,系統自動帶出商品單位,如果上一步你有維護價格,系統也會自動帶出銷售價格,你只需要輸入數量即可。

當然,如果沒有維護銷售價格,你可以手動輸入單價,單價可以被手動調整

比如客戶要買薯片2個,選擇百事薯片,系統帶出價格4.75(可以被修改),輸入數量2個,點擊>>按鈕,加入購物車,總價9.5,我們多購買一些商品

?

如果我想將真彩水筆從購物車移除,選中點擊刪除按鈕即可

如果同一商品多次加入購物車,系統會提示重復加入,請刪除后,重新輸入數量再次加入。最后,我們點擊提交按鈕,系統會計算購物車的總金額,提示是否提交

點是(Y),顯示提交結果,交易成功。

?

回到主界面,點擊報廢功能,如有過期等原因導致報廢,這個功能最實用了。選擇商品,輸入數量,按Enter鍵,顯示成本,點擊提交,顯示報廢成功!

?

再回到主界面,進入報表功能,這部分稍微復雜點,首先看報表界面。包含三大功能:記錄、庫存、利潤。 在未鎖定日期區間前,你不能進行任何操作。

?

我們選擇最近一個月的記錄,然后鎖定日期,展開左邊功能節點——記錄:進貨記錄、銷售記錄、報廢記錄。 ? 庫存:當前庫存(與日期區間無關)。 ?最后是利潤分析(計算銷售收入、成本之凈利潤。?

?比如我們點擊銷售記錄:

?

如果在實際中,進貨、報廢、或者銷售錄入出錯了,我們都可以在這里鎖定日期,找到記錄然后選中,鼠標右鍵選擇刪除記錄

?

點擊刪除記錄,提示刪除的數據不加入報表計算,確認刪除,提示刪除成功

?

我們再看看當前剩余商品庫存,幫助核對商品數量

?

最后是利潤分析,這份報表十分重要

最后從這份報表來驗證我們的操作結果:

1.康師傅紅燒牛肉面:銷售了5袋,每袋銷售價格2.5,進貨價格2.0,銷售利潤2.5,沒有報廢記錄,凈利潤2.5

2.百事薯片:銷售2份,每份銷售價格4.75,進貨價格3.8,銷售利潤1.9,其中有一份因為過期導致成本增加3.8,所以凈利潤虧1.9

........

最后總計銷售利潤和報廢成本,得到凈利潤

?

好了,功能部分終于說完了。直接貢獻代碼部分,不用多做說明了,本人注釋一向清楚:

?

第二部分:源碼

主界面:

?

package org.screen;import java.awt.event.ActionListener; import java.text.SimpleDateFormat; import java.util.Date; import java.util.GregorianCalendar;import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JMenu; import javax.swing.JMenuItem; import javax.swing.JOptionPane; import javax.swing.JPopupMenu; import javax.swing.SwingConstants;import java.awt.Color; import java.awt.EventQueue; import java.awt.Font; import java.awt.event.ActionEvent; import javax.swing.JToolBar;public class screen {private JFrame frame;private JButton button_4;private JButton button_5;/*** Launch the application.*/public static void main(String[] args) {EventQueue.invokeLater(new Runnable() { //允許多次執行public void run() {try {screen window = new screen(); //new一個窗口(全屏)window.frame.setVisible(true); //設置fram可見} catch (Exception e) {e.printStackTrace();}}});}/*** Create the application.*/public screen() {initialize(); }/*** Initialize the contents of the frame.*/private void initialize() {frame = new JFrame("零售業管理系統");frame.getContentPane().setFocusTraversalPolicyProvider(true);int screenWidth = java.awt.Toolkit.getDefaultToolkit().getScreenSize().width; //根據用戶屏幕,自動調整屏幕元素位置int screenHeight = java.awt.Toolkit.getDefaultToolkit().getScreenSize().height;frame.setBounds(0, 0, screenWidth, screenHeight); //設置fram的位置和長寬frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //定義close動作frame.getContentPane().setLayout(null); JLabel lblNewLabel = new JLabel("零售業管理系統 V1.0"); //設置系統標題lblNewLabel.setHorizontalAlignment(SwingConstants.CENTER);lblNewLabel.setForeground(Color.BLUE);lblNewLabel.setFont(new Font("仿宋", Font.BOLD | Font.ITALIC, 36));lblNewLabel.setBounds((screenWidth-400)/2, (screenHeight-350)/2 - 80, 400, 50);frame.getContentPane().add(lblNewLabel); JButton newButton = new JButton("進貨"); //點擊進貨按鈕,調用進貨管理程序界面newButton.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent arg0) {stock_screen.main(null);}});newButton.setFont(new Font("仿宋", Font.BOLD, 20)); //設置按鈕字體,大小,位置newButton.setBounds((screenWidth-400)/2, (screenHeight-350)/2, 400, 50);frame.getContentPane().add(newButton); //放入fram容器中JButton button = new JButton("定價"); //設置銷售按鈕button.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent arg0) {pricing_screen.main(null);}});button.setFont(new Font("仿宋", Font.BOLD, 20));button.setBounds((screenWidth-400)/2, (screenHeight-350)/2+60*1, 400, 50);frame.getContentPane().add(button);JButton button_1 = new JButton("銷售"); //設置報廢按鈕button_1.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent arg0) {sales_screen.main(null);}});button_1.setFont(new Font("仿宋", Font.BOLD, 20));button_1.setBounds((screenWidth-400)/2, (screenHeight-350)/2+60*2, 400, 50);frame.getContentPane().add(button_1);JButton button_2 = new JButton("報廢"); //設置庫存按鈕button_2.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent arg0) {waste_screen.main(null);}});button_2.setFont(new Font("仿宋", Font.BOLD, 20));button_2.setBounds((screenWidth-400)/2, (screenHeight-350)/2+60*3, 400, 50);frame.getContentPane().add(button_2);JButton button_3 = new JButton("報表"); //設置利潤按鈕button_3.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {report_screen.main(null);}});button_3.setFont(new Font("仿宋", Font.BOLD, 20));button_3.setBounds((screenWidth-400)/2, (screenHeight-350)/2+60*4, 400, 50);frame.getContentPane().add(button_3);JButton btnNewButton = new JButton("其他");btnNewButton.setFont(new Font("仿宋", Font.BOLD, 20));btnNewButton.setFocusPainted(false);btnNewButton.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent arg0) {JOptionPane.showMessageDialog(null, "功能暫未開放!");}});btnNewButton.setBounds((screenWidth-400)/2, (screenHeight-350)/2+60*5, 400, 50);frame.getContentPane().add(btnNewButton);//toolbar上增加兩個按鈕選項 數據管理和關于button_4 = new JButton("數據管理");button_4.addActionListener(new ActionListener() {//點擊按鈕事件public void actionPerformed(ActionEvent e) {JPopupMenu popupMenu = new JPopupMenu();//加載popupMenu選項JMenu menu = new JMenu("清空");//清理舊數據,優化數據庫JMenuItem item_1 = new JMenuItem("1年前數據");JMenuItem item_2 = new JMenuItem("2年前數據");JMenuItem item_3 = new JMenuItem("3年前數據");JMenuItem item_4 = new JMenuItem("4年前數據");JMenuItem item_5 = new JMenuItem("5年前數據");menu.add(item_1);menu.add(item_2);menu.add(item_3);menu.add(item_4);menu.add(item_5);popupMenu.add(menu);popupMenu.show(button_4, 0, button_4.getY() + button_4.getHeight());//選擇toolbar里item事件,執行舊數據清理item_1.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {GregorianCalendar gc=new GregorianCalendar(); //當前日期的前一年gc.setTime(new Date());gc.add(1, -1); SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");// 設置指定格式的當前日期時間String date = df.format(gc.getTime()); new OperationSqlData().DeleteSqlDataByYear(date);}});item_2.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {GregorianCalendar gc=new GregorianCalendar(); //當前日期的前一年gc.setTime(new Date());gc.add(1, -2); SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");// 設置指定格式的當前日期時間String date = df.format(gc.getTime()); new OperationSqlData().DeleteSqlDataByYear(date);}});item_3.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {GregorianCalendar gc=new GregorianCalendar(); //當前日期的前一年gc.setTime(new Date());gc.add(1, -3); SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");// 設置指定格式的當前日期時間String date = df.format(gc.getTime()); new OperationSqlData().DeleteSqlDataByYear(date);}});item_4.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {GregorianCalendar gc=new GregorianCalendar(); //當前日期的前兩年gc.setTime(new Date());gc.add(1, -4); SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");// 設置指定格式的當前日期時間String date = df.format(gc.getTime()); new OperationSqlData().DeleteSqlDataByYear(date);}});item_5.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {GregorianCalendar gc=new GregorianCalendar(); //當前日期的前一年gc.setTime(new Date());gc.add(1, -5); SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");// 設置指定格式的當前日期時間String date = df.format(gc.getTime()); new OperationSqlData().DeleteSqlDataByYear(date);}});}});button_4.setBorder(null);button_4.setFont(new Font("仿宋", Font.PLAIN, 14));JToolBar toolBar = new JToolBar();toolBar.setToolTipText("配置");toolBar.setRollover(true);toolBar.add(button_4);toolBar.setBounds(0, 0, screenWidth, 25);frame.getContentPane().add(toolBar);//分隔功能欄toolBar.addSeparator();//加入開發相關信息button_5 = new JButton("關于");button_5.setBorder(null);button_5.setFont(new Font("仿宋", Font.PLAIN, 14));toolBar.add(button_5);frame.getContentPane().add(toolBar);button_5.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent arg0) {about_screen.main(null);}});} }

?

?

主界面——關于:

?

package org.screen;import java.awt.EventQueue;import javax.swing.JFrame; import javax.swing.JTextPane;public class about_screen {private JFrame frame;/*** Launch the application.*/public static void main(String[] args) {EventQueue.invokeLater(new Runnable() {public void run() {try {about_screen window = new about_screen();window.frame.setVisible(true);} catch (Exception e) {e.printStackTrace();}}});}/*** Create the application.*/public about_screen() {initialize();}/*** Initialize the contents of the frame.*/private void initialize() {frame = new JFrame();frame.setBounds(50, 80, 400, 200);JTextPane textPane = new JTextPane();textPane.setBounds(00, 00, 400, 200);frame.getContentPane().add(textPane);textPane.setText("此管理軟件,僅為個人學習Java語言作品之一,源碼全部開放,如有疑問聯系QQ,初學Java不足之處還請指正,相互學習!"+"\r"+"\r"+ "版本 V1.0"+"\r"+"2016/03/25"+"\r"+"CSDN:居士愛吃泡面"+"\r"+"QQ:461356592");textPane.setEditable(false); }}

?

?

進貨管理:

?

?

package org.screen;import java.awt.EventQueue;import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JTextField; import java.awt.Font; import javax.swing.JButton; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import java.awt.event.ActionEvent;public class stock_screen {private JFrame frame;private JTextField textField;private JTextField textField_1;private JTextField textField_2;private JTextField textField_3;private JButton btnNewButton;/*** Launch the application.*/public static void main(String[] args) {EventQueue.invokeLater(new Runnable() {public void run() {try {stock_screen window = new stock_screen(); //創建進貨窗口界面window.frame.setVisible(true); //設置窗口可見} catch (Exception e) {e.printStackTrace();}}});}/*** Create the application.*/public stock_screen() {initialize();}/*** Initialize the contents of the frame.*/private void initialize() {frame = new JFrame("進貨管理"); //new一個Jfram容器int screenWidth = java.awt.Toolkit.getDefaultToolkit().getScreenSize().width/2;; //根據用戶屏幕,自動調整控件的顯示位置int screenHeight = java.awt.Toolkit.getDefaultToolkit().getScreenSize().height/2;;frame.setBounds(screenWidth/2, screenHeight/2, screenWidth, screenHeight);frame.getContentPane().setLayout(null); JLabel lblNewLabel = new JLabel("品名"); //設置label控件屬性,位置lblNewLabel.setFont(new Font("仿宋", Font.BOLD, 20));lblNewLabel.setBounds((screenWidth-180)/2, (screenHeight-180)/2, 50, 20);frame.getContentPane().add(lblNewLabel);JLabel lblNewLabel_1 = new JLabel("數量"); //設置label控件屬性,位置lblNewLabel_1.setFont(new Font("仿宋", Font.BOLD, 20));lblNewLabel_1.setBounds((screenWidth-180)/2, (screenHeight-180)/2+30*1, 50, 20);frame.getContentPane().add(lblNewLabel_1);JLabel lblNewLabel_2 = new JLabel("單位"); //設置label控件屬性,位置lblNewLabel_2.setFont(new Font("仿宋", Font.BOLD, 20));lblNewLabel_2.setBounds((screenWidth-180)/2, (screenHeight-180)/2+30*2, 50, 20);frame.getContentPane().add(lblNewLabel_2);JLabel lblNewLabel_3 = new JLabel("總價"); //設置label控件屬性,位置lblNewLabel_3.setFont(new Font("仿宋", Font.BOLD, 20));lblNewLabel_3.setBounds((screenWidth-180)/2, (screenHeight-180)/2+30*3, 50, 20);frame.getContentPane().add(lblNewLabel_3);textField = new JTextField(); //設置輸入Field控件屬性,位置textField.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {textField_2.setText(new OperationSqlData().getUnitByGoodsName(textField.getText()));}});textField.setBounds((screenWidth-180)/2+60, (screenHeight-180)/2, 180, 20);frame.getContentPane().add(textField);textField.setColumns(10);textField_1 = new JTextField(); //設置輸入Field控件屬性,位置textField_1.setBounds((screenWidth-180)/2+60, (screenHeight-180)/2+30*1, 120, 20);frame.getContentPane().add(textField_1);textField_1.setColumns(10);textField_2 = new JTextField(); //設置輸入ComboBox控件屬性,位置 ,默認下拉框兩個選項textField_2.setBounds((screenWidth-180)/2+60, (screenHeight-180)/2+30*2, 120, 20);frame.getContentPane().add(textField_2);textField_2.setText(new OperationSqlData().getUnitByGoodsName(textField.getText()));textField_3 = new JTextField(); //設置輸入Field控件屬性,位置textField_3.setBounds((screenWidth-180)/2+60, (screenHeight-180)/2+30*3, 120, 20);frame.getContentPane().add(textField_3);textField_3.setColumns(10);btnNewButton = new JButton("提交");btnNewButton.setMnemonic(KeyEvent.VK_ENTER);btnNewButton.setFont(new Font("仿宋", Font.BOLD, 16));btnNewButton.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {if (textField.getText().isEmpty()||textField_1.getText().isEmpty()||textField_3.getText().isEmpty()||textField_2.getText().isEmpty()) //檢查商品名字段是否為空{JOptionPane.showMessageDialog(null, "輸入欄位不能為空!");return;}int ret = new OperationSqlData().StockIn(textField.getText(), textField_1.getText(), (String) textField_2.getText(), textField_3.getText());if (ret == 1) //根據SQL返回值判斷執行結果,并顯示對話框{JOptionPane.showMessageDialog(null, "存儲成功");textField.setText(null);textField_1.setText(null);textField_2.setText(null);;textField_3.setText(null);}else{JOptionPane.showMessageDialog(null, "存儲失敗!");} }});btnNewButton.setBounds((screenWidth-180)/2+60, (screenHeight-180)/2+30*3+40, 120, 20);frame.getContentPane().add(btnNewButton);} }


定價界面

?

?

package org.screen;import java.awt.EventQueue;import javax.swing.JFrame; import javax.swing.JTable; import javax.swing.table.DefaultTableModel; import javax.swing.JScrollPane; import javax.swing.JButton; import java.awt.event.ActionListener; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; import java.awt.event.ActionEvent; import javax.swing.JLabel; import javax.swing.JOptionPane;import java.awt.Font; import javax.swing.JTextField; import javax.swing.SpinnerDateModel; import javax.swing.SpinnerModel; import javax.swing.JSpinner;public class pricing_screen {private JFrame frame;private JTable table;private DefaultTableModel model;private JTextField textField;private JTextField textField_1;private JSpinner spinner;private JSpinner spinner_1;/*** Launch the application.*/public static void main(String[] args) {EventQueue.invokeLater(new Runnable() {public void run() {try {pricing_screen window = new pricing_screen();window.frame.setVisible(true);} catch (Exception e) {e.printStackTrace();}}});}/*** Create the application.*/public pricing_screen() {initialize();}/*** Initialize the contents of the frame.*/@SuppressWarnings("serial")private void initialize() {frame = new JFrame("銷售定價");int screenWidth = java.awt.Toolkit.getDefaultToolkit().getScreenSize().width*2/3;int screenHeight = java.awt.Toolkit.getDefaultToolkit().getScreenSize().height*2/3; frame.setBounds(screenWidth/6, screenHeight/6, screenWidth, screenHeight);frame.getContentPane().setLayout(null);// 依據model創建一個JtableString[] header = { "品名","總價值","庫存數量","單位","進貨單價","銷售單價" };// 設置表頭Object[][] item = new Object[0][6];// 設置單身model = new DefaultTableModel(item, header) {public boolean isCellEditable(int row, int column) {if (column == 5)return true;elsereturn false;}};// 創建一個model,并設置model數據不可編輯table = new JTable(model);// 根據model創建一個Jtabletable.setFocusable(false);// 關閉鼠標選中單個坐標JScrollPane scrollPane = new JScrollPane(table);scrollPane.setBounds((screenWidth-780)/2+170, (screenHeight-440)/2-20, 600, 400);frame.getContentPane().add(scrollPane); JLabel label_4 = new JLabel("起始日期");label_4.setFont(new Font("仿宋", Font.BOLD, 14));label_4.setBounds((screenWidth-780)/2, (screenHeight-440)/2-20, 60, 20);frame.getContentPane().add(label_4);JLabel label_5 = new JLabel("結束日期");label_5.setFont(new Font("仿宋", Font.BOLD, 14));label_5.setBounds((screenWidth-780)/2, (screenHeight-440)/2-20+30, 60, 20);frame.getContentPane().add(label_5);//定義兩個spinner用于日期的調整GregorianCalendar gc=new GregorianCalendar(); //當前日期的前一個月gc.setTime(new Date());gc.add(2, -1); SpinnerModel dateModel=null;dateModel = new SpinnerDateModel(gc.getTime(), null, null,Calendar.DAY_OF_MONTH);spinner = new JSpinner();spinner.setBounds((screenWidth-780)/2+65, (screenHeight-440)/2-20, 90, 20);frame.getContentPane().add(spinner);spinner.setModel(dateModel); spinner.setEditor(new JSpinner.DateEditor(spinner,"yyyy-MM-dd"));SpinnerModel dateModel_1=null;dateModel_1 = new SpinnerDateModel(new Date(), null, null,Calendar.DAY_OF_MONTH); spinner_1 = new JSpinner();spinner_1.setBounds((screenWidth-780)/2+65, (screenHeight-440)/2-20+30, 90, 20);frame.getContentPane().add(spinner_1);spinner_1.setModel(dateModel_1); spinner_1.setEditor(new JSpinner.DateEditor(spinner_1,"yyyy-MM-dd")); JButton button_1 = new JButton("查找");button_1.setFont(new Font("仿宋", Font.BOLD, 16));button_1.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent arg0) {//點擊查找按鈕,根據起止日期,查詢庫存信息int r = model.getRowCount();while(r>0){model.removeRow(r-1);r--;}Object[] obj = new Object[4];SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");// 創建指定格式的當前時間ArrayList<Object[]> list = new OperationSqlData().getStockRecordByDate(df.format(spinner.getValue())+" "+"00:00:00", df.format(spinner_1.getValue())+" "+"23:59:59",1 , true);int row = list.size();float cost = 0;//顯示到tablefor(int i=0; i<row; i++){obj = list.get(i);model.addRow(new Object[5]);int j = model.getRowCount();model.setValueAt(obj[0], j-1, 0);model.setValueAt(obj[3], j-1, 1);model.setValueAt(obj[1], j-1, 2);model.setValueAt(obj[2], j-1, 3);cost = Float.parseFloat(obj[3].toString())/Float.parseFloat(obj[1].toString());cost = (float)(Math.round(cost*100))/100;model.setValueAt(cost, j-1, 4);}}});button_1.setBounds((screenWidth-780)/2+30, (screenHeight-440)/2-20+70, 90, 20);frame.getContentPane().add(button_1); //定義兩種加價方式按比例和固定值,基于日期區間庫存成本定義銷售價格JLabel lblNewLabel = new JLabel("統一按比例加價");lblNewLabel.setFont(new Font("仿宋", Font.BOLD, 14));lblNewLabel.setBounds((screenWidth-780)/2-20, (screenHeight-440)/2-20+190, 110, 20);frame.getContentPane().add(lblNewLabel);JLabel label_1 = new JLabel("%");label_1.setBounds((screenWidth-780)/2+150, (screenHeight-440)/2-20+190, 20, 20);frame.getContentPane().add(label_1);JLabel label_2 = new JLabel("統一按固定值加價");label_2.setFont(new Font("仿宋", Font.BOLD, 14));label_2.setBounds((screenWidth-780)/2-20, (screenHeight-440)/2-20+220, 120, 20);frame.getContentPane().add(label_2);JLabel label_3 = new JLabel("¥");label_3.setBounds((screenWidth-780)/2+150, (screenHeight-440)/2-20+220, 20, 20);frame.getContentPane().add(label_3); textField = new JTextField();textField.setBounds((screenWidth-780)/2+105, (screenHeight-440)/2-20+190, 40, 20);frame.getContentPane().add(textField);textField.setColumns(10); textField_1 = new JTextField();textField_1.setBounds((screenWidth-780)/2+105, (screenHeight-440)/2-20+220, 40, 20);frame.getContentPane().add(textField_1);textField_1.setColumns(10);JButton btnNewButton = new JButton("確定");btnNewButton.setFont(new Font("仿宋", Font.BOLD, 16));btnNewButton.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {//兩種加價方式選其一if (!textField.getText().isEmpty() && !textField_1.getText().isEmpty()){JOptionPane.showMessageDialog(null, "加價方式(按比例/按固定值)二選一");return;}else if(!textField.getText().isEmpty()){int row = 0;row = model.getRowCount();for(int i=0; i<row; i++){//計算銷售價格:成本*比例 保留兩位小數的另一種方法float sales = Float.parseFloat(model.getValueAt(i, 4).toString())*(1+Float.parseFloat(textField.getText())/100);sales = (float)(Math.round(sales*100))/100;model.setValueAt(sales, i, 5);}}else if(!textField_1.getText().isEmpty()){int row;row = model.getRowCount();for(int i=0; i<row; i++){//計算銷售價格:成本+定值float sales = Float.parseFloat(model.getValueAt(i, 4).toString())+Float.parseFloat(textField_1.getText());sales = (float)(Math.round(sales*100))/100;model.setValueAt(sales, i, 5);} }}});btnNewButton.setBounds((screenWidth-780)/2+30, (screenHeight-440)/2-20+260, 90, 20);frame.getContentPane().add(btnNewButton); JButton button = new JButton("提交");button.setFont(new Font("仿宋", Font.BOLD, 16));button.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent arg0) {new OperationSqlData().CommitSalesStockPricingToSql(model, table);}});button.setBounds((screenWidth-780)/2+400, (screenHeight-440)/2+400, 90, 20);frame.getContentPane().add(button);} }


銷售管理界面:

?

?

package org.screen;import java.awt.EventQueue; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.table.DefaultTableModel; import javax.swing.JComboBox; import javax.swing.JTextField; import javax.swing.JTable; import javax.swing.JScrollPane; import java.awt.Font; import javax.swing.SwingConstants; import java.awt.event.KeyEvent;public class sales_screen {// 定義SWT控件private JFrame frame;private JTextField textField;private JTextField textField_1;private JTextField textField_3;private JComboBox<String> comboBox;private JTable table_1;private DefaultTableModel model;private int m = 0;/*** Launch the application.*/public static void main(String[] args) {EventQueue.invokeLater(new Runnable() {public void run() {try {sales_screen window = new sales_screen(); // 新建銷售窗口window.frame.setVisible(true);} catch (Exception e) {e.printStackTrace();}}});}/*** Create the application.*/public sales_screen() {initialize();}/*** Initialize the contents of the frame.*/@SuppressWarnings("serial")private void initialize() {frame = new JFrame("銷售管理"); // new一個fram容器// 自動設置銷售管理窗口大小為用戶屏幕的一半,切位于屏幕中央int screenWidth = java.awt.Toolkit.getDefaultToolkit().getScreenSize().width*2/3;int screenHeight = java.awt.Toolkit.getDefaultToolkit().getScreenSize().height*2/3;frame.setBounds(screenWidth/6, screenHeight/6, screenWidth, screenHeight);frame.getContentPane().setLayout(null);JLabel lblNewLabel = new JLabel("品名");// 設置品名label屬性lblNewLabel.setFont(new Font("仿宋", Font.BOLD, 20));lblNewLabel.setBounds((screenWidth - 880) / 2, (screenHeight - 400) / 2+100, 50, 20);frame.getContentPane().add(lblNewLabel);JLabel lblNewLabel_1 = new JLabel("數量");// 設置單價label屬性lblNewLabel_1.setFont(new Font("仿宋", Font.BOLD, 20));lblNewLabel_1.setBounds((screenWidth - 880) / 2, (screenHeight - 400) / 2+140 , 50, 20);frame.getContentPane().add(lblNewLabel_1);JLabel lblNewLabel_2 = new JLabel("單價");// 設置數量label屬性lblNewLabel_2.setFont(new Font("仿宋", Font.BOLD, 20));lblNewLabel_2.setBounds((screenWidth - 880) / 2, (screenHeight - 400) / 2+180 , 50, 20);frame.getContentPane().add(lblNewLabel_2);textField_3 = new JTextField();textField_3.setHorizontalAlignment(SwingConstants.CENTER);textField_3.setEditable(false);textField_3.setBounds((screenWidth - 880) / 2 + 170, (screenHeight - 400) / 2 + 140, 60, 20);;frame.getContentPane().add(textField_3);textField_3.setColumns(10); comboBox = new JComboBox<String>();// 設置combox品名輸入屬性new OperationSqlData().getGoodsNameToCombox(comboBox);comboBox.setBounds((screenWidth - 880) / 2 + 55, (screenHeight - 400) / 2 + 100, 180, 20);frame.getContentPane().add(comboBox);comboBox.setSelectedItem(null);comboBox.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent arg0) {String unit = new OperationSqlData().getUnitByGoodsName(comboBox.getSelectedItem().toString());String sales_price = new OperationSqlData().getSalesPriceByGoodsName(comboBox.getSelectedItem().toString()); textField.setText(sales_price);textField_3.setText(unit);textField_1.setText(null);}});textField_1 = new JTextField();textField_1.setBounds((screenWidth - 880) / 2 + 55, (screenHeight - 400) / 2 + 140, 110, 20);frame.getContentPane().add(textField_1);textField_1.setColumns(10);textField = new JTextField();// 設置(數量)Field輸入屬性textField.setBounds((screenWidth - 880) / 2 + 55, (screenHeight - 400) / 2 + 180, 110, 20);frame.getContentPane().add(textField);textField.setColumns(10);JButton btnNewButton_2 = new JButton(">>");// 設置>>按鈕屬性及事件處理btnNewButton_2.setFont(new Font("仿宋", Font.BOLD, 16));btnNewButton_2.setBounds((screenWidth - 880) / 2 + 55, (screenHeight - 400) / 2 + 220, 60, 20);frame.getContentPane().add(btnNewButton_2);btnNewButton_2.addActionListener(new ActionListener() {// 將用戶輸入的數據,寫入Jtable中,計算總金額public void actionPerformed(ActionEvent arg0) {m = model.getRowCount();for(int q=0; q<m; q++){if(model.getValueAt(q, 0).toString().equals(comboBox.getSelectedItem().toString())){JOptionPane.showMessageDialog(null, "重復加入購物車!");return;}}if (comboBox.getSelectedItem().toString().isEmpty()||textField.getText().isEmpty()||textField_1.getText().isEmpty()){JOptionPane.showMessageDialog(null, "輸入欄位不能為空!");return;}model.addRow(new Object[4]);model.setValueAt(comboBox.getSelectedItem(), m, 0);model.setValueAt(textField_1.getText(), m, 1);model.setValueAt(textField_3.getText(), m, 2);model.setValueAt(textField.getText(), m, 3);model.setValueAt((float)(Math.round(Float.parseFloat(textField.getText()) * Float.parseFloat(textField_1.getText())*100))/100, m, 4);}}); JButton btnNewButton = new JButton("提交");// 設置提交按鈕屬性及事件處理btnNewButton.setFont(new Font("仿宋", Font.BOLD, 16));btnNewButton.setMnemonic(KeyEvent.VK_ENTER);btnNewButton.setBounds((screenWidth - 880) / 2 + 450, (screenHeight - 400) / 2 + 390, 80, 20);frame.getContentPane().add(btnNewButton);btnNewButton.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {new OperationSqlData().CommitSalesToSql(model, table_1);int j = model.getRowCount();while(j>0){model.removeRow(j-1);j--;}}});JButton btnNewButton_1 = new JButton("刪除");// 設置刪除按鈕屬性及事件處理btnNewButton_1.setFont(new Font("仿宋", Font.BOLD, 16));btnNewButton_1.setBounds((screenWidth - 880) / 2 + 580, (screenHeight - 400) / 2 + 390, 80, 20);frame.getContentPane().add(btnNewButton_1);btnNewButton_1.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {int row = table_1.getSelectedRow();if (row >= 0) {model.removeRow(row);}}});// 依據model創建一個JtableString[] header = { "品名", "數量", "單位", "單價", "總價" };// 設置表頭Object[][] item = new Object[0][5];// 設置單身model = new DefaultTableModel(item, header) {public boolean isCellEditable(int row, int column) {return false;}};// 創建一個model,并設置model數據不可編輯table_1 = new JTable(model);// 根據model創建一個Jtabletable_1.setFocusable(false);// 關閉鼠標選中單個坐標JScrollPane scrollPane = new JScrollPane(table_1);// 設置JScrollPane容器屬性,將Jtable放入JScrollPane中,實現數據超出上下左右滾動條的功能scrollPane.setLocation((screenWidth - 880) / 2 + 250, (screenHeight - 440) / 2);scrollPane.setSize(600, 400);frame.getContentPane().add(scrollPane);} }


報廢界面:

?

?

package org.screen;import java.awt.EventQueue; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JTextField; import javax.swing.JComboBox; import java.awt.Font; import javax.swing.SwingConstants;import javax.swing.JButton; import java.awt.event.ActionListener; import java.math.BigDecimal; import java.math.RoundingMode; import java.awt.event.ActionEvent;public class waste_screen {private JFrame frame;private JComboBox<String> comboBox;private JTextField textField_1;private JTextField textField_2;private JButton btnNewButton;private JTextField textField_3;/*** Launch the application.*/public static void main(String[] args) {EventQueue.invokeLater(new Runnable() {public void run() {try {waste_screen window = new waste_screen(); //創建進貨窗口界面window.frame.setVisible(true); //設置窗口可見} catch (Exception e) {e.printStackTrace();}}});}/*** Create the application.*/public waste_screen() {initialize();}/*** Initialize the contents of the frame.*/private void initialize() {frame = new JFrame("商品報廢"); //new一個Jfram容器int screenWidth = java.awt.Toolkit.getDefaultToolkit().getScreenSize().width/2; //根據用戶屏幕,自動調整控件的顯示位置int screenHeight = java.awt.Toolkit.getDefaultToolkit().getScreenSize().height/2; frame.setBounds(screenWidth/2, screenHeight/2, screenWidth, screenHeight);frame.getContentPane().setLayout(null);JLabel lblNewLabel = new JLabel("品名"); //設置label控件屬性,位置lblNewLabel.setFont(new Font("仿宋", Font.BOLD, 20));lblNewLabel.setBounds((screenWidth-180)/2, (screenHeight-140)/2, 50, 20);frame.getContentPane().add(lblNewLabel);JLabel lblNewLabel_1 = new JLabel("數量"); //設置label控件屬性,位置lblNewLabel_1.setFont(new Font("仿宋", Font.BOLD, 20));lblNewLabel_1.setBounds((screenWidth-180)/2, (screenHeight-140)/2+40*1, 50, 20);frame.getContentPane().add(lblNewLabel_1);JLabel lblNewLabel_2 = new JLabel("成本"); //設置label控件屬性,位置lblNewLabel_2.setFont(new Font("仿宋", Font.BOLD, 20));lblNewLabel_2.setBounds((screenWidth-180)/2, (screenHeight-140)/2+40*2, 50, 20);frame.getContentPane().add(lblNewLabel_2);comboBox = new JComboBox<String>(); //設置comboBox控件屬性,位置new OperationSqlData().getGoodsNameToCombox(comboBox);comboBox.setSelectedItem(null);comboBox.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent arg0) {//每次選擇商品,先清空輸入框,再抓取商品單位textField_1.setText(null);textField_2.setText(null);;textField_3.setText(null); String unit = new OperationSqlData().getUnitByGoodsName(comboBox.getSelectedItem().toString());textField_3.setText(unit);}});comboBox.setBounds((screenWidth-180)/2+60, (screenHeight-140)/2, 180, 20);frame.getContentPane().add(comboBox);textField_1 = new JTextField(); //設置輸入Field控件屬性,位置textField_1.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {if (comboBox.getSelectedIndex() >= 0){//抓取報廢商品的庫存成本float price = new OperationSqlData().getStockCostByGoodsName(comboBox.getSelectedItem().toString());float t_price = Float.parseFloat(textField_1.getText())*price;//保留兩位小數BigDecimal bd = new BigDecimal(t_price);bd = bd.setScale(2, RoundingMode.HALF_UP);textField_2.setText(bd.toString());}}});textField_1.setBounds((screenWidth-180)/2+60, (screenHeight-140)/2+40*1, 120, 20);frame.getContentPane().add(textField_1);textField_1.setColumns(10);textField_2 = new JTextField();textField_2.setEditable(false);textField_2.setBounds((screenWidth-180)/2+60, (screenHeight-140)/2+40*2, 120, 20);frame.getContentPane().add(textField_2);textField_3 = new JTextField();textField_3.setHorizontalAlignment(SwingConstants.CENTER);textField_3.setEditable(false);textField_3.setBounds((screenWidth-180)/2+190, (screenHeight-140)/2+40*1, 50, 20);frame.getContentPane().add(textField_3);textField_3.setColumns(10); btnNewButton = new JButton("提交"); //設置提交按鈕屬性,位置和提交事件處理btnNewButton.setFont(new Font("仿宋", Font.BOLD, 16));btnNewButton.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {if (textField_1.getText().isEmpty()||comboBox.getSelectedIndex()<0) //檢查商品名字段是否為空{JOptionPane.showMessageDialog(null, "輸入欄位不能為空!");return;}if (textField_2.getText().isEmpty()) //檢查商品名字段是否為空{JOptionPane.showMessageDialog(null, "先按Enter查看報廢成本!");return;} int ret =new OperationSqlData().StockIn(comboBox.getSelectedItem().toString(), "-"+textField_1.getText(), textField_3.getText(), "-"+textField_2.getText());if (ret == 1) //根據SQL返回值判斷執行結果,并顯示對話框{JOptionPane.showMessageDialog(null, "報廢成功!");}else{JOptionPane.showMessageDialog(null, "報廢失敗!");}}});btnNewButton.setBounds((screenWidth-180)/2+60, (screenHeight-140)/2+40*3, 120, 20);frame.getContentPane().add(btnNewButton);} }


報表部分:

?

?

package org.screen;import java.awt.EventQueue; import java.math.BigDecimal; import java.math.RoundingMode; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar;import javax.swing.JFrame; import javax.swing.JTree; import javax.swing.SpinnerDateModel; import javax.swing.SpinnerModel; import javax.swing.event.TreeSelectionEvent; import javax.swing.event.TreeSelectionListener; import javax.swing.table.DefaultTableModel; import javax.swing.JScrollPane; import javax.swing.tree.DefaultTreeModel;import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.JTable; import javax.swing.JSpinner; import javax.swing.JLabel; import javax.swing.JMenuItem; import javax.swing.JOptionPane; import javax.swing.JPopupMenu; import javax.swing.JRadioButton; import java.awt.Font; import java.awt.event.ActionListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.event.ActionEvent;public class report_screen {private JFrame frame;private JTable table;private JTree tree;private JScrollPane scrollPane;private JScrollPane scrollPane_1;private JSpinner spinner;private JSpinner spinner_1; private JRadioButton checkBox;private String business;private DefaultTableModel model1;private DefaultTableModel model2;private DefaultTableModel model3;/*** Launch the application.*/public static void main(String[] args) {EventQueue.invokeLater(new Runnable() {public void run() {try {report_screen window = new report_screen();window.frame.setVisible(true);} catch (Exception e) {e.printStackTrace();}}});}/*** Create the application.*/public report_screen() {initialize();}/*** Initialize the contents of the frame.*/@SuppressWarnings("serial")private void initialize() {frame = new JFrame();int screenWidth = java.awt.Toolkit.getDefaultToolkit().getScreenSize().width;int screenHeight = java.awt.Toolkit.getDefaultToolkit().getScreenSize().height; frame.setBounds(0, 0, screenWidth, screenHeight);frame.getContentPane().setLayout(null);JLabel label = new JLabel("開始日期");label.setFont(new Font("仿宋", Font.BOLD, 16));label.setBounds(180, 20, 80, 20);frame.getContentPane().add(label); JLabel label_1 = new JLabel("結束日期");label_1.setFont(new Font("仿宋", Font.BOLD, 16));label_1.setBounds(390, 20, 80, 20);frame.getContentPane().add(label_1); checkBox = new JRadioButton("鎖定日期");checkBox.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent arg0) {//鎖定后日期不可編輯if(checkBox.isSelected() == true){spinner.setEnabled(false);spinner_1.setEnabled(false);}else{spinner.setEnabled(true);spinner_1.setEnabled(true);}}});checkBox.setFont(new Font("仿宋", Font.PLAIN, 16));checkBox.setBounds(600, 20, 100, 20);frame.getContentPane().add(checkBox);checkBox.setSelected(false);GregorianCalendar gc=new GregorianCalendar(); //當前日期的前一個月gc.setTime(new Date());gc.add(2, -1); SpinnerModel dateModel=null;dateModel = new SpinnerDateModel(gc.getTime(), null, null,Calendar.DAY_OF_MONTH);spinner = new JSpinner();spinner.setFont(new Font("仿宋", Font.BOLD, 14));spinner.setBounds(270, 20, 105, 20);frame.getContentPane().add(spinner);spinner.setModel(dateModel); spinner.setEditor(new JSpinner.DateEditor(spinner,"yyyy-MM-dd")); SpinnerModel dateModel_1=null;dateModel_1 = new SpinnerDateModel(new Date(), null, null,Calendar.DAY_OF_MONTH);spinner_1 = new JSpinner();spinner_1.setFont(new Font("仿宋", Font.BOLD, 14));spinner_1.setBounds(480, 20, 105, 20);frame.getContentPane().add(spinner_1);spinner_1.setModel(dateModel_1); spinner_1.setEditor(new JSpinner.DateEditor(spinner_1,"yyyy-MM-dd")); //new一個樹狀導航,選擇不同的報表種類tree = new JTree();tree.setShowsRootHandles(true);tree.setModel(new DefaultTreeModel(new DefaultMutableTreeNode("報表") {{DefaultMutableTreeNode node_1;node_1 = new DefaultMutableTreeNode("記錄");node_1.add(new DefaultMutableTreeNode("進貨記錄")); node_1.add(new DefaultMutableTreeNode("銷售記錄"));node_1.add(new DefaultMutableTreeNode("報廢記錄"));add(node_1);node_1 = new DefaultMutableTreeNode("庫存");node_1.add(new DefaultMutableTreeNode("當前庫存"));add(node_1);node_1 = new DefaultMutableTreeNode("利潤");node_1.add(new DefaultMutableTreeNode("利潤統計"));add(node_1);}}));tree.addTreeSelectionListener(new TreeSelectionListener() {@Overridepublic void valueChanged(TreeSelectionEvent e) {DefaultMutableTreeNode node = (DefaultMutableTreeNode) tree.getLastSelectedPathComponent();if(node == null)return;if (checkBox.isSelected()==false) //日期鎖定后允許執行報表{JOptionPane.showMessageDialog(null, "請首先鎖定日期");return; }Object select_node = node.getUserObject();SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");// 創建指定格式的當前時間switch (select_node.toString()) {case "進貨記錄": //根據日期抓取進貨記錄String[] header1 = { "日期", "品名", "進貨數量", "單位", "進貨單價", "進貨總價"};// 設置表頭Object[][] item1 = new Object[0][6];// 設置單身model1 = new DefaultTableModel(item1, header1) {public boolean isCellEditable(int row, int column) {return false;}};// 創建一個model,并設置model數據不可編輯table = new JTable(model1);// 根據model創建一個Jtabletable.setFocusable(false);// 關閉鼠標選中單個坐標 scrollPane_1.setViewportView(table);int r1 = model1.getRowCount();while(r1>0){model1.removeRow(r1-1);r1--;}Object[] obj1 = new Object[6];ArrayList<Object[]> list1 = new OperationSqlData().getStockRecordByDate(df.format(spinner.getValue())+" "+"00:00:00", df.format(spinner_1.getValue())+" "+"23:59:59",0 , false);int row1 = list1.size();float cost = 0;for(int i=0; i<row1; i++){obj1 = list1.get(i);model1.addRow(new Object[6]);int j = model1.getRowCount();model1.setValueAt(obj1[0], j-1, 0);model1.setValueAt(obj1[1], j-1, 1);model1.setValueAt(obj1[2], j-1, 2);model1.setValueAt(obj1[3], j-1, 3);cost = Float.parseFloat(obj1[4].toString())/Float.parseFloat(obj1[2].toString());cost = (float)(Math.round(cost*100))/100;model1.setValueAt(cost, j-1, 4);model1.setValueAt(obj1[4], j-1, 5);} business = "stock";reportMouseClick();break;case "銷售記錄"://根據日期抓取銷售記錄 String[] header2 = { "日期", "品名", "銷售數量", "單位", "銷售單價", "銷售總價"};// 設置表頭Object[][] item2 = new Object[0][6];// 設置單身model2 = new DefaultTableModel(item2, header2) {public boolean isCellEditable(int row, int column) {return false;}};// 創建一個model,并設置model數據不可編輯table = new JTable(model2);// 根據model創建一個Jtabletable.setFocusable(false);// 關閉鼠標選中單個坐標 scrollPane_1.setViewportView(table);int r2 = model2.getRowCount();while(r2>0){model2.removeRow(r2-1);r2--;}Object[] obj2 = new Object[6];ArrayList<Object[]> list2 = new OperationSqlData().getSalesRecordByDate(df.format(spinner.getValue())+" "+"00:00:00", df.format(spinner_1.getValue())+" "+"23:59:59", false);int row2 = list2.size();for(int i=0; i<row2; i++){obj2 = list2.get(i);model2.addRow(new Object[6]);int j = model2.getRowCount();model2.setValueAt(obj2[0], j-1, 0);model2.setValueAt(obj2[1], j-1, 1);model2.setValueAt(obj2[2], j-1, 2);model2.setValueAt(obj2[3], j-1, 3);model2.setValueAt(obj2[4], j-1, 4);model2.setValueAt(obj2[5], j-1, 5);}business = "sales";reportMouseClick();break;case "報廢記錄": //根據日期抓取報廢記錄String[] header3 = { "日期", "品名", "報廢數量", "單位", "成本單價", "報廢總成本"};// 設置表頭Object[][] item3 = new Object[0][6];// 設置單身model3 = new DefaultTableModel(item3, header3) {public boolean isCellEditable(int row, int column) {return false;}};// 創建一個model,并設置model數據不可編輯table = new JTable(model3);// 根據model創建一個Jtabletable.setFocusable(false);// 關閉鼠標選中單個坐標 scrollPane_1.setViewportView(table);int r3 = model3.getRowCount();while(r3>0){model3.removeRow(r3-1);r3--;}Object[] obj3 = new Object[6];ArrayList<Object[]> list3 = new OperationSqlData().getStockRecordByDate(df.format(spinner.getValue())+" "+"00:00:00", df.format(spinner_1.getValue())+" "+"23:59:59",-1 , false);int row3 = list3.size();float cost1 = 0;for(int i=0; i<row3; i++){obj3 = list3.get(i);model3.addRow(new Object[6]);int j = model3.getRowCount();model3.setValueAt(obj3[0], j-1, 0);model3.setValueAt(obj3[1], j-1, 1);model3.setValueAt(obj3[2], j-1, 2);model3.setValueAt(obj3[3], j-1, 3);cost1 = Float.parseFloat(obj3[4].toString())/Float.parseFloat(obj3[2].toString());model3.setValueAt(cost1, j-1, 4);model3.setValueAt(obj3[4], j-1, 5);}business = "stock_waste";reportMouseClick();break;case "當前庫存": //根據日期抓取進貨報廢和銷售記錄,計算當前庫存String[] header4 = {"品名", "庫存數量", "單位"};// 設置表頭Object[][] item4 = new Object[0][3];// 設置單身DefaultTableModel model4 = new DefaultTableModel(item4, header4) {public boolean isCellEditable(int row, int column) {return false;}};// 創建一個model,并設置model數據不可編輯table = new JTable(model4);// 根據model創建一個Jtabletable.setFocusable(false);// 關閉鼠標選中單個坐標 scrollPane_1.setViewportView(table);int r4 = model4.getRowCount();while(r4>0){model4.removeRow(r4-1);r4--;}Object[] obj4 = new Object[6];Object[] obj4_sales = new Object[4];ArrayList<Object[]> list4 = new OperationSqlData().getStockRecordByDate(df.format(spinner.getValue())+" "+"00:00:00", df.format(spinner_1.getValue())+" "+"23:59:59",0 , true);ArrayList<Object[]> list4_sales = new OperationSqlData().getSalesRecordByDate("0000-00-00 00:00:00", "9999-99-99 99:99:99", true);int row4 = list4.size();int row4_sales = list4_sales.size();float stock_last = 0;for(int i=0; i<row4; i++){model4.addRow(new Object[3]);int j = model4.getRowCount();obj4 = list4.get(i);for (int k=0; k<row4_sales; k++){obj4_sales = list4_sales.get(k);if (obj4_sales[0].toString().equals(obj4[0].toString())){stock_last = Float.parseFloat(obj4[1].toString()) - Float.parseFloat(obj4_sales[1].toString());model4.setValueAt(stock_last, j-1, 1);break;}else {model4.setValueAt(obj4[1], j-1, 1);} }if (row4_sales == 0)model4.setValueAt(obj4[1], j-1, 1);model4.setValueAt(obj4[0], j-1, 0);model4.setValueAt(obj4[2], j-1, 2);} break;case "利潤統計": //根據銷售利潤 報廢成本 統計最終凈利潤String[] header5 = { "品名", "銷售數量","報廢數量","單位", "平均銷售單價", "庫存成本單價", "銷售利潤", "報廢成本","凈利潤"};// 設置表頭Object[][] item5 = new Object[0][9];// 設置單身DefaultTableModel model5 = new DefaultTableModel(item5, header5) {public boolean isCellEditable(int row, int column) {return false;}};// 創建一個model,并設置model數據不可編輯table = new JTable(model5);// 根據model創建一個Jtabletable.setFocusable(false);// 關閉鼠標選中單個坐標 scrollPane_1.setViewportView(table); int r5 = model5.getRowCount();while(r5>0){model5.removeRow(r5-1);r5--;}Object[] obj5_sales = new Object[4];Object[] obj5_waste = new Object[9];Object[] obj5 = new Object[9];ArrayList<Object[]> list5_sales = new OperationSqlData().getSalesRecordByDate(df.format(spinner.getValue())+" "+"00:00:00", df.format(spinner_1.getValue())+" "+"23:59:59", true);ArrayList<Object[]> list5_waste = new OperationSqlData().getStockRecordByDate(df.format(spinner.getValue())+" "+"00:00:00", df.format(spinner_1.getValue())+" "+"23:59:59", -1, true);int row5_sales = list5_sales.size();int row5_waste = list5_waste.size();for (int i=0; i<row5_sales; i++){obj5_sales = list5_sales.get(i);float price = new OperationSqlData().getStockCostByGoodsName(obj5_sales[0].toString());price = (float)(Math.round(price*100))/100;obj5[0] = obj5_sales[0];obj5[1] = obj5_sales[1];obj5[2] = 0.00;obj5[3] = obj5_sales[2];obj5[4] = (float)(Math.round((Float.parseFloat(obj5_sales[3].toString())/Float.parseFloat(obj5_sales[1].toString()))*100))/100; obj5[5] = price;obj5[6] = new BigDecimal(Float.parseFloat(obj5[1].toString())*(Float.parseFloat(obj5[4].toString())-price)).setScale(2, RoundingMode.HALF_UP);obj5[7] = 0.00;obj5[8] = obj5[6];for (int j=0; j<row5_waste; j++){obj5_waste = list5_waste.get(j);if (obj5_waste[0].equals(obj5_sales[0])){obj5[2] = obj5_waste[1];obj5[7] = obj5_waste[3];obj5[8] = new BigDecimal(Float.parseFloat(obj5[6].toString()) + Float.parseFloat(obj5[7].toString())).setScale(2, RoundingMode.HALF_UP);list5_waste.remove(j);row5_waste = row5_waste - 1;break;}} model5.addRow(new Object[9]);int m = model5.getRowCount();model5.setValueAt(obj5[0], m-1, 0);model5.setValueAt(obj5[1], m-1, 1);model5.setValueAt(obj5[2], m-1, 2); model5.setValueAt(obj5[3], m-1, 3);model5.setValueAt(obj5[4], m-1, 4);model5.setValueAt(obj5[5], m-1, 5); model5.setValueAt(obj5[6], m-1, 6); model5.setValueAt(obj5[7], m-1, 7);model5.setValueAt(obj5[8], m-1, 8); }if (row5_waste > 0){for(int k=0; k<row5_waste; k++){obj5_waste = list5_waste.get(k); obj5[0] = obj5_waste[0];obj5[1] = 0.00;obj5[2] = obj5_waste[1];obj5[3] = obj5_waste[2];obj5[4] = 0.00;float price = new OperationSqlData().getStockCostByGoodsName(obj5_waste[0].toString());price = (float)(Math.round(price*100))/100;obj5[5] = price;obj5[6] = 0.0;obj5[7] = obj5_waste[3];obj5[8] = Float.parseFloat(obj5_waste[3].toString());model5.addRow(new Object[9]);int m = model5.getRowCount();model5.setValueAt(obj5[0], m-1, 0);model5.setValueAt(obj5[1], m-1, 1);model5.setValueAt(obj5[2], m-1, 2); model5.setValueAt(obj5[3], m-1, 3);model5.setValueAt(obj5[4], m-1, 4);model5.setValueAt(obj5[5], m-1, 5); model5.setValueAt(obj5[6], m-1, 6); model5.setValueAt(obj5[7], m-1, 7);model5.setValueAt(obj5[8], m-1, 8); }}//最后一行插入利潤總計int row_last = model5.getRowCount();float sales_bft = 0;float stock_cost = 0;float last_bft = 0;for(int p=0; p<row_last; p++){if (!(model5.getValueAt(p, 6)==null)){sales_bft = sales_bft + Float.parseFloat(model5.getValueAt(p, 6).toString());}if (!(model5.getValueAt(p, 7)==null)){stock_cost = stock_cost + Float.parseFloat(model5.getValueAt(p, 7).toString());}if (!(model5.getValueAt(p, 8)==null)){last_bft = last_bft + Float.parseFloat(model5.getValueAt(p, 8).toString());}}sales_bft = (float)(Math.round(sales_bft*100))/100;stock_cost = (float)(Math.round(stock_cost*100))/100;last_bft = (float)(Math.round(last_bft*100))/100;model5.addRow(new Object[9]);model5.setValueAt("總計", row_last, 0);model5.setValueAt(sales_bft, row_last, 6);model5.setValueAt(stock_cost, row_last, 7);model5.setValueAt(last_bft, row_last, 8);break; default:break;}}});scrollPane = new JScrollPane();scrollPane.setViewportView(tree);scrollPane.setBounds(10, 10, 160, screenHeight-10);frame.getContentPane().add(scrollPane); scrollPane_1 = new JScrollPane();scrollPane_1.setBounds(180, 50, screenWidth-200, screenHeight-50);frame.getContentPane().add(scrollPane_1);}class PopupActionListener implements ActionListener {public void actionPerformed(ActionEvent event) {int answer = JOptionPane.showConfirmDialog(null, "刪除數據不加入報表計算,確定要刪除選中記錄?", "提交信息",JOptionPane.YES_NO_OPTION);if (answer == 0){int ret = 0;if (business.equals("stock")){ret = new OperationSqlData().DeleteSqlDataByGoodsNameDate(model1.getValueAt(table.getSelectedRow(), 1).toString(), model1.getValueAt(table.getSelectedRow(), 0).toString(), "stock");model1.removeRow(table.getSelectedRow());}else if(business.equals("sales")){ret = new OperationSqlData().DeleteSqlDataByGoodsNameDate(model2.getValueAt(table.getSelectedRow(), 1).toString(), model2.getValueAt(table.getSelectedRow(), 0).toString(), "sales");model2.removeRow(table.getSelectedRow()); }else if (business.equals("stock_waste")){ret = new OperationSqlData().DeleteSqlDataByGoodsNameDate(model3.getValueAt(table.getSelectedRow(), 1).toString(), model3.getValueAt(table.getSelectedRow(), 0).toString(), "stock"); model3.removeRow(table.getSelectedRow());}if (ret == 1)JOptionPane.showMessageDialog(null, "刪除成功");elseJOptionPane.showMessageDialog(null, "刪除失敗"); }}} ActionListener acitonListener = new PopupActionListener(); public void reportMouseClick() //右鍵提供指定行區域刪除選項,處理選項事件{final JPopupMenu jp = new JPopupMenu();final JMenuItem item = jp.add("刪除該條記錄");item.addActionListener(acitonListener);table.addMouseListener(new MouseAdapter() {@Overridepublic void mouseClicked(MouseEvent e) {if (e.getButton() == MouseEvent.BUTTON3) {// 彈出菜單if(table.getSelectedRow() > -1){int y = table.getSelectedRow() * table.getRowHeight();if(e.getY() > y && e.getY() <= y+16){jp.show(table, e.getX(), e.getY());}}}}}); } }

?


最后是數據庫操作部分:

?

?

?

package org.screen;import java.net.InetAddress; import java.net.UnknownHostException; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date;import javax.swing.JComboBox; import javax.swing.JOptionPane; import javax.swing.JTable; import javax.swing.table.DefaultTableModel;public class OperationSqlData {//定義數據庫變量 private String url;private String passname;private String password;private String driver;private Statement st;private Connection con;private ResultSet rst; public OperationSqlData() //構造數據庫鏈接默認值{passname = "admin"; //SQL Server登陸賬號password = "init1234"; //SQL Server登陸密碼driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver"; //驅動加載try {Class.forName(driver);} catch (ClassNotFoundException e) {JOptionPane.showMessageDialog(null, "數據庫加載失敗!");e.printStackTrace();}try {url = "jdbc:sqlserver://"+InetAddress.getLocalHost().getHostAddress()+";"+"DatabaseName=goodsData";//URL鏈接} catch (UnknownHostException e) {JOptionPane.showMessageDialog(null, "數據庫加載失敗!");e.printStackTrace();} }public OperationSqlData(String p_name, String p_word) //構造指定帳號密碼數據庫鏈接{passname = p_name; password = p_word;driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver";try {Class.forName(driver);} catch (ClassNotFoundException e) {JOptionPane.showMessageDialog(null, "數據庫加載失敗!");e.printStackTrace();}try {url = "jdbc:sqlserver://"+InetAddress.getLocalHost().getHostAddress()+";"+"DatabaseName=goodsData";} catch (UnknownHostException e) {JOptionPane.showMessageDialog(null, "數據庫加載失敗!");e.printStackTrace();} }public void getGoodsNameToCombox(JComboBox<String> combox){String sql = "SELECT distinct goods FROM stock where qty > 0";// 數據庫取品名// 連接數據庫,執行查詢語句try {con = DriverManager.getConnection(url, passname, password);con.setAutoCommit(true);st = con.createStatement();rst = st.executeQuery(sql);// 取出的結果加入combox的Itemwhile (rst.next()) {combox.addItem(rst.getString("goods"));}// 關閉數據庫連接rst.close();st.close();con.close();} catch (SQLException e) {JOptionPane.showMessageDialog(null, "商品名數據加載異常! ");e.printStackTrace();} }public String getUnitByGoodsName(String goods) {String unit = null;//從庫存表抓取商品單位String sql = "SELECT distinct unit FROM stock WHERE qty> 0 AND goods = ?";try {con = DriverManager.getConnection(url, passname, password);con.setAutoCommit(true);PreparedStatement ps = con.prepareStatement(sql); //SQL預處理ps.setString(1, goods); //SQL參數ResultSet rt = ps.executeQuery(); //執行SQLwhile(rt.next()){unit = rt.getString("unit"); //從執行結果中得到商品單位}// 關閉數據庫連接ps.close();rt.close();con.close(); } catch (SQLException e) {JOptionPane.showMessageDialog(null, "商品單位數據加載異常! ");e.printStackTrace();}return unit; //返回單位}public String getSalesPriceByGoodsName(String goods){String sales_price = null;//從定價表中抓取銷售單價String sql = "SELECT unitprice FROM Price WHERE goods = ?";try {con = DriverManager.getConnection(url, passname, password);con.setAutoCommit(true);PreparedStatement ps = con.prepareStatement(sql);// SQL預處理ps.setString(1, goods);ResultSet rt = ps.executeQuery();while(rt.next()){sales_price = rt.getString("unitprice");}// 關閉數據庫連接ps.close();rt.close();con.close(); } catch (SQLException e) {JOptionPane.showMessageDialog(null, "銷售單價數據加載異常! ");e.printStackTrace();} return sales_price;}public ArrayList<Object[]> getSalesRecordByDate(String date_begin, String date_end, Boolean sum_qty_totalprice){ArrayList<Object[]> list = new ArrayList<Object[]>(); String sql = null;if (sum_qty_totalprice){ sql = "SELECT goods, SUM(qty) AS s_qty, unit, SUM(totalprice) AS s_totalprice FROM sales where date between ? AND ? GROUP BY goods, unit";//抓取銷售記錄數據按商品名和單位匯總}else{sql = "SELECT date, goods, qty, unit, unitprice, totalprice FROM sales where date between ? AND ? ORDER BY date DESC";//抓取銷售記錄數據按時間排序}try {con = DriverManager.getConnection(url, passname, password);con.setAutoCommit(true);PreparedStatement ps = con.prepareStatement(sql);// SQL預處理ps.setString(1, date_begin); //指定抓取銷售記錄起始時間ps.setString(2, date_end); //指定抓取銷售記錄終止時間ResultSet rt = ps.executeQuery();Object[] obj = null;if (sum_qty_totalprice){while(rt.next()){obj = new Object[4];//Object數組加入arraylistobj[0] = rt.getString("goods");obj[1] = rt.getFloat("s_qty");obj[2] = rt.getString("unit");obj[3] = rt.getFloat("s_totalprice");list.add(obj);} }else{while(rt.next()){obj = new Object[6];obj[0] = rt.getString("date");obj[1] = rt.getString("goods");obj[2] = rt.getFloat("qty");obj[3] = rt.getString("unit");obj[4] = rt.getFloat("unitprice");obj[5] = rt.getFloat("totalprice");list.add(obj);}}// 關閉數據庫連接ps.close();rt.close();con.close();} catch (SQLException e) {JOptionPane.showMessageDialog(null, "銷售記錄數據加載異常! ");e.printStackTrace(); }return list; } public float getStockCostByGoodsName(String goods){float stock_cost = 0;// 這里計算的是商品進貨成本(qty>0)String sql = "SELECT goods,SUM(qty) AS s_qty,SUM(amount) AS s_amount FROM stock WHERE goods = ? AND qty>0 GROUP by goods";try {con = DriverManager.getConnection(url, passname, password);con.setAutoCommit(true);PreparedStatement ps = con.prepareStatement(sql);// SQL預處理ps.setString(1, goods);ResultSet rt = ps.executeQuery();while(rt.next()){float s_amount = rt.getFloat("s_amount");float s_qty = rt.getFloat("s_qty");stock_cost = s_amount/s_qty;}// 關閉數據庫連接ps.close();rt.close();con.close();} catch (SQLException e) {JOptionPane.showMessageDialog(null, "成本數據加載異常! ");e.printStackTrace(); }return stock_cost;} public ArrayList<Object[]> getStockRecordByDate(String date_begin, String date_end, int status, Boolean sum_amount_qty){ArrayList<Object[]> list = new ArrayList<Object[]>();String sql = null;//sun_amount_qty是否根據商品名和單位加總庫存數量和成本,//status的值: -1計算報廢庫存;0計算總庫存; 1計算進貨庫存if (sum_amount_qty){if (status == -1) sql = "SELECT goods, SUM(qty) AS s_qty, unit, SUM(amount) AS s_amount FROM stock where qty < 0 AND date between ? AND ? GROUP by goods,unit";else if (status == 1)sql = "SELECT goods, SUM(qty) AS s_qty, unit, SUM(amount) AS s_amount FROM stock where qty > 0 AND date between ? AND ? GROUP by goods,unit";else if (status == 0)sql = "SELECT goods, SUM(qty) AS s_qty, unit, SUM(amount) AS s_amount FROM stock where date between ? AND ? GROUP by goods,unit";}else {if(status == -1)sql = "SELECT date, goods, qty, unit, amount FROM stock where qty < 0 AND date between ? AND ? ORDER BY date DESC"; elsesql = "SELECT date, goods, qty, unit, amount FROM stock where qty > 0 AND date between ? AND ? ORDER BY date DESC";}try {con = DriverManager.getConnection(url, passname, password);con.setAutoCommit(true);PreparedStatement ps = con.prepareStatement(sql);// SQL預處理ps.setString(1, date_begin);ps.setString(2, date_end);ResultSet rt = ps.executeQuery();Object[] obj = null;if (sum_amount_qty) //依據是否匯總處理輸出結果{while(rt.next()){obj = new Object[4];obj[0] = rt.getString("goods");obj[1] = rt.getFloat("s_qty");obj[2] = rt.getString("unit");obj[3] = rt.getFloat("s_amount");list.add(obj);}}else {while(rt.next()){obj = new Object[5];obj[0] = rt.getString("date");obj[1] = rt.getString("goods");obj[2] = rt.getFloat("qty");obj[3] = rt.getString("unit");obj[4] = rt.getFloat("amount");list.add(obj);} }// 關閉數據庫連接ps.close();rt.close();con.close();} catch (SQLException e) {JOptionPane.showMessageDialog(null, "庫存數據加載異常! ");e.printStackTrace(); }return list;} public void CommitSalesStockPricingToSql(DefaultTableModel model, JTable table) //傳入用model定義的table{//這里先刪除原有定價記錄,再插入新紀錄String sql1 = "DELETE FROM price WHERE goods = ? ";String sql2 = "INSERT INTO price (goods, unit, cost, unitprice) VALUES(?,?,?,?)";try {// 設置數據庫鏈接,設置手動提交數據con = DriverManager.getConnection(url, passname, password);con.setAutoCommit(false);PreparedStatement ps1 = con.prepareStatement(sql1);// SQL預處理PreparedStatement ps2 = con.prepareStatement(sql2);// SQL預處理int line = table.getRowCount();// 循環每一行,如果有值加入數據庫批處理for (int i = 0; i < line; i++) {if(!(model.getValueAt(i, 5)==null)) //首先判斷是否有輸入值,再判斷是否為空值,有值則刪除{if (!(model.getValueAt(i, 5).toString().isEmpty())){ps1.setString(1, (String) model.getValueAt(i, 0));ps1.addBatch();ps2.setString(1, (String) model.getValueAt(i, 0));ps2.setString(2, (String) model.getValueAt(i, 3));ps2.setString(3, model.getValueAt(i, 4).toString());ps2.setString(4, model.getValueAt(i, 5).toString());ps2.addBatch(); }}}ps1.executeBatch();// 執行批處理,彈出對話消息,顯示成功失敗con.commit();//關閉數據庫相關鏈接ps1.close();int[] rt = ps2.executeBatch();// 執行批處理,彈出對話消息,顯示成功失敗con.commit();if (rt.length > 0)JOptionPane.showMessageDialog(null, "提交成功!");ps2.close();con.close();} catch (SQLException e) {JOptionPane.showMessageDialog(null, "提交失敗! ");try {con.rollback();} catch (SQLException e1) {e1.printStackTrace();}e.printStackTrace();}} public Integer StockIn(String name, String qty, String unit, String amount){int ret = 0;String sql = "INSERT INTO stock (goods, date, qty, unit, amount) VALUES (?, ?, ?, ?, ?)"; // 定義SQL語句try {con = DriverManager.getConnection(url, passname, password);con.setAutoCommit(true); // 設置數據自動提交數據庫PreparedStatement ps = con.prepareStatement(sql); // SQL預處理ps.setString(1, name);// 動態參數執行SQLSimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");// 創建指定格式的當前時間ps.setString(2, df.format(new Date()));ps.setString(3, qty);ps.setString(4, unit);ps.setString(5, amount);ret = ps.executeUpdate(); // 執行SQLps.close(); //關閉數據庫鏈接con.close();return ret;} catch (SQLException e) {e.printStackTrace();return ret;}} public void CommitSalesToSql(DefaultTableModel model, JTable table){// 插入銷售記錄到數據庫String sql = "INSERT INTO sales (goods, date, qty, unit, unitprice, totalprice) VALUES (?, ?, ?, ?, ?, ?)";// 批量插入Jtable中數據try {// 設置數據庫鏈接,設置手動提交數據con = DriverManager.getConnection(url, passname, password);con.setAutoCommit(false);PreparedStatement ps = con.prepareStatement(sql);// SQL預處理SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");// 設置指定格式的當前日期時間String date = df.format(new Date());float f4 = 0;int line = table.getRowCount();// 循環每一行,如果有值加入數據庫批處理for (int i = 0; i < line; i++) {if ((String) model.getValueAt(i, 0) != null) {ps.setString(1, (String) model.getValueAt(i, 0));ps.setString(2, date);float f1 = Float.parseFloat(model.getValueAt(i, 1).toString());ps.setFloat(3, f1);ps.setString(4, (String)model.getValueAt(i, 2));float f2 = Float.parseFloat(model.getValueAt(i, 3).toString());ps.setFloat(5, f2);float f3 = Float.parseFloat(model.getValueAt(i, 4).toString());ps.setFloat(6, f3);ps.addBatch();f4 = f3 + f4;}}f4 = (float)(Math.round(f4*100))/100;// 彈出選擇對話框,計算總金額,提示是否提交int answer = JOptionPane.showConfirmDialog(null, "總金額" + f4 + "元" + " " + "確認提交?", "提交信息",JOptionPane.YES_NO_OPTION);if (answer == 0) {int rst[] = ps.executeBatch();// 執行批處理,彈出對話消息,顯示成功失敗if (rst.length > 0) {JOptionPane.showMessageDialog(null, "交易成功");con.commit(); }else if(rst.length == 0){JOptionPane.showMessageDialog(null, "無數據");}}//關閉數據庫相關鏈接ps.close();con.close();} catch (SQLException e) {JOptionPane.showMessageDialog(null, "交易失敗");try {con.rollback();con.close();} catch (SQLException e1) {e1.printStackTrace();}e.printStackTrace();}} public Integer DeleteSqlDataByGoodsNameDate(String goods, String date, String business){String sql = null;int ret = 0;if(business.equals("stock")||business.equals("stock_waste"))sql = "DELETE FROM stock where goods = ? AND date = ?";else if (business.equals("sales"))sql = "DELETE FROM sales where goods = ? AND date = ?";// 連接數據庫,執行查詢語句try {con = DriverManager.getConnection(url, passname,password);con.setAutoCommit(false); // 設置數據自動提交數據庫PreparedStatement ps = con.prepareStatement(sql); // SQL預處理ps.setString(1, goods);ps.setString(2, date);ret = ps.executeUpdate(); // 執行SQLcon.commit();ps.close(); //關閉數據庫鏈接con.close();return ret;} catch (SQLException e) {try {con.rollback();} catch (SQLException e1) {e1.printStackTrace();}e.printStackTrace();return ret;} } public void DeleteSqlDataByYear(String date_last)//清理數據庫舊記錄{String sql1 = "DELETE FROM stock where date < ?";String sql2 = "DELETE FROM sales where date < ?";int answer = JOptionPane.showConfirmDialog(null, "確認要刪除"+date_last+"之前的數據? ", "提交信息",JOptionPane.YES_NO_OPTION);if (answer != 0) {return;} // 連接數據庫,執行查詢語句try {con = DriverManager.getConnection(url, passname,password);con.setAutoCommit(false); // 設置數據不自動提交數據庫PreparedStatement ps1 = con.prepareStatement(sql1); // SQL預處理ps1.setString(1, date_last);ps1.executeUpdate(); // 執行SQLPreparedStatement ps2 = con.prepareStatement(sql2); // SQL預處理ps2.setString(1, date_last);ps2.executeUpdate(); // 執行SQLcon.commit();ps1.close(); //關閉數據庫鏈接ps2.close();con.close();JOptionPane.showMessageDialog(null, "清除數據成功!");} catch (SQLException e) {try {con.rollback(); //失敗回滾} catch (SQLException e1) {e1.printStackTrace();}JOptionPane.showMessageDialog(null, "清除數據失敗");e.printStackTrace();} } }

?

?

?

?

?

總結

以上是生活随笔為你收集整理的JAVA学习作品之销售管理系统V1.0的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

欧洲vodafone精品性 | 国产免费无码一区二区视频 | 久久久精品人妻久久影视 | 综合激情五月综合激情五月激情1 | 国产成人精品久久亚洲高清不卡 | 天天爽夜夜爽夜夜爽 | 亚洲国产成人a精品不卡在线 | 人人妻在人人 | 国产精品久久久一区二区三区 | 日韩精品乱码av一区二区 | 一区二区三区乱码在线 | 欧洲 | 国产无套粉嫩白浆在线 | 蜜臀av无码人妻精品 | 丰满少妇熟乱xxxxx视频 | 熟妇激情内射com | 欧美猛少妇色xxxxx | 久久亚洲中文字幕无码 | 精品欧美一区二区三区久久久 | 中文字幕日韩精品一区二区三区 | 久久99久久99精品中文字幕 | 国产精品久久久久久久影院 | 久久99久久99精品中文字幕 | 亚洲欧美精品aaaaaa片 | 国产精品香蕉在线观看 | 成人精品一区二区三区中文字幕 | 精品国产麻豆免费人成网站 | 国产精品99爱免费视频 | 日产国产精品亚洲系列 | 精品无码一区二区三区的天堂 | 婷婷六月久久综合丁香 | 精品无码一区二区三区的天堂 | 少妇愉情理伦片bd | 伊人久久大香线蕉亚洲 | 精品aⅴ一区二区三区 | 青草青草久热国产精品 | 国内精品久久久久久中文字幕 | 国产人妻人伦精品 | 国产综合在线观看 | 无码福利日韩神码福利片 | 久久亚洲精品中文字幕无男同 | 国产成人无码午夜视频在线观看 | 国产极品视觉盛宴 | 欧美熟妇另类久久久久久多毛 | 国产无遮挡又黄又爽免费视频 | 丰满人妻一区二区三区免费视频 | 领导边摸边吃奶边做爽在线观看 | 国产乱人无码伦av在线a | 男女下面进入的视频免费午夜 | 熟妇人妻无乱码中文字幕 | 亚洲欧美中文字幕5发布 | 亚洲综合伊人久久大杳蕉 | 日韩无套无码精品 | 少女韩国电视剧在线观看完整 | 日本一区二区更新不卡 | 中文精品久久久久人妻不卡 | 少妇高潮喷潮久久久影院 | 国产精品久久国产精品99 | 国产亚洲精品精品国产亚洲综合 | 日韩精品久久久肉伦网站 | 免费人成在线视频无码 | 又湿又紧又大又爽a视频国产 | 亚洲色在线无码国产精品不卡 | 国产成人久久精品流白浆 | 日本护士xxxxhd少妇 | 免费无码午夜福利片69 | 精品久久久久久人妻无码中文字幕 | 一本无码人妻在中文字幕免费 | 性史性农村dvd毛片 | 日日麻批免费40分钟无码 | 老头边吃奶边弄进去呻吟 | 国产乱子伦视频在线播放 | 午夜成人1000部免费视频 | 亚洲精品成人福利网站 | 精品久久久久久人妻无码中文字幕 | 日韩在线不卡免费视频一区 | 国产精品美女久久久 | 成人无码视频在线观看网站 | 国产精品亚洲一区二区三区喷水 | 欧美精品国产综合久久 | 高潮毛片无遮挡高清免费视频 | 无码福利日韩神码福利片 | 国产精品美女久久久久av爽李琼 | 日本免费一区二区三区最新 | 亚洲最大成人网站 | 黑人粗大猛烈进出高潮视频 | 丰满岳乱妇在线观看中字无码 | 少妇人妻av毛片在线看 | 色情久久久av熟女人妻网站 | 天天综合网天天综合色 | 日韩av激情在线观看 | 国产精品久久久久久亚洲毛片 | 一区二区三区乱码在线 | 欧洲 | 亚洲国产午夜精品理论片 | 久久综合香蕉国产蜜臀av | 色欲久久久天天天综合网精品 | 国产精品久久久久影院嫩草 | av无码不卡在线观看免费 | 久久无码人妻影院 | 久久精品国产99久久6动漫 | 亚洲人成网站在线播放942 | 日日噜噜噜噜夜夜爽亚洲精品 | 最新版天堂资源中文官网 | 亚洲一区二区三区无码久久 | 色偷偷人人澡人人爽人人模 | 国产欧美熟妇另类久久久 | 狠狠色噜噜狠狠狠狠7777米奇 | 99国产欧美久久久精品 | av无码久久久久不卡免费网站 | 76少妇精品导航 | 久久久精品国产sm最大网站 | 亚洲日本在线电影 | 黑森林福利视频导航 | 国产精品久久久久影院嫩草 | 日产精品99久久久久久 | 久久久www成人免费毛片 | 狂野欧美性猛xxxx乱大交 | 99久久精品国产一区二区蜜芽 | 国产精品久久久午夜夜伦鲁鲁 | 亚拍精品一区二区三区探花 | 男女爱爱好爽视频免费看 | 日本大香伊一区二区三区 | 最近中文2019字幕第二页 | 欧美自拍另类欧美综合图片区 | 成人无码视频免费播放 | 人妻插b视频一区二区三区 | 亚洲精品www久久久 | 精品亚洲韩国一区二区三区 | 亚洲精品中文字幕久久久久 | √8天堂资源地址中文在线 | 亚洲欧美中文字幕5发布 | 成人免费视频视频在线观看 免费 | 国产成人无码午夜视频在线观看 | 成人精品视频一区二区 | 性史性农村dvd毛片 | 97久久超碰中文字幕 | 大肉大捧一进一出视频出来呀 | 97久久国产亚洲精品超碰热 | 永久免费观看国产裸体美女 | 中文字幕无码日韩专区 | 国产精品久久久久9999小说 | 色一情一乱一伦一区二区三欧美 | 亚洲人交乣女bbw | 国产无遮挡又黄又爽免费视频 | 亚洲一区二区三区偷拍女厕 | 欧美xxxxx精品 | 精品无人区无码乱码毛片国产 | 蜜桃av抽搐高潮一区二区 | 99久久久无码国产精品免费 | 兔费看少妇性l交大片免费 | 无码国产乱人伦偷精品视频 | 日本熟妇大屁股人妻 | 久久精品一区二区三区四区 | 中文字幕乱码亚洲无线三区 | 波多野结衣高清一区二区三区 | aⅴ在线视频男人的天堂 | 97色伦图片97综合影院 | 97人妻精品一区二区三区 | 国产婷婷色一区二区三区在线 | 国产综合色产在线精品 | 日本大香伊一区二区三区 | 成人无码精品1区2区3区免费看 | 九月婷婷人人澡人人添人人爽 | 久久午夜无码鲁丝片午夜精品 | 久久精品成人欧美大片 | 少妇人妻av毛片在线看 | 美女黄网站人色视频免费国产 | 国产成人av免费观看 | 一二三四在线观看免费视频 | 精品无码av一区二区三区 | 水蜜桃色314在线观看 | 国产精品va在线观看无码 | 一本大道伊人av久久综合 | 国产精品18久久久久久麻辣 | 国产精品高潮呻吟av久久4虎 | 成人三级无码视频在线观看 | 日本护士毛茸茸高潮 | 99久久婷婷国产综合精品青草免费 | 骚片av蜜桃精品一区 | 377p欧洲日本亚洲大胆 | 老头边吃奶边弄进去呻吟 | 国产性生大片免费观看性 | 18黄暴禁片在线观看 | 亚洲综合色区中文字幕 | 国产三级精品三级男人的天堂 | 欧美日韩一区二区免费视频 | 国产精品美女久久久久av爽李琼 | 中文字幕乱码中文乱码51精品 | 亚洲国产欧美日韩精品一区二区三区 | 奇米影视888欧美在线观看 | 国产激情精品一区二区三区 | 中文字幕亚洲情99在线 | 欧美人与禽zoz0性伦交 | 免费无码的av片在线观看 | 国产精品香蕉在线观看 | 免费国产黄网站在线观看 | 无码人妻丰满熟妇区五十路百度 | 日韩欧美中文字幕在线三区 | 无码任你躁久久久久久久 | 欧美日韩视频无码一区二区三 | 东京热一精品无码av | 国产成人av免费观看 | 欧美日韩久久久精品a片 | 99久久久无码国产精品免费 | 日韩欧美成人免费观看 | 东京热无码av男人的天堂 | 欧洲熟妇精品视频 | 风流少妇按摩来高潮 | 最新国产乱人伦偷精品免费网站 | 东北女人啪啪对白 | 国产69精品久久久久app下载 | 中文字幕久久久久人妻 | 欧美第一黄网免费网站 | 成人免费视频一区二区 | 色偷偷人人澡人人爽人人模 | 熟女体下毛毛黑森林 | 老头边吃奶边弄进去呻吟 | 噜噜噜亚洲色成人网站 | 人人妻人人澡人人爽人人精品浪潮 | 亚洲乱码国产乱码精品精 | 98国产精品综合一区二区三区 | 亚洲色大成网站www国产 | 成人欧美一区二区三区黑人免费 | 色婷婷综合激情综在线播放 | 色欲av亚洲一区无码少妇 | 日韩亚洲欧美中文高清在线 | 性啪啪chinese东北女人 | 自拍偷自拍亚洲精品被多人伦好爽 | 亚洲午夜无码久久 | 99久久婷婷国产综合精品青草免费 | 中文无码成人免费视频在线观看 | 久久综合给合久久狠狠狠97色 | 牛和人交xxxx欧美 | 国产精品无码成人午夜电影 | 西西人体www44rt大胆高清 | 欧美黑人乱大交 | 精品少妇爆乳无码av无码专区 | 国产在线一区二区三区四区五区 | 野外少妇愉情中文字幕 | 国产精品久久国产精品99 | 国产免费无码一区二区视频 | 中文字幕人成乱码熟女app | 成人一在线视频日韩国产 | 强伦人妻一区二区三区视频18 | 在线精品国产一区二区三区 | 无遮无挡爽爽免费视频 | 国产午夜亚洲精品不卡下载 | 亚洲人交乣女bbw | 久久精品国产一区二区三区肥胖 | 国产在线精品一区二区高清不卡 | 精品日本一区二区三区在线观看 | 久久人人爽人人人人片 | 女人被爽到呻吟gif动态图视看 | 成人性做爰aaa片免费看 | 未满成年国产在线观看 | 亚洲国产av精品一区二区蜜芽 | 成人性做爰aaa片免费看 | 亚洲人成影院在线无码按摩店 | 中文无码伦av中文字幕 | 精品夜夜澡人妻无码av蜜桃 | 国産精品久久久久久久 | 国产成人精品一区二区在线小狼 | 色综合久久久久综合一本到桃花网 | 狠狠色噜噜狠狠狠狠7777米奇 | 日韩精品无码一区二区中文字幕 | 国产超级va在线观看视频 | 亚洲区小说区激情区图片区 | 在线а√天堂中文官网 | 天天摸天天碰天天添 | 色爱情人网站 | 精品熟女少妇av免费观看 | 无码帝国www无码专区色综合 | 国产欧美精品一区二区三区 | 无遮挡啪啪摇乳动态图 | 久久无码中文字幕免费影院蜜桃 | 亚洲精品久久久久avwww潮水 | 香蕉久久久久久av成人 | 中文字幕 亚洲精品 第1页 | 成人aaa片一区国产精品 | 精品久久久中文字幕人妻 | 亚洲色欲久久久综合网东京热 | 国产精品亚洲五月天高清 | 无码播放一区二区三区 | 骚片av蜜桃精品一区 | 少妇性l交大片欧洲热妇乱xxx | 中文字幕乱妇无码av在线 | 亚拍精品一区二区三区探花 | 麻豆国产人妻欲求不满 | 亚洲综合精品香蕉久久网 | a片在线免费观看 | 久久亚洲a片com人成 | 欧美日韩视频无码一区二区三 | 国产av剧情md精品麻豆 | 正在播放东北夫妻内射 | 亚洲精品无码国产 | 四虎国产精品免费久久 | av人摸人人人澡人人超碰下载 | 中文字幕中文有码在线 | 中文字幕无码av波多野吉衣 | 亚洲国产精品成人久久蜜臀 | 亚洲综合另类小说色区 | 内射白嫩少妇超碰 | 亚洲人成影院在线无码按摩店 | 亚洲欧美综合区丁香五月小说 | 欧美丰满少妇xxxx性 | 国产亚洲精品久久久久久大师 | 久久午夜无码鲁丝片午夜精品 | 精品无码国产自产拍在线观看蜜 | 香蕉久久久久久av成人 | 少妇无码av无码专区在线观看 | 国产成人无码av片在线观看不卡 | 女人色极品影院 | 亚洲小说春色综合另类 | 免费中文字幕日韩欧美 | 国产一区二区三区四区五区加勒比 | 嫩b人妻精品一区二区三区 | aⅴ在线视频男人的天堂 | 中文亚洲成a人片在线观看 | 亚洲国产高清在线观看视频 | 在线看片无码永久免费视频 | 欧洲精品码一区二区三区免费看 | 久久99精品国产.久久久久 | 狠狠综合久久久久综合网 | 在线播放无码字幕亚洲 | 欧美熟妇另类久久久久久多毛 | 国产精品久免费的黄网站 | 日韩av无码一区二区三区不卡 | 亚洲男人av天堂午夜在 | 婷婷五月综合激情中文字幕 | 人妻天天爽夜夜爽一区二区 | 欧美国产日韩久久mv | 亚洲爆乳大丰满无码专区 | 久久亚洲中文字幕无码 | 国产偷国产偷精品高清尤物 | 亚洲中文字幕无码一久久区 | 久久精品国产日本波多野结衣 | 国产一区二区三区影院 | 亚洲成av人片在线观看无码不卡 | 大肉大捧一进一出好爽视频 | 蜜桃臀无码内射一区二区三区 | 国产av久久久久精东av | 精品无码一区二区三区爱欲 | 人妻夜夜爽天天爽三区 | 日本熟妇人妻xxxxx人hd | 少妇性荡欲午夜性开放视频剧场 | 最近免费中文字幕中文高清百度 | 丰满妇女强制高潮18xxxx | 国产性猛交╳xxx乱大交 国产精品久久久久久无码 欧洲欧美人成视频在线 | 六十路熟妇乱子伦 | 精品国产一区二区三区av 性色 | 日本一区二区三区免费播放 | 爆乳一区二区三区无码 | 福利一区二区三区视频在线观看 | 久久综合九色综合97网 | 日韩精品无码一本二本三本色 | 永久免费精品精品永久-夜色 | 国产精品.xx视频.xxtv | 亚洲阿v天堂在线 | 成人精品天堂一区二区三区 | 在线看片无码永久免费视频 | 99精品国产综合久久久久五月天 | 色婷婷综合激情综在线播放 | 四虎影视成人永久免费观看视频 | 精品乱码久久久久久久 | 少妇太爽了在线观看 | 丰满护士巨好爽好大乳 | 大肉大捧一进一出好爽视频 | 亚洲精品国产品国语在线观看 | 亚洲精品一区二区三区在线观看 | 男人扒开女人内裤强吻桶进去 | 亚洲 另类 在线 欧美 制服 | 国产高清不卡无码视频 | 国产亚洲精品久久久久久国模美 | 国产无遮挡又黄又爽又色 | 日韩人妻无码一区二区三区久久99 | 性色av无码免费一区二区三区 | 国产精品久久久久久久影院 | 久久久无码中文字幕久... | 狂野欧美性猛交免费视频 | 中文字幕久久久久人妻 | 国产一精品一av一免费 | 国产精品无码成人午夜电影 | 国产av一区二区三区最新精品 | 丰满人妻被黑人猛烈进入 | 精品熟女少妇av免费观看 | 人人爽人人爽人人片av亚洲 | 无码纯肉视频在线观看 | 色综合天天综合狠狠爱 | 中文毛片无遮挡高清免费 | 88国产精品欧美一区二区三区 | 精品少妇爆乳无码av无码专区 | 国产精品资源一区二区 | 在线欧美精品一区二区三区 | 色一情一乱一伦一区二区三欧美 | 亚洲熟妇自偷自拍另类 | 波多野结衣高清一区二区三区 | 精品久久综合1区2区3区激情 | 少妇邻居内射在线 | 日本精品高清一区二区 | 亚洲国产午夜精品理论片 | 青青草原综合久久大伊人精品 | 久久综合久久自在自线精品自 | 4hu四虎永久在线观看 | 日本精品人妻无码免费大全 | 日韩欧美群交p片內射中文 | 欧美精品一区二区精品久久 | 激情五月综合色婷婷一区二区 | 一本色道婷婷久久欧美 | 人人妻人人澡人人爽欧美一区 | 国产av久久久久精东av | 日欧一片内射va在线影院 | 超碰97人人做人人爱少妇 | 国产真人无遮挡作爱免费视频 | 色综合视频一区二区三区 | 一本精品99久久精品77 | 国产婷婷色一区二区三区在线 | 成年美女黄网站色大免费视频 | 午夜精品一区二区三区的区别 | 久久www免费人成人片 | 一个人看的www免费视频在线观看 | 久久亚洲a片com人成 | 国产两女互慰高潮视频在线观看 | av无码久久久久不卡免费网站 | 免费无码的av片在线观看 | 亚洲色欲色欲欲www在线 | 东京一本一道一二三区 | 无码纯肉视频在线观看 | 奇米综合四色77777久久 东京无码熟妇人妻av在线网址 | 精品久久久久久人妻无码中文字幕 | 99久久人妻精品免费一区 | 又粗又大又硬毛片免费看 | 四虎永久在线精品免费网址 | 国产又粗又硬又大爽黄老大爷视 | 日韩人妻系列无码专区 | 亚洲精品久久久久avwww潮水 | 日韩精品乱码av一区二区 | 樱花草在线播放免费中文 | 最新版天堂资源中文官网 | 内射后入在线观看一区 | 亚洲a无码综合a国产av中文 | 欧美freesex黑人又粗又大 | 亚洲欧美精品aaaaaa片 | 久久久久成人精品免费播放动漫 | 国产在线精品一区二区高清不卡 | 国产精品久久精品三级 | 日日摸天天摸爽爽狠狠97 | 久久久精品人妻久久影视 | а√资源新版在线天堂 | 激情亚洲一区国产精品 | 日本护士xxxxhd少妇 | 人妻夜夜爽天天爽三区 | 久久久精品成人免费观看 | 精品人妻中文字幕有码在线 | 人妻人人添人妻人人爱 | 丰满人妻翻云覆雨呻吟视频 | 国产真实乱对白精彩久久 | 狠狠色欧美亚洲狠狠色www | 亚洲欧洲中文日韩av乱码 | 一区二区三区高清视频一 | 波多野结衣aⅴ在线 | 欧美成人高清在线播放 | 中文毛片无遮挡高清免费 | 99久久婷婷国产综合精品青草免费 | 免费男性肉肉影院 | 国产成人精品一区二区在线小狼 | 久久人人爽人人爽人人片av高清 | 在线 国产 欧美 亚洲 天堂 | 久久久精品欧美一区二区免费 | 国产偷自视频区视频 | 无码国模国产在线观看 | 成熟人妻av无码专区 | 精品无人国产偷自产在线 | 伊人久久大香线蕉av一区二区 | 伊人久久大香线蕉亚洲 | 国产特级毛片aaaaaa高潮流水 | 欧美精品无码一区二区三区 | 黑人大群体交免费视频 | 亚洲熟悉妇女xxx妇女av | 丁香花在线影院观看在线播放 | 美女扒开屁股让男人桶 | 亚洲成a人片在线观看无码 | 性生交大片免费看女人按摩摩 | 日日橹狠狠爱欧美视频 | 国产av一区二区三区最新精品 | 免费网站看v片在线18禁无码 | 天天av天天av天天透 | 日韩亚洲欧美中文高清在线 | 国产香蕉97碰碰久久人人 | 日本饥渴人妻欲求不满 | 三级4级全黄60分钟 | 国产在线精品一区二区高清不卡 | 精品国产一区二区三区四区 | 亚洲精品成a人在线观看 | 国产亚洲精品久久久闺蜜 | 欧美日本精品一区二区三区 | 日日橹狠狠爱欧美视频 | 免费无码av一区二区 | 中文字幕无码日韩欧毛 | 强辱丰满人妻hd中文字幕 | 在线观看国产一区二区三区 | 日本丰满熟妇videos | 日本精品人妻无码77777 天堂一区人妻无码 | 成人片黄网站色大片免费观看 | 欧美性猛交内射兽交老熟妇 | 日韩亚洲欧美中文高清在线 | 亚洲国产精品成人久久蜜臀 | 老子影院午夜精品无码 | 久久精品女人天堂av免费观看 | 少妇性荡欲午夜性开放视频剧场 | 亚洲国产高清在线观看视频 | 少妇性俱乐部纵欲狂欢电影 | 色情久久久av熟女人妻网站 | 亚洲精品一区二区三区婷婷月 | 乱人伦中文视频在线观看 | 国产无遮挡吃胸膜奶免费看 | 人妻尝试又大又粗久久 | 国产无套粉嫩白浆在线 | 精品日本一区二区三区在线观看 | 国产成人精品久久亚洲高清不卡 | 黑人大群体交免费视频 | 狠狠色丁香久久婷婷综合五月 | 九月婷婷人人澡人人添人人爽 | 精品一区二区三区无码免费视频 | 精品国产一区二区三区av 性色 | 永久免费精品精品永久-夜色 | 精品厕所偷拍各类美女tp嘘嘘 | 久久久婷婷五月亚洲97号色 | 四虎影视成人永久免费观看视频 | 噜噜噜亚洲色成人网站 | 三上悠亚人妻中文字幕在线 | 色婷婷欧美在线播放内射 | 纯爱无遮挡h肉动漫在线播放 | 国产人妻精品一区二区三区不卡 | a在线观看免费网站大全 | 欧美性生交活xxxxxdddd | 牲交欧美兽交欧美 | 亚洲熟熟妇xxxx | 国产在线精品一区二区三区直播 | 亚洲成色www久久网站 | 国产无遮挡吃胸膜奶免费看 | 成人片黄网站色大片免费观看 | 一本久久a久久精品亚洲 | 永久免费观看国产裸体美女 | a国产一区二区免费入口 | 女人被男人躁得好爽免费视频 | 日韩av激情在线观看 | 久久久久se色偷偷亚洲精品av | 国产色视频一区二区三区 | 青草视频在线播放 | 人人妻人人澡人人爽欧美一区九九 | 亚洲无人区午夜福利码高清完整版 | 在线 国产 欧美 亚洲 天堂 | 国产精品亚洲专区无码不卡 | 日本免费一区二区三区最新 | 国产精品二区一区二区aⅴ污介绍 | 久久www免费人成人片 | 亚洲乱码日产精品bd | 澳门永久av免费网站 | 精品欧洲av无码一区二区三区 | 亚洲成av人片天堂网无码】 | 娇妻被黑人粗大高潮白浆 | 久久国产自偷自偷免费一区调 | 性欧美熟妇videofreesex | 熟女体下毛毛黑森林 | 日本爽爽爽爽爽爽在线观看免 | 蜜桃视频韩日免费播放 | 国产无遮挡又黄又爽免费视频 | 国产精品久久久久久亚洲影视内衣 | 人人妻人人澡人人爽精品欧美 | 成人aaa片一区国产精品 | 国产97色在线 | 免 | 色综合久久久无码网中文 | 一本久久a久久精品亚洲 | 亚洲 欧美 激情 小说 另类 | 蜜臀av在线观看 在线欧美精品一区二区三区 | 女人和拘做爰正片视频 | 久久精品女人的天堂av | 国产亚av手机在线观看 | 免费人成网站视频在线观看 | 色五月五月丁香亚洲综合网 | 无码av岛国片在线播放 | 中文字幕无码av激情不卡 | 性欧美videos高清精品 | 东京无码熟妇人妻av在线网址 | 亚洲日韩乱码中文无码蜜桃臀网站 | 一二三四社区在线中文视频 | 免费无码的av片在线观看 | 国产精品久久国产三级国 | 欧美日韩综合一区二区三区 | 婷婷综合久久中文字幕蜜桃三电影 | 久久精品中文闷骚内射 | 成人免费视频一区二区 | 久久熟妇人妻午夜寂寞影院 | 国产精品多人p群无码 | 精品乱子伦一区二区三区 | 夜精品a片一区二区三区无码白浆 | 亚洲精品久久久久久一区二区 | 丰满护士巨好爽好大乳 | 欧美变态另类xxxx | 久久国产精品精品国产色婷婷 | 国产成人精品无码播放 | 亚洲毛片av日韩av无码 | 欧美野外疯狂做受xxxx高潮 | 成人免费视频视频在线观看 免费 | 中文久久乱码一区二区 | 成人欧美一区二区三区 | 久青草影院在线观看国产 | yw尤物av无码国产在线观看 | 中文字幕日韩精品一区二区三区 | 女人被爽到呻吟gif动态图视看 | 俄罗斯老熟妇色xxxx | 欧美精品一区二区精品久久 | 亚洲国产日韩a在线播放 | 午夜无码人妻av大片色欲 | 国产精品资源一区二区 | 最近免费中文字幕中文高清百度 | 熟女少妇人妻中文字幕 | 久久精品国产一区二区三区肥胖 | 国产一区二区三区日韩精品 | 老熟女重囗味hdxx69 | 精品午夜福利在线观看 | 国产成人亚洲综合无码 | 精品人人妻人人澡人人爽人人 | 欧美日本精品一区二区三区 | 激情国产av做激情国产爱 | 波多野结衣一区二区三区av免费 | 精品国偷自产在线 | 天天综合网天天综合色 | 国产精品亚洲lv粉色 | 日日噜噜噜噜夜夜爽亚洲精品 | 国产av一区二区精品久久凹凸 | 色欲av亚洲一区无码少妇 | 免费国产成人高清在线观看网站 | 国产无套内射久久久国产 | 性欧美videos高清精品 | 少妇高潮一区二区三区99 | 国产成人一区二区三区别 | 5858s亚洲色大成网站www | 男女爱爱好爽视频免费看 | 在线精品国产一区二区三区 | 久久亚洲精品成人无码 | 日本一本二本三区免费 | 日本一区二区更新不卡 | 国产成人精品久久亚洲高清不卡 | 精品国产一区二区三区四区在线看 | 成人三级无码视频在线观看 | 亚洲国产精品毛片av不卡在线 | 大屁股大乳丰满人妻 | 东京一本一道一二三区 | 亚洲第一网站男人都懂 | 亚洲午夜无码久久 | 欧美大屁股xxxxhd黑色 | 无遮无挡爽爽免费视频 | 乱人伦人妻中文字幕无码久久网 | 在线观看免费人成视频 | 午夜福利不卡在线视频 | 久久99热只有频精品8 | 超碰97人人做人人爱少妇 | 成在人线av无码免费 | 九九综合va免费看 | 色婷婷av一区二区三区之红樱桃 | 无码免费一区二区三区 | 精品一二三区久久aaa片 | 亚洲中文字幕成人无码 | 亚洲精品国产精品乱码视色 | 久久综合给久久狠狠97色 | 无码av最新清无码专区吞精 | 大肉大捧一进一出视频出来呀 | 久久婷婷五月综合色国产香蕉 | yw尤物av无码国产在线观看 | 免费无码av一区二区 | 欧美怡红院免费全部视频 | 网友自拍区视频精品 | 漂亮人妻洗澡被公强 日日躁 | 国产人妻精品一区二区三区不卡 | 午夜男女很黄的视频 | 人妻夜夜爽天天爽三区 | 精品国产一区二区三区四区 | 成人精品天堂一区二区三区 | 嫩b人妻精品一区二区三区 | 国产免费观看黄av片 | 国产成人精品优优av | 丰满少妇女裸体bbw | 伊人久久大香线焦av综合影院 | 免费中文字幕日韩欧美 | 中文精品久久久久人妻不卡 | 久久久久久亚洲精品a片成人 | 国产人妻精品一区二区三区不卡 | 沈阳熟女露脸对白视频 | 国产精品久久久久久久9999 | 成人精品视频一区二区 | 成在人线av无码免费 | 国产乱码精品一品二品 | 一本一道久久综合久久 | 欧美日韩一区二区三区自拍 | 亚洲国产精品美女久久久久 | 亚洲欧美色中文字幕在线 | 波多野结衣av一区二区全免费观看 | 欧洲vodafone精品性 | 日日橹狠狠爱欧美视频 | 日本大香伊一区二区三区 | 最新版天堂资源中文官网 | 激情亚洲一区国产精品 | 永久免费观看美女裸体的网站 | 亚洲综合无码一区二区三区 | 成人一区二区免费视频 | 亚洲综合另类小说色区 | 欧美熟妇另类久久久久久不卡 | 国产精品99爱免费视频 | 国产亚洲精品精品国产亚洲综合 | 桃花色综合影院 | 欧美变态另类xxxx | 国产无遮挡又黄又爽又色 | 国产精品久久久久久无码 | 国产亚洲精品久久久久久久久动漫 | 午夜精品一区二区三区在线观看 | 人妻无码αv中文字幕久久琪琪布 | 亚洲男人av香蕉爽爽爽爽 | 亚洲国产成人a精品不卡在线 | av无码久久久久不卡免费网站 | 久久精品成人欧美大片 | 国产特级毛片aaaaaaa高清 | 丰满少妇熟乱xxxxx视频 | 日韩精品久久久肉伦网站 | 欧美 亚洲 国产 另类 | 日本xxxx色视频在线观看免费 | 国产成人精品久久亚洲高清不卡 | 九九久久精品国产免费看小说 | 国产亚洲人成a在线v网站 | 99久久久无码国产精品免费 | 中国女人内谢69xxxxxa片 | 国产精品国产三级国产专播 | 日本肉体xxxx裸交 | 少妇性俱乐部纵欲狂欢电影 | 性生交大片免费看l | 亚洲日本va午夜在线电影 | 亚洲中文字幕乱码av波多ji | 1000部夫妻午夜免费 | 熟妇人妻无乱码中文字幕 | 午夜嘿嘿嘿影院 | 日韩在线不卡免费视频一区 | 国产乱人伦偷精品视频 | av无码不卡在线观看免费 | 日本一区二区三区免费播放 | 牲欲强的熟妇农村老妇女视频 | 亚洲自偷精品视频自拍 | 国产成人精品优优av | 午夜无码区在线观看 | 久久国产精品萌白酱免费 | 国产av一区二区精品久久凹凸 | 久久亚洲精品中文字幕无男同 | 日本精品高清一区二区 | 夫妻免费无码v看片 | 麻豆蜜桃av蜜臀av色欲av | 国产精品久久久久无码av色戒 | 中文字幕人成乱码熟女app | 亚洲人成影院在线无码按摩店 | 国产精品人人爽人人做我的可爱 | 国产精品毛片一区二区 | 美女扒开屁股让男人桶 | 性欧美牲交xxxxx视频 | 内射后入在线观看一区 | 国产另类ts人妖一区二区 | 欧美freesex黑人又粗又大 | 女人被爽到呻吟gif动态图视看 | 国产人成高清在线视频99最全资源 | 色情久久久av熟女人妻网站 | 亚洲精品成人福利网站 | 永久免费精品精品永久-夜色 | 亚洲成色www久久网站 | 国产人妻精品午夜福利免费 | 国产色视频一区二区三区 | 成熟女人特级毛片www免费 | 国产精品-区区久久久狼 | 亚洲成a人片在线观看无码3d | 亚洲国产一区二区三区在线观看 | www国产亚洲精品久久久日本 | 国产精品igao视频网 | 久久99热只有频精品8 | 亚洲精品无码国产 | 亚洲精品国产品国语在线观看 | 亚洲色大成网站www | 荫蒂被男人添的好舒服爽免费视频 | аⅴ资源天堂资源库在线 | 高清国产亚洲精品自在久久 | 爱做久久久久久 | 久久久精品国产sm最大网站 | 精品国产av色一区二区深夜久久 | 久久99精品久久久久久动态图 | 国产综合色产在线精品 | 国产亚洲精品久久久ai换 | 无码人妻精品一区二区三区不卡 | 强开小婷嫩苞又嫩又紧视频 | 无套内射视频囯产 | 波多野结衣av一区二区全免费观看 | 国产色视频一区二区三区 | 亚洲日韩一区二区 | 宝宝好涨水快流出来免费视频 | 久久亚洲国产成人精品性色 | 美女扒开屁股让男人桶 | 欧美熟妇另类久久久久久多毛 | 欧美放荡的少妇 | 特级做a爰片毛片免费69 | 国产亚洲日韩欧美另类第八页 | aⅴ亚洲 日韩 色 图网站 播放 | 国产亚洲精品精品国产亚洲综合 | 国产精品美女久久久 | 妺妺窝人体色www婷婷 | 欧美性猛交xxxx富婆 | 欧美丰满老熟妇xxxxx性 | 亚洲精品中文字幕久久久久 | 欧美性猛交内射兽交老熟妇 | 国产综合久久久久鬼色 | 国产人妻久久精品二区三区老狼 | 国产精品久久久久久无码 | 色诱久久久久综合网ywww | 狠狠色噜噜狠狠狠7777奇米 | 97精品人妻一区二区三区香蕉 | 亚洲人成网站在线播放942 | 在线观看免费人成视频 | 国产内射爽爽大片视频社区在线 | 国产色视频一区二区三区 | 亚洲国产精华液网站w | 久久综合香蕉国产蜜臀av | 色婷婷综合激情综在线播放 | 国产精品-区区久久久狼 | 欧美丰满熟妇xxxx | 久久国内精品自在自线 | 亚洲自偷自拍另类第1页 | 国产真实伦对白全集 | 国产av一区二区精品久久凹凸 | 国产乡下妇女做爰 | 日韩av无码中文无码电影 | 夜夜夜高潮夜夜爽夜夜爰爰 | 欧美亚洲国产一区二区三区 | 久久精品中文字幕一区 | 又湿又紧又大又爽a视频国产 | 九九在线中文字幕无码 | 中文字幕人妻无码一区二区三区 | 日本大乳高潮视频在线观看 | 精品国产一区二区三区四区 | 少妇无码av无码专区在线观看 | av人摸人人人澡人人超碰下载 | 国产成人午夜福利在线播放 | 88国产精品欧美一区二区三区 | 国产精品人人爽人人做我的可爱 | 免费无码午夜福利片69 | 荫蒂被男人添的好舒服爽免费视频 | 强辱丰满人妻hd中文字幕 | 牲欲强的熟妇农村老妇女 | 麻豆果冻传媒2021精品传媒一区下载 | 日本精品人妻无码免费大全 | 熟妇人妻无乱码中文字幕 | 精品亚洲成av人在线观看 | 精品无码国产自产拍在线观看蜜 | 成人精品天堂一区二区三区 | 老熟妇仑乱视频一区二区 | 久久精品女人的天堂av | 欧美野外疯狂做受xxxx高潮 | 久久精品中文字幕大胸 | 在线看片无码永久免费视频 | 欧美丰满老熟妇xxxxx性 | 国产精品自产拍在线观看 | 色妞www精品免费视频 | 狠狠色丁香久久婷婷综合五月 | 国产午夜亚洲精品不卡下载 | 免费播放一区二区三区 | 亚洲国产av精品一区二区蜜芽 | 四虎国产精品一区二区 | 97精品人妻一区二区三区香蕉 | 久久午夜夜伦鲁鲁片无码免费 | 精品成人av一区二区三区 | 熟妇人妻无乱码中文字幕 | 精品人妻人人做人人爽 | 少妇被粗大的猛进出69影院 | 中文精品无码中文字幕无码专区 | 国产一区二区三区影院 | 久久99国产综合精品 | 4hu四虎永久在线观看 | 国产精品嫩草久久久久 | 欧美熟妇另类久久久久久多毛 | 在线а√天堂中文官网 | 国产性生大片免费观看性 | 国产午夜福利亚洲第一 | 色欲久久久天天天综合网精品 | 午夜福利不卡在线视频 | 精品无码成人片一区二区98 | 成年美女黄网站色大免费全看 | 国产精品久免费的黄网站 | 老头边吃奶边弄进去呻吟 | 国产人妻精品午夜福利免费 | 亚洲欧洲日本无在线码 | 综合网日日天干夜夜久久 | 亚洲狠狠色丁香婷婷综合 | 午夜福利一区二区三区在线观看 | 国产精品国产三级国产专播 | 国产成人一区二区三区别 | 国产精品18久久久久久麻辣 | 一本大道久久东京热无码av | 波多野42部无码喷潮在线 | 久久精品人人做人人综合试看 | 国产乱人偷精品人妻a片 | 亚洲精品午夜国产va久久成人 | 亚洲成av人片天堂网无码】 | 大肉大捧一进一出好爽视频 | 成人av无码一区二区三区 | 丁香花在线影院观看在线播放 | 久久久久久九九精品久 | 超碰97人人射妻 | а√天堂www在线天堂小说 | 特级做a爰片毛片免费69 | 正在播放老肥熟妇露脸 | 人妻aⅴ无码一区二区三区 | 狂野欧美性猛交免费视频 | 俺去俺来也www色官网 | 乌克兰少妇性做爰 | 久久久久免费看成人影片 | 水蜜桃亚洲一二三四在线 | 激情人妻另类人妻伦 | 六月丁香婷婷色狠狠久久 | 亚洲啪av永久无码精品放毛片 | 久久国产36精品色熟妇 | 精品一二三区久久aaa片 | 国产亚洲日韩欧美另类第八页 | 97夜夜澡人人双人人人喊 | 熟妇人妻无乱码中文字幕 | 亚洲精品www久久久 | 国产超级va在线观看视频 | 色一情一乱一伦一视频免费看 | 天堂а√在线中文在线 | 55夜色66夜色国产精品视频 | 黑人巨大精品欧美一区二区 | 亚洲人亚洲人成电影网站色 | 乌克兰少妇性做爰 | 女人被爽到呻吟gif动态图视看 | 沈阳熟女露脸对白视频 | 国精产品一品二品国精品69xx | 无码人妻av免费一区二区三区 | 午夜精品一区二区三区的区别 | 久久成人a毛片免费观看网站 | 国产精品人妻一区二区三区四 | 又紧又大又爽精品一区二区 | 蜜桃视频韩日免费播放 | a在线亚洲男人的天堂 | 亚洲欧美日韩成人高清在线一区 | 天堂亚洲2017在线观看 | 色婷婷久久一区二区三区麻豆 | 国产亚av手机在线观看 | 欧美freesex黑人又粗又大 | 无码国产色欲xxxxx视频 | 性色av无码免费一区二区三区 | 久久精品国产一区二区三区 | 正在播放东北夫妻内射 | 日本护士毛茸茸高潮 | 亚洲色无码一区二区三区 | 全球成人中文在线 | 女人被男人躁得好爽免费视频 | 天堂在线观看www | 国产精品久久国产精品99 | 丰满肥臀大屁股熟妇激情视频 | 亚洲熟悉妇女xxx妇女av | 蜜桃av抽搐高潮一区二区 | yw尤物av无码国产在线观看 | 亚洲午夜福利在线观看 | 中文毛片无遮挡高清免费 | 亚洲精品一区国产 | 国产麻豆精品精东影业av网站 | 国产熟妇高潮叫床视频播放 | 免费男性肉肉影院 | 真人与拘做受免费视频一 | 女人被爽到呻吟gif动态图视看 | 国产精品对白交换视频 | 精品人妻中文字幕有码在线 | 国产网红无码精品视频 | 欧美性猛交内射兽交老熟妇 | 精品国产麻豆免费人成网站 | 国产成人精品三级麻豆 | 亚洲国产欧美国产综合一区 | 久久精品国产日本波多野结衣 | 99er热精品视频 | 亚洲精品国产精品乱码不卡 | 国产免费观看黄av片 | 中国女人内谢69xxxx | 午夜嘿嘿嘿影院 | 人人爽人人澡人人人妻 | 国产明星裸体无码xxxx视频 | 久久久久国色av免费观看性色 | 国产精品爱久久久久久久 | 国产成人一区二区三区在线观看 | 一区二区三区高清视频一 | 美女黄网站人色视频免费国产 | 国产精品内射视频免费 | 无码福利日韩神码福利片 | 亚洲国产一区二区三区在线观看 | 国产在线无码精品电影网 | 天天燥日日燥 | 国产在线精品一区二区三区直播 | 人妻体内射精一区二区三四 | 亚洲 高清 成人 动漫 | 精品一区二区不卡无码av | 无码人妻黑人中文字幕 | 色综合久久中文娱乐网 | 国产精品久久久久影院嫩草 | 99riav国产精品视频 | 亚洲国产av美女网站 | 国产精品久久久久久亚洲影视内衣 | 性开放的女人aaa片 | 曰韩无码二三区中文字幕 | 国产精品免费大片 | 成熟女人特级毛片www免费 | 鲁鲁鲁爽爽爽在线视频观看 | 少妇性俱乐部纵欲狂欢电影 | √天堂中文官网8在线 | 亚洲小说图区综合在线 | ass日本丰满熟妇pics | 中文字幕人成乱码熟女app | 精品国精品国产自在久国产87 | 国产超级va在线观看视频 | 日韩精品a片一区二区三区妖精 | 国产人妻大战黑人第1集 | 日本在线高清不卡免费播放 | 自拍偷自拍亚洲精品被多人伦好爽 | 欧美人与善在线com | 国产国语老龄妇女a片 | 久久精品女人的天堂av | 中文字幕乱码中文乱码51精品 | 精品人妻人人做人人爽夜夜爽 | 国产成人精品久久亚洲高清不卡 | 久久久www成人免费毛片 | 久久久久久亚洲精品a片成人 | 最近中文2019字幕第二页 | 青草视频在线播放 | 久久久久亚洲精品男人的天堂 | 久激情内射婷内射蜜桃人妖 | 男女下面进入的视频免费午夜 | 无遮挡啪啪摇乳动态图 | 日韩亚洲欧美精品综合 | 波多野结衣一区二区三区av免费 | 亚洲国产精品久久久久久 | 九九综合va免费看 | 色 综合 欧美 亚洲 国产 | 乱码午夜-极国产极内射 | 最新国产麻豆aⅴ精品无码 | 亚洲欧美国产精品久久 | 亚洲人成影院在线无码按摩店 | 伊在人天堂亚洲香蕉精品区 | 欧美兽交xxxx×视频 | 国产成人精品久久亚洲高清不卡 | 久久久亚洲欧洲日产国码αv | 婷婷五月综合激情中文字幕 | 大乳丰满人妻中文字幕日本 | 国产偷国产偷精品高清尤物 | 国产人妻精品一区二区三区不卡 | 亚洲欧美精品伊人久久 | 国产极品视觉盛宴 | 日本熟妇人妻xxxxx人hd | 国内少妇偷人精品视频免费 | 久久综合狠狠综合久久综合88 | 亚洲精品中文字幕乱码 | 乱码av麻豆丝袜熟女系列 | 亚洲码国产精品高潮在线 | 亚洲国产av美女网站 | 亚洲男女内射在线播放 | 激情内射日本一区二区三区 | 无码国内精品人妻少妇 | 国产精品18久久久久久麻辣 | 成人影院yy111111在线观看 | 国产精品久免费的黄网站 | 又紧又大又爽精品一区二区 | 十八禁真人啪啪免费网站 | 国产精品永久免费视频 | 麻豆果冻传媒2021精品传媒一区下载 | 国产欧美熟妇另类久久久 | 国产又爽又猛又粗的视频a片 | 亚洲国产精品一区二区美利坚 | 日韩亚洲欧美中文高清在线 | 俺去俺来也在线www色官网 | 人人澡人人透人人爽 | 丝袜 中出 制服 人妻 美腿 | 精品无码国产自产拍在线观看蜜 | 亚洲精品美女久久久久久久 | 四虎国产精品免费久久 | 黑人巨大精品欧美黑寡妇 | 国产又爽又黄又刺激的视频 | 18黄暴禁片在线观看 | 国产sm调教视频在线观看 | 亚洲国产精品成人久久蜜臀 | 久激情内射婷内射蜜桃人妖 | 天堂а√在线中文在线 | 国产午夜视频在线观看 | 国产精品.xx视频.xxtv | 丰满少妇熟乱xxxxx视频 | 久久视频在线观看精品 | 中文字幕色婷婷在线视频 | 国产精品永久免费视频 | 无码人妻av免费一区二区三区 | 欧美亚洲日韩国产人成在线播放 | 国产亚洲精品久久久ai换 | 红桃av一区二区三区在线无码av | 丰满少妇熟乱xxxxx视频 | 一本一道久久综合久久 | 激情内射亚州一区二区三区爱妻 | ass日本丰满熟妇pics | 免费观看的无遮挡av | 国产内射老熟女aaaa | 最近中文2019字幕第二页 | 国产九九九九九九九a片 | 久久国产自偷自偷免费一区调 | 国产熟女一区二区三区四区五区 | 精品久久久无码人妻字幂 | 欧美国产日韩久久mv | 中文亚洲成a人片在线观看 | 久久婷婷五月综合色国产香蕉 | 久久久久久av无码免费看大片 | 久久久国产精品无码免费专区 | 国产偷国产偷精品高清尤物 | 日韩精品无码一区二区中文字幕 | 久久99精品国产.久久久久 | 精品国产青草久久久久福利 | 人人妻人人澡人人爽人人精品浪潮 | 成 人 网 站国产免费观看 | 在线 国产 欧美 亚洲 天堂 | 亚洲の无码国产の无码影院 | 波多野42部无码喷潮在线 | 无码人妻久久一区二区三区不卡 | 亚洲一区二区三区播放 | 亚洲毛片av日韩av无码 | 男女性色大片免费网站 | 欧美丰满熟妇xxxx性ppx人交 | 日日干夜夜干 | 国产成人一区二区三区别 | 久久www免费人成人片 | 一个人免费观看的www视频 | 少妇无码av无码专区在线观看 | 少妇激情av一区二区 | 日本精品少妇一区二区三区 | 欧美人与禽猛交狂配 | 俄罗斯老熟妇色xxxx | 四十如虎的丰满熟妇啪啪 | 色综合视频一区二区三区 | 国产成人一区二区三区别 | 动漫av一区二区在线观看 | 久久久久久久人妻无码中文字幕爆 | 欧美丰满老熟妇xxxxx性 | 精品国产麻豆免费人成网站 | 色综合久久久久综合一本到桃花网 | 国产亚洲精品久久久ai换 | 国产黑色丝袜在线播放 | 天堂а√在线地址中文在线 | 亚洲精品国产精品乱码视色 | 天干天干啦夜天干天2017 | 亚洲中文字幕无码中文字在线 | 高清国产亚洲精品自在久久 | 嫩b人妻精品一区二区三区 | 久久国产36精品色熟妇 | 国产高清不卡无码视频 | av人摸人人人澡人人超碰下载 | 亚洲最大成人网站 | 曰本女人与公拘交酡免费视频 | 久久精品99久久香蕉国产色戒 | 无码任你躁久久久久久久 | www一区二区www免费 | 波多野结衣 黑人 | 久久99精品久久久久久动态图 | 亚洲国产精品久久人人爱 | 国产极品视觉盛宴 | 国产乱人伦app精品久久 国产在线无码精品电影网 国产国产精品人在线视 | 成 人影片 免费观看 | 性欧美牲交xxxxx视频 | 牲交欧美兽交欧美 | 99久久婷婷国产综合精品青草免费 | 国产福利视频一区二区 | 亚洲а∨天堂久久精品2021 | 98国产精品综合一区二区三区 | 55夜色66夜色国产精品视频 | 天堂亚洲免费视频 | 国产精品鲁鲁鲁 | 牲欲强的熟妇农村老妇女视频 | 国产精品久久久一区二区三区 | 亚洲最大成人网站 | 无套内射视频囯产 | 草草网站影院白丝内射 | 国产成人无码区免费内射一片色欲 | 全黄性性激高免费视频 | 欧美性生交xxxxx久久久 | 中文毛片无遮挡高清免费 | 成人三级无码视频在线观看 | 色综合天天综合狠狠爱 | 18无码粉嫩小泬无套在线观看 | 国产乱人伦偷精品视频 | 国产精品无码成人午夜电影 | 粗大的内捧猛烈进出视频 | 欧美高清在线精品一区 | 欧美 日韩 人妻 高清 中文 | 2019nv天堂香蕉在线观看 | 人妻aⅴ无码一区二区三区 | 午夜无码区在线观看 | 欧美日韩一区二区综合 | 久久天天躁夜夜躁狠狠 | 国产色精品久久人妻 | 少妇人妻大乳在线视频 | 正在播放老肥熟妇露脸 | 久久国内精品自在自线 | 少妇一晚三次一区二区三区 | 波多野结衣高清一区二区三区 | 熟妇人妻中文av无码 | 丰满肥臀大屁股熟妇激情视频 | 久久精品女人的天堂av | 久久www免费人成人片 | 欧美人与禽猛交狂配 | 免费人成在线观看网站 | 日本熟妇人妻xxxxx人hd | 青青久在线视频免费观看 | 国产无遮挡又黄又爽免费视频 | 国产精品福利视频导航 | 久久国产精品萌白酱免费 | 日本精品少妇一区二区三区 | 国产精品人妻一区二区三区四 | 青青青手机频在线观看 | 欧美日韩一区二区综合 | 亚洲精品国偷拍自产在线麻豆 | 久久婷婷五月综合色国产香蕉 | 国产两女互慰高潮视频在线观看 | 漂亮人妻洗澡被公强 日日躁 | 伊人久久婷婷五月综合97色 | 亚洲精品国产品国语在线观看 | 国产又粗又硬又大爽黄老大爷视 | 97无码免费人妻超级碰碰夜夜 | 久久这里只有精品视频9 | 亚洲精品久久久久中文第一幕 | 夜夜影院未满十八勿进 | 天干天干啦夜天干天2017 | 天堂а√在线地址中文在线 | 国产女主播喷水视频在线观看 | 少妇太爽了在线观看 | 亚洲人成影院在线观看 | 国内精品久久久久久中文字幕 | 欧美性黑人极品hd | 欧美亚洲日韩国产人成在线播放 | 男女超爽视频免费播放 | 亚洲中文字幕在线观看 | 永久免费观看美女裸体的网站 | 东京热一精品无码av | 欧美成人午夜精品久久久 | 精品欧洲av无码一区二区三区 | 欧美xxxx黑人又粗又长 | 人人妻人人澡人人爽欧美一区九九 | 精品国产成人一区二区三区 | 欧美日韩一区二区免费视频 | 高中生自慰www网站 | 久久视频在线观看精品 | 国产精品无码永久免费888 | 欧美国产日韩久久mv | 无码成人精品区在线观看 | www国产精品内射老师 | 欧美高清在线精品一区 | 97资源共享在线视频 | v一区无码内射国产 | 99久久亚洲精品无码毛片 | 澳门永久av免费网站 | 蜜桃视频韩日免费播放 | 999久久久国产精品消防器材 | 国产农村妇女aaaaa视频 撕开奶罩揉吮奶头视频 | 久在线观看福利视频 | 亚洲国产成人a精品不卡在线 | 亚洲热妇无码av在线播放 | 午夜精品久久久久久久久 | 欧美熟妇另类久久久久久多毛 | 午夜肉伦伦影院 | 玩弄中年熟妇正在播放 | 亚洲综合无码一区二区三区 | 国产麻豆精品一区二区三区v视界 | 欧美精品国产综合久久 | 精品国产乱码久久久久乱码 | 亚洲国产一区二区三区在线观看 | 国产卡一卡二卡三 | 奇米综合四色77777久久 东京无码熟妇人妻av在线网址 | 天天摸天天碰天天添 | 国产精品无码成人午夜电影 | 国产美女极度色诱视频www | 三级4级全黄60分钟 | 午夜不卡av免费 一本久久a久久精品vr综合 | 亚洲色偷偷偷综合网 | 国产片av国语在线观看 | 在线看片无码永久免费视频 | 国产性猛交╳xxx乱大交 国产精品久久久久久无码 欧洲欧美人成视频在线 | 午夜精品久久久久久久 | 亚洲精品综合五月久久小说 | 色欲久久久天天天综合网精品 | 4hu四虎永久在线观看 | 精品一二三区久久aaa片 | 又粗又大又硬又长又爽 | 日韩亚洲欧美中文高清在线 | 中文无码成人免费视频在线观看 | 国产内射爽爽大片视频社区在线 | 国产亚洲视频中文字幕97精品 | 久久 国产 尿 小便 嘘嘘 | 国产疯狂伦交大片 | 国产片av国语在线观看 | 97人妻精品一区二区三区 | 亚洲日本一区二区三区在线 | 人妻少妇精品无码专区动漫 | 中文字幕无码免费久久99 | 精品乱码久久久久久久 | 亚洲成a人片在线观看无码 | 99久久精品国产一区二区蜜芽 | 国产又爽又黄又刺激的视频 | 天海翼激烈高潮到腰振不止 | 亚洲最大成人网站 | 午夜精品一区二区三区的区别 | 97无码免费人妻超级碰碰夜夜 | 国产日产欧产精品精品app | 熟女体下毛毛黑森林 | 国产精品人妻一区二区三区四 | 少妇人妻大乳在线视频 | 撕开奶罩揉吮奶头视频 | 暴力强奷在线播放无码 | 亚洲精品一区二区三区四区五区 | 在线观看国产一区二区三区 | 国产精品嫩草久久久久 | 波多野结衣av一区二区全免费观看 | 无遮挡啪啪摇乳动态图 | 特黄特色大片免费播放器图片 | 领导边摸边吃奶边做爽在线观看 | 亚洲 日韩 欧美 成人 在线观看 | 国内少妇偷人精品视频免费 | 国产一精品一av一免费 | 国产精品福利视频导航 | 中文字幕乱码中文乱码51精品 | 在教室伦流澡到高潮hnp视频 | 国产激情艳情在线看视频 | 中文字幕色婷婷在线视频 | 精品久久久无码人妻字幂 | 国产成人精品一区二区在线小狼 | 亚洲精品国产品国语在线观看 | 国产精品久久久久久无码 | 亚洲日本va午夜在线电影 | 国产精品久久久av久久久 | 99国产欧美久久久精品 | 99久久99久久免费精品蜜桃 | 欧美日韩一区二区综合 | 中文字幕久久久久人妻 | 男女下面进入的视频免费午夜 | 国产成人精品视频ⅴa片软件竹菊 | 久久久精品456亚洲影院 | 99re在线播放 | 久久久久99精品成人片 | 亚洲另类伦春色综合小说 | 成熟妇人a片免费看网站 | 亚洲日韩一区二区 | 久久久精品人妻久久影视 | 欧美第一黄网免费网站 | 扒开双腿吃奶呻吟做受视频 | 免费中文字幕日韩欧美 | 色情久久久av熟女人妻网站 | 少妇高潮喷潮久久久影院 | 欧美熟妇另类久久久久久多毛 | 久久97精品久久久久久久不卡 | 18精品久久久无码午夜福利 | 窝窝午夜理论片影院 | 99久久久无码国产精品免费 | 日日噜噜噜噜夜夜爽亚洲精品 | 色狠狠av一区二区三区 | 久久国产精品偷任你爽任你 | 国产精品久久久av久久久 | 国产亚洲美女精品久久久2020 | 欧洲熟妇色 欧美 | 国产极品美女高潮无套在线观看 | 亚洲精品欧美二区三区中文字幕 | 日韩欧美中文字幕在线三区 | 国产精品18久久久久久麻辣 | 国产绳艺sm调教室论坛 | 双乳奶水饱满少妇呻吟 | 成人综合网亚洲伊人 | 牲欲强的熟妇农村老妇女 | 最新国产麻豆aⅴ精品无码 | 亚洲国产精品一区二区美利坚 | 97久久精品无码一区二区 | 国产艳妇av在线观看果冻传媒 | 少妇被粗大的猛进出69影院 | 日韩精品无码免费一区二区三区 | 蜜桃av蜜臀av色欲av麻 999久久久国产精品消防器材 | 中文字幕av无码一区二区三区电影 | 女人和拘做爰正片视频 | 日韩精品久久久肉伦网站 | 久久久久成人精品免费播放动漫 | 国产真人无遮挡作爱免费视频 | 日韩无套无码精品 | 国产麻豆精品精东影业av网站 | 蜜桃av蜜臀av色欲av麻 999久久久国产精品消防器材 | 国内少妇偷人精品视频 | 国产成人无码午夜视频在线观看 | 久久精品国产亚洲精品 | 亚洲成a人片在线观看无码3d | 一二三四在线观看免费视频 | 国产精品久久久 | av人摸人人人澡人人超碰下载 | 无码国产色欲xxxxx视频 | 97精品人妻一区二区三区香蕉 | 久久精品国产99精品亚洲 | 中文字幕无线码 | 亚洲综合精品香蕉久久网 | 亚洲色无码一区二区三区 | 精品人妻人人做人人爽夜夜爽 | 激情人妻另类人妻伦 | 亚洲精品成人av在线 | 亚洲中文字幕成人无码 | 亚洲日本一区二区三区在线 | 国产午夜无码精品免费看 | 疯狂三人交性欧美 | 久久久久久av无码免费看大片 | 一本久道久久综合婷婷五月 | 久久综合香蕉国产蜜臀av | 国产亚洲日韩欧美另类第八页 | 久久亚洲国产成人精品性色 | 国产成人一区二区三区在线观看 | 狠狠cao日日穞夜夜穞av | 欧美日韩综合一区二区三区 | 久热国产vs视频在线观看 | 无码免费一区二区三区 | 亚洲小说图区综合在线 | 在线成人www免费观看视频 | 中文字幕精品av一区二区五区 | 桃花色综合影院 | 欧美乱妇无乱码大黄a片 | 国模大胆一区二区三区 | 亚洲 欧美 激情 小说 另类 | 欧美人与善在线com | 日本爽爽爽爽爽爽在线观看免 | 99久久99久久免费精品蜜桃 | 国产精品久久久久7777 | 亚洲熟妇色xxxxx欧美老妇 | 国产精品高潮呻吟av久久4虎 | 国语精品一区二区三区 | 狠狠噜狠狠狠狠丁香五月 | 亚洲精品www久久久 | 欧美人与牲动交xxxx | 黑人粗大猛烈进出高潮视频 | 理论片87福利理论电影 | 99久久久无码国产精品免费 | 国产成人无码区免费内射一片色欲 | 初尝人妻少妇中文字幕 | 亚洲一区av无码专区在线观看 | 亚洲国产欧美在线成人 | 午夜福利不卡在线视频 | 亚洲国产精品无码久久久久高潮 | 精品熟女少妇av免费观看 | 日韩精品一区二区av在线 | 亚洲熟悉妇女xxx妇女av | 女人被男人躁得好爽免费视频 | 人人妻人人澡人人爽人人精品浪潮 | 真人与拘做受免费视频一 | 人妻有码中文字幕在线 | 亚洲精品一区二区三区婷婷月 | 国产精品久久久久久无码 | 老司机亚洲精品影院无码 | 十八禁真人啪啪免费网站 | 国产日产欧产精品精品app | 亚洲综合伊人久久大杳蕉 | 日韩精品无码一区二区中文字幕 | 国精产品一区二区三区 | 东北女人啪啪对白 | 日日鲁鲁鲁夜夜爽爽狠狠 | 国产午夜无码视频在线观看 | 国产午夜无码视频在线观看 | 日韩av无码一区二区三区 | 曰本女人与公拘交酡免费视频 | 国产人妻久久精品二区三区老狼 | 大肉大捧一进一出视频出来呀 | 18精品久久久无码午夜福利 | 精品国产乱码久久久久乱码 | 极品尤物被啪到呻吟喷水 | 中文字幕 人妻熟女 | 午夜福利一区二区三区在线观看 | 国产精品久久久午夜夜伦鲁鲁 | 妺妺窝人体色www婷婷 | 亚洲熟熟妇xxxx | 少妇高潮一区二区三区99 | 国产午夜精品一区二区三区嫩草 | 国产在线一区二区三区四区五区 | 亚洲一区二区三区在线观看网站 | 婷婷五月综合缴情在线视频 | 成人无码精品一区二区三区 | 日日摸夜夜摸狠狠摸婷婷 | 精品国产一区二区三区四区在线看 | 国产人妻人伦精品1国产丝袜 | 日韩少妇内射免费播放 | 欧美日韩一区二区综合 | 欧美性黑人极品hd | 欧美成人午夜精品久久久 | 福利一区二区三区视频在线观看 | 国产激情综合五月久久 | 综合人妻久久一区二区精品 | 欧美激情内射喷水高潮 | 国产亚洲人成a在线v网站 | 中文亚洲成a人片在线观看 | 久久 国产 尿 小便 嘘嘘 | 久久亚洲a片com人成 | 久久久中文久久久无码 | 日韩av无码中文无码电影 | 久久久久亚洲精品男人的天堂 | 精品一二三区久久aaa片 | 国产免费无码一区二区视频 | 在线天堂新版最新版在线8 | 天堂а√在线地址中文在线 | 色窝窝无码一区二区三区色欲 | 欧美日韩一区二区三区自拍 | 亚洲熟熟妇xxxx | 国产精品怡红院永久免费 | 99久久无码一区人妻 | 国产成人久久精品流白浆 | 又黄又爽又色的视频 | 亚洲精品中文字幕乱码 | 我要看www免费看插插视频 | 成人无码影片精品久久久 | 亚洲精品一区三区三区在线观看 | 久久人人爽人人人人片 | 欧美三级a做爰在线观看 | 亚洲人成网站色7799 | 久久99热只有频精品8 | 男人的天堂2018无码 | 亚洲人成网站免费播放 | 秋霞成人午夜鲁丝一区二区三区 | 国产高清不卡无码视频 | 西西人体www44rt大胆高清 | 久久久中文字幕日本无吗 | 精品偷自拍另类在线观看 | 一本色道久久综合狠狠躁 | 久久国内精品自在自线 | 久久综合给合久久狠狠狠97色 | 日韩视频 中文字幕 视频一区 | 国产三级久久久精品麻豆三级 | 欧美国产日韩久久mv | 国产亚洲精品久久久久久久久动漫 | 久久久精品国产sm最大网站 | 中文无码精品a∨在线观看不卡 | 黑森林福利视频导航 | 久久午夜无码鲁丝片 | 国产明星裸体无码xxxx视频 | 久久久久免费看成人影片 | 精品亚洲成av人在线观看 | аⅴ资源天堂资源库在线 | 亚洲色www成人永久网址 | 牛和人交xxxx欧美 | 午夜精品久久久内射近拍高清 | 人妻熟女一区 | 丰满少妇高潮惨叫视频 | 成人一区二区免费视频 | 熟妇人妻激情偷爽文 | 女人被男人躁得好爽免费视频 | 久久久婷婷五月亚洲97号色 | 国产精品无码久久av | 欧美阿v高清资源不卡在线播放 | 国产性生大片免费观看性 | 国产深夜福利视频在线 | 无码国产乱人伦偷精品视频 | 久久久久久av无码免费看大片 | 国产三级精品三级男人的天堂 | 国产在线aaa片一区二区99 | 久热国产vs视频在线观看 | 性色av无码免费一区二区三区 | 日韩精品成人一区二区三区 | 日韩人妻无码中文字幕视频 | 强伦人妻一区二区三区视频18 | 欧美国产日韩久久mv | 久久成人a毛片免费观看网站 | 无人区乱码一区二区三区 | 四虎永久在线精品免费网址 | 国产无套粉嫩白浆在线 | 亚洲欧美中文字幕5发布 | 国产精品鲁鲁鲁 | 在线а√天堂中文官网 | 人人澡人人透人人爽 | 99久久99久久免费精品蜜桃 | 未满小14洗澡无码视频网站 | 国产午夜无码视频在线观看 | 亚洲日韩一区二区 | 国产sm调教视频在线观看 | 欧美刺激性大交 | 日本成熟视频免费视频 | 又大又硬又黄的免费视频 | 麻豆果冻传媒2021精品传媒一区下载 | 国产亚洲欧美在线专区 | 久久99精品久久久久久 | 噜噜噜亚洲色成人网站 | 中国女人内谢69xxxx | 日韩人妻无码一区二区三区久久99 | 亚洲精品综合一区二区三区在线 | 亚洲熟妇色xxxxx欧美老妇y | 亚洲日韩av一区二区三区四区 | 亚洲成av人影院在线观看 | 欧美放荡的少妇 | 亚洲精品国产品国语在线观看 | 成 人影片 免费观看 | 天堂а√在线地址中文在线 | 国产精品毛多多水多 | 欧洲美熟女乱又伦 | 国产午夜福利亚洲第一 | 欧美喷潮久久久xxxxx | 久久午夜夜伦鲁鲁片无码免费 | 美女黄网站人色视频免费国产 | 女人和拘做爰正片视频 | 久久国语露脸国产精品电影 | 国产97人人超碰caoprom | 国产情侣作爱视频免费观看 | 国产av一区二区精品久久凹凸 | 亚洲精品久久久久中文第一幕 | 久久无码中文字幕免费影院蜜桃 | 欧美成人午夜精品久久久 | 国产亚洲tv在线观看 | 精品无码国产自产拍在线观看蜜 | 人人澡人人妻人人爽人人蜜桃 | 国产精品资源一区二区 | 国产精品久久久午夜夜伦鲁鲁 | 国产精品国产自线拍免费软件 | 正在播放东北夫妻内射 | 欧美激情内射喷水高潮 | 婷婷色婷婷开心五月四房播播 | 77777熟女视频在线观看 а天堂中文在线官网 | 亚洲aⅴ无码成人网站国产app | 久久精品人人做人人综合 | 久久久精品欧美一区二区免费 | 国产av久久久久精东av | 久激情内射婷内射蜜桃人妖 | 国产美女极度色诱视频www | 麻花豆传媒剧国产免费mv在线 | 狂野欧美激情性xxxx | 精品无码成人片一区二区98 | 国内揄拍国内精品少妇国语 | 精品一区二区三区无码免费视频 | 亚洲高清偷拍一区二区三区 | 欧美真人作爱免费视频 | 亚洲精品一区二区三区大桥未久 | 亚洲精品国偷拍自产在线观看蜜桃 | 亚洲经典千人经典日产 | 夜精品a片一区二区三区无码白浆 | 国产真人无遮挡作爱免费视频 | 欧美三级a做爰在线观看 | 欧洲美熟女乱又伦 | 国产精品沙发午睡系列 | 无码吃奶揉捏奶头高潮视频 | 亚洲色偷偷男人的天堂 | 亚洲精品国产精品乱码不卡 | 国产午夜精品一区二区三区嫩草 | 亚洲 欧美 激情 小说 另类 | 在线观看国产午夜福利片 | 天天拍夜夜添久久精品大 | 动漫av网站免费观看 | 真人与拘做受免费视频 | 免费国产成人高清在线观看网站 | 国产精品福利视频导航 | 亚洲精品中文字幕 | 亚洲精品综合一区二区三区在线 | 少妇高潮一区二区三区99 | 激情内射亚州一区二区三区爱妻 | 久久99精品久久久久久 | 亚洲成av人影院在线观看 | 国产性生交xxxxx无码 | 国产美女精品一区二区三区 | 一本色道久久综合亚洲精品不卡 | 最新国产乱人伦偷精品免费网站 | 乱中年女人伦av三区 | 国产精品久久久午夜夜伦鲁鲁 | 亚洲欧美精品伊人久久 | 日韩视频 中文字幕 视频一区 | 精品少妇爆乳无码av无码专区 | 日日碰狠狠躁久久躁蜜桃 | 无码av岛国片在线播放 | 激情内射日本一区二区三区 | 久久久久久久人妻无码中文字幕爆 | 日日碰狠狠躁久久躁蜜桃 | 久久精品国产一区二区三区肥胖 | 久久久无码中文字幕久... | 四十如虎的丰满熟妇啪啪 | 亚洲va欧美va天堂v国产综合 | 妺妺窝人体色www婷婷 | 中文字幕日韩精品一区二区三区 |