【C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)】庫(kù)存管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)(含源代碼)_第1頁(yè)
【C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)】庫(kù)存管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)(含源代碼)_第2頁(yè)
【C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)】庫(kù)存管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)(含源代碼)_第3頁(yè)
【C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)】庫(kù)存管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)(含源代碼)_第4頁(yè)
【C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)】庫(kù)存管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)(含源代碼)_第5頁(yè)
已閱讀5頁(yè),還剩20頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、*課程設(shè)計(jì)報(bào)告*浙江理工大學(xué)計(jì)算機(jī)學(xué)院2010年第二學(xué)期c語(yǔ)言數(shù)據(jù)結(jié)構(gòu) 課程設(shè)計(jì)題 目: 庫(kù)存管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn) 專業(yè)班級(jí): 姓 名: 學(xué) 號(hào): 指導(dǎo)教師: 成 績(jī): 目 錄一、程序設(shè)計(jì)目標(biāo)31.1問題描述31.2目的和意義32.1方案確定52.2程序設(shè)計(jì)模塊連接圖52.3模塊功能說(shuō)明5三、詳細(xì)設(shè)計(jì)73.1數(shù)據(jù)設(shè)計(jì)73.2流程框圖8四、調(diào)試分析和測(cè)試結(jié)果11五、新得體會(huì)13六、c源程序清單14七、附錄24題目:庫(kù)存管理系統(tǒng)一、程序設(shè)計(jì)目標(biāo)1.1問題描述一個(gè)庫(kù)存貨品信息管理系統(tǒng)軟件,要求能實(shí)現(xiàn)庫(kù)存貨品信息的輸入、插入、刪除、查找等功能,并能建立和更新的庫(kù)存信息保存于文件供輸出或打印。對(duì)于查找、

2、刪除等功能要求能按貨品名、貨品號(hào)分別進(jìn)行。每個(gè)貨品的相關(guān)信息包括:貨品號(hào)、貨品名、貨品庫(kù)存量、進(jìn)貨日期、貨品生產(chǎn)廠家及供應(yīng)商等。實(shí)際上要完成的是一個(gè)簡(jiǎn)單數(shù)據(jù)庫(kù)管理信息系統(tǒng)的設(shè)計(jì),同時(shí)要掌握數(shù)據(jù)結(jié)構(gòu)方面的知識(shí)。 1.2目的和意義 通過課程設(shè)計(jì)題目的練習(xí),強(qiáng)化對(duì)所學(xué)知識(shí)的掌握及對(duì)問題分析和任務(wù)定義的理解,對(duì)每到題目作出了相應(yīng)的邏輯分析和數(shù)據(jù)結(jié)構(gòu)的選擇,通過對(duì)任務(wù)的分析,為操作對(duì)象定義相應(yīng)的數(shù)據(jù)結(jié)構(gòu),以過程化程序設(shè)計(jì)的思想方法為原則劃分各個(gè)模塊,定義數(shù)據(jù)的抽象數(shù)據(jù)類型。分模塊對(duì)題目進(jìn)行設(shè)計(jì),強(qiáng)化學(xué)生對(duì)c語(yǔ)言的掌握和對(duì)數(shù)據(jù)結(jié)構(gòu)的選擇及掌握。通過程序的編譯掌握對(duì)程序的調(diào)試方法及思想,并且讓學(xué)生學(xué)會(huì)使用一

3、些編程技巧。促使學(xué)生養(yǎng)成良好的編程習(xí)慣, 以及讓學(xué)生對(duì)書本上的知識(shí)進(jìn)行了實(shí)踐。算法與數(shù)據(jù)結(jié)構(gòu)這門課是計(jì)算機(jī)科學(xué)中一門綜合性的專業(yè)基礎(chǔ)課。它不僅是計(jì)算機(jī)學(xué)科的核心課程,而且已成為其它理工專業(yè)的熱門選修課。它又是操作系統(tǒng)、編譯原理、數(shù)據(jù)庫(kù)原理、算法分析、人工智能、圖象處理等專業(yè)課程的前導(dǎo)課。具有承上啟下的作用。數(shù)據(jù)結(jié)構(gòu)的研究不僅涉及到計(jì)算機(jī)硬件的研究范圍,而且和計(jì)算機(jī)軟件的研究有著密切的關(guān)系。計(jì)算機(jī)科學(xué)各領(lǐng)域及有關(guān)的應(yīng)用軟件都要用到數(shù)據(jù)結(jié)構(gòu)。該課程的目的就是介紹一些最常用的數(shù)據(jù)結(jié)構(gòu),闡明數(shù)據(jù)結(jié)構(gòu)內(nèi)在的邏輯關(guān)系,討論它們?cè)谟?jì)算機(jī)中的存儲(chǔ)表示,并結(jié)合各種典型應(yīng)用說(shuō)明它們?cè)谶M(jìn)行各種運(yùn)算時(shí)的動(dòng)態(tài)性質(zhì)及實(shí)際

