1、济南大学机械工程学院Aaaaaaaaaaa计算机辅助机械设计实验指导书Aaaaaaaaaaaa机械设计系一、实验目的 aaaaaaaaaa计算机辅助机械 设 计 是 一 门 实 践 性 较 强 的 课 程 , 学 生 通 过 上 机 计 算 达 到 以 下 目 的 :1、加深对计算机辅助机械 设 计 设计方法的基本理论和算法步骤的理解。2、培养学生独立编制、调试计算机程序的能力。3、掌握常用计算机辅助机械 设 计 程序的使用方法。4、培养学生灵活运用所学方法解决工程实际问题的能力。二、实验项目、学时分配及对每个实验项目的要求序号 实验项目 学时数 实 验 要 求1 链表 21、明确链表建立及编
2、辑的基本原理及程序框图2、编制链表建立及编辑程序3、用考核题对所编程序进行考核2 二叉树 21、明确二叉树建立及遍历的基本原理及程序框图2、编制二叉树建立及遍历程序3、用考核题对所编程序进行考核3 参数化图素拼装 原理实验 21、明确参数化图素拼装原理及程序框图2、编制参数化图素拼装程序3、用考核题对所编程序进行考核4 设计资料的程序处理 21、明确设计资料的程序处理的基本原理及程序框图2、编制设计资料的程序处理程序3、用考核题对所编程序进行考核5 三角带传动的程序设计 21、明确三角带传动的基本算法步骤及程序框图2、编制三角带传动的程序设计程序3、用考核题对所编程序进行考核三、实验报告内容
3、aaaaaaaaaaaaaaaaa每次上机实验结束后,学生要作一份完整的实验报告,实验报告内容应包括:1、实验的基本原理简述及程序框图绘制。2、编制实验程序。3、用考核题对所编程序进行考核。四、实验考核办法 aaaaaaaaaaaaaa本课程实验成绩依据以下几个方面进行考核1、实验报告2、考核所编制的程序3、实验纪律、出勤等实验一 链表 aaaaaaaa1 用链表的方法编写减速箱零件清单(包括序号、名称、数量、材料)的管理程序,要求提供插入、删除、列表功能。减速箱零件清单序号 名称 数量 材料1 箱体 1 HT1002 箱盖 1 HT1003 齿轮轴 1 454 轴 1 455 齿轮 1 45
4、6 端盖 1 HT100 实验程序清单#include “stdafx.h“#include “stdio.h“#include “malloc.h“#include “string.h“typedef struct _tagLinkint No,Num;char Name10,Mat10;struct _tagLink *next; LINK;LINK *Head=NULL;void OutPut(LINK *t)printf(“%5d%15s%5d%15sn“,t-No,t-Name,t-Num,t-Mat);/插入void Insert(int No,char *Name,int Num
5、,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;/查询void Check(int No)LINK *t=Head;while(t) if(t-No=No) OutPut(t); break; else t=t-next;/删除void Delete(int No)LINK *p,*t;p=t=Head;while(t t=t-next;if(t=NUL
6、L) printf(“未找到%dn“,No); return;if(p=t) Head=Head-next; free(t); else p-next=t-next; free(t);/列表输出void OutPutAll()LINK *t=Head;while(t)OutPut(t); t=t-next;int main(int argc, char* argv)for(;) int code;printf(“ 减速箱零件查询系统nnn“);printf(“0-退出 1-输入n“);printf(“2-查询 3-删除n“);printf(“4-列表n“);printf(“请选择:“); sc
7、anf(“%d“,if(code=0) break;switch(code)case 1:int No,Num;char Name10,Mat10;for(;) printf(“序号:“); scanf(“%d“,if(No=0) break;printf(“名称:“); scanf(“%s“,printf(“数量:“); scanf(“%d“,printf(“材料:“); scanf(“%s“,Insert(No,Name,Num,Mat);break;case 2: int No;printf(“输入查询的序号:“); scanf(“%d“,Check(No);break;case 3:
8、int No;printf(“输入删除的序号:“); scanf(“%d“,Delete(No);break;case 4: OutPutAll(); break;return 0;实验二 二叉树1. 建立排序二叉树、遍历排序二叉树2. 编写建立和遍历二叉排序树的程序。3. 实验数据:18,14,22,7,17,20,35,27,11,3,204. 程序清单:#include “stdafx.h“#include “stdio.h“#include “malloc.h“typedef struct _tagLink struct _tagLink *LC,*RC;int data; LINK;
9、LINK *Head;int A=18,14,22,7,17,20,35,27,11,3,20;int N=sizeof(A)/sizeof(int);/建立二叉排序树的函数void built()for(int i=0; idata=Ai;Node-LC=Node-RC=NULL;if(i=0) Head=Node; continue;Temp=Head;for(;) if(Aidata) if(Temp-LC=NULL) Temp-LC=Node; break;else Temp=Temp-LC; else if(Temp-RC=NULL) Temp-RC=Node; break;else
10、 Temp=Temp-RC; /用中序遍历二差树,输出结果为排序的数据void output()LINK *stack50;int TOP=0;LINK *P=Head;for(;) if(P!=NULL) stackTOP+=P;P=P-LC; else if(TOP=0) break;P=stack-TOP;printf(“%dn“,P-data);P=P-RC;int main(int argc, char* argv)built();output();return 0;实验三 参数化图素拼装原理实验实验内容:编制构成轴的七种形状特征的函数,并利用这些函数生成一根轴。构成轴的七种结构形式
11、传动轴程序示例void CTSPZView:DrawUnit_Arc(CDC *pDC,int r,CPoint p0,CPoint p1,CPoint p2)CRect rect(p0.x-r,p0.y-r,p0.x+r,p0.y+r);pDC-Arc(void CTSPZView:DrawUnit_A(CDC *pDC,CPoint p0,int d,int c,bool v)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
12、-MoveTo(p1);pDC-LineTo(p2);pDC-LineTo(p3);pDC-LineTo(p4);void CTSPZView:DrawUnit_B(CDC *pDC,CPoint p0,int d,int b,bool v)void CTSPZView:DrawUnit_C(CDC *pDC,CPoint p0,int d,int b,bool v)void CTSPZView:DrawUnit_D(CDC *pDC,CPoint p0,int d,int b,bool v)void CTSPZView:DrawUnit_E(CDC *pDC,CPoint p0,int d,
13、int b,int r,bool v)void CTSPZView:DrawUnit_F(CDC *pDC,CPoint p0,int d,int b,int l)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 t=(int)(sqrt(d*d/4.0-b*b/4.0)+0.5);p1.x=p3.x=p0.x+t;DrawUnit_Arc(pDC,d/2,p0,p1,p3);pDC-MoveTo(p1);pDC-LineTo(p5);pDC-LineTo(p4);pDC-LineTo(p3);void CTSPZ
14、View:DrawUnit_G(CDC *pDC,CPoint p0,int b,int l)void CTSPZView:OnTspzA() CClientDC dc(this);DrawUnit_A(DrawUnit_A(/CDC *pDC,CPoint p0,int d,int c,bool v)void CTSPZView:OnTspz0() / TODO: Add your command handler code herevoid CTSPZView:OnTspzB() / TODO: Add your command handler code herevoid CTSPZView
15、:OnTspzC() / TODO: Add your command handler code herevoid CTSPZView:OnTspzD() / TODO: Add your command handler code herevoid CTSPZView:OnTspzE() / TODO: Add your command handler code herevoid CTSPZView:OnTspzF() / TODO: Add your command handler code hereCDlgDrawF dlg;if(dlg.DoModal()!=IDOK) return;CClientDC dc(this);DrawUnit_F(void CTSPZView:OnTspzG() / TODO: Add your command handler code here