超市商品管理系統(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頁,還剩22頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、武漢理工大學(xué)計(jì)算機(jī)基礎(chǔ)強(qiáng)化訓(xùn)練課程設(shè)計(jì)PAGE PAGE 27超市商品管理的設(shè)計(jì)與實(shí)現(xiàn)系統(tǒng)描述1.1問題說明要求設(shè)計(jì)并實(shí)現(xiàn)一個(gè)簡(jiǎn)單超市商品管理系統(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 /定義超市商

3、品的相關(guān)屬性char 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用戶

4、界面設(shè)計(jì)用戶界面為控制臺(tái)字符模式,根據(jù)功能為用戶設(shè)計(jì)了主菜單與分菜單,界面友好,易于操作,主菜單如下:cout *&*&*&*&*&*&*&*歡迎使用商品管理系統(tǒng)*&*&*&*&*&*&*n;cout * *n;cout * 請(qǐng)按下面的選單進(jìn)行功能選擇: *n;cout * (1) 添加商品記錄 *n;cout * (2) 顯示商品清單 *n;cout * (3) 刪除一條商品記錄 *n;cout * (4) 修改一條商品記錄 *n;cout * (5) 查詢 *n;cout * (6) 保存至文檔 *n;cout * (7) 退出 *n;cout*&*&*&*&*&*&*&*&*&*&*&*

5、&*&*&*&*&*&*&*&*&*&*&*&*&n;查詢功能的分菜單如下:cout *&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*n;cout * 商品信息管理系統(tǒng) *n;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ù)功能需求分析,定義了如下功能函數(shù):FuncType PrintMenu(MenuType which); /

6、菜單選擇函數(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& productsInfo, FuncType func);/查詢指定數(shù)據(jù)條目node *

7、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)系圖如下:mainCreateProListmainCreateProListPrintMenuAddprintdeletemodifyquerysaveRemoveProListG

8、etproductsInfoSetproductsInfo1附:源程序清單/products.h/文件功能:定義超市商品的數(shù)據(jù)結(jié)構(gòu)及其相關(guān)操作#include #include #include #include struct ProductsInfo /定義超市商品的相關(guān)屬性char no14;char name25;float price;int num;char sort12;struct node /定義數(shù)據(jù)鏈表結(jié)點(diǎn)ProductsInfo productsInfo;node *pnext;struct QueryRes node * pnode;QueryRes * pnext;no

9、de *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, SAVE, EXIT; /枚舉操作類型FuncType PrintMenu(MenuType which); /菜單選擇函數(shù)node * CreateProList(char filename); /讀取數(shù)據(jù)文件,建

10、立數(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& productsInfo, FuncType func); /查詢指定數(shù)據(jù)條目node * Add(ProductsInfo& productsInfo); /添加數(shù)據(jù)項(xiàng)bool Delete(

11、); /刪除指定條目ProductsInfo& GetproductsInfo(ProductsInfo& productsInfo); /從終端接收數(shù)據(jù)ProductsInfo& SetproductsInfo1(ProductsInfo& productsInfo,FuncType func); / products.h文件結(jié)束/products.cpp/文件功能:products.h文件中操作的具體實(shí)現(xiàn)及主函數(shù)部分#include products.husing namespace std;FuncType PrintMenu(MenuType which) FuncType func

12、= NONE;int choice = 0;switch(which) case MAINMENU: /主菜單選項(xiàng)cout *&*&*&*&*&*&*&*歡迎使用商品管理系統(tǒng)*&*&*&*&*&*&*n;cout * *n;cout * 請(qǐng)按下面的選單進(jìn)行功能選擇: *n;cout * (1) 添加商品記錄 *n;cout * (2) 顯示商品清單 *n;cout * (3) 刪除一條商品記錄 *n;cout * (4) 修改一條商品記錄 *n;cout * (5) 查詢 *n;cout * (6) 保存至文檔 *n;cout * (7) 退出 *n;cout*&*&*&*&*&*&*&*&*