4、的執(zhí)行算法。二、概要設(shè)計(jì)2.1方案確定庫(kù)存貨品信息管理系統(tǒng)要求實(shí)現(xiàn)許多功能,可遵循結(jié)構(gòu)化程序設(shè)計(jì)思想來(lái)進(jìn)行本系統(tǒng)的設(shè)計(jì)自頂向下,逐步細(xì)化,也就是將軟件設(shè)計(jì)任務(wù)劃分成許多容易解決的小的子任務(wù),即分解出許多子功能模塊進(jìn)行設(shè)計(jì)。本程序經(jīng)過分析可劃分出6個(gè)子任務(wù):輸入、輸出、插入、刪除、查找和保存。2.2程序設(shè)計(jì)模塊連接圖庫(kù)存貨品信息管理系統(tǒng)的模塊連接結(jié)構(gòu)如下圖:倉(cāng)庫(kù)貨品信息管理系統(tǒng) 載入模塊刪除模塊保存模塊 查找模塊插入模塊 輸出模塊輸入模塊2.3模塊功能說(shuō)明對(duì)本系統(tǒng)的功能進(jìn)行分析后可作如下的模塊化設(shè)計(jì):輸入模塊實(shí)現(xiàn)功能:按順序?qū)⒇浳锞幪?hào)、貨物名稱、貨物數(shù)量依次輸入,并建立鏈表將其連接。當(dāng)輸入的貨品

5、編號(hào)為0時(shí),輸入結(jié)束。插入模塊實(shí)現(xiàn)功能:向已經(jīng)存盤的文件中再輸入貨品的信息,包括貨品編號(hào)、貨品名稱、貨品數(shù)量等等。刪除模塊實(shí)現(xiàn)功能:在已經(jīng)存儲(chǔ)的文件中刪除指定的貨品信息,并釋放內(nèi)存空間。刪除可以按照貨品編號(hào)和貨品名稱兩中方法進(jìn)行。查找模塊實(shí)現(xiàn)功能:在已經(jīng)存儲(chǔ)的文件中查找指定的貨品信息??梢园凑詹檎邑浧肪幪?hào)和貨品名稱兩種方法進(jìn)行。輸出模塊實(shí)現(xiàn)功能:在輸入特定的文件名之后,輸出該文件中所包含的全部貨品信息。保存模塊實(shí)現(xiàn)功能:進(jìn)行上述操作后,都要進(jìn)行保存操作,鏈表中的信息以文件形式被長(zhǎng)期。保存。載入模塊實(shí)現(xiàn)功能:將磁盤上的數(shù)據(jù)文件載入鏈表。主序模塊實(shí)現(xiàn)功能:完成系統(tǒng)的界面處理,包括開始界面和主菜單界

6、面。三、詳細(xì)設(shè)計(jì)3.1數(shù)據(jù)設(shè)計(jì)(1)數(shù)據(jù)結(jié)構(gòu)的選擇選取動(dòng)態(tài)數(shù)據(jù)結(jié)構(gòu),本系統(tǒng)是通過雙向鏈表來(lái)完成的。動(dòng)態(tài)存儲(chǔ)分配與釋放: 申請(qǐng)存儲(chǔ)空間函數(shù)malloc( )函數(shù)首部原型為void * malloc(unsigned int size) 釋放存儲(chǔ)空間函數(shù)free( )函數(shù)首部原型為void free(void*p)動(dòng)態(tài)數(shù)據(jù)結(jié)構(gòu)雙向鏈表head 2030 2036 2025 20422030head2030 20362025d null c 2042b 2025a20363.2流程框圖開 始(1)插入模塊調(diào)入載入模塊head=null“yes”or “no” head=ptr1ptr3=ptr2-n

