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