3D游戏软件设计

时间:2019-05-12 16:46:02下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《3D游戏软件设计》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《3D游戏软件设计》。

第一篇:3D游戏软件设计

注:“★考核知识点”后面的标注内容在PPT中均有对应章节,因PPT序号混乱,不在考核知识点后一一罗列,请在PPT中查找。

一、客观部分:(单项选择、多项选择、不定项选择、判断)

(一)、选择部分

(1)OPenGL常用的库里面,属于核心库的是()

A GL B GLU C GLAUX DGLUT ★考核知识点: OpenGL概述

(2)OPenGL渲染流水中,对光栅化描述正确的是()

A 把顶点变换成图元

B 把几何数据和像素数据转换为片断的过程。它将几何数据转换成片元,片元和要显示的像素一一对应

C OpenGL应用程序可以在几何物体上应用纹理图像,使它们看上去更为逼真D主要的内容就是裁剪,它的任务是消除位于半空间之外的那部分几何图元。在某些情况下,还要进行透视除法,用以得到归一化的设备坐标

★考核知识点: OpenGL概述

(3)下面对于OpenGL特点描述正确的有()

A标准支持灵活,可以用软件例程实现也可以使用软硬件组合使用 B具有灵活的伸缩性

C提供了一套良好的功能扩充机制,并且各个版本向后兼容 D跨平台,在科研和教学上是主流

★考核知识点: OpenGL概述

(4)1992年7月,SGI公司发布了OpenGL的1.0版本,随后又与微软公司共同开发了NT版本的OpenGL,从而使一些原来必须在高档图形工作站上运行的大型3D图形处理软件也可以在微机上运用()

★考核知识点: OpenGL概述

(5)OpenGL(开放性图形库Open Graphics Library):是图形硬件的一种软件接口()

★考核知识点: OpenGL概述

(6)()是用于定义构成物体的三角形单元列表的坐标系。

A 观察坐标系B世界坐标系C本地坐标系D转换坐标系

★考核知识点: 状态管理和绘制几何物体

(7)glBegin()函数的意义是()A标志着程序的执行的开始 B标志着一个顶点数据列表的开始 C标志着OpenGL的绘制操作的开始 D标志着当前函数的开始

★考核知识点: 状态管理和绘制几何物体

(8)在win32程序中,主函数是从哪里进入执行的()

A GLMain B WinMain C Begin Dmain ★考核知识点: 状态管理和绘制几何物体

(9)OpenGL中在颜色索引模式下使用的用于选择单值索引的函数是()。A glIndex BglClampColor C glClear D glColor3f ★考核知识点: 颜色渲染和纹理贴图(10)下列哪个颜色不属于三原色()A红 B蓝 C绿D白

★考核知识点: 颜色渲染和纹理贴图

(11)OpenGL的光照模型根据材料反射的红、绿和蓝光的比例来模拟它的颜色。当一个纯红的球体,如果给球体仅仅投上绿色的光线,那么看起来球的颜色会是黑色()

★考核知识点: 颜色渲染和纹理贴图

A(0,0,0)B(255,0,255)C(255,255,255)D(1,1,1)(12)用函数glColor3i()函数设置的黑色的颜色值为()

★考核知识点: 颜色渲染和纹理贴图

(13)OpenGL中光照模型,被物体表面均匀的反射。即使光是被均匀的反射回去的,它直射的物体表面比从某个角度照射过来时要亮()

A环境光B散射光C镜面光D发射光

★考核知识点:环境光、散射光、镜面光、发射光

(14)OpenGL中如何判断一个点接收了光源的多少光线()

A通过距离光源的距离进行计算 B通过法线相对光源的方向进行计算 C通过物体的颜色值进行计算

D通过物体和光源的颜色值的综合考虑进行计算

★考核知识点:光照

(15)OpenGL提供了最大数目为N的单场景内光照光源模型,N为()

A 1 B 8 C 16

D不限制,只要为2的幂就可以了

★考核知识点:光照

(16)OpenGL光照模型中,有一种会将光源强烈的反射到了另外一个特定的方向。高亮 A镜面光B聚光灯光C环境光D发射光 度的光柱往往能在被照射的物体上产生称之为亮斑的亮点()

★考核知识点:光照

(17)OpenGL光照模型中,表面的发射颜色可以增加物体的强度,但是他们不受任何★考核知识点:光照 光源的影响,在整个场景中,并没有作为一种额外的光照()(18)设置光源位置时,当我们的光源坐标位置(x,y,z,w)中的w为0时代表我们的光为平行光源()

★考核知识点:光照

(19)OpenGL一个场景中至多可以在包含16个光源()

★考核知识点:光照

(20)用函数glColor3i()函数设置的黑色的颜色值为()

★考核知识点:绘制像素、位图字体和图像

(21)像素数据从可以开始从缓冲区读取到内存然后把像素数据从内存写入到帧缓冲最后在帧缓冲内部复制像素数据()

★考核知识点:绘制像素、位图字体和图像

(22)以下哪个函数可以设置当前的光栅位置()

A glTranslatef()B glRasterPos()C glRotatef()D glDrawPos()★考核知识点:绘制像素、位图字体和图像

(23)在绘制几何图形之时,我们可以使用glColor*()函数去设置当前颜色或者当前颜色索引()

★考核知识点:绘制像素、位图字体和图像

(24)在设置了光栅位置之后,我们可以使用glBitmap函数来绘制数据()

★考核知识点:绘制像素、位图字体和图像

(25)void glRasterPos2*(type x,type y);用于设置位图的绘制位置。()

★考核知识点:绘制像素、位图字体和图像

(26)glCopyPixels的像素路径包括()

A像素传输操作B基于片断的操作C在帧缓冲区暂存D光栅化操作

★考核知识点:绘制像素、位图字体和图像

(27)当我们的源和目标的alpha值都为0.35时,当使用函数glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA)进行像素混合,得出的结果描述正确的是?()

A源和目标混合效果相同 B混合色更接近源 C混合色更接近目标 D无法判断

★考核知识点:混合抗锯齿雾多边形偏移

(28)启动混合后,如果绿色物体和一个红色物体用glBlendFunc(GL_ONE,GL_ONE)方式混合后,结果的混合部分的颜色为(D)A红色B绿色C白色D黄色

★考核知识点:混合抗锯齿雾多边形偏移

(29)图形学中称由于采样频率不足而造成的失真为走样,反走样通过多重采样改善图形锯齿效果()

★考核知识点:混合抗锯齿雾多边形偏移

(30)如果不进行混和操作,每个新的片元都被OpenGL当成是不透明的,覆盖掉帧缓存已存在的颜色值。()

★考核知识点:混合抗锯齿雾多边形偏移

(31)颜色定义中RGBA的A是alpha值,alpha值的作用是将已处理过的片元颜色值与存储在帧缓存中的像素颜色结合起来()

★考核知识点:混合抗锯齿雾多边形偏移

(32)当前属于颜色索引模式时,我们可以进行的操作有()。

A实现颜色混和操作B实现透明效果C实现颜色叠加D实现颜色渐变效果

★考核知识点:混合抗锯齿雾多边形偏移

(33)void glBlendFunc(Glenumafactor,Glenumbfactor)

其中参数afactor和参数bfactor分别用于指定源和目标的混合因子()

★考核知识点:混合抗锯齿雾多边形偏移

(34)颜色混合方程中,GL_FUNC_ADD实现的功能是()

A CsS+CdD B CsS-CcD C min(CsS,CdD)D max(CsS,CdD)★考核知识点:混合抗锯齿雾多边形偏移

(35)开启颜色混合的函数方式为()

A GL_BLEND B GL_BLENDING C GL_RENDER D GL_ENABLEBLEND ★考核知识点:混合抗锯齿雾多边形偏移

(36)一个矢量加上一个矢量结果为()

A一个矢量 B一个标量

C如果为零则不是矢量,其它情况下皆为矢量 D以上说法都不对

★考核知识点:图形变换的数学基础

(37)两个矢量之间的点乘结果为()

A一个矢量 B一个标量

C如果为零则不是矢量,其它情况下皆为矢量 D以上说法都不对

★考核知识点:图形变换的数学基础

(38)glLoadIdentity()函数对于4×4矩阵操作结果为()

A [0,0,0,0;0,0,0,0;0,0,0,0;0,0,0,0] B1,1,1,1;1,1,1,1;1,1,1,1;1,1,1,1] C[1,0,0,1;0,1,0,1;0,0,1,1;0,0,0,1] D[1,0,0,0;0,1,0,0;0,0,1,0;0,0,0,1] ★考核知识点:图形变换的数学基础

(39)我们在使用定义视口函数 glViewport 中,第三个参数有什么作用()

A描述视口的距离屏幕最左位置 B描述视口的距离屏幕最上位置 C描述视口的高度 D描述视口的宽度

★考核知识点:图形变换的数学基础

(40)通过矩阵[sx,0;0,sy]对二维的不经过原点的图元进行缩放变换,有可能得到的结果为()

A图元相对原点的位置变化了 B图元自身尺寸变化了

C图元可以只发生旋转,相对原点位置没有移动 D图元自身发生了旋转

★考核知识点:图形变换的数学基础

(41)从物体坐标到屏幕坐标的显示流程中我们必须要经过的经典的变换流水包()

A世界坐标系内地变换 B对窗口的裁剪操作 C窗口到视口的变换 D对模型进行坐标进行变换

★考核知识点:OpenGL的视图变换

(42)函数void gluPerspective(Param1,Param2,Param3,Param4)中,标示近裁剪面的是哪个参数()

A Param1 BParam2 C Param3 D Param4 ★考核知识点:OpenGL的视图变换

(43)哪些变换分别用于设定物体在世界坐标系中的位置、方向以及模型大小。()

A平移变换B旋转变换C缩放变换D投影变换

★考核知识点:OpenGL的视图变换

(44)()变换后的的几何体位于观察坐标系中。

A局部变换B取景变换C世界变换D空间变换 ★考核知识点:OpenGL的视图变换

(45)投影变换包括哪几种投影方式。()

A平面投影B透视投影C正射投影D缩放投影

★考核知识点:OpenGL的视图变换

(46)下对函数gluLookAt(0,0,0, 0,0,-3,1,0,0)描述正确的是

A观察点在原点(AD)B正方向为z轴负方向 C观察方向指向z轴正方向 D正方向为x轴正方向

★考核知识点:OpenGL的视图变换

(47)glRotatef(fRot,1,1,0)描述先按照X轴旋转fRot,接着绕Y轴旋转fRot()

★考核知识点:OpenGL的视图变换

(48)在OpenGL中如果要实现运动模糊效果,需要借助以下哪个缓冲区()

A深度缓冲区B帧缓冲区C模版缓冲区D积累缓冲区

★考核知识点:帧缓冲区

(49)当前程序的状态处于常规的绘图模式,那么接下来使用下列哪些函数可以退出当前绘图模式()

A glRender(GL_FEEDBACK);B glRender(GL_SELECT);C glEnd();D glBegin(GL_TRIANGLES)★考核知识点:帧缓冲区

(50)雾化效果在颜色索引模式下是不可用的()

★考核知识点:帧缓冲区

(51)如果我们需要使用OpenGL进行3维点选操作,那么可以通过函数glRenderMode()指定()进入选择模式

A GL_FEEDBACK BGL_SELECT C GL_PEEK D GL_MODEVIEW ★考核知识点:帧缓冲区

(52)OpenGL中如果锁住了深度缓冲区,那么所有的物体的深度就无法测试了,物体只是根据绘制的先后相互覆盖了()

★考核知识点:帧缓冲区

(53)绘制球体,我们使用函数:

void gluSphere(GLUquadricObj *obj,Gldoubleradius,Glintslices,Glint stacks);()

下面,我们对参数描述正确的选项有()A slice代表的就是经线的数目 B stacks参数代表的就是纬线的数目 C slice参数代表的就是纬线的数目 D stacks代表的就是经线的数目

★考核知识点:分割化和二次方程表面

(54)OpenGL中我们需要完成对NURBS对象的销毁,调用的函数是gluDeleteNurbsRenderer()

★考核知识点:分割化和二次方程表面

(55)常见的纹理寻址模式有()A重叠纹理寻址模式B镜像纹理寻址模式 C钳位纹理寻址模式D边界颜色纹理寻址模式

★考核知识点:分割化和二次方程表面

(56)gluQuadricDrawStyle 函数选择用于绘制几何形状的图元类型。系统默认的类型是使用三角条状图元来填充所要绘制的几何形状,填充模式默认为 A GLU_LINE B GL_FILL C GLU_SILHOUETTE D GLU_POINT ★考核知识点:分割化和二次方程表面

(57)绘制球体,我们使用函数:

void gluSphere(GLUquadricObj *obj,Gldoubleradius,Glintslices,Glint stacks);下面,我们对参数描述正确的选项有()

A slice代表的就是经线的数目 B stacks参数代表的就是纬线的数目 C slice参数代表的就是纬线的数目 D stacks代表的就是经线的数目

★考核知识点:求值器和NURBS(58)我们的B样条曲线(三次)和与贝塞尔曲线很相似,不同之处是此曲线会分解成很多的小段。每个给定段的形状都仅受到最近4个控制点的影响()

★考核知识点:求值器和NURBS(59)我们的B样条曲线(三次)和与贝塞尔曲线很相似,不同之处是此曲线会分解成很多的小段。每个给定段的形状都仅受到最近4个控制点的影响()

★考核知识点:求值器和NURBS(60)()是Direct3D用来存储绘制到屏幕上的每个像素点深度信息的一块内存缓冲区

A 广度缓存 B 深度缓存 C 深度测试 D 广度测试

★考核知识点:求值器和NURBS(61)OpenGL中我们需要完成对NURBS对象的销毁,调用的函数是gluDeleteNurbsRenderer()

★考核知识点:求值器和NURBS(62)纹理阶段混合状态用于指定当前纹理颜色值和Alpha值的混合方法()

★考核知识点:求值器和NURBS(63)通常情况下,深度缓存用于判断三维空间中物体的遮挡情况()

★考核知识点:求值器和NURBS(64)设置深度缓存是指设置深度测试成功时对深度缓存如何操作()

★考核知识点:求值器和NURBS(65)图形学中称由于采样频率不足而造成的失真为走样,反走样通过多重采样改善图形锯齿效果()

★考核知识点:求值器和NURBS(66)渲染后物体模型通常是由三角形图元组成的,我们称它为一个Mesh结构()

★考核知识点:求值器和NURBS(67)若要从缓存中只读不写数据,就不需要锁定缓存,用完后解锁()(68)如果我们需要使用OpenGL进行3维点选操作,那么可以通过函数glRenderMode()指定GL_SELECT,进入选择模式()

(69)在执行用于操纵名字堆栈的函数或调用glRenderMode()函数之后,如果出现了一次点击,OpenGL就会在选择数组中写入一个点击记录,所以,如果共享相同的名称对象,不会产生多条点击记录。()(70)在点击发生时,名字堆栈的内容从()的元素开始。A最顶部B上一个操作的位置C最底部D任意

