家電庫存管理系統(tǒng)的設(shè)計(jì)(附程序代碼)和家電庫存管理系統(tǒng)課程設(shè)計(jì)報(bào)告_第1頁
家電庫存管理系統(tǒng)的設(shè)計(jì)(附程序代碼)和家電庫存管理系統(tǒng)課程設(shè)計(jì)報(bào)告_第2頁
家電庫存管理系統(tǒng)的設(shè)計(jì)(附程序代碼)和家電庫存管理系統(tǒng)課程設(shè)計(jì)報(bào)告_第3頁
家電庫存管理系統(tǒng)的設(shè)計(jì)(附程序代碼)和家電庫存管理系統(tǒng)課程設(shè)計(jì)報(bào)告_第4頁
家電庫存管理系統(tǒng)的設(shè)計(jì)(附程序代碼)和家電庫存管理系統(tǒng)課程設(shè)計(jì)報(bào)告_第5頁
已閱讀5頁,還剩86頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

重慶科技學(xué)院《數(shù)據(jù)結(jié)構(gòu)》課程設(shè)計(jì)報(bào)告學(xué)院:_電氣與信息工程學(xué)院_專業(yè)班級:計(jì)科學(xué)生姓名:學(xué)號:設(shè)計(jì)地點(diǎn)(單位)___計(jì)算機(jī)基礎(chǔ)自主學(xué)習(xí)中心____

設(shè)計(jì)題目:________家電庫存管理系統(tǒng)的設(shè)計(jì)___________完成日期:年1月13日指導(dǎo)教師評語:___________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________成績(五級記分制):________________