7、ext;ptr2=ptr3-priornull=ptr3-nextptr1=ptr2;ptr1-next=ptr1ptr2=ptr1-priorptr1!=null申請(qǐng)一個(gè)結(jié)點(diǎn)空間,使ptr3指向它給ptr3指向結(jié)點(diǎn)輸入預(yù)插入貨品的信息yny返回nullny返回head結(jié)束開始(4)保存模塊輸入預(yù)保存文件的文件名創(chuàng)建文件成功 n yhead=ptr1ptr1!=null n y將ptr1指向結(jié)點(diǎn)的數(shù)據(jù)寫入文件ptr1-next=ptr1結(jié)束開始(5)輸出模塊調(diào)用載入模塊head= =null y nhead=ptr1輸出ptr1指向結(jié)點(diǎn)的貨品信息結(jié)束對(duì)以上各模塊的文字解釋說(shuō)明:(1)輸入模塊:

8、其實(shí)就是一個(gè)建立鏈表的操作模塊。建立鏈表的具體操作就是逐一輸入各結(jié)點(diǎn)數(shù)據(jù),并建立其前后相鏈的關(guān)系。首先設(shè)三個(gè)指針變量:head,ptr1,ptr2。它們都是指向結(jié)構(gòu)體類型數(shù)據(jù)的。先使head的值為null,這是鏈表為空的情況。用malloc函數(shù)開辟一個(gè)結(jié)點(diǎn),并使ptr1,ptr2都指向它,之后從鍵盤讀入一個(gè)貨品的數(shù)據(jù)給ptr1所指向的結(jié)點(diǎn)。當(dāng)輸入的ptr1-num不為0時(shí),令headptr1;ptr2=ptr1,即把ptr1的值賦給head,使ptr2,ptr1,head都指向這一新開辟的結(jié)點(diǎn),此結(jié)點(diǎn)就成為鏈表中的第一個(gè)結(jié)點(diǎn)。再開辟一個(gè)新結(jié)點(diǎn)并使ptr1指向它,讀入該結(jié)點(diǎn)的數(shù)據(jù),如果輸入的pt

9、r1-num不為0,則應(yīng)鏈入這第二個(gè)結(jié)點(diǎn),這時(shí)和上一個(gè)結(jié)點(diǎn)的處理不同,是將ptr1的值賦給ptr2-next,也就是使第一個(gè)結(jié)點(diǎn)的next成員指向第二個(gè)結(jié)點(diǎn),接著將ptr2也指向結(jié)點(diǎn)2。再開辟一個(gè)新結(jié)點(diǎn)并使ptr1指向它,讀入該結(jié)點(diǎn)的數(shù)據(jù),同樣將ptr1的值賦給ptr2-next,也就是使第三個(gè)結(jié)點(diǎn)鏈接到第二個(gè)結(jié)點(diǎn)之后,并接著將ptr1的值賦給ptr2,使ptr2指向結(jié)點(diǎn)3。再開辟一個(gè)新結(jié)點(diǎn),并使ptr1指向它,輸入該結(jié)點(diǎn)的數(shù)據(jù),如果輸入ptr1-num為0,則是輸入結(jié)束標(biāo)志,此結(jié)點(diǎn)不被鏈接到鏈表中,就將null賦給ptr2-next。建立鏈表過程至此結(jié)束,ptr1最后所指結(jié)點(diǎn)并未鏈入鏈表中。

