算法與數(shù)據(jù)結(jié)構(gòu)課程設(shè)計 文具店的貨品管理系統(tǒng)的設(shè)計_第1頁
算法與數(shù)據(jù)結(jié)構(gòu)課程設(shè)計 文具店的貨品管理系統(tǒng)的設(shè)計_第2頁
算法與數(shù)據(jù)結(jié)構(gòu)課程設(shè)計 文具店的貨品管理系統(tǒng)的設(shè)計_第3頁
算法與數(shù)據(jù)結(jié)構(gòu)課程設(shè)計 文具店的貨品管理系統(tǒng)的設(shè)計_第4頁
算法與數(shù)據(jù)結(jié)構(gòu)課程設(shè)計 文具店的貨品管理系統(tǒng)的設(shè)計_第5頁
已閱讀5頁,還剩14頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、算法與數(shù)據(jù)結(jié)構(gòu) 文具店的貨品管理系統(tǒng)的設(shè)計學(xué)院:信息工程學(xué)院班級:8888888學(xué)號:88888888姓名:瀏覽量磊磊落落指導(dǎo)老師:經(jīng)濟加加減減日期:2009年6月27日目錄:一實驗名稱二問題描述三總體設(shè)計四流程圖五源程序六結(jié)果表達(dá)七結(jié)果分析八收獲體會九參考文獻(xiàn)十評語一實驗名稱:文具店的貨品管理系統(tǒng)二問題描述:在文具店的日常經(jīng)營過程中,存在對各種文具管理問題。當(dāng)庫存文具不足或缺貨時,需要進(jìn)貨。日常銷售時,需要出庫。當(dāng)盤點貨物時,需要查詢貨物信息。根據(jù)這些需要編寫了此軟件完成庫存文具的管理功能。三總體設(shè)計: 通過對問題的抽象,文具信息和文具分類信息可以用表1和表2來表示。可見文具信息和文具分類信

2、息在邏輯上具有線性的關(guān)系,因此可以使用線性表來解決這個問題。由于文具信息變動較大,應(yīng)該使用鏈?zhǔn)酱鎯Y(jié)構(gòu)進(jìn)行表示和實現(xiàn)。而文具分類信息變動不大,可使用順序存儲結(jié)構(gòu)進(jìn)行表示和實現(xiàn)。 表1 文具信息文具名稱文具類別 文具數(shù)量jj鋼筆 1 400lala日記本 2 1000pp計算器 3 150 表2 文具分類信息文具分類號 文具類別名 1文具 2 紙張 3 工具順序表和鏈表的比較: 線性表除了可以用順序存儲結(jié)構(gòu)來表示以外,還可以用鏈?zhǔn)酱鎯Y(jié)構(gòu)來表示。鏈?zhǔn)酱鎯Y(jié)構(gòu)與順序存儲結(jié)構(gòu)不同的是:它不要求邏輯上相鄰的數(shù)據(jù)元素在物理位置上也相鄰,它通過指針來表示數(shù)據(jù)元素之間的邏輯關(guān)系。# 順序表存儲結(jié)構(gòu)比較適合于

3、線性表的長度不經(jīng)常發(fā)生變化,不經(jīng)常進(jìn)行插入和刪除操作,經(jīng)常進(jìn)行存取和查詢操作。# 鏈?zhǔn)酱鎯Y(jié)構(gòu)比較適合于線性表的長度不可預(yù)知,需要頻繁進(jìn)行插入和刪除操作。四流程圖:開始mallocmain()CreateSortList()CreateStockList()QueryStock()AddSort()AddStock()RemoveStock()文具是否存在出庫>庫存修改數(shù)量插入刪除修改數(shù)量DispStock()輸出結(jié)果結(jié)束YNNY五源程序:#include "malloc.h"#include "stdio.h"#include "std

4、lib.h"#include "string.h"#define LISTSIZE 100#define MAXSIZE 50/*文具分類信息的結(jié)構(gòu)*/typedef structint SortNumber; /*文具分類號*/char SortName10; /*文具分類名*/DataType,SortType;typedef structSortType itemsMAXSIZE;int length;SqList;typedef SqList SortList; /*文具分類順序表*/typedef structint SortNumber; /*文具分類

5、號*/char StockName10; /*文具名稱*/int amount; /*文具數(shù)量*/StockType;/*單鏈表的結(jié)構(gòu)節(jié)點定義*/typedef struct NodeStockType data;struct Node *next;LNode,*PNode,*LinkList; /*文具鏈表*/typedef LinkList StockList;/*串的定義*/#define STRSIZE 100typedef structchar chSTRSIZE;int length;SqString;/*串比較*/int strcmp(SqString S,SqString T)