(71)如果我们需要使用OpenGL进行3维点选操作,那么可以通过函数glRenderMode()指定GL_SELECT,进入选择模式()

(72)进行点选操作后,假设当前的选择缓冲区为pSelectBuff,那么其中的pSelectBuff[0]的值得含义是()

A自上一个点击记录之后,与视景体相交的图元的所有顶点的最小窗口坐标的z值 B自上一个点击记录之后,与视景体相交的图元的所有顶点的最大窗口坐标的z值 C点击发生时名字堆栈的内容 D名字堆栈中压入的名字数

(73)OpenGL中如果锁住了深度缓冲区,那么所有的物体的深度就无法测试了,物体只是根据绘制的先后相互覆盖了()

★考核知识点:选择和反馈

(74)名字堆栈形成了返回选择信息的基础,如果此时我们需要使用某个名称来替换名字堆栈顶部的元素,可以使用函数为()

A void glInitNames(void);B void glPushName(GLuint name);C void glPopName(void);D void glLoadName(Gluint name);★考核知识点:选择和反馈

(75)选择返回功能函数:

void glSelectBuffer(Glsizeisize,Gluint *buffer)对函数描述正确的是()A buffer参数指向的数组用于存放选择数据

B buffer参数指向的数组仅仅用于存放选择的物体ID C size表示这个数组可以存储单个数据的大小 D size表示这个数组可以存储的最大值

★考核知识点:选择和反馈

(76)用glSelectBuffer()函数指定用于返回点击记录的数组()

★考核知识点:选择和反馈

(77)使用函数 void gluPickMatrix(Gldoublex,Gldoubley,Gldoublewidth,Gldoubleheight,Glint viewport[4]);选择的挑选区域的中心是()A 世界坐标B窗口坐标C物体坐标D可以任意指定

★考核知识点:选择和反馈

(78)由于粒子之间的碰撞计算量很大并且对于大多数模拟来说没有必要,所以我们很少使用粒子之间的碰撞。()

★考核知识点:粒子系统

(79)粒子(Particle)是一种微小的物体,在数学上通常用点来表示其模型,所以显示和表示粒子时,我们通常使用点结构来描述。()

★考核知识点:粒子系统

(80)以下可以通过常见的粒子系统实现的是()A雪花B下雨C喷泉喷水D金属车漆效果

★考核知识点:粒子系统

(81)如果有两束光进入人眼,他们的成分为(R1,G1,B1)和(R2,G2,B2)那么叠加在一起的时候,如果蓝色分量超出1了,那么最后的叠加结果为()

A(R1, R2,1)B(R1+R2, R1+R2,1-R1-R2)C(R1+R2, R1+R2,1)D(R1, R2, 1-R1-R2)★考核知识点:混合效果

(82)Alpha分量主要是用来指定像素的混合计算比例的()

★考核知识点:混合效果

(83)D3DCOLORVALUE结构体中包含r、g、b和a4个分量,表示物体表面对各种反射光的各种成分的反射比率。r=0.0 g=b=a=1.0;r=g=0.0。此时红光和蓝光照射过来,只有蓝光被反射,即材质看上去为蓝色()

★考核知识点:混合效果

(84)OpenGL的光照模型根据材料反射的红、绿和蓝光的比例来模拟它的颜色。当一个纯红的球体,如果给球体仅仅投上绿色的光线,那么看起来球的颜色会是()A红色B绿色C白色D黑色

★考核知识点:混合效果

(85)平面着色模式,所有像素的Alpha值都大于等于该多边形的第一个顶点的Alpha值()

★考核知识点:混合效果

(86)像素的Alpha值就是用来做纹理Alpha混合时进行加权计算的的权值()

★考核知识点:混合效果

(87)Alpha测试并不把当前像素的颜色与颜色缓冲中像素的颜色混合,像素要么完全不透明,要么完全透明()

★考核知识点:混合效果

(88)OpenGL中指定源混和因子和目标混和因子的函数:

void glBlendFunc(Glenumafactor,Glenumbfactor)描述正确的是()A其中参数afactor和参数用于指定源混合因子 B其中参数bfactor用于指定目标的混合因子 C其中参数afactor用于指定目标的混合因子 D其中参数bfactorb用于指定源的混合因子

★考核知识点:混合效果

(89)常见的纹理寻址模式有()

A重叠纹理寻址模式B镜像纹理寻址模式C钳位纹理寻址模式D边界颜色纹理寻址模式

★考核知识点:纹理的高级技巧

(90)通过矩阵[sx,0;0,sy]对二维的不经过原点的图元进行缩放变换,有可能得到的结果为 A图元相对原点的位置变化了()B图元自身尺寸变化了

C图元可以只发生旋转,相对原点位置没有移动 D图元自身发生了旋转

★考核知识点:纹理的高级技巧

(91)创建一个矩形图元255*255,它的大小恰好与纹理图中纹理的大小一样,要映射整个图元面积,分配给图元纹理坐标为().A(0.0,0.0)(1.0,0.0)(1.0,1.0)(0.0,1.0)B(0.0,0.0)(255.0,0.0)(255.0,255.0)(0.0,255.0)C(0.0,0.0)(0.0,1.0)(1.0,0.0)(1.0,1.0)D(0.0,0.0)(0.0,255.0)(255.0,0.0)(255.0,255.0)★考核知识点:纹理的高级技巧

(92)三维纹理图像可以看成是由一层一层的二维子图像矩阵构成的,在内存中,这些矩形按顺序排列在一起。()

★考核知识点:纹理的高级技巧(93)对函数void glTexImage3D(Glenum target, Glint level,GlintinternalFormat ,Glsizeiwidth,Glsizeiheight,Glsizeidepth,Glintborder,Glenumformat,Glenum type, constGlvoid * texels);参数描述正确的是()A level是纹理目标在内存中的优先级 Blevel是mipmap细节层的序号 C level描述了纹理的强度程度 D描述了纹理的有效值取值范围

★考核知识点:纹理的高级技巧

(94)glCopyPixels()函数,但是并不把像素读到缓冲区,而是放在纹理内存中()

★考核知识点:纹理的高级技巧

(95)对OpenGL实现的Mipmap描述正确的是()

A它必须根据被贴图的物体的大小手动的确定应该使用哪个纹理 B它会根据被贴图的物体的大小自动确定应该使用哪个纹理 C Mipmap不需要一些额外的计算

D Mipmap并不需要额外的一些纹理存储区域

★考核知识点:纹理的高级技巧

(96)glPixelStore*()函数可以用于设置像素存储模式,使用诸如*ROW_LENGTH、*ALIGNMENT、*SKIP_PIXELS和*SKIP_ROWS这样的参数。这个函数用于控制对一个完整的像素或纹理单元矩形的一个子矩形的引用()

★考核知识点:纹理的高级技巧

(97)一个带有纹理图像的物体迅速的远离观察点而去时,纹理图像必须随必须被投影的图像一起缩小。为了避免闪烁抖动等人工痕迹,可以指定一系列预先过滤的分辨率递减的纹理图像称为()

A Vertex Shader B mipmap C HLSL D Cg ★考核知识点:纹理的高级技巧

(98)void glTexParameteri 第三个参数类型为GL_CLAMP描述正确的是

A将大于1.0的数值设置为1.0,将超出[0.0,1.0]范围的数值截取到[0.0,1.0]范围内 B这样会导致纹理边缘的重复 C将小于0.0的数值设置为0.0 D图象在物体表面上不断重复,但是每次重复的时候对图象进行镜像或者反转(99)纹理坐标比一定非要在RGBA模式下才可以能使用()

★考核知识点:纹理的高级技巧

(100)void glTexParameteri 第三个参数类型为GL_REPEAT描述正确的是A A图象在表面上重复出现

B自动将超出[0.0,1.0]范围的数值截取到[0.0,1.0]范围内

C图象在物体表面上不断重复,但是每次重复的时候对图象进行镜像或者反转 D这样的模式在纹理边缘处比较连贯

★考核知识点:纹理的高级技巧

(101)对函数glTexParameteri边界截取类型描述正确的是()

A GL_CLAMP_TO_EDGE B CLAMP_TO_BORDER_ARB C GL_REPEAT D GL_CLAMP ★考核知识点:纹理的高级技巧

二、主观部分:(程序设计,简答题)

1关于现实字体的一段程序如下,运行截图如下,现有若干空缺,请完成填空。

我们完成创建字体的功能函数CreateFont()如下:

HFONT hFont;HFONT hOldFont;iBase=glGenLists(256);hFont=CreateFont(-24, 0, 0, 0,//高度 //宽度 //旋转角度 //定位角 //字宽设置 FW_BOLD, FALSE, FALSE, FALSE, ANSI_CHARSET, OUT_TT_PRECIS,CLIP_DEFAULT_PRECIS, ANTIALIASED_QUALITY, FF_DONTCARE|DEFAULT_PITCH, “Courier New”);

//使用字体名称为Courier New //保存之前的字体

hOldFont=(HFONT)SelectObject(hdc,hFont);//从系统下载的字体文件中生成这些位图

wglUseFontOutlines(hdc,32,96,iBase,0.0,0.2f,WGL_FONT_POLYGONS,gmf);//还原设备句柄为hdc,还原原来的字体类型 SelectObject(hdc,hOldFont);//释放资源

DeleteObject(hFont);2.关于二次曲面的一段程序如下,运行截图如下,现有若干空缺,请完成填空。

我们生成二次曲面的功能函数如下: //二次曲面的生成状态 GLUquadric *Quadric;//创建一个二次方程对象,指定这个二次方程对象的属性 Quadric = gluNewQuadric();//自动为二次表面生成纹理坐标 gluQuadricTexture(Quadric,GL_TRUE);//显示灯的列表 iLamp = glGenLists(1);glNewList(iLamp,GL_COMPILE);//激活纹理0地板的纹理

glBindTexture(GL_TEXTURE_2D,texture[2]);//绑定纹理

glBindTexture(GL_TEXTURE_2D,texture[2]);

2.如下一段程序,运行完成加载纹理的功能,现在有若干空缺,请根据上下文完成填写。

程序截图1 LoadTexture(){);

glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR_MIPMAP_LINEAR

glPixelStorei(GL_UNPACK_ALIGNMENT,4);//绑定纹理

glBindTexture(GL_TEXTURE_2D,m_nBodyTex);

glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);//BMP文件的handle HBITMAP hBMP;//存储BMP的数据结构 BITMAP BMP;byte Texture[1]={IDB_MISSILE};//产生三个纹理

glGenTextures(1,&m_nBodyTex);hBMP=(HBITMAP)LoadImage(GetModuleHandle(NULL),MAKEINTRESOURCE(Texture[0]),IMAGE_BITMAP,0, 0, LR_CREATEDIBSECTION);

if(hBMP){ GetObject(hBMP,sizeof(BMP),&BMP);

//构建二维Mipmap gluBuild2DMipmaps(GL_TEXTURE_2D,3,BMP.bmWidth,BMP.bmHeight,GL_BGR_EXT, GL_UNSIGNED_BYTE, BMP.bmBits);//删除位图资源

}

3.如下一段程序,运行完成物体颜色和材质属性相关功能,现在有若干空缺,请根据上下文完成填写。DeleteObject(hBMP);

}//if

程序截图1 在进行光照和材质相关的计算时,需要先进行必要设置操作,我们需要进行如下操作:

{ glClearColor(1.0,1.0,1.0,1.0);voidInitScene()

//设置明暗处理模型 glShadeModel(GL_SMOOTH);//glShadeModel(GL_FLAT);//开启深度测试

glEnable(GL_DEPTH_TEST);glDepthFunc(GL_LEQUAL);glClearColor(0.0f,0.0f,0.0f,0.0f);glClearDepth(1.0f);//使光源生效

glEnable(GL_LIGHTING);//设置环境光

GLfloatambientLignt[]={0.8,0.7,0.9,1.0};glLightModelfv(GL_LIGHT_MODEL_AMBIENT,ambientLignt);//设置材料属性,自身的反光属性 GLfloatShininess[]={80.0};//镜面强度,白色

GLfloatSpecular[]={1.0,1.0,1.0,1.0};//设置材质颜色属性

GLfloatMatColor[]={0.9,0.9,0.9,1.0};//光源位置

GLfloatPostion[]={1.0,1.0,1.0,0};//具体设置GL_FRONT_AND_BACK

//GL_FLAT

glMaterialfv(GL_FRONT,GL_SPECULAR,Specular);glMaterialfv(GL_FRONT,GL_SHININESS,Shininess);//设置光照模型

glLightfv(GL_LIGHT0,GL_POSITION,Postion);//给光源设置位置*/ glLightfv(GL_LIGHT0,GL_SPECULAR,MatColor);//给镜面光设置颜色 glLightfv(GL_LIGHT0,GL_DIFFUSE,MatColor);//设置漫反射颜色 //开启光照特征 glEnable(GL_LIGHT0);

}//endfnc 4.如下一段程序,运行完成雾化功能,现在有若干空缺,请根据上下文完成填写。

程序截图1 { //Get FPS void DrawScene()if(GetTickCount()-g_dwLastFPS >= 1000)

glClear(GL_COLOR_BUFFER_BIT);glLoadIdentity();//设置位图

glPixelTransferf(GL_RED_SCALE, 1.0);{

g_dwLastFPS = GetTickCount();

char szTitle[256]={0};

sprintf(szTitle, “ Current %d FPS”, g_nFrames);SetWindowText(hwnd, szTitle);g_nFrames = 0;

}//if g_nFrames++;*/ glPixelTransferf(GL_GREEN_SCALE, 0.0);glPixelTransferf(GL_BLUE_SCALE, 0.0);glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);glEnable(GL_BLEND);glFlush();}//endfnc //初始化操作

五、简答题(共15 分)

关于构建一个立体曲面的程序有如下截图,程序有部分功能空缺,请完成

//渲染场景 void DrawScene(){ //调用显示列表进行渲染

glCallList(drawlist);if(showCPoints){

//禁止纹理

glDisable(GL_TEXTURE_2D);

glColor3f(1.0f,0.0f,0.0f);

for(i=0;i<4;i++){

//绘制控制点

glBegin(GL_LINE_STRIP);for(j=0;j<4;j++){ glVertex3d(pCtrData[i][j].x, pCtrData[i][j].y, pCtrData[i][j].z);

}//for glEnd();}//for for(i=0;i<4;i++){

glBegin(GL_LINE_STRIP);for(j=0;j<4;j++)//绘制点

glVertex3d(pCtrData[j][i].x, pCtrData[j][i].y,pCtrData[j][i].z);glEnd();}//for glColor3f(1.0f,1.0f,1.0f);//启用纹理

glEnable(GL_TEXTURE_2D);

}//if glFlush();

}//endfnc

2.关于现实Bezier曲线的一段程序如下,运行截图如下,关于功能现有部分空缺,请完成。

