超市管理系統(tǒng)_第1頁
超市管理系統(tǒng)_第2頁
超市管理系統(tǒng)_第3頁
超市管理系統(tǒng)_第4頁
超市管理系統(tǒng)_第5頁
已閱讀5頁,還剩107頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

超市管理系統(tǒng)主講人:段江城計科11505采用技術(shù)語言:JAVA數(shù)據(jù)庫:SQLServerUI:Swing(用于開發(fā)Java應(yīng)用程序用戶界面的開發(fā)工具包)UI(服務(wù))邏輯數(shù)據(jù)應(yīng)用程序SwingSQLServerJAVA問題的定義及可行性分析目的用最小的代價在盡可能短的時間內(nèi)確定問題能否解決三方面考慮技術(shù)可行性經(jīng)濟可行性操作可行性成本一般占總成本的5~10%需求分析信息來源用戶溝通用戶往往不能準確、全面地提出系統(tǒng)需求設(shè)計開發(fā)人員可按信息系統(tǒng)建設(shè)的思路來引導用戶必要時可先按照用戶最初的描述,建立系統(tǒng)原型設(shè)計開發(fā)人員以往類似系統(tǒng)經(jīng)驗(文檔)同行業(yè)類似系統(tǒng)的經(jīng)驗通過操作使用類似軟件系統(tǒng),整理最初的需求文檔,并在此基礎(chǔ)上,與用戶溝通、改進需求需求分析登錄功能主界面1.菜單2.工具3.功能面板需求分析——業(yè)務(wù)流程訂單供貨商商品采購入庫信息到貨發(fā)貨出庫信息銷售商品銷售商需求分析——實體登錄管理員信息運營管理訂單(記錄)信息入庫(記錄)信息出庫(記錄)信息人員管理部門信息(部門+負責人)員工信息(基本信息+聯(lián)系方式+部門信息+職務(wù)信息)基本檔案供貨商信息銷售商信息商品信息倉庫信息需求分析——實體聯(lián)系圖運營管理訂單信息入庫信息倉庫信息出庫信息買存取1nn1n1供貨商信息銷售商信息商品信息賣1n需求分析——實體聯(lián)系圖公司管理基本信息部門信息職位信息屬于m1聯(lián)系信息擁有1擁有11需求分析——功能模塊超市管理系統(tǒng)基本檔案管理采購訂貨管理倉庫入庫管理倉庫出庫管理人員管理部門管理供貨商管理銷售商管理貨品檔案管理倉庫管理登錄需求分分析——需求列列表功能模塊子模塊功能描述基本檔案管理供貨商管理添加添加供貨商信息刪除刪除供貨商信息查詢根據(jù)供貨商名稱或地址,查詢供貨商信息修改修改供貨商信息銷售商管理添加添加銷售商信息刪除刪除銷售商信息查詢根據(jù)銷售商名稱或地址,查詢銷售商信息修改修改銷售商信息貨品檔案管理添加添加貨品信息刪除刪除貨品信息查詢根據(jù)貨品名稱,查詢貨品信息修改修改貨品信息倉庫管理添加添加倉庫信息刪除刪除倉庫信息查詢根據(jù)倉庫編號或者管理員,查詢倉庫信息修改修改倉庫信息需求分分析——需求列列表功能模塊功能描述采購訂貨添加訂單添加一條新訂單(及相關(guān)信息)刪除訂單刪除所選擇的訂單查詢訂單根據(jù)條件(客戶、訂單號、交換日期)查詢訂單修改訂單修改所選擇的訂單由訂單入庫由訂單表入庫,并改變訂單狀態(tài)(由“未入庫”改為“已經(jīng)入庫”狀態(tài))商品入庫添加入庫信息添加一條入庫信息——選擇一條已有訂單的(全部或部分)商品,將其轉(zhuǎn)移至指定的倉庫中刪除入庫信息刪除所選擇的入庫信息查詢?nèi)霂煨畔⒏鶕?jù)條件(訂單號、入庫時間)查詢?nèi)霂煨畔⑿薷娜霂煨畔⑿薷乃x擇的入庫信息商品出庫添加出庫信息添加一條出庫信息——選擇倉庫及該倉庫中已有的商品,以及重量、時間等信息,同時更新剩余商品的數(shù)量刪除出庫信息刪除所選擇的出庫信息查詢出庫信息根據(jù)條件(倉庫號、出庫時間)查詢出庫信息修改出庫信息修改所選擇的出庫信息需求分分析——需求列列表功能模塊功能描述人員管理添加新員工添加一條新員工信息——選擇部門、職位,并填寫姓名、年齡、性別等信息刪除員工刪除所選擇的員工信息查詢員工根據(jù)部門,查詢該部門某員工信息(基本信息,及詳細的聯(lián)系方式)修改員工修改所選擇的員工信息部門管理添加新部門添加一條新部門信息——指定部門名稱及負責人刪除部門刪除所選擇的部門信息查詢部門信息根據(jù)條件(部門名稱、負責人)查詢部門信息修改部門信息修改所選擇的部門信息權(quán)限管理登錄管理員用戶、密碼登錄需求分分析——需求總總結(jié)超市管理系統(tǒng)商品管理公司管理買賣訂單入庫出庫人員管理部門管理登錄基本檔案需求分分析——需求總總結(jié)實體體登錄錄管理理員員信信息息運營營管管理理訂單單((記記錄錄))信信息息入庫庫((記記錄錄))信信息息出庫庫((記記錄錄))信信息息人員管理理部門信息息員工信息息(基本本信息+聯(lián)系方式式+職務(wù)信息息)基本檔案案供貨商信信息銷售商信信息商品信息息倉庫信息息需求分析析——實體聯(lián)系系圖運營管理理、基本本檔案訂單信息息入庫信息息倉庫信息息出庫信息息買存取1nn1n1供貨商信信息銷售商信信息商品信息息賣1nn11nn1需求分析析——需求總結(jié)結(jié)實體聯(lián)系系圖——公司管理理基本信息部門信息職位信息屬于m1聯(lián)系信息擁有1擁有11總體設(shè)計計——數(shù)據(jù)庫設(shè)設(shè)計總體設(shè)計計——數(shù)據(jù)庫設(shè)設(shè)計功能模塊表實體登錄tb_users管理員信息人員管理tb_basicMessage基本信息tb_contact聯(lián)系方式tb_headship職務(wù)信息部門管理tb_dept部門信息運營管理tb_stock訂單信息tb_joinDepot入庫信息tb_outDepot出庫信息基本檔案tb_provide供貨商信息tb_sell銷售商信息tb_ware貨品信息tb_depot倉庫信息總體設(shè)計計——數(shù)據(jù)庫設(shè)設(shè)計管理員信信息表(tb_users)列名類型允許空描述idint不能為空主鍵userNamevarchar(20)用戶名passWordvarchar(20)密碼總體設(shè)計計——數(shù)據(jù)庫設(shè)設(shè)計基本檔案案——供貨商信信息表(tb_provide)列名類型允許空描述idint不能為空主鍵cNamevarchar(20)不能為空供貨商名稱addressvarchar(40)地址linkmanvarchar(50)聯(lián)系人linkPhonevarchar(20)電話faxesvarchar(20)傳真postNumvarchar(10)郵編bankNumvarchar(30)銀行賬號netAddressvarchar(30)網(wǎng)址emaillAddressvarchar(50)電子郵件remarkvarchar(200)