10、(2)插入模塊:要完成的是鏈表的插入操作,即將一個(gè)新結(jié)點(diǎn)插入到一個(gè)已有的鏈表中,對(duì)剛剛建立的鏈表,首先新設(shè)一個(gè)指針變量ptr0,并開辟一個(gè)結(jié)點(diǎn)使ptr3指向它,輸入該結(jié)點(diǎn)的數(shù)據(jù),即新貨的有關(guān)數(shù)據(jù),接下來(lái)查找要插入位置結(jié)點(diǎn),找到后只需修改此結(jié)點(diǎn)和ptr0指向結(jié)點(diǎn)指針域的值即可,鏈表中所有元素位置均不需移動(dòng),這就體現(xiàn)了鏈表的優(yōu)點(diǎn)。(3)刪除模塊:要完成的是鏈表的刪除操作,只需修改鏈表中要?jiǎng)h除結(jié)點(diǎn)的前一個(gè)結(jié)點(diǎn)的鏈指針。使之指向被刪除結(jié)點(diǎn)的后面一個(gè)結(jié)點(diǎn)即可。(4)保存模塊:將最終想要保留的數(shù)據(jù)信息保存于文件中。(5)輸出模塊:要完成的是依次輸出鏈表中各結(jié)點(diǎn)的數(shù)據(jù)的操作。首先找到鏈表頭結(jié)點(diǎn)的地址,也就是

11、head的值,然后設(shè)一個(gè)指針變量ptr1,先指向第一個(gè)結(jié)點(diǎn),輸出ptr1所指的結(jié)點(diǎn),然后使ptr1后移一個(gè)結(jié)點(diǎn),再輸入直至鏈表的尾結(jié)點(diǎn)結(jié)束。四、調(diào)試分析和測(cè)試結(jié)果各模塊功能測(cè)試:com *input( )輸入模塊功能測(cè)試用戶逐一輸入的數(shù)據(jù)不斷添加就形成了一個(gè)列表。前面已經(jīng)表明本系統(tǒng)的數(shù)據(jù)結(jié)構(gòu)選取動(dòng)態(tài)數(shù)據(jù)結(jié)構(gòu)雙向鏈表,因此此列表在內(nèi)存中是以鏈表的形式存儲(chǔ)的。那么輸入模塊實(shí)際上就是一個(gè)建立鏈表的操作模塊。通過模塊save( )將內(nèi)存中的已輸入的數(shù)據(jù)存入到指定路徑的某*.dat文件中去.特別指出: * 為用戶自己規(guī)定的貨品名。輸入條件: goodsnumb ld型,且0. 當(dāng)=0時(shí)退出 goodsn

12、ame s 型 goodscount d型,且0. 當(dāng)0時(shí)顯示輸入錯(cuò)誤,重輸字樣。 調(diào)用save( )時(shí) goosfilename:d:pllfu輸出結(jié)果: 貨品保存在用戶指定路徑的 *.dat文件中以免丟失。2print( )輸出模塊可將指定文件中的內(nèi)容顯示在屏幕上。輸出條件:調(diào)用載入模塊時(shí),goosfilename:d:pllfu輸出結(jié)果:如輸出條件正確,則可在屏幕上顯示如下:goodsnumb goodsname goodscount0001 a 1250002 b 2300003 c 1803. insert( )插入模塊插入模塊要完成的是鏈表的插入操作,即將一個(gè)新結(jié)點(diǎn)插入一個(gè)已有的鏈

13、表中。輸入條件:調(diào)用載入模塊。goosfilename:d:pllfu按貨品名的number, name, count 分別輸入,如輸錯(cuò)則有信息提示。輸出結(jié)果:輸入正確后,則顯示插入成功,返回菜單后,存盤。delet( )刪除模塊刪除模塊要完成的是鏈表的刪除操作,即將一個(gè)結(jié)點(diǎn)從已有的鏈表中刪除。輸入條件:調(diào)用載入模塊。goosfilename:d:pllfu有兩種刪除方式按號(hào)和名刪除,如輸錯(cuò)則有信息提示。輸出結(jié)果:輸入正確后,則顯示刪除成功,返回菜單后,存盤。search( )查找模塊鏈表的查找操作是指在已知鏈表中查找值為某指定值的結(jié)點(diǎn)。輸入條件:調(diào)用載入模塊。goosfilename:d:p

