畢業(yè)設(shè)計論文超市收銀系統(tǒng)_第1頁
畢業(yè)設(shè)計論文超市收銀系統(tǒng)_第2頁
畢業(yè)設(shè)計論文超市收銀系統(tǒng)_第3頁
畢業(yè)設(shè)計論文超市收銀系統(tǒng)_第4頁
畢業(yè)設(shè)計論文超市收銀系統(tǒng)_第5頁
已閱讀5頁,還剩20頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、目 錄1.課程設(shè)計目的32.課程設(shè)計任務(wù)與要求33.課程設(shè)計說明書44.課程設(shè)計成果85.程序調(diào)試過程246.設(shè)計問題的不足和改進方案257.課程設(shè)計心得268.參考文獻27要求:本次課程設(shè)計利用軟件設(shè)計基礎(chǔ)-C+課程中所學(xué)到的編程知識和編程技巧,完成具有一定難度和工作量的程序設(shè)計題目,幫助學(xué)生掌握編程、調(diào)試的基本技能,獨立完成所布置的任務(wù)。要求:1、對系統(tǒng)進行功能需求分析2、設(shè)計合理的數(shù)據(jù)結(jié)構(gòu)和系統(tǒng)框架3、編程簡練,程序功能齊全,能正確運行4、說明書、流程圖要清楚5、課題完成后必須按要求提交課程設(shè)計報告任務(wù):1基本要求:(1)顯示超市庫存商品信息。(2)顯示購物流程提示信息。(3)實現(xiàn)收款過

2、程,反復(fù)輸入所購各種商品的索引號和購買數(shù)量,直到輸入商品索引號“-1”,結(jié)束購物流程。(4)實現(xiàn)收銀,根據(jù)顧客所交現(xiàn)金,自動找零。2創(chuàng)新要求在基本要求達到后,可以進行創(chuàng)新設(shè)計。(1)為了簡單起見,本設(shè)計只要求處理一個購物籃,即假定整個超市只有一個顧客。這不是一個對真實場景的模擬,真正的場景應(yīng)該是有多個顧客,可能會同時去收銀臺結(jié)賬。因此,收銀臺處理的應(yīng)該是一個購物籃隊列,應(yīng)該單獨創(chuàng)建一個線程來追加這個隊列,然后由收銀臺分別為每個購物籃結(jié)賬,結(jié)完一個刪除一個。(2)對于超市的店主來說,還應(yīng)該有一個交互的界面,可以讓店主來完成更改貨物的單價、追加貨物等操作。概要設(shè)計模塊說明:在我們的程序中一共包括了

3、四個模塊,分別是:收銀模塊、查詢模塊、管理模塊、退出系統(tǒng)模塊。其中退出模塊是在主菜單函數(shù)中,其他三個通過是作為switch語句中的一部分,通過switch語句,把六大模塊聯(lián)系了起來。在查詢模塊中又分為四部分:查找商品、查詢所有、商品排名、退出查詢,總體思路和整體的設(shè)計思路一樣,退出模塊在查詢函數(shù)中,其他的模塊也是通過switch語句將它們倆接起來的。在排名菜單中包括總金額排名和銷售量排名,他們之間是通過if-else結(jié)構(gòu)連接的。其中排名用的是冒泡法。管理模塊:也是分為四部分,新建商品、刪除商品、修改商品和退出模塊,思路和上米娜的一樣。其中刪除商品菜單中包括刪除全部和單個刪除,他們之間的鏈接也是

4、通過if-else結(jié)構(gòu)連接的。 模塊結(jié)構(gòu)圖:超市收銀系統(tǒng)超市收銀 -商品查詢商品管理收銀找零退出程序查找商品查詢所有商品排名退出查詢新建商品刪除商品修改商品退出管理 詳細設(shè)計 總體流程圖:主菜單超市收銀商品查詢商品管理退出程序按索引號收銀總金額排名銷售量排名查找商品退出查詢商品排名查詢所有新建商品刪除商品修改商品退出管理單個刪除全部刪除購 買找 零按商品名購買各功能模塊流程圖:我的課題設(shè)計是合作的我主要負責(zé)商品查詢和商品管理,其中商品管理中的商品排名是合作伙伴的部分。下面是我制作部分的功能模塊流程圖:商品查詢流程圖:商品查詢查找商品查詢所有商品排名退出查詢輸入索引號,商品名判斷輸出商品信息息正

