濟(jì)南大學(xué)數(shù)據(jù)結(jié)構(gòu)課程設(shè)計總結(jié)
課程設(shè)計總結(jié)
本次課程設(shè)計中,使用線性表的順序存儲結(jié)構(gòu)、指針傳遞等編程思想,再次熟悉了順序表的數(shù)據(jù)結(jié)構(gòu)及存儲結(jié)構(gòu),熟練使用指針傳遞及指針操作的。
程序設(shè)計中,基本外框?qū)崿F(xiàn)簡單一些,一次編寫并調(diào)試成功,在實(shí)現(xiàn)集合運(yùn)算的三個子程序時顯得稍微費(fèi)時,包括只聲明但沒有實(shí)際創(chuàng)建用于保存的順序表Lc運(yùn)行時只看到內(nèi)存使用錯誤但不知道具體位置浪費(fèi)了時間;在執(zhí)行并操作時按照最初設(shè)計是直接將位于Lb的元素而不存在于La的元素復(fù)制到La中,導(dǎo)致在后期操作交運(yùn)算時出現(xiàn)結(jié)果錯誤,后期才將其調(diào)整為含有3個參數(shù)輸入的子函數(shù);另外聲明三個順序表時使用如下:
Sqlistlist1,list2,list3;Sqlist*La,*Lb,*Lc;La=&list1;Lb=&list2;Lc=&list3;
的語句,相對而言有一定的不合理,但不知道具體該如何改進(jìn);在使用數(shù)據(jù)結(jié)構(gòu)時,題目已經(jīng)要求是整型數(shù)據(jù)元素,可以直接使用一維數(shù)組來操作,不過在控制循環(huán)時要用sizeof()庫函數(shù)實(shí)現(xiàn),另外在運(yùn)算結(jié)果上要有值回傳的實(shí)現(xiàn),相對而言不如用指針方便;再分配存儲空間時不合理,La和Lb的長度可以從終端輸入在分配相應(yīng)的空間大小,Lc的大小可以適當(dāng)?shù)母鶕?jù)La和Lb的長度動態(tài)的設(shè)定;在設(shè)計時間復(fù)雜度上可以改進(jìn),但沒找到更好的方法。
通過實(shí)踐可以清楚的了解編程的細(xì)節(jié)及各個子函數(shù)與主函數(shù)的調(diào)用配合,熟悉并運(yùn)用課本所學(xué)知識,從設(shè)定合適數(shù)據(jù)結(jié)構(gòu),設(shè)計各子函數(shù)功能及配合到時間復(fù)雜度和程序容錯能力及改進(jìn)都是對個人編程能力的鍛煉和提高。另外編程時看清題目的功能是最關(guān)鍵的,否則會混亂程序結(jié)構(gòu)且得不到想要的結(jié)果。
擴(kuò)展閱讀:數(shù)據(jù)結(jié)構(gòu)課程設(shè)計總結(jié)(模板)
《數(shù)據(jù)結(jié)構(gòu)》課程設(shè)計報告
題目:
班級:計算機(jī)系1001班姓名:王彩娟劉爽學(xué)號:4236指導(dǎo)教師:劉延嶺日期:201*年7月3日一、課程設(shè)計目標(biāo)1、問題描述以棧模擬停車場,以隊列模擬車場外的便道,按照從終端讀入的輸入數(shù)據(jù)序列進(jìn)行模擬管理。每一組輸入數(shù)據(jù)包括三個數(shù)據(jù)項(xiàng):汽車“到達(dá)”或“離去”信息、汽車牌照號碼以及到達(dá)或離去的時刻。對每一組輸入數(shù)據(jù)進(jìn)行操作后的輸出信息為:若是車輛到達(dá),則輸出汽車在停車場或便道上的停車位置;若是車輛離去,則輸出汽車在停車場內(nèi)停留的時間和應(yīng)交納的費(fèi)用。2、問題分析汽車的模擬輸入信息格式可以是:(到達(dá)/離去,汽車牌照號碼,到達(dá)/離去的時刻)。例如,(‘A’,1,5)表示1號牌照車在5這個時刻到達(dá),而(‘D’,5,20)表示5號牌照車在20這個時刻離去。整個程序可以在輸入信息為(‘E’,0,0)時結(jié)束。本題可用棧和隊列來實(shí)現(xiàn)。二、概要設(shè)計1、方案確定//頭文件#include#include#include//函數(shù)返回狀態(tài)代碼#defineOK1#defineERROR0#defineTRUE1#defineFALSE0#defineINFEASIBLE-1#defineOVERFLOW-#defineSIZE5//停車場位置數(shù)typedefintStatus;//棧,模擬停車場typedefstructCar1{//車intnumber;//汽車車號intar_time;//汽車到達(dá)時間}CarNode;typedefstruct{//停車場CarNode*base;//停車場的堆棧底CarNode*top;//停車場的堆棧頂intstacksize;}Park;//隊列,模擬便道typedefstructCar2{//車intnumber;//汽車車號intar_time;//汽車到達(dá)時間structCar2*next;}*CarPtr;typedefstruct{//便道CarPtrfront;//便道的隊列的對頭CarPtrrear;//便道的隊列的隊尾intlength;}Shortcut;StatusInitStack(Park&P){//初始化停車場P.base=(CarNode*)malloc(SIZE*sizeof(Car1));if(!P.base)exit(OVERFLOW);P.top=P.base;P.stacksize=0;returnOK;}StatusPush(Park&P,CarNodee){//車進(jìn)入停車場*P.top++=e;++P.stacksize;returnOK;}StatusPop(Park&P,CarNode&e){//車離開停車場if(P.top==P.base)printf("停車場為空。");else{e=*--P.top;--P.stacksize;}returnOK;}StatusInitQueue(Shortcut&S){//初始化便道S.front=S.rear=(CarPtr)malloc(sizeof(Car2));if(!S.front||!S.rear)exit(OVERFLOW);S.front->next=NULL;S.length=0;returnOK;}StatusEnQueue(Shortcut&S,intnumber,intar_time){//車進(jìn)入便道CarPtrp;p=(CarPtr)malloc(sizeof(Car2));if(!p)exit(OVERFLOW);p->number=number;p->ar_time=ar_time;p->next=NULL;S.rear->next=p;S.rear=p;++S.length;returnOK;}StatusDeQueue(Shortcut&S,CarPtr&w){//車離開便道if(S.length==0)printf("通道為空。");else{w=S.front->next;S.front->next=S.front->next->next;--S.length;}returnOK;}StatusArrival(Park&P,Shortcut&S){//對進(jìn)站車輛的處理intnumber,ar_time;printf("請輸入車牌號:");scanf("%d",&number);printf("進(jìn)場的時刻:");scanf("%d",&ar_time);if(P.stacksizewhile(P.stacksize){Pop(P,e);if(e.number==number){flag=0;money=(le_time-e.ar_time)*2;ar_time=e.ar_time;break;}Push(P1,e);}while(P1.stacksize){Pop(P1,e);Push(P,e);}//車從停車場中出if(flag==0){if(S.length!=0){DeQueue(S,w);m.ar_time=le_time;m.number=w->number;Push(P,m);free(w);printf("車牌號為%d的車已由便道進(jìn)入停車場\\n",m.number);}printf("停車費(fèi)為%d,占用車位數(shù)為%d\\n",money,P.stacksize);}else{printf("停車場不存在牌號為%d的車\\n",number);}returnOK;}intmain(){intm=1;charflag;//選項(xiàng)ParkP,Q;ShortcutS;InitStack(P);InitStack(Q);InitQueue(S);while(m){printf("\\n停車場管理程序\\n");printf("===============================================\\n");printf("**A汽車進(jìn)車場**\\n");printf("****\\n");printf("**D汽車出車場**\\n");printf("****\\n");printf("**E退出程序**\\n");printf("===============================================\\n");printf("請選擇(A,D,E):");scanf("%c",&flag);switch(flag){case"A":case"a":Arrival(P,S);break;//車進(jìn)入停車場case"D":case"d":Leave(P,Q,S);break;//車離開停車場case"E":case"e":m=0;break;default:printf("Inputerror!\\n");break;}while(flag!="\\n")scanf("%c",&flag);}}2、程序設(shè)計模塊設(shè)計連接圖3、模塊功能描述①此停車場管理系統(tǒng),主要分為以下若干模塊:首先定義用來模擬停車場的堆棧以及用來模擬通道的鏈隊列為全局變量,然后編寫主函數(shù),在此主函數(shù)中實(shí)現(xiàn)對其它各個模塊的調(diào)用。在主函數(shù)中首先調(diào)用option()函數(shù),出現(xiàn)歡迎用戶使用的主界面,然后提示用戶進(jìn)入此停車場管理系統(tǒng)后,再出現(xiàn)一個供用戶選擇的界面,在用戶的選擇過程中,程序又分別調(diào)用車輛的到達(dá)、車輛的離開、停車場內(nèi)停放車輛的信息以及退出程序這四個函數(shù)模塊。其中,在車輛的離開那個模塊函數(shù)中又調(diào)用了打印離開車輛信息的函數(shù),在停車場內(nèi)停放車輛信息的那個模塊函數(shù)中,又分別調(diào)用了顯示停車場上車輛信息的函數(shù)以及顯示便道上車輛信息的函數(shù)。最后,從調(diào)鼐的這四個函數(shù)中回到主函數(shù)結(jié)束整個程序的運(yùn)行。②在以上各個模塊中,出現(xiàn)的調(diào)用的函數(shù)為:voidInitStack(SeqStackCar*s);intInitQueue(LinkQueueCar*Q);option();intArrival(SeqStackCar*Enter,LinkQueueCar*W);voidLeave(SeqStackCar*Enter,SeqStackCar*Temp,LinkQueueCar*W);voidPRINT(CarNode*p);voidList(SeqStackCarS,LinkQueueCarW);voidList1(SeqStackCar*S);voidList2(LinkQueueCar*W);4、模塊間關(guān)系三、詳細(xì)設(shè)計1、方法設(shè)計對于此停車場管理系統(tǒng)的實(shí)現(xiàn),就是用兩個堆棧來分別模擬停車場以及停車場內(nèi)車輛為其它車輛讓路時退出停車的臨時停放地點(diǎn)。至于通道上車輛的停放則用一個鏈隊列來實(shí)現(xiàn),此時,通道上車輛的離開或者進(jìn)入停車場只需改變此鏈隊列上的結(jié)點(diǎn)而已。對于要對停車場內(nèi)的車輛根據(jù)其停放時間收取相應(yīng)的停車費(fèi)用,可以記錄下車輛進(jìn)入以及離開停車場的時間,再用時間差乘以相應(yīng)的單價并且打印出最后的費(fèi)用就可以實(shí)現(xiàn)了。2、程序流程圖四、程序清單五、程序測試與運(yùn)行結(jié)果停車場主界面:車子進(jìn)入停車場:車子出停車場:車子不想進(jìn)停車場六、課程設(shè)計總結(jié)
在這一個星期中,自己用vc++做了一個停車場管理的應(yīng)用系統(tǒng),分別實(shí)現(xiàn)了系統(tǒng)的各大功能。在這次項(xiàng)目中,很用心去做,但是,在項(xiàng)目中也出現(xiàn)了很多的問題,最大的問題就是對程序設(shè)計框架結(jié)構(gòu)的不了解,在實(shí)現(xiàn)代碼與功能的連接時經(jīng)常會出現(xiàn)各種不同的錯誤,在實(shí)現(xiàn)一些功能時系統(tǒng)常常會報錯。許多錯誤不知從哪修改,以致托了整個設(shè)計的后腿。課程設(shè)計中,既回顧了很多以前的東西,也發(fā)現(xiàn)了很多的問題,以前都沒遇見過的,收獲很大。通過本次數(shù)據(jù)結(jié)構(gòu)的課程設(shè)計,我學(xué)習(xí)了很多在上課沒懂的知識,更鞏固了課堂中學(xué)習(xí)有關(guān)于哈夫曼編碼的知識,此次停車場管理的應(yīng)用系統(tǒng)的設(shè)計讓自己對數(shù)據(jù)結(jié)構(gòu)的了解更深入,可以把它同實(shí)際相結(jié)合,同時,又讓我們學(xué)會了如何更好的從網(wǎng)上查找資料,還有同班上同學(xué)的交流。雖然我對數(shù)據(jù)結(jié)構(gòu)有了一定的掌握,但是到了真正使用,做課設(shè)的時候還是遇到了許多的問題。在仔細(xì)研究過課設(shè)要求和功能需求后,我有了初步的想法。在整個設(shè)計過程中,通過怎樣對把各個管理信息連接起來的分析,鍛煉了對事情的分析能力,通過怎樣解決過程中出現(xiàn)的問題,提高了我們查找文獻(xiàn)的能力、對網(wǎng)絡(luò)資源的利用能力和和其他同學(xué)的交流溝通能力。而且,經(jīng)歷這次的課程設(shè)計,也學(xué)會了自學(xué)和分工協(xié)作。編寫程序是件細(xì)心活,稍不留神就會出錯,這就必須要求我們對待事情要認(rèn)真!在編寫程序的過程中,錯誤不斷出現(xiàn),不同的類型(如少寫了一個符號,寫錯了字母,用錯了函數(shù)等等)層出不窮,這考驗(yàn)我們待事細(xì)心,耐心,能不能堅持到底,不能半途而廢。每一次的課程設(shè)計,都是讓我們對原有的知識從了解表面到深入本質(zhì),從個體學(xué)習(xí)到整體把握的跳躍,對新知識的汲取,更是把課本的知識應(yīng)用到實(shí)際中,讓我們了解了我們的學(xué)習(xí)有什么用,能夠解決什么樣的問題,增加了自信和學(xué)習(xí)的動力?傊,通過這次的課程設(shè)計,我們收獲匪淺首先由衷感謝老師提供這樣一個鍛煉自己的機(jī)會,感受到學(xué)來的知識不只是用來完成試卷的。一向慣于獨(dú)立思考的自己學(xué)會了積極的同同學(xué)、朋友交流,取長補(bǔ)短,共同進(jìn)步。課程設(shè)計使自己發(fā)現(xiàn)考試并不是最重要,最重要的是能運(yùn)用所學(xué)的知識。在整個課程設(shè)計的學(xué)習(xí)過程中,不再是用學(xué)到的知識解題,而是在實(shí)際運(yùn)用時遇到什么學(xué)什么,重在把知識應(yīng)用于實(shí)際。七、成績評定指導(dǎo)教師評語:指導(dǎo)教師:成績評定:界面設(shè)計功能實(shí)現(xiàn)操作演示答辯效果設(shè)計報告創(chuàng)新總分注:界面設(shè)計10%,功能實(shí)現(xiàn)35%,操作演示20%,答辯效果20%,設(shè)計報告10%,創(chuàng)新5%。
格式要求:A4紙打印,左右頁邊距2.5cm。表格中正文文字均為宋體小四號字,表格中的標(biāo)題加粗,行間距20磅。左側(cè)裝訂。圖、表格要有編號和標(biāo)題。程序清單采用TimesNewRoman字體,五號字。
友情提示:本文中關(guān)于《濟(jì)南大學(xué)數(shù)據(jù)結(jié)構(gòu)課程設(shè)計總結(jié)》給出的范例僅供您參考拓展思維使用,濟(jì)南大學(xué)數(shù)據(jù)結(jié)構(gòu)課程設(shè)計總結(jié):該篇文章建議您自主創(chuàng)作。
來源:網(wǎng)絡(luò)整理 免責(zé)聲明:本文僅限學(xué)習(xí)分享,如產(chǎn)生版權(quán)問題,請聯(lián)系我們及時刪除。