超市商品管理系統(tǒng)+含報(bào)告_第1頁
超市商品管理系統(tǒng)+含報(bào)告_第2頁
超市商品管理系統(tǒng)+含報(bào)告_第3頁
超市商品管理系統(tǒng)+含報(bào)告_第4頁
超市商品管理系統(tǒng)+含報(bào)告_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、武漢理工大學(xué)計(jì)算機(jī)基礎(chǔ)強(qiáng)化訓(xùn)練課程設(shè)計(jì)超市商品管理的設(shè)計(jì)與實(shí)現(xiàn)1. 系統(tǒng)描述1.1 問題說明要求設(shè)計(jì)并實(shí)現(xiàn)一個(gè)簡單超市商品管理系統(tǒng),至少實(shí)現(xiàn)數(shù)據(jù)的增加、修改、刪除、查詢和顯示相應(yīng)結(jié)果,內(nèi)存數(shù)據(jù)用鏈表組織,數(shù)據(jù)文件用文本文件,用戶界面用字符界面,枚舉量用枚舉類型表示。1.2 數(shù)據(jù)需求編號(hào)數(shù)據(jù)項(xiàng)數(shù)據(jù)類型數(shù)據(jù)長度描述1編號(hào)字符串14商品的唯一標(biāo)識(shí)2名稱字符串25商品的名稱3價(jià)格浮點(diǎn)型8商品的售價(jià)4數(shù)量整型4商品的庫存數(shù)量5類別字符串12商品類別1.3 功能需求編號(hào)功能描 述1添加商品若該編號(hào)的商品在文件中不存在,則將該商品記錄添加到文件中。2刪除商品若該編號(hào)的商品存在文件中,則將該商品記錄從文件中刪

2、除。3修改商品若該編號(hào)的商品存在文件中,則重新錄入該商品記錄。4顯示清單顯示商品清單5查詢商品查詢商品是否在文件中,若在則輸出詳細(xì)信息。查詢操作可按多個(gè)數(shù)據(jù)項(xiàng)進(jìn)行2.系統(tǒng)設(shè)計(jì)2.1 開發(fā)平臺(tái)計(jì)算機(jī)系統(tǒng):Microsoft Windows XP;開發(fā)工具:Microsoft Visual Studio 6.0;語言:C+2.2內(nèi)存數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)用單鏈表表示商品數(shù)據(jù)記錄,鏈表接點(diǎn)定義為:struct node ProductsInfo productsInfo;node *pnext;其中自定義數(shù)據(jù)類型ProductsInfo定義為:struct ProductsInfo /定義超市商品的相關(guān)屬性c

3、har no14;char name25;float price;int num;char sort12;枚舉菜單類型與操作類型:enum MenuType MAINMENU, SUBMENU; /枚舉菜單類型enum FuncType NONE, ADD, PRINT, DELETE, MODIFY,QUERY, QB_NO, QB_NAME, QB_price,QB_num, QB_sort, SAVE, EXIT; /枚舉操作類型2.3數(shù)據(jù)文件設(shè)計(jì)數(shù)據(jù)記錄保存在文本文件productsInfo.txt里,利用C+流類庫進(jìn)行數(shù)據(jù)讀寫操作,每條數(shù)據(jù)記錄之間換行分隔開。2.4用戶界面設(shè)計(jì)用戶界

4、面為控制臺(tái)字符模式,根據(jù)功能為用戶設(shè)計(jì)了主菜單與分菜單,界面友好,易于操作,主菜單如下:cout << "*&*&*&*&*&*&*&*歡迎使用商品管理系統(tǒng)*&*&*&*&*&*&*n"cout << "* *n"cout << "* 請按下面的選單進(jìn)行功能選擇: *n"cout << "* (1) 添加商品記錄 *n"cout << "* (

5、2) 顯示商品清單 *n"cout << "* (3) 刪除一條商品記錄 *n"cout << "* (4) 修改一條商品記錄 *n"cout << "* (5) 查詢 *n"cout << "* (6) 保存至文檔 *n"cout << "* (7) 退出 *n"cout<<"*&*&*&*&*&*&*&*&*&*&*&am

