劉宗佳LIU Zong-jia
(山東省濟寧市技師學院,濟寧272000)
隨著人們的生活水平和消費水平的提高,超級市場已成為我們生活中不可缺少的一部分。超級市場具有營業面積大、商品陳列直觀、營業人員少、流通成本低、節約購買時間、刺激消費欲望、避免人際磨擦等特點,因而對消費者和零售企業都有很強的吸引力。隨著超級市場在都市中的崛起和超市管理現代化的需要,把計算機應用到超市管理領域的要求日益膨脹,這就為應用于超級市場的管理系統的開發提供了廣闊的天地。
1.1 配置服務器 當用戶第一次使用本系統時,系統會提示用戶輸入要連接的數據庫服務器的信息,包括:服務器名、登陸到服務器的用戶名和該用戶所對應的密碼。如果本系統的用戶是系統管理員,系統還允許管理員修改服務器的連接信息。
1.2 登陸 當用戶使用本系統時,系統首先要求用戶輸入其工號和該工號對應的密碼,然后系統從操作系統的注冊表中讀入數據庫服務器的連接信息,把讀入的密碼進行解密,解密的過程與加密時類似,不過順序要顛倒。接著系統根據服務器的連接信息與服務器進行連接。
如果無法正確連接到服務器,系統將提示用戶連接錯誤,詢問用戶是否需要重新配置服務器的連接信息,如果能成功連接到服務器,系統將對數據庫中的員工表進行查詢。如果用戶輸入的用戶名和密碼與員工表中的用戶名和密碼匹配,則根據用戶的權限來登陸到不同的用戶界面,并把用戶的登陸信息保存到系統的全局變量中,以便在程序中調用。如果員工表中沒有相應的員工信息,則提示用戶的用戶信息錯誤,要求用戶重新輸入相應的登陸信息。如果用戶連續三次輸入錯誤的登陸信息,系統將自動退出。
1.3 修改當前用戶密碼 用戶正確登陸到系統后,用戶可以通過相應界面的選項中調用密碼修改模塊,當用戶點擊“修改密碼”時,系統要求用戶輸入用戶當前的密碼和將要修改的新密碼,在用戶點擊“確定”后,系統檢查用兩次戶輸入的新密碼是否一致,如果不一致就提示用戶重新輸入新密碼,如果一致,則根據用戶登陸時的信息(用戶工號),在數據庫的員工表中查找該用戶的記錄,然后比較用戶輸入的當前密碼是否與該用戶在數據庫中的密碼一樣,如果一樣就更新該用戶的登陸密碼,如果不一樣就提示用戶輸入的當前密碼輸入錯誤,要求用戶重新輸入。
1.4 商品銷售 如果用戶以收銀員的身份登陸,系統將直接調用商品銷售模塊,如果用戶以系統管理員的身份登陸,則可通過在總控界面中通過相應的菜單調用該模塊。
在登陸到商品銷售模塊后當用戶點擊“購物”的按鈕時,系統就會彈出一個對話框,要求用戶輸入客戶購買的商品的商品代號,當用戶輸入了一個商品代號后,點擊“添加”按鈕或直接按回車鍵,系統就會查詢數據庫中的商品表,如果商品表中存在與該商品代號匹配的記錄時,系統就把商品的相關信息顯示到銷售模塊的主窗口的表格中,如果商品表中不存在相應的記錄,則提示用戶該上商品在系統中沒有相應的記錄,要求用戶重新輸入。接著在用戶輸入的過程中,系統都要檢查用戶輸入的商品代號對應的商品是否已經顯示在銷售主窗口的表格中,如果存在就只更新商品的銷售數量,其它的信息都不做任何改變,如果不存在就通過查詢數據庫,判斷用戶輸入的商品代號是否在數據庫中有相應記錄,如果有相應的記錄就把該商品代號對應的商品信息添加到表格中。這樣不斷重復操作,直到用戶點擊“完成”按鈕返回銷售主窗口。
只要銷售主窗口的表格中存在商品信息,窗口中的購物、注銷、退出、修改密碼等按鈕都變成無效,只有收銀和取消按鈕是有效的。當用戶點擊“收銀”按鈕時,系統通過計算得到應收的金額然后彈出合計窗口,當用戶在文本框中輸入實收金額并按回車后,系統就檢查應收金額是否不小于實收金額,如果是則計算應找回客戶的金額,否則就提示用戶錯誤信息。當用戶點擊“完成”時,系統就把銷售窗口中的銷售的商品信息寫到數據庫中的銷售表中,并在商品表中把售出的商品的相應數量進行更新,然后銷售窗口中的購物、注銷、退出、修改密碼等按鈕都變成有效,相反,收銀和取消按鈕就變成無效。當用戶點擊“取消”按鈕時系統只清空表格中的商品信息,不對數據庫作任何操作,并把銷售窗口中的購物、注銷、退出、修改密碼等按鈕都變成有效,收銀和取消按鈕就變成無效,以防止用戶由于不小心產生的操作錯誤。
1.5 銷售記錄管理 當用戶選擇了銷售記錄管理時,系統將顯示以上窗口,供用戶選擇要刪除的銷售記錄。如果用戶選擇了刪除一年的銷售記錄,則選擇月份的下拉列表框將變為不可用。用戶選擇要刪除的銷售記錄后點擊“刪除”按鈕時,系統就查詢是否存在該時間的銷售記錄,如果存在就從銷售記錄表中刪除該記錄,如果不存在,則提示用戶銷售記錄不存在。
1.6 統計 統計的過程是通過對數據庫的多次查詢,然后把幾次查詢的結果再進行處理,最后才得到統計的結果。實現過程比較麻煩,無法只通過一次查詢來得到結果。下面以本月的按商品代號統計的過程為例,說明統計的實現過程。
統計的過程是首先從操作系統中得到當前的日期,經過一系列的字符處理,就可以得到本月第一天的日期(上述代碼中的A變量的最終值)。接著就通過執行下面的SQL語句:
select gid,sum(s_quantity)as quantity from sell where s_date>=A group by gid就得到了一個關于本月每種商品的銷售量的一個RecordSet。然后以本月商品的銷售量的RecordSet為基礎,對商品表進行查詢。即在本月商品的銷售量的RecordSet中取一條記錄,在商品表中查詢該記錄對應商品的進價和售價,這樣就可以算出售出一個該商品的盈利,然后把該商品的單個盈利乘以當前月商品的銷售量就可以得到該商品本月的總盈利。通過對本月商品的銷售量的RecordSet進行遍歷,直到前月商品的銷售量的RecordSet遍歷完成,就可以得到當前月銷售的每種商品的總盈利。
經過一個多月時間的設計和開發,超市營運系統基本開發完成,其功能基本上能滿足大部分超市的需求。不過由于設計時間比較短,我們所開發的超市營運系統還存在著不少不足的地方,比如沒有聯機幫助文檔,對即將過期的商品的打折問題還沒有解決好,用戶界面不夠美觀,出錯處理方面還做得不夠等,不過我們會針對這些問題對系統作進一步改進。
[1]Mike Gunderloy,Joseph L.Jorden.SQL Server 2000從入門到精通[M].電子工業出版社.
[2]薩師煊,王珊.數據庫系統概論[M].高等教育出版社.
[3]宋偉,吳建國.Visual Basic 6.0編程基礎[M].清華大學出版社.
[4]同志工作室.Visual Basic 6.0數據庫開發實例[M].人民郵電出版社.