C語言 數(shù)據(jù)結(jié)構(gòu)項目實訓(xùn)
《數(shù)據(jù)結(jié)構(gòu)實訓(xùn)》教學(xué)大綱
課程編號(先不填)課程名稱(中文)數(shù)據(jù)結(jié)構(gòu)項目實訓(xùn)課程名稱(英文)適用專業(yè)制訂單位projecttrainingfordatastucture學(xué)時數(shù)制定時間學(xué)分?jǐn)?shù)計算機(本)信息工程系一、實訓(xùn)的性質(zhì)和目的
《數(shù)據(jù)結(jié)構(gòu)》實訓(xùn)是計算機專業(yè)集中實踐性環(huán)節(jié)之一,其目的就是要達(dá)到理論與實際應(yīng)用相結(jié)合,使學(xué)生能夠根據(jù)數(shù)據(jù)對象的特性,學(xué)會數(shù)據(jù)組織的方法,能把現(xiàn)實世界中的實際問題在計算機內(nèi)部表示出來,并培養(yǎng)良好的程序設(shè)計技能。
二、實訓(xùn)教學(xué)的基本內(nèi)容和要求
本實訓(xùn)面向應(yīng)用,以解決實際問題為主。題目以選用學(xué)生相對比較熟悉的為宜,要求通過本實訓(xùn),理解有關(guān)數(shù)據(jù)結(jié)構(gòu)的基本概念、不同數(shù)據(jù)類型的存儲和基本操作的算法實現(xiàn),理解數(shù)據(jù)類型的邏輯結(jié)構(gòu)及物理存儲結(jié)構(gòu),通過自己設(shè)計,編程、調(diào)試、測試、能夠基本掌握在不同存儲結(jié)構(gòu)下的算法實現(xiàn)及算法優(yōu)化,樹立并培養(yǎng)系統(tǒng)規(guī)范開發(fā)的理念。實訓(xùn)中學(xué)生要將相關(guān)課程中學(xué)到的知識、思想和理念盡量應(yīng)用在實訓(xùn)中。結(jié)束后要按規(guī)定提交代碼和各種文檔。
實訓(xùn)基本步驟:1.選題
設(shè)計的課題盡量結(jié)合教學(xué)、科研的實際課題,規(guī)模、大小適當(dāng),具有一定復(fù)雜度。應(yīng)根據(jù)題目大小、難度確定是否分組,組內(nèi)成員人數(shù)。
2.數(shù)據(jù)結(jié)構(gòu)及算法設(shè)計
根據(jù)需求分析,選擇合理的數(shù)據(jù)結(jié)構(gòu)及設(shè)計相應(yīng)的算法。3.編碼
根據(jù)已設(shè)計的數(shù)據(jù)結(jié)構(gòu)和算法,編寫代碼。4.測試
按照系統(tǒng)測試的原則、方法和步驟,對系統(tǒng)進行測試。測試中應(yīng)形成測試報告。5.編寫實訓(xùn)報告
實訓(xùn)說明書,內(nèi)容及要求如下:(1)封面(2)成績評定(3)目錄
(4)說明書正文,主要內(nèi)容包括:一、設(shè)計題目
二、運行環(huán)境(軟、硬件環(huán)境)三、數(shù)據(jù)結(jié)構(gòu)及算法設(shè)計的思想四、數(shù)據(jù)結(jié)構(gòu)及算法設(shè)計五、源代碼六、運行結(jié)果分析
七、實習(xí)總結(jié)(收獲及體會)參考資料;附錄(核心代碼)。
三、實訓(xùn)的進度安排
實訓(xùn)進度應(yīng)由學(xué)生根據(jù)實訓(xùn)時間、本組學(xué)生人數(shù)、系統(tǒng)大小、難易,自行制定項目進度計劃。進度大體安排可參考下表。
序號123內(nèi)容選題、數(shù)據(jù)結(jié)構(gòu)及算法設(shè)計編碼,調(diào)試編寫實訓(xùn)報告、檢查時間安排12天12天1天備注
四、實訓(xùn)的考核
1.成績考核,以實訓(xùn)各階段完成情況、系統(tǒng)運行情況為主,實訓(xùn)報告為輔。兩者都必須達(dá)到基本要求,若有一項不達(dá)要求,成績計為不及格。
2.設(shè)計未完成或未達(dá)到老師要求的計為不及格。3.實訓(xùn)中有新思路、新方法,酌情加分。
4.學(xué)生不允許請別人代作或相互抄襲,如發(fā)現(xiàn)上述情況,雙方均取消實訓(xùn)資格。
5.分組時,小組成員應(yīng)有明確分工,檢查時按分工完成情況計算成績,組員之間實訓(xùn)報告不能雷同。
五、其他
1.對學(xué)生的要求
(1)每組兩題,每組不許超過兩人。
(2)應(yīng)認(rèn)真閱讀設(shè)計指導(dǎo)書,了解所做的設(shè)計內(nèi)容及要求,完成課設(shè)。有問題及時主動通過各種方式與教師聯(lián)系溝通。
(3)學(xué)生要發(fā)揮自主學(xué)習(xí)的能力,查閱相關(guān)的參考文獻(xiàn);完成設(shè)計任務(wù)。(4)認(rèn)真撰寫實訓(xùn)報告,要求格式規(guī)范、文字通順。(5)相關(guān)實訓(xùn)上交資料:
①源程序:學(xué)生開發(fā)的所有源程序。②實訓(xùn)報告。
2.參考題目(題一和題二中1小題為必選,如有時間可以實現(xiàn)題二中的第2小題)課程設(shè)計題一:鏈表操作一、設(shè)計目的
1.掌握線性鏈表的建立。2.掌握線性鏈表的基本操作。二、設(shè)計內(nèi)容和要求
利用鏈表的插入運算建立線性鏈表,然后實現(xiàn)鏈表的查找、插入、刪除、計數(shù)、輸出、排序、逆置等運算(查找、插入、刪除、查找、計數(shù)、輸出、排序、逆置要單獨寫成函數(shù)),并能在屏幕上輸出操作前后的結(jié)果。
課程設(shè)計題二:二叉樹的基本操作一、設(shè)計目的
1.掌握二叉樹的概念和性質(zhì)2.掌握任意二叉樹存儲結(jié)構(gòu)。3.掌握任意二叉樹的基本操作。二、設(shè)計內(nèi)容和要求
1.對任意給定的二叉樹(頂點數(shù)自定)建立它的二叉鏈表存儲結(jié)構(gòu),并實現(xiàn)二叉樹的先序、中序、后序三種遍歷,輸出三種遍歷的結(jié)果。
2.求二叉樹高度、結(jié)點數(shù)、度為1的結(jié)點數(shù)和葉子結(jié)點數(shù)。
擴展閱讀:數(shù)據(jù)結(jié)構(gòu)實訓(xùn)報告 c語言點餐系統(tǒng) net
北京聯(lián)合大學(xué)
數(shù)據(jù)結(jié)構(gòu)實訓(xùn)報告
課程名稱:數(shù)據(jù)結(jié)構(gòu)實訓(xùn)項目名稱:學(xué)院:姓名:指導(dǎo)老師:
餐廳點餐系統(tǒng)
管理學(xué)院專業(yè):信息管理與信息系統(tǒng)*******學(xué)號:*************201*年1月13日
2
數(shù)據(jù)結(jié)構(gòu)實訓(xùn)
目錄
北京聯(lián)合大學(xué)...........................................................................................................................................................................1數(shù)據(jù)結(jié)構(gòu)實訓(xùn)報告...................................................................................................................................................................1
一、實踐題目...................................................................................................................................................................3二、實踐目的...................................................................................................................................................................3三、實踐內(nèi)容...........................................................................................................................................................31.選擇的數(shù)據(jù)結(jié)構(gòu):.....................................................................................................................................................32.程序代碼及注釋.........................................................................................................................................................33.程序運行流程圖.........................................................................................................................................................84.結(jié)果.............................................................................................................................................................................8四、個人總結(jié).........................................................................................................................................................................15
3
數(shù)據(jù)結(jié)構(gòu)實訓(xùn)
一、實踐題目
餐廳點餐系統(tǒng)
二、實踐目的
編寫出一個有用戶界面的容易使用的點餐系統(tǒng),服務(wù)員可以通過這個系統(tǒng)為顧客點餐,點完餐后可以直接打印出來或在餐廳后堂打印出來方便廚師及時了解顧客的點餐,如果是餐廳管理者在使用還可以查看原材料的余量,以便及時進貨。
三、實踐內(nèi)容
1.選擇的數(shù)據(jù)結(jié)構(gòu):線性表,線性存儲結(jié)構(gòu)2.程序代碼及注釋
#include#include#include#include"windows.h"
structcai/*cai結(jié)構(gòu)體實現(xiàn)對菜品已點份數(shù)、名稱、原材料的記錄*/{intfenshu;charname[50];intuse;intprice;};
typedefintElemType;
structList/*該線性表實現(xiàn)對菜品原材料的剩余量的記錄,線性表【i】對應(yīng)菜品的點餐菜單編碼*/{ElemType*list;intsize;intMaxSize;};
/*以下為線性表的函數(shù)*/
voidInitList(structList*L,intms){if(msMaxSize=ms;L->list=malloc(ms*sizeof(ElemType));if(!L->list){
4
數(shù)據(jù)結(jié)構(gòu)實訓(xùn)
printf("動態(tài)存儲分配失!");exit(1);}L->size=0;}
voidagainMalloc(structList*L){ElemType*p=realloc(L->list,2*L->MaxSize*sizeof(ElemType));if(!p){
printf("分配存儲空間失!");exit(1);}L->list=p;
L->MaxSize=2*L->MaxSize;}
voidInsertLastList(structList*L,ElemTypex){if(L->size==L->MaxSize)againMalloc(L);L->list[L->size]=x;L->size++;}
/*表格函數(shù)*/
voidcddayin(structcaia[]){inti=0,j=0,s=0;for(i=0;i0)j++;}if(j!=0){printf("已點菜/酒品編號已點菜品名稱已點份數(shù)/瓶數(shù)價格\\n");for(i=0;i0){printf("%5d%10s%14d¥\\n",i,a[i].name,a[i].fenshu,a[i].fenshu*a[i].price);s=s+a[i].fenshu*a[i].price;}printf("您好,您點餐價格合計=%d¥\\n",s);}if(j==0)printf("顧客尚未點餐,無法進行菜單打印!\\n");}
voidycliao(structList*yuan,structcaia[]){inti=1,p=0,k=0;
%d5
數(shù)據(jù)結(jié)構(gòu)實訓(xùn)
for(i=0;ilist[p]=yuan->list[p]-a[i].fenshu;a[i].use=a[i].use/100;}while(a[i].use!=0);}
printf("|-------------------------------------------------------|--------------------|\\n");
printf("|------------------原材料余量---------------------------|-----酒品余量-------|\\n");printf("|-------------------------------------------------------|--------------------|\\n");printf("|10.雞肉=%3d11.豬肉=%3d12.魚肉=%3d|50.雪花啤酒=%3d|\\n",yuan->list[10],yuan->list[11],yuan->list[12],yuan->list[50]);
printf("|13.黃瓜=%3d14.土豆=%3d15.豆腐=%3d|51.燕京啤酒=%3d|\\n",yuan->list[13],yuan->list[14],yuan->list[15],yuan->list[51]);printf("|16.茄子=%3d17.青椒=%3d18.牛肉=%3d|52.二鍋頭=%3d|\\n",yuan->list[16],yuan->list[17],yuan->list[18],yuan->list[52]);printf("|19.大蔥=%3d20.鮮鴨血=%3d21.花生=%3d||\\n",yuan->list[19],yuan->list[20],yuan->list[21]);printf("|22.花椒=%3d23.醬=%3d24.胡蘿卜=%3d||\\n",yuan->list[22],yuan->list[23],yuan->list[24]);printf("|25.辣椒=%3d26.芹菜=%3d27.豆皮=%3d||\\n",yuan->list[25],yuan->list[26],yuan->list[27]);printf("|-------------------------------------------------------|--------------------|\\n");printf("|-------------------------------------------------------|--------------------|\\n");}
voiddiancai(structcaia[]){intp=0,wep=0;do{printf("|----------------------------------------------|-------------------|\\n");printf("|----------菜品(輸入-1確認(rèn)并結(jié)束點餐)----------|-------酒品--------|\\n");printf("|----------------------------------------------|-------------------|\\n");printf("|1.宮爆雞丁2.魚香肉絲3.京醬肉絲|21.雪花啤酒|\\n");printf("|4.地三鮮5.水煮魚6.麻婆豆腐|22.燕京啤酒|\\n");printf("|7.夫妻肺片8.拍黃瓜9.鮮鴨血|23.二鍋頭|\\n");printf("|----------------------------------------------|-------------------|\\n");printf("|----------------------------------------------|-------------------|\\n");scanf("%d",&p);system("CLS");if(p>=1&&p6
數(shù)據(jù)結(jié)構(gòu)實訓(xùn)
printf("|1.一份2.兩份|\\n");printf("|3.三份4.其他請直接輸入|\\n");printf("|------------------------------------------|\\n");printf("|------------------------------------------|\\n");scanf("%d",&wep);if(wep>50)
{system("CLS");printf("您輸入的值異常或過大,請您檢查輸入的值!\\n");continue;}/*防止誤輸入*/elseif(wep=21&&p50)
{system("CLS");printf("您輸入的值異常或過大,請您檢查輸入的值!\\n");continue;}/*防止誤輸入*/elseif(wep7
數(shù)據(jù)結(jié)構(gòu)實訓(xùn)
}main(){}
{system("CLS");printf("\\n\\n\\n\\n");}
inti=0;charl="\\0";
structListyuan;/*yuan前不用加“*”*/structcaia[30]={{0,"\\0",0},
{0,"宮爆雞丁",10131421,15},{0,"魚香肉絲",1124,14},{0,"京醬肉絲",112327,16},{0,"地三鮮",141617,10},{0,"水煮魚",122225,50},{0,"麻婆豆腐",152225,11},{0,"夫妻肺片",18212625,17},{0,"拍黃瓜",13252223,8},{0,"鮮鴨血",20,20},{0,"\\0",0},{0,"\\0",0},{0,"\\0",0},{0,"\\0",0},{0,"\\0",0},{0,"\\0",0},{0,"\\0",0},{0,"\\0",0},{0,"\\0",0},{0,"\\0",0},{0,"\\0",0},
{0,"雪花啤酒",50,5},{0,"燕京啤酒",51,6},{0,"二鍋頭",52,4},{0,"\\0",0},{0,"\\0",0},{0,"\\0",0},{0,"\\0",0},{0,"\\0",0},{0,"\\0",0}};InitList(&yuan,60);for(i=0;i8
數(shù)據(jù)結(jié)構(gòu)實訓(xùn)
3.程序運行流程圖
顯示菜品數(shù)量選擇菜單打印原材料余量表開始顯示主菜單輸入菜品編號進行點餐菜品編號判斷菜品or酒品or退出(-1)酒品編號顯示酒品數(shù)量選擇菜單-1打印已點菜單Y原材料余量打印N結(jié)束4.結(jié)果
模擬場景:顧客點了如下菜品及酒品
宮保雞丁1份,京醬肉絲1份,鴨血3份,水煮魚1份,麻婆豆腐1份雪花啤酒6瓶
服務(wù)員通過點餐系統(tǒng)為顧客點餐,并打印出菜單,此時后廚也收到了此菜單并開始備菜,管理者通過查看原材料余量判斷是否進貨。
9
數(shù)據(jù)結(jié)構(gòu)實訓(xùn)
主菜單:
開始點餐
1.宮保雞丁一份
10
數(shù)據(jù)結(jié)構(gòu)實訓(xùn)
2.京醬肉絲一份
11
數(shù)據(jù)結(jié)構(gòu)實訓(xùn)
其他類似菜品點餐過程省略
3.雪花啤酒6瓶
12
數(shù)據(jù)結(jié)構(gòu)實訓(xùn)
4.結(jié)束并確認(rèn)(輸入-1)
13
數(shù)據(jù)結(jié)構(gòu)實訓(xùn)
5.打印出的菜單
6.選擇是否顯示原材料余量(Y/N)
如果選擇Y(y)打印出原材料余量表(程序默認(rèn)所有原材料初始余量為100)
14
數(shù)據(jù)結(jié)構(gòu)實訓(xùn)
如果選擇N(n)系統(tǒng)結(jié)束
15
數(shù)據(jù)結(jié)構(gòu)實訓(xùn)
四、個人總結(jié)
在本次數(shù)據(jù)結(jié)構(gòu)實訓(xùn)過程中,我知道了獨立的去完成一個程序的基本步驟:先構(gòu)思方向,再思考大體的程序運行流程,然后編寫程序中要使用的結(jié)構(gòu)體、線性表等函數(shù),最后在main()函數(shù)中將以上的函數(shù)串起來。整個編寫程序的過程最麻煩的倒不是編寫程序,而是調(diào)試。我為了能減少麻煩,每編寫完一個函數(shù)就對整體進行編譯找出錯誤,直到把問題解決再繼續(xù)編寫下一個函數(shù)。這樣做可以避免多個函數(shù)中出現(xiàn)相同的錯誤或者出現(xiàn)由于上一個函數(shù)的錯誤引起的下一個函數(shù)無法正常調(diào)用的問題,到時候就不好改了。在整個程序中我使用了一個結(jié)構(gòu)體和一個順序存儲線性表,來實現(xiàn)程序的主要功能。在這個過程中發(fā)現(xiàn)許多問題并解決了,對于線性表的理解也更加的深刻。
當(dāng)然這個程序還存在很多的不足,首先這個程序如果應(yīng)用到實際中無法實現(xiàn)存儲功能,另一個就是我設(shè)計這個程序的初衷是想讓它能夠真的將菜單在打印機上打印出來,但是本人技術(shù)知識不足沒有寫到那個份上。所以還有很多東西要好好學(xué)習(xí)的。
友情提示:本文中關(guān)于《C語言 數(shù)據(jù)結(jié)構(gòu)項目實訓(xùn)》給出的范例僅供您參考拓展思維使用,C語言 數(shù)據(jù)結(jié)構(gòu)項目實訓(xùn):該篇文章建議您自主創(chuàng)作。
來源:網(wǎng)絡(luò)整理 免責(zé)聲明:本文僅限學(xué)習(xí)分享,如產(chǎn)生版權(quán)問題,請聯(lián)系我們及時刪除。