6、int i;for( i = 0; i < S.length && i < T.length; i +)if(S.chi != T.chi)return(S.chi - T.chi);return (S.length - T.length);/*單鏈表的初始化*/int InitList(LinkList *h)*h=(LinkList)malloc(sizeof(LNode);if(!h)printf("初始化鏈表錯誤!n");return 0;(*h)->next=NULL;return 1;/*單鏈表的插入*/int Insert(L

7、inkList h,int pos,StockType x)PNode p=h,q;int i=0;while(p && i<pos-1)p=p->next;i+;if(!p | i>pos-1)printf("插入位置不合法!n");return 0;q=(PNode)malloc(sizeof(LNode);if(!q)printf("不能生成新結(jié)點n");return 0;q->data=x;q->next=p->next;p->next=q;return 1;/*單鏈表的刪除*/int D

8、elete(LinkList h,int pos,StockType *item)PNode p=h,q;int i=0;while(p->next && i<pos-1)p=p->next;i+;if(!p->next | i>pos-1)printf("刪除位置不合法!n");return 0;q=p->next;p->next=q->next;*item=q->data;free(q);return 1;void Destroy(LinkList h)PNode p=h->next;while

9、(h)p=h;h=h->next;free(p);/*順序表的初始化*/int InitList_Sq(SqList *L)L -> length = 0;return 1;/*順序表的插入*/int ListInsert_Sq(SqList * L,int pos, DataType item)int i;if(L -> length >= LISTSIZE)printf("");return 0;if(pos <= 0 | pos > L -> length +1)printf("");return 0;fo

10、r(i = L -> length - 1; i >= pos - 1; i -)L -> itemsi + 1 = L -> itemsi;L -> itemspos - 1 = item;L -> length +;return 1; /*初始化文具分類順序表*/int CreateSortList(SortList *SL)int i,num=0;SortType sty; /*使用順序表的InitList操作初始化順序表*/ /*為了區(qū)別單鏈表的同名函數(shù),把順序表的InitList函數(shù)名改為InitList_Sq*/InitList_Sq(SL);p

11、rintf("請輸入文具類別總數(shù):n");scanf("%d",&num);for(i=0;i<num;i+)printf("請輸入文具分類號:n");scanf("%d",&sty.SortNumber);printf("請輸入文具分類名稱:n");scanf("%s",&sty.SortName); /*使用順序表的Insert操作在順序表中插入節(jié)點*/ /*為了區(qū)別單鏈表的同名函數(shù),把順序表的ListInsert函數(shù)名改為Insert_Sq

12、*/ListInsert_Sq(SL,i+1,sty);printf("nOK.n");return 1;/*初始化文具鏈表*/int CreateStockList(StockList *SL)int i,num=0;StockType sty;/*使用單鏈表的InitList操作初始化單鏈表*/if(!InitList(SL)printf("創(chuàng)建錯誤n");return 0;printf("請輸入文具總數(shù):n");scanf("%d",&num);for(i=0;i<num;i+)printf(&

13、quot;請輸入文具分類號:n"); scanf("%d",&sty.SortNumber); printf("請輸入文具名稱:n"); scanf("%s",&sty.StockName); printf("請輸入文具數(shù)量:n"); scanf("%d",&sty.amount); /*使用單鏈表的Insert操作在單鏈表中插入結(jié)點*/Insert(*SL,i+1,sty);printf("nOK.n");return 1;/*文具入庫*/

14、int AddStock(StockList SL)StockType sty;int pos=0;PNode p=SL->next;printf("請輸入文具分類號:n");scanf("%d",&sty.SortNumber);printf("請輸入文具名稱:n");scanf("%s",&sty.StockName); printf("請輸入文具數(shù)量:n");scanf("%d",&sty.amount); while(p) /*如果該文具

15、存在,則修改其數(shù)量*/if(!strcmp(p->data.StockName,sty.StockName)p->data.amount+=sty.amount;break;p=p->next;pos+; /*如果該文具不存在,則插入到文具鏈表中*/if(!p) Insert(SL,pos+1,sty);printf("nOK.n");return 1;/*文具出庫*/int RemoveStock(StockList SL)StockType sty;PNode p=SL->next;int pos=0; printf("請輸入文具名稱:

16、n"); scanf("%s",&sty.StockName); printf("請輸入出庫數(shù)量:n"); scanf("%d",&sty.amount); while(p&&strcmp(p->data.StockName,sty.StockName)p=p->next;pos+; /*修改該文具的數(shù)量*/p->data.amount-=sty.amount;/*如果出庫數(shù)量大于庫存數(shù)量,則從鏈表中刪除該文具*/if(p->data.amount<=0)Dele

17、te(SL,pos+1,&sty);printf("nOK.n");return 1;/*查詢文具信息*/int QueryStock(StockList SL)int no;PNode p=SL->next;printf("請輸入文具分類號:n");scanf("%d",&no);/*查詢出所有該文具分類號的文具信息*/printf("nNumber StockName amountn");while(p)if(p->data.SortNumber=no)printf("%d

18、t",p->data.SortNumber);printf("%st",p->data.StockName);printf("%dt",p->data.amount);printf("n");p=p->next;return 1;/*顯示文具信息*/void DispStock(StockList SL)PNode p=SL->next;printf("nNumber StockName amountn");while(p)printf("%dt",p-&

19、gt;data.SortNumber);printf("%st",p->data.StockName);printf("%dt",p->data.amount);printf("n");p=p->next;/*添加新文具類別*/int AddSort(SortList *L)SortType st;printf("請輸入文具分類號:n"); scanf("%d",&st.SortNumber);printf("請輸入文具分類名:n");scanf(&

20、quot;%s",&st.SortName);if(!ListInsert_Sq(L,L->length+1,st)return 0;printf("nOK.n");return 1;int main(int argc, char* argv)int choice;StockList SL;SortList L;doprintf("n 文具店貨品管理系統(tǒng) n");printf("n-主菜單-n");printf(" (1)設(shè)置文具分類表 n");printf(" (2)初始化文具表

21、 n");printf(" (3)文具入庫 n");printf(" (4)文具出庫 n");printf(" (5)查詢文具信息 n");printf(" (6)顯示文具信息 n");printf(" (7)添加新文具類別 n");printf(" (0)退出系統(tǒng) n"); printf("n請選擇(1,2,3,4,5,6,7,0):");scanf("%d",&choice);if(choice<0&&choice>7)continue;switch(choice)case 1:CreateSortList(&L);break; /*初始化文具分類順序表*/case 2:CreateStockList(&SL);break; /*初始化文具表*/case 3:AddStock(SL);break; /*文具入庫*/case 4:Rem

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論