6、p;*&*&*&*&*&*&*&*&*&*&*&*&*&n"查詢功能的分菜單如下:cout << "*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*n"cout << "* 商品信息管理系統(tǒng) *n&qu

7、ot;cout << "*主菜單->查詢 *n"cout << "* (1) 按商品編號(hào)查詢 *n"cout << "* (2) 按商品名稱查詢 *n"cout << "* (3) 按商品價(jià)格查詢 *n"cout << "* (4) 按商品分類查詢 *n"cout << "* (5) 返回 *n"cout << "*n"2.5具體功能設(shè)計(jì)根據(jù)功能需求分析,定義了如下功

8、能函數(shù):FuncType PrintMenu(MenuType which); /菜單選擇函數(shù)node * CreateProList(char filename); /讀取數(shù)據(jù)文件,建立數(shù)據(jù)鏈表void RemoveProList(); /撤銷內(nèi)存空間void RemoveQueryRes();void Save(char filename); /保存至文件void Print(node *pnode); /顯示數(shù)據(jù)信息void Print(QueryRes *pnode);void modify(); /修改指定數(shù)據(jù)條目QueryRes * Query(ProductsInfo&

9、productsInfo, FuncType func);/查詢指定數(shù)據(jù)條目node * Add(ProductsInfo& productsInfo); /添加數(shù)據(jù)項(xiàng)bool Delete(); /刪除指定條目ProductsInfo& GetproductsInfo(ProductsInfo& productsInfo); /從終端接收數(shù)據(jù)ProductsInfo& SetproductsInfo1(ProductsInfo& productsInfo,FuncType func); 功能函數(shù)調(diào)用關(guān)系圖如下:mainCreateProListPrin

10、tMenuAddprintdeletemodifyquerysaveRemoveProListGetproductsInfoSetproductsInfo1附:源程序清單/products.h/文件功能:定義超市商品的數(shù)據(jù)結(jié)構(gòu)及其相關(guān)操作#include <iostream>#include <iomanip>#include <fstream>#include <string>struct ProductsInfo /定義超市商品的相關(guān)屬性char no14;char name25;float price;int num;char sort12

11、;struct node /定義數(shù)據(jù)鏈表結(jié)點(diǎn)ProductsInfo productsInfo;node *pnext;struct QueryRes node * pnode;QueryRes * pnext;node *phead = NULL; /定義數(shù)據(jù)鏈表頭指針QueryRes *pqueryres = NULL; enum MenuType MAINMENU, SUBMENU; /枚舉菜單類型enum FuncType NONE, ADD, PRINT, DELETE, MODIFY,QUERY, QB_NO, QB_NAME, QB_price,QB_num, QB_sort,

12、SAVE, EXIT; /枚舉操作類型FuncType PrintMenu(MenuType which); /菜單選擇函數(shù)node * CreateProList(char filename); /讀取數(shù)據(jù)文件,建立數(shù)據(jù)鏈表void RemoveProList(); /撤銷內(nèi)存空間void RemoveQueryRes();void Save(char filename); /保存至文件void Print(node *pnode); /顯示數(shù)據(jù)信息void Print(QueryRes *pnode);void modify(); /修改指定數(shù)據(jù)條目QueryRes * Query(Pro

13、ductsInfo& productsInfo, FuncType func); /查詢指定數(shù)據(jù)條目node * Add(ProductsInfo& productsInfo); /添加數(shù)據(jù)項(xiàng)bool Delete(); /刪除指定條目ProductsInfo& GetproductsInfo(ProductsInfo& productsInfo); /從終端接收數(shù)據(jù)ProductsInfo& SetproductsInfo1(ProductsInfo& productsInfo,FuncType func); / products.h文件結(jié)束/

14、products.cpp/文件功能:products.h文件中操作的具體實(shí)現(xiàn)及主函數(shù)部分#include "products.h"using namespace std;FuncType PrintMenu(MenuType which) FuncType func = NONE;int choice = 0;switch(which) case MAINMENU: /主菜單選項(xiàng)cout << "*&*&*&*&*&*&*&*歡迎使用商品管理系統(tǒng)*&*&*&*&*&