指導(dǎo)教師(簽字):________________重慶科技學(xué)院課程設(shè)計(jì)任務(wù)書設(shè)計(jì)題目:家電庫存管理系統(tǒng)的設(shè)計(jì)學(xué)生姓名課程名稱數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)專業(yè)班級計(jì)科地點(diǎn)計(jì)算機(jī)基礎(chǔ)自主學(xué)習(xí)中心起止時(shí)間設(shè)計(jì)內(nèi)容及要求以鏈表結(jié)構(gòu)的有序表表示某商場家電部的庫存模型。當(dāng)有提貨或進(jìn)貨時(shí)需要對該鏈表及時(shí)進(jìn)行維護(hù)。每次退出程序時(shí),將該鏈表中的數(shù)據(jù)以文件形式保存在磁盤上,每次啟動(dòng)程序時(shí),需將以文件形式保存的數(shù)據(jù)恢復(fù)成鏈表結(jié)構(gòu)的有序表。鏈表結(jié)點(diǎn)的數(shù)據(jù)域包括:類別、型號、品牌、重量、單價(jià)、數(shù)量、生產(chǎn)日期、廠家名稱,默認(rèn)按類別、品牌升序排好序。程序功能包括:創(chuàng)建鏈表、插入、刪除、修改、查詢、排序等。設(shè)計(jì)參數(shù)測試數(shù)據(jù)要求:家電類別(如:電視機(jī),空調(diào),冰箱等)不少于5種,記錄數(shù)量不少于500。進(jìn)度要求20**.12.31完成任務(wù)的講解、并接受課程設(shè)計(jì)任務(wù),選定課程設(shè)計(jì)的題目20**.01.04了解任務(wù)的算法、并畫出算法的程序流程圖,對任務(wù)的關(guān)鍵技術(shù)進(jìn)行驗(yàn)證、并確定解決辦法20**.01.05-20**.01.06編制程序20**.01.09對程序進(jìn)行調(diào)試,設(shè)計(jì)測試用例進(jìn)行測試20**.01.10整理課程設(shè)計(jì)的過程、并進(jìn)行總結(jié),完善程序功能20**.01.11編寫課程設(shè)計(jì)報(bào)告初稿20**.01.12完善課程設(shè)計(jì)報(bào)告、并準(zhǔn)備答辨20**.01.13提交課程設(shè)計(jì)報(bào)告和程序,進(jìn)行答辨參考資料1.嚴(yán)蔚敏吳偉民,數(shù)據(jù)結(jié)構(gòu),清華大學(xué)出版社,2007.32.李春葆,數(shù)據(jù)結(jié)構(gòu)教程,清華大學(xué)出版社,2005.13.(美)StephenPrata,CPrimerPlus中文版(第五版),人民郵電出版社,2005.2其它說明1.本表應(yīng)在每次實(shí)施前一周由負(fù)責(zé)教師填寫二份,學(xué)院審批后交學(xué)院教務(wù)辦備案,一份由負(fù)責(zé)教師留用。2.若填寫內(nèi)容較多可另紙附后。3.一題多名學(xué)生共用的,在設(shè)計(jì)內(nèi)容、參數(shù)、要求等方面應(yīng)有所區(qū)別。系主任:指導(dǎo)教師:摘要隨著信息技術(shù)的飛速發(fā)展,人們對信息管理技術(shù)要求也越來越高以適應(yīng)飛速發(fā)展的經(jīng)濟(jì)。本次課程設(shè)計(jì)針對當(dāng)前的需求,設(shè)計(jì)一個(gè)家電倉庫信息的管理系統(tǒng)以方便商家更快捷更有效的對倉庫貨品的信息進(jìn)行管理,給商家創(chuàng)造更多的價(jià)值!該系統(tǒng)整體運(yùn)用了數(shù)據(jù)結(jié)構(gòu)的知識,它是將貨品信息按鏈表形式來儲(chǔ)存的。將所有的貨品分類儲(chǔ)存在數(shù)據(jù)鏈表的每一個(gè)節(jié)點(diǎn)中,每個(gè)節(jié)點(diǎn)也包含了一種類型家電的所有信息。即是,建一個(gè)鏈表,鏈表中有許多個(gè)節(jié)點(diǎn),節(jié)點(diǎn)中儲(chǔ)存了不同類型的數(shù)據(jù);這樣我們就很容易的將貨品信息管理起來了!該系統(tǒng)進(jìn)行了精心的規(guī)劃,有齊全的信息管理功能。方便用戶使用,用戶能夠很快的找到自己所需要的信息并且有添加、刪除、修改、查詢、排序、保存等功能提高了用戶對信息的管理效率!關(guān)鍵詞:信息數(shù)據(jù)結(jié)構(gòu)鏈表管理目錄TOC\o"1-3"\h\u1系統(tǒng)需求分析說明書 重慶科技學(xué)院課程設(shè)計(jì)任務(wù)書設(shè)計(jì)題目:家電庫存系統(tǒng)的設(shè)計(jì)學(xué)生姓名課程名稱數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)專業(yè)班級計(jì)科普地點(diǎn)計(jì)算機(jī)專業(yè)實(shí)驗(yàn)室起止時(shí)間設(shè)計(jì)內(nèi)容及要求以鏈表結(jié)構(gòu)的有序表表示某商場家電部的庫存模型。當(dāng)有提貨或進(jìn)貨時(shí)需要對該鏈表及時(shí)進(jìn)行維護(hù)。每個(gè)工作日結(jié)束之后,將該鏈表中的數(shù)據(jù)以文件形式保存,每日開始營業(yè)之前,需將以文件形式保存的數(shù)據(jù)恢復(fù)成鏈表結(jié)構(gòu)的有序表。

