超市收銀系統(tǒng)實訓報告
信息技術(shù)系實訓報告
實訓報告
一、實訓目的:如今,平價市場、超市因貨物品種繁多且購物的人流量大,所以需要一套系統(tǒng)以實現(xiàn)商品的進、銷、存、財務(wù)及人員等一體化、自動化管理,以降低管理費用,經(jīng)營成本,最終達到以最小的投資實現(xiàn)最大的利潤為目的。電子信息技術(shù)的應(yīng)用發(fā)展,收款機系統(tǒng)以成為一個專門的行業(yè)。對于零售業(yè)的物品價格管理,銷售收銀,銷售打單,以及采購及庫存的各種報表,數(shù)據(jù)的匯總起著不可替代的作用。以收銀系統(tǒng)為項目,我們可以熟悉c#及數(shù)據(jù)庫管理系統(tǒng)的結(jié)構(gòu)與組成,了解該系統(tǒng)的運行環(huán)境,編寫要求,鞏固C#的基本概念,對C#的數(shù)據(jù)類型、分支和循環(huán)有著較深刻的理解并能正確的使用,提高我們的編程能力。二、實訓項目:信息技術(shù)系實訓報告
模擬超市收銀功能,對于顧客購買的每一件商品,根據(jù)商品條碼信息,查詢商品名稱,價格,計算商品的總應(yīng)付金額。在此基礎(chǔ)上,根據(jù)顧客付款金額,計算找零,完成交易。1.提示收銀員輸入商品條碼信息;2.根據(jù)商品條碼查找商品品名、價格等信息;3.提示收銀員輸入商品數(shù)量;4.計算該商品應(yīng)付金額,輸出明細,并將該金額加到總的應(yīng)付金額上;5.詢問是否還需要輸入下一件商品的條碼,如果是,則轉(zhuǎn)步驟1,否則轉(zhuǎn)步驟6;6.提示收銀員應(yīng)付金額,記錄實收金額;7.計算找零;8.交易完成。信息技術(shù)系實訓報告
三、實訓步驟:1.需求分析:
超市收銀,對于顧客購買的每一件商品,根據(jù)商品條碼信息,查詢商品名稱,價格,計算商品的總應(yīng)付金額。在此基礎(chǔ)上,根據(jù)顧客付款金額,計算找零,完成交易。步驟:
(1)提示收銀員輸入商品條碼信息;
(2)根據(jù)商品條碼查找商品品名、價格等信息;(3)提示收銀員輸入商品數(shù)量;
(4)計算該商品應(yīng)付金額,輸出明細,并將該金額加到總的應(yīng)付金額上;(5)詢問是否還需要輸入下一件商品的條碼,如果是,則轉(zhuǎn)步驟(1),否則轉(zhuǎn)步驟(6);(6)提示收銀員應(yīng)付金額,記錄實收金額;(7)計算找零;(8)交易完成。
流程圖:
提示收銀員輸入商品條碼信息根據(jù)商品條碼查找商品品名、價格等信息提示收銀員輸入商品數(shù)量計算該商品應(yīng)付金額,輸出明細計算總的購買金額繼續(xù)輸入否是顯示應(yīng)付金額,計算實收金額計算找零結(jié)束交易
程序代碼:
信息技術(shù)系實訓報告
usingSystem;
usingSystem.Collections.Generic;usingSystem.Text;
namespace作業(yè){
classProgram{
staticvoidMain(string[]args){
inttoalPrice=0;
Console.WriteLine("============xx超市收銀系統(tǒng)============");Console.WriteLine("收銀時間:"+DateTime.Now.ToLocalTime());Console.WriteLine("收款單號:模擬100收款員:100");
Console.WriteLine("========================================");//1.提示收銀員輸入商品條碼信息;while(true){
Console.Write("請輸入商品條碼:");stringbarCode=Console.ReadLine();
//2.根據(jù)商品條碼查找商品品名、價格等信息,此處為模擬過程,實際情況需要到//數(shù)據(jù)庫中查找
stringgoodsName="商品"+barCode;//用商品+條碼的形式模擬商品名稱
intgoodsPrice=newRandom().Next(20,50);//隨機價格,到之間//3提示收銀員輸入商品數(shù)量;
Console.Write("請輸入商品數(shù)量:");
intgoodsNum=int.Parse(Console.ReadLine());//4計算該商品應(yīng)付金額,輸出明細,并將該金額加到總的應(yīng)付金額上;toalPrice+=goodsPrice*goodsNum;//付款金額為單價*數(shù)量//輸出單筆交易明細
Console.WriteLine("{0}{1}*{2}={3}",goodsName,goodsPrice,goodsNum,goodsPrice*goodsNum);
//6.詢問是否還需要輸入下一件商品你條碼,如果是,則繼續(xù)循環(huán),否則退出循環(huán);
Console.Write("是否繼續(xù)輸入下一個商品(Y/N)");stringisNext=Console.ReadLine();if(isNext=="N"||isNext=="n")break;//如果輸入為N,結(jié)束循環(huán)}
//7.提示收銀員應(yīng)付金額,記錄實收金額;
Console.WriteLine("應(yīng)付金額為:{0}",toalPrice);Console.Write("請輸入實收金額:");
intpay=int.Parse(Console.ReadLine());Console.WriteLine("實收金額為:{0}",pay);//8.計算找零;
信息技術(shù)系實訓報告
Console.WriteLine("找零:{0}",pay-toalPrice);Console.WriteLine();//9.交易完成。
Console.ReadLine();}}}
四、實訓中遇到的問題及解決方法:怎樣獲取商品條碼?
怎樣獲取商品單價?intgoodsPrice=newRandom().Next(20,50);//隨機價格,到之間?
擴展閱讀:超市收銀系統(tǒng)實習報告
畢業(yè)實習報告
1、課程設(shè)計目的:
熟悉大型數(shù)據(jù)庫管理系統(tǒng)的結(jié)構(gòu)與組成;熟悉數(shù)據(jù)庫應(yīng)用系統(tǒng)的設(shè)計方法和開發(fā)過程;
掌握一種大型數(shù)據(jù)庫管理系統(tǒng)(DM5、ORACLE或SQLSERVER)的應(yīng)用技術(shù)和開發(fā)工具的使用;
熟悉數(shù)據(jù)庫設(shè)計工具的使用;熟悉數(shù)據(jù)庫安全的相關(guān)知識和技術(shù);熟悉數(shù)據(jù)庫系統(tǒng)的管理和維護。
2、畢業(yè)實習設(shè)計要求:
在課程設(shè)計指導老師的指導下,選定一個數(shù)據(jù)庫應(yīng)用系統(tǒng)的題目,完成數(shù)據(jù)庫的設(shè)計和應(yīng)用系統(tǒng)設(shè)計,并提交相應(yīng)文檔。
數(shù)據(jù)庫管理系統(tǒng)僅限D(zhuǎn)M5、Oracle以及MSSQLServer;
開發(fā)工具限PowerBuilder、Delphi、C++、JAVA、.NET平臺或其它動態(tài)網(wǎng)頁開發(fā)工具;系統(tǒng)采用客戶/服務(wù)器(C/S)結(jié)構(gòu)或瀏覽器/服務(wù)器(B/S)結(jié)構(gòu)實現(xiàn)。
系統(tǒng)應(yīng)嚴格遵照題目要求進行設(shè)計,可在其基礎(chǔ)上進一步細化完善,但不得違背,原則上不額外增加與要求無關(guān)的功能。
系統(tǒng)中應(yīng)適當體現(xiàn)下列技術(shù)的應(yīng)用:存儲過程,觸發(fā)器,索引。提交系統(tǒng)的源碼及文檔。
一、設(shè)計的應(yīng)用背景
本系統(tǒng)是一個超市收銀系統(tǒng)。顧名思義,本系統(tǒng)用來管理和更新超市日常交易數(shù)據(jù),如收銀員的管理,收銀員的工作記錄,日常交易記錄,顧客信息管理,商品信息管理,等等,所有的數(shù)據(jù)存儲在達夢數(shù)據(jù)庫的system庫中。本系統(tǒng)實現(xiàn)的主要功能為:
1、收銀:收銀員輸入顧客的會員卡卡號(若有卡)、所購商品的貨號等信息,系統(tǒng)根據(jù)這些信息獲取相應(yīng)的價格信息并計算應(yīng)收取的總金額。完成收銀后,記錄交易信息,修改有關(guān)種類商品的剩余量以及該持卡顧客的消費情況。
2、發(fā)卡:顧客可交納一定的費用(如50元)辦理一張會員卡,以后在該商場購物可憑卡享受9折優(yōu)惠。如果一個未持卡顧客一次購物滿1000元,可為其免費發(fā)放一張會員卡,每張卡的優(yōu)惠期為一年,一年內(nèi)消費達到一定金額的可繼續(xù)享受下一年的優(yōu)惠。
3、款項盤存:收銀員下班或交接班前對本收銀臺中本班次收取的款額進行盤存,明確責任。4、商品信息的錄入、修改、刪除和查詢等。5、收銀員身份及口令管理。
二、
數(shù)據(jù)庫設(shè)計過程
1、需求分析
(1)、信息要求
顧客信息:顧客編號(會員卡號)、顧客姓名、顧客性別、注冊時間、是否到期、消費金額。
收銀員信息:收銀員編號、收銀員姓名、收銀員性別、登錄名,密碼。商品信息:商品編號、商品名稱、單價、現(xiàn)有庫存。收銀信息:收銀員編號、收銀金額、登錄時間,注銷時間。交易信息:顧客編號,商品編號,交易時間,交易數(shù)量。(2)、處理要求A、處理方式:聯(lián)機處理。B、處理時間要求:<2S。C、處理功能:
(I)、添加新信息,修改現(xiàn)存信息,刪除無用信息,查詢信息。
(II)、計算一次交易的金額,如果是會員,就可以享受9折優(yōu)惠,如果非會員消費金額超過1000元,免費為其發(fā)放一張為期一年的會員卡。
(III)、只有收銀員以正確的用戶名和密碼才能登錄本系統(tǒng)。(3)、安全性和完整性要求
A、安全性要求:只有收銀員以正確的用戶名和密碼才能登錄本系統(tǒng),進行相應(yīng)操作。后臺服務(wù)
器(達夢數(shù)據(jù)庫)會生成相應(yīng)的日志文件。B、完整性要求:
(I)實體完整性:如上信息要求一欄所示,黃色背景的為primarykey。
(II)參照完整性:收銀信息和交易信息中的收銀員編號,顧客編號和商品編號均為前面的參照。(III)用戶定義完整性:如性別只能為‘男’或‘女’,姓名不能為空,登錄名必須唯一,密碼必須六位以上,等等。
2、概念設(shè)計
根據(jù)需求分析得到的信息抽象為E-R模型如下:
編號姓名性別密碼收銀員單價庫存登錄名M名稱商品收銀編號下班時間1交易金額上班時間N1數(shù)量時間顧客編號姓名性別注冊時間是否過期消費金額
3、邏輯設(shè)計
根據(jù)以上分析,得到本系統(tǒng)的基本關(guān)系模式為:
顧客(顧客編號、顧客姓名、顧客性別、注冊時間、是否到期、消費金額)。
createtableCustomer
(Cnochar(9)primarykey,Cnamechar(20),
Csexchar(2)check(Csexin("男","女")),
Cregdate,
Cactivechar(2)check(Cactivein("是","否")),
Cconsumptiondecimal(8,2));
收銀員(收銀員編號、收銀員姓名、收銀員性別、登錄名,密碼)。
createtableCashier();
商品(商品編號、商品名稱、單價、現(xiàn)有庫存)。createtableGoods(Gnochar(9)primarykey,Gnamechar(20)notnull,Gpricedecimal(5,2),Gstoragesmallint);
收銀(收銀員編號、收銀金額、登錄時間,注銷時間)。createtableCashinfo(Cnochar(9)notnull,Crecvdecimal(7,2),CtimeOntimestamp(0),CtimeOfftimestamp(0),foreignkey(Cno)referencesCashier(Cno));
交易(顧客編號,商品編號,交易時間,交易數(shù)量)。
createtableTradeinfo(Cnochar(9),Gnochar(9),Tquantitysmallint,Ttimetimestamp(0),--primarykey(Cno,Gno),
foreignkey(Cno)referencesCustomer(Cno),foreignkey(Gno)referencesGoods(Gno));
為了編程的方便,另外建立了幾個視圖如下:
查詢收銀信息(收銀員編號、收銀員姓名、收銀金額、登錄時間,注銷時間)查詢交易信息(顧客編號,顧客姓名,商品編號,商品名稱,交易時間,交易數(shù)量)
Cnochar(9)primarykey,Cnamechar(20)notnull,
Csexchar(2)check(Csexin("男","女")),
Clognamechar(20)unique,
Clogpasschar(20)check(Clogpasslike"______%")
三、
應(yīng)用系統(tǒng)的設(shè)計過程
1、系統(tǒng)模塊結(jié)構(gòu)圖
超市收銀系統(tǒng)幫助登錄管理收銀員信息管理顧客信息管理商品信息管理交易信息管理收銀信息管理注銷、退出系統(tǒng)添加、刪除、修改、查詢添加、刪除、修改、查詢添加、刪除、修改、查詢添加、查詢、交易添加、查詢2、系統(tǒng)工作流程
1)以收銀員的身份登錄(密碼為123456),如下圖:
2)對收銀員信息,顧客信息,商品信息做相應(yīng)操作,以收銀員信息為例:
A、添加信息,如果出現(xiàn)非法的輸入,會有提示,并會返回該界面等待重新輸入(如兩次
密碼不同,編號已存在,性別是‘男’‘女’之外的其他,等等)。如圖:
B、刪除信息,輸入四個參數(shù)中任意的幾個,系統(tǒng)會把滿足此參數(shù)組合的所有記錄刪除
掉。如圖:C、修改信息,要輸入正確的編號。在需要修改的地方輸入新的參數(shù),不需要修改的地
方保持空白。如圖:
D、查詢信息,可以采用條件查詢,方法同刪除。如圖:
3)進行交易。輸入商品編號和對應(yīng)的數(shù)量(最多5種商品),如果是會員,輸入會員卡號,否則不輸入。以會員為例,如下圖:
輸入購買信息
判斷為會員
此后,系統(tǒng)會根據(jù)交易的情況,自動彈出修改相應(yīng)數(shù)據(jù)(如顧客的消費金額,商品的庫存,交易信息等等)的對話框,其中,正確的修改數(shù)據(jù)已經(jīng)默認的填在了對話框中,收銀員只需點擊確定按鈕即可。
4)3、關(guān)鍵技術(shù)和算法
注銷以后,會彈出重新登陸的對話框。退出直接退出本系統(tǒng)。
計算應(yīng)收金額
1)登錄對話框增加了“記住用戶名”這一選項。實現(xiàn)算法為:將選項是否勾選的狀態(tài)用一個bool變量表示,新建一個名為“user.dat”的文件。每次登陸時,讀取文件中的內(nèi)容到“用戶名”欄中。如果選擇了“記住用戶名”,則將用戶輸入的用戶名重新寫到user.dat文件中,否則寫入空。
2)系統(tǒng)中使用了很多對話框,而且每個對話框都不相同。我采用了復(fù)用對話框的方式。實現(xiàn)方法為:定義狀態(tài)變量
typedefenumstype{
CASHIER_ADD,CASHIER_DELETE,CASHIER_EDIT,CASHIER_QUERY,
CUSTOMER_ADD,CUSTOMER_DELETE,CUSTOMER_EDIT,CUSTOMER_QUERY,
GOODS_ADD,GOODS_DELETE,GOODS_EDIT,GOODS_QUERY,CASHINFO_ADD,CASHINFO_QUERY,
TRADE_ADD,TRADE_QUERY}STYPE;
在OnInitDialog()函數(shù)中,用switch-case語句來初始化不同用途的對話框。這樣,16個對話框只用1個對話框資源。
3)為了能夠?qū)崟r更新系統(tǒng)中的時間(如交易時間,上班下班時間等等),create幾個觸
發(fā)器用來獲得系統(tǒng)時間。
//添加新會員的時候,自動獲得系統(tǒng)時間作為注冊時間createtriggerInsert_CustomerbeforeinsertonCustomerforeachrowbegin:new.Creg:=curdate();end;
//添加交易信息的時候,自動獲得系統(tǒng)時間作為交易時間createtriggerInsert_TradebeforeinsertonTradeinfo
foreachrowbegin:new.Ttime:=current_timestamp();end;
--用戶登錄系統(tǒng)時插入新記錄
createtriggerInsert_CashinfoOnbeforeinsertonCashinfoforeachrowbegin:new.CtimeOn:=current_timestamp();end;
--用戶更新Crecv時(logout)createtriggerInsert_CashinfoOffbeforeupdateonCashinfoforeachrowbegin
if:old.CtimeOffisnullthen:new.CtimeOff:=current_timestamp();endif;end;
為了查詢的方便,創(chuàng)建了Query_Tradeinfo和Query_Cashinfo兩個視圖。createviewQuery_Cashinfo(Qcno,Qcname,Qcrecv,Qctimeon,Qctimeoff)as
selectCashinfo.Cno,Cname,Crecv,CtimeOn,CtimeOfffromCashinfo,Cashier
whereCashinfo.Cno=Cashier.Cno;
createview
Query_Tradeinfo(Qcno,Qcname,Qgno,Qgname,Qgprice,Qttime,Qtquantity)as
selectTradeinfo.Cno,Cname,Tradeinfo.Gno,Gname,Gprice,Ttime,TquantityfromTradeinfo,Customer,Goods
whereTradeinfo.Cno=Customer.CnoandTradeinfo.Gno=Goods.Gno;
4)5)
在交易的過程中,會彈出其他的對話框用來更新數(shù)據(jù)庫,采用了重載消息函數(shù)的方法,使得更新的數(shù)據(jù)能以參數(shù)的形式傳到對話框中。
采用了動態(tài)條件修改,刪除和查詢的方式,實現(xiàn)方法是,在源程序中動態(tài)改變查詢的條件。以刪除收銀員為例:
//m_Cashier是CCashierRecordSet(從CRecordSet繼承,與Cashier表關(guān)聯(lián))的對象
//如果輸入不為空
if(m_strEdit1.GetLength()){}
if(bFirst)m_Cashier.m_strFilter+="and";strFilter.Format("Cno="%s"",m_strEdit1);//增加對應(yīng)的條件
m_Cashier.m_strFilter+=strFilter;bFirst=TRUE;
if(m_strEdit2.GetLength()){if(bFirst)m_Cashier.m_strFilter+="and";strFilter.Format("Cname="%s"",m_strEdit2);m_Cashier.m_strFilter+=strFilter;bFirst=TRUE;}
if(m_strEdit3.GetLength()){if(bFirst)m_Cashier.m_strFilter+="and";strFilter.Format("Csex="%s"",m_strEdit3);m_Cashier.m_strFilter+=strFilter;bFirst=TRUE;}
if(m_strEdit4.GetLength()){}
if(bFirst)m_Cashier.m_strFilter+="and";
strFilter.Format("Clogname="%s"",m_strEdit4);m_Cashier.m_strFilter+=strFilter;bFirst=TRUE;
四、
設(shè)計心得體會
這次畢業(yè)實習設(shè)計收獲頗大,首先對視圖和觸發(fā)器的認識和作用都上了一個臺階。通過這次的課程設(shè)計,我不僅拓寬了自己的知識面,還在實踐過程中鞏固和加深了自己所學的理論知識,使自己的技術(shù)素質(zhì)和實踐能力有了進一步的提高,同時我的專業(yè)水平也有了很大的進步。熟悉大型數(shù)據(jù)庫管理系統(tǒng)的結(jié)構(gòu),熟悉了數(shù)據(jù)庫系統(tǒng)開發(fā)工具的使用。
同時,在軟件開發(fā)方面也累積了不少經(jīng)驗,對軟件工程的知識重要性的認識更深了。通過設(shè)計過程的鍛煉,自己分析問題和解決問題的能力都得到了鍛煉和提高,完善了自己的知識結(jié)構(gòu),加深了對所學知識的理解。
這次課程設(shè)計完成后,體會頗多,在學與做的過程中,取長補短,不斷學習新的知識,吸取經(jīng)驗,達到進步的目的。在學與做的過程中自身的努力以及相關(guān)圖書資料的幫助,對ODBC編程接口的理解也從能夠使用提高到了熟練使用,對程序開發(fā)的一般過程和對數(shù)據(jù)庫知識的運用也有了進一步的了解。
在這個快速發(fā)展的當代社會里,數(shù)據(jù)庫已經(jīng)普遍應(yīng)用在各個領(lǐng)域。通過課程設(shè)計,我學習到不少的數(shù)據(jù)庫方面的知識,但由于自己的理論知識水平有限,實踐知識和設(shè)計經(jīng)驗不足,在設(shè)計過程中難免存在一些問題,甚至錯誤。這些我會在以后的工作和實踐中加以改進和提高。
友情提示:本文中關(guān)于《超市收銀系統(tǒng)實訓報告》給出的范例僅供您參考拓展思維使用,超市收銀系統(tǒng)實訓報告:該篇文章建議您自主創(chuàng)作。
來源:網(wǎng)絡(luò)整理 免責聲明:本文僅限學習分享,如產(chǎn)生版權(quán)問題,請聯(lián)系我們及時刪除。