15、amp;*&*n"cout << "* *n"cout << "* 請按下面的選單進(jìn)行功能選擇: *n"cout << "* (1) 添加商品記錄 *n"cout << "* (2) 顯示商品清單 *n"cout << "* (3) 刪除一條商品記錄 *n"cout << "* (4) 修改一條商品記錄 *n"cout << "* (5) 查詢 *n"co

16、ut << "* (6) 保存至文檔 *n"cout << "* (7) 退出 *n"cout<<"*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&n"cout << "* 請選擇 (1-6):"cin >> choic

17、e;switch(choice) case 1: func = ADD; break;case 2: func = PRINT; break;case 3: func = DELETE; break;case 4: func = MODIFY; break;case 5: func = QUERY; break;case 6: func = SAVE; break;case 7: func = EXIT;break;default: func = NONE; break;break;case SUBMENU: /分菜單選項(xiàng)cout<<"*&*&*&

18、*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*n"cout << "* 商品信息管理系統(tǒng) *n"cout << "*主菜單->查詢 *n"cout << "* (1) 按商品編號(hào)查詢 *n"cout << "* (2) 按商品名稱查詢 *n"cout << "*

19、 (3) 按商品價(jià)格查詢 *n"cout << "* (4) 按商品分類查詢 *n"cout << "* (5) 返回 *n"cout << "*n"cout << "* 請選擇(1-6):"cin >> choice;cout<< &*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*

20、&*&*&*&*&*&n"switch(choice) case 1: func = QB_NO; break;case 2: func = QB_NAME; break;case 3: func = QB_price; break;case 4: func = QB_sort; break;case 5: func = EXIT; break;default: func = NONE; break;break;default:cout << "沒有查詢到該條商品記錄!n"break;return fun

21、c;node * CreateProList(char filename) node * p=NULL;ifstream products(filename);if(!products) cerr<<"文件不存在!請?zhí)砑由唐酚涗洠?quot;<<endl;return NULL;while(!products.eof() /裝載數(shù)據(jù)文件if(p = new node() products >> p->productsInfo.no;products >> p->productsI;products >&

22、gt; p->productsInfo.price;products >> p->productsInfo.num;products >> p->productsInfo.sort;p->pnext = phead;phead = p;products.close();return phead;void RemoveProList() /撤銷內(nèi)存空間for(node *p2, *p1 = phead;p1;p1 = p2) p2 = p1->pnext;delete p1;phead = NULL;void RemoveQueryRes()

23、 for(QueryRes *p2, *p1 = pqueryres;p1;p1 = p2) p2 = p1->pnext;delete p1;pqueryres = NULL;void Save(char filename) /保存至文檔node * p;ofstream products(filename);if(!products) return;for(p = phead;p;p=p->pnext) products << " " << p->productsInfo.no;products << "

24、" << p->productsI;products << " " << p->productsInfo.price;products << " " << p->productsInfo.num;products << " " << p->productsInfo.sort<<endl;products.close();void Print(node *pnode) /輸出數(shù)據(jù)for(nod

25、e *p = pnode;p;p = p->pnext) cout<<p->productsInfo.no << " " ;cout<<p->productsI << " " ;cout<<p->productsInfo.price << " " ;cout<<p->productsInfo.num << " " ;cout<<p->productsInfo

26、.sort << "n"void Print(QueryRes *pnode) for(QueryRes *p = pnode;p;p = p->pnext) cout << p->pnode->productsInfo.no << " "cout << p->pnode->productsI << " "cout << p->pnode->productsInfo.price << "

27、; "cout << p->pnode->productsInfo.num << " "cout << p->pnode->productsInfo.sort << "n"QueryRes * Query(ProductsInfo& productsInfo, FuncType func) /查詢功能實(shí)現(xiàn)int hasRes = 0;QueryRes *pquery = NULL; for(node *p = phead;p;p = p->pnext) swi