14、llfu有兩種查找方式按號(hào)和名查找,如輸錯(cuò)則有信息提示。輸出結(jié)果:輸入正確后,則顯示查找成功,返回菜單后,存盤。6save( )保存模塊保存模塊最終將想要保留的數(shù)據(jù)信息保存于文件。7com *openfile( )載入模塊用于調(diào)用。 五、新得體會(huì)本學(xué)期我們學(xué)習(xí)了數(shù)據(jù)結(jié)構(gòu)課程,通過基本的訓(xùn)練和基礎(chǔ)知識(shí)的鞏固,在對(duì)數(shù)據(jù)結(jié)構(gòu)算法進(jìn)行初步了解的同時(shí)也提高了語(yǔ)言設(shè)計(jì)能力,本次短學(xué)期在經(jīng)過一個(gè)學(xué)期數(shù)據(jù)結(jié)構(gòu)學(xué)習(xí)后,我們總結(jié)歸納了重點(diǎn)知識(shí),并通過重點(diǎn)知識(shí)的運(yùn)用設(shè)計(jì)了一個(gè)多功能菜單,以實(shí)現(xiàn)多方面的需求。就我們計(jì)算機(jī)專業(yè)看來(lái),編程能力是很重要的,一個(gè)計(jì)算機(jī)專業(yè)學(xué)生首先需要了解的運(yùn)用的知識(shí)就是程序語(yǔ)言設(shè)計(jì)。而要學(xué)習(xí)

15、編程,必須明確學(xué)習(xí)的目的,也就是學(xué)習(xí)編程是為了什么。是為了了解計(jì)算機(jī),還是為了自己的發(fā)展或者是因?yàn)閭€(gè)人愛好。程序的實(shí)現(xiàn)不是一時(shí)愛好就可以完成的。一般來(lái)說(shuō)在學(xué)習(xí)程序設(shè)計(jì)方法和語(yǔ)言時(shí)掌握基本理論及語(yǔ)法時(shí)比較容易,但是在實(shí)際應(yīng)用和算法估量時(shí)卻覺得無(wú)從下手。比如本次程序設(shè)計(jì)中的第一個(gè)程序,運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì),拿到題目的時(shí)候覺得很簡(jiǎn)單,可以通過結(jié)構(gòu)體輸入文本和數(shù)據(jù),然后經(jīng)過幾個(gè)函數(shù)的計(jì)算得出分?jǐn)?shù),但是在語(yǔ)言編輯過程中,發(fā)現(xiàn)無(wú)法區(qū)分各學(xué)校以及各選手,無(wú)法用恰當(dāng)?shù)姆椒▋?chǔ)存數(shù)據(jù)和字符,這就是知識(shí)在實(shí)際中的運(yùn)用問題。如何編寫符合要求的程序、如何編寫高質(zhì)量的程序更是我們所面臨的難題。這就要求我們仔細(xì)體會(huì),在反復(fù)實(shí)踐的

16、過程中掌握編程技巧,通過不斷的克服困難來(lái)提高自己的編程能力。這是一個(gè)長(zhǎng)期的過程,所以必須有堅(jiān)定的恒心才能開始學(xué)習(xí)。這是我們?cè)诒敬握n程設(shè)計(jì)中得到的體會(huì)之一。通過本次課程設(shè)計(jì),我們體會(huì)到編程能力的高低主要是由以下幾點(diǎn)決定:編程的習(xí)慣;數(shù)學(xué)應(yīng)用能力,其中包括邏輯思維,分析問題的能力;對(duì)數(shù)據(jù)結(jié)構(gòu)的認(rèn)識(shí)能力;經(jīng)驗(yàn)的多少,包括各種語(yǔ)言的掌握能力。其實(shí),最主要的一點(diǎn)還是要認(rèn)真勤奮,為自己的目標(biāo)而不怕困難不斷前進(jìn),這不只是對(duì)程序設(shè)計(jì)而言,學(xué)習(xí)其他所有的東西都應(yīng)如此。 六、c源程序清單#include /*標(biāo)準(zhǔn)輸入/輸出頭文件*/#include /*包含繪制圖形函數(shù)等頭文件*/#include /*包含字符串

17、處理函數(shù)頭文件*/#include /*包含動(dòng)態(tài)存儲(chǔ)與釋放函數(shù)頭文件*/#include#define len sizeof(com)#define print % -15ld% -15s% -15dn,ptr1-num,ptr1-name,ptr1-count#define check_count ptr1-countcountnum);flushall(); if(ptr1-num=0) printf(please press any key to back to last menu:); getch( ); free(ptr1); return(0); printf(please inp