intInitScene(){

glShadeModel(GL_SMOOTH);

glClearColor(1.0f, 1.0f, 1.0f, 0.5f);//设置清空颜色为白色 glClearDepth(1.0f);

//初始化深度缓存最大为 1.0f //开启深度测试 glEnable(GL_DEPTH_TEST);glDepthFunc(GL_LEQUAL);glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);//开启求值器

glEnable(GL_MAP1_VERTEX_3);//设置控制点的类型,起始位置从0-100,控制点数目为4,跨度为3 //点的存储数组为B_Points[4][3]

} glMap1f(GL_MAP1_VERTEX_3,0.0f, 100.0f, 3,//起始 //终止范围

//点数目 iNumPoint,&B_Points[0][0]);//均匀分布网格,有100个单位,从u1到u2 glMapGrid1d(100,0.0,100);return TRUE;

boolDrawScene(){

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);glLoadIdentity();glTranslatef(0,0,-20.0f);inti;//设置点的尺寸大小为 10 glPointSize(10);//设置控制点为红色 glColor3f(1.0,0.0,0.0);glBegin(GL_POINTS);

for(i=0;i

{ glVertex2fv(B_Points[i]);}//for glEnd();return true;

}//DrawScene 3.关于实现光照效果对比的程序。左图为加光照,右边为未加光照。部分功能空缺,请完成

void DrawScene(){ GLfloat spotPostion[]={0.0,0.0,1.0,1.0};

//清空缓冲区

glClear(GL_COLOR_BUFFER_BIT |GL_DEPTH_BUFFER_BIT);glLoadIdentity();

glPushMatrix();glColor3f(1.0,0.0,0.0);glRotatef(fRot, 1.0f, 0.0f, 0.0f);//使用灯光

glLightfv(GL_LIGHT2,GL_POSITION,spotPostion);glLightfv(GL_LIGHT2,GL_SPOT_DIRECTION,spotDir);glTranslatef(spotPostion[0],spotPostion[1],spotPostion[2]);glutSolidCone(0.05f,3.0f,15,15);glPopMatrix();glTranslatef(0,0,-6.0);//glRotatef(fRot,1,0,0);//绕y轴旋转60° glRotatef(60,0,1,0);//属性堆栈压栈

// glPushAttrib(GL_LIGHTING_BIT);// glDisable(GL_LIGHTING);

glColor3f(1.0f,1.0f,1.0f);glBegin(GL_TRIANGLES);//计算法线一

calNormal(vTrangle1,vector);glNormal3fv(vector);

glVertex3fv(vTrangle1[0]);glVertex3fv(vTrangle1[1]);glVertex3fv(vTrangle1[2]);glFlush();}//endfnc

第二篇:3D游戏软件设计

《3D游戏软件设计》

一、单选题(共 20 道试题,共 40 分。)

1.现有三组逆时针环绕的轮廓线,依次包含。现在,如果把区域的环绕属性设置为奇数类型,那么最终绘制出的区域描述正确的是 A.一个环形 B.实体块

C.一个环形加一个实体块 D.无法确定具体填充区域 满分:2 分

2.在进行点选操作时,我们使用一个名称标识了三个重叠的圆形。现在对它进行一次点击,那么它产生的点击记录为多少次 A.3 B.1 C.2 D.0 满分:2 分

3.在利用矩阵进行图形三维变换时,我们只用3×3矩阵无法完成的变换操作是

A.平移 B.旋转 C.错切

D.以上说法都不对 满分:2 分

4.在复合变换中,固定坐标模式的变换,对于坐标变换操作的调用和执行顺序描述中,正确的是

A.相对于同一个固定坐标系先调用的变换先执行 B.相对于同一个固定坐标系先调用的变换后执行

C.相对于同一个固定坐标系调用和执行的顺序没有必然联系 D.以上说法都不对 满分:2 分

5.函数glAlpaFunc用于设置alpha测试的参考值和比较函数的参数中,哪个参数的意义表示“绝不接受这个片段” A.GL_NERVER B.GL_ALWAYS C.GL_LESS D.GL_EQUAL 满分:2 分

6.函数void glBlendEquation(Glenum mode)函数中的mode对取值为GL_FUNC_SUBSTRACT描述正确的是 A.CsS+CdD B.CsS-CdD C.CdD-CsS D.CsopCd 满分:2 分

7.我们在绘制完物体后,如果锁定了深度缓冲区,接着再调换物体的z方向的次序,此时关于遮挡关系以下说法中正确的是 A.AB物体重叠部分会发生混合

B.遮挡关系发生改变,AB物体遮挡关系互调 C.遮挡关系不变 D.无法判断 满分:2 分

8.glPixelMap{ui us f}v(Glenum map,Glint mapsize,const TYPE* values)函数被加载,它的函数参数参数mapsize的取值有意义的是 A.10 B.20 C.32 D.42

满分:2 分

9.一束白光照射一个有光泽的蓝色球体,那么这个球体的整体看上去是蓝色的,它上面的亮点则是什么颜色的 A.红色 B.绿色 C.白色 D.蓝色 满分:2 分

10.白色的颜色值为

A.(0,0,0)B.(255,0,255)C.(255,255,255)D.(1,1,1)满分:2 分

11.现在有控制点为四个,每个顶点有三个坐标,现在我们想利用函数gluNurbsSurface进行NURBS表面设置,那么u_stride的值应该设置为 A.3 B.4 C.12 D.48 满分:2 分

12.进行点选操作后,假设当前的选择缓冲区为pSelectBuff,那么其中的pSelectBuff[0]的值得含义是

A.名字堆栈中压入的名字数

B.自上一个点击记录之后,与视景体相交的图元的所有顶点的最小窗口坐标的z值 C.自上一个点击记录之后,与视景体相交的图元的所有顶点的最大窗口坐标的z值 D.点击发生时名字堆栈的内容 满分:2 分 13.下列哪个不属于计算机上支持的像素位数

A.4位 B.24位 C.20位 D.32位 满分:2 分

14.OpenGL中如何判断一个点接收了光源的多少光线

A.通过距离光源的距离进行计算 B.通过法线相对光源的方向进行计算 C.通过物体的颜色值进行计算

D.通过物体和光源的颜色值的综合考虑进行计算 满分:2 分

15.OpenGL提供的投影矩阵堆栈个数为

A.1 B.2 C.4 D.8 满分:2 分

16.利用3×3矩阵进行二维点集变化时,我们使用的矩阵为[1,0,0;0,-1,0;0,0,1],那么变化后的效果为

A.沿着X轴对称变换 B.沿着Y轴对称变换 C.沿着原点对称变换 D.沿着直线y=x对称变换 满分:2 分

17.下列哪个颜色不属于三原色

A.红

B.蓝 C.绿 D.黑 满分:2 分

18.如果有两束光进入人眼,他们的成分为(R1,G1,B1)和(R2,G2,B2)那么叠加在一起的时候,如果红色分量超出1了,那么最后的叠加结果为 A.R1+R2 B.1-R1-R2 C.1 D.R1+R2-1 满分:2 分

19.通常,我们的运动模糊效果,可以利用哪个缓冲区实现

A.颜色缓冲区 B.深度缓冲区 C.模板缓冲区 D.积累缓冲区 满分:2 分

20.OpenGL中复杂的图形绘制一般都是如何实现的

A.用曲线模拟 B.用四边形拼接 C.用三角形拼接

D.只要是凸多边形拼接就可以 满分:2 分

二、多选题(共 10 道试题,共 20 分。)

V

1.下列哪些是OpenGL的常用库

A.GL B.GLU

C.GLAUX D.GLUT 满分:2 分

2.在多边形偏移中,可以有哪几种模式用于不同的多边形光栅化

A.GL_FILL B.GL_LINE C.GL_POINT D.GL_TRANGLES 满分:2 分

3.对计算机图形进行显示的方法中可以起到抗锯齿作用的有哪些方法

A.提高屏幕分辨率 B.采用区域覆盖法 C.加权覆盖法 D.抖动技术 满分:2 分

4.OpenGL允许把与颜色相关的哪三个不同参数和光源相关联

A.GL_AMBIENT B.GL_DIFFUSE C.GL_SPECULAR D.GL_AMBIENT 满分:2 分

5.OpenGL包含有哪几个缓冲区

A.颜色缓冲区 B.深度缓冲区 C.模板缓冲区 D.积累缓冲区

满分:2 分

6.实现物体坐标到达屏幕坐标的处理管线中,包括的处理步骤有

A.视图模型矩阵操作 B.投影操作

C.透视除法进行规范化 D.视口变换 满分:2 分

7.在局部光源模型中,随着光源的距离增加,光的强度不会随之衰减的有

A.环境光 B.散射光 C.镜面光 D.发射光 满分:2 分

8.以下是正交投影glOrtho函数作用特点的是

A.视体是一个椎体 B.物体近大远小 C.视体为立方体

D.物体的距离并不影响它看上去的大小 满分:2 分

9.以下是描述glBindTexture函数功能的是

A.将生成的纹理的名称绑定到指定的纹理上 B.创建纹理并加载

C.选择已经加载的纹理进行贴纹理操作 D.以上都对 满分:2 分

10.一下那些属于OpenGL的特点

A.标准支持灵活

B.具有良好伸缩性 C.具有良好扩展性 D.扩展性不强 E.满分:2 分

三、判断题(共 20 道试题,共 40 分。)

V

1.设置光源位置时,当我们的光源坐标位置(x,y,z,w)中的w为0时代表我们的光为局部光源 A.错误 B.正确 满分:2 分

2.glNormal*函数是glBegin和glEnd之间的合法函数

A.错误 B.正确 满分:2 分

3.无论是在反馈模式下还是选择模式下,物体的信息总是在任何片断测试之前返回

A.错误 B.正确 满分:2 分

4.函数glLoadName用于将当前的名字替换名字堆栈顶部的元素

A.错误 B.正确 满分:2 分

5.函数glPerspective(GLdouble fogy,GLdouble aspect, GLdouble near,GLdouble far)所定义的视体仅限于和X和Y轴对称的平截头体 A.错误 B.正确 满分:2 分

6.视图变换和模型变换可以互逆变换

A.错误 B.正确 满分:2 分

7.位图字体无法进行旋转

A.错误 B.正确 满分:2 分

8.过滤函数中的参数GL_LINER它会对一小块区域的纹理单元值进行加权平均,用于放大或者缩小 A.错误 B.正确 满分:2 分

9.对物体进行平移变换和缩放变换的顺序不会对最后结果产生影响

A.错误 B.正确 满分:2 分

10.OpenGL至少可以在场景中包含1个光源

A.错误 B.正确 满分:2 分

11.已知两个向量,可以通过运算V1^.V^2获得它们所在平面的法线

A.错误 B.正确 满分:2 分

12.glEnable(GL_DEPTH_TEST)函数的作用是开启深度测试

A.错误 B.正确 满分:2 分

13.为了使用mipmap,必须提供全系列的大小为2的整数次方的纹理图像,其范围从2*2到纹理的最大单元

A.错误 B.正确 满分:2 分

14.纹理坐标必须在RGBA模式下才能使用

A.错误 B.正确 满分:2 分

15.函数glDepthMask的flag参数设置为GL_TRUE,则标志着深度缓冲区可以写入

A.错误 B.正确 满分:2 分

16.对于基本的求值器使用绘制步骤为先开启求值器,设置控制点,设置绘制属性和模式,最后进行渲染 A.错误 B.正确 满分:2 分

17.位图是由0和1组成的矩形数组

A.错误 B.正确 满分:2 分

18.镜面亮点的颜色就是光源的镜面光的颜色

A.错误 B.正确 满分:2 分

19.颜色混合操作在颜色索引模式下是非法的

A.错误 B.正确 满分:2 分

20.glRotatef(fRot,0.0f,1.0f,0.0f)函数可以让图形绕着X轴偏转fRot角度

A.错误

B.正确 满分:2 分

第三篇:软件设计报告

软件设计报告

姓名: 方轶琦

学号:10005808

2013年6月18日~2013年6月28日

第一章 软件设计介绍.........................................................1 第三章 软件设计的内容.......................................................4 3.1 分数统计软件(A1)...................................................4 3.1.1设计题目及要求.....................................................4 3.1.2设计思想及程序流程框图.............................................4 3.1.3逻辑功能程序.......................................................5 3.1.4结果及完善方向.....................................................5 3.2 打字软件(A2).......................................................9 3.2.1设计题目及要求.....................................................9 3.2.2设计思想及程序流程框图.............................................9 3.2.3逻辑功能程序......................................................10 3.2.4结果及完善方向....................................................10 3.3 文本编辑器(A3)....................................................13 3.3.1设计题目及要求....................................................13 3.3.2设计思想及程序流程框图............................................14 3.3.3逻辑功能程序......................................................14 3.3.4结果及完善方向....................................................17 3.4 加密软件(A4)......................................................19 3.4.1设计题目及要求....................................................19 3.4.2设计思想及程序流程框图............................................19 3.4.3逻辑功能程序......................................................19 3.4.4结果及完善方向....................................................19 3.5 进制转换器(A5)....................................................23 3.5.1设计题目及要求....................................................23 3.5.2设计思想及程序流程框图............................................23 3.5.3逻辑功能程序......................................................24 3.5.4结果及完善方向....................................................29 3.6 学生成绩核算系统的设计与实现(B1)..................错误!未定义书签。3.6.1设计题目及要求....................................................30 3.6.2设计思想及程序流程框图............................................30 3.6.3逻辑功能程序......................................................32 3.6.4结果及完善方向....................................................32 3.7 模拟电信计费系统的设计与实现(B2)..................................39 3.7.1设计题目及要求....................................................39 3.7.2设计思想及程序流程框图............................................40 3.7.3逻辑功能程序......................................错误!未定义书签。3.7.4结果及完善方向....................................................41 第四章 心得体会............................................................49

软件设计报告 10005808 方轶琦

软件设计介绍

一. 软件的设计概念

软件设计是把许多事物和问题抽象起来,并且抽象它们不同的层次和角度。建议用数学语言来抽象事务和问题,因为数学是最好的抽象语言,并且它的本质就是抽象。将复杂的问题分解成可以管理的片断会更容易。将问题或事物分解并模块化这使得解决问题变得容易,分解的越细模块数量也就越多,它的副作用就是使得设计者考虑更多的模块之间耦合度的情况。

二.软件设计的性质、目的:

本课程是一门技能训练课,为在校学生的必修课程。通过设计培养学生良好的编程习惯,使学生掌握编程的基本步骤,规范学生的编写程序的格式,锻炼学生编写程序的能力,为将来编写较大程序的打好基础。

三.软件设计总时间:二周

四.实验设备:南京邮电大学微机室微机。五.软件设计的任务

通过集中时间上机实验,使学生充分发挥已有的编程能力,熟悉编译环境,选择若干课题,进行审题、分析、设计和调试,并根据要求写出实验报告。

六.实验内容

软件设计课题共分A、B两档。A档共5题,第一周完成;B档共2题,第二周完成。

软件设计报告 10005808 方轶琦

第二章

软件开发平台简介

Visual Studio 2008 简介

Microsoft® Visual Studio® 2008 使开发人员能够快速创建高质量、用户体验丰富而又紧密联系的应用程序,充分展示了 Microsoft 开发智能客户端应用程序的构想。借助 Visual Studio 2008,采集和分析信息将变得更为简单便捷,业务决策也会因此变得更为有效。任何规模的组织都可以使用 Visual Studio 2008 快速创建能够利用 Windows Vista™ 和 2007 Visual Studio system 的更安全、更易于管理并且更可靠的应用程序。

Visual Studio 2008 提供了高级开发工具、调试功能、数据库功能和创新功能,帮助在各种平台上快速创建当前最先进的应用程序。

Visual Studio 2008 包括各种增强功能,例如可视化设计器(使用.NET Framework 3.5 加速开发)、对 Web 开发工具的大量改进,以及能够加速开发和处理所有类型数据的语言增强功能。Visual Studio 2008 为开发人员提供了所有相关的工具和框架支持,帮助创建引人注目的、令人印象深刻并支持 AJAX 的 Web 应用程序。开发人员能够利用这些丰富的客户端和服务器端框架轻松构建以客户为中心的 Web 应用程序,这些应用程序可以集成任何后端数据提供程序、在任何当前浏览器内运行并完全访问 ASP.NET 应用程序服务和 Microsoft平台。

Visual Studio 2008 具备如下优势:

快速开发新突破

从建模到编码,再到调试,Visual Studio 2008 提供了增强的编程语言、设计器、编辑器以及和数据相关的新功能,可以帮助您体验到生产力的突破。

创建杰出的用户体验

Visual Studio 2008为开发人员提供了新的工具,通过使用最新的平台,如Web, Windows Vista、2007 Microsoft Office System、Microsoft SQL Server 2008、Windows Mobile®以及Windows Server®2008,开发人员可以快速创建个性化很强的用户体验以及互联的应用程序。

跨越开发周期的协作

Visual Studio 2008 可以让开发人员、设计人员、测试人员、架构师以及项目经理通过共享工具以及过程整合的方式,实现协同工作,从而减少了解决方案所花费的时间。

采用统一整合的方式处理数据

Visual Studio 2008 可以显著的改进开发人员处理数据的方法。传统方式中,开发人员不得不根据数据的存储位置以及用户的连接方法,对数据进行不同的操作。通过语言集成查询(Language-Integrated Query, LINQ), 开发人员可以使用单独的模型来查询并转换XML, Microsoft SQL Server™和对象数据,而不需要学习或使用特定的编程语言,这样就降低了复杂度并提高了生产力。

体验全新的Web开发工具

Visual Studio 2008为公司或开发团队提供了一个健壮的、端到端的平台来构建应用程序并通过Web 方式提供应用程序。通过Visual Studio 2008, 开发人员可以很容易的将最新的Windows Presentation Foundation(WPF)功能整合到现

有的Windows Forms 应用程序以及新的应用程序中,并在Windows平台上创建高保真的用户体验。通过额外的ASP.NET AJAX 1.0和Microsoft

软件设计报告 10005808 方轶琦

IntelliSense®以及对调试JavaScript 8.0的支持,构建AJAX 应用程序将会更加快捷。增强的Web 设计器带有分离视图编辑功能,可以让开发人员同时看到HTML 页面以及结果页面,从而提升了Web 开发的体验。

将数据库功能整合到应用程序生命周期的管理中

Visual Studio 2008为不同的团队成员提供了一系列针对架构、设计、程序开发、数据库开发以及应用程序测试的相关工具。Microsoft Visual Studio Team System 2008 Database Edition 目前已经全部整合到了Microsoft Visual Studio Team System 2008 Team Suite 中。

构建运行在多个版本的.NET Framework 之上的应用程序

通过Visual Studio 2008, 开发人员可以使用一个工具来管理并构建针对多个版本的.NET Framework 的应用程序。Visual Studio 2008将会自动让项目以及设置适应开发人员所指定的.NET framework 版本。开发人员不再需要安装多个版本的Visual Studio 来维护运行于多个版本的.NET Framework 之上的应用程序。

为Microsoft Office 系列构建可靠的、可伸缩的应用程序

Visual Studio Tools for Office 目前已经完全整合到了Visual Studio 2008 专业版当中。Visual Studio 2008可以让开发人员自己定制Microsoft Office Word, Microsoft Office Excel ,Microsoft Office PowerPoint , Microsoft Office Outlook ,Microsoft Office Visio , Microsoft Office InfoPath , 以及Microsoft Office Project, 从而提升用户生产力并且更有效的利用了Office 2007 中的新增功能。对Microsoft Office 进行自定义,同时应用程序支持ClickOnce 部署,从而使开发人员可以采用正确的工具以及框架来实现对Microsoft Office 解决方案进行从容部署。

为Windows Vista 构建完美的应用程序

Visual Studio 2008可以让开发人员快捷的创建出同Windows Vista 外观风格一样炫的应用程序,并且可以利用Windows Vista 中所提供的8000多种新API.在开发人员和设计人员之间实现无缝协作

Microsoft已经针对设计人员发布了名为Microsoft Expression的工具。在Visual Studio 2008中,来自于Microsoft Expression Web 以及Microsoft Expression Blend™中的设计元素可以在不更改后台代码的情况下,从Visual

Studio 中进行导入导出的操作。这就意味着开发人员和设计人员可以实时的进行无缝协作,并且不用担心用户界面设计更改所引起的开发问题。

软件设计报告 10005808 方轶琦

第三章 软件设计的内容

3.1 分数统计软件(A1)

3.1.1设计题目及要求 设计题目:分数统计 要求:(1)、输入某班级学生的姓名、分数;

(2)、对(1)的分数进行降幂排列并输出;(3)、具有输入输出界面。3.1.2设计思想及程序流程框图

这道题我是用C# 的可视化环境制作了一个分数统计系统。制作的界面如图3.1-1所示:

实现的功能和设计方法:

1.在“姓名”和“分数”后面的文本框内输入学生信息,输入完毕后,按“输入”按钮,学生信息就会显示到左下方的listbox中。

2.当用户输入若干名学生信息后,按“排序”按钮,右下方的listbox中就会显示按成绩降幂排序后的学生信息。排序方法是使用冒泡排序法。

3.当用户输入学生信息出错时,用鼠标选择出错项,按下“删除选中的输入项”,即可删除输错项,继续输入学生信息。方法是用listBox.SelectedIndex找到选中的索引值,然后删除数组中该学生信息和listbox中信息就可以了。

4.当用户想重新输入学生信息,按下“重新开始”清空数组和listbox中的信息。

5.当用户要结束操作,按下“结束”,调用close()函数就可以跳出界面。主程序的流程图如图3.1-2所示。冒泡排序的流程图如图3.1-3所示。

软件设计报告 10005808 方轶琦

开始N=学生数i=0ii?N开始输入学生信息score[j-1]

图3.1-1 主流程图

图3.1-2冒泡排序流程图 3.1.3逻辑功能程序 具体程序如下:

#include #include #include struct student //存放学生信息的结构体 { char name[20];//字符型数组存放姓名

int grade;//成绩类型 } temp,std[100];int main(){ int err;char x[5];int n;int i;int m;char ch[20];

软件设计报告 10005808 方轶琦

do { system(“cls”);printf(“ nn”);printf(“

--------n”);printf(“ | 欢迎使用本系统 | n”);printf(“

--------n”);printf(“ n”);printf(“

-------------请输入学生数--------------nn”);do{ printf(“tt学生数: ”);

err=0;i=0;

scanf(“%s”,x);//输入选项

getchar();

while(x[i]!='')//依次检查输入的字符串是否为数字

{

if(x[i]>'9'||x[i]<'0')err=1;

i++;

} if(err)printf(“ntt请输入数字!n”);}while(err);

n=atoi(x);//将字符型数组x转换成整型n for(i=0;i

{ printf(“ntt请输入第%d个人的信息ntt姓名:”,i+1);scanf(“%s”,std[i].name);getchar();printf(“tt分数:”);scanf(“%d”,&std[i].grade);getchar();

}

printf(“输入信息:n”);printf(“----n”);printf(“ 姓名 成绩 nn”);for(i=0;i

printf(“ %s %dn”,std[i].name,std[i].gra

软件设计报告 10005808 方轶琦

de);} printf(“nn----n”);

printf(“n排序后信息:n”);for(m=0;m

if(std[i].grade

{

temp=std[i];

std[i]=std[i+1];

std[i+1]=temp;//成绩按降幂排序

} } printf(“n您所输入的学生名次如下:nn”);printf(“

------------n”);printf(“ 名次 姓名 成绩 nn”);for(i=0;i

第 %d 名 %s %dn”,i+1,std[i].name,std[i].grade);} printf(“nn------------n”);printf(“t您还继续吗?请按Y键继续:”);//选择是否继续

scanf(“%s”,ch);} while(ch[0]=='Y'||ch[0]=='y');//与开头组成do-while结构循环

printf(“t”);return 0;}

