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