C语言 数据结构项目实训
《数据结构实训》教学大纲
课程编号(先不填)课程名称(中文)数据结构项目实训课程名称(英文)适用专业制订单位projecttrainingfordatastucture学时数制定时间学分数计算机(本)信息工程系一、实训的性质和目的
《数据结构》实训是计算机专业集中实践性环节之一,其目的就是要达到理论与实际应用相结合,使学生能够根据数据对象的特性,学会数据组织的方法,能把现实世界中的实际问题在计算机内部表示出来,并培养良好的程序设计技能。
二、实训教学的基本内容和要求
本实训面向应用,以解决实际问题为主。题目以选用学生相对比较熟悉的为宜,要求通过本实训,理解有关数据结构的基本概念、不同数据类型的存储和基本操作的算法实现,理解数据类型的逻辑结构及物理存储结构,通过自己设计,编程、调试、测试、能够基本掌握在不同存储结构下的算法实现及算法优化,树立并培养系统规范开发的理念。实训中学生要将相关课程中学到的知识、思想和理念尽量应用在实训中。结束后要按规定提交代码和各种文档。
实训基本步骤:1.选题
设计的课题尽量结合教学、科研的实际课题,规模、大小适当,具有一定复杂度。应根据题目大小、难度确定是否分组,组内成员人数。
2.数据结构及算法设计
根据需求分析,选择合理的数据结构及设计相应的算法。3.编码
根据已设计的数据结构和算法,编写代码。4.测试
按照系统测试的原则、方法和步骤,对系统进行测试。测试中应形成测试报告。5.编写实训报告
实训说明书,内容及要求如下:(1)封面(2)成绩评定(3)目录
(4)说明书正文,主要内容包括:一、设计题目
二、运行环境(软、硬件环境)三、数据结构及算法设计的思想四、数据结构及算法设计五、源代码六、运行结果分析
七、实习总结(收获及体会)参考资料;附录(核心代码)。
三、实训的进度安排
实训进度应由学生根据实训时间、本组学生人数、系统大小、难易,自行制定项目进度计划。进度大体安排可参考下表。
序号123内容选题、数据结构及算法设计编码,调试编写实训报告、检查时间安排12天12天1天备注
四、实训的考核
1.成绩考核,以实训各阶段完成情况、系统运行情况为主,实训报告为辅。两者都必须达到基本要求,若有一项不达要求,成绩计为不及格。
2.设计未完成或未达到老师要求的计为不及格。3.实训中有新思路、新方法,酌情加分。
4.学生不允许请别人代作或相互抄袭,如发现上述情况,双方均取消实训资格。
5.分组时,小组成员应有明确分工,检查时按分工完成情况计算成绩,组员之间实训报告不能雷同。
五、其他
1.对学生的要求
(1)每组两题,每组不许超过两人。
(2)应认真阅读设计指导书,了解所做的设计内容及要求,完成课设。有问题及时主动通过各种方式与教师联系沟通。
(3)学生要发挥自主学习的能力,查阅相关的参考文献;完成设计任务。(4)认真撰写实训报告,要求格式规范、文字通顺。(5)相关实训上交资料:
①源程序:学生开发的所有源程序。②实训报告。
2.参考题目(题一和题二中1小题为必选,如有时间可以实现题二中的第2小题)课程设计题一:链表操作一、设计目的
1.掌握线性链表的建立。2.掌握线性链表的基本操作。二、设计内容和要求
利用链表的插入运算建立线性链表,然后实现链表的查找、插入、删除、计数、输出、排序、逆置等运算(查找、插入、删除、查找、计数、输出、排序、逆置要单独写成函数),并能在屏幕上输出操作前后的结果。
课程设计题二:二叉树的基本操作一、设计目的
1.掌握二叉树的概念和性质2.掌握任意二叉树存储结构。3.掌握任意二叉树的基本操作。二、设计内容和要求
1.对任意给定的二叉树(顶点数自定)建立它的二叉链表存储结构,并实现二叉树的先序、中序、后序三种遍历,输出三种遍历的结果。
2.求二叉树高度、结点数、度为1的结点数和叶子结点数。
扩展阅读:数据结构实训报告 c语言点餐系统 net
北京联合大学
数据结构实训报告
课程名称:数据结构实训项目名称:学院:姓名:指导老师:
餐厅点餐系统
管理学院专业:信息管理与信息系统*******学号:*************201*年1月13日
2
数据结构实训
目录
北京联合大学...........................................................................................................................................................................1数据结构实训报告...................................................................................................................................................................1
一、实践题目...................................................................................................................................................................3二、实践目的...................................................................................................................................................................3三、实践内容...........................................................................................................................................................31.选择的数据结构:.....................................................................................................................................................32.程序代码及注释.........................................................................................................................................................33.程序运行流程图.........................................................................................................................................................84.结果.............................................................................................................................................................................8四、个人总结.........................................................................................................................................................................15
3
数据结构实训
一、实践题目
餐厅点餐系统
二、实践目的
编写出一个有用户界面的容易使用的点餐系统,服务员可以通过这个系统为顾客点餐,点完餐后可以直接打印出来或在餐厅后堂打印出来方便厨师及时了解顾客的点餐,如果是餐厅管理者在使用还可以查看原材料的余量,以便及时进货。
三、实践内容
1.选择的数据结构:线性表,线性存储结构2.程序代码及注释
#include#include#include#include"windows.h"
structcai/*cai结构体实现对菜品已点份数、名称、原材料的记录*/{intfenshu;charname[50];intuse;intprice;};
typedefintElemType;
structList/*该线性表实现对菜品原材料的剩余量的记录,线性表【i】对应菜品的点餐菜单编码*/{ElemType*list;intsize;intMaxSize;};
/*以下为线性表的函数*/
voidInitList(structList*L,intms){if(msMaxSize=ms;L->list=malloc(ms*sizeof(ElemType));if(!L->list){
4
数据结构实训
printf("动态存储分配失败!");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++;}
/*表格函数*/
voidcddayin(structcaia[]){inti=0,j=0,s=0;for(i=0;i0)j++;}if(j!=0){printf("已点菜/酒品编号已点菜品名称已点份数/瓶数价格\\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
数据结构实训
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
数据结构实训
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
数据结构实训
}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
数据结构实训
3.程序运行流程图
显示菜品数量选择菜单打印原材料余量表开始显示主菜单输入菜品编号进行点餐菜品编号判断菜品or酒品or退出(-1)酒品编号显示酒品数量选择菜单-1打印已点菜单Y原材料余量打印N结束4.结果
模拟场景:顾客点了如下菜品及酒品
宫保鸡丁1份,京酱肉丝1份,鸭血3份,水煮鱼1份,麻婆豆腐1份雪花啤酒6瓶
服务员通过点餐系统为顾客点餐,并打印出菜单,此时后厨也收到了此菜单并开始备菜,管理者通过查看原材料余量判断是否进货。
9
数据结构实训
主菜单:
开始点餐
1.宫保鸡丁一份
10
数据结构实训
2.京酱肉丝一份
11
数据结构实训
其他类似菜品点餐过程省略
3.雪花啤酒6瓶
12
数据结构实训
4.结束并确认(输入-1)
13
数据结构实训
5.打印出的菜单
6.选择是否显示原材料余量(Y/N)
如果选择Y(y)打印出原材料余量表(程序默认所有原材料初始余量为100)
14
数据结构实训
如果选择N(n)系统结束
15
数据结构实训
四、个人总结
在本次数据结构实训过程中,我知道了独立的去完成一个程序的基本步骤:先构思方向,再思考大体的程序运行流程,然后编写程序中要使用的结构体、线性表等函数,最后在main()函数中将以上的函数串起来。整个编写程序的过程最麻烦的倒不是编写程序,而是调试。我为了能减少麻烦,每编写完一个函数就对整体进行编译找出错误,直到把问题解决再继续编写下一个函数。这样做可以避免多个函数中出现相同的错误或者出现由于上一个函数的错误引起的下一个函数无法正常调用的问题,到时候就不好改了。在整个程序中我使用了一个结构体和一个顺序存储线性表,来实现程序的主要功能。在这个过程中发现许多问题并解决了,对于线性表的理解也更加的深刻。
当然这个程序还存在很多的不足,首先这个程序如果应用到实际中无法实现存储功能,另一个就是我设计这个程序的初衷是想让它能够真的将菜单在打印机上打印出来,但是本人技术知识不足没有写到那个份上。所以还有很多东西要好好学习的。
友情提示:本文中关于《C语言 数据结构项目实训》给出的范例仅供您参考拓展思维使用,C语言 数据结构项目实训:该篇文章建议您自主创作。
来源:网络整理 免责声明:本文仅限学习分享,如产生版权问题,请联系我们及时删除。