版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 《數(shù)據(jù)結(jié)構(gòu)》課程設(shè)計(jì)</p><p><b> 報(bào)告</b></p><p> 學(xué) 院:_電氣與信息工程學(xué)院_ 專業(yè)班級(jí): </p><p> 學(xué)生姓名: 學(xué) 號(hào): </p><p> 設(shè)計(jì)地點(diǎn)
2、(單位)__ _ 計(jì)算機(jī)基礎(chǔ)自主學(xué)習(xí)中心 __ _ _設(shè)計(jì)題目:________家電庫(kù)存管理系統(tǒng)的設(shè)計(jì)______ ____ _</p><p> 完成日期:2012年 1 月 13 日 </p><p> 指導(dǎo)教師評(píng)語(yǔ): ______________________ ________________ _</p><p> _______
3、__________________________________________________________________________________________________________________________________________________________________________________________________ _
4、_________ _ </p><p> 成績(jī)(五級(jí)記分制):______ __________ 指導(dǎo)教師(簽字):________ ________ </p><p><b> 課程設(shè)計(jì)任務(wù)書</b></p><p> 設(shè)計(jì)題目:家電庫(kù)存管理系統(tǒng)的設(shè)計(jì) </p>&l
5、t;p><b> 摘要</b></p><p> 隨著信息技術(shù)的飛速發(fā)展,人們對(duì)信息管理技術(shù)要求也越來(lái)越高以適應(yīng)飛速發(fā)展的經(jīng)濟(jì)。本次課程設(shè)計(jì)針對(duì)當(dāng)前的需求,設(shè)計(jì)一個(gè)家電倉(cāng)庫(kù)信息的管理系統(tǒng)以方便商家更快捷更有效的對(duì)倉(cāng)庫(kù)貨品的信息進(jìn)行管理,給商家創(chuàng)造更多的價(jià)值!</p><p> 該系統(tǒng)整體運(yùn)用了數(shù)據(jù)結(jié)構(gòu)的知識(shí),它是將貨品信息按鏈表形式來(lái)儲(chǔ)存的。將所有的貨品分
6、類儲(chǔ)存在數(shù)據(jù)鏈表的每一個(gè)節(jié)點(diǎn)中,每個(gè)節(jié)點(diǎn)也包含了一種類型家電的所有信息。即是,建一個(gè)鏈表,鏈表中有許多個(gè)節(jié)點(diǎn),節(jié)點(diǎn)中儲(chǔ)存了不同類型的數(shù)據(jù);這樣我們就很容易的將貨品信息管理起來(lái)了!</p><p> 該系統(tǒng)進(jìn)行了精心的規(guī)劃,有齊全的信息管理功能。方便用戶使用,用戶能夠很快的找到自己所需要的信息并且有添加、刪除、修改、查詢、排序、保存等功能提高了用戶對(duì)信息的管理效率!</p><p> 關(guān)
7、鍵詞:信息 數(shù)據(jù)結(jié)構(gòu) 鏈表 管理 </p><p><b> 目錄</b></p><p> 1 系統(tǒng)需求分析說(shuō)明書1</p><p> 1.1系統(tǒng)軟件界面介紹1</p><p> 1.2系統(tǒng)設(shè)計(jì)要求1</p><p> 1.3系統(tǒng)的設(shè)計(jì)2</p>&l
8、t;p> 2 系統(tǒng)分析與設(shè)計(jì)3</p><p><b> 2.1系統(tǒng)分析3</b></p><p> 2.2系統(tǒng)功能分析4</p><p><b> 3 代碼實(shí)現(xiàn)7</b></p><p> 3.1鏈表創(chuàng)建函數(shù)代碼解釋7</p><p> 3.2插
9、入節(jié)點(diǎn)函數(shù)代碼解釋7</p><p> 3.3刪除節(jié)點(diǎn)函數(shù)代碼解釋8</p><p> 3.4查找函數(shù)代碼解釋8</p><p> 3.5貨品信息修改函數(shù)代碼解釋9</p><p> 3.6信息讀取函數(shù)代碼解釋10</p><p> 4 系統(tǒng)功能實(shí)現(xiàn)11</p><p>
10、 4.1 倉(cāng)庫(kù)鏈表建立函數(shù)實(shí)現(xiàn)11</p><p> 4.2修改信息函數(shù)實(shí)現(xiàn)11</p><p> 4.3新增貨品插入函數(shù)實(shí)現(xiàn)12</p><p> 4.4刪除函數(shù)實(shí)現(xiàn)12</p><p> 4.5修改函數(shù)的實(shí)現(xiàn)13</p><p> 4.6插入節(jié)點(diǎn)函數(shù)實(shí)現(xiàn)13</p><p&
11、gt; 5 系統(tǒng)使用說(shuō)明書14</p><p><b> 6 總結(jié)15</b></p><p><b> 參考文獻(xiàn)16</b></p><p><b> 致謝17</b></p><p> 1 系統(tǒng)需求分析說(shuō)明書</p><p> 1
12、.1系統(tǒng)軟件界面介紹</p><p><b> 1.1 系統(tǒng)界面</b></p><p> 該系統(tǒng)的軟件界面就是以在C++編譯后生成的一個(gè)系統(tǒng)菜單,菜單有八個(gè)選項(xiàng)供用戶選擇即有創(chuàng)建倉(cāng)庫(kù)鏈表,信息查找等功能!在菜單下面有供用戶選擇系統(tǒng)項(xiàng)目的輸入指令,當(dāng)用戶輸入0-7中的數(shù)字后就會(huì)實(shí)現(xiàn)相應(yīng)的功能!如果輸入錯(cuò)誤后界面會(huì)彈出警告讓用戶重新輸入!</p>&l
13、t;p><b> 1.2系統(tǒng)設(shè)計(jì)要求</b></p><p> 第一,該系統(tǒng)的設(shè)計(jì)對(duì)設(shè)計(jì)者的要求比較高。想要設(shè)計(jì)該系統(tǒng),必須對(duì)C語(yǔ)言知識(shí)掌握牢固,以及C++、數(shù)據(jù)結(jié)構(gòu)知識(shí)靈活運(yùn)用。例如:主菜單供客戶選擇的選擇項(xiàng)就需要用到C語(yǔ)言的switch條件語(yǔ)句來(lái)實(shí)現(xiàn)不同的選擇功能。數(shù)據(jù)結(jié)構(gòu)中的數(shù)據(jù)封裝也是必不可少的。</p><p><b> 1.3系統(tǒng)的設(shè)
14、計(jì)</b></p><p> 系統(tǒng)設(shè)計(jì)分為幾大模塊進(jìn)行設(shè)計(jì)的。</p><p> 第一大模塊總體規(guī)劃設(shè)計(jì),這部分主要是封裝頭文件,這里要定義好數(shù)據(jù)結(jié)構(gòu)體,即要把一類家電信息打包成一個(gè)節(jié)點(diǎn)類型的數(shù)據(jù)然后再創(chuàng)建鏈表數(shù)據(jù)和指向節(jié)點(diǎn)數(shù)的節(jié)點(diǎn)。該過(guò)程就是數(shù)據(jù)結(jié)構(gòu)中的抽象數(shù)據(jù)類型ADT,這樣將就輕松的把不同類型數(shù)據(jù)管理起來(lái)了!頭文件也包含了所有子函數(shù)的頭。</p><
15、;p> 第二大模塊是主函數(shù)的設(shè)計(jì),主函數(shù)的功能是要建立一個(gè)倉(cāng)庫(kù)管理的鏈表,然后一一實(shí)現(xiàn)系統(tǒng)所有的功能即是在不同的情況對(duì)子函數(shù)的調(diào)用。</p><p> 第三大模塊是各個(gè)函數(shù)功能的實(shí)現(xiàn),該部分是系統(tǒng)的核心部分,在寫子函數(shù)的時(shí)候必須考慮周全;否則就會(huì)出現(xiàn)內(nèi)存出錯(cuò)的情況系統(tǒng)就會(huì)崩潰掉,信息就很可能丟失。會(huì)給用戶帶來(lái)巨大的損失!</p><p> 該系統(tǒng)設(shè)計(jì)模塊圖如圖1.2所示:<
16、;/p><p> 圖1.2 系統(tǒng)模塊設(shè)計(jì)</p><p><b> 2 系統(tǒng)分析與設(shè)計(jì)</b></p><p><b> 2.1系統(tǒng)分析</b></p><p> 系統(tǒng)主要工作流程是從打開系統(tǒng)后進(jìn)入功能選擇,選擇不同的選項(xiàng)進(jìn)行操作后就返回系統(tǒng)首頁(yè)。其運(yùn)行流程圖如圖2.1所示:</p>
17、<p><b> 圖2.1系統(tǒng)流程圖</b></p><p><b> 2.2系統(tǒng)功能分析</b></p><p> 系統(tǒng)功能的實(shí)現(xiàn)主要是靠各個(gè)子函數(shù)來(lái)實(shí)現(xiàn)的。</p><p> 1)倉(cāng)庫(kù)鏈表的創(chuàng)建:</p><p> 當(dāng)用戶選擇功能號(hào)1時(shí),就進(jìn)行倉(cāng)庫(kù)鏈表的建立。</p
18、><p> 倉(cāng)庫(kù)建立流程圖如圖2.2所示:</p><p> 圖2.2 倉(cāng)庫(kù)鏈表建立 </p><p> 2)倉(cāng)庫(kù)貨品信息查找:</p><p> 信息查找流程圖如圖2.3 所示:</p><p> 圖2.3 信息查找流程圖</p><p> 3)新增貨品信息插入:</p
19、><p> 新增貨品信息插入流程圖如圖2.4所示:</p><p> 圖2.4 信息插入流程圖</p><p> 4)刪除已賣出的貨品信息:</p><p> 刪除信息流程圖如圖2.5所示:</p><p> 圖2.5 刪除信息流程圖</p><p> 5)庫(kù)存貨品信息修改</p&
20、gt;<p> 庫(kù)存貨品信息修改流程圖如圖2.6所示:</p><p> 圖2.6 信息修改流程圖</p><p> 6)信息保存直接選功能號(hào)6即可保存到文件。</p><p><b> 7)倉(cāng)庫(kù)信息讀?。?lt;/b></p><p> 倉(cāng)庫(kù)信息讀取流程圖如圖2.7所示:</p><
21、;p> 圖2.7信息讀取流程圖</p><p><b> 3 代碼實(shí)現(xiàn)</b></p><p> 3.1鏈表創(chuàng)建函數(shù)代碼解釋</p><p> NODE *creatlist()</p><p> {NODE *Head;</p><p> Head=new NODE;<
22、/p><p> int i; int k;</p><p> NODE *P1, *Ptr;</p><p> P1=(NODE*)malloc(sizeof(NODE));</p><p><b> P1=Head;</b></p><p> cout<<"輸入倉(cāng)庫(kù)
23、電器種類數(shù):"<<endl;</p><p><b> cin>>k;</b></p><p> printf("請(qǐng)輸入電器類別--型號(hào)--商標(biāo)--重量--單價(jià)--編號(hào)--日期--廠家\n");</p><p> for(i=0;i<k;i++)</p><p
24、> { Ptr=(NODE*)malloc(sizeof(NODE));</p><p> scanf("%s %s %s %f %lf %s %s %s",Ptr->data.leibie,Ptr->data.xinhao,Ptr->data.brand,&Ptr->data.height,&Ptr->data.price,Ptr-&g
25、t;data.no,Ptr->data.date,Ptr->data.factory);</p><p> P1->link=Ptr;</p><p><b> P1=Ptr;</b></p><p> P1->link=NULL;}</p><p> return Head;</p
26、><p><b> }</b></p><p> 這里使用鏈表創(chuàng)建函數(shù)就可以創(chuàng)建一個(gè)鏈表,并儲(chǔ)存貨品信息!</p><p> 3.2插入節(jié)點(diǎn)函數(shù)代碼解釋</p><p> void InsertNode(NODE *head,NODE *p)</p><p><b> { <
27、/b></p><p> NODE *p1,*p2;</p><p><b> p1=head;</b></p><p> p2=p1->link;</p><p> while(p2!=NULL && strcmp(p2->data.no,p->data.no)<0
28、) </p><p><b> {</b></p><p> p1=p2; //p1 指向剛訪問(wèn)過(guò)的結(jié)點(diǎn)</p><p> p2=p2->link; //p2 指向表的下一個(gè)結(jié)點(diǎn) }</p><p> p1->link=p; //插入 p 所指向的結(jié)點(diǎn)</p><p> p-
29、>link=p2; //連接表中剩余的結(jié)點(diǎn)</p><p> cout<<"插入成功!"<<endl;</p><p><b> }</b></p><p><b> }</b></p><p> 該函數(shù)實(shí)現(xiàn)了在倉(cāng)庫(kù)鏈表中插入一個(gè)節(jié)點(diǎn)的功能!
30、</p><p> 3.3刪除節(jié)點(diǎn)函數(shù)代碼解釋</p><p> void deleteNode(NODE *head)//賣出貨品信息刪除 </p><p><b> {</b></p><p><b> char x;</b></p><p> NODE *pP
31、re,*pLoc;</p><p> pLoc=searchList1(head);</p><p> // dataOut = pLoc->data;</p><p> if(pLoc==NULL)</p><p> {printf("沒(méi)有查到要?jiǎng)h除的商品信息!\n");</p><p
32、> return ;}</p><p> if(pLoc!=NULL) </p><p> printf("真的要?jiǎng)h除該商品嗎?(y/n):"); </p><p><b> cin>>x; </b></p><p> if (x=='y'||x==
33、9;Y') </p><p> {pPre=head;</p><p> while((pPre!=NULL)&&(pPre->link!=pLoc))</p><p> pPre=pPre->link;</p><p> pPre->link=pLoc->link;</p&g
34、t;<p> free(pLoc);</p><p> printf("delete success!\n");</p><p><b> }</b></p><p><b> }</b></p><p> 該函數(shù)實(shí)現(xiàn)了對(duì)賣出貨品信息的刪除!</
35、p><p> 3.4查找函數(shù)代碼解釋</p><p> NODE *searchList(NODE *head)//貨品信息查找 </p><p> { char a;</p><p> char b=' ';</p><p><b> while(1)</b><
36、/p><p><b> {</b></p><p> printf("==================\n"); </p><p> printf(" 1. 查詢所有家電信息 \n");</p><p> printf(" 2. 按商品名稱查詢 \n")
37、;</p><p> printf(" 0. 退出查找系統(tǒng) \n");</p><p> printf("==================\n"); </p><p> printf(" 請(qǐng) 選 擇: \n"); </p><p> a = getch();</p
38、><p><b> switch(a)</b></p><p><b> {</b></p><p> case '0':return 0;break;</p><p> case '1':list0(head);break;</p><p&g
39、t; case '2':list1(head);break;</p><p> default:printf("輸入錯(cuò)誤,請(qǐng)重新輸入:\n");</p><p><b> }</b></p><p><b> }</b></p><p><b>
40、; }</b></p><p> 該函數(shù)用switch語(yǔ)句做成一個(gè)多種查找方式的查找函數(shù)!</p><p> 3.5貨品信息修改函數(shù)代碼解釋</p><p> void modify(NODE *head)//庫(kù)存貨品信息修改</p><p><b> {</b></p><p&
41、gt;<b> int m;</b></p><p><b> NODE *P;</b></p><p> P=searchList1(head);</p><p> cout<<"請(qǐng)輸入要修改的商品信息番號(hào)?。?quot;<<endl;</p><p>
42、 if (P==NULL) </p><p> { printf("沒(méi)有查到要修改的商品信息!\n"); </p><p><b> return;}</b></p><p> if(P!=NULL)</p><p> cout<<endl;</p><
43、p> printf("請(qǐng)輸入您選擇的功能號(hào)<0-8>:\n");</p><p> cin>>m; switch(m)</p><p><b> {</b></p><p> case 1:cout<<"請(qǐng)輸入新的商標(biāo)信息"<<endl;ci
44、n>>P->data.brand;break;</p><p> case 2:cout<<"請(qǐng)輸入新的日期信息"<<endl;cin>> P->data.date;break;</p><p> case 3:cout<<"請(qǐng)輸入新的廠家信息"<<endl;ci
45、n>> P->data.factory;break;</p><p> case 4:cout<<"請(qǐng)輸入新的重量信息"<<endl;cin>> P->data.height;break;</p><p> case 5:cout<<"請(qǐng)輸入新的類別信息"<<e
46、ndl;cin>> P->data.leibie;break;</p><p> case 6:cout<<"請(qǐng)輸入新的編號(hào)信息"<<endl;cin>> P->data.no;break;</p><p> case 7:cout<<"請(qǐng)輸入新的單價(jià)信息"<<e
47、ndl;cin>> P->data.price;break;</p><p> case 8:cout<<"請(qǐng)輸入新的型號(hào)信息"<<endl;cin>>P->data.xinhao;break;</p><p> case 0:break;</p><p><b> }&
48、lt;/b></p><p> P=P->link;</p><p><b> }</b></p><p> 該函數(shù)實(shí)現(xiàn)了對(duì)節(jié)點(diǎn)信息的修改!</p><p> 3.6信息讀取函數(shù)代碼解釋</p><p> NODE *read_file(NODE *head)</p&g
49、t;<p> {NODE *q,*t;</p><p> head=Initlist(head);</p><p><b> t=head;</b></p><p> ifstream fin("家電庫(kù)存信息.txt");</p><p> if( !fin )</p&
50、gt;<p> {printf("\n打開文件失敗!,可能沒(méi)有記錄\n");</p><p> return NULL;}</p><p> printf("類別--型號(hào)--商 標(biāo)--重量--單價(jià)--編號(hào)--日期--廠家\n");</p><p> while ( !fin.eof() )</
51、p><p><b> {</b></p><p> q=(NODE*)malloc(sizeof(NODE));</p><p> HOUSEHOLD temp;</p><p> fin>>temp.leibie;fin>>temp.xinhao;fin>>tem
52、p.brand;fin>>temp.height;</p><p> fin>>temp.price;fin>>temp.no;fin>>temp.date;fin>>temp.factory;</p><p> q->data = temp;</p><p> q-&g
53、t;link=NULL;</p><p> t->link=q;</p><p> t=t->link;</p><p><b> }</b></p><p> printf("讀取成功!\n");</p><p> fin.close();<
54、/p><p> return head;</p><p><b> }</b></p><p> 該函數(shù)將文本文件的數(shù)據(jù)讀出來(lái)并生成一個(gè)鏈表!</p><p><b> 4 系統(tǒng)功能實(shí)現(xiàn)</b></p><p> 4.1 倉(cāng)庫(kù)鏈表建立函數(shù)實(shí)現(xiàn)</p>&l
55、t;p> 圖4.1倉(cāng)庫(kù)鏈表建立函數(shù)實(shí)現(xiàn)</p><p> 4.2修改信息函數(shù)實(shí)現(xiàn)</p><p> 圖4.2修改信息函數(shù)實(shí)現(xiàn)</p><p> 4.3新增貨品插入函數(shù)實(shí)現(xiàn)</p><p> 圖4.3新增貨品插入函數(shù)實(shí)現(xiàn)</p><p><b> 4.4刪除函數(shù)實(shí)現(xiàn)</b><
56、/p><p> 圖4.4刪除函數(shù)實(shí)現(xiàn)</p><p> 4.5修改函數(shù)的實(shí)現(xiàn)</p><p> 圖4.5修改函數(shù)的實(shí)現(xiàn)</p><p> 4.6插入節(jié)點(diǎn)函數(shù)實(shí)現(xiàn)</p><p> 圖4.6插入節(jié)點(diǎn)函數(shù)實(shí)現(xiàn)</p><p><b> 5 系統(tǒng)使用說(shuō)明書</b><
57、/p><p> 1.創(chuàng)建倉(cāng)庫(kù)鏈表:在此目錄下,用戶可以創(chuàng)建一個(gè)新的倉(cāng)庫(kù)鏈表。</p><p> 2..查詢記錄:在此目錄下,用戶可以查詢所有家電記錄和按名稱查詢家電記錄</p><p> 1).查詢所有家電記錄:顯示所有的家電記錄,如果沒(méi)有記錄則會(huì)提示用戶輸入記錄。</p><p> 2).按類別查詢家電記錄:輸入要查詢家電的名稱后,顯示
58、相應(yīng)家電的信息。</p><p> 3).按品牌查詢家電記錄:輸入要查詢家電的品牌后,顯示相應(yīng)家電的信息。</p><p> 4).按型號(hào)查詢家電記錄:輸入要查詢家電的型號(hào)后,顯示相應(yīng)家電的信息。</p><p> 0).退出查詢系統(tǒng):退出查詢系統(tǒng)并返回主菜單。</p><p> 3. 插入新增貨品信息:在此目錄下,用戶添加新的紀(jì)錄。
59、添加完后,系統(tǒng)會(huì)返回主菜單并提示用戶保存,此時(shí)你要可以選擇。</p><p> 4. 刪除信息:在此目錄下,用戶刪除紀(jì)錄</p><p> 5. 修改記錄:在此目錄下,用戶在原有的記錄上更改記錄。更改后,系統(tǒng)會(huì)返回主菜單并提示用戶保存,此時(shí)你要可以選擇2保存,如果不選擇保存則不會(huì)更改。</p><p> 6.保存記錄:在此目錄下,系統(tǒng)會(huì)對(duì)變動(dòng)的信息保存起來(lái)!&
60、lt;/p><p> 7.讀取記錄:在此目錄下,系統(tǒng)將儲(chǔ)存的信息全部讀出來(lái)!</p><p> 0. 退出系統(tǒng):提示按0鍵鍵退出系統(tǒng)。</p><p><b> 6 總結(jié)</b></p><p> 在為期兩周的時(shí)間終于完成了本次課程設(shè)計(jì)。在設(shè)計(jì)初期準(zhǔn)備階段時(shí)做好了充分的準(zhǔn)備,包括查詢資料、知識(shí)的溫故等。有了充分的準(zhǔn)備
61、后,就可以有個(gè)好的開始了。課程設(shè)計(jì)在設(shè)計(jì)階段中遇到不少的問(wèn)題,但是都一一解決了。在開始階段的數(shù)據(jù)封裝與函數(shù)頭做起來(lái)比較順利,第二階段在總體規(guī)劃時(shí)開始很混亂,但在仔細(xì)分析后很快就把總體思路打造好了。最后的也是最困難的問(wèn)題就是怎樣實(shí)現(xiàn)各個(gè)子函數(shù)的功能,由于自己的粗心造成了不少的麻煩!例如,將一個(gè)有返回值函數(shù)直接調(diào)用,而沒(méi)有進(jìn)行傳值造成了內(nèi)存錯(cuò)誤從而耽誤了進(jìn)度。最后進(jìn)行仔細(xì)調(diào)試后才發(fā)現(xiàn)這個(gè)問(wèn)題,最后程序就順利運(yùn)行了!</p>&
62、lt;p><b> 參考文獻(xiàn)</b></p><p> [1] 吳偉民. 結(jié)構(gòu)(C語(yǔ)言版).大學(xué)出版社,2000</p><p> [2] 周學(xué)毛 李健. 據(jù)結(jié)構(gòu)與程序設(shè)計(jì).人民郵電出版社, 2008</p><p> [3] 譚浩強(qiáng). C程序設(shè)計(jì)(第三版). 清華大學(xué)出版設(shè), 2008</p><p>
63、 [4] 韓永泉.高質(zhì)量程序設(shè)計(jì)指南—C++/C語(yǔ)言第3版, 2007</p><p> [5] 蘇仕華. 數(shù)據(jù)結(jié)構(gòu)與算法解析. 合肥: 中國(guó)科學(xué)技術(shù)大學(xué)出版社,2004</p><p> [6] 劉振安 孫忱 劉燕君. C程序設(shè)計(jì)課程設(shè)計(jì). 北京:機(jī)械工業(yè)出版社,2004</p><p> [7] 唐策善,黃劉生. 數(shù)據(jù)結(jié)構(gòu)(第二版). 合肥:中國(guó)科學(xué)技術(shù)大
64、學(xué)出版社,2002</p><p> [8] 劉大有,唐海鷹. 數(shù)據(jù)結(jié)構(gòu). 北京:高等教育出版社,2001</p><p> [9] 嚴(yán)蔚敏,陳文博. 數(shù)據(jù)結(jié)構(gòu)及應(yīng)用算法教程. 北京:清華大學(xué)出版社,2001</p><p> [10] 蘇仕華. 數(shù)據(jù)結(jié)構(gòu)自學(xué)輔導(dǎo). 北京:清華大學(xué)出版社,2002</p><p> [11] 徐孝凱.
65、 數(shù)據(jù)結(jié)構(gòu)實(shí)用教程. 北京:清華大學(xué)出版社,1999</p><p> [12] 蘇仕華. 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì). 北京:機(jī)械工業(yè)出版社,2005</p><p><b> 致謝</b></p><p> 經(jīng)過(guò)為期一周的努力,我的課程設(shè)計(jì)任務(wù)也終于如期完成。在設(shè)計(jì)階段中遇到不少的問(wèn)題,但是都一一解決了。有些是通過(guò)自己細(xì)心的研究和檢查把程序調(diào)試
66、好,有的問(wèn)題是自己不懂的知識(shí)通過(guò)網(wǎng)上搜索以及同學(xué)的幫助也順利的解決了!在此我要感謝幫助過(guò)我的老師和同學(xué)們,是你們耐心指導(dǎo)才讓我順利的完成了本次課程設(shè)計(jì)。我也從中學(xué)到許多的東西! </p><p> 通過(guò)本次課程設(shè)計(jì),我對(duì)數(shù)據(jù)結(jié)構(gòu)的知識(shí)掌握更牢固了!也培養(yǎng)了自己勤于思考的良好習(xí)慣!也讓我收獲了不少的東西,感謝所有幫助過(guò)我的人!</p><p><b> 附頁(yè): 程序代碼<
67、/b></p><p><b> 頭文件.h</b></p><p> #include <string></p><p> #include <stdlib.h></p><p> #include <stdio.h></p><p> #in
68、clude<conio.h></p><p> #include "windows.h"</p><p> #include<iostream></p><p> #include<fstream></p><p> using namespace std;</p>
69、<p> typedef struct _Household{</p><p> char leibie[20];</p><p> char xinhao[30];</p><p> char brand[30];</p><p> float height;</p><p
70、> double price;</p><p> char no[30];</p><p> char date[20];</p><p> char factory[30];</p><p> int key;</p><p> }HOUSEHOL
71、D;</p><p> typedef struct _NODE{</p><p> HOUSEHOLD data;</p><p> struct _NODE *link;</p><p><b> }NODE;</b></p><p> typedef struct _LINKLIS
72、T{</p><p> NODE* Phead;</p><p> int count;</p><p> }LINKLIST;</p><p> LINKLIST *creatvoidlist();</p><p> NODE *creatlist();</p><p> void
73、 InsertNode(NODE *head,NODE *p);</p><p> void deleteNode(NODE *head);</p><p> NODE *searchList(NODE *head);</p><p> NODE *searchList1(NODE *head);</p><p> void modi
74、fy(NODE *head);</p><p> bool display(NODE *head);</p><p> NODE *sort(NODE *head); </p><p> void write_file(NODE *head);</p><p> NODE *read_file(NODE *head);</p
75、><p> NODE *Initlist(NODE *p);</p><p> void list0(NODE *head);</p><p> void list1(NODE *head);</p><p> int StrCmp(char na[],char name[],int y);</p><p><
76、;b> 子函數(shù).cpp</b></p><p> #include"store.h"</p><p> LINKLIST *creatvoidlist()//創(chuàng)建一個(gè)空的倉(cāng)庫(kù)鏈表</p><p><b> {</b></p><p> LINKLIST *p;</p&
77、gt;<p> p = (LINKLIST*)malloc(sizeof(LINKLIST));</p><p><b> if(!p)</b></p><p><b> exit(0);</b></p><p> p->count=0;</p><p> p->
78、Phead=NULL;</p><p><b> return p;</b></p><p><b> }</b></p><p> NODE *creatlist()//創(chuàng)建鏈表</p><p><b> {</b></p><p> NOD
79、E *Head;</p><p> Head=new NODE;</p><p><b> int i;</b></p><p><b> int k;</b></p><p> NODE *P1, *Ptr;</p><p> P1=(NODE*)malloc(s
80、izeof(NODE));</p><p><b> P1=Head;</b></p><p> cout<<"輸入倉(cāng)庫(kù)電器種類數(shù):"<<endl;</p><p><b> cin>>k;</b></p><p> printf(&q
81、uot;請(qǐng)輸入電器類別--型號(hào)--商標(biāo)--重量--單價(jià)--編號(hào)--日期--廠家\n");</p><p> for(i=0;i<k;i++)</p><p><b> {</b></p><p> Ptr=(NODE*)malloc(sizeof(NODE));</p><p> scanf(&q
82、uot;%s %s %s %f %lf %s %s %s",Ptr->data.leibie,Ptr->data.xinhao,Ptr->data.brand,&Ptr->data.height,&Ptr->data.price,Ptr->data.no,Ptr->data.date,Ptr->data.factory);</p><p>
83、 P1->link=Ptr;</p><p><b> P1=Ptr;</b></p><p> P1->link=NULL;</p><p><b> }</b></p><p> printf("添加成功!");</p><p>
84、 return Head;</p><p><b> }</b></p><p> void InsertNode(NODE *head,NODE *p)//插入新的節(jié)點(diǎn)</p><p><b> { </b></p><p> NODE *p1,*p2;</p><p
85、><b> p1=head;</b></p><p> p2=p1->link;</p><p> while(p2!=NULL && strcmp(p2->data.no,p->data.no)<0) </p><p><b> {</b></p>&l
86、t;p> p1=p2; //p1 指向剛訪問(wèn)過(guò)的結(jié)點(diǎn)</p><p> p2=p2->link; //p2 指向表的下一個(gè)結(jié)點(diǎn) }</p><p> p1->link=p; //插入 p 所指向的結(jié)點(diǎn)</p><p> p->link=p2; //連接表中剩余的結(jié)點(diǎn)</p><p> cout<<
87、"插入成功!"<<endl;</p><p><b> }</b></p><p><b> }</b></p><p> void deleteNode(NODE *head)//賣出貨品信息刪除 </p><p><b> {</b>
88、</p><p><b> char x;</b></p><p> NODE *pPre,*pLoc;</p><p> pLoc=searchList1(head);</p><p> // dataOut = pLoc->data;</p><p> if(pLoc==NUL
89、L)</p><p><b> {</b></p><p> printf("沒(méi)有查到要?jiǎng)h除的商品信息!\n");</p><p><b> return ;</b></p><p><b> }</b></p><p>
90、if(pLoc!=NULL) </p><p> printf("真的要?jiǎng)h除該商品嗎?(y/n):"); </p><p><b> cin>>x; </b></p><p> if (x=='y'||x=='Y') </p><p><b>
91、; {</b></p><p> pPre=head;</p><p> while((pPre!=NULL)&&(pPre->link!=pLoc))</p><p> pPre=pPre->link;</p><p> pPre->link=pLoc->link;</p&
92、gt;<p> free(pLoc);</p><p> printf("delete success!\n");</p><p><b> }</b></p><p><b> }</b></p><p> NODE *searchList1(NODE
93、*head)//貨品信息查找 </p><p><b> {</b></p><p><b> NODE *p;</b></p><p> char num[30];</p><p> char name[30]; </p><p><b> char p
94、p; </b></p><p> printf("==================\n"); </p><p> printf(" a. 按商品編號(hào)查詢 \n");</p><p> printf(" b. 按商品名稱查詢 \n");</p><p> pri
95、ntf("==================\n"); </p><p> printf(" 請(qǐng) 選 擇: "); </p><p> p=head->link; </p><p><b> cin>>pp; </b></p><p> getchar(
96、);</p><p> if (pp=='a'||pp=='A')</p><p><b> { </b></p><p> cout<<"請(qǐng)輸入要查找的商品編號(hào):"<<endl;</p><p><b> cin>>
97、;num;</b></p><p> while (p&&strcmp(p->data.no,num)!=0) </p><p> p=p->link; </p><p> if ((p==NULL)||strcmp(p->data.no,num)>0)</p><p><b&g
98、t; p=NULL;</b></p><p> else if (pp=='b'||pp=='B') </p><p><b> {</b></p><p> cout<<" 請(qǐng)輸入要查找的商品名稱:"<<endl; </p><
99、p> cin>>name;</p><p> while(p&&strcmp(p->data.leibie,name)!=0)</p><p> p=p->link; </p><p><b> }</b></p><p><b> }</b>
100、</p><p><b> return p;</b></p><p><b> }</b></p><p> NODE *searchList(NODE *head)//貨品信息查找 </p><p><b> {</b></p><p>&l
101、t;b> char a;</b></p><p> char b=' ';</p><p><b> while(1)</b></p><p><b> {</b></p><p> printf("==================\n&qu
102、ot;); </p><p> printf(" 1. 查詢所有家電信息 \n");</p><p> printf(" 2. 按商品名稱查詢 \n");</p><p> printf(" 0. 退出查找系統(tǒng) \n");</p><p> printf("===
103、===============\n"); </p><p> printf(" 請(qǐng) 選 擇: \n"); </p><p> a = getch();</p><p><b> switch(a)</b></p><p><b> {</b></p>
104、<p> case '0':return 0;break;</p><p> case '1':list0(head);break;</p><p> case '2':list1(head);break;</p><p> default:printf("輸入錯(cuò)誤,請(qǐng)重新輸入:\n&q
105、uot;);</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> void list0(NODE *head)//查詢所有家電信息</p><p><b>
106、 {</b></p><p><b> NODE *p;</b></p><p> p=head->link;</p><p> if(p==NULL)</p><p><b> {</b></p><p> printf("沒(méi)有記錄,
107、請(qǐng)輸入記錄\n");</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> printf("類別--型號(hào)--商 標(biāo)--重量--單價(jià)--編號(hào)--日期--廠家\n&quo
108、t;);</p><p> while(p!=NULL)</p><p><b> {</b></p><p> printf("%s %s %s %f%lf %s %s %s\n",p->data.leibie,p->data.xinhao,p->data.brand,p
109、->data.height,p->data.price,p->data.no,p->data.date,p->data.factory);</p><p> p=p->link;</p><p><b> }</b></p><p><b> }</b></p>&l
110、t;p><b> }</b></p><p> void list1(NODE *head)//按名稱查詢函數(shù)</p><p><b> {</b></p><p><b> NODE *p;</b></p><p><b> p=head;</
111、b></p><p><b> int y;</b></p><p> char na[20];</p><p> printf("請(qǐng)輸入查詢家電的名稱:");</p><p> scanf("%s",na);</p><p> printf
112、("你要查詢的記錄為\n");</p><p> while(p!=NULL)</p><p><b> {</b></p><p> y=StrCmp(na,p->data.leibie,20);</p><p><b> if(y==1)</b></p&g
113、t;<p><b> { </b></p><p> p=p->link;</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><
114、p> printf("類別--型號(hào)--商 標(biāo)--重量--單價(jià)--編號(hào)--日期--廠家\n");</p><p> printf("%s %s %s %f%lf %s %s %s\n",p->data.leibie,p->data.xinhao,p->data.brand,p->data.height,p->
115、data.price,p->data.no,p->data.date,p->data.factory);</p><p> p=p->link;</p><p><b> }</b></p><p><b> }</b></p><p><b> }<
116、/b></p><p> int StrCmp(char na[],char name[],int y)//比較數(shù)據(jù)信息</p><p><b> {</b></p><p><b> int i =0;</b></p><p><b> int n=0;</b>
117、</p><p> while(na[i])</p><p><b> {</b></p><p><b> n++;</b></p><p><b> i++;</b></p><p><b> }</b></p&
118、gt;<p> for(i=0;i<n;i++)</p><p><b> {</b></p><p> if(na[i]!=name[i])</p><p><b> break;</b></p><p><b> }</b></p>
119、<p><b> if(i<n)</b></p><p><b> {</b></p><p><b> return 1;</b></p><p><b> }</b></p><p><b> else</
120、b></p><p><b> return 0;</b></p><p><b> }</b></p><p> void modify(NODE *head)//庫(kù)存貨品信息修改</p><p><b> {</b></p><p>&
121、lt;b> int m;</b></p><p><b> NODE *P;</b></p><p> P=searchList1(head);</p><p> cout<<"請(qǐng)輸入要修改的商品信息番號(hào)!:"<<endl;</p><p> if
122、(P==NULL) </p><p><b> { </b></p><p> printf("沒(méi)有查到要修改的商品信息!\n"); </p><p><b> return;</b></p><p><b> }</b></p>&l
123、t;p> if(P!=NULL)</p><p> printf(" :---------------------------------------------:\n");</p><p> printf(" : 選擇要修改的項(xiàng)目 *\n");&l
124、t;/p><p> printf(" :=============================================*\n");</p><p> printf(" : 1. 修改貨品商標(biāo) *\n");</p><p>
125、 printf(" : 2. 修改進(jìn)貨時(shí)間 *\n");</p><p> printf(" : 3. 修改生產(chǎn)廠家 *\n");</p><p> printf(" :
126、 4. 修改貨品質(zhì)量 *\n");</p><p> printf(" : 5. 修改貨品類別 *\n");</p><p> printf(" : 6. 修改貨品編號(hào)
127、 *\n");</p><p> printf(" : 7. 修改貨品單價(jià) *\n");</p><p> printf(" : 8. 修改貨品型號(hào) *\n");<
128、;/p><p> printf(" : 0. 結(jié)束程序 *\n");</p><p> printf(" :---------------------------------------------*\n");</p><p>
129、 cout<<endl;</p><p> printf("請(qǐng)輸入您選擇的功能號(hào)<0-8>:\n");</p><p><b> cin>>m;</b></p><p><b> switch(m)</b></p><p><b
130、> {</b></p><p> case 1:cout<<"請(qǐng)輸入新的商標(biāo)信息"<<endl;cin>>P->data.brand;break;</p><p> case 2:cout<<"請(qǐng)輸入新的日期信息"<<endl;cin>> P->
131、;data.date;break;</p><p> case 3:cout<<"請(qǐng)輸入新的廠家信息"<<endl;cin>> P->data.factory;break;</p><p> case 4:cout<<"請(qǐng)輸入新的重量信息"<<endl;cin>> P
132、->data.height;break;</p><p> case 5:cout<<"請(qǐng)輸入新的類別信息"<<endl;cin>> P->data.leibie;break;</p><p> case 6:cout<<"請(qǐng)輸入新的編號(hào)信息"<<endl;cin>&g
133、t; P->data.no;break;</p><p> case 7:cout<<"請(qǐng)輸入新的單價(jià)信息"<<endl;cin>> P->data.price;break;</p><p> case 8:cout<<"請(qǐng)輸入新的型號(hào)信息"<<endl;cin>>
134、;P->data.xinhao;break;</p><p> case 0:break;</p><p><b> }</b></p><p> P=P->link;</p><p><b> }</b></p><p> bool display(N
135、ODE *head)//顯示庫(kù)存信息</p><p><b> {</b></p><p> NODE *temp;</p><p> temp=head->link;</p><p> printf("電器類別--型號(hào)--商標(biāo)--重量--單價(jià)--編號(hào)--日期--廠家 \n");<
136、/p><p> printf("--------------------------------------------------------------------------------\n");</p><p> while(temp)</p><p><b> {</b></p><p>
137、 HOUSEHOLD info = temp->data;</p><p> printf("%s\t",info.leibie);</p><p> printf("%s\t",info.xinhao);</p><p> printf("%s\t",info.brand);</p&g
138、t;<p> printf("%f\t",info.height);</p><p> printf("%lf\t",info.price);</p><p> printf("%s\t",info.no);</p><p> printf("%s\t",info.
139、date);</p><p> printf("%s\t",info.factory); </p><p> printf("--------------------------------------------------------------------------------\n");</p><p> tem
140、p=temp->link;</p><p><b> }</b></p><p> return true;</p><p><b> }</b></p><p> NODE *sort(NODE *head)//鏈表排序</p><p><b>
141、 {</b></p><p> NODE *first,*rear,*p_min,*min,*p;</p><p> first = NULL;</p><p> while(head != NULL)</p><p><b> {</b></p><p> for(p=he
142、ad,min=head;p->link;p->link)</p><p> { </p><p> if(p->link->data.no<min->data.no)</p><p><b> {</b></p><p><b> p_min
143、=p;</b></p><p> min=p->link;</p><p><b> }</b></p><p><b> }</b></p><p> if(first==NULL)</p><p><b> {</b>&l
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)據(jù)結(jié)構(gòu)-家電庫(kù)存管理系統(tǒng)課程設(shè)計(jì)報(bào)告
- 數(shù)據(jù)結(jié)構(gòu)-家電庫(kù)存管理系統(tǒng)課程設(shè)計(jì)報(bào)告
- 數(shù)據(jù)結(jié)構(gòu)-家電庫(kù)存管理系統(tǒng)課程設(shè)計(jì)報(bào)告
- c++課程設(shè)計(jì)報(bào)告---家電庫(kù)存系統(tǒng)的設(shè)計(jì)
- 庫(kù)存管理系統(tǒng)課程設(shè)計(jì)
- 課程設(shè)計(jì)-庫(kù)存管理系統(tǒng)設(shè)計(jì)
- 物資庫(kù)存管理系統(tǒng)課程設(shè)計(jì)
- 庫(kù)存管理系統(tǒng)課程設(shè)計(jì) (2)
- vf課程設(shè)計(jì)報(bào)告---某企業(yè)倉(cāng)庫(kù)庫(kù)存管理系統(tǒng)
- 管理信息系統(tǒng)課程設(shè)計(jì)---家電公司庫(kù)存管理系統(tǒng)的設(shè)計(jì)與開發(fā)
- 庫(kù)存管理課程設(shè)計(jì)--庫(kù)存管理信息系統(tǒng)
- 數(shù)據(jù)庫(kù)超市商品庫(kù)存管理系統(tǒng)課程設(shè)計(jì)報(bào)告
- 課程設(shè)計(jì)報(bào)告--管理信息系統(tǒng)erp系統(tǒng)庫(kù)存子系統(tǒng)設(shè)計(jì)
- 庫(kù)存管理信息系統(tǒng)-課程設(shè)計(jì)
- 軟件工程課程設(shè)計(jì)--庫(kù)存管理系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)-- 商品庫(kù)存管理系統(tǒng)
- 【課程設(shè)計(jì)】庫(kù)存管理信息系統(tǒng)
- 庫(kù)存管理信息系統(tǒng)課程設(shè)計(jì)
- 軟件工程課程設(shè)計(jì)--庫(kù)存管理系統(tǒng)
- 軟件工程課程設(shè)計(jì)--庫(kù)存管理系統(tǒng)設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論