软件设计报告 10005808 方轶琦

图3.1—4

图3.1-3 运行结果

系统的完善:

软件设计报告 10005808 方轶琦

1.当用户在分数框输入了非数字字符,则会提示用户输出正确格式的分数。2.当用户未完整输入姓名和分数,系统会提示用户完整输入。完善方向

该系统虽然考虑了并完善了很多用户操作可能出现的错误,但仍然有不足之处。比如,本系统中的删除按钮只能在用户排序前删除用户想删除的信息。若用户排序后删除左边栏目里的学生信息,再来排序,这时排序出的结果就可能会出错。这点是需要改进的。

另外这题和数据库SQL连接起来,程序会更加简单方便。这方面还需加以学习。

3.2 打字软件(A2)

3.2.1设计题目及要求 设计题目:打字程序 要求:(1)随即产生一字符串,每次产生的字符串内容、长度都不同;

(2)根据(1)的结果,输入字符串,判断输入是否正确,输出正确率;

(3)具有输入输出界面。3.2.2设计思想及程序流程框图 设计思想:采用C#界面编程。

(1).从题目的要求可知,本系统要求随机产生字符串,字符串的内容和长度都是随机的。要产生随机数,就可以使用rand()函数。设定字符串最长为20。用rand.Next(min, max)函数就可以产生min~max之间的随机数。

(2).为使系统随机产生字母字符,首先用rand.Next(0,25)产生0~25的随机数,将随机数加上97,然后再将数字转换为相应的ASCII码的字母就可以了。

(3).正确率的计算。将系统产生的随机字符和用户输入的字符进行逐个比较统计出相同的字符个数,在与系统产生的字符总数相除便可得到得正确率。

设计的用户界面如图3.2-1所示。主流程图如图3.2-2所示

开始 产生随机字符串用户输入字符串计算正确率N结束?Y结束

图3.2-1主流程图

界面按钮功能设计思想:“开始”:按下后,首先清空界面的三个输入文本框

软件设计报告 10005808 方轶琦

textbox。然后再随机生成字符串显示在第一个文本框textbox1中。

“确定”:用户在第二个文本框textbox2中输入字符串后,按下确定按钮,首先系统会读入用户的字符串,然后与系统字符串比较,计算出正确率最后输出到正确率的文本框里。

“结束”:使用close()函数,按下后退出系统。3.2.3逻辑功能程序 具体程序如下:

#include #include #include #include #define max_len 40

//定义产生的字符串最长为40个字符

void rand_str(char *p,int length);double compare(char *p,char *s,int length);void display();

int main(){

char ch[20];int length;double flag;srand(time(NULL));char p[80]=“";char s[80]=”“;

display();

do {

char p[80]=”“;

char s[80]=”“;

printf(”nt----n“);

length=1+rand()%max_len;

rand_str(p,length);

printf(”nt----n“);

printf(”t请输入上面的字母:n“);

printf(”t“);

fflush(stdin);//减少不必要错误

scanf(”%s“,s);

flag=compare(p,s,length);

if(flag==1)

printf(”t输入完全正确!n“);

else

软件设计报告 10005808 方轶琦

printf(”t输入有误,您本次输入正确率:%0.2g%%n“,flag*100);

printf(”tn“);

getchar();

printf(”t您还继续吗?请按任意键继续或者按N键结束:“);

scanf(”%s“,ch);

}while(ch[0]!='N'&&ch[0]!='n');

printf(”t“);return 0;}

