ABAP面试大全目录1.报表知识 61.1 基础知识 61.1.1 报表事件,有哪些? 61.1.2 报表选择画面 71.2 ALV报表 81.2.1 ALV报表实现的流程 81.2.2 显示ALV常用的两个FM 81.2.3 如何设置ALV中的热键 81.2.4 ALV显示中的小计 81.2.5 FMALV和OOALV的比较 81.3 WRITELIST 82.数据库知识 92.1 基础知识 92.1.1ABAP数据字典有哪些对象或元素? 92.1.2据库提交确认和数据库回滚取消语句 92.1.3什么是LUW 92.1.4简述modify、insert、update对数据库表做操作时的影响 92.1.5要描述域、数据元素、表字段之间的关系 92.1.6数据字典有几种缓冲方式,适用范围? 92.2 ABAP和数据库 102.2.1ABAP数据表的主索引是什么?索引的好处与坏处?与建索引的注意事项! 102.2.2ABAP透明表有哪几种数据类(dataclass)?对数据的存储有什么影响? 102.2.3SAP中有几种表,他们的区别是什么? 102.2.4什么是簇表(clustertable)?举出知道的簇表。
102.2.5找数据库表,有哪些常用的方法。
102.2.6如何建立数据库锁对象,激活锁对象产生的FunctionModule的名字为什么,在何处查看锁表的情况? 102.2.7更新FM分为V1和V2,那么首先会执行哪一种更新类型呢?每种类型又是以哪种模式(异步、同步或本地)执行的呢? 112.2.7使用OPENSQL注意原则 112.3 与表相关 112.3.1MM模块有哪些常用表格 112.3.2HR模块知识:HR里面存储HR主数据主要用到了哪些表? 112.3.3HR模块知识:HR程序在开发中常用的两个逻辑数据库是什么?分别对其进行描述 122.3.4HR模块知识:HR模块里面,如何修改HR的信息类型,具体如何实现 122.3.5财务模块:财务模块开发中常用的表有哪些,简单举例说明: 122.3.6PM常用的TABLE 122.3.6innerjoin与left-outerjoin的区别? 133.权限相关 143.1 什么是权限对象(AuthorizationObjects)?在ABAP程序中使用哪条语句进行授权检查? 143.2 与权限对象有关的事务代码有哪些? 144.DIALOG 154.1 DIALOG中的几个事件 154.2 何在TABLECONTROL中实现选中一行或多行的效果 154.3 DIALOG开发的常用几个控件是什么? 155.BDC 165.1 BDC录屏的事务代码 165.2 BDC与BAPI之间的区别 165.3 BDC录屏的注意事项 165.4谈谈BDC的运行模式和更新模式 166.增强 176.1什么叫增强?有哪些方式进行增强? 176.1.1UserEXIT 176.1.2Customerexit 176.1.3BADI 176.1.4EnhancementSpot 176.2如何建立增强? 176.3与增强相关的事务代码有哪些 186.4如何进行数据库表字段的增强?Append和Include的方式有何区别? 187.SMARTFORMS 197.1谈谈SmartForm中,Template和Table表格的区别 197.2SMARTFORM如何实现公司LOG打印,其步骤是什么? 197.3smartform中如何控制段落、单个字符输出格式? 198.RFC和BAPI 208.1RFC 208.1.1什么是RFC,有哪些通信模式? 208.1.2RFC中涉及到常用的事务代码有哪些? 208.1.3根据调用方式的不同,RFC接口提供了什么样的服务? 208.1.4RFC接口的具体功能包括哪些? 208.1.5在通过CALLFUNCTION语句进行远程功能调用的基本模式有哪些 208.1.6怎么创建一个支持远程调用的RFC 218.1.7怎么调用一个SAP标准RFC 218.1.8怎样建立RFC程序?RFC程序传递的参数都是传递值还是引用?如何建立函数组? 218.1.9怎么来维护这个DESTINATION(远程目标) 218.2BAPI 218.2.1什么是BAPI?你使用过哪些BAPI实现什么功能? 218.2.2什么是业务对象类型?它包含哪些主件? 218.2.3如何创建一个BAPI? 228.2.4编写BAPI的注意事项有哪些? 228.2.5谈谈与BAPI相关的事务代码。
228.3RFC和BAPI的相同之处和不同之处 228.3.1RFC和BAPI的区别? 229.其他 239.1基础知识 239.1.1CHECK、EXIT、RETURN命令的区别? 239.1.2初始化内表有几种方式? 239.1.3一个程序如何调用另外一个程序 249.1.4在一个程序中如何调用其他事物代码 249.1.5在进行画面跳转时,CALLSCREEN与LEAVETOSCREEN的区别? 249.1.6LOOP循环和系统字段? 249.1.7MESSAGE消息有哪些类型,含义?如何自定义MESSAGE消息类? 249.1.8ABAP中,如何自定义异常类?如何捕捉异常? 249.1.9什么是事物变式?事务变式有什么用? 259.1.10RANGE 259.1.11对于FIELDSYMBOL赋值将使用 259.1.12Perform调用子程序时,using,tables,changing3个参数分别有什么影响? 259.1.13如何在程序间传送数据? 259.2延伸 269.2.1自定义搜索帮助有几种方式?如何实现 269.2.2怎么创建numberrange 269.2.3functionmodule中,如何给出错误消息? 269.2.4如何优化ABAP程序? 269.2.5前导零的处理方式 279.2.6程序事件和系统事件 279.2.7如何建立一个外部数据库的连接 279.2.8怎样从文件服务器上读取文件?和写文件到文件服务器上? 279.2.9SAP包括哪些传输技术 279.2.10如何将内表数据转换成一个XML文件? 289.2.11怎么导出一个WSDL文件? 289.2.12怎么导入一个WSDL文件? 289.2.13创建后台程序的TCODE是什么,如何在程序里面调用后台程序 289.2.14webservice 289.2.15什么叫BTE(BusinessTransactionEvent),BTE的两种类型? 289.2.16现阶段接口开发使用的技术 299.2.17将一个RFM(Remote-EnabledModule)创建一个WEBSERVICE都有什么相关的事务代码? 299.2.18esb使用 2910.常用T-CODE 30
2025/7/16 5:21:44 300KB ABAP 面试
1
视点变换,旋转,加速减速,星空背景太阳,光晕各行星纹理#include#include#include#include#include#include#include#pragmacomment(lib,"winmm.lib")#pragmacomment(lib,"wininet")//纹理图像结构typedefstruct{intimgWidth;//纹理宽度intimgHeight;//纹理高度unsignedcharbyteCount;//每个象素对应的字节数,3:24位图,4:带alpha通道的24位图unsignedchar*data;//纹理数据}TEXTUREIMAGE;//BMP文件头#pragmapack(2)typedefstruct{unsignedshortbfType;//文件类型unsignedlongbfSize;//文件大小unsignedshortbfReserved1;//保留位unsignedshortbfReserved2;//保留位unsignedlongbfOffBits;//数据偏移位置}BMPFILEHEADER;#pragmapack()//BMP信息头typedefstruct{unsignedlongbiSize;//此结构大小longbiWidth;//图像宽度longbiHeight;//图像高度unsignedshortbiPlanes;//调色板数量unsignedshortbiBitCount;//每个象素对应的位数,24:24位图,32:带alpha通道的24位图unsignedlongbiCompression;//压缩unsignedlongbiSizeImage;//图像大小longbiXPelsPerMeter;//横向分辨率longbiYPelsPerMeter;//纵向分辨率unsignedlongbiClrUsed;//颜色使用数unsignedlongbiClrImportant;//重要颜色数}BMPINFOHEADER;//定义窗口的标题、宽度、高度、全屏布尔变量#defineWIN_TITLE"模拟太阳系各星球的转动"constintWIN_WIDTH=800;constintWIN_HEIGHT=600;BOOLisFullScreen=FALSE;//初始不为全屏#defineDEG_TO_RAD0.017453floatangle=0.0;staticGLdoubleviewer[]={0,0,0,0,0};//初始化视角GLUquadricObj*quadric;//建立二次曲面对象GLfloatangle_Z;//星空旋转角度boolg_bOrbitOn=true;//控制转动暂停floatg_fSpeedmodifier=1.0f;//时间控制floatg_fElpasedTime;doubleg_dCurrentTime;doubleg_dLastTime;GLfloatLightAmbient[]={1.0f,1.0f,1.0f,0.0f};//环境光参数GLfloatLightDiffuse[]={1.0f,1.0f,1.0f,0.0f};//漫射光参数GLfloatLightPosition[]={0.0f,0.0f,0.0f,1.0f};//光源的位置//纹理图象TEXTUREIMAGEskyImg;TEXTUREIMAGEsunImg;TEXTUREIMAGErayImg;TEXTUREIMAGEmercuImg;TEXTUREIMAGEvenusImg;TEXTUREIMAGEearthImg;TEXTUREIMAGEmarsImg;TEXTUREIMAGEjupiterImg;TEXTUREIMAGEsaturnImg;TEXTUREIMAGEuranusImg;TEXTUREIMAGEneptuneImg;TEXTUREIMAGEmoonImg;GLuinttexture[12];//纹理数组//星球速度定义staticfloatfSunSpin=0.0f;//太阳自转速度staticfloatfMercuSpin=0.0f;//水星自转速度staticfloatfMercuOrbit=0.0f;//水星公转速度staticfloatfVenusSpin=0.0f;//金星自转速度staticfloatfVenusOrbit=0.0f;//金星公转速度staticfloatfEarthSpin=0.0f;//地球自转速度staticfloatfEarthOrbit=0.0f;//地球公转速度staticfloatfMarsSpin=0.0f;//火星自转速度staticfloatfMarsOrbit=0.0f;//火星公转速度staticfloatfJupiterSpin=0.0f;//木星自转速度staticfloatfJupiterOrbit=0.0f;//木星公转速度staticfloatfSaturnSpin=0.0f;//土星自转速度staticfloatfSaturnOrbit=0.0f;//土星公转速度staticfloatfUranusSpin=0.0f;//天王星自转速度staticfloatfUranusOrbit=0.0f;//天王星公转速度staticfloatfNeptuneSpin=0.0f;//海王星自转速度staticfloatfNeptuneOrbit=0.0f;//海王星公转速度staticfloatfMoonSpin=0.0f;//月亮自转速度staticfloatfMoonOrbit=0.0f;//月亮公转速度voidMakeTexture(TEXTUREIMAGEtextureImg,GLuint*texName)//转换为纹理{glPixelStorei(GL_UNPACK_ALIGNMENT,1);//对齐像素字节函数glGenTextures(1,texName);//第一个参数指定表明获取多少个连续的纹理标识符glBindTexture(GL_TEXTURE_2D,*texName);glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_REPEAT);glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_REPEAT);glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);glTexImage2D(GL_TEXTURE_2D,0,GL_RGB,textureImg.imgWidth,textureImg.imgHeight,0,GL_RGB,GL_UNSIGNED_BYTE,textureImg.data);}//初始化OpenGLvoidInitGL(void){glClearColor(0.0f,0.0f,0.0f,0.5f);//设置黑色背景glClearDepth(2.0f);//设置深度缓存glEnable(GL_DEPTH_TEST);//启动深度测试glDepthFunc(GL_LEQUAL);//深度小或相等的时候渲染glShadeModel(GL_SMOOTH);//启动阴影平滑glEnable(GL_CULL_FACE);//开启剔除操作效果glHint(GL_PERSPECTIVE_CORRECTION_HINT,GL_NICEST);//使用质量最好的模式指定颜色和纹理坐标的插值质量glLightfv(GL_LIGHT1,GL_AMBIENT,LightAmbient);//设置环境光glLightfv(GL_LIGHT1,GL_DIFFUSE,LightDiffuse);//设置漫反射光glEnable(GL_LIGHTING);//打开光照glEnable(GL_LIGHT1);//打开光源1//载入纹理glEnable(GL_TEXTURE_2D);//开启2D纹理映射MakeTexture(skyImg,&texture;[0]);MakeTexture(sunImg,&texture;[1]);MakeTexture(rayImg,&texture;[2]);MakeTexture(mercuImg,&texture;[3]);MakeTexture(venusImg,&texture;[4]);MakeTexture(earthImg,&texture;[5]);MakeTexture(marsImg,&texture;[6]);MakeTexture(jupiterImg,&texture;[7]);MakeTexture(saturnImg,&texture;[8]);MakeTexture(uranusImg,&texture;[9]);MakeTexture(neptuneImg,&texture;[10]);MakeTexture(moonImg,&texture;[11]);quadric=gluNewQuadric();//建立一个曲面对象指针gluQuadricTexture(quadric,GLU_TRUE);//建立纹理坐标gluQuadricDrawStyle(quadric,GLU_FILL);//面填充}voidDisplay(void){glLoadIdentity();//设置观察点的位置和观察的方向gluLookAt(viewer[0],viewer[1],viewer[2],viewer[3],viewer[4],-5,0,1,0);//摄像机x,摄像机y,摄像机z,目标点x,目标点y,目标点z,摄像机顶朝向x,摄像机顶朝向y,摄像机顶朝向z//获得系统时间使太阳系有动态效果g_dCurrentTime=timeGetTime();g_fElpasedTime=(float)((g_dCurrentTime-g_dLastTime)*0.0005);g_dLastTime=g_dCurrentTime;glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);glMatrixMode(GL_MODELVIEW);//指定GL_MODELVIEW是下一个矩阵操作的目标glTranslatef(0.0f,0.0f,-5.0f);//将坐标系移入屏幕5.0fglRotatef(10,1.0f,0.0f,0.0f);//将坐标系绕x轴旋转10度glEnable(GL_LIGHT0);//打开光源0/**********************************绘制背景星空********************************************/glPushMatrix();//当前模型矩阵入栈glTranslatef(-10.0f,3.0f,0.0f);glRotatef(angle_Z,0.0f,0.0f,1.0f);glEnable(GL_TEXTURE_2D);glBindTexture(GL_TEXTURE_2D,texture[0]);//星空纹理glBegin(GL_QUADS);glNormal3f(0.0f,0.0f,1.0f);glTexCoord2f(0.0f,0.0f);glVertex3f(-50.0f,-50.0f,-50.0f);glTexCoord2f(6.0f,0.0f);glVertex3f(50.0f,-50.0f,-50.0f);glTexCoord2f(6.0f,6.0f);glVertex3f(50.0f,50.0f,-50.0f);glTexCoord2f(0.0f,6.0f);glVertex3f(-50.0f,50.0f,-50.0f);glEnd();glBegin(GL_QUADS);glNormal3f(0.0f,0.0f,-1.0f);glTexCoord2f(6.0f,6.0f);glVertex3f(-50.0f,-50.0f,50.0f);glTexCoord2f(0.0f,6.0f);glVertex3f(50.0f,-50.0f,50.0f);glTexCoord2f(0.0f,0.0f);glVertex3f(50.0f,50.0f,50.0f);glTexCoord2f(6.0f,0.0f);glVertex3f(-50.0f,50.0f,50.0f);glEnd();glBegin(GL_QUADS);glNormal3f(0.0f,1.0f,0.0f);glTexCoord2f(0.0f,0.0f);glVertex3f(-50.0f,-50.0f,-50.0f);glTexCoord2f(6.0f,6.0f);glVertex3f(50.0f,-50.0f,50.0f);glTexCoord2f(6.0f,0.0f);glVertex3f(50.0f,-50.0f,-50.0f);glTexCoord2f(0.0f,6.0f);glVertex3f(-50.0f,-50.0f,50.0f);glEnd();glBegin(GL_QUADS);glNormal3f(0.0f,-1.0f,0.0f);glTexCoord2f(6.0f,6.0f);glVertex3f(-50.0f,50.0f,-50.0f);glTexCoord2f(0.0f,0.0f);glVertex3f(50.0f,50.0f,50.0f);glTexCoord2f(0.0f,6.0f);glVertex3f(50.0f,50.0f,-50.0f);glTexCoord2f(6.0f,0.0f);glVertex3f(-50.0f,50.0f,50.0f);glEnd();glBegin(GL_QUADS);glNormal3f(1.0f,0.0f,0.0f);glTexCoord2f(0.0f,0.0f);glVertex3f(-50.0f,-50.0f,-50.0f);glTexCoord2f(6.0f,6.0f);glVertex3f(-50.0f,50.0f,50.0f);glTexCoord2f(0.0f,6.0f);glVertex3f(-50.0f,-50.0f,50.0f);glTexCoord2f(6.0f,0.0f);glVertex3f(-50.0f,50.0f,-50.0f);glEnd();glBegin(GL_QUADS);glNormal3f(-1.0f,0.0f,0.0f);glTexCoord2f(6.0f,6.0f);glVertex3f(50.0f,-50.0f,-50.0f);glTexCoord2f(0.0f,0.0f);glVertex3f(50.0f,50.0f,50.0f);glTexCoord2f(6.0f,0.0f);glVertex3f(50.0f,-50.0f,50.0f);glTexCoord2f(0.0f,6.0f);glVertex3f(50.0f,50.0f,-50.0f);glEnd();glPopMatrix();//当前模型矩阵出栈/**********************************绘制太阳************************************************/glBindTexture(GL_TEXTURE_2D,texture[2]);//光晕纹理glEnable(GL_BLEND);//开启混合glDisable(GL_DEPTH_TEST);//关闭深度测试//绘制太阳光晕glDisable(GL_LIGHTING);//关闭光照glBlendFunc(GL_SRC_ALPHA,GL_ONE);//半透明混合函数glColor4f(1.0f,0.5f,0.0f,0.5f);//设置RGBA值glBegin(GL_QUADS);glNormal3f(0.0f,0.0f,1.0f);glTexCoord2f(0.0f,0.0f);glVertex3f(-1.0f,-1.0f,0.0f);glTexCoord2f(1.0f,0.0f);glVertex3f(1.0f,-1.0f,0.0f);glTexCoord2f(1.0f,1.0f);glVertex3f(1.0f,1.0f,0.0f);glTexCoord2f(0.0f,1.0f);glVertex3f(-1.0f,1.0f,0.0f);glEnd();glDisable(GL_BLEND);//关闭混合glEnable(GL_DEPTH_TEST);glEnable(GL_LIGHTING);//开启光照glLightfv(GL_LIGHT1,GL_POSITION,LightPosition);//设置光源1位置glBindTexture(GL_TEXTURE_2D,texture[1]);//太阳纹理//将坐标系绕Y轴旋转fSunSpin角度,控制太阳自转glRotatef(fSunSpin,0.0,1.0,0.0);gluSphere(quadric,0.3f,32,32);//绘制太阳球体/**********************************绘制水星************************************************/glDisable(GL_LIGHT0);glEnable(GL_TEXTURE_2D);//开启纹理glPushMatrix();//当前模型视图矩阵入栈//将坐标系绕Y轴旋转fMercuOrbit角度,控制水星公转glRotatef(fMercuOrbit,0.0f,1.0f,0.0f);glRotatef(-90.0f,1.0f,0.0f,0.0f);//将坐标系绕X轴旋转-90度glTranslatef(0.5f,0.0f,0.0f);//将坐标系右移0.5fglBindTexture(GL_TEXTURE_2D,texture[3]);//水星纹理//将坐标系绕Z轴旋转fMercuSpin角度控制水星自转glRotatef(fMercuSpin,0.0f,0.0f,1.0f);gluSphere(quadric,0.04f,32,32);//水星球体glPopMatrix();//当前模型视图矩阵出栈//绘制轨道glBegin(GL_LINE_LOOP);for(angle=0;angle=-6.0)viewer[0]-=0.5;break;case'u':case'U':if(viewer[1]=-6.0)viewer[1]-=0.1;break;case'+':case'='://加速,减速,暂停g_fSpeedmodifier+=1.0f;glutPostRedisplay();break;case'':g_bOrbitOn=!g_bOrbitOn;glutPostRedisplay();break;case'-'://按'-'减小运行速度g_fSpeedmodifier-=1.0f;glutPostRedisplay();break;caseVK_ESCAPE://按ESC键时退出exit(0);break;default:break;}}voidspecial_keys(ints_keys,intx,inty){switch(s_keys){caseGLUT_KEY_F1://按F1键时切换窗口/全屏模式if(isFullScreen){glutReshapeWindow(WIN_WIDTH,WIN_HEIGHT);glutPositionWindow(30,30);isFullScreen=FALSE;}else{glutFullScreen();isFullScreen=TRUE;}break;caseGLUT_KEY_RIGHT://视角上下左右旋转if(viewer[3]=-3.0)viewer[3]-=0.1;break;caseGLUT_KEY_UP:if(viewer[4]=-4.5)viewer[4]-=0.1;break;default:break;}}voidmouse(intbtn,intstate,intx,inty)//远近视角{if(btn==GLUT_RIGHT_BUTTON&&state==GLUT_DOWN)viewer[2]+=0.3;if(btn==GLUT_LEFT_BUTTON&&state==GLUT_DOWN&&viewer;[2]>=-3.9)viewer[2]-=0.3;}voidLoadBmp(char*filename,TEXTUREIMAGE*textureImg)//载入图片{inti,j;FILE*file;BMPFILEHEADERbmpFile;BMPINFOHEADERbmpInfo;intpixel_size;//初始化纹理数据textureImg->imgWidth=0;textureImg->imgHeight=0;if(textureImg->data!=NULL){delete[]textureImg->data;}//打开文件file=fopen(filename,"rb");if(file==NULL){return;}//获取文件头rewind(file);fread(&bmpFile;,sizeof(BMPFILEHEADER),1,file);fread(&bmpInfo;,sizeof(BMPINFOHEADER),1,file);//验证文件类型if(bmpFile.bfType!=0x4D42){return;}//获取图像色彩数pixel_size=bmpInfo.biBitCount>>3;//读取文件数据textureImg->data=newunsignedchar[bmpInfo.biWidth*bmpInfo.biHeight*pixel_size];for(i=0;idata+(i*bmpInfo.biWidth+j)*pixel_size+2,sizeof(unsignedchar),1,file);//绿色分量fread(textureImg->data+(i*bmpInfo.biWidth+j)*pixel_size+1,sizeof(unsignedchar),1,file);//蓝色分量fread(textureImg->data+(i*bmpInfo.biWidth+j)*pixel_size+0,sizeof(unsignedchar),1,file);//Alpha分量if(pixel_size==4){fread(textureImg->data+(i*bmpInfo.biWidth+j)*pixel_size+3,sizeof(unsignedchar),1,file);}}}//记录图像相关参数textureImg->imgWidth=bmpInfo.biWidth;textureImg->imgHeight=bmpInfo.biHeight;textureImg->byteCount=pixel_size;fclose(file);}//程序主函数voidmain(intargc,char**argv){//读图片LoadBmp("Picture//Sky.bmp",&skyImg;);LoadBmp("Picture//Sun.bmp",&sunImg;);LoadBmp("Picture//Ray.bmp",&rayImg;);LoadBmp("Picture//Mercu.bmp",&mercuImg;);LoadBmp("Picture//Venus.bmp",&venusImg;);//金星LoadBmp("Picture//Earth.bmp",&earthImg;);LoadBmp("Picture//Mars.bmp",&marsImg;);//火星LoadBmp("Picture//Jupiter.bmp",&jupiterImg;);//木星LoadBmp("Picture//Saturn.bmp",&saturnImg;);//土星LoadBmp("Picture//Uranus.bmp",&uranusImg;);//天王星LoadBmp("Picture//Neptune.bmp",&neptuneImg;);//海王星LoadBmp("Picture//Moon.bmp",&moonImg;);glutInit(&argc;,argv);//初始化GLUT库glutInitDisplayMode(GLUT_RGBA|GLUT_DOUBLE|GLUT_DEPTH);//初始化显示模式glutInitWindowSize(WIN_WIDTH,WIN_HEIGHT);//初始化窗口大小glutInitWindowPosition(20,20);//初始化窗口位置GLuintwindow=glutCreateWindow(WIN_TITLE);//建立窗口InitGL();//初始化OpenGLglutDisplayFunc(Display);glutReshapeFunc(Reshape);glutKeyboardFunc(keyboard);glutSpecialFunc(special_keys);glutMouseFunc(mouse);glutIdleFunc(Display);//设置窗口空闲时的处理函数glutMainLoop();//进入事件处理循环}
2025/6/8 20:47:10 3.53MB 三维动画 模拟太阳系
1
共两个不同设计例子,都含详细的文档资料。
任务2.设计一个简单的二级文件系统设计要求:在任一OS下,建立一个大文件,把它假象成硬盘,在其中实现一个简单的模拟文件系统。
编写一管理程序对此空间进行管理,要求:1.实现盘块管理2.实现文件的读写操作3.每组最多2人,小组内要有明确分工,课程设计报告中设计部分可以相同,个人实现部分不同参考建议:将模拟硬盘的文件空间划分为目录区,文件区;
采用位示图进行空间管理,盘块的分配使用显示链接(FAT表)的方式。
设计技术参数(数据结构)参考:#defineMaxSize100#defineDisk512//每个盘块大小为512bit#defineNumDisk2048//有2048个盘块,既可分配空间为1M/*************目录和文件的结构定义***********************/structDirectoryNode{charname[9];/*目录或文件的名字*/inttype;/*0代表目录,1代表普通文件*/structDirectoryNode*next;/*指向下一个兄弟结点的指针*/structDirectoryNode*preDirFile;/*指向父结点的指针*/structDirectoryNode*subFile;/*指向第一个子结点的指针*/intsize;/*如果是文件则表示文件的大小*/intfirst;/*起始盘块号*/intlast;/*末尾盘块号*/intorder;/*备用*/};//连续分配structFileSys{intVacTable[NumDisk];//空闲表,0为空闲,1为被用structDirectoryNoderoot;//根目录structDirectoryNodeDirectory[NumDisk];}*filesys;typedefstruct{structDirectoryNode*DirFile;charname[9];}DataType;//包含一个指向目录的指针和名字typedefstruct{//队列结构的实现DataTypedata[MaxSize];intfront,rear;//分别表示队列的头结点和尾结点}Tp;voidInitQueue(Tp*sq)//队列初始化intEnAddQueue(Tp*sq,DataTypedata)//在队列中增加元素DataTypeEnDelQueue(Tp*sq)//从队列中删除一个元素intEmpty(Tp*sq)//判断队列是否为空,返回0表示队列为空①.Dir:显示目录内容命令,显示当前目录下的文件和子目录。
②.Md:创建目录操作。
③.Create:创建文件,在当前目录下创建一个文件。
④.all:显示从根目录开始的所有目录和文件及其层次结点。
⑤.Cd:改变目录。
⑥.Del:删除文件操作。
⑦.Rd:删除目录操作,删除当前目录下的子目录。
⑧.Ren:重命名函数⑨.Exit:退出命令
1
录入=newJButton("录入");查询=newJButton("查询");删除=newJButton("删除");修改=newJButton("修改");显示=newJButton("显示");录入.addActionListener(newInputAct());查询.addActionListener(newInquestAct());修改.addActionListener(newModifyAct());删除.addActionListener(newDeleteAct());显示.addActionListener(newShowAct());修改.setEnabled(false);p1=newJPanel();p1.add(newJLabel("学号:",JLabel.CENTER));p1.add(学号);p2=newJPanel();p2.add(newJLabel("姓名:",JLabel.CENTER));p2.add(姓名);p3=newJPanel();p3.add(newJLabel("性别:",JLabel.CENTER));p3.add(男);p3.add(女);p4=newJPanel();p4.add(newJLabel("专业:",JLabel.CENTER));p4.add(专业);p5=newJPanel();p5.add(newJLabel("年级:",JLabel.CENTER));p5.add(年级);p6=newJPanel();p6.add(newJLabel("出生:",JLabel.CENTER));p6.add(出生);pv=newJPanel();pv.setLayout(newGridLayout(6,1));pv.add(p1);pv.add(p2);pv.add(p3);pv.add(p4);pv.add(p5);pv.add(p6);ph=newJPanel();ph.add(录入);ph.add(查询);ph.add(修改);ph.add(删除);ph.add(显示);file=newFile("学生信息.txt");学生散列表=newHashtable();if(!file.exists()){try{FileOutputStreamout=newFileOutputStream(file);ObjectOutputStreamobjectOut=newObjectOutputStream(out);objectOut.writeObject(学生散列表);objectOut.close();out.close();}catch(IOExceptione){}}Containercon=getContentPane();con.setLayout(newBorderLayout());con.add(lb,BorderLayout.WEST);con.add(pv,BorderLayout.CENTER);con.add(ph,BorderLayout.SOUTH);setDefaultCloseOperation(EXIT_ON_CLOSE);setBounds(100,100,600,300);setVisible(true);Statementstmt; ResultSetrs;}publicstaticvoidmain(String[]args){StudentManagerff=newStudentManag
1
全套课程设计,经检验,程序无BUG#include#include"lex.h"main(){ //LexScan() //{ charch,ch1;//存放读入的字符 chartoken[50]={'\0'};//存放识别的字符串 inti=0;//字符串的指针 intflag;//字符串比较的标志 AttrWordattrword[200]={{"\0"}};//定义属性字 intAWflag=1;//属性字计数器 intk,c,flag1=0,Linenum=1; FILE*fp=fopen("d:\\lex.txt","r"); if(fp==NULL) { printf("can'topentext!"); exit(0); } ch=fgetc(fp);
2024/12/22 9:08:31 961KB 编译原理 课程设计 计算机
1
SIEMENSPCIN传输软件使用说明(传送程序)1、在记事本中编写好程序(注意传输格式中的程序头),保存文件到文件夹中(如%26ldquo;D:\PROGRAM%26rdquo;)。
2、双击pcin.exe,进入程序界面。
3、移动到V24_INI,按回车,进入,可以设置传输参数。
按%26ldquo;Esc键%26rdquo;可退出。
4、移动到DATA_OUT,按回车,进入,在Filename:下输入文件所在的盘符、文件夹及文件名(必须有相应的文件扩展名,如图中所示)。
5、在数控机床中打开传输服务,数控机床先打开接收。
6、在电脑上,按回车,传输开始。
7、传输结束,按%26ldquo;Esc键%26rdquo;退出。
8、移动到EXIT,连续按回车退出程序。
2024/12/14 15:30:13 58KB 数控通讯软件
1
实现本地电脑监控服务器端电脑监控功能publicclassClient{ //入口 publicstaticvoidmain(String[]args){ try{ intchoice=JOptionPane.showConfirmDialog(null,"请求控制对方电脑","远程控制系统-Charles",JOptionPane.YES_NO_OPTION); if(choice==JOptionPane.NO_OPTION){ return; } Stringinput=JOptionPane.showInputDialog("请输入要连接电脑的ip(包括端口号)","127.0.0.1:10000"); //获取服务器的主机 Stringhost=input.substring(0,input.indexOf(":")); //获取服务器的端口号 Stringpost=input.substring(input.indexOf(":")+1); System.out.println("服务器的主机:"+host+""+"端口号:"+post); Socketclient=newSocket(host,Integer.parseInt(post)); DataInputStreamdis=newDataInputStream(client.getInputStream()); JFramejframe=newJFrame("本地监控系统-Charles"); jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//默认关闭进程 jframe.setSize(1024,768);//设置窗体大小 doubleheight=dis.readDouble(); doublewidth=dis.readDouble(); Dimensionds=newDimension((int)width,(int)height); //设置 jframe.setSize(ds); //将服务器图片作为背景 JLabelbackImage=newJLabel(); JPanelpanel=newJPanel(); //设置滚动条 JScrollPanescrollPane=newJScrollPane(panel); panel.setLayout(newFlowLayout()); panel.add(backImage); jframe.add(scrollPane); jframe.setAlwaysOnTop(true); jframe.setVisible(true); while(true){ intlen=dis.readInt(); byte[]imageData=newbyte[len]; dis.readFully(imageData); ImageIconimage=newImageIcon(imageData); backImage.setIcon(image); jframe.repaint(); } }catch(Exceptione){ e.printStackTrace(); } }}
2024/12/9 15:25:48 13KB java 远程监控
1
1、应用UNIX的fork()等系统调用,编写一个c程序具有以下功能:a)实现Shell的基本功能,包括有:打印提示符;
接受和分析命令行(滤去无效的空格、tab符号以及换行符等);
执行命令(要有出错处理;
输入exit或者bye退出);
返回父进程;
b)处理后台程序(不需要wait)c)处理多行命令(分析命令行中的‘;’并处理之)<br>d)应用dup(),pipe()系统调用具有输入输出重定向以及管道功能;
收缩
2024/10/28 6:25:13 15KB C+shell
1
三、实验内容1、编写一个shell脚本程序,打印出班级总成绩排名在前3名(按总成绩递增)学生的姓名、学号和总成绩。
打印输出的格式如下(姓名、学号、第1、2、3门课程成绩及总成绩): 2、编写一个menu的shell脚本程序,执行后的界面为: Number Name ForLinuxMenu 1 exit leavemenuorreturn 2 menu gotoanotherlocalmenu 3 vi deitafile 4 mail readamail 5 send sendmailtosomeone 6 cal seeyourcalendar 7 who seewhoisonthesystem 8 ls listthefilesinthisdirectory 9 cat displayafileonthescreen Pleaseenteranumberoranamefortheactionyouwish: 要求有清屏功能,能正确地执行各项命令并显示。
2024/10/8 21:52:19 80KB linux 实验七 shell 编程
1
importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;importjava.sql.*;publicclasssystemextendsJFrame{ JDesktopPanedeskpane=newJDesktopPane();//在窗体里建立虚拟桌 JPanelp=newJPanel();//创建一个面板并实例化 publicsystem(){//构造函数 setTitle("订单管理系统");//设置窗体标题 Containercon=getContentPane(); con.setLayout(newBorderLayout());//创建一个布局 con.add(deskpane,BorderLayout.CENTER);//实例虚拟桌面的布局 Fontf=newFont("新宋体",Font.PLAIN,12); JMenuBarmb=newJMenuBar();//实例化菜单栏 mb.setOpaque(true); setJMenuBar(mb); mb.setOpaque(true); setJMenuBar(mb); JMenusystemM=newJMenu("系统管理"); systemM.setFont(f); mb.add(systemM); JMenuItemland=newJMenuItem("重新登陆"); land.setFont(f); JMenuItemexit=newJMenuItem("退出系统"); exit.setFont(f); systemM.add(land); systemM.add(exit); JMenuuserM=newJMenu("用户管理"); userM.setFont(f); mb.add(userM); JMenuItempassword=newJMenuItem("密码修改"); password.setFont(f); JMenuItemaddDelete=newJMenuItem("添加/删除用户"); addDelete.setFont(f); userM.add(password); userM.add(addDelete); JMenumesM=newJMenu("信息管理"); mesM.setFont(f); mb.add(mesM); JMenuaddM=newJMenu("添加信息"); addM.setFont(f); JMenuviewM=newJMenu("查看信息"); viewM.setFont(f); JMenumodifM=newJMenu("修改信息"); modifM.setFont(f); JMenudeleteM=newJMenu("删除信息"); deleteM.setFont(f); mesM.add(addM); mesM.add(viewM); mesM.add(modifM); mesM.add(deleteM); JMenuItemaddgoods=newJMenuItem("添加商品信息"); addgoods.setFont(f); addM.add(addgoods); JMenuItemaddclient=newJMenuItem("添加客户信息"); addclient.setFont(f); addM.add(addclient); JMenuItemviewgoods=newJMenuItem("查看商品信息"); viewgoods.setFont(f); viewM.add(viewgoods); JMenuItemviewclient=newJMenuItem("查看客户信息"); viewclient.setFont(f); viewM.add(viewclient); JMenuItemmodifgoods=newJMenuItem("修改商品信息"); modifgoods.setFont(f); modifM.add(modifgoods); JMenuItemmodifclie
2024/9/13 6:09:25 163KB 需求分析 代码 数据源
1
共 46 条记录 首页 上一页 下一页 尾页
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