鏈表結(jié)點(diǎn)的數(shù)據(jù)域包括:類別、型號、品牌、單價(jià)和數(shù)量,以單價(jià)的升序體現(xiàn)鏈表的有序性。程序功能包括:初始化、創(chuàng)建表、插入、刪除、更新數(shù)據(jù),查詢及鏈表數(shù)據(jù)與文件之間的轉(zhuǎn)換等。設(shè)計(jì)參數(shù)測試數(shù)據(jù)要求:家電類別(如:電視機(jī),空調(diào),冰箱等)不少于5種,記錄數(shù)量不少于50。進(jìn)度要求20**.8.31星期一完成任務(wù)的講解、并接受課程設(shè)計(jì)任務(wù),選定課程設(shè)計(jì)的題目20**.9.1星期二了解任務(wù)的算法、并畫出算法的程序流程圖20**.9.2星期三對任務(wù)的關(guān)鍵技術(shù)進(jìn)行驗(yàn)證、并確定解決辦法20**.9.3星期四編制程序20**.9.4星期五編制程序20**.9.7星期一調(diào)試程序,并試運(yùn)行20**.9.8星期二整理課程設(shè)計(jì)過程中的各參數(shù)、進(jìn)行總結(jié)并提出改進(jìn)意見20**.9.9星期三對改進(jìn)辦法進(jìn)行實(shí)現(xiàn),并編寫課程設(shè)計(jì)報(bào)告20**.9.10星期四編寫課程設(shè)計(jì)報(bào)告并準(zhǔn)備答辨20**.9.11星期五參加答辨,提交設(shè)計(jì)報(bào)告參考資料1.嚴(yán)蔚敏吳偉民著,數(shù)據(jù)結(jié)構(gòu),清華大學(xué)出版社,2007.32.李春葆著,數(shù)據(jù)結(jié)構(gòu)教程,清華大學(xué)出版社,2005.13.RichardF.GilbergBehrouzA.Forouzan,數(shù)據(jù)結(jié)構(gòu)的C++偽碼實(shí)現(xiàn)(英文版),人民郵電出版社,2002.1其它說明1.本表應(yīng)在每次實(shí)施前一周由負(fù)責(zé)教師填寫二份,院系審批后交院系辦備案,一份由負(fù)責(zé)教師留用。2.若填寫內(nèi)容較多可另紙附后。3.一題多名學(xué)生共用的,在設(shè)計(jì)內(nèi)容、參數(shù)、要求等方面應(yīng)有所區(qū)別。教研室主任:指導(dǎo)教師:20**年8月26日摘要本程序的作用是建立一個(gè)簡單的家電庫存管理系統(tǒng)。當(dāng)庫存信息發(fā)生變化時(shí)要求能對鏈表的信息進(jìn)行更新并存入文件。每個(gè)工作日開始時(shí),需要把磁盤中的商品信息讀出并加入鏈表中,每個(gè)工作日結(jié)束之后,在將該鏈表中的數(shù)據(jù)以文件形式保存,鏈表結(jié)點(diǎn)的數(shù)據(jù)域包括:類別、型號、品牌、單價(jià)和數(shù)量,以單價(jià)的升序體現(xiàn)鏈表的有序性。程序功能包括:初始化、創(chuàng)建表、插入、刪除、更新數(shù)據(jù),查詢及鏈表數(shù)據(jù)與文件之間的轉(zhuǎn)換等。程序需要對鏈表進(jìn)行初始化、插入、刪除、更新數(shù)據(jù),查詢等操作,還要求對文件的操作。關(guān)鍵字:鏈表數(shù)據(jù)域插入刪除