void rand_str(char *p,int length){ int i;char ch;printf(”t“);

for(i=0;i

{ int num;

do

{

num=65+rand()%(122-65+1);

}while(num>90&&num<97);

ch=num;

printf(”%c“,num);

p[i]=ch;

} }

double compare(char *p,char *s,int length){ int j;int number=0;double rate;for(j=0;j

if((p[j]-s[j])==0)

number=number+1;} rate=1.0*number/length;return rate;

软件设计报告 10005808 方轶琦

}

void display(){ printf(”t****************************************************************n“);printf(”t****************************************************************n“);printf(”t**

欢迎进入打字练习程序

**n“);printf(”t****************************************************************n“);

printf(”t****************************************************************n“);printf(”tn“);}

程3.2.4结果及完善方向

序运

行结果:

软件设计报告 10005808 方轶琦

用户按下开始按钮后,输入字符串,最后按下确定按钮的程序运行情况如图3.2-3所示。

按下开始按钮

输入字符串后按下确定按钮

图3.2-2 程序运行结果

系统的完善

最初编写的程序中存在输出正确率的BUG。就是在用户输入字符串的前半段和系统的字符串一样,而后面又多输入了其他字符,这时算出的正确率是100%,这在常理上是不正确的,发现错误后,更正了正确率的计算方法。

当用户输入的字符串长度小于或等于系统产生的字符串长度时,正确率的计算方法为:

与系统字符串相同的字母数正确率=

系统产生的字符串长度当用户输入的字符长于系统字符串长度时,正确率的计算方法为:

与系统字符串相同的字母数正确率=

用户输入的字符串长度这样就避免了之前的错误情况。完善方向

本打字系统仍然有需要完善的地方,如可增加计时系统,这样就增加了打字程序的趣味性。系统中正确率的计算方法也有待改进。

3.3 文本编辑器(A3)

3.3.1设计题目及要求 设计题目:文本编辑器 要求:(1)、编辑文本;

软件设计报告 10005808 方轶琦

(2)、保存、打开指定位置的文本文件;(3)、具有输入输出界面。3.3.2设计思想及程序流程框图

文本编辑器的界面设计,我是参考了word中提供的部分功能,用C#界面环境设计编写一个小型的文字编辑工具。

在C#界面的工具箱中,RichTextBox控件拥有非常强大的文字格式化功能。很多对文字文本的各种操作只需要调用RichTextBox控件中的函数,就可以搞定,非常的方便。

界面设计时,具有工具栏和功能图标按钮,提高了操作的便利性。文本编辑器的界面如图3.3-1所示。

文本编辑器具有三个大模块,具有以下功能: 1:文件:(新建 打开 保存 退出)

2:编辑:(撤销 恢复 全选 复制 剪切 粘贴 清除)3:帮助:(关于版权信息)模块结构如图3.3-2所示。

开始用户选择操作文件编辑帮助关于新建打开保存退出撤销恢复全选复制剪切粘贴清除 图3.3-1模块结构图

3.3.3逻辑功能程序 具体程序和注释如下:

#include #include //包含exit(1)的原型 #include #include”windows.h“

void create_file(FILE *fp,char *fname);//建立文本函数 void write_file(FILE *fp,char *fname);//编辑函数 void read_file(FILE *fp,char *fname);//读取函数

int main(){ FILE *fp;

软件设计报告 10005808 方轶琦

int count=0;char choose[100];int flag1,flag2,flag3;char F_name[20];

while(1){

printf(”****************************************************************n“);printf(”****************************文本编辑器***************************n“);printf(”****************************************************************n“);printf(”**

1、建立文本 **n“);printf(”**

2、编辑文本 **n“);printf(”**

3、读取文本 **n“);printf(”**

4、退出程序 **n“);

printf(”****************************************************************n“);

printf(”t请选择你要进行的文件操作:“);

scanf(”%s“,choose);

getchar();

switch(choose[0])

{

case '1': flag1=1;break;

case '2': flag2=1;break;

case '3': flag3=1;break;

case '4': printf(”t“);printf(”nnt*** 谢谢使用!****n“);exit(0);break;

default : printf(”t输入错误!n“);Sleep(500);system(”cls“);

}

if(flag1==1)

{

flag1=0;printf(”n***********建立文件***********n“);

create_file(fp,F_name);

软件设计报告 10005808 方轶琦

}

else if(flag2==1)

{

flag2=0;

printf(”n***********编辑文件***********n“);

write_file(fp,F_name);

}

else if(flag3==1)

{

flag3=0;

printf(”n***********读取文件***********n“);

read_file(fp,F_name);

}

}

return 0;}

void write_file(FILE *fp,char *fname){ char ch;printf(”请键入编辑的文件名(如D:ame.txt):nt“);gets(fname);if((fp=fopen(fname,”w“))==NULL){

printf(”不能打开文件!n“);

exit(0);} printf(”请输入内容(以#号键结束):n“);ch=getchar();while(ch!='#'){

fputc(ch,fp);

ch=getchar();} printf(”nn“);getchar();fclose(fp);Sleep(500);system(”cls“);} void create_file(FILE *fp,char *fname){

软件设计报告 10005808 方轶琦

printf(”请键入新建的文件名(如D:ame.txt):nt“);gets(fname);if((fp=fopen(fname,”w+“))==NULL){

printf(”不能打开文件!n“);

exit(0);} printf(”%s文件已经创建好!nn“,fname);fclose(fp);Sleep(500);system(”cls“);} void read_file(FILE *fp,char *fname){ char ch;printf(”请键入读取的文件名(如D:ame.txt):nt“);gets(fname);if((fp=fopen(fname,”r“))==NULL){

printf(”不能打开文件!n“);

exit(0);} printf(”***********文件内容***********n“);printf(”--------n“);while((ch=fgetc(fp))!=EOF)//输出文件直到文件结束符

{

putchar(ch);} printf(”n--------nn“);fclose(fp);Sleep(1000);printf(”nn“);} 3.3.4结果及完善方向

软件设计报告 10005808 方轶琦

软件设计报告 10005808 方轶琦

系统完善方向

这次设计的文本编辑器基本上能够较好的模拟出word中对文本的部分操作功能。基于RichTextBox控件的功能很多,可以在此基础上添加更多的有用的方便的功能,如改变文本背景颜色,字体格式和颜色,文本左对齐右对齐等。这样文本编辑器的功能就会更加完善。

3.4 加密软件(A4)

3.4.1设计题目及要求 设计题目:加密 要求:(1)输入任意一段明文M,以及密钥K;(2)根据以下公式将其转换为密文C。

Ci = mi

+ K ,其中i = 0,1,„„n-1 , K 为密钥;

(3)具有输入输出界面。3.4.2设计思想及程序流程框图 设计思想:用C#界面编程。

由题目可以知道,要实现加密,就要对用户输入的字符串进行操作。首先要将用户输入的字符串存入数组。将字符类型转换为相应的ASCII码,再与输入的密钥相加,最后再转换为字符型就可以得到密文。

系统共有三个功能按钮,为“生成密文”,“重新输入”和“结束”。“生成密文”是按上述的思想对用户输入的字符串进行加密。“重新输入”是清空三个textbox。“结束是”调用close()函数退出系统。

系统界面和系统流程框图如图3.4-1所示。

开始用户输入明文,密钥加密重新开始结束

图3.4-1

程序流程框图

3.4.3逻辑功能程序

#include #include #include

void dis_menu();//显示函数

软件设计报告 10005808 方轶琦

void set_menu();//输入函数

void encryption(char *m, char *c, char *key);//加密函数 void decryption(char *m, char *c, char *key);//解密函数

int main(){ while(1){

dis_menu();set_menu();} return 0;} void dis_menu(){ printf(”t******************************************************n“);printf(”t***********************加密解密程序*******************n“);printf(”t**

1、加密 **n“);printf(”t**

2、解密 **n“);printf(”t**

3、退出 **n“);printf(”t******************************************************nn“);printf(”t请选择你要进行的操作:“);} void set_menu(){ char m[100]=”“;//明文 char c[100]=”“;//密文 char key[100]=”“;//密钥

char n[100];scanf(”%s“,n);if(strlen(n)>1){ printf(”t输入错误!请重新输入:“);

set_menu();} else {

switch(*n)

{

case '1': encryption(m, c, key);break;

case '2': decryption(m, c, key);break;

case '3': printf(”t“);exit(1);break;

default: printf(”t输入错误!请重新输入:“);set_menu();break;

软件设计报告 10005808 方轶琦

} } }

void encryption(char *m, char *c, char *key){

printf(”t-----------------------n“);printf(”t------------------------加密环节----------------------n“);printf(”t-----------------------n“);printf(”t请输入需加密的明文:“);scanf(”%s“,m);printf(”t请输入密钥:“);scanf(”%s“,key);while(strlen(key)>1)//密钥长度不能大于1 {

printf(”t输入密钥有误,请重输:“);scanf(”%s“,key);} { int i,length;length=strlen(m);printf(”t你输入的明文为:“);printf(”%sn“,m);for(i=0;i

{

c[i]=m[i]+key[0]-'0';} printf(”t转换后的码文为:“);printf(”%snn“,c);} }

void decryption(char *m, char *c, char *key){ printf(”t-----------------------n“);printf(”t------------------------解密环节----------------------n“);printf(”t-----------------------n“);printf(”t请输入需解密的密文:“);scanf(”%s“,c);printf(”t请输入密钥:“);scanf(”%s“,key);while(strlen(key)>1){

软件设计报告 10005808 方轶琦

printf(”t输入密钥有误(应输入一个字符),请重输:“);scanf(”%s“,key);}

{ int i,length;length=strlen(c);printf(”t你输入的密文为:“);printf(”%sn“,c);for(i=0;i

m[i]=c[i]-(key[0]-'0');//密文反译

} printf(”t破解后的明文为:“);printf(”%snn“,m);} } 3.4.4结果及完善方向 运行结果:

用户输入明文和密钥后,按下“生成密文”后的程序运行结果如图3.4-2所示。

软件设计报告 10005808 方轶琦

图3.4-2密钥运行结果

系统完善

1.当用户明文和密钥输入的不完整,系统会提示要求用户输入完整。2.当用户输入的密钥不在要求的0~9之间,系统会提示用户。如图3.4-3所示。

完善方向

当密钥过大时,生成的密文字符有些无法输出,因此可改进加密算法,更好完善这个加密系统。

3.5 进制转换器(A5)

3.5.1设计题目及要求 设计题目:进制转换器 要求:(1)可输入二进制、八进制、十进制、十六进制数;

(2)将已输入的数转换成其余进制的数;(3)具有输入输出界面。3.5.2设计思想及程序流程框图 设计思想:

由题目可以知道,本系统要求实现二、八、十、十六进制数之间的相互转换功能。

(1)、对于数字的显示问题,可以用字符串的形式进行数字的输入输出。在软件设计报告 10005808 方轶琦

系统内部进行转换前,利用ASCII码将字符串再转换为相应的数字进行处理。

(2)、进制的转换。系统中,首先将用户输入的任意进制的数统一转换为十进制。然后再将得到的十进制数转换为其他进制最后输出。

(3).转化成十进制时可以先得到用户输入的字符串的长度,在知道输入是什么进制数的前提下就可以将不同位上的数乘以进制的相应幂次最后求和就可以十进制数;由十进制转换成任意进制时可以使用短除法,不断相除取余数直到商为零为止,得到的字符串在翻转后即使得到的任意进制数对应的字符串。

(4).转换输出时,是将该数据的所有进制转换结果进行输出。进制转换系统是采用C#界面环境编程制作的。系统界面如图3.5-1所示。

图3.5-1 进制转换系统界面

界面中用户可以打开下拉菜单选择要输入的进制,选定后,选择的进制输入文本框会变白,用户可以输入要转换的数,按下“转换”按钮后,其他进制后面的文本框就会显示转换后的数。按下“结束”按钮可以退出系统。

整个程序可分为四个模块,分别是:数据输入模块,数据转换为十进制模块,十进制转换为其他进制模块,数据输出模块。程序流程框图如图3.5-2所示。

开始用户选择要输入的进制数据读入转换为十进制十进制转换其他进制数据输出结束 图3.5-2程序流程框图

3.5.3逻辑功能程序 具体程序和注释如下:

#include ”stdio.h“ #include void bishow(int m);void main(){ char x,w;char c[10];int i=0,err=0,quitflag=0;int num=0;do{ system(”cls“);printf(”t--------n“);printf(”t 欢迎数制转换系统 n“);

软件设计报告 10005808 方轶琦

printf(”t--------n“);printf(”t n“);printf(”t--------n“);printf(”t| 1 二进制 |n“);printf(”t| 2 八进制 |n“);printf(”t| 3 十进制 |n“);printf(”t| 4 十六进制 |n“);printf(”t| 0 退出 |n“);printf(”t--------n“);printf(”nt请选择: “);do{ err=0;scanf(”%c“,&x);//输入选项

getchar();if(x>'4'||x<'0')//若输入非法,则重新输入

{ err=1;printf(”n输入错误,请重新输入n“);} }while(err);switch(x){ case '1': //输入二进制

do{

err=0;i=0;num=0;

printf(”nt请输入二进制数:“);scanf(”%s“,c);

getchar();

while(c[i]!='')//‘’字符结尾

{ if(c[i]!='1' && c[i]!='0')err=1;//若输入数字不为1或0则输入错误

i++;

}

if(err)printf(”n输入数值错误,不是二进制数!n“);} while(err);// err为1重复上面,否则继续

i=0;while(c[i]!='')//二进制转换为十进制

{

num=num*2;

if(c[i]=='1')num=num+1;

i++;}

软件设计报告 10005808 方轶琦

printf(”nt二进制数 %s 转换为其他进制:nn“,c);

printf(”t********************************************n“);

printf(”t八进制: %on“,num);//输出八进制

printf(”t十进制: %dn“,num);//输出十进制

printf(”t十六进制: %xn“,num);//输出十六进制

printf(”t********************************************n“);

printf(”是否继续?(任意键继续N键退出)“);scanf(”%c“,&w);getchar();if(w=='N'||w=='n')quitflag=1;

break;

case '2': //输入八进制

do{

err=0;i=0;num=0;

printf(”nt请输入八进制数:“);

scanf(”%s“,c);

getchar();

while(c[i]!='')

{

if(c[i]>'7' || c[i]<'0')err=1;//若输入数据不在0~7间则输入错误

i++;

}

if(err)printf(”n输入数值错误,不是八进制数!n“);

} while(err);

i=0;

while(c[i]!='')

{

num=num*8;

num=num+c[i]-48;

i++;

}

printf(”nt八进制数 %s 转换为其他进制: nn“,c);

printf(”t********************************************n“);

bishow(num);

printf(”t十进制: %dn“,num);

printf(”t十六进制: %xn“,num);

printf(”t********************************************n“);

printf(”是否继续?(任意键继续N键退出)“);scanf(”%c“,&w);getchar();if(w=='N'||w=='n')quitflag=1;

break;

软件设计报告 10005808 方轶琦

case '3': //输入十进制

do{

err=0;i=0;num=0;

printf(”nt请输入十进制数:“);

scanf(”%s“,c);

getchar();

while(c[i]!='')

{

if(c[i]>'9' || c[i]<'0')err=1;//若输入数据为非数字符号,则错误

i++;

}

if(err)printf(”n输入数值错误,不是十进制数!n“);

} while(err);

i=0;

while(c[i]!='')

{

num=num*10;

num=num+c[i]-48;

i++;

}

printf(”nt十进制数 %s 转换为其他进制:nn“,c);

printf(”t********************************************n“);bishow(num);

printf(”t八进制: %on“,num);

printf(”t十六进制: %xn“,num);

printf(”t********************************************n“);

printf(”是否继续?(任意键继续N键退出)“);scanf(”%c“,&w);getchar();if(w=='N'||w=='n')quitflag=1;

break;

case '4': //输入十六进制

do{

err=0;i=0;num=0;

printf(”nt请输入十六进制数:“);

scanf(”%s“,c);

getchar();

while(c[i]!='')

{

if(c[i]<='9' && c[i]>='0')err=0;//若输入数据为非数字符号,则错误

软件设计报告 10005808 方轶琦

else if(c[i]>='a'&&c[i]<='f')err=0;

else if(c[i]>='A'&&c[i]<='F')err=0;

else err=1;

i++;

}

if(err)printf(”n输入数值错误,不是十六进制数!n“);

} while(err);

i=0;

while(c[i]!='')

{

num=num*16;

if('0'<=c[i]&&c[i]<='9')num=num+c[i]-48;

if('a'<=c[i]&&c[i]<='f')num=num+c[i]-97+10;

if('A'<=c[i]&&c[i]<='F')num=num+c[i]-65+10;

i++;

}

printf(”nt十六进制数 %s 转换为其他进制:nn“,c);

printf(”t********************************************n“);bishow(num);

printf(”t八进制: %on“,num);

printf(”t十进制: %dn“,num);

printf(”t********************************************n“);

printf(”是否继续?(任意键继续N键退出)“);scanf(”%c“,&w);getchar();if(w=='N'||w=='n')quitflag=1;

break;case '0':

quitflag=1;

break;

}

}while(!quitflag);

}

void bishow(int m)//转换成二进制数 { int b[20];

int i=0;

软件设计报告 10005808 方轶琦