28、tch(func) case QB_NO: /按編號(hào)查詢if(!strcmp(p->productsInfo.no, productsInfo.no) hasRes = 1;break;case QB_NAME: /按名稱查詢if(!strcmp(p->productsI, productsI) hasRes = 1;break;case QB_price: /按價(jià)格查詢if(p->productsInfo.price = productsInfo.price) hasRes = 1;break;case QB_sort: /按分類查詢if(!

29、strcmp(p->productsInfo.sort, productsInfo.sort) hasRes = 1;break;default:break;if(hasRes) if(pquery = new QueryRes() pquery->pnode = p;pquery->pnext = pqueryres;pqueryres = pquery;hasRes = 0;return pqueryres;node * Add(ProductsInfo& productsInfo) /添加數(shù)據(jù)項(xiàng)node * p;if(p = new node() strcpy(

30、p->productsInfo.no, productsInfo.no);strcpy(p->productsI, productsI);p->productsInfo.price = productsInfo.price;p->productsInfo.num = productsInfo.num;strcpy(p->productsInfo.sort, productsInfo.sort);p->pnext = phead;phead = p;return phead; bool Delete() /刪除指定數(shù)據(jù)項(xiàng)cout

31、<<"請輸入商品編號(hào):"<<endl;char no14;cin>>no;if(phead=NULL) cout<<" 不存在商品記錄!"<<endl; return false;node *p=phead;if(!strcmp(p->productsInfo.no, no) phead=phead->pnext; return true;for(phead;p->pnext;p = p->pnext) if(!strcmp(p->pnext->product

32、sInfo.no, no) break;if(p->pnext=NULL)cout<<"不存在商品記錄!"<<endl; return false;p->pnext=p->pnext ->pnext;delete p->pnext;return true;void modify() /修改指定條目node *p=phead;if (p=NULL) cout<<"不存在商品記錄!"return;char no14;cout<<"請輸入要修改的商品編號(hào):"cin

33、>>no;for(p=phead;p;p = p->pnext) if(!strcmp(p->productsInfo.no, no) break;if (p=NULL) cout<<"不存在該編號(hào)的商品!n"return;cout<<"請重新輸入該商品信息:"GetproductsInfo(p->productsInfo);ProductsInfo& GetproductsInfo(ProductsInfo& productsInfo) /從終端接收數(shù)據(jù)cout << &

34、quot;請輸入商品編號(hào): "cin >> productsInfo.no;cout << "請輸入商品名稱: "cin >> productsI;cout << "請輸入商品價(jià)格: "cin >> productsInfo.price;cout << "請輸入商品數(shù)量: "cin >> productsInfo.num;cout << "請輸入商品類別: "cin >> produ

35、ctsInfo.sort;return productsInfo;ProductsInfo& SetproductsInfo1(ProductsInfo& productsInfo,FuncType func) switch(func)case QB_NO:cout << "請輸入商品編號(hào): "cin >> productsInfo.no;break;case QB_NAME:cout << "請輸入商品名稱:"cin >> productsI;break;case QB_p

36、rice:cout << "請輸入商品價(jià)格: "cin >> productsInfo.price;break;case QB_num:cout << "請輸入商品數(shù)量: "cin >> productsInfo.num;break;case QB_sort:cout << "請輸入商品類別: "cin >> productsInfo.sort;break;return productsInfo;int main() ProductsInfo productsIn

37、fo;int cont = 1;int cont1 = 1;phead = CreateProList("productsInfo.txt"); /裝載數(shù)據(jù)文件while(cont) switch(PrintMenu(MAINMENU) case ADD: /添加數(shù)據(jù)條目GetproductsInfo(productsInfo); phead = Add(productsInfo); break;case PRINT: /顯示商品清單cout << "*&*&*&*&*&*&*&*以下是商品清單*

38、&*&*&*&*&*&*&n"Print(phead);break;case DELETE: /刪除指定條目if(Delete()cout << "已刪除!n"else cout << "刪除失敗!n" break;case MODIFY: /修改指定條目modify();break;case QUERY: /查詢操作cont1 = 1;while(cont1) FuncType func;func = PrintMenu(SUBMENU);switch(func) case QB_NO: case QB_NAME: case QB_price: case QB_sort: SetproductsInfo1(productsInf

溫馨提示

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

評論

0/150

提交評論