




版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度文化創(chuàng)意產(chǎn)業(yè)補貼協(xié)議
- 2025年度玻璃幕墻安裝工程進(jìn)度款支付合同
- 2025年度金融產(chǎn)品投資入股合同模板
- 二零二五年度紋身藝術(shù)展覽與合作推廣協(xié)議
- 二零二五年度生態(tài)住宅區(qū)掛靠物業(yè)公司合作協(xié)議
- 二零二五年度診所執(zhí)業(yè)醫(yī)師團隊建設(shè)聘用合同
- 二零二五年度專業(yè)船員勞動合同及船舶航行責(zé)任書
- 中考誓師大會發(fā)言稿
- 2025年銅仁貨車從業(yè)資格證考試試題
- 2025年蘭州貨運從業(yè)資格證500道題目答案大全
- 新蘇教版科學(xué)六年級下冊全冊教案(含反思)
- 火災(zāi)自動報警系統(tǒng)檢查表
- 高速公路橋頭跳車判別和處治
- 骨髓細(xì)胞圖譜
- 建筑工程分部分項工程劃分表(新版)
- 勃利縣大四站鎮(zhèn)侵蝕溝治理工程施工組織設(shè)計
- 公路瀝青路面設(shè)計標(biāo)準(zhǔn)規(guī)范
- 普通高中歷史課程標(biāo)準(zhǔn)(2022年版2023年修訂)解讀
- 第9課《呵護(hù)我們的鼻子》課件
- 加油站春季安全教育培訓(xùn)
- 《統(tǒng)計學(xué)原理賈俊平》課件
評論
0/150
提交評論