目錄第一部分設(shè)計(jì)題目、內(nèi)容及要求 11.1設(shè)計(jì)題目 11.2設(shè)計(jì)要求 1第二部分概要設(shè)計(jì) 22.1鏈表節(jié)點(diǎn)信息說明 22.2總體程序框圖 3第三部分詳細(xì)設(shè)計(jì) 43.1初始化數(shù)據(jù)模塊詳細(xì)設(shè)計(jì) 43.1.1初始化數(shù)據(jù)模塊偽碼算法 43.1.2初始化模塊程序流程圖 53.2添加商品模塊詳細(xì)設(shè)計(jì) 63.2.1添加信息模塊偽碼算法 63.2.2添加商品模塊程序流程圖 73.3刪除貨物模塊詳細(xì)設(shè)計(jì) 73.3.1刪除模塊偽碼算法 73.3.2刪除模塊程序流程圖 93.4查詢模塊詳細(xì)設(shè)計(jì) 103.4.1查詢模塊偽碼算法 103.4.2查詢模塊流程圖 123.5從文件中讀取商品信息 133.5.1偽碼算法 133.5.2讀取信息模塊程序流程圖 143.6數(shù)據(jù)更新模塊詳細(xì)設(shè)計(jì) 153.6.1數(shù)據(jù)更新模塊偽碼算法 153.6.2更新數(shù)據(jù)模塊程序流程圖 153.6退出并保存商品清單 173.6.1退出并保存商品偽碼算法 173.6.2退出并保存商品程序流程圖 17第四部分調(diào)試分析 184.1問題回顧和分析 184.2經(jīng)驗(yàn)和體會(huì) 18第五部分用戶使用說明 19第六部分測試結(jié)果 206.1初始化模塊測試圖 206.2添加商品模塊測試圖 216.3刪除商品模塊測試圖 226.4查詢模塊測試圖 236.5讀取商品信息測試圖 24致謝 26參考文獻(xiàn) 27第一部分設(shè)計(jì)題目、內(nèi)容及要求1.1設(shè)計(jì)題目以鏈表結(jié)構(gòu)的有序表表示某商場家電部的庫存模型。當(dāng)有提貨或進(jìn)貨時(shí)需要對該鏈表及時(shí)進(jìn)行維護(hù)。每個(gè)工作日結(jié)束之后,將該鏈表中的數(shù)據(jù)以文件形式保存,每日開始營業(yè)之前,需將以文件形式保存的數(shù)據(jù)恢復(fù)成鏈表結(jié)構(gòu)的有序表。

鏈表結(jié)點(diǎn)的數(shù)據(jù)域包括:類別、型號、品牌、單價(jià)和數(shù)量,以單價(jià)的升序體現(xiàn)鏈表的有序性。程序功能包括:初始化、創(chuàng)建表、插入、刪除、更新數(shù)據(jù),查詢及鏈表數(shù)據(jù)與文件之間的轉(zhuǎn)換等。1.2設(shè)計(jì)要求要求實(shí)現(xiàn)以下功能初始化并創(chuàng)建鏈表:能夠初始化并創(chuàng)建商品信息表并按照單價(jià)的升序排列;插入及刪除:能夠添加新商品信息并且當(dāng)商品由于某種原因(損壞,售出及其他原因)而不得不刪除之時(shí)能夠順利地實(shí)現(xiàn)刪除操作;更新數(shù)據(jù):當(dāng)商品的價(jià)格或者數(shù)量變動(dòng)的時(shí)候能夠作出相應(yīng)的改變;查詢:能夠按照某種要求需求商品的信息,并決定是否購買該商品,然后作出相應(yīng)的數(shù)據(jù)更新;鏈表與文件之間的轉(zhuǎn)換:能夠成功地將鏈表中的信息寫入文件,并能根據(jù)需要讀出文件中的信息。第二部分概要設(shè)計(jì)2.1鏈表節(jié)點(diǎn)信息說明表1各數(shù)據(jù)類型名稱及其表示意義名稱數(shù)據(jù)類型表示的意義Species字符家電的類型(包括電視機(jī),空調(diào)等類型)Xinghao字符串家電的型號Pinpai字符串家電的品牌Danjia浮點(diǎn)型家電價(jià)格,為浮點(diǎn)型Shuliang整型家電的數(shù)量Data節(jié)點(diǎn)信息,包括以上數(shù)據(jù)信息next指針指向由Date和next組成節(jié)點(diǎn)表中,Species表示家電的類型,用一個(gè)大寫字母代替。例如“D”表示電視機(jī),“K”表示空調(diào),“B”表示冰箱,“J”表示電腦,“X”表示洗衣機(jī)。Xinghao和Pinpai都是以字符串的形式表示的,Danjia表示一個(gè)商品的價(jià)格,而Shuliang這表示某種商品的庫存量。Date則是數(shù)據(jù)域,包括以上五項(xiàng)。而next則表示指向下一個(gè)節(jié)點(diǎn)的指針。這就是一個(gè)商品種類的全部信息,用一個(gè)節(jié)點(diǎn)的空間來儲(chǔ)存該類型商品的信息。而在以后的刪除和插入以及查詢操作中在某些情況下只需對商品的庫存量做一些修改久可以達(dá)到目的,非常方便。