while(m){ b[i]=m%2;m=m/2;i++;} i--;printf(”t二进制: “);if(m==0)printf(”%d“,0);while(i>=0){ printf(”%d“,b[i--]);//输出二进制数 } printf(”n“);} 3.5.4结果及完善方向 程序运行结果:

图3.5-3 进制转换系统界面运行情况

系统的完善

本系统能够较好的完成二、八、十、十六进制数之间的相互转换,并且对可能出现的异常情况进行了处理。例如,当用户选择输入二进制,用户就无法在其

软件设计报告 10005808 方轶琦

他进制的文本框内输入数据。还有,如果用户要键入非该进制内的字符,用户的键入将无效,非法字符将无法输入到文本框内。这样的设计能方便用户操作。

系统还有一些地方有待完善,比如,用户输入的字符串的最大长度需要进行一定的限制等等。

3.6 分数统计

3.6.1设计题目及要求

设计题目:学生成绩核算系统的设计与实现 要求:(1)、按班级按课程从文件中读入相应的平时成绩、期中考试成绩和期末考试成绩。

(2)、三个成绩对总评成绩的百分比被定义为常数,各占总成绩的30%、30%和40%。

(3)、计算每位学生的总评成绩。(4)、计算该班级本课程的总平均成绩。(5)、计算处于优、良、中、及格、不及格的学生人数以及占总人数的百分比。其中100-90为优,89-80为良,79-70为中,69-60为及格,60分以下为不及格。

(6)、按要求输出成绩在优、良、中、及格、不及格各区间的学生学号、成绩。

3.6.2设计思想及程序流程框图 设计思想:

1.建立文本文件 note.dat,第一行为学生的总人数,其后为每个学生的成绩,每个学生的信息占一行,格式为:

学号(9位)平时成绩

期中考试成绩

期末考试成绩 例如: 15 B10040801

75.5

B10040802

79.5

B10040803

B10040804

80.5 B10040805

83.5

81.5

B10040806

B10040807

B10040808

B10040809

B10040810

B10040811

45.5

B10040812

B10040813

B10040814

B10040815

2.数据结构(用C++实现)

本题中共设计了两个类:学生(Student)和学生成绩(marks)(1)基类学生(Student),定义如下:

class Student //基类学生

软件设计报告 10005808 方轶琦

{ private: //私有成员:

char stu_no[10];//学号(题目中用到的)char stu_name[10];//姓名(可拓展的)char stu_zhy[20];//专业(可拓展的)public: //公有成员:

Student()//构造函数

{

strcpy(stu_no,”NULL“);

strcpy(stu_name,”NULL“);

strcpy(stu_zhy,”NULL“);

}

~Student(){} //析构函数

void setno(char no[])//设置学号

{strcpy(stu_no,no);}

void setname(char name[])//设置姓名

{strcpy(stu_name,name);}

void setzhy(char zhy[])//设置专业

{strcpy(stu_zhy,zhy);}

char *getno()//取学号

{return stu_no;}

char *getname()//取姓名

{return stu_name;}

char *getzhy()//取专业

{return stu_zhy;} };

(2)基类学生(Student)的派生类学生成绩(marks),定义如下: class marks:public Student //派生类学生成绩 { protected: //保护成员:

float sco1;//平时成绩

float sco2;//期中成绩

float sco3;//期末成绩

float avg;//总评成绩

char dengj;//等级 public: //公有成员:

void setsco1(float s1){sco1=s1;} //设置平时成绩

void setsco2(float s2){sco2=s2;} //设置期中成绩

void setsco3(float s3){sco3=s3;} //设置期末成绩

float getsco1(){return sco1;} //取平时成绩

float getsco2(){return sco2;} //取期中成绩

float getsco3(){return sco3;} //取期末成绩

float getavg(){return avg;} //取总评成绩

char getdengj(){return dengj;} //取等级

软件设计报告 10005808 方轶琦

void Computavg();//计算总评成绩 void GetDJ();//计算等级 }mark[100];3.从文件中读入相应的平时成绩、期中考试成绩和期末考试成绩时,用C++中的流实现。

4.每次计算出的结果可在屏幕输出,并把每个学生的总评成绩输入到新文件out.dat文件中,格式为:

学生学号(9位)

总评成绩

成绩等级 例如: B07040801

B

为查询方便,可把总评成绩所处等级(优、良、中、及格、不及格)同时保存在文件out.dat中,分别用字母A、B、C、D、E表示。

5.设计方法:本系统采用自顶向下,逐步细化的方法,将整个系统细化为5个模块:读入文件,计算成绩模块,保存文件模块,计算并输出等级分布模块以及退出模块。根据这个思想,主程序的流程图如3.6-1图所示:

开始显示菜单键盘输入选项读入文件否计算成绩保存文件计算输出等级分布退出系统是否退出系统?是结束图3.7-1主程序流程图

3.6.3逻辑功能程序 具体程序及注释如下:

#include #include #define N 100 struct student { char number[10];

char psgra[5];

软件设计报告 10005808 方轶琦

char qzgra[5];char qmgra[5];

};

int information(){

FILE* fp;

int i;

struct student std[15]=

{{”B10040801“, ”88“, ”75.5“, ”66“ },{”B10040802“ ,”91“, ”79.5“,”76“},{”B10040803“,”85“,”75“,”77“ },{”B10040804“,”79“,”82“,”80.5“},{”B10040805“,”94“,”83.5“,”81.5“},{”B10040806“ ,”80“,”69“,”68“},{”B10040807“,”82“,”77“,”71“} ,{”B10040808“,”77“,”57“,”58“},{”B10040809“,”91“,”88“,”86“} ,{”B10040810“,”96“, ”89“,”90“},{”B10040811“,”70“,”45.5“,”50“} ,{”B10040812“,”74“,”65“,”66“},{”B10040813“,”81“,”71“,”76“},{”B10040814“,”83“,”75“,”77“},{”B10040815“,”85“,”78“,”79“ }};

if((fp=fopen(”note.dat“,”w“))==NULL){

printf(”文件打开错误!n“);

exit(0);}

fprintf(fp,” 学号

平时成绩

期中成绩

期末成绩n

15n“);

for(i=0;i<15;i++)fprintf(fp,” %-8s %8s %8s %8sn“,std[i].number,std[i].psgra,std[i].qzgra,std[i].qmgra);//%8s表示输出8个字符的字符串,不够8个字符右对齐;

fclose(fp);

return 0;

软件设计报告 10005808 方轶琦

}

int read(struct student st[15])

//读取文件的函数;{ FILE*fp1;

struct student s;int size;int i=0;if((fp1=fopen(”note.dat“,”r“))==NULL)

//打开information文件;{

printf(” 文件打开错误!n“);

exit(0);}

size=sizeof(struct student);fseek(fp1,0L,SEEK_SET);fread(&s,size,1,fp1);

//读取一个字节的fp1指针

fread(&s,size,1,fp1);for(i=0;i<15;i++)

{

fscanf(fp1,”%s“, st[i].number);

fscanf(fp1,”%s“, st[i].psgra);

fscanf(fp1,”%s“, st[i].qzgra);

fscanf(fp1,”%s“, st[i].qmgra);

}

fclose(fp1);

return 0;

}

void output(double n[20],char a[20],struct student st[15],char ch){

int j=0;

int i;

printf(”得等级%c的学生及其分数:n“,ch);

for(i=0;i<15;i++)

软件设计报告 10005808 方轶琦

{

if(a[i]==ch)

{

printf(”%-8s %8.1lf %8c n“,st[i].number,n[i],a[i]);

//判断后循环输出满足相应条件的学生的学号、分数及其等级;

j++;

}

} printf(”得%c的人数为:%d人n“,ch,j);printf(”得%c的比例为:%.1lf%%n“,ch,100*j/15.0);

printf(”nn“);}

char level(double //判断得ABCDE的条件;{ if(n>=0&&n<60)

return 'E';

else

if(n>=60&&n<70)

return 'D';

else

if(n>=70&&n<80)

return 'C';

else

if(n>=80&&n<90)

return 'B';

else

return 'A';}

n)

软件设计报告 10005808 方轶琦

int main(){ FILE*fp1;struct student st[15];int i=0;double n[N];char a[N];double d=0.0;

information();

read(st);

if((fp1=fopen(”out.dat“,”w“))==NULL){

printf(” File open error!n“);

exit(0);}

fprintf(fp1,” 学号

总评成绩

等级n

15n“);

for(i=0;i<15;i++)

{

n[i]=0.3*atof(st[i].psgra)+0.3*atof(st[i].qzgra)+0.4*atof(st[i].qzgra);

//按照0.3 0.3 0.4计算成绩;

a[i]=level(n[i]);

//输出等级给a[i];

fprintf(fp1,” %-8s %8.1lf %8c n“,st[i].number,n[i],a[i]);

d=d+n[i];

//求总成绩;

} fclose(fp1);

while(1){

printf(”tttt

南京邮电大学nnn“);

printf(”------------------“);

printf(”tttt请选择服务类型:ntttt1:输出得A的学生。ntttt2:输出得B的学生。ntttt3:输出得C的学生。n“);

printf(”tttt4:输出得D的学生。ntttt5:输出得E的学生。ntttt6:输出总平均成绩。ntttt7:输出学生相应的等级。n“);

printf(”tttt8:输出原始成绩。ntttt0:退出n“);

printf(”------------------“);

scanf(”%d“,&i);

printf(”nnn“);

软件设计报告 10005808 方轶琦

if(i==0)

break;

else

switch(i)

{

case 1:

//进入得A学生的判断;

{

printf(”A:优

B:良

C:中

D:及格

E:不及格n “);

output(n,a,st,'A');

system(”pause“);

暂停以清屏;

system(”cls“);

清屏;

}

break;

case 2:

进入得B学生的判断;

{

printf(”A:优

B:良

C:中

D:及格

E:不及格n “);

output(n,a,st,'B');

system(”pause“);

system(”cls“);

}

break;

case 3 //进入得C学生的判断;

{

printf(”A:优

B:良

C:中

D:及格

E:不及格n “);

output(n,a,st,'C');

system(”pause“);

system(”cls“);

}

break;

case //进入得D学生的判断;

{

printf(”A:优

B:良

C:中

D:及格

E:不及格n “);

output(n,a,st,'D');

system(”pause“);

system(”cls“);

}

break;

case 37

//////

: 4: 5:

软件设计报告 10005808 方轶琦

//进入得A学生的判断;

{

printf(”A:优

B:良

C:中

D:及格

E:不及格n “);

output(n,a,st,'E');

system(”pause“);

system(”cls“);

}

break;

case 6:printf(”总平均成绩为:%.2lfnnn“,d/15);

//总成绩d/15求平均成绩;

system(”pause“);

system(”cls“);

break;

case 7:{

//输出学生的成绩及其等级;

printf(” 成绩及相应等级信息n“);

printf(”

学号

成绩

等级n“);

for(i=0;i<15;i++)

//15个学生的信息全部输出;

printf(” %-8s %8.1lf %8c n“,st[i].number,n[i],a[i]);

system(”pause“);

system(”cls“);

}

break;

case 8:{

//输出15个学生的所有信息;

printf(” 学号

平时成绩

期中成绩

期末成绩n“);

printf(” 15n“);

for(i=0;i<15;i++)

{

printf(” %-8s %8s %8s “,st[i].number,st[i].psgra,st[i].qzgra);

printf(”%10sn“,st[i].qmgra);

}

system(”pause“);

system(”cls“);

}

break;

default: printf(”输入错误,请重新输入。n“);

break;

}

软件设计报告 10005808 方轶琦

printf(”n“);

}

}3.6.4结果及完善方向

(一).程序运行结果如下:

1、菜单选择界面如图3.6-2所示。

(三).系统有待完善的方向

该系统还有一些细节有待改进完善。如输出5个等级区间学生学号和成绩时,分别都进行了一个循环,共进行了5个循环,这个算法的时间效率较低。可以改进算法,使其进行一次循环便可输出5个等级的情况。

3.7 模拟电信计费系统的设计与实现(B2)

3.7.1设计题目及要求

设计题目:模拟电信计费系统的设计与实现 要求:(1)、计费功能。根据存放在源数据文件中的通话记录和长途费率文件对每一条通话记录计算其通话费用,并将结果保存在费用文件中。其中:通话费的计算方法如下:

通话费=长途电话费+本地电话费

长途电话费=费率(元/分钟)×通话时长(分钟)(通话时长不满1分钟的按1分钟计算)

软件设计报告 10005808 方轶琦

本地电话费为:3分钟以内0.5元,以后每3分钟递增0.2元。(2)、话费查询。输入一个电话号码,从费用文件中统计该电话号码的所有本地话费、长途话费,并从用户文件中查找其用户名,最后在屏幕上显示:

用户名 电话号码 本地话费 长途话费 话费总计(3)、话单查询。输入一个电话号码,查询并在屏幕显示该用户的所话通话记录,格式为:

用户名 主叫电话号码 被叫电话号码 通话时长 3.7.2设计思想及程序流程框图

1.本系统的输入输出文件 本系统的输入文件有三个:(1)源数据文件(hd.dat)存放:主叫区号

主叫电话号码

被叫区号 被叫电话号码

通话时长(秒)每次通话作为一条记录,占源数据文件的一行。每条记录中各数据之间以空格间隔,例如:025 83491234 010 62320983 90 每个电话号码可以有多次通话记录。如果主、被叫区号相同,则通话记录为本地通话记录;否则为长途通话记录。(2)长话费率文件(fl.dat)存放:区号 费率

例如:010 1.20 表示从本地打往区号为010的地区每分钟收费1.20元。(3)用户文件(yh.dat)

存放: 电话号码

用户姓名 例如: 83491234 张明

本系统的输出文件有一个: 费用文件(fy.dat)

存放:主叫电话号码

通话类型

话费金额 其中,通话类型表示本次通话是长途还是本地。2.系统输入数据

hd.dat—有20条通话记录,分别是:

fl.dat

有4条记录

025 83491234 025 85319971

010

1.20

025 84927038 010 62110045 236

020

1.20

025 87216340 025 84521009

310

021

0.80 025 83491234 0571 82199516 100

0571 1.00 025 58120321 021 81094532 50

025 83491234 025 85319971

025 84927038 025 83491234

115

yh.dat

有5条记录 025 58120321 025 87216340

83491234 张明 025 87216340 010 62110045 93

84927038 李小红 025 83491234 010 62110045 792

87216340 王励 025 84927038 0571 82199516 931

83492200 赵强 025 83491234 025 85319971

580

58120321 杨冬 025 84927038 025 83491234

358

025 58120321 021 81094532 197 025 87216340 025 84521009

256

025 87216340 010 62110045 193

软件设计报告 10005808 方轶琦

025 83492200 025 84521009

320

025 83491234 025 85319971

270 025 84927038 025 83491234

231

025 83492200 025 84927038

3.数据结构(用C++实现)

本题共设计了三个类:话单(callist)、费用(charge)和用户(user),类的定义如下:

(1)、基类:话单类Callist #include #include #include #include #define N 100

struct callist

{

char zqnum[5];

char znum[20];

char bqnum[5];

char bnum[20];

char longti[10];}cali[N];struct charge

{

char bqnum[5];

char cha[5];}

ch[N];struct user {

char znum[20];char name[15];}

use[N];struct huaf {

char znum[20];

int flag;

double huafei;}

hf[N];

int readuse(){

FILE* fp;int i=0;

char a[10];

strcpy(a,”yh.dat“);

if((fp=fopen(a,”r“))==NULL){

printf(”文件打开错误!n“);

exit(0);}

while(!feof(fp)){

fscanf(fp,”%s %s n“,use[i].znum,use[i].name);

i++;

}

fclose(fp);return i--;}