18、ut the no.%d goods%s:n,n,string2);scanf(%s,&ptr1-name); flushall( ); /*刷新緩沖區(qū)函數(shù)*/ printf(please input the no.%d goods%s:n,n,string3);scanf(%d,&ptr1-count); flushall( ); if(check_count) printf(please input the right goodscount!n); while(check_count); while(ptr1-num!=null) if(n=1) head=ptr1; else ptr2-

19、next=ptr1; ptr1-prior=ptr2; n=n+1; ptr2=ptr1; if(ptr1=(com* )malloc(len)=null) printf(no enough memory,fail to creat linklist!); getch( ); do printf(please input the no.%d goods%s:n,n,string1); scanf(%ld,&ptr1-num); flushall( ); if(ptr1-num=0) ptr1-num=null; break; printf(please input the no.%d good

20、s%s:n,n,string2);scanf(%s,&ptr1-name); flushall( ); printf(please input the no.%d goods%s:n,n,string3);scanf(%d,&ptr1-count); flushall( ); if(check_count) printf(please input the right goodscount!n); while(check_count); ptr2-next=null; gotoxy(1,24); printf(finish the inputting of goodsmessage,press

21、any key to back to last menu,please save:); getch(); return(head);/*插入模塊*/com * insert( ) com * ptr3; char string1 =goodsnumber; char string2 =goodsname; char string3 =goodscount; char judge10; clrscr( ); gotoxy(18,10); printf(please input inserted goodsfliename:); head=openfile( ); if(head=null) re

