第1章 C#编程训练.doc_第1页
第1章 C#编程训练.doc_第2页
第1章 C#编程训练.doc_第3页
第1章 C#编程训练.doc_第4页
第1章 C#编程训练.doc_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第1章 引 言1.1 研究背景选定飞机的设计参数,是飞机总体设计过程中最主要的工作。所谓飞机的总体设计,简言之,即已知设计要求,求解设计参数,定出飞机总体设计方案的过程。飞机的设计参数是确定飞机的方案的设计变量。确定一个总体方案,需要定出一组总体设计参数,包括飞机及各组成部分的质量;机翼和尾翼的面积,展弦比,后掠角,机身的最大直径和长度等几何参数;以及发动机的推力等等。因此对飞机某些部分的常用参数进行数值计算与管理显得格外重要,以方便设计者的使用,查询和参考。1.2 设计构想本次课程设计所采用C#数值计算与飞机设计过程中利用空气动力学中的厚翼理论计算机翼的几何参数Cy,Cp,Mz等现实问题进行结合,开发机翼几何参数数值计算的程序以及对求得的几何参数进行数据管理建立相匹配的数据库管理系统。因此本次设计的基本思路就是机翼几何参数的数值计算应用程序的开发,以及数据库的建立与应用程序交互。其中几何参数数值计算是利用空气动力学中的厚翼理论数值计算方法以及物面是条流线的边界条件和库塔儒可夫斯基后缘条件等进行相应的C#应用程序的编程开发。当今最常用的数据库系统是关系型数据库系统。常用的关系型数据库包括Microsoft SQL Sever、Oracle、DB2、Access等。在本次设计中采用的是Access建立飞机在一定的气动环境构型下翼型的升力系数、压强系数、力矩系数。并与C#应用程序进行连接,对其进行动态查询与管理。第2章 设计任务2.1 题目与要求基本要求:本次设计要求使用 .NET 语言,结合空气动力学中的厚翼理论数值计算方法以及物面是条流线的边界条件和库塔儒可夫斯基后缘条件等进行相应的C#应用程序的编程开发。Microsoft Office Access数据库的使用,用C#编写程序实现对飞机翼型数据的管理等功能; 2.2 本程序涉及的知识点 .NET语言的使用;C#的基本程序语言;Visual Studio 2010的基本操作;空气动力学中的厚翼理论,以及布涡所需要的物面边界条件和库塔儒可夫斯基后缘条件等理论知识;Microsoft Office Access的使用;数据库的建立与连接等关键知识要点。2.3 设计思路本次课程设计综合考虑了C#语言以及与空气动力学中厚翼理论计算机翼几何参数的实际基础上,通过C#数值计算应用程序开发来实现快捷计算出机翼在相应外界条件下的几何参数Cy,Cp,Mz等。通过数据库来建立储存飞机起落构型下翼型的升力系数、力矩系数、压强系数并用C#编写程序与数据库进行连接,实现对其进行动态查询与管理的功能。第3章 程序设计过程3.1 空气动力学数值计算理论3.1.1数值计算方法3.1.2涡的布置,控制点得选取,外部环境参数的设定 从下翼面后缘起将翼面分成100个小段,并在每一段上布常值涡,涡强密度分布1,2,3,100,并且在每个涡片得3/4处选取控制点,在每个控制点上准确满足物面条件。为满足后缘条件,使下表面第一个涡片和上表面最后第一百个涡片的控制点1和100尽可能的接近后缘,这两个涡片取得很短,后缘条件用1=-100,近似代替。这里假定外界无穷远处来流速度为V=70,机翼弦长b=30。3.2 设计中遇到的困难及解决办法程序设计过程中遇到的一些相关的困难,首先是对空气动力学中理论知识的掌握,其次是如何将实际问题用C#编程开发来实现。自学数据库的建立并通过不断反复练习与总结经验以实现用C#对数据库的连接成功,以方便于所求结果的管理。第4章 程序完成情况这次的C#程序主要是利用空气动力中的厚翼理论数值计算方法进行编程开发以及数据库与C#程序的交互,对机翼几何外形参数值计算与管理。4.1步骤详解1. 创建Windows窗体2. 设置窗体属性3. 添加分组框架控件(GroupBox)4. Form1中添加标签、下拉列表框和按钮控件(lable、combobox、button)等5. Form2中添加显示数据库中的数据控件(DataGridView)等6. 把调用的Access数据库复制到本应用程序的“bin/Debug”文件中相应窗体界面如下图:图4-1 主窗体4.2功能实现1.机翼几何参数Cy,Cp,Mz的数值计算以及翼型的绘制1.1点击按钮button1(点击选择翼型),运行效果如图图4-2 选择翼型 选择中的翼型文件Dormoy; 执行代码:filepath = ofd.FileName; reader = new StreamReader(filepath);1.2点击几何参数显示,运行效果如图图4-3 数值计算结果 groupBox分组控件中的控件显示数值计算结果 执行代码: double v = Convert.ToDouble(textBox8.Text); int alfa = 0; int i; int i1; int j; int degree = 100; double s1; double s2; chazhi cha = new chazhi(); zhuigan caculate; /alfa = Convert.ToInt32(textBox5.Text ); b = x_upnum - 1; xianchang = double.Parse(textBox9.Text); for (i = 0; i = degree / 2; i+) xi = 2 * b / degree * i; s1 = (y_up2 - y_up1) / (x_up2 - x_up1); s2 = (y_upnum - 1 - y_upnum - 2) / (x_upnum - 1 - x_upnum - 2); yui = cha.sanci(x_up, y_up, num - 1, xi, s1, s2); s1 = (y_down2 - y_down1) / (x_down2 - x_down1); s2 = (y_downnum - 1 - y_downnum - 2) / (x_downnum - 1 - x_downnum - 2); ydi = cha.sanci(x_down, y_down, num2 - 1, xi, s1, s2); for (i = 0; i = num - 1; i+) b2 = y_upi; b1 = y_downi; c1i = (b2 + b1) / 2; a1 = 0; i1 = 0; for (i = 0; i = (degree / 2) - 1; i+) a1 = c1i1; if (a1 = c1i) a1 = c1i; i1 = i; for (i = 1; i = degree; i+) if (i degree / 2 + 1) pxi = xi - (degree / 2 + 1); pyi = ydi - (degree / 2 + 1); ks = new doubledegree + 1; for (i = 1; i = degree; i+) ksi = pxi; n = new doubledegree + 1; for (i = 1; i = degree; i+) ni = pyi; wx = new doubledegree + 1; wy = new doubledegree + 1; for (i = 1; i 1 & i degree / 2 + 1) wxi = xi - (degree / 2 + 1) - 0.0001; s1 = (y_down2 - y_down1) / (x_down2 - x_down1); s2 = (y_downnum - 1 - y_downnum - 2) / (x_downnum - 1 - x_downnum - 2); wyi = cha.sanci(x_down, y_down, num2 - 1, wxi, s1, s2); c = new doubledegree + 1, degree + 1; for (i = 1; i = degree; i+) for (j = 1; j = degree; j+) ci, j = Math.Log(Math.Pow(wxi - ksj, 2) + Math.Pow(wyi - nj, 2), Math.E) / (4 * Math.PI); f = new doubledegree + 1; fai = new doubledegree + 1; for (i = 1; i = degree; i+) faii = -v * Math.Sin(alfa) * pxi + v * Math.Cos(alfa) * pyi; caculate = new zhuigan(); f = caculate.sanjiao(c, fai, degree); for (i = 1; i = 1; i+) Cy += (2 * fi) / (v * b); Vx = new doubledegree + 1; Vy = new doubledegree + 1; Cp_up1 = new doubledegree + 1; Cp_down1 = new doubledegree + 1; for (i = 1; i = degree/2; i+) Vxi = Vxi = v * Math.Cos(alfa) + (fi * pyi) / (2 * Math.PI * (Math.Pow(pxi, 2) + Math.Pow(pyi, 2); Vyi = Vyi = v * Math.Sin(alfa) - (fi * pxi) / (2 * Math.PI * (Math.Pow(pxi, 2) + Math.Pow(pyi, 2); Cp_down1i = 1 - (Math.Pow(Vxi, 2) + Math.Pow(Vyi, 2) / Math.Pow(v, 2); for (i = degree / 2+1; i = degree; i+) Vxi = Vxi = v * Math.Cos(alfa) + (fi * pyi) / (2 * Math.PI * (Math.Pow(pxi, 2) + Math.Pow(pyi, 2); Vyi = Vyi = v * Math.Sin(alfa) - (fi * pxi) / (2 * Math.PI * (Math.Pow(pxi, 2) + Math.Pow(pyi, 2); Cp_up1i = 1 - (Math.Pow(Vxi, 2) + Math.Pow(Vyi, 2) / Math.Pow(v, 2); for (i = degree / 2 + 1; i = degree; i+) Cpu += Cp_up1i; for (i = 2 ; i = degree/2; i+) Cpd += Cp_down1i; for (i = 1; i = degree; i+) mz += (2 * fi * pxi) / (v * Math.Pow(b, 2); Cyalfa = 1.8 * 3.1415926 * (1 + a1 / xianchang); textBox2.Text = Convert.ToString(Cy); textBox3.Text = Convert.ToString(Cpu); textBox5.Text = Convert.ToString(Cpd); textBox4.Text = Convert.ToString(mz); textBox6.Text = Convert.ToString(Cyalfa); /textBox7.Text = Convert.ToString(mz0); 1.3点击按钮压强分布曲线,用graphControl1控件显示压强分布曲线,运行效果如图图4-4 压强分布系数执行代码:List x11 = new List(); List y11 = new List(); x11.Add(x_up0); y11.Add(Cp_up10); List x12 = new List(); List y12 = new List(); x12.Add(x_down0); y12.Add(Cp_down10); for (int i1 = 0; i1 = num - 1; i1+) x11.Add(x_upi1); y11.Add(Cp_up1i1); x12.Add(x_upi1); y12.Add(Cp_down1i1); PointPairList data = new PointPairList(x11.ToArray(), y11.ToArray(); PointPairList data1 = new PointPairList(x12.ToArray(), y12.ToArray(); this.graphControl1.GraphPane.CurveList.Clear(); this.graphControl1.GraphPane.AddCurve(, data, Color.Blue, SymbolType.Circle); this.graphControl1.GraphPane.AddCurve(, data1, Color.Blue, SymbolType.Circle); this.graphControl1.GraphPane.AxisChange(); this.graphControl1.Refresh(); this.graphControl1.Update(); graphControl1.GraphPane.Title.Text = 翼型曲线?;/设置?图?标题a /设置?横纵Y坐?标的?显?示?范?围 this.graphControl1.GraphPane.XAxis.Scale.Max = 1; this.graphControl1.GraphPane.XAxis.Scale.Min = 0; this.graphControl1.GraphPane.YAxis.Scale.Max = 0.2; this.graphControl1.GraphPane.YAxis.Scale.Min = -0.2; graphControl1.GraphPane.XAxis.Title.Text = X;/更改?坐?标轴标签? graphControl1.GraphPane.YAxis.Title.Text = Y; Color color = Color.FromArgb(rd.Next(255), rd.Next(255), rd.Next(255);/线?颜?色? SymbolType pointSymbol = (SymbolType)rd.Next(10);/点?形?状1.4主窗体Form1运行效果图图4-5 运行效果图2.机翼翼型曲线的绘制此操作建立在Form1的基础之上,点击Form1窗体上的翼型曲线绘制按钮:2.1 Form4窗体上单击浏览按钮,运行效果图图4-6浏览文件打开图选择文件绘制翼型曲线所需点集执行代码:this.textBox1.Text = openFileDialog1.FileName; _data = ReadDataClass.ReadDataFrom(this.textBox1.Text); boBox1.Items.Clear(); boBox1.Items.AddRange(_data.Keys.ToArray();2.2点击按钮选择翼型数据库,选择翼型,利用graphControl1控件显示翼型,运行效果图图4-7 翼型绘制图执行代码:if (_data.ContainsKey(boBox1.Text) MyGraphClass graph = _boBox1.Text; MyLineClass line = graph.LboBox2.Text; this.graphControl1.GraphPane.CurveList.Clear(); this.graphControl1.GraphPane.Title.Text = graph.Name; this.graphControl1.GraphPane.XAxis.Title.Text = graph.XLabel; this.graphControl1.GraphPane.XAxis.Scale.Max = 100; this.graphControl1.GraphPane.XAxis.Scale.Min = 0; this.graphControl1.GraphPane.YAxis.Title.Text = graph.YLabel; this.graphControl1.GraphPane.YAxis.Scale.Max = 20; this.graphControl1.GraphPane.YAxis.Scale.Min = -20; this.graphControl1.GraphPane.CurveList.Clear(); this.graphControl1.GraphPane.AddCurve(line.Label.Text, line.Points, Color.Blue, SymbolType.Star); this.graphControl1.Refresh(); private void button1_Click(object sender, EventArgs e) if (openFileDialog1.ShowDialog() = DialogResult.OK) this.textBox1.Text = openFileDialog1.FileName; _data = ReadDataClass.ReadDataFrom(this.textBox1.Text); boBox1.Items.Clear(); boBox1.Items.AddRange(_data.Keys.ToArray(); 3.机翼几何参数数值计算结果的数据库建立,数据的查询与管理3.1点击Form1上几何参数数据库汇总按钮,打开Form2窗体,运行效果图图4-8 运行效果图3.2动态向下拉列表框中添加查询对象,运行效果如图图4-9 选择机翼类型Dormoy执行代码:comboBox1.Items.Add(myread0.ToString();3.3点击查询同时用picturebox控件显示襟翼几何外形,运行效果如图图4-10 图形显示执行代码:private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) switch (comboBox1.SelectedItem.ToString() case 襟翼形式: pictureBox1.Image = imageList1.Images0; break;3.4用数据显示控件显示相关数据,运行效果如图图4-11数据显示执行代码:string SqlStr = select * from 几何参数 where 襟翼形式= + boBox1.Text + ; OleDbDataAdapter ada = new OleDbDataAdapter(new OleDbCommand(SqlStr, mycon); Da

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论