2.2總體程序框圖 否結(jié)束輸入i值決定下一步操作更新數(shù)據(jù)退出并保存商品信息查詢并決定是否購買從商品清單中讀取信息刪除商品信息添加商品初始化商品信息選擇進(jìn)入的模塊選擇是否進(jìn)入系統(tǒng)結(jié)束輸入i值決定下一步操作更新數(shù)據(jù)退出并保存商品信息查詢并決定是否購買從商品清單中讀取信息刪除商品信息添加商品初始化商品信息選擇進(jìn)入的模塊選擇是否進(jìn)入系統(tǒng) 是 i=1 i=2圖2-1總體程序框圖第三部分詳細(xì)設(shè)計(jì)3.1初始化數(shù)據(jù)模塊詳細(xì)設(shè)計(jì)3.1.1初始化數(shù)據(jù)模塊偽碼算法intInticial(ListNode&p){while(i!=2){scanf(&pp->Date);pp->next=p->next;p->next=pp;scanf(&i);}Paixu(p);Display(p);ListTxt(p);returnOK;}其中,排序函數(shù)偽碼算法如下:intPaixu(ListNode&head){ p=q=head->next;while(p!=NULL) {q=p->next;min=p->Date; while(q!=NULL) {if(q->Date.Danjia<=min.Danjia) {min=q->Date;q->Date=p->Date;p->Date=min;}q=q->next; }p=p->next;}Display(head); returnOK;其次,由鏈表讀入信息到文件函數(shù)偽碼算法如下:intListTxt(ListNode&head){ FILE*fp;p=head->next; if(p==NULL)exit(0); if((fp=fopen("e:\\a.txt","w"))==NULL)exit(0); while(p!=NULL){fprintf(fp,p->Date);p=p->next;}if(fclose(fp))exit(0); return1;}3.1.2初始化模塊程序流程圖scanf("%d",&i)p->next=pppp->next=p->next輸入相應(yīng)商品信息結(jié)束輸出相應(yīng)提示p->next==NULLDisplay(p)Paixu(p)i==2scanf("%d",&i)p->next=pppp->next=p->next輸入相應(yīng)商品信息結(jié)束輸出相應(yīng)提示p->next==NULLDisplay(p)Paixu(p)i==2 N Y YNListTxt(p)ListTxt(p)圖3-1數(shù)據(jù)初始化模塊程序流程圖3.2添加商品模塊詳細(xì)設(shè)計(jì)3.2.1添加信息模塊偽碼算法intInsert(ListNode&head,Node&a){p=head->next;if(p==NULL)exit(0);while(p=p->next)p=p->next;q->Date=a.Date;q->next=p->next;p->next=q;ListTxt(head);returnOK;}在上面的算法中,首先要查看一下商品信息表示否為空,是則退出,否則繼續(xù)操作。在進(jìn)入該模塊之前,有關(guān)插入的商品的信息已經(jīng)初始化完成,直接通過引用就可以使用。本模塊首先將要插入商品的有關(guān)信息映射到一個(gè)節(jié)點(diǎn)的數(shù)據(jù)域,然后將該節(jié)點(diǎn)插入到商品信息表中,再排序即可。結(jié)束ListTxt(head)Paixu(head)p->next=q;q->next=p->next將a中的數(shù)據(jù)映射到節(jié)點(diǎn)q的數(shù)據(jù)域3.2.2添加商品模塊程序流程圖結(jié)束ListTxt(head)Paixu(head)p->next=q;q->next=p->next將a中的數(shù)據(jù)映射到節(jié)點(diǎn)q的數(shù)據(jù)域p==NULL N Yp==NULL圖3-2添加商品信息模塊程序流程圖3.3刪除貨物模塊詳細(xì)設(shè)計(jì)3.3.1刪除模塊偽碼算法 intDelete(ListNode&head,Node&a){if(p==NULL)exit(0);scanf(&choice);switch(choice){case1:scanf(a.Species);while(p!=NULL){if(strcmp(p-Date.Species,a.Species)==0){printf(p->Date);i++;}p=p->next;}if(i==1)break;else{p=head;scanf(&number);while(count<number-1){if(strcmp(p->next->Date.Species,a.Species)==0){count++;p=p->next;}while(strcmp(p->next->Date.Species,a.Species)!=0)p=p->next;if(p->next->Date.Shuliang>a.Shuliang)p->next-Date.Shuliang-=a.Shuliang; else{s=p->next;p->next=p->next->next;free(s);}Display(head); } break;case2:scanf(a.XingHao);while(p!=NULL){ if(strcmp(p->Date.XingHao,a.XingHao)==0) { printf(p->Date);i++;}p=p->next;} if(i==1)break; else{p=head;scanf(&number); while(count<number-1) {if(strcmp(p->next->Date.XingHao,a.XingHao)==0)count++; p=p->next;}while(strcmp(p->Date.XingHao,a.XingHao)!=0)p=p->next;} if(p->next->Date.Shuliang>a.Shuliang)p->next->Date.Shuliang-=a.Shuliang; else {s=p->next;p->next=p->next->next; }Display(head);}break;}ListTxt(head);returnOK;}3.3.2刪除模塊程序流程圖由于本模塊流程圖中有類似的操作,所以只給出其中一種情況下的流程圖,其他兩種情況下的流程圖省略不寫。另外,此圖還省略了其他不重要的操作。結(jié)束Display(head)p->next=p->next->nexts=p->next結(jié)束Display(head)p->next=p->next->nexts=p->next NYp==NULLp==NULLCChoice==1 N YChoice==2Choice==2scanf("%d",&number) N以后商品數(shù)量是否大于刪除數(shù)量 Y以后商品數(shù)量是否大于刪除數(shù)量 Y Np->next->Date.Shuliang-=a.Shuliangp->next->Date.Shuliang-=a.Shuliang圖3-3刪除模塊流程圖3.4查詢模塊詳細(xì)設(shè)計(jì)3.4.1查詢模塊偽碼算法intSearch(ListNode&head,Node&a){ if(p==NULL){getch();system("cls");}scanf(&choice); switch(choice) {case1:scanf(a.Species); while(p!=NULL){if(strcmp(p->Date.Species,a.Species)==0){printf(p->Date);i++;} p=p->next;}if(i==1)printf("*對不起,沒有找到相關(guān)商品的信息!\n"); elsescanf(&choice1); switch(choice1) { case1:p=head;scanf(&a.Shuliang); while(count<number-1) {if(strcmp(p->next->Date.Species,a.Species)==0) count++;p=p->next;} while(strcmp(p->next->Date.Species,a.Species)!=0) p=p->next; if(p->next->Date.Shuliang>a.Shuliang)p->next->Date.Shuliang-=a.Shuliang; else{ s=p->next;p->next=p->next->next;free(s);}break;case2:break;} }break; case2: case1:p=head;scanf(&a.Shuliang); while(count<number-1) {if(strcmp(p->next->Date.XingHao,a.XingHao==0)) count++; p=p->next;} while(strcmp(p->next->Date.XingHao,a.XingHao)!=0) p=p->next; if(p->next->Date.Shuliang>a.Shuliang)p->next->Date.Shuliang-=a.Shuliang; else{ s=p->next;p->next=p->next->next;free(s);}break;case2:break;} }break; case3: case1:p=head;scanf(&a.Shuliang); while(count<number-1) {if(strcmp(p->next->Date.Brand,a.Brand)==0) count++; p=p->next;} while(strcmp(p->next->Date.Brand,a.Brand)!=0) p=p->next; if(p->next->Date.Shuliang>a.Shuliang)p->next->Date.Shuliang-=a.Shuliang; else{ s=p->next;p->next=p->next->next;free(s);}break;case2:break;} }breakdefault:getch();exit(0);} return1;}3.4.2查詢模塊流程圖由于本模塊流程圖比較復(fù)雜,因此省略了一些不是很重要的部分。Choice==1Choice==1i==1i==1Choice==2Choice==2輸入numberi==2輸入numberi==2p->next->Date.Shuliang>a.Shuliangp->next->Date.Shuliang>a.Shuliang輸入number輸入numberp->next->Date.Shuliang>a.Shuliangp->next->Date.Shuliang>a.Shuliangs=p->nextp->next->Date.Shuliang-=a.Shuliangs=p->nextp->next->Date.Shuliang-=a.Shuliangp->next=p->next->nextp->next->Date.Shuliang-=a.Shuliangp->next=p->next->nextp->next->Date.Shuliang-=a.Shuliangs=p->nexts=p->nextp->next=p->next->nexttp->next=p->next->nexttp->next->next結(jié)束結(jié)束圖3-4查詢模塊流程圖3.5從文件中讀取商品信息3.5.1偽碼算法intTxtList(ListNode&head){q->next=NULL;FILE*fp; if((fp=fopen("e:\\a.txt","r"))==NULL)exit(0); while(!feof(fp)) { p=(ListNode)malloc(sizeof(Node)); fscanf(fp,p->Date);p->next=q->next;q->next=p;} q->next=q->next->next;if(Getlenth(q)==0) {scanf(&choice);if(choice==1){Inticial(q);ListTxt(q);} }s=q->next; while(s!=NULL){printf(s->Date);s=s->next;} fclose(fp);return1;}3.5.2讀取信息模塊程序流程圖Getlenth(q)==0輸入choice的值q->next=q->next->next向節(jié)點(diǎn)中讀入信息fp=open("e:\\a.txt","r"))==NULL結(jié)束s=s->next輸出相應(yīng)信息choice==1Getlenth(q)==0輸入choice的值q->next=q->next->next向節(jié)點(diǎn)中讀入信息fp=open("e:\\a.txt","r"))==NULL結(jié)束s=s->next輸出相應(yīng)信息choice==1信息是否讀取完畢信息是否讀取完畢圖3-5讀取信息模塊程序流程圖3.6數(shù)據(jù)更新模塊詳細(xì)設(shè)計(jì)3.6.1數(shù)據(jù)更新模塊偽碼算法intGengxin(ListNode&head){chara[40];charb[20];doubled;while(p!=NULL){printf(p->Date);p=p->next;n++;}while(choice1!=2){scanf(&k);p=head;for(intcount=0;count<k;count++)p=p->next;printf(p->Date);scanf(&choice);switch(choice){ case1:scanf(fp);strcpy(p->Date.Species,fp);break; case2:scanf(a);strcpy(p->Date.XingHao,a);break; case3:scanf(b);strcpy(p->Date.Brand,b);break; case4:scanf(&d);p->Date.Danjia=d;break; case5:scanf(&number);p->Date.Shuliang=umber;break; default:}printf(p->Date);scanf(&choice1); }ListTxt(head);return1;}3.6.2更新數(shù)據(jù)模塊程序流程圖結(jié)束輸入choice的值Choice==3Choice==4Choice==2Choice==1choice1==2結(jié)束輸入choice的值Choice==3Choice==4Choice==2Choice==1choice1==2輸出相應(yīng)商品信息輸出相應(yīng)商品信息輸入choice值輸入choice值scanf("%s",a);strcpy(p->Date.XingHao,a)scanf("%s",fp);strcpy(p->Date.Species,fp)scanf("%s",a);strcpy(p->Date.XingHao,a)scanf("%s",fp);strcpy(p->Date.Species,fp)scanf("%s",b);strcpy(p->Date.Brand,b)scanf("%s",b);strcpy(p->Date.Brand,b)scanf("%d",&number);p->Date.Shuliang=numberscanf("%lf",&d);p->Date.Danjia=dscanf("%d",&number);p->Date.Shuliang=numberscanf("%lf",&d);p->Date.Danjia=d輸出更新之后商品的信息輸出更新之后商品的信息圖3-6更新數(shù)據(jù)模塊流程圖3.6退出并保存商品清單3.6.1退出并保存商品偽碼算法intListTxt(ListNode&head){ FILE*fp;p=head->next;if(p==NULL)exit(0); if((fp=fopen("e:\\a.txt","w"))==NULL)exit(0); while(p!=NULL){fprintf(fp,p->Date);p=p->next;}if(fclose(fp))exit(0);return1;}3.6.2退出并保存商品程序流程圖P==NULL(fp=fopen("e:\\a.txt","w"))==NULL結(jié)束p=p->next將相應(yīng)信息讀入文件p==NULLP==NULL(fp=fopen("e:\\a.txt","w"))==NULL結(jié)束p=p->next將相應(yīng)信息讀入文件p==NULL圖3-7退出并保存商品程序流程圖第四部分調(diào)試分析4.1問題回顧和分析編寫完程序之后,調(diào)試過程中出現(xiàn)不少問題。主要包括以下幾個(gè)。首先,剛開始發(fā)現(xiàn)了一些由于粗心而出現(xiàn)的小問題,包括數(shù)據(jù)的輸入忘了加取地址符,以及忘了晴空緩沖區(qū)等等。后來就發(fā)現(xiàn)了一些函數(shù)也存在問題。最先發(fā)現(xiàn)的是排序模塊。此模塊采用的是冒泡排序法,但是由于有一段時(shí)間沒有編程,所以對以前學(xué)過的知識有點(diǎn)生疏,進(jìn)而在內(nèi)存空間的分配以及排序的順序上出現(xiàn)了一些問題。最后,通過調(diào)試發(fā)現(xiàn)了其中的問題,進(jìn)而采取了相應(yīng)的措施改正了錯(cuò)誤。其次,是刪除模塊。由于此模塊“規(guī)?!北容^宏大,所以出現(xiàn)的問題也最多。首先是不能夠選擇通過哪種方式進(jìn)行刪除,然后在商品的時(shí)候,相應(yīng)商品的數(shù)量不會(huì)做出應(yīng)該有的改變,甚至還出現(xiàn)一堆亂碼。后來,通過單步調(diào)試找出了問題的原因并作出了相應(yīng)的修改,最后結(jié)果差強(qiáng)人意。再次,則是在從文件中往內(nèi)存中讀取信息的時(shí)候出現(xiàn)的一個(gè)問題,即因?yàn)镕eof函數(shù)的問題,從而在每次讀取信息的時(shí)候都會(huì)多讀出一個(gè)節(jié)點(diǎn)的信息,多余信息通過亂碼的形式顯示出來,最后是通過向其他同學(xué)請教才解決的,因此我又學(xué)到了一些知識。最后,則是內(nèi)存空間的釋放問題。當(dāng)其他模塊的問題都解決之后,本以為已經(jīng)沒有錯(cuò)誤了,沒想到每當(dāng)程序運(yùn)行完之后都會(huì)出現(xiàn)一個(gè)錯(cuò)誤提示,后來才發(fā)現(xiàn)是釋放空間的模塊出現(xiàn)了問題,同樣,在找到問題之后終于解決了問題,最終才勉強(qiáng)能夠運(yùn)行。4.2

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論