備注總體設(shè)計計——數(shù)據(jù)庫設(shè)設(shè)計基本檔案案——銷售商信信息表(tb_sell)列名類型允許空描述idint不能為空主鍵sellNamevarchar(50)銷售商名稱addressvarchar(50)地址linkmanvarchar(50)聯(lián)系人linkPhonevarchar(50)聯(lián)系地址faxNumvarchar(50)傳真postNumvarchar(50)郵編bankNumvarchar(50)銀行賬號netAddressvarchar(50)網(wǎng)址emaillAddressvarchar(50)電子郵件remarkvarchar(50)備注總體設(shè)計計——數(shù)據(jù)庫設(shè)設(shè)計基本檔案案——貨品檔案案信息表表(tb_ware)列名類型允許空描述idint不能為空主鍵wareNamevarchar(50)貨品名稱warBewritevarchar(50)貨品描述specvarchar(50)單位stockPricefloat進貨價retailPricefloat零售價associatorPricefloat

會員價總體設(shè)計計——數(shù)據(jù)庫設(shè)設(shè)計基本檔案案——倉庫管理理信息表表(tb_depot)列名類型允許空描述idint不能為空主鍵managevarchar(50)管理員functionalvarchar(200)描述總體設(shè)計計——數(shù)據(jù)庫設(shè)設(shè)計采購訂貨貨信息表表(tb_stock)列名類型允許空描述idint不能為空主鍵sNamevarchar(50)客戶orderIdvarchar(50)訂單號consignmentDatevarchar(50)交貨日期baleNamevarchar(50)商品名countvarchar(50)數(shù)量moneyfloat

金額總體設(shè)計計——數(shù)據(jù)庫設(shè)設(shè)計倉庫入庫庫信息表表(tb_joinDepot)列名類型允許空描述idint不能為空主鍵oidvarchar(50)訂單號dIdint倉庫編號wareNamevarchar(40)貨品名稱joinTimevarchar(50)入庫時間weightfloat重量remarkvarchar(200)

備注總體設(shè)計計——數(shù)據(jù)庫設(shè)設(shè)計倉庫出庫庫信息表表(tb_outDepot)列名類型允許空描述idint不能為空主鍵didint倉庫編號wNamevarchar(50)貨品名稱outDatevarchar(50)出庫時間wightfloat重量remarkvarchar(500)備注總體設(shè)計計——數(shù)據(jù)庫設(shè)設(shè)計部門信息息表(tb_dept)職位信息息表(tb_headship)列名類型允許空描述idint不能為空主鍵dNamevarchar(50)部門名稱principalvarchar(50)負責人bewritevarchar(500)(部門)描述列名類型允許空描述idint不能為空主鍵headshipNamevarchar(50)(職位)描述總體設(shè)計計——數(shù)據(jù)庫設(shè)設(shè)計員工信息息表基本信息息表(tb_basicMessage)聯(lián)系方式式信息表表(tb_contact)列名類型允許空描述idint不能為空主鍵namevarchar(10)姓名ageint年齡sexvarchar(50)性別deptint部門headshipint

