版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、 JAVA程序設計課程設計報告 設計題目:商場庫存管理系統(tǒng)設計與實現(xiàn) 學院名稱: 信息工程學院 專業(yè)班級: 13計本2 姓 名: 劉 飛 學 號: 1312210243 目錄一 需求分析。3二 概要設計。32.1概要設計原則。32.2將用戶模塊需求化。32.3最終確定。3三 系統(tǒng)主要功能模塊設計。43.1 登錄流程。63.2.數(shù)據(jù)庫管理。8四 數(shù)據(jù)庫文件。10 五程序的主要界面及程序代碼。155.1.用戶登錄界面。155.2商品信息管理界面。165.2.1查找界面。175.2.2添加界面。175.2.3刪除界面。185.2.1修改界面。18六 總結。19參考資料:17一 需求分析本系統(tǒng)的主要目
2、的就是實現(xiàn)商品信息管理,使商品信息管理工作更加容易,從而提高工作效率,降低管理成本. 系統(tǒng)中需要對商品價格,數(shù)量進行管理,及庫存量等。.二 概要設計/*概要設計階段主要是粗略描述整個軟件的框架,并從業(yè)務的角度描述軟件的模塊、工作流程等。項目的成功取決于設計的好壞,而概要設計則是整個設計的關鍵部分。概要設計的主要任務是將用戶的需求劃分為不同的功能,然后將這些功能細分成模塊,并給模塊一些規(guī)則約束,以達到各個模塊之間可以相互交流的目的。概要設計關乎到系統(tǒng)的整體架構,因此想做好一個概要設計,不僅僅要熟悉用戶的業(yè)務流程,還要具備相當豐富的設計經(jīng)驗。2.1 概要設計的原則概要設計是根據(jù)系統(tǒng)分析的需求和工作
3、環(huán)境的情況對整個軟件的總體結構進行大致的設計。概要設計要堅持以下幾個原則。(1)細分原則:軟件系統(tǒng)都是由很多不同的模塊組成,當設計一套軟件時,要先將所有的功能分解。解決復雜問題的方法是將其分解成幾個小問題,一個個來解決。(2)提高代碼重用性:在面向對象設計中,首先考慮的就是代碼的重用,一個好的設計,將來在升級換代時不需要太大的改動,節(jié)省了人力物力。(3)從上而下層層分析:概要設計要從整體出發(fā),逐個剖析軟件的功能,從上而下,先分析系統(tǒng)總的功能,然后一步步細分,直到最小的功能模塊。(4)一致性原則:概要設計要求所有功能模塊在定義時使用統(tǒng)一的規(guī)范。(5)提高獨立性,減少耦合:各個模塊與模塊之間盡量減
4、少關聯(lián),否則修改一個地方就會引起其他多處的變動,不符合面向對象的原則。一般情況下,對類封裝后,只允許對類進行擴展,而不能修改,而封裝的類必須具有單一職責,既理論情況下不允許兩個類共同完成一個功能。(6)模塊的大小要盡量適中:不是結構算法越復雜的模塊越好,模塊的大小要根據(jù)實際工作目標和其他類的耦合緊密程度來決定。經(jīng)驗表明,一個模塊的規(guī)模不應過大,模塊的總行數(shù)應控制在10100行的范圍內(nèi),最好為3060行,這樣理解和閱讀都較方便。過長的模塊往往是分解不充分的表現(xiàn),會增加閱讀理解的難度;但小規(guī)模太多也會使模塊之間聯(lián)系變得復雜,增大系統(tǒng)在模塊調(diào)用時傳遞信息所花費的開銷。由于概要設計是整個設計的重中之重
5、,牽一發(fā)而動全身,所以要努力做一個好的概要設計,才能在今后軟件開發(fā)過程中不再反復。現(xiàn)在軟件行業(yè)流行模式化驅動設計,將一些市場上比較成功的模式拿來用在自己的設計中。2.2 將用戶需求模塊化根據(jù)概要設計的原則來分析一下本項目的用戶需求,并最終轉化成用程序語言描述的模塊。什么樣的需求才是一個模塊?模塊應該具備如下3個特征。(1)輸入和輸出:模塊必須能被調(diào)用并且正確的返回調(diào)用,而且調(diào)用都是相對一個對象而言,這是模塊獨立性的一個體現(xiàn)。(2)處理功能:模塊必須可以對調(diào)用的輸入數(shù)據(jù)進行靈活的處理,并為輸出準備好處理結果。(3)程序代碼:用來實現(xiàn)模塊功能的源代碼。2.3 確定系統(tǒng)最終模塊概要設計中最重要的就是
6、確定此項目包括哪些模塊。根據(jù)上兩節(jié)講述的設計原則和模塊特征,將用戶需求轉化為下面的模塊。/*三, 系統(tǒng)主要功能模塊設計1.1 登錄模塊流程本模塊的主要功能是對用戶身份進行驗證,只有系統(tǒng)的合法用戶才能進入系統(tǒng)。在進行系統(tǒng)登錄過程中,登錄模塊將調(diào)用數(shù)據(jù)庫里的用戶清單,并對賬號和密碼進行驗證,只有輸入了正確的賬號和密碼后,系統(tǒng)登錄才會成功。并在輸入了錯誤的或者是不存在的賬戶和密碼時,系統(tǒng)會提示出錯信息,指明登錄過程中的錯誤輸入或者錯誤操作,以便用戶進行正確的登錄。系統(tǒng)登錄模塊流程如圖4.1所示。1.2庫存管理流程功能:本模塊的主要功能是商品信息的查詢和更新,庫存信息的查詢和更新。查詢商品信息:主要功
7、能查詢商品的明細信息,和它的庫存信息。添加商品信息:主要功能添加新進的商品。修改商品信息:主要功能是修改商品的信息,包括他的庫存數(shù)量。刪除商品信息:主要功能是刪除不再銷售的商品信息。輸入項、輸出項:本模塊的數(shù)據(jù)輸入項主要是商品編號。庫存管理流程如圖4.4所示確定登錄商品更改刪除商品查詢添加商品商品數(shù)據(jù)庫系統(tǒng)數(shù)據(jù)流圖四,數(shù)據(jù)文件(或數(shù)據(jù)庫)設計 表1 表2五,程序的主要界面、代碼實現(xiàn)1 用戶登錄界面: 1.1 輸入用戶編號和密碼后,可以登錄,可以關閉窗口,也可以重置1.2若密碼和用戶名輸入不正確,將顯示提示對話框2 .登錄成功后系統(tǒng) 2.1登錄成功后將顯示提示語句:2.2并自動進入商場庫存管理界
8、面:2.3查詢界面:2.4刪除界面:2.5添加界面:2.6修改界面3.1這是Gread類,用于連接數(shù)據(jù)庫package work;import java.sql.*;public class GreadConnection conn=null;Statement stmt=null;ResultSet rs=null;public Gread()tryString driverClassName = "com.mysql.jdbc.Driver" Class.forName("com.mysql.jdbc.Driver"); /2.連接數(shù)據(jù)庫 Conne
9、ction conn = DriverManager.getConnection("jdbc:mysql:/localhost:3306/mydatabase","root",""); stmt=conn.createStatement();catch(Exception ex)ex.printStackTrace();ResultSet executeQuery(String sql)/查詢tryrs=stmt.executeQuery(sql);catch(Exception e)System.out.println(e);ret
10、urn rs;void executeUpdate(String sql)/修改trystmt.executeUpdate(sql);catch(SQLException e)void close()/關閉trystmt.close();conn.close();catch(SQLException e)3.2這是商品庫存管理界面類package work;import java.awt.*;import javax.swing.*;import java.awt.event.*;import java.awt.BorderLayout;import java.awt.Rectangle;im
11、port java.sql.*;public class Gul extends JFrame implements ActionListenerBorderLayout BL=new BorderLayout();JButton jq=new JButton();/查詢JButton ji=new JButton();/插入JButton jd=new JButton();/刪除JButton jo=new JButton();/編輯JButton ju=new JButton();/修改JPanel jp=new JPanel();JLabel L1=new JLabel();JLabel
12、 L2=new JLabel();JLabel L3=new JLabel();JLabel L4=new JLabel();JLabel L5=new JLabel();JLabel ts=new JLabel();JTextField id=new JTextField();JTextField name=new JTextField();JTextField number=new JTextField();JTextField sid=new JTextField();ResultSet rs=null;public Gul()tryjbInit();catch(Exception a)
13、a.printStackTrace();private void jbInit()throws ExceptiongetContentPane().setLayout(BL);this.setTitle("商場庫存管理系統(tǒng)");jp.setLayout(null);jp.setBackground(Color.pink);L1.setText("商品編號:");L1.setBounds(new Rectangle(8,103,71,30);L2.setText("數(shù)量:");L2.setBounds(new Rectangle(6,1
14、75,42,15);L3.setText("商品名:");L3.setBounds(new Rectangle(6,144,42,15);L4.setText("查詢條件:");L4.setBounds(new Rectangle(4,27,86,22);L5.setText("商品編號:");L5.setBounds(new Rectangle(42,52,73,24);id.setEditable(false);id.setBounds(new Rectangle(48,109,124,22);name.setEditable(f
15、alse);name.setBounds(new Rectangle(48,143,124,22);number.setEditable(false);number.setBounds(new Rectangle(47,174,125,23);sid.setBounds(new Rectangle(82,55,110,20);ts.setBounds(new Rectangle(9,281,237,34);ji.setEnabled(false);ju.setEnabled(false);jd.setEnabled(false);jd.setDoubleBuffered(true);this.
16、getContentPane().add(jp,java.awt.BorderLayout.CENTER);jq.setBounds(new Rectangle(216,53,79,23);ji.setBounds(new Rectangle(20,229,72,23);ju.setBounds(new Rectangle(133,230,76,23);jo.setBounds(new Rectangle(217,173,79,23);jd.setBounds(new Rectangle(245,231,74,23);jq.setText("查詢");jq.addActio
17、nListener(this);ju.setText("修改");ju.addActionListener(this);ji.setText("添加");ji.addActionListener(this);jo.setText("編輯");jo.addActionListener(this);jd.setText("刪除");jd.addActionListener(this);jp.add(L1);jp.add(id);jp.add(name);jp.add(number);jp.add(L5);jp.add(
18、sid);jp.add(L4);jp.add(jq);jp.add(ji);jp.add(jo);jp.add(L3);jp.add(L2);jp.add(jd);jp.add(ju);jp.add(ts);this.setSize(500,400);this.setVisible(true);public static void main(String args)Gul F=new Gul();public void actionPerformed(ActionEvent e)ts.setText("");if(e.getSource()=jq)/查詢String s=s
19、id.getText().trim();String sql="select * from user where id='"+s+"'" Gread db=new Gread();rs=db.executeQuery(sql);trywhile(rs.next()id.setText(rs.getString(1);name.setText(rs.getString(2);number.setText(rs.getString(3);rs.close();if(!id.getText().equals("")ts.se
20、tText("操作成功!");catch(SQLException ex)else if(e.getSource()=jo)/編輯id.setEditable(true);name.setEditable(true);number.setEditable(true);ji.setEnabled(true);ju.setEnabled(true);jd.setEnabled(true);else if(e.getSource()=ji)/添加String s1=id.getText();String s2=name.getText();int s3=Integer.parse
21、Int(number.getText();String sql="insert into number values("+s1+","+s2+","+s3+")"System.out.println(sql); Gread db=new Gread();db.executeUpdate(sql);ts.setText("操作成功!");else if(e.getSource()=ju)/修改String s1=id.getText();String s2=name.getText();int s
22、3=Integer.parseInt(number.getText();String sql="update number set name="+s2+",number="+s3+"where id="+s1+"" Gread db=new Gread();db.executeUpdate(sql);ts.setText("操作成功!");else if(e.getSource()=jd)/刪除String s1=id.getText();String s2=name.getText();int
23、 s3=Integer.parseInt(number.getText();String sql="delete number where id="+s1+"and name="+s2+"and numer="+s3; Gread db=new Gread();db.executeUpdate(sql);id.setText("");name.setText("");number.setText("");id.setEditable(false); name.setEdita
24、ble(false); number.setEditable(false);ts.setText("操作成功!");3.3登錄界面類package work;import java.awt.*;import java.awt.image.*;import java.awt.event.*;import javax.swing.*;import javax.imageio.*;import java.sql.*;import java.util.*;import java.io.*;class LoginWindowV2 extends JFrame implements A
25、ctionListener JPanel p1=new JPanel(); JPanel p2=new JPanel();JPanel p3=new JPanel();JPanel p4=new JPanel();JPanel p5=new JPanel();JTextField txtUserName=new JTextField(15); /用戶名文本框JPasswordField txtPwd=new JPasswordField(15);/密碼框JButton ok=new JButton("登錄");JButton cancel=new JButton("
26、;關閉");JButton resert=new JButton("重置");public LoginWindowV2()/字體設置Font font = new Font("宋體",Font.PLAIN,24); Font labelFont = new Font("隸書",Font.BOLD,24); UIManager.put("Button.font",font); UIManager.put("Label.font",labelFont); UIManager.put(&qu
27、ot;TextField.font",labelFont); JpanelBack jpb = new JpanelBack(); Container contentPane=this.getContentPane();/取出內(nèi)容面板 p2.add(new JLabel("用戶編號:");p2.add(txtUserName); /將組件添加到中間容器 p3.add(new JLabel("密 碼:");p3.add(txtPwd); p4.add(ok);p4.add(cancel);p4.add(resert); ok.addActionL
28、istener(this); cancel.addActionListener(this); resert.addActionListener(this); txtUserName.addActionListener(this); txtPwd.addActionListener(this); jpb.add(p2); jpb.add(p3); jpb.add(p4); contentPane.add(jpb); setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);/設置自動關閉窗口 int width = 400,height=300; set
29、Size(width,height); Dimension screen=Toolkit.getDefaultToolkit().getScreenSize(); setLocation(screen.width-width)/2,(screen.height-height)/2); setTitle("歡迎你進入XX商場庫存系統(tǒng)"); setResizable(false); /不讓用戶改變窗口大小 setVisible(true); public void actionPerformed(ActionEvent e) if(e.getSource()=ok|e.getS
30、ource()=txtPwd) /單擊確定按鈕后 String uid = txtUserName.getText().trim(); String upass = txtPwd.getText().trim(); if(checkUser(uid,upass) int i=JOptionPane.showConfirmDialog(null,"登錄成功,是否立即去查詢系統(tǒng)?","是否查詢",JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE); if(i=JOptionPane.YES_OPTI
31、ON) Gul stu = new Gul(); dispose(); stu.setVisible(true); else JOptionPane.showMessageDialog(null,"用戶編號或密碼錯誤!"); txtUserName.requestFocus(); /設置焦點 txtUserName.setSelectionStart(0); /設置選中文本開始位置 txtUserName.setSelectionEnd(txtUserName.getText().length(); else if(e.getSource()=cancel) /單擊關閉 d
32、ispose(); System.exit(0); else if(e.getSource()=txtUserName) /在用戶編號文本框按回車移動焦點到密碼框 txtPwd.requestFocus(); else if(e.getSource()=resert) txtUserName.setText(""); txtPwd.setText(""); txtUserName.requestFocus(); public boolean checkUser(String id ,String password)try /1.注冊驅動 String d
33、riverClassName = "com.mysql.jdbc.Driver" Class.forName("com.mysql.jdbc.Driver"); /2.連接數(shù)據(jù)庫 Connection conn = DriverManager.getConnection("jdbc:mysql:/localhost:3306/mydatabase","root",""); String temp_ID=txtUserName.getText(); String temp_pass=txtPwd.getText(); String sql_user="select userID,userPW from shopping where UserID=? and UserPW=?" PreparedStatement pst=null; pst=conn.prepareStatement(sql_user); pst.setString (1,tem
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 湖北省武漢市六校聯(lián)考2025屆物理高二上期中檢測試題含解析
- 2025屆遵義縣第一中學高三物理第一學期期末聯(lián)考模擬試題含解析
- 安徽師范大學附中2025屆物理高三上期末綜合測試模擬試題含解析
- 2025屆安徽滁州市定遠縣西片三校高二物理第一學期期中統(tǒng)考試題含解析
- 四川省德陽市羅江中學2025屆物理高二上期末質量跟蹤監(jiān)視模擬試題含解析
- 2025屆山東省濱州市惠民縣中學物理高二第一學期期末質量檢測模擬試題含解析
- 山西省重點中學協(xié)作體2025屆高一物理第一學期期末檢測試題含解析
- 2025屆陜西省南鄭中學物理高一上期末復習檢測模擬試題含解析
- 甘肅省天水市一中2025屆物理高一上期末聯(lián)考試題含解析
- 2025屆四川省瀘縣一中物理高二第一學期期末質量檢測模擬試題含解析
- 2023土的分散性判別試驗規(guī)程
- 牧原招聘測評試題
- 29.4常見腫瘤標志物講解
- 大學生職業(yè)生涯規(guī)劃環(huán)境設計 (模板)
- 鑄牢中華民族共同體意識主題班會教案
- 社會體育指導員協(xié)會總結
- 《過秦論》復習及訓練
- 國家安全教育國土安全
- HGT 4095-2023 化工用在線氣相色譜儀 (正式版)
- 液氣胸的護理查房
- 工商管理職業(yè)規(guī)劃
評論
0/150
提交評論