第一篇:Android大作业报告
移动设备软件应用与开
发 大作业报告
姓 名: 学 号: 班 级: 院 系: 日 期:
任课教师:
一、程序的运行环境、安装步骤
1、运行环境 游戏运行环境:Android1.5以上版本
2、程序的组成部份:
2.1、JDK安装
1.我的电脑->属性->高级->环境变量->系统变量中添加以下环境变量: 2.JAVA_HOME值为: D:Program FilesJavajdk1.6.0_18(你安装JDK的目录)3.CLASSPATH值为:.;%JAVA_HOME%libtools.jar;%JAVA_HOME%libdt.jar;%JAVA_HOME%bin;4.Path: 在开始追加 %JAVA_HOME%bin;5.NOTE:前面四步设置环境变量对搭建Android开发环境不是必须的,可以跳过。
安装完成之后,可以在检查JDK是否安装成功。打开cmd窗口,输入java –version 查看JDK的版本信息。出现类似下面的画面表示安装成功了:
2.2、Eclipse安装 2.3、Android SDK安装
在Android Developers下载android-sdk_r05-windows.zip,下载完成后解压到任意路径。运行SDK Setup.exe,点击Available Packages。如果没有出现可安装的包,请点击Settings,选中Misc中的“Force https://...”这项,再点击Available Packages。
选择希望安装的SDK及其文档或者其它包,点击Installation Selected、Accept All、Install Accepted,开始下载安装所选包
在用户变量中新建PATH值为:Android SDK中的tools绝对路径(本机为D:AndroidDevelopandroid-sdk-windowstools)。image图
2、设置Android SDK的环境变量
“确定”后,重新启动计算机。重启计算机以后,进入cmd命令窗口,检查SDK是不是安装成功。
运行 android –h 如果有类似以下的输出,表明安装成功:
图
3、验证Android SDK是否安装成功
2.4、ADT安装
打开 Eclipse IDE,进入菜单中的 “Help”-> “Install New Software” 点击Add...按钮,弹出对话框要求输入Name和Location:Name自己随便取,Location输入http://dl-ssl.google.com/android/eclipse。如下图所示:
确定返回后,在work with后的下拉列表中选择我们刚才添加的ADT,我们会看到下面出有Developer Tools,展开它会有Android DDMS和Android Development Tool,勾选他们。如下图所示:
然后就是按提示一步一步next。完成之后:
选择Window > Preferences...在左边的面板选择Android,然后在右侧点击Browse...并选中SDK路径,本机为:
D:AndroidDevelopandroid-sdk-windows点击Apply、OK。配置完成。2.5、创建AVD 为使Android应用程序可以在模拟器上运行,必须创建AVD。
1、在Eclipse中。选择Windows > Android SDK and AVD Manager
2、点击左侧面板的Virtual Devices,再右侧点击New
3、填入Name,选择Target的API,SD Card大小任意,Skin随便选,Hardware目前保持默认值
4、点击Create AVD即可完成创建AVD 注意:如果你点击左侧面板的Virtual Devices,再右侧点击New,而target下拉列表没有可选项时,这时候你:
点击左侧面板的Available Packages,在右侧勾选https://dl-ssl.google.com/android/repository/repository.xml,如下图所示:
然后点击Install Selected按钮,接下来就是按提示做就行了
要做这两步,原因是在1.3、Android SDK安装中没有安装一些必要的可用包(Available Packages)。2.5、创建Android工程
三、程序开发平台
(1)代码行数:1000
(2)开发环境:Android Developer Tools Build: v22.6.2-1085508
apache-ant-1.9.3
四、程序功能说明:
单机屏幕按住不放可以拖动魔方转动,魔方上下左右空白处可以转动魔方相对那一面。
五、应用核心源码
class MFtestSurfaceView extends GLSurfaceView {
private MFtestRenderer mRenderer;
private float mPreviousX;
private float mPreviousY;//上一次的点
private float mDownPreviousX;
private float mDownPreviousY;//上一次的Down点
// private int oldDownX;
// private int
private float theta;
private float fai;//球坐标
public MFtestSurfaceView(Context context){
super(context);
theta=(float)3.14159/4;
fai=(float)3.14159/4;
// Set the Renderer for drawing on the GLSurfaceView
mRenderer = new MFtestRenderer();
setRenderer(mRenderer);
setRenderMode(GLSurfaceView.RENDERMODE_WHEN_DIRTY);
}
@Override
public boolean onTouchEvent(MotionEvent e){
// MotionEvent reports input details from the touch screen
// and other input controls.In this case, you are only
// interested in events where the touch position changed.float x = e.getX();
float y = e.getY();
switch(e.getAction()){
case MotionEvent.ACTION_MOVE://如果是 移动的话
float dx = xmPreviousY;//x,y的变换值(不是0,就是1)
float te=theta;
theta=theta+dy/100;//角度是弧度值
if(!(theta>0&&theta<3.14159))
{
theta=te;//法线始终向上
}
fai=fai+ dx/100;
//x=rsinθcosφ
mRenderer.eyez=(float)(3*Math.sin(theta)*Math.cos(fai));
//y=rsinθsinφ
mRenderer.eyex=(float)(3*Math.sin(theta)*Math.sin(fai));
////z=rcosθ
利用球坐标使观察点始终维持在半径为3的球上
mRenderer.eyey=(float)(3*Math.cos(theta));
requestRender();
//System.out.println(x+“
”+y);
break;
case MotionEvent.ACTION_DOWN:
mDownPreviousX=x;
mDownPreviousY=y;
break;
case MotionEvent.ACTION_UP:
if((((x-mDownPreviousX)>-5)&&((x-mDownPreviousX)<5))&&(((y-mDownPreviousY)>-5)&&((y-mDownPreviousY)<5)))//(((x-mDownPreviousX)>-3)||((x-mDownPreviousX)>-3))&&(((y-mDownPreviousY)>-3)||((y-mDownPreviousY)>-3))
{
//System.out.println(x-mDownPreviousX);
if(x
<(mRenderer.width*(1-Math.sqrt(18)/6)/2))
{
//左
//System.out.println(x+“
左
”+y);
mRenderer.action = 1;
DrawAnimation();
}
else if(x
>
mRenderer.width-(mRenderer.width*(1-Math.sqrt(18)/6)/2))
{
//右
//System.out.println(x+“
右
”+y);
mRenderer.action = 2;
DrawAnimation();
}
else if(y
<
mRenderer.height/2.0-!)
switch(mRenderer.action){
case 1:
if((mRenderer.eyex > 0)&&(mRenderer.eyez > 0)){
mRenderer.move=76;
}
else if((mRenderer.eyex > 0)&&(mRenderer.eyez < 0)){
mRenderer.move=70;
}
else if((mRenderer.eyex < 0)&&(mRenderer.eyez < 0)){
mRenderer.move=82;
}
else if((mRenderer.eyex < 0)&&(mRenderer.eyez > 0)){
mRenderer.move=66;
}
break;
case 2:
if((mRenderer.eyex > 0)&&(mRenderer.eyez > 0)){
mRenderer.move=66;
}
else if((mRenderer.eyex > 0)&&(mRenderer.eyez < 0)){
mRenderer.move=76;
}
else if((mRenderer.eyex < 0)&&(mRenderer.eyez < 0)){
mRenderer.move=70;
}
else if((mRenderer.eyex < 0)&&(mRenderer.eyez > 0)){
mRenderer.move=82;
}
break;
case 3:
mRenderer.move=85;
break;
case 4:
mRenderer.move=68;
break;
}
}
private void memcpy(int one,int two){
mRenderer.face_color[one]=mRenderer.face_color[two];
mRenderer.face_color[one+1]=mRenderer.face_color[two+1];
mRenderer.face_color[one+2]=mRenderer.face_color[two+2];
}
private void LeftShift(int a,int b,int c,int d){
// a
float temp1=mRenderer.face_color[a];
float temp2=mRenderer.face_color[a+1];
float temp3=mRenderer.face_color[a+2];
memcpy(a,b);
memcpy(b,c);
memcpy(c,d);
mRenderer.face_color[d]= temp1;
mRenderer.face_color[d+1]=temp2;
mRenderer.face_color[d+2]=temp3;
} }
private void DrawRotation(GL10 gl){
// 绘制小立方体
switch(move){ case 70: DrawCube19(gl);DrawCube11(gl);DrawCube2(gl);DrawCube22(gl);DrawCube13(gl);DrawCube5(gl);DrawCube25(gl);DrawCube16(gl);DrawCube8(gl);DrawCube18(gl);DrawCube10(gl);DrawCube1(gl);DrawCube21(gl);DrawCube4(gl);DrawCube24(gl);DrawCube15(gl);
gl.glPushMatrix();gl.glRotatef(-angle,0.0f,0.0f,1.0f);DrawCube0(gl);DrawCube9(gl);DrawCube17(gl);DrawCube3(gl);DrawCube12(gl);DrawCube20(gl);DrawCube6(gl);DrawCube14(gl);
DrawCube7(gl);
DrawCube23(gl);
gl.glPopMatrix();break;case 66: DrawCube0(gl);DrawCube9(gl);DrawCube17(gl);DrawCube3(gl);DrawCube12(gl);DrawCube20(gl);DrawCube6(gl);DrawCube14(gl);
DrawCube23(gl);DrawCube18(gl);DrawCube10(gl);DrawCube1(gl);
DrawCube21(gl);DrawCube4(gl);DrawCube24(gl);DrawCube15(gl);DrawCube7(gl);
gl.glPushMatrix();
gl.glRotatef(angle,0.0f,0.0f,1.0f);
DrawCube19(gl);DrawCube11(gl);DrawCube2(gl);DrawCube22(gl);
DrawCube13(gl);DrawCube5(gl);DrawCube25(gl);DrawCube16(gl);DrawCube8(gl);
gl.glPopMatrix();
break;
case 85:
DrawCube3(gl);DrawCube23(gl);DrawCube24(gl);DrawCube25(gl);
DrawCube4(gl);DrawCube5(gl);DrawCube6(gl);DrawCube7(gl);
DrawCube8(gl);DrawCube12(gl);DrawCube13(gl);DrawCube14(gl);
DrawCube15(gl);DrawCube16(gl);DrawCube20(gl);DrawCube21(gl);DrawCube22(gl);
gl.glPushMatrix();
gl.glRotatef(-angle,0.0f,1.0f,0.0f);
DrawCube0(gl);DrawCube1(gl);DrawCube2(gl);DrawCube9(gl);
DrawCube10(gl);DrawCube11(gl);DrawCube17(gl);DrawCube18(gl);DrawCube19(gl);
gl.glPopMatrix();
break;
case 68:
DrawCube0(gl);DrawCube1(gl);DrawCube2(gl);DrawCube3(gl);
DrawCube4(gl);DrawCube5(gl);DrawCube9(gl);DrawCube10(gl);
DrawCube11(gl);DrawCube12(gl);DrawCube13(gl);DrawCube17(gl);
DrawCube18(gl);DrawCube19(gl);DrawCube20(gl);DrawCube21(gl);DrawCube22(gl);
gl.glPushMatrix();
gl.glRotatef(angle,0.0f,-1.0f,0.0f);
DrawCube6(gl);DrawCube7(gl);DrawCube8(gl);DrawCube14(gl);
DrawCube15(gl);DrawCube16(gl);DrawCube23(gl);DrawCube24(gl);DrawCube25(gl);
gl.glPopMatrix();
break;
case 82:
DrawCube9(gl);DrawCube10(gl);DrawCube11(gl);DrawCube25(gl);
DrawCube12(gl);DrawCube13(gl);DrawCube14(gl);DrawCube15(gl);
DrawCube16(gl);DrawCube17(gl);DrawCube18(gl);DrawCube19(gl);
DrawCube20(gl);DrawCube21(gl);DrawCube22(gl);DrawCube23(gl);DrawCube24(gl);
gl.glPushMatrix();
gl.glRotatef(-angle,1.0f,0.0f,0.0f);
DrawCube0(gl);DrawCube1(gl);DrawCube2(gl);DrawCube3(gl);
DrawCube4(gl);DrawCube5(gl);DrawCube6(gl);DrawCube7(gl);DrawCube8(gl);
gl.glPopMatrix();
break;
case 76:
DrawCube0(gl);DrawCube1(gl);DrawCube2(gl);DrawCube3(gl);
DrawCube4(gl);DrawCube5(gl);DrawCube6(gl);DrawCube7(gl);
DrawCube8(gl);DrawCube9(gl);DrawCube10(gl);DrawCube11(gl);
DrawCube12(gl);DrawCube13(gl);DrawCube14(gl);DrawCube15(gl);DrawCube16(gl);
gl.glPushMatrix();
gl.glRotatef(-angle,-1.0f,0.0f,0.0f);
DrawCube17(gl);DrawCube18(gl);DrawCube19(gl);DrawCube20(gl);
DrawCube21(gl);DrawCube22(gl);DrawCube23(gl);DrawCube24(gl);DrawCube25(gl);
gl.glPopMatrix();
break;
default:
break;
}
六、工程运行效果截图
10月20日 查找Android开发的配置及流程 10月22日 查找资料确定要使用的算法与数据结构 10月23日 系统设计 10月24日 开始编码
10月28日 游戏基本功能完成,进入测试阶段 11月2日 程序开发完成,编写文档
八、总结
因为之前自己学习过Android游戏开发的相关知识,也自己做过一个小游戏,所以对这方面比较了解,不过之前开发的小游戏是用Cocos2d引擎完成,和Android原生的不太一样,通过这次大作业的完成,对Android的基本开发有了一定的了解。对图像的绘制有了一定的了解。
第二篇:Android大作业题目
《Android软件开发》课程考查作业题目
注意事项:
1、每人可选下列题目中的一题完成课程设计。
2、学习委员于10月31日收齐上交。
3、本次要求打印稿(正反打印)。
一、题目及要求:
1、基于Android平台的在线通信录
功能要求:实现通信录的在线备份还原功能,服务器端技术自定。
2、基于Android平台的云记事本软件
功能要求:具有记事本的基本功能。同时具备在线备份功能。服务器端技术自定。
3、基于BaiDu在线地图的轨迹跟踪服务
功能要求:
1、能动态、实时记录设备位置。
2、能在手机或者网页上显示地图轨迹。服务端技术自定。
用例场景:小明今天80岁,患老年痴呆又喜欢出远门,经常发生走丢事故。小小明为了能实时掌握小明的行踪,特意为他配备了装有跟踪服务的智能机,从此小明再也不怕走丢了。
4、基于Android平台的财务软件
功能要求:
1、记账和统计功能。2.实时备份 实现要求:客户端基于Android,服务端技术自定
用例场景:随手记,一家人共用一个账号,所有支出都清清楚楚
5、基于Android平台的社交软件
功能要求:参考QQ、微信、微博等
实现要求:客户端基于Android,服务端技术自定
6、基于Android平台的新闻客户端
功能要求:参考网易新闻客户端
实现要求:客户端基于Android,服务端技术自定.7.基于Android平台的天气预报系统
功能要求:从服务器端下载天气预报数据并显示.实现要求:客户端基于Android,服务端技术自定
8.自拟题目。要求有客户端和服务端,具备一定的实用性。
二、设计文档要求(格式同上学期多核开发课程报告格式)
整体要求:使用Eclipse集成开发环境完成课程设计,界面友好,代码的可维护性好,有必要的注释和相应的文档。文档具体书写内容要求如下: 系统的需求概述 系统的概要设计 设计与实现部分 运行画面截图
每一部分附上关键性代码 心得体会(每个人都要写)
第三篇:大作业报告格式
大作业报告格式
一、题目及要求
二、设计思路
三、问题分析及解决方案
四、输入输出
五、源代码
六、测试结果
七、总结、系统评价及展望
八、***53922
第四篇:linux大作业报告
华南理工大学
Linux课程期末大作业
大作业题目:
学
院 :
专
业: 姓
名: 学
号:
2013年6月
一、大作业题目及要求
二、程序设计原理图
三、程序原理描述及设计思路
四、大作业设计总结及心得体会
五、源代码
/ 2
第五篇:《机械工程有限元分析基础》大作业报告
《机械工程有限元分析基础》大作业报告
题 目 | 飞轮 |
学生姓名 | 毛雨 |
学 号 | 2118011416 |
院 部 | 机电工程与自动化 |
专 业 | 机械工程 |
班 级 | 21180114 |
二〇二一年六月
一、建模过程/步骤
1、ANSYS分析开始准备工作
(1)清空数据库并开始一个新的分析,选取 Utility > File > Clear & Start New,弹出 Clear database and Start New 对话框,单击 OK 按钮,弹出 Verify 对话框,单击 OK按钮完成清空数据库。
(2)指定新的工作文件名 指定工作文件名。选取 Utility Menu > File >Change Jobname,弹出 Change Jobname 对话框,在 Enter New Jobname 项输入工作文件名“feilm”,单击 OK按钮完成工作文件名的定义。
(3)指定新的标题指定分析标题。选取 Utility Menu > File > Change Title,弹出 Change Title 对话框,在 Enter New Title 项输入标题名“feilun axis”为标题名,然后单击OK按钮完成分析标题的定义。
(4)重新刷新图形窗口 选取 Utility Menu > Plot >Repiot,定义的信息显示在图形窗口中。
2、确定分析类型
(1)运行主菜单 Main Menu > Preference 弹出分析类型设定对话框,选择分析模块为 Structural 结构分析,然后单击 OK 按钮完成分析类型定义。
(2)d定义单元及材料属性
(3)新建单元类型 运行主菜单 Main Menu >Preprocessor > Element Type > Add/Edit/Delete 命令,弹出 Element types 对话框,单击 Add 按钮新建单元类型,弹出 Library of Element Types 对话框,先选择单元大类为 solid,接着选择 Quad 8 node 183,单击 OK 按钮,完成单元类型选择。接着单击 Option 按钮进入单元设置选项,在 Element behavior(K3)栏中更改选项为 Asisymmetric(轴对称),在单击 OK按钮返回 Element Type 对话框,单击 Close 按钮完成设置。
(4)定义材料属性 运行主菜单 Main Menu > Preprocessor > Material Props > Matorial Models 命令,系统显示材料属性设置对话框,在材料属性对话框中一次选择 Structure/Linear/Elastic/Isotropic。完成选择后,弹出材料属性对话框,方便输入弹性模量210e9,泊松比0.27,单击 OK 返回选择 Density,弹出密度定义对话框,输入密度 7800,单击 OK返回。完成材料属性设置后,关闭对话框离开材料属性设置。
3、建立几何图形
(1)建立关键点
(2)绘制矩形 运行主菜单 Main Menu > Preprocessor > Modeling > Create > Areas > Rectangle > By Dimensions 命令,在对话框中分别输入 1 点坐标 X1=50,Y1=0,2 点坐标 X2=55,Y2=50,单击 Apply 按钮完成第一个矩形绘制;同理,输入3点坐标X1=55,Y1=24,6点坐标 X2=75,Y2=16,单击 Apply 按钮完成第二个矩形绘制;输入4点坐标 X1=75,Y1=40,5点坐标 X2=80,Y2=5,单击 OK 按钮完成第三个矩形绘制。
(3)布尔操作合并图形 运行主菜单 Main Menu > Preprocessor > Modeling > Operate > Booleans > Add 出现选择拾取对话框,依次点击图形再点 Apply,完成布尔加。
(4)设置显示方式 运行菜单 Utility Menu > Plot > Line,设置显示方式为直线,以便下一步为直线倒圆角。
(5)倒圆角 运行主菜单 Main Menu > Preprocessor > Modeling > Create > Lines > Line Fillet 弹出对话框,拾取视频中线段,单击 OK按钮,出现圆角半径设置对话框,Fillet Radius 项输入5,其他项默认,单击 Apply 按钮完成第一个圆角绘制;同理,完成其他三个圆角的绘制。
(6)生成面 运行菜单 Utility Menu > Plot > Line 设置直线显示方式,运行主菜单 Main Menu > Preprocessor > Modeling > Create > Areas >Arbitrary > By Lines,出现选择拾取对话框,点击拾取视频中的线段,单击 Apply 按钮完成;同理,完成其他三个面的生成,单击 OK 按钮结束。
(7)布尔运算 完成几何图形创建 运行主菜单 Main Menu > Preprocessor > Modeling > Operate > Booleans > Add 出现选择拾取对话框,依次点击图形再点 Apply,完成几何图形创建。
4、划分网格
(1)运行主菜单 Main Menu > Preprocessor > Meshing > Mesh Tool(网格划分工具)命令,出现 Mesh Tool 菜单,单击 Areas 中的 set 按钮,在单元尺寸对话框中的 Element edge length 项中输入单元尺寸,本列中输入1,单击 OK 按钮确定。在 Mesh Tool 菜单中设置 Mesh 下拉框为 Areas,shape 项选择 Quad(四边形单元网格),单击 Mesh 按钮划分网格,出现的 Mesh Areas 对话框中单击飞轮平面,在点击Apply,系统将自动完成网格划分。
5、加载求解
(1)显示线段
(2)施加约束 运行主菜单 Main Menu > Solution > Define Loads > Apply > Structulal > Displacement on Lines 命令,出现拾取菜单,选择视频中线段,单击 Apply,出现约束定义对话框,选择 All DOF 约束所有自由度,在 Displacement Value 选项输入0,在单击OK按钮,完成约束定义。
(3)施加载荷 运行 Main Menu > Solution > Define Loads > Apply > Structulal > Pressure > On Lines 命令,出现拾取菜单,选择线段,单击 Apply,出现载荷(压力)定义对话框,输入1e6,单击 OK 按钮完成。
(4)施加角速度 运行主菜单 Main Menu > Solution > Define Loads > Apply > Structulal > Inertia >Angular veloc > Globel 弹出施加速度对话框。在 OMEGY Y 项输入62.8 单击 OK按钮完成。
6、求解
(1)运行主菜单 Main Menu > Solution > Current LS 命令,出现菜单中单击 OK 按钮确定。计算机开始进行求解,求解完成后出现“solution is done”提示表示求解完成。单击 Close 按钮完成求解。
7、查看分析结果
(1)改变观察输出结果坐标系 在总体柱坐标系下观察应力分布和变形比较方便,因此,吧结果坐标系转换到柱体坐标系下:执行 Main Menu > General Postproc > Options for output 出现结果坐标系设置对话框,设置为柱坐标系,单击 OK按钮完成。
(2)显示节点(单元)径向位移云图 运行主菜单 Main Menu > General Postproc > Plot Results > Contour Plot > Nodal Solu(or Element Solu)命令,选择 DOF Solution > X-Component of Displacement 径向位移(如果观察周向位移,该项选择为 Y-Component of Displacement),单击 OK 按钮。
(3)显示节点(单元)应力云图 运行主菜单 Main Menu > General Postproc > Plot Results > Contour Plot > Nodal Solu(or Element Solu)命令,选择 stress > X-Component stress 径向应力(周向应力为 Y-Component stress),单击 OK按钮。
(4)三维扩展结果 运行下拉菜单 Utility Menu > PlotCtrls > Style > symmetry Expansion > 2D Axis-symmetric 弹出轴对称扩展设置对话框,选择 Full expansion,单击 OK 按钮。(也可以改成四分之一显示)
二、结果分析图片
图2.1 节点径向位移云图
图2.2 节点径向应力云图
图2.2 三维扩展结果图
三、ANSYS软件应用小结
ANSYS软件是融结构、流体、电场、磁场、声场分析于一体的大型通用有限元分析软件。由世界上最大的有限元分析软件公司之一的美国ANSYS开发。它能与多数CAD软件接口,实现数据的共享和交换,如Pro/Engineer, NASTRAN, Alogor, I-DEAS, AutoCAD等,是现代产品设计中的高级CAE工具之一。
本次实验是学习如何使用ANSYS 通过软件对框架结构内力进行计算,在还未学习该软件前,对于此类问题,通常会采用力矩分配法来进行计算,计算过程繁复,计算量大,并且容易出错。导致过程缓慢,效果不显著。
在这次大作业中,我跟随着视频中老师的讲解一步步建模和受力分析,在一开始的迷茫和不解中一次次观看老师的教程,一点点学会使用软件。在课堂上魏老师也在上课过程中给我们介绍了有关飞机上角架和飞轮以及她在研究生期间的研究设计,给我打开了一扇新的大门
对于其他应用型软件而言,ANSYS作为大型权威性的有限元分析软件,在解题过程中是十分牢靠的。同时这也是一门不易掌握的软件,因而,要学好ANSYS,我们要自己有较高的要求,所有实验的基础都是需要我们有理论知识的支持,因此我们要对力学有一定程度的掌握。在掌握理论知识的同时我们要对软件的使用积累经验,光有理论或者经验都是不行的。要结合起来这样我们才能有更深层次的探索和学习。