5、確錯誤繼續(xù)是否AB輸出CD主菜單商品管理新建商品輸入索引號,商品名判斷庫中存在不存在創(chuàng)建新信息:輸入單價、總數(shù)繼續(xù)是A否刪除商品B全部刪除A判斷有商品無商品刪除成功單個刪除B輸入商品名判斷刪除成功繼續(xù)無有是否判斷輸入商品名修改商品信息息繼續(xù)有商品無正確是繼續(xù)是否退出管理主菜單錯誤商品管理流程圖:4課程設(shè)計成果源代碼:類的定義:class Goods/商品類 Goods()name0='0'price=0;n1=0;n2=0;syh=0;/構(gòu)造函數(shù) Goods() /析構(gòu)函數(shù) void setn(char *n)strcpy(name,n);/設(shè)置屬性 void setsyh(i

6、nt syh)this->syh=syh; void setp(float p)price=p; void setn1(int n1)this->n1=n1; void setn2(int n2)this->n2=n2; char * getn()return (char *)name; /得到屬性 int getsyh()return syh;float getp()return price; int getn1()return n1; int getn2()return n2; Goods * getnext();/得到next指針值 void setnext(Goods

7、 *next);/設(shè)置next指針值 char name20;/商品名稱int syh;/商品索引號 float price;/價格 int n1;/總件數(shù) int n2;/已賣出 Goods *next;/指向下一個商品對象;Goods* Goods:getnext() return next;void Goods:setnext(Goods * next) /類成員函數(shù)的實現(xiàn)this->next=next;class Sale/銷售類Sale()/構(gòu)造函數(shù)Sale()/析構(gòu)函數(shù)void inig();/初始化void addg();/增加商品void show();/顯示商品void

8、 rank();/排名商品void query();/查詢商品void modify();/修改商品void delg();/刪除商品 void sellg();/銷售商品void saveg();/保存信息void run();/運行void zhucaidan();void guanli();void chaxun();Goods *head;/商品頭指針Goods *last;/最后的商品;我制作部分:#include<iostream.h>#include<string.h>#include<fstream.h>#include"Goods

9、.h"#include"Sale.h"void Sale:inig()/初始化 head=last=NULL;/將指針置空/讀取文件ifstream rf("Good.txt", ios:out|ios:nocreate,filebuf:openprot);/ ios:nocreat 打開一個已有的文件,如文件不存在,則打開失敗, filebuf:openprot通過構(gòu)造函數(shù)打開文件。if(rf.fail()cout<<"nn現(xiàn)在還沒有產(chǎn)品信息"/文件讀取錯誤!elserf.seekg(0,ios:end);/文

10、件置尾 long n=rf.tellg()/sizeof(Goods);/求取個數(shù) rf.seekg(0);/文件置開頭 for(int i=0;i<n;i+)Goods *p=new Goods;rf.read(char *)p,sizeof(Goods);p->setnext(NULL); if(head)last->setnext(p);last=p;else head=last=p;cout<<"nn"<<"現(xiàn)在數(shù)據(jù)庫中有"<<n<<"商品"/n個數(shù)據(jù)初始化成功

