您好,欢迎访问三七文档
济南大学机械工程学院计算机辅助机械设计实验报告机械设计制造及其自动化2011.12.25一、实验目的计算机辅助机械设计是一门实践性较强的课程,学生通过上机计算达到以下目的:1、加深对计算机辅助机械设计设计方法的基本理论和算法步骤的理解。2、培养学生独立编制、调试计算机程序的能力。3、掌握常用计算机辅助机械设计程序的使用方法。4、培养学生灵活运用所学方法解决工程实际问题的能力。二、实验报告内容每次上机实验结束后,学生要作一份完整的实验报告,实验报告内容应包括:1、实验的基本原理简述及程序框图绘制。2、编制实验程序。3、用考核题对所编程序进行考核。实验一链表1.实验内容用链表的方法编写减速箱零件清单(包括序号、名称、数量、材料)的管理程序,要求提供插入、删除、列表功能。减速箱零件清单序号名称数量材料1箱体1HT1002箱盖1HT1003齿轮轴1454轴1455齿轮1456端盖1HT100…………2.基本原理单向链表是链表结构中最简单的一种。它只有一个指针域,指针域的指针中存放该结点直接前趋或直接后继(通常是直接后继)的地址,如图下图所示。为了记录表的第一个结点的地址,需要设置一个指针变量存放这个结点的地址。该指针变量称为表头,通常与链结点的结构相同,指针域存放第一个元素的地址,数据域可以是空的,可以存放表的长度等信息。表的最后一个结点的指针域设置为NULL,称为空指针。3.实验程序实验程序清单#includestdafx.h#includestdio.h#includemalloc.h#includestring.htypedefstruct_tagLink{intNo,Num;/*typedef将一种数据类型定义为某一个标识符,在程序中使用该标识符来实现相应数据类型变量的定义*/charName[10],Mat[10];struct_tagLink*next;}LINK;LINK*Head=NULL;voidOutPut(LINK*t){printf(%5d%15s%5d%15s\n,t-No,t-Name,t-Num,t-Mat);}//插入voidInsert(intNo,char*Name,intNum,char*Mat){LINK*Node=(LINK*)malloc(sizeof(LINK));Node-No=No;strcpy(Node-Name,Name);Node-Num=Num;strcpy(Node-Mat,Mat);Node-next=Head;Head=Node;}//查询voidCheck(intNo){LINK*t=Head;while(t){if(t-No==No){OutPut(t);break;}elset=t-next;}}//删除voidDelete(intNo){LINK*p,*t;p=t=Head;while(t&&t-No!=No){p=t;t=t-next;}if(t==NULL){printf(未找到%d\n,No);return;}if(p==t){Head=Head-next;free(t);}else{p-next=t-next;free(t);}}//列表输出voidOutPutAll(){LINK*t=Head;while(t){OutPut(t);t=t-next;}}intmain(intargc,char*argv[]){for(;;){intcode;printf(减速箱零件查询系统\n\n\n);printf(0--退出1--输入\n);printf(2--查询3--删除\n);printf(4--列表\n);printf(请选择:);scanf(%d,&code);if(code==0)break;switch(code){case1:{intNo,Num;charName[10],Mat[10];for(;;){printf(序号0--结束:);scanf(%d,&No);if(No==0)break;printf(名称:);scanf(%s,&Name);printf(数量:);scanf(%d,&Num);printf(材料:);scanf(%s,&Mat);Insert(No,Name,Num,Mat);}}break;case2:{intNo;printf(输入查询的序号:);scanf(%d,&No);Check(No);}break;case3:{intNo;printf(输入删除的序号:);scanf(%d,&No);Delete(No);}break;case4:OutPutAll();break;}}return0;}4.运行结果实验二二叉树1.实验内容建立排序二叉树、遍历排序二叉树;编写建立和遍历二叉排序树的程序。实验数据:18,14,22,7,17,20,35,27,11,3,202.基本原理每个结点都设有LC、data、RC三个域,其中LC、RC分别指向该结点的左子树和右子树的根结点。遍历二叉树是指按一定的规律和次序,访问树中的各个结点,使树中每个结点都校访问一次且只被访问一次。要遍历二叉树,必须先对二叉树中的各个结点进行排序。根据根结点、左子树、右子树三者不同的先后次序,可得到六种遍历二叉树的方案。本次以中序遍历作为遍历二叉树的实验内容。中序遍历(LDR)结果:C,B,E,D,A,G,H,I,F,J设P为指向二叉树根结点的指针,为了存放遍历过程中待处理的结点,必须设立一个栈,并设栈顶指针为TOP。中序遍历的过程是:假如二叉树是空,则退出。否则先遍历左子树;然后访问根结点;最后遍历右子树。在遍历左子树、右子树的过程中,又按照同样的规则:先遍历左子树;然后访问根结点;最后遍历右子树,如此不断进行。遍历的整个过程是递归的。存储结构形式二叉树结点的构造中序遍历示意图二叉树3.程序框图TOP–栈顶指针P—指向结点的指针4.实验程序#includestdafx.h#includestdio.h#includemalloc.htypedefstruct_tagLink{struct_tagLink*LC,*RC;intdata;}LINK;LINK*Head;intA[]={18,14,22,7,17,20,35,27,11,3,20};intN=sizeof(A)/sizeof(int);//建立二叉排序树的函数voidbuilt(){for(inti=0;iN;i++){LINK*Node,*Temp;Node=(LINK*)malloc(sizeof(LINK));Node-data=A[i];Node-LC=Node-RC=NULL;if(i==0){Head=Node;continue;}Temp=Head;for(;;){if(A[i]Temp-data){if(Temp-LC==NULL){Temp-LC=Node;break;}elseTemp=Temp-LC;}else{if(Temp-RC==NULL){Temp-RC=Node;break;}elseTemp=Temp-RC;}}}}//用中序遍历二差树,输出结果为排序的数据voidoutput(){LINK*stack[50];intTOP=0;LINK*P=Head;for(;;){if(P!=NULL){stack[TOP++]=P;P=P-LC;}else{if(TOP==0)break;P=stack[--TOP];printf(%d\n,P-data);P=P-RC;}}}intmain(intargc,char*argv[]){built();output();return0;}5.运行结果实验三参数化图素拼装原理实验1.实验内容编制构成轴的七种形状特征的函数,并利用这些函数生成一根轴。构成轴的七种结构形式传动轴2.基本原理根据零件不同的形状特征,利用参数化编程原理实现零件拼装的方法称为参数化图素拼装。参数化图素拼装是一种参数式与交互式相结合的绘图方式,通常先将图形结构分解为容易参数化的基本结构图素或形状特征,并建立起图素库,然后根据需要可用交互方式将图素组合拼装,行程各种图形结构。3.程序框图4.实验程序voidCTSPZView::DrawUnit_Arc(CDC*pDC,intr,CPointp0,CPointp1,CPointp2){CRectrect(p0.x-r,p0.y-r,p0.x+r,p0.y+r);pDC-Arc(&rect,p1,p2);}voidCTSPZView::DrawUnit_A(CDC*pDC,CPointp0,intd,intc,boolv){p2.x=p3.x=p0.x;p2.y=p0.y-(d/2-c);p3.y=p0.y+(d/2-c);p1.x=p4.x=p0.x+(v?(-c):c);p1.y=p0.y-d/2;p4.y=p0.y+d/2;pDC-MoveTo(p1);pDC-LineTo(p2);pDC-LineTo(p3);pDC-LineTo(p4);}voidCTSPZView::DrawUnit_B(CDC*pDC,CPointp0,intd,intb,boolv)开始编制参数化程序输入参数,自动生成图形满意否结束绘图输出YN{p2.x=p3.x=p0.x;p1.y=p2.y=p0.y-d/2;p3.y=p4.y=p0.y+d/2;p1.x=p4.x=p0.x+(v?(-b):b);pDC-MoveTo(p1);pDC-LineTo(p2);pDC-LineTo(p3);pDC-LineTo(p4);}voidCTSPZView::DrawUnit_C(CDC*pDC,CPointp0,intd,intb,boolv){p1.x=p2.x=p3.x=p4.x=p0.x;p1.y=p0.y-d/2;p4.y=p0.y+d/2;p2.y=p5.y=p0.y-(d/2-b);p3.y=p6.y=p0.y+(d/2-b);p5.x=p6.x=p0.x+(v?(-b):b);pDC-MoveTo(p1);pDC-LineTo(p2);pDC-LineTo(p3);pDC-LineTo(p4);pDC-LineTo(p5);pDC-LineTo(p6);}voidCTSPZView::DrawUnit_D(CDC*pDC,CPointp0,intd,intb,boolv){p2.x=p3.x=p0.x;p1.x=p4.x=p0.x+(v?(-b):b);p1.y=p2.y=p0.y-d/2;p3.y=p4.y=p0.y+d/2;pDC-MoveTo(p1);pDC-LineTo(p2);pDC-LineTo(p3);pDC-LineTo(p4);}voidCTSPZView::DrawUnit_E(CDC*pDC,CPointp0,intd,intb,intr,boolv){p2.x=p3.x=p0.x;p1.x=p4.x=p5.x=p7.x=p0.x+(v?(-b+r):(b-r));p6.x=p8.x=p0.x+(v?(-b):b);p1.y=p2.y=p0.y-d/2;p3.y=p4.y=p0.y+d/2;p5.y=p6.y=p0.y-(d/2+r);p7.y=p8.y=p0.y+(d/2+r);pDC-MoveTo(p1);pDC-LineTo(p2);pDC-LineTo(p3);pDC-LineTo(p4);pDC-LineTo(p5);pDC-LineTo(p6);pDC-LineTo(p7);pDC-LineTo(p8);}voidCTSPZView::DrawUnit_F(CDC*pDC,CPointp0,intd,intb,intl){p5.x=p4.x=p0.x+(l-d/2);p5.y=p1.y=p0.y-b/2;p4.y=p3.y=p0.y+b/2;int
本文标题:机械CAD实验报告
链接地址:https://www.777doc.com/doc-7187211 .html