




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、*大學程序設計課程設計報告商場銷售管理系統學號姓名日期目 錄一.需求分析.3二.程序主要功能.3三.程序運行平臺.4四.系統功能框架圖.5五.程序類說明.6六.模塊分析.7七.比較有特色的地方.13八.存在的不足與對策.13九.編程體會14十.程序源代碼.15一.需求分析本系統旨在實現一個小型的商城銷售管理系統,對于一個小型的商場或銷售店鋪來說,實施本系統不僅可以減少工作人員數量,降低成本,而且可以大大提高工作效率,降低工作強度,方便賣家記錄商品流通信息,統計銷售情況,分析市場需求,幫助賣家更好的管理商場,以獲取跟多的利潤。程序主要實現進貨管理、商品基本信息查詢與修改、利潤計算與銷售統計、庫存
2、管理等及一些輔助功能。二.程序主要功能該程序的主要功能有1.商品信息管理可對商品信息進行查看、按一定規則排序及商品查找,其中具體信息包括 商品名稱,編號,進貨成本價,銷售價,進貨總量,銷售量,可以對庫存,已獲得利潤,總體成本價等進行計算2.管理員功能可實現對商品信息的進行修改,添加,刪除等功能,并進行文件的操作儲存,以更好的保護信息,能有效的管理好商品信息的隱秘性。3.輔助功能該程序實現了一下清屏,清空文件,操作提示等善后輔助功能,能幫助用戶更好的應用該程序,使程序的功能最大化實現。三程序運行平臺該程序是用VC+6.0制做的,使用Microsoft Visual C+ 6.0運行該程序,具體操
3、作是:打開Microsoft Visual C+ 6.0,菜單欄里點文件打開工作區找到“圖書管理系統.dsw”這個文件打開,或者在資源管理器中雙擊該文件,此時,VC+6.0會自動打開,并載入該系統相關資源,點擊Run命令菜單或者或用快捷鍵Ctrl+F5運行該程序。trl計分析能四.系統功能框架圖商城銷售管理系統進入系統退出系統商品信息查看顯示全部內容商品查找顯示商品信息按銷量排序按利潤排序商品基本信息名稱編號成本單價銷量庫存總量利潤商品管理修改數據創建新表增加商品刪除商品文件存檔從文件中提取數據其它輔助功能使用說明及幫助等五.程序類說明有關商品信息的類/存儲商品信息class GoodsInf
4、opublic:char * name ; /商品名稱int number; /商品編號float cost_p; /成本單價float unit_p; /銷售單價int num_all; /共計商品件數int num_now; /現存商品件數int num_sell; /已售出商品件數float cost_all; /進貨總計成本價float profit; /已銷售商品獲得的利潤GoodsInfo * next; /指向下一個商GoodsInfo(); /構造函數GoodsInfo(char * a,int b,float c,float u,int all,int sell) ; /重載
5、構造函數void operator= (const GoodsInfo &right); /重載=void setInfo(char * a,float c,float u,int all,int sell) ; /數據載入char* getname()return name; /返回姓名用于查找 顯示商品信息void Amend(GoodsInfo *);void show(GoodsInfo *);GoodsInfo() delete name;;商品類鏈表class GoodList :public GoodsInfopublic:GoodList();/構造函數,指針初始化Go
6、odList();/析構函數,釋放GoodsInfo * head; /頭指針GoodsInfo * p; /活動指針1GoodsInfo * p2; /活動指針2(指向最后一個)void create(); /創建函數void showinfo(GoodsInfo *); /顯示GoodsInfo * search(); /查找void saveInfo();/信息存檔void getInfo(); /上傳信息void addInfo(GoodsInfo *);/添加數據void sort(); /按銷量顯示void menu();void delete_();/刪除節點;六.模塊分析菜單:
7、所有函數均封裝在商品類及商品鏈表類中(GoodsInfo 和 GoodList)信息存儲在類GoodsInfo中,類中定義了3個GoodsInfo指針,一個是*head,作為鏈表的頭指針,另一個是*p,作為活動指針,一個*p2,指向鏈表的尾節。在不同的類的成員函數中都可使用,為了防止該活動指針使用過頻,造成幾個函數同時使用同一個指針指向不明,在有些函數里還定義了一些臨時指針。1.創建此函數為是創建商品信息數據,構成商品信息表是使用,用于讓用戶批量添加商品。按照程序的提示,可依次添加商品信息,按Y繼續,其他建則停止,返回主菜單。此時鏈表創建成功,*head指向鏈表的頭,p2指向尾。可用于后續函數
8、的操作。2.添加跟創建有一樣的用途,用于添加商品信息,不同的是添加只能用于已有原鏈表存在的情況下。但這個不能批量添加,一次只能添加一個,并且存放在原鏈表尾節點的后一個,形成一個新的鏈表。3.查找顧名思義,此函數用于查找商品信息。在原始信息過多的時候,可以通過查找(按商品編號和商品名稱兩鐘方式)查看自己想看的商品詳細信息。若不存在該商品,程序則自動輸出未找到,然后返回主菜單。若查找到該商品,函數返回該節點的指針,并用單個顯示函數顯示出來。4.修改此函數是基于查找函數之上的。在查找到需要修改的單元后,選擇自己需要修改的項目。函數會詢問是否需要繼續修改,Y繼續,其他鍵則返回主菜單。5.刪除刪除和修改
9、一樣,基于查找函數之上,用于刪除不需要的節點。操作方法也和前面類似。6.顯示此函數用于批量顯示商品信息。該函數以表格的型式顯示,明了清晰,有助于比較。7.排序排序是基于顯示函數的一個函數。該函數用選擇排序法,以兩種(按銷量和按利潤)方法排序顯示,有助于商家對比比較分析哪種商品的銷量好利潤高,便于管理和優化商城的盈利。8.上傳當需要輸入數據過多過大時,可以通過上傳函數,直接把文件中的數據讀到程序中并形成鏈表,然后再繼續后續操作。這個和創建函數具有差不多的功能,不過一個是從鍵盤讀入,一個是從文件中讀入。文件上傳成功后,函數會自動顯示成功,然后跳到主菜單進行其他項目。9.存檔上傳和存檔是文件和程序的
10、兩個接頭。在數據操作過程中為避免數據丟失,可邊操作變保存,在退出程序之前,程序也會自動彈出詢問是否需要保存,這是比較人性化的一點,以免造成不可估量的后果。保存成功后會自動輸出成功字樣,并退出或繼續程序。存檔和上傳合并利用,下一次運行程序時,可以直接上傳上次所保存的數據然后繼續操作,就不需要工作人員一個一個慢慢輸入了。10.其他清屏是一個輔助函數,為了清晰界面方便操作美化外觀。退出程序是會自動詢問是否保存文件,然后調用析構函數,釋放鏈表清除數據,然后安全退出。七、比較有特色的地方有特色的函數指的是實現地較為巧妙的類的構造函數、成員函數、析構函數等函數,也可以是指針處理的函數,文件處理的函數等比較
11、有特色的函數,能體現巧妙構思即可。特別是運算附的重載,大大減小了代碼的數量,簡潔了程序。還有就是文件操作方面,比較合理和人性化。八.存在的不足在文件編寫的時候我此次采用的是txt儲存數據,雖然有助于使用者查看數據,但是在面對一串龐大數據是,dat文件的效率明顯會高很多。還有就是由于學得不夠深,程序的功能總體來說還比較少,有待以后更深層的學習后完善。比如界面方面的處理,和對每天銷售情況的記錄等等。商品流通的具體過程等該程序都沒有記錄。需要改進的地方還有很多。九、心得體會通過這次課程設計,我清楚的認識到了C+是一門很龐大的并且很有實用價值的一門學科,它一種非常簡潔高效的語言。類的特色在這次編程過程
12、中有了充分的體會。就以前所學的C語言而言,我明顯感覺到C+在編寫這種比較復雜的程序時的優勢,他的重載函數運算符的等操作也是一大有點。模塊的分塊化,當需要用到某個函數時再進行調用,大大增強了程序的可讀性,而且代碼也更加合理清晰。就拿這次我所寫的商場銷售管理系統來說,商品類的操作是一個整體,寫在一個中.cpp,文件里面同時也可以另外寫到一個.h的頭文件里面,在寫程序的時候再進行調用。課程設計真的很能鍛煉人,平時上課都是講的基礎知識,上機也只是編寫的小程序,不能把知識融會貫通。然而這次課設是編寫的一個小系統,把所學的知識都聯系起來了,在剛剛看到要求時是覺得有很大的難度的,畢竟是第一次編寫一個商場銷售
13、管理系統。但是想到有志者事競成,只要敢于思考敢于嘗試,按步驟一步一步來也是能編寫出程序的。于是我首先把程序類圖先畫了出來,把程序基本結構勾勒出來,化整為零,一個一個小功能慢慢寫起,寫完一個在主函數中驗證一個看是否正確,通過后在進行下一個,逐步實現。而后編寫主函數,菜單等,完善功能。因為我剛剛入門c+,基本工還不足,能力還很弱,所以在寫的過程中遇到很多困難,有些以前很熟悉的代碼也忘了,于是我開始翻閱以前的書籍,邊對照邊回憶,終于完成了。特別是在文件操作方面尤為薄弱,我意思到了自己的弱點。由于自己的不足,以后學習還要更加努力,不懂時多問老師多向同學學習。作為一個計算機專業的學生,計算機語言是我們的
14、基本功,我們應該扎實自己的基礎,才能更快更好的發展。十.源代碼#ifndef LIST_H#define LIST_H#include "GOODSINFO.H"class GoodList :public GoodsInfopublic:GoodList();/構造函數,指針初始化GoodList();/析構函數,釋放GoodsInfo * head; /頭指針GoodsInfo * p; /活動指針1GoodsInfo * p2; /活動指針2(指向最后一個)void create(); /創建函數void showinfo(GoodsInfo *); /顯示Goods
15、Info * search(); /查找void saveInfo(); /信息存檔void getInfo(); /上傳信息void addInfo(GoodsInfo *);/添加數據void sort(); /按銷量顯示void menu();void delete_();/刪除節點;#endif/存儲商品信息#ifndef GOODSINFO_H#define GOODSINFO_Hclass GoodsInfopublic:char * name ; /商品名稱int number; /商品編號float cost_p; /成本單價float unit_p;/銷售單價int num_
16、all;/共計商品件數int num_now;/現存商品件數int num_sell;/已售出商品件數float cost_all;/進貨總計成本價float profit;/已銷售商品獲得的利潤GoodsInfo * next;/指向下一個商GoodsInfo(); /構造函數GoodsInfo(char * a,int b,float c,float u,int all,int sell) ; /重載構造函數void operator= (const GoodsInfo &right); /重載=void setInfo(char * a,float c,float u,int a
17、ll,int sell) ; /數據載入char* getname()return name; /返回姓名用于查找/顯示商品信息void Amend(GoodsInfo *);void show(GoodsInfo *);GoodsInfo() delete name;#endif#include<iostream>using namespace std;#include"GOODSINFO.H"#include<string.h>GoodsInfo:GoodsInfo() /構造函數name=new char 21;number=cost_p=un
18、it_p=num_all=num_now=num_sell=cost_all=profit=0;next=NULL;GoodsInfo:GoodsInfo(char * a,int b,float c,float u,int all,int sell) /重載構造函數strcpy(name,a);number=b;cost_p=c;unit_p=u;num_all=all;num_sell=sell;num_now=all-sell;cost_all=c*all;profit=(u-c)*sell;next=NULL;void GoodsInfo:operator= (const GoodsI
19、nfo &right) /重載=strcpy(name,);number=right.number ;cost_p=right.cost_p;unit_p=right.unit_p ;num_all=right.num_all ;num_sell=right.num_sell ;num_now=right.num_now ;cost_all=right.cost_all;profit=fit ;void GoodsInfo:setInfo(char * a,float c,float u,int all,int sell) /數據載入strcpy(
20、name,a);cost_p=c;unit_p=u;num_all=all;num_sell=sell;num_now=all-sell;cost_all=c*all;profit=(u-c)*sell;next=NULL;void GoodsInfo:show(GoodsInfo * h) /顯示if(h=NULL) cout<<"NULL!n"elsecout<<"-n"<<"商品名: "<<h->name<<endl;cout<<"編號: &
21、quot;<<h->number<<endl<<"成本: "<<h->cost_p<<endl<<"銷售單價: "<<h->unit_p<<endl<<"銷量:"<<h->num_sell <<endl<<"庫存: "<<h->num_now<<endl<<"已獲得利潤:"<<
22、h->profit<<endl;void GoodsInfo: Amend(GoodsInfo * h) /修改信息 int F;char S;cout<<"n"<<"2.商品成本單價 "<<endl<<"3.商品銷售單價 "<<endl<<"4.進貨數量 "<<endl<<"5.銷售數量 "<<endl<<"n"docout<<
23、;"請選擇需要修改的項目編號:"<<endl;cin>>F;switch(F)case 1 :cout<<"n"<<"|請輸入修改后的名稱|n"<<""cin.ignore ();cin.getline(h->name,21);break;case 2 :cout<<"n"<<"|請輸入修改后的成本價: n"<<""cin>>h->cos
24、t_p;break;case 3 :cout<<"請輸入修改后的銷售單價: "cin>>h->unit_p;break;case 4 :cout<<"請輸入修改后的進貨量: "cin>>h->num_all;break;case 5 :cout<<"請輸入修改后的銷售量: "cin>>h->num_sell;break;h->cost_all=h->cost_p*(h->num_all);h->num_now=h->
25、num_all -(h->num_sell);h->profit=(h->unit_p -(h->cost_p )*h->num_sell;cout<<"是否需要繼續修改?"cin>>S;while(S='Y');#include <iostream>using namespace std;#include <string>#include<iomanip>#include <fstream>#include"LIST.H"GoodLis
26、t:GoodList()/構造函數p=new GoodsInfo sizeof(GoodsInfo);head=NULL;p2=NULL;p->next =NULL;GoodList:GoodList()/析構函數while(head!=NULL)p=head;head=p->next ;delete p;void GoodList:create()/創建int n=0;char f='Y'cout<<"請輸入商品信息:"<<endl;while(f='Y')n+=1;if(n=1) head=p;else
27、 p=new GoodsInfo sizeof(GoodsInfo);p2->next=p;cout<<"商品名稱: "if(n=1) cin.ignore ();cin.getline (p->name,21);cout<<"商品編號:"cin>>p->number;cout<<"成本價: "cin>>p->cost_p;cout<<"銷售價: "cin>>p->unit_p;cout<<
28、"共計商品件數: "cin>>p->num_all;cout<<"已售出商品件數: "cin>>p->num_sell;p->num_now=p->num_all-(p->num_sell);p->cost_all=p->cost_p*(p->num_all);p->profit=(p->unit_p)-(p->cost_p)*(p->num_sell);p2=p;cout<<"是否繼續輸入?(輸入Y繼續)"cin&
29、gt;>f;cin.ignore();if(head!=NULL) p2->next=NULL; /P2指向最后一個void GoodList:showinfo(GoodsInfo * h)/顯示信息cout<<setw(10)<<"商品名稱"<<setw(10)<<"編號"<<setw(8)<<"進價"<<setw(8)<<"售價"<<setw(8)<<"銷量"&
30、lt;<setw(8)<<"庫存"<<setw(12)<<"已得利潤"<<endl;while(h!=NULL)cout<<setw(10)<<h->name<<setw(10)<<h->number<<setw(8)<<h->cost_p<<setw(8)<<h->unit_p<<setw(8)<<h->num_sell<<setw(8)&
31、lt;<h->num_now<<setw(12)<<h->profit<<endl;h=h->next; GoodsInfo * GoodList:search() /查找if(head=NULL) cout<<"數據為空!n"return NULL;elseGoodsInfo *h;h=head;int f;cout<<"n"<<"請選擇查找方式: n"<<"1.按商品編號 n"<<"
32、2.按商品名稱 "<<endl<<"n"cin>>f;switch(f)case 1:int x,y;cout<<"請輸入需查找的商品編號:"cin>>x;while(h!=NULL&&(x!=(y=h->number)h=h->next;if(x=y) return h;lse cout<<"沒有找到該商品!n"return NULL;case 2:char x21;int c;cout<<"請輸入需查
33、找的商品名稱:"cin.ignore ();cin.getline(x,21);while(h!=NULL&&(c=strcmp(x,h->name)!=0)h=h->next;if(c=0)return h;else cout<<"沒有找到該商品!n"return NULL;void GoodList:saveInfo() /存檔fstream File;File.open("GoodsInformation.txt",ios:out|ios:binary);if(!File)cout<<&
34、quot;文件打開失敗!n"exit(0);p=head;GoodsInfo X;File<<"商品名稱編號進價售價總量銷量庫存已得利潤n"while(p!=NULL)X=*p;File<<X.name<<""<<X.number<<""<<X.cost_p<<""<<X.unit_p<<""<<X.num_all <<""<&l
35、t;X.num_sell<<""<<X.num_now <<""<<X.profit<<endl;p=p->next;cout<<"文件保存成功!n"File.close();void GoodList:getInfo() /上傳fstream File;File.open("GoodsInformation.txt",ios:in);if(!File)cout<<"文件打開失敗!n"exit(0);cha
36、r s81;GoodsInfo h;File.getline (s,81);int n=0;while(!File.eof ()if(File.fail() break;n+=1;if(n=1)head=p;elsep=new GoodsInfo sizeof(GoodsInfo);p2->next=p;File>>>>h.number>>h.cost_p>>h.unit_p>>h.num_all>>h.num_sell>>h.num_now>>fit;*p=h;p2=p
37、;cout<<"上傳顯示完畢!"<<endl;File.close();void GoodList:addInfo(GoodsInfo * h) /添加cout<<"請輸入商品信息:"<<endl;p=new GoodsInfo sizeof(GoodsInfo);h->next=p;cin.ignore();cout<<"商品名稱: "cin.getline (p->name,21);cout<<"商品編號:"cin>>
38、;p->number;cout<<"成本價: "cin>>p->cost_p;cout<<"銷售價: "cin>>p->unit_p;cout<<"共計商品件數: "cin>>p->num_all;cout<<"已售出商品件數: "cin>>p->num_sell;p->num_now=p->num_all-(p->num_sell);p->cost_all=p-&g
39、t;cost_p*(p->num_all);p->profit=(p->unit_p)-(p->cost_p)*(p->num_sell);p2=p;p2->next=NULL;void GoodList:delete_() /刪除節點if(head=NULL)cout<<"NULL!n"elsecout<<"請輸入需要刪除的商品編號:"int n;GoodsInfo * h;cin>>n;h=head;while(h->next!=NULL&&h->nu
40、mber!=n)p=h;h=h->next;if(h->number=n)char F;cout<<"是否確定刪除該節點?"cin>>F;if(F='Y')if(h=head) head=h->next;else p->next=h->next;delete h;cout<<"刪除成功!n"else cout<<"未找到該節點!n"void GoodList:sort () /按銷量排序顯示GoodsInfo *h1,*h2,t;int n;
41、if(head=NULL) cout<<"NULL!n"elseint F;cout<<"n"<<"請選擇排序方式:n"<<"1.按銷量降序排列n"<<"2.按利潤降序排列n"<<"n"cin>>F;switch(F)case 1:for(h1=head;h1->next!=NULL;h1=h1->next)n=h1->num_sell;for(h2=h1->next;
42、h2!=NULL;h2=h2->next)if(h2->num_sell)>(h1->num_sell)n=h2->num_sell;if(n!=h1->num_sell)t=*h2;*h2=*h1;*h1=t;break;case 2:for(h1=head;h1->next!=NULL;h1=h1->next)n=h1->profit;for(h2=h1->next;h2!=NULL;h2=h2->next)if(h2->profit)>(h1->profit)n=h2->profit;if(n!=h
43、1->profit)t=*h2;*h2=*h1;*h1=t;break;showinfo(head);void GoodList:menu() /菜單cout<<endl<<endl<<" -n"<<" |*商場銷售管理系統*|n"<<" |-|n"<<" | |n"<<" |-*菜單*-|n"<<" | |n"<<" |1.創建 2.添加 3.修改 |n"<<" | |n"<<" |4.顯示 5.存檔 6.查找 |n
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 員工公寓舍管理制度
- 交警責任現場管理制度
- 自來水公司稅務管理制度
- 企業生產產能管理制度
- keep員工管理制度
- 交警中隊區域管理制度
- 人才服務平臺管理制度
- 中學室外衛生管理制度
- 樂至縣培訓費管理制度
- 企業氣象安全管理制度
- 2024年廣東省廣州市中考英語真題卷及答案解析
- 化工設備機械基礎習題及參考答案
- 《課件旅游法培訓》課件
- 高中生物(部編版)選擇性必修3知識清單(問答版)
- 山東師范大學《高級英語(二)》2021-2022學年第一學期期末試卷
- 手術體位擺放原則及注意事項
- 2024年熔化焊接與熱切割理論考試1000題(附答案)
- 零售藥店計算機管理系統操作規程
- 潔凈室施工培訓
- 2024年10月自考14540藥理學本試題及答案含評分參考
- 醫療設備驗收方案及標準
評論
0/150
提交評論