Java倉(cāng)庫(kù)管理系統(tǒng)報(bào)告.doc
《Java倉(cāng)庫(kù)管理系統(tǒng)報(bào)告.doc》由會(huì)員分享,可在線閱讀,更多相關(guān)《Java倉(cāng)庫(kù)管理系統(tǒng)報(bào)告.doc(31頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
2016—2017學(xué)年第一學(xué)期期末考試 《面向?qū)ο蟪绦蛟O(shè)計(jì)(Java)*》 實(shí)踐考核項(xiàng)目設(shè)計(jì)說(shuō)明書(shū) 項(xiàng)目名稱: 倉(cāng)庫(kù)管理系統(tǒng) 專 業(yè): 計(jì)算機(jī)科學(xué)與技術(shù) 學(xué) 號(hào): 姓 名: 任課教師: 鞏晨靜 2016年12月3日 項(xiàng)目及要求 (一)考核內(nèi)容:Java應(yīng)用程序開(kāi)發(fā) (二)考核要求: 1. 設(shè)計(jì)開(kāi)發(fā)一個(gè)Java應(yīng)用程序,設(shè)計(jì)題目自擬; 2. 要求學(xué)生熟練運(yùn)用Java程序設(shè)計(jì)的基本知識(shí)和技能; 3. 要求學(xué)生掌握面向?qū)ο蟪绦蜷_(kāi)發(fā)的基本思路和方法,熟悉軟件開(kāi)發(fā)過(guò)程; 4. 要求學(xué)生利用面向?qū)ο蟮木幊趟枷胍约敖M件開(kāi)發(fā)原理來(lái)完成系統(tǒng)的設(shè)計(jì); 5. 要求學(xué)生利用所學(xué)的基本知識(shí)和技能,進(jìn)行應(yīng)用程序設(shè)計(jì),并體現(xiàn)自己的創(chuàng)新; 6. 要求學(xué)生獨(dú)立完成,嚴(yán)禁拷貝與抄襲; 7. 按照軟件工程的思想,完成項(xiàng)目的需求分析、項(xiàng)目的功能框架、用戶界面的設(shè)計(jì)、各功能模塊的調(diào)試和運(yùn)行等工作; 8. 重視設(shè)計(jì)說(shuō)明書(shū)文檔的書(shū)寫。 9. 上交要求。要求學(xué)生上交設(shè)計(jì)說(shuō)明書(shū)一份(Word格式)電子及打印文檔(A4紙)各一份,源程序打包上傳BB平臺(tái)。 目錄 第一章 項(xiàng)目選題說(shuō)明 1 第二章 項(xiàng)目需求分析 2 第三章 系統(tǒng)設(shè)計(jì) 2 3.1 設(shè)計(jì)思想 2 3.2程序總體設(shè)計(jì) 3 3.3程序詳細(xì)設(shè)計(jì) 4 3.4 數(shù)據(jù)庫(kù)的總體設(shè)計(jì): 7 第四章 系統(tǒng)測(cè)試及實(shí)現(xiàn) 10 第五章 總結(jié) 13 附錄 : 15 倉(cāng)庫(kù)管理系統(tǒng)設(shè)計(jì)說(shuō)明書(shū) 第一章 項(xiàng)目選題說(shuō)明 管理信息系統(tǒng)(MIS)的應(yīng)用已深入到社會(huì)的各行各業(yè),它是信息、軟件與科學(xué)管理相結(jié)合的產(chǎn)物。MIS的開(kāi)發(fā)過(guò)程不僅是一個(gè)編寫應(yīng)用程序的過(guò)程,而且是一個(gè)以軟件工程的思想為指導(dǎo),從可行性研究開(kāi)始,經(jīng)過(guò)系統(tǒng)分析、系統(tǒng)設(shè)計(jì)、系統(tǒng)實(shí)施到等主要階段的規(guī)范開(kāi)發(fā)過(guò)程。 我們實(shí)現(xiàn)的是網(wǎng)絡(luò)數(shù)據(jù)庫(kù)管理系統(tǒng),我們選擇的是倉(cāng)庫(kù)管理系統(tǒng),倉(cāng)庫(kù)作為一種資源的集散地,在企業(yè)的整個(gè)供應(yīng)鏈中起著至關(guān)重要的作用,如果不能保證正確的庫(kù)存控制及發(fā)貨,將會(huì)導(dǎo)致管理費(fèi)用的增加,服務(wù)質(zhì)量難以得到保證,從而影響企業(yè)的競(jìng)爭(zhēng)力,傳統(tǒng)簡(jiǎn)單的,靜態(tài)管理已經(jīng)無(wú)法保證企業(yè)各種資源的搞笑利用。如今的倉(cāng)庫(kù)作業(yè)和庫(kù)存控制作業(yè)已經(jīng)十分復(fù)雜多樣化,僅靠人工記憶和手工錄入,不但費(fèi)時(shí)費(fèi)力,而且容易出錯(cuò),給企業(yè)帶來(lái)巨大的損失。所以要實(shí)施先進(jìn)的自動(dòng)化系統(tǒng),實(shí)現(xiàn)企業(yè)內(nèi)部的信息管理,共享交流,才能讓企業(yè)在競(jìng)爭(zhēng)激烈的21世紀(jì)取得先機(jī)。倉(cāng)庫(kù)管理系統(tǒng)就是對(duì)貨物和信息及金錢進(jìn)行規(guī)劃和實(shí)行交流控制。它將入庫(kù)、出庫(kù)、庫(kù)存形成一個(gè)統(tǒng)一的中體,使企業(yè)處于全面受控狀態(tài),壓縮投資規(guī)模,加快資金周轉(zhuǎn)。在實(shí)時(shí)反映的基礎(chǔ)上,修正企業(yè)在日常生產(chǎn)經(jīng)營(yíng)過(guò)程中各個(gè)環(huán)節(jié)上的偏差,降低產(chǎn)品成本和貨物的積壓。 倉(cāng)庫(kù)管理系統(tǒng)是通過(guò)入庫(kù)業(yè)務(wù)、出庫(kù)業(yè)務(wù)、實(shí)時(shí)庫(kù)存管理等功能綜合運(yùn)用的管理系統(tǒng),對(duì)貨物全程進(jìn)行有效的控制和跟蹤,實(shí)現(xiàn)完善的企業(yè)倉(cāng)庫(kù)信息管理。倉(cāng)庫(kù)管理系統(tǒng)的投入,將使倉(cāng)庫(kù)的管理更加正規(guī)化,為產(chǎn)品的出入庫(kù)管理部門和銷售部門提供了方便,降低了倉(cāng)庫(kù)的損耗。企業(yè)可以通過(guò)該系統(tǒng)對(duì)售出的產(chǎn)品進(jìn)行跟蹤服務(wù),同時(shí)避免可過(guò)去銷售人員按以往慣例親自前往用戶處去核實(shí)貨物情況的麻煩,提高了辦事小效率,節(jié)省了費(fèi)用,而且還避免了不必要的業(yè)務(wù)糾紛,維護(hù)了企業(yè)長(zhǎng)期與用戶建立的良好信譽(yù)。 第二章 項(xiàng)目需求分析 我們?cè)O(shè)計(jì)的倉(cāng)庫(kù)管理系統(tǒng)主要用于對(duì)倉(cāng)庫(kù)日常工作的管理,主要任務(wù)是倉(cāng)庫(kù)的各種信息進(jìn)行日常管理,如查詢、修改、增加、刪除等。本系統(tǒng)實(shí)現(xiàn)了倉(cāng)庫(kù)的信息化管理,完成了倉(cāng)庫(kù)管理系統(tǒng)的基本功能。 該系統(tǒng)主要包括用戶登錄系統(tǒng)、出入庫(kù)管理系統(tǒng)和庫(kù)存管理系統(tǒng)三個(gè)部分,各部分主要功能如下: (1) 用戶登錄系統(tǒng):用于系統(tǒng)的登錄 (2) 出入庫(kù)管理系統(tǒng):用于產(chǎn)品信息的管理,如新增,修改。 (3) 庫(kù)存管理系統(tǒng):用于數(shù)據(jù)庫(kù)的連接,對(duì)庫(kù)內(nèi)產(chǎn)品的信息查詢,實(shí)現(xiàn)按需求查詢。 第三章 系統(tǒng)設(shè)計(jì) 3.1 設(shè)計(jì)思想 (1)系統(tǒng)分成兩個(gè)主要的模塊,出入庫(kù)管理和庫(kù)存管理 (2)分層的模塊化程序設(shè)計(jì)思想,整個(gè)系統(tǒng)采用模塊化結(jié)構(gòu)設(shè)計(jì)。作為應(yīng)用程序有較強(qiáng)的可操作性和擴(kuò)展性。 (3)合理的數(shù)據(jù)流設(shè)計(jì),在應(yīng)用系統(tǒng)設(shè)計(jì)中,相對(duì)獨(dú)立的模塊間以數(shù)據(jù)流相互連接,使各模塊間的耦合性較低,方便系統(tǒng)運(yùn)行,提高系統(tǒng)安全性。 3.2程序總體設(shè)計(jì) 倉(cāng)庫(kù)管理系統(tǒng) 用戶登錄 倉(cāng)庫(kù)基本信息 圖3.1 倉(cāng)庫(kù)管理系統(tǒng)功能結(jié)構(gòu)圖 用戶登錄 管理員登錄系統(tǒng) 圖3.2 管理員登錄功能結(jié)構(gòu)圖 倉(cāng)庫(kù)基本信息 新品入庫(kù) 庫(kù)存增減 庫(kù)存數(shù)據(jù) 按需查詢 圖3.3倉(cāng)庫(kù)基本功能結(jié)構(gòu)圖 3.3程序詳細(xì)設(shè)計(jì) 管理員登錄主體代碼: public class DengLu extends JFrame implements ActionListener,MouseListener{ JPanel pnlMain; JLabel lbltupian,lblyonghu,lblmima,lblbiaoti; JTextField txtUserName;//文本框 JPasswordField pwdPassWord;//密碼框 JButton DengLu,TuiChu;//主鍵 Dimension deSize; Toolkit toolkit=Toolkit.getDefaultToolkit(); public DengLu (){ super("倉(cāng)庫(kù)管理系統(tǒng)"); pnlMain=new JPanel();//主面板 pnlMain.setLayout(null);//空布局 this.setUndecorated(true); lbltupian=new JLabel(new ImageIcon("images/tupian.jpg"));//添加圖片 lbltupian.setBounds(0, 0, 708,366); lblyonghu=new JLabel("用戶名:"); lblyonghu.setBounds(450,50,90, 20); lblmima=new JLabel("密 碼:"); lblmima.setBounds(450,100,90, 20); txtUserName=new JTextField(100); txtUserName.setBounds(500,50,150, 20); pwdPassWord=new JPasswordField(100); pwdPassWord.setBounds(500,100,150, 20); DengLu=new JButton("登錄"); DengLu.setBounds(450,140,90, 30); DengLu.addActionListener(this);//增加監(jiān)聽(tīng)器 TuiChu=new JButton("退出"); TuiChu.setBounds(560,140,90, 30); TuiChu.setMnemonic(d);//設(shè)置快捷按鈕 TuiChu.addActionListener(this); //字體 Font font=new Font("宋體", Font.PLAIN, 13); lblyonghu.setFont(font); lblmima.setFont(font); DengLu.setFont(font); TuiChu.setFont(font); //顏色 DengLu.setBackground(Color.CYAN); TuiChu.setBackground(Color.CYAN); pnlMain.add(lblyonghu); pnlMain.add(txtUserName); pnlMain.add(lblmima); pnlMain.add(pwdPassWord); pnlMain.add(DengLu); pnlMain.add(TuiChu); pnlMain.add(lbltupian); this.setContentPane(pnlMain); this.setVisible(true); deSize=toolkit.getScreenSize(); //獲取屏幕的大小 this.setSize(708,366); this.setLocation(deSize.width/2-this.getWidth()/2, deSize.height/2-this.getHeight()/2); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public static void main(String[] args) { new DengLu(); } @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub if(e.getSource()==DengLu) { if((txtUserName.getText().equals("20150200121"))&&(pwdPassWord.getText().equals("960523"))) { new ZhuJieMian(); this.dispose();} else JOptionPane.showMessageDialog(null, "用戶名或密碼錯(cuò)誤,請(qǐng)重新輸入"); } if(e.getSource()==TuiChu)System.exit(0); } 3.4 數(shù)據(jù)庫(kù)的總體設(shè)計(jì): 數(shù)據(jù)庫(kù)中總體有一張表,是管理產(chǎn)品信息的,具體結(jié)構(gòu)如下圖所示: 設(shè)計(jì)表如下圖3.1所示: 圖3.1 數(shù)據(jù)庫(kù)的設(shè)計(jì)表 圖3.2 數(shù)據(jù)庫(kù)表的內(nèi)容(部分) 連接數(shù)據(jù)庫(kù)的代碼如下: public Connection openDB(){ try { Class.forName("com.mysql.jdbc.Driver"); Connection cn=DriverManager.getConnection("jdbc:mysql://localhost:3306/student","root" , "960914"); return cn; } catch (ClassNotFoundException e) { System.out.println("驅(qū)動(dòng)加載異常!"); return null; } catch (SQLException e) { System.out.println("數(shù)據(jù)庫(kù)連接異常!"); return null; } } @Override public void actionPerformed(ActionEvent e) { if(e.getSource()==btnExit)this.dispose(); if(e.getSource()==btnchaxun) { try{ // 獲得連接 Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/student","root" , "960914"); // 建立查詢條件 String sql = "select * from kucun where bianhao="+txtPassWord.getText()+""; PreparedStatement pstm = conn.prepareStatement(sql); // 執(zhí)行查詢 ResultSet rs = pstm.executeQuery(); // 計(jì)算有多少條記錄 int count = 0; while(rs.next()){ count++; } rs = pstm.executeQuery(); // 將查詢獲得的記錄數(shù)據(jù),轉(zhuǎn)換成適合生成JTable的數(shù)據(jù)形式 Object[][] info = new Object[count][6]; count = 0; while(rs.next()){ info[count][0] = rs.getString("bianhao"); info[count][1] = rs.getString("chanpinname"); info[count][2] = rs.getString("xinghao"); info[count][3] = rs.getString("dengji"); info[count][4] = rs.getString("shuliang"); info[count][5] = rs.getString("danjia"); count++; } // 定義表頭 String[] title = {"編號(hào)","產(chǎn)品名","型號(hào)","等級(jí)","數(shù)量","單價(jià)"}; // 創(chuàng)建JTable this.tabDemo = new JTable(info,title); // 顯示表頭 this.jth = this.tabDemo.getTableHeader(); // 將JTable加入到帶滾動(dòng)條的面板中 this.scpDemo.getViewport().add(tabDemo); }catch(ClassNotFoundException cnfe){ JOptionPane.showMessageDialog(null,"數(shù)據(jù)源錯(cuò)誤","錯(cuò)誤",JOptionPane.ERROR_MESSAGE); }catch(SQLException sqle){ JOptionPane.showMessageDialog(null,"數(shù)據(jù)操作錯(cuò)誤","錯(cuò)誤",JOptionPane.ERROR_MESSAGE); } } } 第四章 系統(tǒng)測(cè)試及實(shí)現(xiàn) (一)登錄界面,管理員進(jìn)行登錄操作。如圖4.1所示: 圖4.1 登錄界面 (二)主界面,管理員通過(guò)該界面進(jìn)入出入庫(kù)管理和庫(kù)存查詢。如圖4.2所示: 圖4.2 系統(tǒng)主界面 (三)出入庫(kù)界面新增產(chǎn)品,點(diǎn)擊新入按鈕,將新產(chǎn)品信息輸入后,點(diǎn)擊確定,將新產(chǎn)品信息添加到數(shù)據(jù)庫(kù)中圖4.3所示:。如 圖4.3 新增產(chǎn)品 (四)出入庫(kù)管理界面,點(diǎn)擊增減按鈕,在編號(hào)欄輸入編號(hào),即可修改該產(chǎn)品的數(shù)量信息。如圖4.4所示: 圖4.4 增減庫(kù)存 (五)庫(kù)存管理界面,點(diǎn)擊顯示數(shù)據(jù)查看當(dāng)前倉(cāng)庫(kù)存儲(chǔ)產(chǎn)品的信息。如圖4.5所示: 圖4.5 查詢庫(kù)存信息 (六)庫(kù)存管理界面,在文本框輸入要查詢產(chǎn)品的編號(hào)后,點(diǎn)擊查詢按鈕,出現(xiàn)該產(chǎn)品的基本信息。如圖4.6所示: 圖4.6 按需查詢信息 第五章 總結(jié) 經(jīng)過(guò)這學(xué)期的學(xué)習(xí),在努力了幾周之后,終于將Java倉(cāng)庫(kù)管理系統(tǒng)做了出來(lái),雖然與想象中的程序還有一定的差距,但我還是很開(kāi)心能夠獨(dú)立的將它完成,在這過(guò)程中,自己學(xué)到了很多,也感觸到很多。Java是本學(xué)期新開(kāi)的一門課程,在學(xué)習(xí)過(guò)程中對(duì)其的感觸并不是很深刻,但是在這兩周內(nèi),對(duì)其有了更加深刻的認(rèn)識(shí)。平常在課堂的學(xué)習(xí)中都是跟著老師的腳步來(lái)敲代碼,對(duì)代碼的理解認(rèn)識(shí)都很淺,但在自己構(gòu)思自己動(dòng)手的過(guò)程中,了解到了自己的不足,讓我明白了Java的學(xué)習(xí)是一個(gè)反復(fù)的過(guò)程,不斷的出現(xiàn)錯(cuò)誤,不斷的找到錯(cuò)誤,然后查閱資料、調(diào)試,最終讓其能夠成功的運(yùn)行。通過(guò)這幾個(gè)周的努力,倉(cāng)庫(kù)管理系統(tǒng)設(shè)計(jì)完成,實(shí)現(xiàn)了系統(tǒng)的基本功能。在這個(gè)過(guò)程中,主要完成了數(shù)據(jù)庫(kù)的設(shè)計(jì)和系統(tǒng)功能的實(shí)現(xiàn)。通過(guò)該系統(tǒng)可以方便快捷的實(shí)現(xiàn)倉(cāng)庫(kù)管理中的貨物登記、出庫(kù)入庫(kù)、貨物盤點(diǎn)等工作,使企業(yè)的倉(cāng)庫(kù)管理井井有條,為企業(yè)的健康發(fā)展創(chuàng)造良好的條件。并且在這個(gè)過(guò)程中,我對(duì)java程序設(shè)計(jì)有了進(jìn)一步的認(rèn)識(shí),這并不是一件簡(jiǎn)簡(jiǎn)單單的事情,從最初的設(shè)計(jì)構(gòu)思開(kāi)始,每一步都需要自己的親歷親為,首先要做的就是通過(guò)調(diào)查了解分析問(wèn)題,對(duì)于接受的任務(wù)要進(jìn)行認(rèn)真的分析,不能憑自己的客觀想象進(jìn)行設(shè)計(jì),分析最后應(yīng)達(dá)到的目標(biāo),完成實(shí)際問(wèn)題,否則做出來(lái)的程序?qū)](méi)有實(shí)際運(yùn)用的價(jià)值。然后進(jìn)行算法的設(shè)計(jì)。之后便要開(kāi)始編程,將算法翻譯成計(jì)算機(jī)語(yǔ)言。最后將程序運(yùn)行,分析結(jié)果,對(duì)程序進(jìn)行調(diào)試。 這次的編程,是第一次獨(dú)立的進(jìn)行完整設(shè)計(jì)的過(guò)程,在過(guò)程中遇到了很多的問(wèn)題,最終的程序與最初的設(shè)計(jì)有很大的不同,因?yàn)榻?jīng)常會(huì)發(fā)現(xiàn)最初的設(shè)想并不適用,所以經(jīng)過(guò)了幾次大的改動(dòng),所以我認(rèn)識(shí)到,Java程序并不是一步完成的,往往需要不斷的調(diào)試,不斷的改進(jìn)。在這過(guò)程中也經(jīng)常會(huì)遇到困難,但是在同學(xué)老師和網(wǎng)絡(luò)的幫助下,最終也一一的將其克服,但在今后的日子里還是需要不斷的學(xué)習(xí)新知識(shí)。有時(shí)候會(huì)忙到凌晨一二點(diǎn),看著周圍只有屏幕的亮光,雖然真的是很辛苦吧,但是很快樂(lè),當(dāng)自己能敲出的代碼,即使做出的是做簡(jiǎn)單的東西,可看著它從一個(gè)個(gè)代碼變成了程序,心里的那種喜悅感和成就感依舊是那么強(qiáng)烈。 附錄 : 部分重要代碼如下: 管理員登錄: import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; public class DengLu extends JFrame implements ActionListener,MouseListener{ JPanel pnlMain; JLabel lbltupian,lblyonghu,lblmima,lblbiaoti; JTextField txtUserName;//文本框 JPasswordField pwdPassWord;//密碼框 JButton DengLu,TuiChu;//主鍵 Dimension deSize; Toolkit toolkit=Toolkit.getDefaultToolkit(); public DengLu (){ super("倉(cāng)庫(kù)管理系統(tǒng)"); pnlMain=new JPanel();//主面板 pnlMain.setLayout(null); this.setUndecorated(true); lbltupian=new JLabel(new ImageIcon("images/tupian.jpg")); lbltupian.setBounds(0, 0, 708,366); lblyonghu=new JLabel("用戶名:"); lblyonghu.setBounds(450,50,90, 20); lblmima=new JLabel("密 碼:"); lblmima.setBounds(450,100,90, 20); txtUserName=new JTextField(100); txtUserName.setBounds(500,50,150, 20); pwdPassWord=new JPasswordField(100); pwdPassWord.setBounds(500,100,150, 20); DengLu=new JButton("登錄"); DengLu.setBounds(450,140,90, 30); DengLu.addActionListener(this); TuiChu=new JButton("退出"); TuiChu.setBounds(560,140,90, 30); TuiChu.setMnemonic(d);//設(shè)置快捷按鈕 TuiChu.addActionListener(this); //字體 Font font=new Font("宋體", Font.PLAIN, 13); lblyonghu.setFont(font); lblmima.setFont(font); DengLu.setFont(font); TuiChu.setFont(font); //顏色 DengLu.setBackground(Color.CYAN); TuiChu.setBackground(Color.CYAN); pnlMain.add(lblyonghu); pnlMain.add(txtUserName); pnlMain.add(lblmima); pnlMain.add(pwdPassWord); pnlMain.add(DengLu); pnlMain.add(TuiChu); pnlMain.add(lbltupian); this.setContentPane(pnlMain); this.setVisible(true); deSize=toolkit.getScreenSize(); //獲取屏幕的大小 this.setSize(708,366); this.setLocation(deSize.width/2-this.getWidth()/2, deSize.height/2-this.getHeight()/2); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public static void main(String[] args) { new DengLu(); } @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub if(e.getSource()==DengLu) { if((txtUserName.getText().equals("20150200121"))&&(pwdPassWord.getText().equals("960914"))) { //JOptionPane.showMessageDialog(null, "用戶名和密碼正確,歡迎登陸"); new ZhuJieMian(); this.dispose();} else JOptionPane.showMessageDialog(null, "用戶名或密碼錯(cuò)誤,請(qǐng)重新輸入"); } if(e.getSource()==TuiChu)System.exit(0); } @Override public void mouseClicked(MouseEvent e) { // TODO Auto-generated method stub } @Override public void mouseEntered(MouseEvent e) { // TODO Auto-generated method stub } @Override public void mouseExited(MouseEvent e) { // TODO Auto-generated method stub } @Override public void mousePressed(MouseEvent e) { // TODO Auto-generated method stub } @Override public void mouseReleased(MouseEvent e) { // TODO Auto-generated method stub } } 連接數(shù)據(jù)庫(kù)并進(jìn)行修改添加: package lsg; import javax.swing.JFrame; import javax.swing.JOptionPane; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.sql.*; 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 javax.swing.*; public class RuKu extends JFrame implements ActionListener{ JPanel pnlMain,pnlxin,pnltian; JButton xinzeng,tianjia,guanbi,queding,tuichu,queding2; JLabel biaoti1,chanpinming,bianhao,xinghao,dengji,shuliang,danjia; JLabel biaoti2,chanpinming2,bianhao2,xinghao2,dengji2,shuliang2,danjia2; JTextField chan,bian,xing,deng,shu,dan; JTextField chan2,bian2,xing2,deng2,shu2,dan2; ResultSet rs; Dimension deSize; Toolkit toolkit=Toolkit.getDefaultToolkit(); public RuKu() { super("入庫(kù)"); deSize=toolkit.getScreenSize(); pnlMain=new JPanel(); pnlMain.setLayout(null);//空布局 pnltian=new JPanel(); pnltian.setLayout(null); pnlxin=new JPanel(); pnlxin.setLayout(null); xinzeng=new JButton("新入"); xinzeng.setBounds(0,0, 200, 50); xinzeng.addActionListener(this); tianjia=new JButton("增減"); tianjia.setBounds(210, 0, 200, 50); tianjia.addActionListener(this); guanbi=new JButton("關(guān)閉"); guanbi.setBounds(420, 0, 200, 50); guanbi.addActionListener(this); queding=new JButton("確定"); queding.setBounds(350, 300, 200, 50); queding.addActionListener(this); tuichu=new JButton("清空"); tuichu.setBounds(570, 300, 200, 50); tuichu.addActionListener(this); queding2=new JButton("確定"); queding2.setBounds(350, 350, 200, 50); queding2.setBackground(Color.GREEN); queding2.addActionListener(this); biaoti1=new JLabel("請(qǐng)輸入新增產(chǎn)品的信息"); biaoti1.setBounds(450, 10, 200, 30); chanpinming=new JLabel("產(chǎn)品名"); chanpinming.setBounds(350, 50, 50, 30); chan=new JTextField(17); chan.setBounds(450, 50, 300, 30); bianhao=new JLabel("編碼"); bianhao.setBounds(350,90, 50, 30); bian=new JTextField(17); bian.setBounds(450,90, 300, 30); xinghao=new JLabel("型 號(hào)"); xinghao.setBounds(350,130, 50, 30); xing=new JTextField(17); xing.setBounds(450,130, 300, 30); dengji=new JLabel("等 級(jí)"); dengji.setBounds(350,170, 50, 30); deng=new JTextField(17); deng.setBounds(450,170, 300, 30); shuliang=new JLabel("數(shù) 量"); shuliang.setBounds(350,210, 50, 30); shu=new JTextField(17); shu.setBounds(450,210, 300, 30); danjia=new JLabel("單 價(jià)"); danjia.setBounds(350,250, 50, 30); dan=new JTextField(17); dan.setBounds(450,250, 300, 30); bianhao2=new JLabel("編碼"); bianhao2.setBounds(350, 50, 50, 30); bian2=new JTextField(17); bian2.setBounds(450, 50, 300, 30); shuliang2=new JLabel("數(shù) 量"); shuliang2.setBounds(350,210, 50, 30); shu2=new JTextField(17); shu2.setBounds(450,210, 300, 30); pnlxin.add(biaoti1); pnlxin.add(chanpinming); pnlxin.add(bianhao); pnlxin.add(xinghao); pnlxin.add(dengji); pnlxin.add(shuliang); pnlxin.add(danjia); pnlxin.add(chan); pnlxin.add(bian); pnlxin.add(xing); pnlxin.add(deng); pnlxin.add(shu); pnlxin.add(dan); pnlxin.add(queding); pnlxin.add(tuichu); pnltian.add(bianhao2); pnltian.add(shuliang2); pnltian.add(bian2); pnltian.add(shu2); pnltian.add(queding2); pnlMain.add(xinzeng); pnlMain.add(tianjia); pnlMain.add(guanbi); pnlMain.add(pnlxin); pnlMain.add(pnltian); this.setContentPane(pnlMain); this.setSize(deSize.width-320,deSize.height-275); this.setLocation(310, 232); this.setUndecorated(true);//無(wú)邊化:必須在setVisible之前使用 this.setVisible(true);//可視 } public static void main(String[] args) { RuKu mu=new RuKu(); mu.getUser(); } @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub if(e.getSource()==xinzeng) {pnlxin.setBounds(10, 70, 1030, 400); pnltian.setSize(0, 0); } if(e.getSource()==tianjia) {pnltian.setBounds(10, 70, 1030, 400); pnlxin.setSize(0, 0); } if(e.getSource()==guanbi)this.dispose(); if(e.getSource()==queding){ insertUser();} if(e.getSource()==queding2){updateUser();} } public Connection openDB(){ try { Class.forName("com.mysql.jdbc.Driver"); Connection cn=DriverManager.getConnection("jdbc:mysql://localhost:3306/student","root" , "960914"); return cn; } catch (ClassNotFoundException e) { System.out.println("驅(qū)動(dòng)加載異常!"); return null; } catch (SQLException e) { System.out.println("數(shù)據(jù)庫(kù)連接異常!"); return null; } } public void getUser(){ try { Statement stmt=openDB().createStatement(); rs=stmt.executeQuery("select bianhao,shuliang from kucun"); } catch (SQLException e) { JOptionPane.showMessageDialog(null,"用戶信息獲取失敗"); } } private void insertUser() { // TODO Auto-generated method stub try { PreparedStatement psm=openDB().prepareStatement("insert into kucun(bianhao,chanpinname,xinghao,dengji,shuliang,danjia) values(?,?,?,?,?,?)"); psm.setString(1,bian.getText()); psm.setString(2,chan.getText()); psm.setString(3,xing.getText()); psm.setString(4,deng.getText()); psm.setString(5,shu.getText()); psm.setString(6,dan.getText()); psm.executeUpdate(); JOptionPane.showMessageDialog(null, "用戶添加成功"); psm.close(); } catch (SQLException e) { // TODO Auto-generated catch block JOptionPane.showMessageDialog(null, "用戶添加失敗"); } } private void updateUser() { // TODO Auto-generated method stub System.out.println("aaaa"); try { Statement sm=openDB().createStatement(); String strupdate="update kucun set shuliang="+shu2.getText()+" where bianhao="+bian2.getText()+""; sm.execute(strupdate); JOptionPane.showMessageDialog(null, "用戶修改成功"); sm.close(); } catch (SQLException e) { // TODO Auto-generated catch block JOptionPane.showMessageDialog(null, "用戶更新失敗"); } } } 2016-2017學(xué)年度第一學(xué)期期末考試 《面向?qū)ο蟪绦蛟O(shè)計(jì)(Java)*》實(shí)踐考核成績(jī)報(bào)告單 排課編號(hào):(2016-2017-1)-B080204-00159-1 批閱日期: 年 月 日 姓名 班級(jí) 學(xué)號(hào) 評(píng)價(jià)項(xiàng)目 評(píng)分標(biāo)準(zhǔn) 分值 得分 備注 設(shè)計(jì)說(shuō)明書(shū)書(shū)寫情況 設(shè)計(jì)說(shuō)明書(shū)內(nèi)容正確、文筆流暢、概念清晰,能準(zhǔn)確表達(dá)課程設(shè)計(jì)的主要內(nèi)容20分 20 系統(tǒng)功能完成情況,至少實(shí)現(xiàn)二個(gè)完整流暢功能 未完成二個(gè)完整功能,運(yùn)行有誤,每處扣5-10分。 20 代碼規(guī)范程度 注釋使用不當(dāng),代碼縮進(jìn)等問(wèn)題,酌情扣分 10 事件處理代碼的完善程度 對(duì)系統(tǒng)運(yùn)行中出現(xiàn)的問(wèn)題,酌情扣分 10 異常代碼是否進(jìn)行異常處理 運(yùn)行存在異常錯(cuò)誤每處扣1-2分 10 圖形用戶界面美觀程度 界面美觀、組件布局合理20分 20 作業(yè)的創(chuàng)新方面 根據(jù)作品創(chuàng)新程度,酌情扣分 10 合計(jì) 100 考核成績(jī) 任課教師簽字 復(fù)核人簽字- 1.請(qǐng)仔細(xì)閱讀文檔,確保文檔完整性,對(duì)于不預(yù)覽、不比對(duì)內(nèi)容而直接下載帶來(lái)的問(wèn)題本站不予受理。
- 2.下載的文檔,不會(huì)出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請(qǐng)點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
9.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁(yè)顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開(kāi)word文檔。
- 特殊限制:
部分文檔作品中含有的國(guó)旗、國(guó)徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對(duì)作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- Java 倉(cāng)庫(kù) 管理 系統(tǒng) 報(bào)告
鏈接地址:http://www.820124.com/p-8884471.html