【文章內容簡介】
char(4)NOTNULL 用戶密碼第3章 系統(tǒng)功能及實現(xiàn)數(shù)據(jù)庫結構創(chuàng)建好后,數(shù)據(jù)庫中的各個表格都是空的。也就是說需要向數(shù)據(jù)庫的各個表格輸入具體的信息。數(shù)據(jù)的輸入可以通過Power Builder下編制完畢程序后在進行信息的輸入。創(chuàng)建應用程序對象超市管理系統(tǒng)應用程序對象的創(chuàng)建步驟如下。(1)單擊菜單File|New,選擇應用程序對象模板畫板,點擊OK按鈕,出現(xiàn)如圖所示的Specfy New Application and Library對話框。在該對話框中完成應用程序對象名、庫文件名設置。應用程序對象名、庫文件名的設置(2)單擊Finish按鈕,進入應用程序對象設計畫面。在應用程序對象的Open事件中輸入如下的程序代碼: //Profile oracle805=O84 =FalseSQLA,DBParm=//open the login windowopen(win_logon)應用程序運行后第一個出現(xiàn)的窗口是上面語句打開找開的win_logon窗口。在登錄窗口中用戶輸入連接數(shù)據(jù)庫的用戶名和口令。連接數(shù)據(jù)庫成功,則出現(xiàn)程序主窗口。 登錄窗口的設計在應用程序對象Open事件的程序代碼中有下面一條語句:open(win_logon)。該語句就是打開登錄窗口的語句。登錄窗口如圖所示。登錄窗口該窗口中放置了2個靜態(tài)文本框Static Text 控件,分別顯示用戶名和用戶密碼。放置了2個單行編輯框String line Edit控件,一個供用戶輸入登錄的用戶名(sle_user),另一個供用戶輸入密碼。這4個控件放置在一個GroupBox控件上。另外在窗口的下方放置2個按鈕控件,分別是確認和取消。win_logon窗口的Open事件中輸入如下的程序代碼:Environment l_envint l_ScrWidth,l_ScrHeightsetRedraw(false)GetEnvironment(l_env)l_ScrWidth=PixelsToUnits(,XpixelsToUnits!)l_ScrHeight=PixelsToUnits(,YpixelsToUnits!)Move((l_scrwidth )/2,(l_scrheight )/2)setredraw(true)(sqlca)()這樣在該窗口被打開后,將顯示在屏幕的中央。在cb_ok控件的Click事件輸入如下的程序代碼:int g_input_timestring g_xxl_userstring g_xxl_pswdstring correct_pswdg_input_time=g_input_time+1g_xxl_user=g_xxl_pswd=//取出數(shù)據(jù)庫用戶表中對應用戶的口令select psaaword into:correct_pswd from user where user=:g_xxl_user。if = or = then messagebox(注意,請輸入用戶名或密碼!)elseif g_xxl_pswd=correct_pswd then //輸入正確,打開主窗口 open(in_window) close(win_logon) else //不正確,在3次以內可重新輸入,超過3次結束程序 if g_input_time3 then messagebox(警告,輸入口令的次數(shù)太多) close(win_logon) else messagebox(警告,輸入的口令有錯誤,請重新輸入) end if end if該事件以用戶輸入的用戶名和口令來連接數(shù)據(jù)庫,連接成功后,出現(xiàn)應用程序主窗口,并關閉登錄窗口。在cb_cancel控件的Click事件中輸入如下的程序代碼:halt。用于結束應用程序的運行。 建立應用程序主窗口系統(tǒng)應用程序的主要功能都是在主窗口in_window及在其下打開的眾多窗口中完成。主窗口界面如下圖所示, 菜單設計 。在這里設置8個主菜單,21個子菜單項目。對于經常使用的菜單功能,在工具欄中設置相應的快捷圖標實現(xiàn)。該菜單的結構如下圖所示。各個菜單中的程序代碼如下:(1)“前臺POS”菜單下“收銀管理”子菜單的Click事件程序代碼:opensheet(s_window,in_window,1,original!)其功能是在主窗口in_windowh 以窗口s_window的原來的大?。╫riginal!參數(shù)指定)打開“收銀管理”窗口,并指定在第1個菜單(“窗口”,菜單)標題下(1參數(shù)指定)增加一個以s_window命名的菜單。(2)“系統(tǒng)”菜單下“退出”子菜單的Click事件程序代碼:close(in_window)其功能是關閉窗口in_window(3)“窗口”菜單下“層疊”子菜單的Click事件程序代碼:(CASCADE!)(4)“窗口”菜單下“平鋪”子菜單的Click事件程序代碼:Win_MAIN,ArrangeSheets(LAYER!)(5)其他菜單下子菜單的Click事件程序代碼:opensheet(wd_...,in_window,n,original!)其功能是在主窗口in_windowh 以窗口wd_jr的原來的大?。╫riginal!參數(shù)指定)打開“銷售日結”窗口,并指定在第n個菜單(“窗口”,菜單)標題下(n參數(shù)指定)增加一個以wd_..命名的菜單。 數(shù)據(jù)窗口對象的創(chuàng)建,建立數(shù)據(jù)窗口對象是程序設計中極為重要的一個部分。針對不同的情況選擇不同類型的數(shù)據(jù)窗口對象,會使程序的使用性和直觀性大為增強。在本應用程序中,根據(jù)需要為各個數(shù)據(jù)庫的表格分別創(chuàng)建兩種類型的數(shù)據(jù)窗口對象。這兩種類型的數(shù)據(jù)窗口對象各有各的優(yōu)勢。Dw_grid數(shù)據(jù)窗口的創(chuàng)建如下。(1)單擊“新建”打開New對話框,然后在“datawindow”標簽面選擇數(shù)據(jù)窗口對象的顯示風格,在這里選擇Grid。(2)單擊“OK”按鈕啟動數(shù)據(jù)窗口對象的向導。選擇Quick Select數(shù)據(jù)源的最簡單方法,然后單擊“Next”按鈕,出現(xiàn)對話框。在左上主的表格中雙擊連接的表格devices。選中該表格后,在右上方的列表框中列出了選中表devices的各個列。單擊“Add All”按鈕,則在該窗口下面顯示該表格所有的列。1) 單元擊“OK”,出現(xiàn)“Select Color and Border Settings”對話框,選擇數(shù)據(jù)窗口的背景顏色,文字顏色和邊框外觀為Lowered。2) 單擊“Next”按鈕,再現(xiàn)“Ready to create Grid Data window”對話框。在其中顯示當前數(shù)據(jù)窗口對象的屬性。單擊其上的“Finish”按鈕顯示數(shù)據(jù)窗口對象畫筆。3) 另外,為了能夠在該數(shù)據(jù)窗口對象中修改所顯示的記錄,需要在其中設置Allow Updates屬性。單擊“Rows”攻菜單下的“Update Porperts”子菜單。先選擇此屬性,再選擇所要修改的表格。在左下方的Updateable Columns中選中所有的列,使得所有的列都可以修改。在Where Clause for Update/Delete中選擇Key and Updateable Coloumns。單擊“OK”按鈕確認所作的修改。通過以上的操作步驟,一個完整Grid風格的數(shù)據(jù)窗口對象就創(chuàng)建完成。應用程序中窗口中的數(shù)據(jù)控件就可以連接和使用這個創(chuàng)建好的數(shù)據(jù)窗口對象了。前臺POS程序由2個輸入窗口組成,分別由主程序窗口的“前臺POS”菜單下的子菜單“收銀管理”、“打印”調用,以便數(shù)據(jù)輸入到數(shù)據(jù)庫的表格中。現(xiàn)以收銀管理信息窗口為例來進行說明。首先通過結算權限認證可以進入到收銀管理窗口。結算權限認證窗口如下圖所示。經過合格認證后,進入如下所示的收銀管理信息的窗口。在收銀管理窗口最上方放置一個靜態(tài)文本框控件,顯示窗口的用途“購買收銀條”。在窗口的中間放置兩個數(shù)據(jù)窗口控件dw_1和dw_2,該控件連接的數(shù)據(jù)窗口對象是dw_grid、dw_hh。在窗口的最下面放置3個靜態(tài)文本框3個單行文編輯器和2個按鈕控件,其Text分別為“條形碼”、“數(shù)量”、“現(xiàn)金”、“打印”、“ESC取消”,在其按鈕的Click事件分別用來實現(xiàn)數(shù)據(jù)的打印,與清除數(shù)據(jù)窗口內容。(1)在窗口的open事件中輸入如下的程序代碼:()(sqlca)(sqlca)()connect。long liselect count(*)