13、&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&n;cout choice;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:

14、 /分菜單選項(xiàng)cout*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*n;cout * 商品信息管理系統(tǒng) *n;cout 查詢 *n;cout * (1) 按商品編號(hào)查詢 *n;cout * (2) 按商品名稱查詢 *n;cout * (3) 按商品價(jià)格查詢 *n;cout * (4) 按商品分類查詢 *n;cout * (5) 返回 *n;cout *n;cout choice;cout &*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&n;switch(choice) case 1: func = QB_NO;

15、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 func;node * CreateProList(char filename) node * p=NULL;ifstream products(filename);if(!products) cerr文

16、件不存在!請(qǐng)?zhí)砑由唐酚涗洠?p-productsInfo.no;products p-productsI;products 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

17、= NULL;void RemoveQueryRes() 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 productsInfo.no;products productsI;products product

18、sInfo.price;products productsInfo.num;products productsInfo.sortpnext) coutproductsInfo.no ;coutproductsI ;coutproductsInfo.price ;coutproductsInfo.num ;coutproductsInfo.sort pnext) cout pnode-productsInfo.no ;cout pnode-productsI ;cout pnode-productsInfo.price ;cout pnode-productsIn

19、fo.num ;cout pnode-productsInfo.sort pnext) switch(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

20、 = 1;break;case QB_sort: /按分類查詢if(!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 =

21、 new node() strcpy(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請(qǐng)輸入商品

22、編號(hào):no;if(phead=NULL) cout 不存在商品記錄!productsInfo.no, no) phead=phead-pnext; return true;for(phead;p-pnext;p = p-pnext) if(!strcmp(p-pnext-productsInfo.no, no) break;if(p-pnext=NULL)cout不存在商品記錄!pnext=p-pnext -pnext;delete p-pnext;return true;void modify() /修改指定條目node *p=phead;if (p=NULL) cout不存在商品記錄!;r

23、eturn;char no14;coutno;for(p=phead;p;p = p-pnext) if(!strcmp(p-productsInfo.no, no) break;if (p=NULL) cout不存在該編號(hào)的商品!n;return;coutproductsInfo);ProductsInfo& GetproductsInfo(ProductsInfo& productsInfo) /從終端接收數(shù)據(jù)cout productsInfo.no;cout productsI;cout productsInfo.price;cout productsInfo.num;c

24、out productsInfo.sort;return productsInfo;ProductsInfo& SetproductsInfo1(ProductsInfo& productsInfo,FuncType func) switch(func)case QB_NO:cout productsInfo.no;break;case QB_NAME:cout productsI;break;case QB_price:cout productsInfo.price;break;case QB_num:cout productsInfo.num;break;case QB_s

25、ort:cout productsInfo.sort;break;return productsInfo;int main() ProductsInfo productsInfo;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: /顯示

26、商品清單cout *&*&*&*&*&*&*&*以下是商品清單*&*&*&*&*&*&*&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:

27、 case QB_sort: SetproductsInfo1(productsInfo,func);Print(Query(productsInfo, func);RemoveQueryRes();break;case EXIT: cont1 = 0;break;default: break;break;case SAVE: /保存至文件Save(productsInfo.txt);break;case EXIT: /退出RemoveProList();cont = 0;break;default:break;return 0;3.系統(tǒng)測(cè)試3.1 程序調(diào)試多個(gè)功能在執(zhí)行時(shí)均出現(xiàn)健壯性較差的問題,輸入非法數(shù)據(jù)后程序容易出錯(cuò)而停止運(yùn)行,或是在查詢、修改一條數(shù)據(jù)鏈表中記錄時(shí),也回出現(xiàn)類似情況,發(fā)現(xiàn)該問題后加入了檢查輸入數(shù)據(jù)非法性的語句,程序運(yùn)行正常;另在int strcmp

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論