22、turn(null); else do clrscr( ); printf(please input inserted goodsgoodsmessage:n); if(ptr3=(com*)malloc(len)=null) printf(no enough memory,fail to creat node!); getch(); do printf(please input goods%s(0):n,string1);scanf(%ld,&ptr3-num); flushall( ); if(ptr3-numname);flushall( ); printf(please input g

23、oods%s:n,string3);scanf(%d,&(ptr3-count); flushall( ); if(check_count2) printf(please input the right goodscount(0)!n); while(check_count2); ptr1=head; while(ptr1!=null) ptr2=ptr1; ptr1=ptr1-next; ptr1-prior=ptr2; ptr2-next=ptr3;ptr3-prior=ptr2; ptr3-next=null; printf(ninserting success!cotinue to i

24、nsert?(yes or no):); scanf(%s,judge); clrscr( ); while(! strcmp(judge,yes); gotoxy(20,10); printf(inserting success!n); gotoxy(18,11); printf(press any key to back to last menun); gotoxy(16,12); printf(and make sure to save(6) them or you will lose them!n); getch( ); return(head);/*刪除模塊*/com *delet(

25、 ) char name10; char judge10; int sel; int del_num; clrscr( ); gotoxy(20,10); printf(please input delected goodsfliename:); head=openfile( ); clrscr( ); if(head=null) return(null); else do do clrscr( ); gotoxy(3,4); printf(please input delected goodsmessage:); gotoxy(1,9); printf( *1.del depend on g

26、oodsnumbern); gotoxy(1,10); printf( *2.del depend on goodsnamen); gotoxy(10,22); printf(please choose a number between 1 and 2:); scanf(%d,&sel); switch(sel) case 1:clrscr( ); gotoxy(6,6); printf(please input goodsnumber:); scanf(%d,&del_num); break; case 2:clrscr( ); gotoxy(6,6); printf(please inpu

27、t goodsname:); scanf(%s,&name); break; while(sel!=1&sel!=2); ptr1=head; if(ptr1-num=del_num|(strcmp(ptr1-name,name)=0) head=ptr1-next; printf(success to delect goodsmessage!n); else /*判斷是否是目標(biāo)結(jié)點(diǎn)*/ while(ptr1!=null&ptr1-num!=del_num&strcmp(ptr1-name,name)!=0) ptr2=ptr1; ptr1=ptr1-next;ptr1-prior=ptr2;

28、 if(ptr1-num=del_num|(strcmp(ptr1-name,name)=0) ptr2-next=ptr1-next; ptr1-next-prior=ptr1-prior; free(ptr1); printf(nsuccess to delect goodsmessage!nn); else printf(ncant find this goodsmessage!nn); printf(cotinue to delect?(yes or no):); scanf(%s,judge); while(!strcmp(judge,yes); clrscr( ); gotoxy(

29、20,10); printf(delecting success!n); gotoxy(18,11); printf(press any key to back to last menun); gotoxy(16,12); printf(and make sure to save(6) them or you will lose them!n); getch( ); return(head); /*查找模塊*/void search( )char name10; char judge10; int sel; long int sel_num; clrscr( ); gotoxy(18,10);

30、 printf(please press searched goodsfliename:); head=openfile( ); if(head=null) return; else do do clrscr( ); gotoxy(5,4); printf(please choose the way to search:); gotoxy(1,9); printf( *1.search depend on goodsnumbern); printf( *1.search depend on goodsnamen); gotoxy(10,22); printf(please choose a n

31、umber between 1 and 2:); scanf(%d,&sel); switch(sel) case 1:clrscr( ); printf(please input goodsnumber:); scanf(%ld,&sel_num); break; case 2:clrscr( ); printf(please input goodsname:); scanf(%s,name); break; while(sel!=1&sel!=2); ptr1=head; while(ptr1!=null&ptr1-num!=sel_num&strcmp(ptr1-name,name)!=

32、0) ptr1=ptr1-next; if (ptr1-num=sel_num)|(strcmp(ptr1-name,name)=0) printf(n success to search goodsmessage!n); printf(goodsnumber goodsname goodscountnn); printf(print); else printf(ncant find this goodsmessage!nn); printf(cotinue to search?(yes or no):); scanf(%s,judge); while(!strcmp(judge,yes);

33、gotoxy(10,24); printf(please press any key to back to last menu:); getch( ); /*輸出模塊*/void print( ) int i=1; clrscr( ); gotoxy(18,10); printf(please input printed goodsfilename:); head=openfile( ); if(head=null) return; else clrscr( ); printf( the printed result as follows:n); printf(goodsnumber good

34、sname goodscountnn); ptr1=head; do printf(print); ptr1=ptr1-next; if(i/10=1) /*超過十行換頁(yè)*/ i=0; printf(press any key to change page:); getch( ); clrscr( ); gotoxy(0,6); printf(goodsnumber goodsname goodscountnn); i=i+1; while(ptr1!=null); gotoxy(10,24); printf(please press any key to back to last menu:

35、); getch( ); /*保存模塊*/void save(com *head) clrscr(); gotoxy(8,13); printf(please input saved goodsfilename(limit to letter or number):); scanf(%s,filename1); if(fp=fopen(strcat(filename1,filename2),wb)=null) /*以二進(jìn)制只寫方式打開一個(gè)流*/ printf(fail to creat file!); getch( ); return; ptr1=ptr2=head; while(ptr1!=

36、null) if(fwrite(ptr1,sizeof(com),1,fp)!=1) printf(fail to print message to file!); getch( ); return; ptr1=ptr1-next; fclose(fp); gotoxy(10,24); printf(saving success!press any key to back to last menu:); getch();/*載入模塊*/com * openfile( )int n=1; scanf(%s,filename1); if(fp=fopen(strcat(filename1,file

37、name2),rb)=null) gotoxy(15,13); printf(this filename isnt exist,please check if exist.npress any key back to menu); getch( ); return(null); if(ptr1=ptr2=(com*)malloc(len)=null) printf(no enough memory,fail to creat linklist!nplease press any key back to menun); getch( ); return(null); if(fread(ptr1,

38、sizeof(com),1,fp)!=1) /*從fp指向的流中讀取1個(gè)字段,每個(gè)字段為com的字符長(zhǎng),并把它們放到ptr1指向的字符數(shù)組中,文件的位置指示器隨著所讀取的字符數(shù)而下移*/ printf(fail to print message from file!nplease press any key back to menun); getch( ); return(null); if(ptr1-next=null) head=ptr1; else do if(n=1) head=ptr1; else ptr2-next=ptr1; n=n+1; ptr2=ptr1; if(ptr1=(com*)malloc(len)=null) printf(no enough memory,fail to creat linklist!nplease press any key to back to menun); getch( );return(null); if(fread(ptr1,sizeof(com),1

溫馨提示

  • 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論