11、!/關(guān)閉文件rf.close(); void Sale:query()/查詢商品if(head=NULL)cout<<"產(chǎn)商品信息為空?。◣熘袝簾o商品)" elseloop:cout<<"nnnn 查找商品信息n" int y=1;Goods *p=head;cout<<"n請輸入索引號"int syh;cin>>syh;cout<<"n請輸入商品名: " char n20; cin>>n;while(p)if(strcmp(n,p->g

12、etn()=0)cout<<"n|-|"cout<<"n|商品索引號:"<<p->getsyh()<<"商品名"<<p->getn()<<"t單 價:"<<p->getp()<<"t總數(shù):"<<p->getn1()<<"t已賣 數(shù):"<<p->getn2()<<"t剩余 數(shù):"<

13、<p->getn1()-p->getn2();cout<<"n|-|"y=0;p=p->getnext();if(y)cout<<"n錯誤,無該商品! " else cout<<"n恭喜,操作成功!n" cout<<"nnn|-|"cout<<"n|您想繼續(xù)查找商品信息嗎? |n| 是(Y) 否(N) |" cout<<"n|-|n" char y;cin>>y;if(

14、y='Y'|y='y') goto loop;/loop是一個c語言語句行的標號,就是為了配合 goto(跳轉(zhuǎn))語句而給某行程序起的名字。void Sale:show()/顯示商品if(head=NULL)cout<<"nn產(chǎn)商品信息為空?。◣熘袝簾o商品)"else cout<<"nnnn 商品價目信息n" int i=0;Goods *p=head;cout<<"n|-|" while(p)if(p->getn1()-p->getn2()>0)co

15、ut<<"n| "<<i+1<<"t商品索引號:"<<p->getsyh()<<"商品名"<<p->getn()<<"t單 價:"<<p->getp()<<" 總數(shù):"<<p->getn1()<<" 已賣數(shù):"<<p->getn2()<<" 剩余數(shù):"<<p-&

16、gt;getn1()-p->getn2();cout<<"n|-|"if(p->getn1()-p->getn2()<=0)cout<<"n| "<<i+1<<"t商品索引號:"<<p->getsyh()<<"商品名"<<p->getn()<<"t單 價:"<<p->getp()<<" 總數(shù):"<<p-&

17、gt;getn1()<<" 已賣數(shù):"<<p->getn2()<<" 剩余數(shù):"<<p->getn1()-p->getn2()<<" n (注意,貨源為零。請及時進貨!)"cout<<"n|-|"p=p->getnext();i+;cout<<"n|商品種類數(shù): "<<i<<"|" cout<<"n|-|nnnn"

18、 void Sale: addg()/增加商品loop1:cout<<"nnn 創(chuàng)建新商品n" Goods *p=new Goods;loop:int syh;cout<<"n請輸入商品索引號"cin>>syh;p->setsyh(syh);char c20;cout<<"nn請輸入商品名n"/還應(yīng)輸入商品條形碼 cin>>c;/檢驗-Goods *p1=head; while(p1) if(strcmp(c,p1->getn()=0) cout<<&

19、quot;n錯誤,商品名重復(fù)!n" goto loop; p1=p1->getnext();/-p->setn(c);cout<<"n請輸入價格n"float pr;cin>>pr;p->setp(pr);cout<<"n請輸入商品總數(shù)n"int n1;cin>>n1; p->setn1(n1); p->setn2(0); p->setnext(NULL);if(head=NULL)head=last=p;else last->setnext(p);las

20、t=last->getnext();cout<<"n恭喜,操作成功!n"cout<<"nnn|-|"cout<<"n|您想繼續(xù)新建商品嗎? |n| 是(Y) 否(N) |" cout<<"n|-|n" char y;cin>>y;if(y='Y'|y='y') goto loop1;void Sale:delg()/刪除商品if(head=NULL)cout<<"產(chǎn)商品信息為空!(庫中暫無商品)因

21、此不能進行此操作"/應(yīng)彈出是否錄入產(chǎn)品信息選項elsecout<<"nnnn 刪除商品信息n" cout<<"n |-|"cout<<"n | 刪 除 菜 單 |" cout<<"n |-|"cout<<"n | A 全 部 刪 除 |" cout<<"n |-|"cout<<"n | B 單 個 刪 除 |" cout<<"n |-| n

22、請您選擇一個任務(wù): "char y;cin>>y;if(y='A'|y='a') /全部刪除Goods *p=head;while(p)Goods *temp=p->getnext();delete p;p=temp;head=last=NULL;cout<<"nn數(shù)據(jù)庫已經(jīng)全部刪除!"else/刪除單個loop: int y=1;Goods *p=head;cout<<"n請輸入要刪除商品名: " char n20; cin>>n;while(p) if(s

23、trcmp(n,head->getn()=0)head=head->getnext();delete p; y=0;break; /第一個就是elseif(p->getnext()->getn()!=NULL)&&(strcmp(n,p->getnext()->getn()=0)Goods *temp=p->getnext();p->setnext(temp->getnext();delete temp;y=0;break;p=p->getnext();if(y)cout<<"n錯誤,無該商品!

24、" else cout<<"n恭喜,操作成功!n"cout<<"nnn|-|"cout<<"n|您想繼續(xù)刪除商品信息嗎? |n| 是(Y) 否(N) |" cout<<"n|-|n" char c;cin>>c;if(c='Y'|c='y') goto loop;void Sale:modify()/修改商品if(head=NULL)cout<<"產(chǎn)商品信息為空?。◣熘袝簾o商品)因此不能進行此

25、操作"/應(yīng)彈出是否錄入產(chǎn)品信息選項elseloop: cout<<"nnnn 修改商品信息n" int y=1;Goods *p=head;cout<<"n請輸入要修改商品名: " char n20; cin>>n;while(p)if(strcmp(n,p->getn()=0)cout<<"n請修改索引號原索引號:"<<p->getsyh()<<"nn"int syh;cin>>syh;p->setsy

26、h(syh); cout<<"n請修改價格原價格:"<<p->getp()<<"nn"float pr;cin>>pr;p->setp(pr);loop1:cout<<"n請修改商品總數(shù)原總數(shù):"<<p->getn1()<<",已賣數(shù):"<<p->getn2()<<"nn"int n3;cin>>n3;p->setn1(n3);y=0;p=p-&g

27、t;getnext();if(y)cout<<"n錯誤,無該商品! " else cout<<"n恭喜,操作成功!n"cout<<"nnn|-|"cout<<"n|您想繼續(xù)修改商品信息嗎? |n| 是(Y) 否(N) |" cout<<"n|-|n" char y;cin>>y;if(y='Y'|y='y') goto loop;void Sale:saveg()/保存信息/寫入文件ofstr

28、eam wf("good.txt",ios:in|ios:trunc,filebuf:openprot);if(wf.fail()cout<<"nn文件讀取錯誤!"elseGoods *p=head;int n=0;while(p)wf.write(char *)p,sizeof(Goods);p=p->getnext();n+;/cout<<"nn保存"<<n<<"個數(shù)據(jù)成功!"/關(guān)閉文件wf.close(); void Sale:chaxun()/查詢菜單

29、char c2;docout<<"n |-|"cout<<"n | 查 詢 菜 單 |" cout<<"n |-|"cout<<"n | A 查 找 商 品 |" cout<<"n |-|" cout<<"n | B 查 詢 所 有 |"cout<<"n |-|" cout<<"n | C 商 品 排 名 |" cout<<&qu

30、ot;n |-|" cout<<"n | D 退 出 查 詢 |" cout<<"n |-|" cout<<"n | 請您選擇一個任務(wù) |" cout<<"n |-|nnn"cin>>c2;switch ( c2 )case 'a':case 'A':query();break;case 'b':case 'B':show();break;case 'c':case

31、'C':rank();break;case 'd':case 'D':break;while(c2!='d'&&c2!='D');/break;void Sale:guanli()/管理菜單char c3;docout<<"n|-|"cout<<"n | 商 品 管 理 |" cout<<"n |-|"cout<<"n | A 新 建 商 品 |" cout<<

32、"n |-|"cout<<"n | B 刪 除 商 品 |" cout<<"n |-|" cout<<"n | C 修 改 商 品 |" cout<<"n |-|" cout<<"n | D 退 出 管 理 |" cout<<"n |-|" cout<<"n | 請您選擇一個任務(wù) |" cout<<"n |-|nnn"ci

33、n>>c3;switch ( c3)case 'a':case 'A':addg();break;case 'b':case 'B':delg();break;case 'c':case 'C':modify();break;case 'd':case 'D':break;while(c3!='D'&&c3!='d');/break;void Sale:zhucaidan()/主菜單char c1;docou

34、t<<"nn 歡迎使用 "cout<<"nn |-|"cout<<"n | 主 菜 單 |" cout<<"n |-|"cout<<"n | A 超 市 收 銀 |" cout<<"n |-|" cout<<"n | B 商 品 查 詢 |" cout<<"n |-|" cout<<"n | C 商 品 管 理 |&qu

35、ot; cout<<"n |-|" cout<<"n | D 退 出 程 序 |"cout<<"n |-|"cout<<"n | 請您選擇一個任務(wù) |" cout<<"n |-|nnn"cin>>c1;switch (c1)case 'a':case 'A':sellg();break;case 'b':case 'B':chaxun();break;case&

36、#39;c':case'C':guanli();break;while(c1!='D'&&c1!='d');saveg();cout<<"nn 謝謝您的使用!"cout<<endl;void Sale:run() /運行inig();zhucaidan();void main()Sale s;s.run();運行結(jié)果:商品查詢運行結(jié)果:查詢所有商品信息運行結(jié)果:創(chuàng)建商品信息運行結(jié)果:刪除全部商品信息運行結(jié)果:修改商品信息運行結(jié)果:修改商品信息運行結(jié)果:退出程序運行結(jié)果:5.程序調(diào)

37、試過程程序的調(diào)試1. 打開Visual C+ 6.0,建立工程將類的定義放進頭文件文件夾里,將函數(shù)的實現(xiàn)部分放在了課題.cpp文件里。2. 連接、運行彈出運行窗口,根據(jù)提示運行。3. 首先向程序中錄入商品信息,因為超市中一定會預(yù)先存入商品,本程序提前錄入了10個商品信息。4. 因本程序中提前錄入了一些商品信息,但是可能不符合要求,所以店主可以根據(jù)需要進行自主錄入、修改、刪除等操作。其中可以修改商品的索引號、商品名、單價、商品總數(shù)等。也可以自主錄入店中已有的商品信息、刪除本店沒有的商品信息。其中上述所有的操作在商品管理選項中。5. 店主將所有信息錄入、修改完成后就可以對外開放,進行商品買賣了。所

38、有商品的買賣記錄都將記錄在本程序中(以后帶店主就可以進行商品銷售情況的查詢了)當(dāng)商品快賣完時,本程序會有提醒,提醒店主進行商品的今后處理。6. 商品查詢選項中,是對商店中的商品信息的查詢,可以查詢商店中一共有多少種商品,各個商品的單價、銷售數(shù)量、總數(shù)量等信息。還可以查找已錄入的單個商品的信息,當(dāng)然也可以查看商品的銷售情況,比如按銷售量排名,銷售金額排名,店主可以根據(jù)這信息安排如何進貨獲得最大利潤。遇到的問題:1. 問:什么是loop?答:loop是一個c語言語句行的標號,就是為了配合 goto(跳轉(zhuǎn))語句而給某行程序起的名字。2. 問:什么是內(nèi)聯(lián)函數(shù)?3. 答:在類內(nèi)定義的成員函數(shù)為內(nèi)聯(lián)函數(shù)。

39、4. 問:new是什么意思?答:c+ 中NEW是一個操作符,也就意味著NEW是個關(guān)鍵字,而操作符也就意味著是內(nèi)置在編譯器內(nèi)部的。NEW用來生成某種類型的一個對象,就是樓上說的實例化一個對象,通常這個對象是在堆中生成,相應(yīng)NEW的是DELETE用來銷毀一個已生成的對象以釋放堆空間。NEW和DELETE在C+中編譯器會自己管理的5. 問:sizeof什么意思?答:在c語言中計算數(shù)據(jù)類型長度。6. 問:tellg()、seekg()、tellp()什么意思?7. 答:分別是:返回輸入文件指針的當(dāng)前位置、輸入文件的指針移到指定位置、返回輸入文件指針的當(dāng)前位置。6.設(shè)計問題的不足和改進方案1. 設(shè)計不足的地方:剛開始用一個.cpp文件存儲的,給人的感覺不是特別好,代碼太長,沒分模塊 容易使人厭煩。改進方案:做了一個工程,將類的定義放在了頭文件中,減少了.cpp中的代碼長度,看起來比較舒服了。2. 設(shè)計不足的地方:剛開始做的時候把所有的菜單放在了一起,做了一個函數(shù),在檢查代碼的時候給人眼花繚亂的感覺。改進方案:將各個菜單分離出來,各自做成函數(shù),用switch結(jié)構(gòu)將函數(shù)之間聯(lián)系起來。3. 設(shè)計不足的地方:在商品管理菜單中單個刪除商品的選項中,如果商品庫中

溫馨提示

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

最新文檔

評論

0/150

提交評論