職務(wù)列名類型允許空描述idint不能為空主鍵hidint外鍵,與員工基本信息表主鍵對應(yīng)contactvarchar(20)手機officePhonevarchar(30)辦公室電話faxvarchar(20)不能為空傳真emailvarchar(50)電子郵件faddressvarchar(50)

家庭住址總體設(shè)計計——界面設(shè)計計Swing簡介——百度百科科Swing是一個用用于開發(fā)發(fā)Java應(yīng)用程序序用戶界界面的開開發(fā)工具具包。以抽象窗窗口工具具包(AWT)為基礎(chǔ)礎(chǔ),使跨跨平臺應(yīng)應(yīng)用程序序可以使使用任何何可插拔拔的外觀觀風格。。AWT(AbstractWindowToolkit):提供了一套套與本地圖形形界面進行交交互的接口,是Java提供的用來建建立和設(shè)置Java的圖形用戶界面面的基本工具。。Swing開發(fā)人員只用用很少的代碼碼就可以利用用Swing豐富、靈活的的功能和模塊塊化組件來創(chuàng)創(chuàng)建優(yōu)雅的用用戶界面總體設(shè)計——界面設(shè)計Swing頂級容器圖形界面至少少要有一個頂頂級Swing容器頂級Swing容器為其它Swing組件在屏幕上上的繪制和處處理事件提供供支持常用的頂級容容器:JFrame(框架):表表示主程序窗窗口JDialog(對話框)::每個JDialog對象表示一個個對話框,對對話框?qū)儆诙壌翱贘Applet(小程序)::在瀏覽器內(nèi)內(nèi)顯示一個小小程序界面總體設(shè)計——界面設(shè)計JFrameJPanelJPanelJButtonJTextField...總體設(shè)計——界面設(shè)計主要控件功能JFrame框架控件,頂級容器JPanel面板控件,控件容器JScrollPane帶滾動條的面板控件JTabbedPane標簽面板控件,將幾個面板集成到一起JLabel靜態(tài)框JTextField編輯框JPasswordField顯示密碼的編輯框(密碼顯示為“*”)JTextArea多行顯示編輯框JButton按鈕JCheckBox多選按鈕ButtonGroup按鈕組控件,將幾個單選按鈕組合在一起JRadioButton單選按鈕JComboBox下列組合框JTree樹形控件JTable表控件Swing常用的標準控控件總體設(shè)計——界面設(shè)計Enter(JFrame)BackgroundPanel(JPanel)JLabelJButtonJTextFieldClockPanel(JPanel)登錄界面總體設(shè)計——界面設(shè)計登錄界面Enter.javaEnterBackgroundPanelJLabelJButtonJTextFieldClockPanelJFrameJPanel主要函數(shù)/類功能main()程序主入口函數(shù)Enter()構(gòu)造函數(shù)getLoginPanel()初始化BackgroundPanel面板函數(shù),及添加面板上各種控件,為構(gòu)造函數(shù)所調(diào)用TitleMouseAdapter類MouseAdapter子類,實現(xiàn)鼠標事件監(jiān)聽器,獲取鼠標事件發(fā)生的位置,這個類被設(shè)置到BackgroundPanel中(冗余代碼,無意義)總體設(shè)計——界面設(shè)計Enter.java函數(shù)調(diào)用關(guān)系系主函數(shù)main()構(gòu)造函數(shù)Enter()getLoginPanel()添加面板上各各控件為按鈕添加監(jiān)監(jiān)聽器,實現(xiàn)現(xiàn)登錄總體設(shè)計——界面設(shè)計Enter.java主函數(shù)publicstaticvoidmain(String[]args){

EventQueue.invokeLater(newRunnable()

{publicvoidrun()

{try{

UIManager.setLookAndFeel(newNimbusLookAndFeel());

SwingUtilities.invokeLater(newRunnable()

{publicvoidrun(){

Entermostly=newEnter();//調(diào)用構(gòu)造函數(shù)mostly.setVisible(true);}});}catch(Exceptione){e.printStackTrace();}}});}調(diào)用invokeLater()方法以請求事件派發(fā)線程程(EDT)運行特定代碼碼設(shè)置外觀風格格總體設(shè)計——界面設(shè)計Enter.java構(gòu)造函數(shù)。。。publicEnter(){

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

setResizable(false);

setLocationRelativeTo(null);//窗體居中

setTitle("登錄窗體");

setBounds(100,100,559,285);contentPane=getLoginPanel();contentPane.setBorder(newEmptyBorder(5,5,5,5));

setContentPane(contentPane);

contentPane.setLayout(null);}設(shè)置頂級容器器JFrame屬性創(chuàng)建BackgroundPanel,并設(shè)置其邊邊界屬性將BackgroundPanel添加到Jframe中總體設(shè)計——界面設(shè)計Enter.java——getLoginPanel函數(shù)創(chuàng)建BackgroundPanel設(shè)置BackgroundPanel屬性創(chuàng)建子控件設(shè)置子控件屬屬性添加子控件到到BackgroundPanel中返回BackgroundPanelBackgroundPanelJPanelJButtonJTextField...總體設(shè)計——界面設(shè)計Enter.java——登錄按鈕監(jiān)監(jiān)聽器登錄按鈕enterButton監(jiān)聽器用戶名、密密碼檢測正確?進入主頁面面RemoveButtomFrame同時時銷銷毀毀登登錄錄窗窗體體提示示錯錯誤誤清空空用用戶戶名名及及密密碼碼NY總體體設(shè)設(shè)計計———main函數(shù)數(shù)邏邏輯輯main()創(chuàng)建建并并顯顯示示登登錄錄界界面面((Enter.java)設(shè)置置框框架架屬屬性性,,并并創(chuàng)創(chuàng)建建、、添添加加面面板板設(shè)置置面面板板屬屬性性,,并并創(chuàng)創(chuàng)建建、、添添加加各各種種控控件件為某某些些控控件件添添加加監(jiān)監(jiān)聽聽器器,,處處理理事事件件登錄錄按按鈕鈕登錄錄按按鈕鈕監(jiān)監(jiān)聽聽器器由控件獲取數(shù)據(jù)創(chuàng)建UserBean對象,并對其屬性賦值調(diào)用UserDAO的getUser函數(shù),根據(jù)用戶名、密碼查詢管理員ID是否存在該管理員創(chuàng)建并顯示主框架界面(RemoveButtomFrame)提示出錯,并請用戶再次輸入YN總體體設(shè)設(shè)計計———界面面設(shè)設(shè)計計功能能主主界界面面RemoveButtomFrameClockPanelJPanelJLabelCanlenderPanelMyJPanelBGPanelJPanelJPanelJLabelJScrollPanelJTreeSamllScrollPanel1243總體體設(shè)設(shè)計計———主框框架架界界面面設(shè)置框架屬性,并創(chuàng)建、添加主面板1.創(chuàng)建時鐘面板,并添加到主面板2.創(chuàng)建日歷面板,并添加到主面板4.調(diào)用getModuleButtonGroup(),添加上方控制面板3.調(diào)用getContentPanel(),添加右下方功能面板輔助助控控件件JLabel等JTree及其其監(jiān)監(jiān)聽聽器器由JTree控制制的的內(nèi)容容面面板板菜單單面面板板SmallScrollPanel添加加按鈕鈕面面板板,并并設(shè)設(shè)定定其其為為僅僅一一行行的的網(wǎng)網(wǎng)格格布布局局添加加各各按鈕鈕(GlassButton)及及其其監(jiān)監(jiān)聽聽器器總體體設(shè)設(shè)計計———界面面設(shè)設(shè)計計RemoveButtomFrameMyJPanelJPanelBGPanelCalenderPanelSmallScrollPanel主功能界面JFrameJPanelJLabelClockPanelJPanelJScrollPanelJTreeJLabelJPanel1234時鐘日歷功能菜單總體設(shè)計——界面設(shè)計事件響應(yīng)——監(jiān)聽器tree.addTreeSelectionListener(newTreeSelectionListener(){@OverridepublicvoidvalueChanged(TreeSelectionEvente){if(!tree.isSelectionEmpty()){TreePathselectionPaths=tree.getSelectionPath();Objectpath=selectionPaths.getLastPathComponent();DefaultMutableTreeNodenode=(DefaultMutableTreeNode)path;StringuserObject=(String)node.getUserObject();repaint();if(userObject.equals("供貨商管理")){fristLabel.setText(“供貨商管理”);//改變功能區(qū)標題

sellPanel.removeAll();//清空功能區(qū)原有子面板

sellPanel.add(panelFeel.getMessage());//為功能區(qū)添加供貨商子面板}elseif(userObject.equals("銷售商管理")){…}}});界面設(shè)計——時鐘面板獲取時鐘背景圖片、中心點坐標啟動子線程每個1秒,發(fā)送repaint事件主線程子線程paint()drawClock()界面設(shè)計——時鐘面板構(gòu)造函數(shù)。。publicClockPanel(){setOpaque(false);//設(shè)置為不透明background=newImageIcon(getClass().getResource(“Core.png”));//加載背景時鐘圖片//計算時鐘的中心(用于畫時、分、秒針)inticonWidth=background.getIconWidth();centerX=iconWidth/2;

inticonHeight=background.getIconHeight();centerY=iconHeight/2;

setPreferredSize(newDimension(532,286));//設(shè)置時鐘面板大小

newThread(this).start();//啟動子線程}界面設(shè)計——時鐘面板paint函數(shù)。。。publicvoidpaint(Graphicsg){Graphics2Dg2=(Graphics2D)g.create();//獲取2D繪圖對象

Compositecomposite=g2.getComposite();//存儲當前的Composite

g2.setComposite(AlphaComposite.SrcOver.derive(0.6f));//設(shè)置新的Composite

Calendarcalendar=Calendar.getInstance();//獲取當前時間

drawClock(g2,calendar);//調(diào)用drawClock函數(shù),繪制時鐘

g2.setComposite(composite);//恢復原有的Compositeg2.drawImage(background.getImage(),0,0,this);//畫背景圖片

g2.dispose();//釋放資源}界面設(shè)計——時鐘面板drawClock函數(shù)由Calender對象獲取當前前時間根據(jù)當前時間間計算時、分、秒針針位置利用Gragh2D對象畫出時、、分、秒針界面設(shè)計——日歷面板工具欄:getToolBar():4個JCheckBox(年、月增1或者減1),1個JFormattedTextField(顯示示當前前日期期)日歷顯顯示區(qū)區(qū):getJPanel1():第一行為星星期Label剩余行為日日期Label調(diào)用remark()函數(shù)畫小格格子日歷數(shù)據(jù):日歷類:封裝了日歷歷操作的方方法界面設(shè)計——日歷面板功能工具欄——更改年、月月,并在日日歷欄顯示示該月份日日期日歷欄——選擇/標準日期工具欄(JPanel)JCheckBoxJCheckBoxJFormattedTextFieldJCheckBoxJCheckBoxGridBagLayout布局日歷欄(JPanel)Jlabel(共7個,顯示周周)Jlabel(共6*7個,顯示日日期)有監(jiān)聽器GridLayout布局年份減1月份減1月份加1年份加1恢復到當前前年月界面設(shè)計——日歷面板工具欄年月控制按按鈕監(jiān)聽器。。。jButton1.addActionListener(newActionAdapter()//

添加監(jiān)聽器{@OverridepublicvoidactionPerformed(ActionEvente)//

監(jiān)聽器響應(yīng)函數(shù)

{calendar.add(Calendar.MONTH,-1);//改變?nèi)諝v信息(月份減1)

calendarChanged();//觸發(fā)其他已注冊的日期改變事件監(jiān)聽器(如果有)

initDayButtons();//根據(jù)改變后的年月,更新日歷欄

JCheckBoxsource=(JCheckBox)e.getSource();//獲取該事件發(fā)生的源控件

source.setSelected(false);//將該控件設(shè)為沒有選中(為了美觀)

super.actionPerformed(e);//調(diào)用父類所實現(xiàn)的函數(shù),更新日期文本框

}});界面設(shè)計——日歷面板工具欄日期文本框框監(jiān)聽器。。。dateField.addMouseListener(newMouseAdapter(){

publicvoidmousePressed(MouseEvente){calendar.set(YEAR,MONTH,DAY);//設(shè)置當天日期

initDateField();//恢復工具欄日期文本框initDayButtons();//恢復日歷欄日期按鈕calendarChanged();//觸發(fā)其他已注冊的日期改變事件監(jiān)聽器(如果有)

}});界面設(shè)計——日歷面板日歷欄label監(jiān)聽器privatefinalclassDayClientListenerextendsMouseAdapter//

監(jiān)聽器類定義{@OverridepublicvoidmousePressed(MouseEvente)//

監(jiān)聽接口實現(xiàn)

{JLabellabel=(JLabel)e.getSource();//

獲取事件發(fā)生的源控件

if(label.getText().isEmpty())//如果這個控件上沒有日期,什么都不做,直接返回return;

reMark();//

用紅色邊框標記當前日期

Stringtext=label.getText();

intdayNum=Integer.parseInt(text);//

獲取當前天的日期

calendar.set(Calendar.DAY_OF_MONTH,dayNum);//改變當前日歷緩存對象

initDateField();//更新工具欄日期文本框

label.setOpaque(true);//

利用給不透明度和背景標記所選日期label.setBackground(newColor(0xeeee00));

calendarChanged();//觸發(fā)其他已注冊的日期改變事件監(jiān)聽器(如果有)

}

}界面設(shè)計計——菜單面板板SmallScrollPanelJbutton左控制按鈕控制AlphaScrollPane的偏移位置AlphaScrollPane六個功能控制按鈕GlassButton(特殊的顯示效果)Jbutton右控制按鈕控制AlphaScrollPane的偏移位置為每個按鈕添加監(jiān)聽器,實現(xiàn)內(nèi)容面板的內(nèi)容切換SmallScrollPanelGlassButtonAlphaScrollPane界面設(shè)計計——菜單面板板類父控件功能描述SmallScrollPanelRemoveButtomFrame功能菜單容器面板(內(nèi)含左右控制按鈕、各功能按鈕)AlphaScrollPaneSmallScrollPanel包含各功能按鈕的面板(在SmallScrollPanel內(nèi)部,但不包含左右控制按鈕)JButtonSmallScrollPanel左右移動按鈕GlassButtonAlphaScrollPane功能按鈕界面設(shè)計計——菜單面板板AlphaScrollPane監(jiān)聽器——控制左右右按鈕顯顯示privateclassScrollButtonShowListenerextendsComponentAdapterimplementsSerializable{privatestaticfinallongserialVersionUID=814596372430146361L;

@OverridepublicvoidcomponentResized(ComponentEvente)

{JScrollBarscrollBar=alphaScrollPane.getHorizontalScrollBar();//獲取橫向滾動條

intscrollWidth=scrollBar.getMaximum();//獲取范圍限制參數(shù)

intpaneWidth=alphaScrollPane.getWidth();

if(paneWidth>=scrollWidth)//在容器大于包含內(nèi)容的時候隱藏左右微調(diào)按鈕

{getLeftScrollButton().setVisible(false);getRightScrollButton().setVisible(false);

}

if(paneWidth<scrollWidth)//在容器小于包含內(nèi)容的時候顯示左右微調(diào)按鈕

{getLeftScrollButton().setVisible(true);getRightScrollButton().setVisible(true);

}

}

}界面設(shè)計計——菜單面板板左右控制制按鈕監(jiān)監(jiān)聽器——控制滾動動條位置置publicvoidmousePressed(MouseEvente){Objectsource=e.getSource();//獲取事件源

isPressed=true;

//判斷事件源是左側(cè)按鈕還是右側(cè)按鈕,并執(zhí)行相應(yīng)操作if(source==getLeftScrollButton())

{scrollMoved(-1);//左移滾動條

}else

{scrollMoved(1);//右移滾動條

}

}scrollMoved()函數(shù):啟動一個個子線程程,鼠標標按下不不抬起時時,每隔隔10毫秒更新新滾動條條位置一一次(在在原有基基礎(chǔ)上+3或-3),并刷刷新界面面界面設(shè)計計——菜單面板板六個功能能按鈕((GlassButton)以“采購購進貨””按鈕為為例progressButton=newGlassButton();//創(chuàng)建按鈕progressButton.setActionCommand(“采購進貨”);//設(shè)置按鈕事件名稱//設(shè)置按鈕(未選中)時顯示的圖片progressButton.setIcon(newImageIcon(getClass().getResource("/com/mingrisoft/frame/buttonIcons/caigou1.png")));//

創(chuàng)建另一個圖標(當該按鈕被選中是顯示這個圖標)ImageIconicon=newImageIcon(getClass().getResource("/com/mingrisoft/frame/buttonIcons/caigou2.png"));progressButton.setRolloverIcon(icon);//設(shè)置當按鈕翻轉(zhuǎn)是顯示這個圖標progressButton.setSelectedIcon(icon);//

設(shè)置當按鈕被選中是顯示這個圖標progressButton.addActionListener(newtoolsButtonActionAdapter());//為按鈕添加監(jiān)聽器界面設(shè)計計——菜單面板板六個功能能按鈕((GlassButton)監(jiān)聽器以“采購進貨貨”按鈕為例例if(e.getSource()==progressButton)//如果這個事件來自于“采購進貨”按鈕{

backPanel.removeAll();//

清空功能區(qū)面板的所有內(nèi)容(backPanel為功能區(qū)面板)

backPanel.add(label_1);//

功能區(qū)面板添加新的標簽(firstLabel和label_1)

fristLabel.setBounds(133,38,123,15);//label_1顯示的是:“你當前位置是:”標簽大小位置設(shè)定

backPanel.add(fristLabel);//firstLabel顯示的是:“采購訂貨”

panel_1.setBounds(10,63,611,386);//設(shè)置panel_1子面板大小

StockPanelstockPanl=newStockPanel();//

創(chuàng)建“采購進貨”功能子面板

fristLabel.setText("采購訂貨");

backPanel.add(stockPanl);//添加自“采購進貨”子面板到backPanel面板上

repaint();//

刷新界面}界面設(shè)計——功能面板功能主界面RemoveButtomFrameClockPanelJPanelJLabelCanlenderPanelMyJPanelBGPanelJPanelJPanelJLabelJScrollPanelJTreeSamllScrollPanel1243界面設(shè)計——功能面板backPanellabel_1fristLabelStockPanelJoinDepotPanelOutDepotPanelDeptPanelPersonnelPanel采購訂貨倉庫入庫倉庫出庫部門門管管理理人員員管管理理JPanel基本本檔檔案案管管理理FeelWarePanelSellPanelWarePanelDepotPanel供貨貨商商銷售售商商貨品品檔檔案案倉庫庫界面面設(shè)設(shè)計計———功能能面面板板功能能子子面面板板基基本本功功能能刪除除添加加更新新查詢詢JButtonJTextFieldJCombo輸入入文文本本框框選擇擇下下拉拉框框數(shù)據(jù)據(jù)JTable新的的窗窗口口監(jiān)聽聽器器(4個))界面面設(shè)設(shè)計計———功能能面面板板JTable控件件使使用用———維護護一一組組數(shù)數(shù)據(jù)據(jù)((記記錄錄))privateJTabletable;DefaultTableModeldm=newDefaultTableModel();//

創(chuàng)建DefaultTableModel對象…dm.setDataVector(newObject[][]{},//

表的內(nèi)容

new

Object[]{“是否入庫”,“編號”,“客戶”,“訂單號”,“交貨日期”,“商品名”,“金額”,“數(shù)量”});//表頭

table=newJTable(dm);//

根據(jù)DefaultTableModel對象,創(chuàng)建JTable對象JTableDefaultTableModel界面面數(shù)據(jù)據(jù)創(chuàng)建建JTable操作作JTable數(shù)據(jù)據(jù)dm.addRow(newObject[]{“入庫",stock.getId(),stock.getsName(),stock.getOrderId(),stock.getConsignmentDate(),stock.getBaleName(),stock.getMoney(),stock.getCount()});界面面設(shè)設(shè)計計———功能能面面板板Model類功能描述LocalTableModel

供貨商/銷售商表模型WareModel

貨品表模型DepotModel

倉庫表模型StockModel

訂單表模型JoinDepotModel

入庫表模型OutDepotModel

出庫表模型DeptModel

部門表模型DefaultTableModel每個個數(shù)數(shù)據(jù)據(jù)庫庫表表定定義義自自己己的的DefaultTableModel(Model/*.java)界面面設(shè)設(shè)計計———功能能面面板板Model/XXXModel.javaDefaultTableModel的子子類類JTableXXXModel數(shù)據(jù)庫表常用函數(shù)功能getColumnName(intcolumn)返回列名稱。getRowCount()

返回此數(shù)據(jù)表中的行數(shù)。getColumnCount()

返回此數(shù)據(jù)表中的列數(shù)。getValueAt(introw,intcolumn)返回row和column處單元格的屬性值。setValueAt(ObjectaValue,introw,intcolumn)

設(shè)置column和row處單元格的對象值。addRow(Object[]rowData)在模型中添加一行。insertRow(introw,Object[]rowData)

在模型中的row位置插入一行。removeRow(introw)移除模型中row位置的行。界面面設(shè)設(shè)計計———功能能面面板板例::DepotModel(倉倉庫庫表表模模型型))publicclassDeptModelextendsDefaultTableModel//

繼承DefaultTableModel{Class[]types=newClass[]{java.lang.Object.class,java.lang.String.class,//

一條記錄中每個元素的類型java.lang.String.class,java.lang.String.class};boolean[]canEdit=newboolean[]{false,false,false,false};//JTable中每條表項是否可編輯(不可)publicDeptModel()//構(gòu)造函數(shù),調(diào)用其父類的構(gòu)造函數(shù),設(shè)定表頭{super(newObject[][]{},newString[]{"編號","部門名稱","負責人","描述"});}publicClassgetColumnClass(intcolumnIndex)//返回表中每列數(shù)據(jù)的類型(第3行定義){returntypes[columnIndex];}publicbooleanisCellEditable(introwIndex,intcolumnIndex)//返回表中每個單元是否可編輯(第5行定義){returncanEdit[columnIndex];}}界面面設(shè)設(shè)計計———功能能面面板板XXXModel.java方法輸入輸出描述XXXModel()無void構(gòu)造函數(shù),定義XXX表的每列的標題getColumnClass()int(列)Class返回表中指定列的類型(整型?字符型?…)isCellEditable()int(行)boolean返回給定表格單元(行及列)是否可編輯int(列)屬性描述types表中每列數(shù)據(jù)的類型(列表)canEdit表中每列單元是否可編輯界面面設(shè)設(shè)計計———功能能面面板板添加加按按鈕鈕監(jiān)監(jiān)聽聽器器以““采采購購進進貨貨””按按鈕鈕為為例例insertButton.addActionListener(newActionListener()//添加監(jiān)聽器{

publicvoidactionPerformed(ActionEvente)//實現(xiàn)監(jiān)聽接口函數(shù){InserStockFrameframe=newInserStockFrame();//創(chuàng)建新的添加面板frame.setVisible(true);//顯示新的面板}});界面面設(shè)設(shè)計計———功能能面面板板修改改按按鈕鈕監(jiān)監(jiān)聽聽器器以““采采購購進進貨貨””按按鈕鈕為為例例updateButton.addActionListener(newActionListener()//添加監(jiān)聽器{publicvoidactionPerformed(ActionEvente)//實現(xiàn)監(jiān)聽接口函數(shù){introw=table.getSelectedRow();//調(diào)用JTable控件方法,獲取用戶選中表格的行數(shù)

if(row<0)//

如果沒選中任何行,那么輸出提示信息,并返回{JOptionPane.showMessageDialog(getParent(),"沒有選擇要修改的數(shù)據(jù)!","信息提示框",JOptionPane.INFORMATION_MESSAGE);

return;}else//否則,創(chuàng)建并顯示新的面板{

UpdateStockFrameframe=newUpdateStockFrame();//創(chuàng)建修改信息窗體frame.setVisible(true);}}});界面面設(shè)設(shè)計計———功能能面面板板刪除除按按鈕鈕監(jiān)監(jiān)聽聽器器以““采采購購進進貨貨””按按鈕鈕為為例例deleteButton.addActionListener(newActionListener()//添加監(jiān)聽器{publicvoidactionPerformed(ActionEvente)//實現(xiàn)監(jiān)聽接口函數(shù){introw=table.getSelectedRow();//調(diào)用JTable控件方法,獲取用戶選中表格的行數(shù)

if(row<0)//

如果沒選中任何行,那么輸出提示信息,并返回{JOptionPane.showMessageDialog(getParent(),"沒有選擇要刪除的數(shù)據(jù)!","信息提示框",JOptionPane.INFORMATION_MESSAGE);return;//退出程序}Stringcolumn=dm.getValueAt(row,1).toString();//由JTable控件,獲取表第一列(主鍵)的值(字符串形式)

dao.deleteStock(Integer.parseInt(column));//將字符串形式的主鍵轉(zhuǎn)換為整型JOptionPane.showMessageDialog(getParent(),"數(shù)據(jù)刪除成功!","信息提示框",JOptionPane.INFORMATION_MESSAGE);//給出提示信息}});界面面設(shè)設(shè)計計———功能能面面板板查詢詢按按鈕鈕監(jiān)監(jiān)聽聽器器以““采采購購進進貨貨””按按鈕鈕為為例例findButton.addActionListener(newActionListener()//添加監(jiān)聽器{publicvoidactionPerformed(ActionEvente)//實現(xiàn)監(jiān)聽接口函數(shù){dm.setRowCount(0);//將表格內(nèi)容清空Stringcondition=comboBox.getSelectedItem().toString();//獲取用戶選擇的查詢條件(JCombox)StringconditionText=conditionTextField.getText();//獲取用戶添加的查詢條件(JTextField)if(conditionText.equals(“”))//如果用戶沒有添加查詢條件,那么輸出提示信息,并返回{JOptionPane.showMessageDialog(getParent(),"請輸入查詢條件!","信息提示框",JOptionPane.INFORMATION_MESSAGE);//給出提示信息return;//退出程序}if(condition.equals(“貨品名稱”)){

…}//

按貨品名稱查詢if(condition.equals(“訂單號”)){…}//

按訂單號查詢if(condition.equals(“交貨日期”)){…}//

按交貨日期查詢}});界面設(shè)設(shè)計——功能面面板“采購購進貨貨”查查詢按按鈕監(jiān)監(jiān)聽器器按“貨貨品名名稱””查詢詢if(condition.equals("貨品名稱")){Listlist=dao.selectStockBySName(conditionText);//調(diào)用相應(yīng)的DAO對象的方法,實現(xiàn)按貨品名稱查詢法

for(inti=0;i<list.size();i++)//循環(huán)遍歷查詢結(jié)果,將其顯示到JTable控件上

{Stockstock=(Stock)list.get(i);//獲取查詢記錄集中第i條記錄(對象)Stringoid=stock.getOrderId();//獲取該記錄(對象)的訂單號信息intid=dao.selectJoinStockByOid(oid);//調(diào)用相應(yīng)的DAO對象的方法,查詢該訂單號是否入庫if(id<=0)//如果該訂單的貨品在入庫表中不存在(尚未入庫)

{//將該記錄添加到Jtable控件中,并顯示為“待入庫”dm.addRow(newObject[]{“入庫",stock.getId(),stock.getsName(),stock.getOrderId(),stock.getConsignmentDate(),stock.getBaleName(),stock.getMoney(),stock.getCount()});

}

else//如果指定訂單號的貨品名稱在入庫表中存在(已經(jīng)入庫){//將該記錄添加到Jtable控件中,并顯示為“已入庫”dm.addRow(newObject[]{"已經(jīng)入庫",stock.getId(),stock.getsName(),stock.getOrderId(),stock.getConsignmentDate(),stock.getBaleName(),stock.getMoney(),stock.getCount()});

}

}}業(yè)務(wù)邏邏輯超市管理系統(tǒng)基本檔案管理采購訂貨管理倉庫入庫管理倉庫出庫管理人員管理部門管理供貨商管理銷售商管理貨品檔案管理倉庫管理登錄業(yè)務(wù)邏邏輯刪除、、查詢詢面板板(Panel/)beanDAO數(shù)據(jù)庫庫添加、、更新新面板板(Archive/)數(shù)據(jù)操操作數(shù)據(jù)映映射業(yè)務(wù)邏邏輯——Bean-DAO-數(shù)據(jù)庫庫實體表Bean類DAO類管理員信息tb_usersUserUserDao基本信息tb_basicMessageBasicMessagePersonnelDao聯(lián)系方式tb_contactContact職務(wù)信息tb_headshipHeaderShip部門信息tb_deptDeptDeptDao入庫信息tb_joinDepotJoinDepotJoinDepotDao出庫信息tb_outDepotOutDepotOutDepotDao訂單信息tb_stockStockStockDao倉庫信息tb_depotDepotDepotDao供貨商信息tb_provideProvideFeelDao銷售商信息tb_sellSellSellDao商品信息tb_wareWareWareDao業(yè)務(wù)邏邏輯——Bean-DAO-數(shù)據(jù)庫庫業(yè)務(wù)邏邏輯——Panel-Frame-DAO實體查詢/刪除面板添加/更新面板DAO類管理員信息

Enter(登錄)無UserDao基本信息

PersonnelPanelInsertPersonnelFrameUpdatePersonnelFramePersonnelDao聯(lián)系方式職務(wù)信息部門信息

DeptPanelInsertDeptFrameUpdateDeptFrameDeptDao入庫信息

JoinDepotPanelInsertJoinDepotFrameUpdateJoinDepotFrameJoinDepo

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論