int readcharge(){

FILE* fp;int i=0;

if((fp=fopen(”fl.dat“,”r“))==NULL)

费规则;{

printf(” File open error!n“);

exit(0);} while(!feof(fp))

软件设计报告 10005808 方轶琦

//将yh.dat写入数组a;//输出号码与名字;

//打开fl.dat通话计费

软件设计报告 10005808 方轶琦

{

fscanf(fp,”%s %s n“,ch[i].bqnum,ch[i].cha);

i++;

}

fclose(fp);return i--;}

int readcallist(){

FILE* fp;int i=0;

if((fp=fopen(”hd.dat“,”r“))==NULL)

//打开通话记录表;{

printf(” 文件打开错误!n“);

exit(0);} while(!feof(fp)){

fscanf(fp,”%s

%s

%s

%s

%sn“,cali[i].zqnum,cali[i].znum,cali[i].bqnum,cali[i].bnum,cali[i].longti);

i++;

}

fclose(fp);return i--;}

int Billing()

//计费函数;{

FILE* fp;

int i;int j;int m;int l;

软件设计报告 10005808 方轶琦

double bd=0.0;

//通话时间初始化0;

j=readcallist();

m=readcharge();

for(i=0;i

{

strcpy(hf[i].znum,cali[i].znum);

hf[i].huafei=0.0;

//初始化话费为0.0元;

bd=atof(cali[i].longti)/60.0;

//计算通话时间(n个一分钟);

if(!strcmp(cali[i].bqnum,cali[i].zqnum))

{

hf[i].flag=0;

if(bd<=3.0)

//本地话费:3分钟以内0.3元,以后每1分钟递增0.2元;

hf[i].huafei=0.3;

else

if(bd==floor(bd))

hf[i].huafei=0.3+0.2*(bd-3);

else

hf[i].huafei=0.3+0.2*(floor(bd)-2);

}

else

{

hf[i].flag=1;

//长途话费计算;

for(l=0;l

{

if(!strcmp(cali[i].bqnum,ch[l].bqnum))

if(bd==floor(bd))

hf[i].huafei=atof(ch[l].cha)*bd;

else

hf[i].huafei=atof(ch[l].cha)*(floor(bd)+1);

}

}

}

if((fp=fopen(”fy.dat“,”w“))==NULL)

//打开通话

软件设计报告 10005808 方轶琦

类型数据并向其写入数据;{

printf(” 文件打开错误!n“);

exit(0);}

for(i=0;i

{

fprintf(fp,”%s

%d

%.2lfn“,hf[i].znum,hf[i].flag,hf[i].huafei);//输出号码、长途以及本地话费;

} fclose(fp);

return i--;}

int query()

话费函数;{

char a[10];

char na[15];

int i;

int j;

int l;

double bd=0.0;

double ct=0.0;

j=Billing();

l=readuse();

getchar();

printf(”请输入要查询的号码n“);

gets(a);

for(i=0;i

{

if(!strcmp(hf[i].znum,a))

数据;

if(hf[i].flag==0)

bd=bd+hf[i].huafei;

else

//查询

//寻找与输入字符串(号码)相匹配的 软件设计报告 10005808 方轶琦

ct=ct+hf[i].huafei;

}

for(i=0;i

{

if(!strcmp(use[i].znum,a))

{

strcpy(na,use[i].name);

//条件成立则将use[i].name的内容复制到na中

break;

}

}

if(i==l)

printf(”输用户不存在,请重新输入!n“);

else

printf(”tttt用户:%sntttt号码:%sntttt本地话费: %.2lfntttt长途话费:%.2lfntttt总话费: %.2lfn“,na,a,bd,ct,bd+ct);

return 0;

system(”cls“);}

int billquery()

//话单查询函数;{

int i;

int j;

int l;

char na[15];

char a[10];

j=Billing();

l=readuse();

getchar();

printf(”请输入要查询的号码n“);

gets(a);

for(i=0;i

//比较输入号码与表单中号码是否有符合;

软件设计报告 10005808 方轶琦

{

if(!strcmp(use[i].znum,a))

{

strcpy(na,use[i].name);

break;

}

}

if(i==l)

printf(”输用户不存在,请重新输入!n“);

else

for(i=0;i

if(!strcmp(hf[i].znum,a))

printf(”tttt用户:%sntttt主叫号码:%sntttt被叫电话号码:%sntttt通话时长%s秒n“,na,cali[i].znum,cali[i].bnum,cali[i].longti);//输出话单;

return 0;

}

int main(){ int i;

while(1){

printf(”tttt

南京邮电大学nnn“);

printf(”------------------“);

printf(”tttt 请选择服务类型:ntttt 1:计费功能。ntttt 2:话费查询。ntttt 3:话单查询。ntttt 0:退出服务。n“);

printf(”------------------“);

scanf(”%d“,&i);

if(i==0)

//选择服务类型;

break;

else

{

软件设计报告 10005808 方轶琦

switch(i)

{

case 1:

Billing();system(”pause“);//计费选项;

break;

case 2:

query();system(”pause“);system(”cls“);

system(”cls“);

//话费查询选项;

break;

case 3:

billquery();system(”pause“);//话单查询选项;

break;

default: printf(”输入错误!n“);

}

}

printf(”n“);

}

} 3.7.4结果及完善方向(一).程序运行结果如下:

1、菜单选择

界面48

如图system(”cls");

3.7-2所示。

第四篇:软件设计辞职报告

软件程序员是一个工作压力非常大的职业,下面就是小编为您收集整理的软件设计辞职报告的相关文章,希望可以帮到您,如果你觉得不错的话可以分享给更多小伙伴哦!

软件设计辞职报告一

尊敬的领导:

您好!

在经过我长时间的考虑之后,结合我自身的实际情况,我不得不作出辞职申请,因为很多的实际情况,我已经无法继续在公司中工作下去,这些是我不愿意看到的,也是领导不愿意看到的。可是现实就是这样,谁也无法左右,我感到十分的无奈,我会牢记我在今公司中工作的过去的。

入职以后先后在宽带无线接入和gbss维护开发部门工作,xx年年2月正式转正。转正成绩为c。以后的工作中表现正常,两次季度考核都获得c。由于个人的从业经历和专业的问题,对无线产品没有知识积累,但是在工作中我努力学习,积极请教,能够完成公司交给我的任务。

在职期间两个部门的主管对我的生活和工作都非常的关心,经常进行思想交流和技术点拨,使我受益很大,感谢领导们的关心。辞职主要原因是我自身的问题,无法适应目前的工作压力,精神上和身体上已经不勘重负。另一个原因是在华为入职以来一直找不到自己的位置,无法给自己定位。海外的生活使我感觉自己的性格特点和思维方式无法适应华为海外团队的文化。

出于保护自己的目的,特向您提出辞职申请。希望早日回到国内,完成离职手续,有时间调整自己的身体状态和精神状态。我想我会在调养好自己的身体之后,继续不断的努力工作下去的。可是现在的情况是我已经无法继续高质量完成公司的工作了,我只好选择离开,我在今后的工作中一定会更好的工作下去的。前提是我一定要养好自己的身体,我坚信自己能够走好!

请对我个人给予充分的谅解,并批准我的辞职申请,谢谢。

软件设计辞职报告二

尊敬的××领导:

当我在凌晨三点读到这段话时,心里面感慨万千,久不能眠。于是我打开Notebook,给您写了这封辞呈。

去年底开始,去与留这二字,在我心里一直反复。直到我想到了这句话“当您在很难作出选择的时候,您必须尊重发自你内心的声音”。当初进入公司时您对我的满怀期许。而我自持在外企呆过,做事条理清晰,对自已充满信心,看不到自已的短处。想起这些至今令我汗颜。

记得当时我在工作上遇到困难与挫折,我与我夫人商量准备离开公司时。我夫人一句意味深长的话让我留了下来。她说:“您先呆着看看,有的时候坏事它也末必是坏事”。我现在得感激她,因为现在看来,她的话是对的。是她的这句话,使我在工作之余每天都在反省自已的不足之处,并想办法加以弥补。我终于明白了一个道理,一个人在反省中不断完善和超越自我是多么的重要。

IT是一个技术性很强的行业,个人曾经历过一个又一个开发工具从受到大家的追捧到被冷落。最后我发现,我应抓住其中的一些基础的,和永恒的不变因素,即便人人都有权力去选择他感兴趣的部分。因此我努力的找到了自已的兴趣与擅长。并不断努力的学习。

在这三年的工作时间里曾经有过的激情,迷惘,彷徨,和温暖,感悟,奋进。父亲交给我的坚毅,诚实的心态使我在这些过程中坚难的走了过来,并在工作中,生活中不断的修正自已,努力的提高自已的认识。我也并因此而重拾生活的信心。

回首过去,当我想到要有足够的胸怀来接受你不能改变的事情,要有足够的勇气来改变你能改变的事情,要有足够的智慧来区分二者的不同.时,我恍然大悟,原来是因为自已的胸怀不够.人生无法重来,但是可以随时重新来,我有选择的权力.....曾记起研究开发部的朝气,热情。技术工程部的和谐,沉稳,责任。这些都给我留下难以磨灭的印象,它已深深的印在我的脑海里,也必将让我时常想起一起共事过的各位同仁。

最后我发自内心地——

感谢和一起工作过的同仁,我曾经和他们度过了一段非常快乐的,令我难忘的时光。

感谢您这几年来对我的厚爱,对我自身存在缺点的包容,以及对我在工作中所犯错误的指正。您那颗正直的心,满怀激情的人生态度、宽广的胸怀、机敏的处事方式、必将令我受用终身。

也正因此,我祝愿您,您也必将用您的智慧引领公司走向一个更加高远的,全新的末来。

×× 敬上

第五篇:软件设计大赛策划书

软件设计大赛策划书

软件设计大赛策划书1

活动目的:为营造我校浓厚的学生科研学术氛围,增强大学生创新意识,传播计算机文化,并为广东省软件设计大赛选拔作品,我校拟于XX年3月21日—5月19日举办华南师范大学第十三届“校园杯”软件设计大赛。

一、大赛主题创意未来,魅力设计

二、参赛对象华南师范大学全日制本科生、专科生

三、参赛时间报名时间:即日起至XX年4月25日

上交作品时间:XX年4月30日至XX年5月10日

四、比赛时间:XX年5月19日四、组织机构

主办:华南师范大学教务处、学生处、团委承办:计算机学院、软件学院团委

五、参赛方式1、以1~3人组队参赛。2、竞赛分专业组和非专业组进行,计算机、软件等专业学生参加专业组竞赛,其他专业学生参加非专业组竞赛。3、报名方式:参赛队伍到所在学院团委科技部报名,报名需提供作品名称、成员名单、宿舍地址、联系电话、以及所在系别,并在规定期限内提交作品。4、报名提交:由各学院团委科技部将本学院的报名名单汇总后,于报名截止日期前将报名名单电子版提交到邮箱,并以收到回信为报名成功。5、原则上只接受以学院为单位的报名,个人单独报名不予受理。

六、作品要求1、作品必须为在校学生独立设计完成,学生的毕业设计成果、教师负责承担的研究开发项目或者外单位委托开发的项目不能参加评选。2、作品必须有主体功能体系,有完整的制作文档;文档主要应包括:需求分析、概要设计与使用说明这三方面。3、作品形式:具体形式不限,如普通的单机软件、娱乐软件、服务器/用户软件、有主体功能的网页以及课件等。4、作品导向:力求“小而精”,而不追求“大而全”、“大而空”等;题材力求创新,鼓励采用新的软件开发方法与技术;符合市场发展需要,反映技术发展方向。5。若参加过校级或者校级以上并获奖的作品不能参赛,如果没获奖或只是参加过院级比赛的作品,无论获奖与否,都可以参加本次比赛。

七、活动安排1、报名:截止时间为4月25日;电子版软件和文档由各学院团委科技部在5月10日提交到邮箱,并以收到回信为提交成功。前纸质版的软件和文档(一式三份)请在5月11日前由各学院团委科技部转交到计算机学院、软件学院团委竞赛部;参加预审,由专家评选之后公布预审结果。2、预审:作品文档上交之后,由主办单位邀请专家进行预审,主要是对作品文档的检查。凡不符合要求者,不能进入正式比赛。3、预审反馈:主办单位在作品预审后,及时公布结果,并反馈评委老师的修改意见,同时,向参加决赛的队伍发送参赛详细情况说明书,并提供往届软件设计大赛的部分参赛文档、作品介绍等参考文件。4、正式比赛:正式比赛时间定于5月19日上午,竞赛地点在计算机学院东阶梯课室。由参赛队伍进行8分钟作品演示及5分钟现场答辩(共13分钟)。5、奖项设置:专业组竞赛拟设一等奖两名,二等奖三名、三等奖五名、优胜奖若干名,创新奖一名;非专业组竞赛拟设一等奖两名,二等奖三名、三等奖五名、优胜奖若干名。奖励具体名额,由主办单位根据参赛作品的数量及作品质量做出调整。大赛给获奖队伍一定的奖金或奖品。

八、联系方式官方微博:@华师计软团委竞赛部@华师计软团委策划书附件一:《华南师范大学第十三届“校园杯”软件设计大赛报名表》附件二:《华南师范大学第十三届“校园杯”软件设计大赛报名汇总表》华南师范大学教务处、学生处、团委计算机学院、软件学院团委

软件设计大赛策划书2

一、活动背景:

为了深入贯彻“素质、技能、自学”的六字方针,正确引导我校同学积极参加科技创新活动,不断培养创新精神和团队意识,切实增强理论联系实际的能力,通过富有自由、开放、创新精神的大赛,为广大同学提供一个提高自我、展示才华的平台,并且通过这一平台,结交更多优秀的人才,提高广大同学的学习积极性、创新意识和勇于实践的科学精神。校园科技文化节是一个交流文化,学习技能的好机会,是展现xx财经学院学子良好风采的不二之选。

二、活动主题:

演绎精彩·创意无限

三、活动目的:

科技文化节旨在服务同学,展现学院风采,培养健康生活方式,宣传化学文化,进一步深化校园文化建设,激发大学生创新意识与科研探究热情,营造活跃、浓郁的科学和人文精神氛围,提高学生学以致用的能力。

第一:培养科学研究精神,提高实践创新能力,为学生提供一个发掘自身潜能的平台,通过参赛培养学生的创新意识,竞争精神及实际动手的能力。达到选拔一批、带动一批、影响一大片的效果。

第二:创建一流校风、学风,丰富学生的校园生活,发挥当代大学生的创造力,提高广大学生的电脑技术水平。充分展示大学生的精神文明建设,体现xx财经学院精神文明建设成果,丰富在校大学生的课余生活。

第三:激发我校学生学习计算机科学技术知识的热情,检验动多媒体设计的水平。为在校学生提供一个挑战自我的个机会。

第四:强化同学们计算机操作技能的提高,进一步加强同学们对计算机应用广泛性和实用性的了解。推动多媒体产品的应用,提高学生的实际开发能力,加速软件后备人才的培养。

四、活动时间:

前期宣传20xx年10月中旬

活动阶段20xx年11月中旬——20xx年5月末

五、报名方式:

1、固定地点:xx财经学院长安校区二食堂门口。

2、由各个班级统一下发报名表,统一报名。

六、活动对象:

xx财经学院长安校区全体学生

七、参赛要求:

(一)作品类型:

手机游戏,软件开发,web设计,电子商务,论坛,办公软件,应用软件,游戏娱乐

(二)作品内容:

1)作品内容健康,丰富科学,结构清晰、创意新颖,设计技术先进。不得违反国家的有关法律、法规和规定。

2)作品必须是独立的软件,具备可演示的运行环境,可演示的用户界面(图形用户界面,web界面或者命令行界面等)。

3)提交内容为作品源代码、编译安装脚本、版权说明及相关设计文档(如:ppt文档,不超过一页的摘要;项目规格书,包括创作思路,应用领域等;分析设计文档,描述设计架构,模块功能描述,相关依赖软件的说明等);作者应自行保留备份,提交的作品不予退回。

4)提交的作品应实现设计文档中描述的基本功能,能正确运行,并给出正确结果。

5)作者必须确保作品软件和相关文档无任何知识产权纠纷,若存在任何知识产权纠纷则取消参赛资格,并由作者个人承担相应责任。

6)作品须为自己创作,如发现作品属于抄袭、克隆行为,一经发现,组委会将取消参赛者的评奖资格。

