版權(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ì)報(bào)告 </p><p> 一、題目:鏈表的維護(hù)與文件形式的保存</p><p> 以有序鏈表結(jié)構(gòu)表示某家電商場(chǎng)的庫(kù)存模型。提/進(jìn)貨時(shí),需對(duì)鏈表進(jìn)行維護(hù)。每個(gè)工作日結(jié)束后,應(yīng)將該鏈表以文件形式保存;每日營(yíng)業(yè)前,應(yīng)從文件中恢復(fù)該有序鏈表結(jié)構(gòu)。</p><p><b> 二、算法思想描述</b><
2、/p><p> 線性鏈表即線性表的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)是用一組任意的存儲(chǔ)單元來(lái)存儲(chǔ)線性表的各個(gè)元素。編寫本程序時(shí),就用到了鏈表的創(chuàng)建,插入,刪除等基本算法。在程序中創(chuàng)建了2個(gè)結(jié)構(gòu)體。</p><p> 1.typedef struct _Types</p><p><b> {</b></p><p> char type[
3、10];//保存家電的種類</p><p> Detail *first;//¸指向具體機(jī)型</p><p> struct _Types *next;</p><p><b> }Types;</b></p><p> 2.typedef struct _Detail</p><
4、;p><b> {</b></p><p> char brand[10];//保存家電的品牌</p><p> int number;//保存家電的數(shù)量</p><p> int price; //保存家電的價(jià)格</p><p> struct _Detail *next;<
5、/p><p><b> }Detail;</b></p><p> 通過(guò)點(diǎn)擊不同的按鈕來(lái)執(zhí)行相應(yīng)的函數(shù)對(duì)鏈表進(jìn)行操作,完成各項(xiàng)功能。</p><p><b> 三、功能介紹</b></p><p> 程序使用了窗口界面,通過(guò)按鈕來(lái)進(jìn)行各種操作,比之DOS界面下的菜單更為美觀。</p>
6、<p> 窗口左側(cè)的按鈕有鏈表創(chuàng)建、初始數(shù)據(jù)、打開文件、保存文件和退出。其中鏈表在軟件啟動(dòng)時(shí)會(huì)自己創(chuàng)建,若是創(chuàng)建失敗則需要點(diǎn)擊創(chuàng)建按鈕進(jìn)行創(chuàng)建。</p><p> 初始數(shù)據(jù)的功能是將程序內(nèi)置的數(shù)據(jù)賦給鏈表。</p><p> 打開文件和保存文件顧名思義,一個(gè)是從文件讀入數(shù)據(jù)到鏈表,一個(gè)是將數(shù)據(jù)保存到鏈表。在文件操作方便我采用了CFile下的函數(shù),實(shí)現(xiàn)了彈出式窗口進(jìn)行文件
7、載入與保存,不再局限于固定地址的文件讀寫。</p><p> 代碼段CFileDialog fileDlg(TRUE);</p><p> 退出按鈕則調(diào)用系統(tǒng)函數(shù)退出軟件。</p><p> 窗口右側(cè)的按鈕有管理庫(kù)存和刷新數(shù)據(jù)。</p><p> 在管理庫(kù)存按鈕對(duì)應(yīng)的函數(shù)實(shí)現(xiàn)了一個(gè)伸縮隱藏窗口,點(diǎn)擊后出來(lái)隱藏窗口,在隱藏窗口上有各種管
8、理對(duì)應(yīng)的操作按鈕。</p><p> 刷新數(shù)據(jù)則是將鏈表中的數(shù)據(jù)重新顯示出來(lái)。</p><p> 窗口中間采用了4個(gè)列表框來(lái)實(shí)現(xiàn)輸出。</p><p> 第一個(gè)列表框用來(lái)顯示家電的類別。</p><p> 第二個(gè)列表框用來(lái)顯示家電的品牌。</p><p> 第三個(gè)列表框用來(lái)顯示家電的價(jià)格。</p>
9、;<p> 第四個(gè)列表框用來(lái)顯示家電的數(shù)量。</p><p> 每個(gè)列表框下面都寫個(gè)相應(yīng)的操作函數(shù)。第一個(gè)列表框?qū)崿F(xiàn)了點(diǎn)擊類別之后在二、三、四列表框分別顯示出相應(yīng)類別下的具體家電信息。二、三、四列表框下的函數(shù)實(shí)現(xiàn)了點(diǎn)擊后將二、三、四列表框的焦點(diǎn)顯示一致。</p><p> 在隱藏的下方窗口上有各種管理用的按鈕:添加商品、出售商品、按品牌和種類查詢商品。</p>
10、;<p> 添加商品:可以實(shí)現(xiàn)添加任意商品,自動(dòng)判斷,已有的則會(huì)只添加數(shù)目,沒(méi)有記錄的則會(huì)添加新記錄。</p><p> 出售商品:對(duì)選中的家電進(jìn)行出售。</p><p> 查詢:采用了組合框來(lái)讓用戶進(jìn)行選擇查詢,不需要進(jìn)行輸入操作,可以按類別和品牌分別查詢。解決了同個(gè)品牌有多種家電時(shí)候的名字重復(fù)問(wèn)題。</p><p><b> 四、
11、程序結(jié)構(gòu)</b></p><p><b> 五、特色函數(shù)介紹</b></p><p><b> 1. 列表框</b></p><p> OnSelchangeList2()</p><p><b> {</b></p><p>&l
12、t;b> int i;</b></p><p> i=((CListBox*)GetDlgItem(IDC_LIST2))->GetCurSel();</p><p> ((CListBox*)GetDlgItem(IDC_LIST3))->SetCurSel(i);</p><p> ((CListBox*)GetDlgIte
13、m(IDC_LIST4))->SetCurSel(i);</p><p> CString str,str1,str2;</p><p> ((CListBox*)GetDlgItem(IDC_LIST2))->GetText(i,str);</p><p> ((CListBox*)GetDlgItem(IDC_LIST3))->GetTe
14、xt(i,str1);</p><p> ((CListBox*)GetDlgItem(IDC_LIST4))->GetText(i,str2);</p><p> GetDlgItem(IDC_EDIT2)->SetWindowText(str);</p><p> GetDlgItem(IDC_EDIT3)->SetWindowText(
15、str1);</p><p> GetDlgItem(IDC_EDIT4)->SetWindowText(str2);</p><p><b> }</b></p><p> 功能:點(diǎn)擊實(shí)現(xiàn)品牌、價(jià)格、數(shù)量3個(gè)顯示框的焦點(diǎn)一致,并在下方編輯框中顯示出來(lái)。同理OnSelchangeList3()、OnSelchangeList4()2
16、個(gè)函數(shù)與此功能一樣。</p><p><b> 2.文件讀取與保存</b></p><p> CFileDialog fileDlg(TRUE);</p><p> fileDlg.m_ofn.lpstrTitle="¶ÁÈ¡¿â´æÎ
17、196;¼þ";</p><p> fileDlg.m_ofn.lpstrFilter="Text Files(*.txt)\0*.txt\0All Files(*.*)\0*.*\0\0";</p><p> 采用CFile而不用fread函數(shù),實(shí)現(xiàn)窗口彈出進(jìn)行文件操作,使得文件保存不具有局限性。</p><p&g
18、t;<b> 3. 數(shù)據(jù)刷新2</b></p><p> 這個(gè)函數(shù)不是顯示輸出的函數(shù),而是解決查找組合框中品牌名字重復(fù)的問(wèn)題。</p><p> OnFlush2() </p><p><b> {</b></p><p> int Num=((CComboBox*)GetDlgItem
19、(IDC_COMBO1))->GetCount();</p><p> for(int i=0;i<Num;i++)</p><p><b> {</b></p><p> for(int j=i+1;j<Num;j++)</p><p><b> {</b></p&
20、gt;<p> CString temp,temp1;</p><p> ((CComboBox*)GetDlgItem(IDC_COMBO1))->GetLBText(i,temp);</p><p> ((CComboBox*)GetDlgItem(IDC_COMBO1))->GetLBText(j,temp1);</p><p>
21、; if(!strcmp(temp,temp1))</p><p><b> {</b></p><p> ((CComboBox*)GetDlgItem(IDC_COMBO1))->DeleteString(j);</p><p><b> Num-=1;</b></p><p>&
22、lt;b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> 通過(guò)組合框中串的比較從而刪除一個(gè)重復(fù)的串來(lái)達(dá)到目的。</p><p>
23、<b> 六、技術(shù)討論</b></p><p> 1.界面的制作主要就是對(duì)控件操作函數(shù)的使用,只要找到相應(yīng)的函數(shù)就很簡(jiǎn)單。</p><p> 2.文件操作函數(shù)的選擇。</p><p> CFile.read與fread的選擇,在反復(fù)實(shí)驗(yàn)之后選用了CFile,保存打開的時(shí)候可以選擇任意地址的文件,不像fread\fwrite那樣局限。&l
24、t;/p><p> 3.對(duì)于保存文件損壞恢復(fù)的問(wèn)題沒(méi)有想到好的解決辦法,采用多個(gè)文件保存也是一個(gè)辦法,但是感覺(jué)沒(méi)有很大作用。</p><p><b> 七.收獲與體會(huì)</b></p><p> 從程序的準(zhǔn)備到設(shè)計(jì)最終完成,我做了一個(gè)多月,但是我可以自豪的講我是完全獨(dú)立完成的。其中大多時(shí)間花在了MFC的學(xué)習(xí)之上,但是后來(lái)卻發(fā)現(xiàn)做一個(gè)界面其實(shí)并沒(méi)
25、有想象中的復(fù)雜。</p><p> 設(shè)計(jì)完程序開始編寫的時(shí)候,我發(fā)現(xiàn)我對(duì)鏈表的操作很不熟悉,所以在開始的時(shí)候總是出現(xiàn)內(nèi)存出錯(cuò),后來(lái)耐著性子慢慢調(diào)試,在漸漸熟悉了之后就變得很簡(jiǎn)單了。剛開始在學(xué)MFC的時(shí)候我用的數(shù)組做的管理系統(tǒng),然后再改成的鏈表版本并添加了不少功能。在整個(gè)程序設(shè)計(jì)的過(guò)程中感覺(jué)最頭疼的是程序能夠成功運(yùn)行但總在某個(gè)操作的時(shí)候突然出錯(cuò),一直到這些天還發(fā)現(xiàn)了2個(gè)很隱蔽的錯(cuò)誤,到現(xiàn)在的完成真正花了很多的時(shí)間
溫馨提示
- 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)課程設(shè)計(jì)報(bào)告-----鏈表的維護(hù)與文件形式的保存
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--鏈表的維護(hù)與文件形式的保存
- 課程設(shè)計(jì)報(bào)告---鏈表的維護(hù)與文件形式的保存
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告--鏈表
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告---鏈表操作
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告---鏈表操作
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---雙向鏈表
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)-鏈表操作
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---鏈表操作
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---城市鏈表的設(shè)計(jì)與實(shí)現(xiàn)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告-雙鏈表創(chuàng)建與演示設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)-- 循環(huán)單鏈表
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--雙向循環(huán)鏈表的實(shí)現(xiàn)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---鏈表的創(chuàng)建、插入、刪除、修改
- 實(shí)現(xiàn)兩個(gè)鏈表的合并數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)
- 單鏈表的基本操作迷宮問(wèn)題數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---實(shí)現(xiàn)兩個(gè)鏈表的合并
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告--huffman編碼與文件壓縮
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告--雙向循環(huán)鏈表的創(chuàng)建及相關(guān)操作的實(shí)現(xiàn)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告
評(píng)論
0/150
提交評(píng)論