版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、中北大學(xué)數(shù)據(jù)結(jié)構(gòu)課程設(shè)計說明書學(xué)學(xué)生姓名:宋立群號:1021011803學(xué)院 :軟件學(xué)院專業(yè) :軟件開發(fā)與測試題目 :產(chǎn)品進銷存管理系統(tǒng)指導(dǎo)教師何志英.2011 年12月20日(一)設(shè)計任務(wù)概述針對某一種行業(yè)的庫房的產(chǎn)品進銷存情況進行管理。1、采用一定的存儲結(jié)構(gòu)對庫房的貨品及其數(shù)量進行分類管理;運用鏈表進行存儲 ,同時用到指針變量 ,運用循環(huán)存儲 ,對存儲產(chǎn)品的信息要用到日期結(jié)構(gòu)體和產(chǎn)品結(jié)構(gòu)體,對存儲要用到文件指針以及文件的一些方法的使用 。2、可以進行產(chǎn)品類的添加 、產(chǎn)品的添加 、產(chǎn)品數(shù)量的添加 ;首先要找到鏈表的指針變量,對指針變量進行修改,然后再進行產(chǎn)品的出入。3、能夠查詢庫房每種產(chǎn)品的
2、總量、進貨日期 、銷出數(shù)量 、銷售時間等 ;首先要定義一個查詢函數(shù),對產(chǎn)品類的指針變量進行循環(huán)查詢,再對產(chǎn)品的指針變量進行循環(huán)查詢,找到產(chǎn)品時 ,在調(diào)用顯示產(chǎn)品信息函數(shù),顯示查詢到的產(chǎn)品的各項信息 。(二)本設(shè)計所采用的數(shù)據(jù)運用鏈表進行存儲 ,同時用到指針變量 ,循環(huán)存儲(三)功能模塊詳細設(shè)計3.1 詳細設(shè)計思想1、順序表掛接鏈表的抽象定義類型:.專業(yè)專注.ADT sqmountlink數(shù)據(jù)對象 :D= ai|aikindlist,i=1,2, ,n,n=0 數(shù)據(jù)關(guān)系 :R= |ai-1,ai D,i=1,2,3,n基本操作 :InitMountLisr(&L)操作結(jié)果 :構(gòu)造一個空的順序表掛
3、接鏈表L。KindInsert(&L,n)初始條件 :順序表掛接鏈表L 已存在 。操作結(jié)果 :向順序表掛接鏈表L 中添加 N 類產(chǎn)品ProductInsert(&L,I,n)初始條件 :順序表掛接鏈表L 已存在且要將產(chǎn)品插入的產(chǎn)品類i已存在操作結(jié)果 :向順序表掛接鏈表L 中的產(chǎn)品類 i 中添加 N 種產(chǎn)品ProQuantity_add(&L,I,e,n)初始條件 :順序表掛接鏈表L 已存在且需要添加的產(chǎn)品及產(chǎn)品所屬的類也存在操作結(jié)果 :添加順序表掛接鏈表L 的產(chǎn)品類 i 中的產(chǎn)品 e 的數(shù)量Visit(&L,i,e)初始條件 :順序表掛接鏈表 L 已存在且待查詢的產(chǎn)品所屬產(chǎn)品類i 也存在操作結(jié)
4、果 :在順序表掛接鏈表L 中查詢產(chǎn)品 e 的各項信息DisplayList(&L).專業(yè)專注.初始條件 :順序表掛接鏈表L 已存在操作結(jié)果 :現(xiàn)實順序表掛接鏈表L 的內(nèi)容3.2 核心代碼#include#include#include#define ok 1#define error 0#define overflow 0#define SQMOUNTLINK_INIT_SIZE 100#define SQMOUNTLINKINCREMENT 10typedef struct dateint year;int month;int day;date;/ 日期typedef struct prod
5、uctlnodechar pname30;/ 產(chǎn)品名稱inttotalquantity;/ 產(chǎn)品總量date goodsdate;/ 進貨日期intsalesquantity;/ 消除數(shù)量date salestime;/ 銷售時間.專業(yè)專注.struct productlnode *nextproduct;productlnode,*plinklist;typedef struct kindlnodeproductlnode *firstproduct;char pkindname30;kindlnode;typedef structkindlnode *kindelem;int length
6、;int listsize;sqmountlink;int InitMountList(sqmountlink &L)/ 初始化一個空的順序表掛接鏈表 L int i;L.kindelem=(kindlnode*)malloc(SQMOUNTLINK_INIT_SIZE*sizeof(kindlnode);if(!L.kindelem) exit(overflow);L.length=0;L.listsize=SQMOUNTLINK_INIT_SIZE;for(i=0;i=L.listsize)newbase=(kindlnode*)realloc(L.kindelem,(L.listsize
7、+n)*sizeof(kindlnode);if(!newbase) exit(overflow);L.kindelem=newbase;L.listsize+=n;printf( 需添加的產(chǎn)品類名稱 :n);for(i=0;in;i+)scanf(%s,&L.kindelemL.length.pkindname);L.kindelemL.length.firstproduct=NULL;L.length+;return ok;/KindInsert.專業(yè)專注.int ProductInsert(sqmountlink &L,char pkindname2,int n) /向順序表掛接鏈表 L
8、 的某產(chǎn)品類中添加 N 個產(chǎn)品 plinklist p,q;int k,j;for(k=0;kpname),&(q-totalquantity),&(q-goodsdate).year),&(q-goodsdate).month),&(q-goodsdate).day),&(q-salesquantity),&(q-salestime).year),&(q-salestime).month),&(q-salestime).day);q-nextproduct=NULL;(L.kindelemk).firstproduct=q;for(j=1;jpname),&(p-totalquantity)
9、,&(p-goodsdate).year),&(p-goodsdate).month),&(p-goodsdate).day),&(p-salesquantity),&(p-salestime).year),&(p-salestime).month),&(p-salestime).day);p-nextproduct=q-nextproduct;q-nextproduct=p;q=p;elsefor(q=L.kindelemk.firstproduct; ;q=q-nextproduct)if(!(q-nextproduct)break;printf( 需添加產(chǎn)品的名稱、總量 、進貨日期 、銷
10、售數(shù)量 、銷售時間 :n);for(j=0;jpname),&(p-totalquantity),&(p-goodsdate).year),&(p-goodsdate).month),&(p-goodsdate).day),&(p-salesquantity),&(p-salestime).year),&(p-salestime).month),&(p-salestime).day);p-nextproduct=q-nextproduct;q-nextproduct=p;q=p;return ok;/ProductInsertvoid ProQuantity_add(sqmountlink &
11、L,char pkindname1,char pname1,intn) / 添加順序表掛接鏈表L 的某產(chǎn)品類中的某產(chǎn)品的總量,且需添加的產(chǎn)品總量為 nint i,k;plinklist p;for(i=0;iL.length;i+)if(strcmp(L.kindelemi).pkindname,pkindname1)!=0)continue;elsebreak;.專業(yè)專注.if(inextproduct)k=strcmp(p-pname,pname1);if(k=0)p-totalquantity=p-totalquantity+n;printf(查看添加后產(chǎn)品的各項輸出: %s%d%d,%
12、d,%d%d%d,%d,%dn,p-pname,p-totalquantity,(p-goodsdate).year,(p-goodsdate).month,(p-goodsdate).day,p-salesquantity,(p-salestime).year,(p-salestime).month,(p-salestime).day);/ProQuantity_addvoidProQuantity_subtract(sqmountlink&L,charpkindname4,charpname4,intn) / 添加順序表掛接鏈表L 的某產(chǎn)品類中的某產(chǎn)品銷出數(shù)量,且銷出的數(shù)量 nint i,
13、k;plinklist p;for(i=0;iL.length;i+)if(strcmp(L.kindelemi).pkindname,pkindname4)!=0)continue;.專業(yè)專注.elsebreak;if(inextproduct)k=strcmp(p-pname,pname4);if(k=0)p-salesquantity=p-salesquantity+n;printf(查看添加后產(chǎn)品的各項輸出: %s%d%d,%d,%d%d%d,%d,%dn,p-pname,p-totalquantity,(p-goodsdate).year,(p-goodsdate).month,(p
14、-goodsdate).day,p-salesquantity,(p-salestime).year,(p-salestime).month,(p-salestime).day);/ProQuantity_subtractvoid Visit(sqmountlink &L,char pkindname3,char pname3) /在順序表掛接鏈表 L 中,查詢屬于某產(chǎn)品類的某產(chǎn)品的各項信息int i,k;plinklist p;for(i=0;iL.length;i+)if(strcmp(L.kindelemi).pkindname,pkindname3)!=0).專業(yè)專注.continue
15、;elsebreak;if(inextproduct)k=strcmp(p-pname,pname3);if(k=0)break;if(k!=0)printf( 此產(chǎn)品不存在 :n);elseprintf( 輸出待查詢產(chǎn)品的各項信息:n);printf( 產(chǎn)品類 產(chǎn) 品 產(chǎn)品總量 進 貨 日 期 銷售數(shù)量 銷 售時 間 n);printf(%s%s%d%d,%d,%d%d%d,%d,%dn,(L.kindelemi).pkindname,p-pname,p-totalquantity,(p-goodsdate).year,(p-goodsdate).month,(p-goodsdate).da
16、y,p-salesquantity,(p-salestime).year,(p-salestime).month,(p-salestime).day);.專業(yè)專注./Visitvoid DisplayList(sqmountlink &L) /顯示各產(chǎn)品所屬產(chǎn)品類 、產(chǎn)品名稱 、產(chǎn)品總量、進貨日期 、銷售數(shù)量 、銷售時間int i;plinklist p;printf( 產(chǎn)品類 產(chǎn) 品產(chǎn)品總量 進 貨 日 期 銷售數(shù)量 銷 售 時 間n);for(i=0;inextproduct)printf(%s%s%d%d,%d,%d%d%d,%d,%dn,(L.kindelemi).pkindname,
17、p-pname,p-totalquantity,(p-goodsdate).year,(p-goodsdate).month,(p-goodsdate).day,p-salesquantity,(p-salestime).year,(p-salestime).month,(p-salestime).day);/DisplayListvoid menu_operation()/操作菜單printf( n);.專業(yè)專注.printf( 輸入所要執(zhí)行的操作 : n);printf( 1、產(chǎn)品類添加 :n);printf( 2、產(chǎn)品添加 :n);printf( 3、產(chǎn)品數(shù)量添加 :n);printf(
18、 4、產(chǎn)品售出 :n);printf( 5、查詢產(chǎn)品 :n);printf( 0、退出程序 :n);printf( n);/mene_operation/*-主程序 -*/void main(void)int order;int i,n;char a30;char b30;sqmountlink L;InitMountList(L);printf( 輸入時間時請按照 “年,月 ,日”格式輸入 . n);loop:menu_operation();printf( 輸入命令 :);scanf(%d,&order);.專業(yè)專注.switch(order)case 1:printf( 需添加產(chǎn)品類的個
19、數(shù) :);scanf(%d,&i);KindInsert(L,i);printf( 修改后的產(chǎn)品庫存管理表:n);DisplayList(L);goto loop;case 2:printf( 需添加產(chǎn)品所屬產(chǎn)品類的名稱: );scanf(%s,&a);printf( 需向此產(chǎn)品類添加產(chǎn)品的個數(shù): );scanf(%d,&i);ProductInsert(L,a,i);printf( 修改后的產(chǎn)品庫存管理表:n);DisplayList(L);goto loop;case 3:printf( 輸入需添加數(shù)量的產(chǎn)品所屬產(chǎn)品類的名稱:);scanf(%s,&a);printf( 輸入需添加數(shù)量的產(chǎn)
20、品的名稱: );scanf(%s,&b);.專業(yè)專注.printf( 輸入需添加產(chǎn)品的數(shù)量 : );scanf(%d,&n);ProQuantity_add(L,a,b,n);printf( 修改后的產(chǎn)品庫存管理表:n);DisplayList(L);goto loop;case 4:printf( 輸入售出產(chǎn)品所屬產(chǎn)品類的名稱:);scanf(%s,&a);printf( 輸入售出產(chǎn)品的名稱 :);scanf(%s,&b);printf( 輸入售出產(chǎn)品的數(shù)量 :);scanf(%d,&n);ProQuantity_subtract(L,a,b,n);printf( 修改后的產(chǎn)品庫存管理表:n);DisplayList(L);goto
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 會計專業(yè)大一學(xué)期計劃范文
- 鄉(xiāng)鎮(zhèn)文化站建成文藝晚會主持詞
- 七夕節(jié)促銷活動方案
- 范文新學(xué)期學(xué)習(xí)計劃范文集錦十篇
- 個人工作總結(jié)(集錦14篇)
- 高等數(shù)學(xué)教程 上冊 第4版 測試題 高數(shù)1-測試二
- 荒山租地合同協(xié)議書(2篇)
- 分段計費說課稿
- 南京工業(yè)大學(xué)浦江學(xué)院《汽車電氣設(shè)備》2023-2024學(xué)年第一學(xué)期期末試卷
- 南京工業(yè)大學(xué)浦江學(xué)院《計算機設(shè)計》2022-2023學(xué)年期末試卷
- 信息技術(shù)教師專業(yè)發(fā)展
- 公職人員廉潔自律課件
- 建筑工程精細化管理培訓(xùn)講解
- 風(fēng)景園林專業(yè)職業(yè)生涯規(guī)劃
- 食品安全員崗位的主要職責(zé)范本
- 《構(gòu)成基礎(chǔ)》課程習(xí)題及答案
- 中層干部考核測評表
- 鋼琴專業(yè)的職業(yè)生涯規(guī)劃書
- 《“要拿我當(dāng)一挺機關(guān)槍使用”-紀念白求恩同志》
- 精美工業(yè)快速門施工方案
評論
0/150
提交評論