八、活动流程:

(一)组织发动阶段(20xx年10月中旬)

20xx年10月初,向各院下发比赛通知、参赛规则和报名表等,各院采取各种形式对大赛进行宣传动员。同时在启动仪式是通过计算机作品展示吸引大家兴趣。

(二)统一报名阶段

在文化节启动的开始,启动统一报名,针对所有的大赛进行规范合理

的统一报名。(报名持续一个礼拜)

(三)作品准备阶段

20xx年11月份,20xx年1、2月份,报名参赛的选手可利用这二(三)个月的时间包括节假日,自行进行软件设计制作。3月上旬,将对推荐参加软件设计大赛的作品以电子版的形式并报送至信息学院团工委,由大赛评审委员会对参赛作品进行分类及作品的参赛资格和形式审查和前期测试,不合格的作品(包括非原创的作品)通报后取消参赛资格。

(四)评审准备阶段

1、3月末,由专家组成评审委员会,根据《评审实施细则》进行评审,通过测试,择优选出约三分之一作品进入决赛。

2、5月末,由专家组成评审委员会,根据《评审实施细则》进行评审,通过测试,择优选出约三分之一作品进入决赛。

(五)终评阶段

参加终评决赛的个人或小组进行顺序抽签,现场演示及答辩(每个作品的答辩时间为3-8分钟)。由评委会打分最终确定各奖项获得者。

(六)、评分标准

1、作品创意:软件要创意新颖,实用性强。

2、设计科学:软件开发符合软件工程思想,算法设计合理。

3、运行效果:作品要界面美观,运行稳定,使用方便,可操作性强。

4、汇报表现:汇报要思路请示、表达清楚,回答问题准确。

八、经费预算:

打印费用300元

宣传海报200元横幅300元服装、化妆费400元布置教室200元茶叶纸杯50元奖品1000荣誉证书200机动费200

总计2850元元

软件设计大赛策划书3

一、活动目的

围绕怀化学院“三位一体”“一个中心,两个突破”的.指导方针,给予怀化学院学生一个发挥自己才华的平台,也为了发掘大学生潜力,促进大学生对计算机专业知识的应用能力,激发广大学生对软件开发的兴趣,引导并鼓励广大学生积极投身科技创新与实践活动中,发扬刻苦钻研、勇于创新、团结合作的精神,营造良好的学习、科研氛围,切实实施教学质量与教学改革工程,提高教育质量,促进合作交流。

二、比赛程序

1、报名时间:XX年 4月11日—XX年 4月20日

2、报名地点:各系部学习部、东区食堂门口,各系学习部在4月20日之前统一将报名表上交到数学系团总支学生分会办公室(e1b-409)或将电子表将报名电子表格发至www. (邮箱)

3、初评(XX年5月8日—XX年5月12日):

专业组选手(以个人或以寝室为单位组成五人以下的小组)

于5月8日前将参赛作品(参赛作品范围不限,自主命题,自主设计,特别鼓励原创并具有一定实用功能和市场潜力的作品。如在科学计算、嵌入式产品、软件工具、游戏、互联网增值应用等方面,新颖、实用、小巧的软件设计作品)及其参赛作品信息表电子档发送至邮箱www.或将纸质档交于数学系学生办公室(e1b-409),以便评委会提前熟悉各参赛作品的内容。在决赛之前允许选手对入围作品进行修改和完善,但必须于5月16日前将修改后的作品及其设计文档发送电子稿至邮箱www.,并注明修改的地方以及修改后所达到的效果。

决赛:于5月16日在e1b—511采用现场作品讲解与提问的形式进行终评。最后经过统计分数,排出名次。

非专业组选手:(计算机系09,08级,数学系08级,物信08级,生科08级不能选择到该组参赛,但鼓励非专业组的参加专业组比赛.):

海选:1 参赛选手将一件电子作品(其内容是介绍有关本系部、班级或个人的优秀文化或趣事;可以就用办公软件也可以加上一些其他软件如flash、photoshop等)发到www.(邮箱),选出50份优秀作品进入复赛并将名单登于食堂门口。

复赛:2 经过初评的选手于5月14日参加关于软件知识(包括办公软件及一些常用程序的操作等)的上机操作比赛,选出获奖选手并在学校宣传栏展出。

三、大赛奖项设置

专业组(团体奖):一等奖: 1名 非专业组: 一等奖: 2名

二等奖: 2名 二等奖: 3名

三等奖: 3名 三等奖: 4名

优胜奖: 4名 优胜奖: 4名

主办单位: 怀化学院院团委

承办单位: 怀化学院数学系团总支学生分会

怀化学院php网页开发协会

怀化学院信息文化协会

XX年4月10日

软件设计大赛策划书4

活动目的:

为营造我校浓厚的学生科研学术氛围,增强大学生创新意识,传播计算机文化,并为广东省软件设计大赛选拔作品,我校拟于XX年3月21日—5月19日举办华南师范大学第十三届“校园杯”软件设计大赛。

一、大赛主题

创意未来,魅力设计

二、参赛对象

华南师范大学全日制本科生、专科生

三、参赛时间

报名时间:即日起至XX年4月25日

上交作品时间:XX年4月30日至XX年5月10日

四、比赛时间:

XX年5月19日四、组织机构

主办:华南师范大学教务处、学生处、团委承办:计算机学院、软件学院团委

五、参赛方式

1、以1~3人组队参赛。

2、竞赛分专业组和非专业组进行,计算机、软件等专业学生参加专业组竞赛,其他专业学生参加非专业组竞赛。

3、报名方式:参赛队伍到所在学院团委科技部报名,报名需提供作品名称、成员名单、宿舍地址、联系电话、以及所在系别,并在规定期限内提交作品。

4、报名提交:由各学院团委科技部将本学院的报名名单汇总后,于报名截止日期前将报名名单电子版提交到邮箱,并以收到回信为报名成功。

5、原则上只接受以学院为单位的报名,个人单独报名不予受理。

六、作品要求

1、作品必须为在校学生独立设计完成,学生的毕业设计成果、教师负责承担的研究开发项目或者外单位委托开发的项目不能参加评选。

2、作品必须有主体功能体系,有完整的制作文档;文档主要应包括:需求分析、概要设计与使用说明这三方面。

3、作品形式:具体形式不限,如普通的单机软件、娱乐软件、服务器/用户软件、有主体功能的网页以及课件等。

4、作品导向:力求“小而精”,而不追求“大而全”、“大而空”等;题材力求创新,鼓励采用新的软件开发方法与技术;符合市场发展需要,反映技术发展方向。

5、若参加过校级或者校级以上并获奖的作品不能参赛,如果没获奖或只是参加过院级比赛的作品,无论获奖与否,都可以参加本次比赛。

七、活动安排

1、报名:截止时间为4月25日;电子版软件和文档由各学院团委科技部在5月10日提交到邮箱,并以收到回信为提交成功。前纸质版的软件和文档(一式三份)请在5月11日前由各学院团委科技部转交到计算机学院、软件学院团委竞赛部;参加预审,由专家评选之后公布预审结果。

2、预审:作品文档上交之后,由主办单位邀请专家进行预审,主要是对作品文档的检查。凡不符合要求者,不能进入正式比赛。

3、预审反馈:主办单位在作品预审后,及时公布结果,并反馈评委老师的修改意见,同时,向参加决赛的队伍发送参赛详细情况说明书,并提供往届软件设计大赛的部分参赛文档、作品介绍等参考文件。

4、正式比赛:正式比赛时间定于5月19日上午,竞赛地点在计算机学院东阶梯课室。由参赛队伍进行8分钟作品演示及5分钟现场答辩(共13分钟)。

5、奖项设置:专业组竞赛拟设一等奖两名,二等奖三名、三等奖五名、优胜奖若干名,创新奖一名;非专业组竞赛拟设一等奖两名,二等奖三名、三等奖五名、优胜奖若干名。奖励具体名额,由主办单位根据参赛作品的数量及作品质量做出调整。大赛给获奖队伍一定的奖金或奖品。

八、联系方式

软件设计大赛策划书5

活动目的:为营造我校浓厚的学生科研学术氛围,增强大学生创新意识,传播计算机文化,并为广东省软件设计大赛选拔作品,我校拟于20xx年3月21日—5月19日举办华南师范大学第十三届“校园杯”软件设计大赛。

一、大赛主题

创意未来,魅力设计

二、参赛对象

华南师范大学全日制本科生、专科生

三、参赛时间

报名时间:即日起至20xx年4月25日

上交作品时间:20xx年4月30日至20xx年5月10日

比赛时间:20xx年5月19日

四、组织机构

主办: 华南师范大学教务处、学生处、团委

承办:计算机学院、软件学院团委

五、参赛方式

1、以1~3人组队参赛。

2、竞赛分专业组和非专业组进行,计算机、软件等专业学生参加专业组竞赛,其他专业学生参加非专业组竞赛。

3、报名方式:参赛队伍到所在学院团委科技部报名,报名需提供作品名称、成员名单、宿舍地址、联系电话、以及所在系别,并在规定期限内提交作品。

4、报名提交:由各学院团委科技部将本学院的报名名单汇总后,于报名截止日期前将报名名单电子版提交到邮箱,并以收到回信为报名成功。

5、原则上只接受以学院为单位的报名,个人单独报名不予受理。

六、作品要求

1、作品必须为在校学生独立设计完成,学生的毕业设计成果、教师负责承担的研究开发项目或者外单位委托开发的项目不能参加评选。

2、作品必须有主体功能体系,有完整的制作文档;文档主要应包括:需求分析、概要设计与使用说明这三方面。

3、作品形式:具体形式不限,如普通的单机软件、娱乐软件、服务器/用户软件、有主体功能的网页以及课件等。

4、作品导向:力求“小而精”,而不追求“大而全”、“大而空”等;题材力求创新,鼓励采用新的软件开发方法与技术;符合市场发展需要,反映技术发展方向。

5. 若参加过校级或者校级以上并获奖的作品不能参赛,如果没获奖或只是参加过院级比赛的作品,无论获奖与否,都可以参加本次比赛。

七、活动安排

1、报名:截止时间为4月25日

电子版软件和文档由各学院团委科技部在5月10日提交到邮箱,并以收到回信为提交成功。

纸质版的软件和文档(一式三份)请在5月11日前由各学院团委科技部转交到计算机学院、软件学院团委竞赛部;参加预审,由专家评选之后公布预审结果。

2、预审:作品文档上交之后,由主办单位邀请专家进行预审,主要是对作品文档的检查。凡不符合要求者,不能进入正式比赛。

3、预审反馈:主办单位在作品预审后,及时公布结果,并反馈评委老师的修改意见,同时,向参加决赛的队伍发送参赛说明书,并提供往届软件设计大赛的部分参赛文档、作品介绍等参考文件。

4、正式比赛:正式比赛时间定于5月19日上午,竞赛地点在计算机学院东阶梯课室。由参赛队伍进行8分钟作品演示及5分钟现场答辩(共13分钟)。

5、奖项设置:专业组竞赛拟设一等奖两名,二等奖三名、三等奖五名、优胜奖若干名,创新奖一名;非专业组竞赛拟设一等奖两名,二等奖三名、三等奖五名、优胜奖若干名。奖励具体名额,由主办单位根据参赛作品的数量及作品质量做出调整。大赛给获奖队伍一定的奖金或奖品。

八、联系方式

官方微博:@华师计软团委竞赛部 @华师计软团委

策划书附件一: 《华南师范大学第十三届“校园杯”软件设计大赛报名表》

附件二: 《华南师范大学第十三届“校园杯”软件设计大赛报名汇总表》

华南师范大学教务处、学生处、团委

计算机学院、软件学院团委

二〇一三年三月二十一日

下载3D游戏软件设计word格式文档
下载3D游戏软件设计.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    如何撰写软件设计毕业论文

    如何撰写软件设计毕业论文 一、 问题定义与可行性分析 问题定义是弄清用户需要计算机解决的问题根本所在,以及项目所需的资源和经费。通过向用户调查,编写系统目标与范围的说......

    软件设计大赛策划

    信息工程学院科技创新与创业协会 “大学生软件设计大赛”主题活动策划书一、 活动背景正确引导我校学子积极参加科技竞技活动,不断培养创新精神和团队意识,切实增强理论联系实......

    通信软件设计教学大纲

    通信软件设计 (专业限选课) Design of Communication Software 【课程编号】XZ26199 【学分数】3 【学时数】60 = 38(理论)+ 6(研究)+ 16(实验) 【适用专业】网络通信工程 一、教学......

    通信软件设计心得体会

    通信软件设计课程总结关于这门课程,有很多话想说,对崔老师说的话、对队友们说的话、对自己说的话。这门课程应该算是我上大学以来最享受的一门课程,它不仅仅让我学到了知识、学......

    软件设计开发合同(推荐)

    软件开发合同 软件名称: 应用软件合同书 甲方:______________________________乙方:______________________________ ________________________(以下简称甲方)与 _______________......

    软件设计大赛策划书

    西安财经学院信息学院 软件设计大赛策划书信息学院团工委2012年10月9日 信息学院软件设计大赛策划书主办方:西安财经学院校团委 承办方:信息学院团工委 信息学院科技联盟 一、......

    软件设计模式浅析论文

    软件设计模式浅析陈亚东(中原工学院软件学院,河南 郑州450000)摘要:什么是软件设计模式呢?其实广义的来讲,软件设计模式是可解决一类软件问题并且能反复使用的软件设计方案;狭义的......

    计算机软件设计竞赛方案

    附件1 计算机软件设计竞赛方案 “齐鲁软件设计竞赛”的整个过程分为三个阶段:题目发布及网上交流、暑期训练营培训、比赛评比。 1、题目发布及网上交流 (1)题目发布 参赛题目在......