正则表达式是用于字符串匹配的强大工具,它能够使用一套规则来匹配文本中的字符组合。
在JavaScript中,正则表达式的应用非常广泛,可用于字符串的搜索、替换、提取等操作。
关于正则表达式的基本语法和应用场景:1.字符串长度的计算可以考虑字符的字节大小。
中文字符属于双字节字符,每个字符长度记为2,ASCII字符每个长度计为1。
可以使用正则表达式配合String的扩展方法来实现。
2.匹配中文字符的正则表达式使用Unicode范围来指定,`\u4e00-\u9fa5`包括了绝大多数汉字字符。
3.匹配双字节字符时,可以使用`[^\x00-\xff]`,这可以匹配任何非ASCII字符。
4.匹配空行,可以使用正则表达式`\n[\s|]*\r`,这能够识别连续换行符之间的空白字符。
5.匹配HTML标签通常使用较为复杂的正则表达式,例如`/<(.*)>.*<\/\1>|<(.*)\/>/`,这能够匹配开始标签和自结束标签。
6.去除字符串首尾的空格,可以使用正则表达式`(^\s*)|(\s*$)`,这在JavaScript中通过扩展String原型的方式实现。
7.IP地址的匹配和转换可以通过正则表达式解析IP地址的各部分数字,并将其转换为一个数值,例如`functionIP2V(ip)`,该函数会将IP地址转换为数值形式。
8.正则表达式也可以用于提取URL中的文件名,例如`varip="**.***.**.***"`,之后使用`split`函数处理字符串。
9.去除字符串中重复字符可以使用正则表达式和后向引用的组合,但需要注意到顺序有要求的字符串可能不适用此方法。
10.匹配Email地址和网址URL的正则表达式也是常见的需求,它们通常包含复杂的规则和结构。
11.利用正则表达式限制网页表单中的文本框输入内容,如限制只能输入中文,可以使用`onkeyup`和`onbeforepaste`事件处理函数结合正则表达式。
正则表达式的能力并非无限,它有时可能无法准确匹配某些复杂的字符串模式,尤其是当字符串顺序对结果有影响时,例如在去重字符串中的重复字符时,可能会出现匹配不正确的情况。
在使用正则表达式时,需要注意以下几点:-某些正则表达式操作可以通过非正则表达式的方法简化实现,例如使用`split`函数代替复杂的正则表达式来处理IP地址。
-在应用正则表达式进行匹配时,需要对结果进行验证,尤其是正则表达式自身可能会有匹配不精确的情况。
-在应用正则表达式于生产环境之前,要进行充分的测试,保证其正确性。
通过上述的知识点,可以看出正则表达式在JavaScript编程中发挥着至关重要的作用。
掌握其使用和技巧对于开发人员来说是非常重要的。
无论是在字符串处理、表单验证还是数据提取等场景,合理有效地使用正则表达式可以大大提高编程效率和代码质量。
2025/6/14 23:57:10 74KB
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
vs2015+数据库,需要建的数据表如下:1.“考试成绩管理系统用户登录”功能具体要求:(1)按照图示排列相应的控件,控件名称自定义,其中,界面中的图片可以不加;
(2)当输入正确的用户名和密码时,登录到主系统,如图所示,并且用户名或密码输入不正确时系统有所提示;
当单击【取消】按钮时,用户名和密码被清空;
(3)程序中用到的数据库名为SCOREINFO,数据表名为userinfo,数据表结构如下图所示:(4)数据表中的用户名和密码如下图。
2.点击主窗体的“密码修改”菜单,完成“密码修改”功能,程序运行如下图所示:具体要求:(1)此题必须使用数据库连接完成,原始密码必须为数据表里原有的数据,不使用数据库完成的为0分。
(2)需要建立数据库SCOREINFO及数据表userinfo,表的结构及数据第一部分的内容:(3)要有“原始密码输入错误”、“原始密码不能为空”及“两次输入密码不一致”的错误提示;
(4)当单击【保存】按钮,新密码被更新到数据表中,不能更新的为0分;
(5)单击【关闭】按钮,窗口关闭。
(6)3个Label;
3个TextBox;
2个Button3.完成“成绩查询”功能,程序运行如下图所示:具体要求:(1)按照图示排列相应的控件,界面下方是DataGridView控件;
(2)程序用到的数据库名为SCOREINFO,数据表名为score,表结构如下:(3)完成的MainForm_Load事件处理程序:当加载窗体时,直接在窗体的dataGridView1控件中显示数据表的所有记录;
(4)可以设查询条件:首先在组合框comboBox1中选择查询条件,并在textBox1中输入条件值(可以模糊查询,如按照姓名查询时,输入“王”,可以查所有姓王的同学的成绩),单击查询将结果显示在dataGridView1控件中。
(5)所需控件及属性:1个GroupBox,1个Label,Text为选择查询条件;
1个ComboBox(Items:学号、姓名);
1个TextBox;
1个Button,Text为查询;
1个DataGridView4.完成“课程信息修改”功能,程序运行如下图所示:具体要求:(1)按照图示排列相应的控件,控件名称自定义,其中,程序刚开始运行时,“学分”和“课程编码”的文本框是只读的;
(2)在数据库名为SCOREINFO中,创建数据表名为course,表结构如下:(3)当单击【查询】时,直接在窗体的dataGridView2控件中显示数据表的所有记录;
(4)当选中DataGridView控件中的某一行记录时(DataGridView控件的Mouse_Click事件),“课程名字”、“学分”、“课程代码”文本框中分别显示该项对应的课程信息;
(5)当选中某一行记录并单击【编辑】按钮时,【编辑】按钮变为【保存修改】,同时“学分”和“课程编码”的文本框恢复正常(ReadOnly属性为false);
在文本框中修改相应的信息后单击【保存修改】,将修改后的数据更新到数据表中。
(6)所需控件及属性:1个GroupBox,3个Label;
3个TextBox(textBox2属性ReadOnly为True,textBox3属性ReadOnly为True);
2个Button;
1个DataGridView5.完成“课程信息删除”功能,程序运行如下图所示:具体要求:(1)按照图示排列相应的控件,控件名称自定义,其中,程序刚开始运行时,“学分”和“课程编码”的文本框是只读的;
(2)数据表名为course,表结构同第4部分:(3)当单击【查询】时,直接在窗体的dataGridView控件中显示数据表的所有记录;
(4)当选中DataGridView控件中的某一行记录时,“课程名字”、“学分”、“课程代码”文本框中分别显示该项对应的课程信息;
(5)当选中某一行记录并单击【删除】按钮时,则该行从数据表中删除。
(6)所需控件:3个Label;
3个TextBox(textBox2属性ReadOnly为True,textBox3属性ReadOnly为True);
2个Button;
1个DataGridView6.完成“课程信息添加”功能,程序运行如下图所示:具体要求:(1)按照图示排列相应的控件,控件名称自定义;
(2)程序用到的数据库和数据表名为course,表结构如下同第四部分:(3)当单击【查询】时,直接在窗体的dataGridView1控件中显示数据表的所有记(4)当选中DataGridView控件中的某一行记录时,“课程名字”、“学分”、“课程代码”文本框中分别显示该项对应的课程信息;
2025/6/5 11:50:53 412KB 学生管理系统 源代码 C#
1
MSComm控件通过串行端口传输和接收数据,为应用程序提供串行通讯功能。
MSComm控件在串口编程时非常方便,程序员不必去花时间去了解较为复杂的API函数,而且在VC、VB、Delphi等语言中均可使用。
MicrosoftCommunicationsControl(以下简称MSComm)是Microsoft公司提供的简化Windows下串行通信编程的ActiveX控件,它为应用程序提供了通过串行接口收发数据的简便方法。
具体的来说,它提供了两种处理通信问题的方法:一是事件驱动(Event-driven)方法,一是查询法。
  1.MSComm控件两种处理通讯的方式  MSComm控件提供下列两种处理通讯的方式:事件驱动方式和查询方式。
  1.1事件驱动方式  事件驱动通讯是处理串行端口交互作用的一种非常有效的方法。
在许多情况下,在事件发生时需要得到通知,例如,在串口接收缓冲区中有字符,或者CarrierDetect(CD)或RequestToSend(RTS)线上一个字符到达或一个变化发生时。
在这些情况下,可以利用MSComm控件的OnComm事件捕获并处理这些通讯事件。
OnComm事件还可以检查和处理通讯错误。
所有通讯事件和通讯错误的列表,参阅CommEvent属性。
在编程过程中,就可以在OnComm事件处理函数中加入自己的处理代码。
这种方法的优点是程序响应及时,可靠性高。
每个MSComm控件对应着一个串行端口。
如果应用程序需要访问多个串行端口,必须使用多个MSComm控件。
  1.2查询方式  查询方式实质上还是事件驱动,但在有些情况下,这种方式显得更为便捷。
在程序的每个关键功能之后,可以通过检查CommEvent属性的值来查询事件和错误。
如果应用程序较小,并且是自保持的,这种方法可能是更可取的。
例如,如果写一个简单的电话拨号程序,则没有必要对每接收一个字符都产生事件,因为唯一等待接收的字符是调制解调器的“确定”响应。
  2.MSComm控件的常用属性  MSComm控件有很多重要的属性,但首先必须熟悉几个属性。
CommPort设置并返回通讯端口号。
Settings以字符串的形式设置并返回波特率、奇偶校验、数据位、停止位。
PortOpen设置并返回通讯端口的状态。
也可以打开和关闭端口。
Input从接收缓冲区返回和删除字符。
Output向传输缓冲区写一个字符串。
2025/3/19 16:28:33 58KB CommPort Settings Outpu
1
首先把jar文件解压在D盘下,即D:\TestExamGUI\目录下,因为题库是这个目录。
在已经安装了jdk1.8.0的前提下,双击运行即可。
使用到的java知识有类、封装、继承、图形控件、事件处理、读、写TXT文件等技术。
2025/2/2 21:20:52 1017KB java模拟考试
1
内容简介······本书《基础篇》以面向对象理论为指导,从.NET平台的各项技术中精选出一些亮点进行深入的剖析和讲解,并展示出它们在实际开发中的具体应用实例,不仅让读者能“知其然”,而且能“知其所以然”。
本书适合于拥有一到两年开发经验的读者,有助于读者进一步地提升自己的开发能力,拓展和加深对.NET平台技术的认识,最终成长为一名优秀的.NET软件工程师。
掌握本书《基础篇》所介绍的内容,是进一步阅读本书《应用篇》的前提。
作者简介······金旭亮,走自学之路,沉浸于软件技术世界16年,无师自通,最初“涉猎甚广”,后专注于微软.NET平台。
目前已当了8年的“教书先生”,致力于软件技术的应用与推广,为计算机专业学生和程序员提供软件技术学习指导,为企业提供.NET技术培训服务。
现执教于北京理工大学计算机学院。
高度关注中国计算机教育问题,在北京理工大学主讲软件开发系列课程,其所进行的教学改革探索实践曾引发广泛的关注。
业界知名微软技术作家,微软技术社区精英,已出版之著作如下:1《网站建设教程》高等教育出版社20032《编程的奥秘——.NET软件技术学习与实践》电子工业出版社20063《.NET2.0面向对象编程揭秘》电子工业出版社20074《ASP.NET程序设计教程》高等教育出版社2009目录······第1篇面向对象技术的.NET视角 1第1章.NET面向对象编程基础 31.1.NET是什么? 31.2初探.NET程序运行原理 101.3类和对象 161.4了解编程语言的发展趋势 23第2章数据类型趣谈 292.1数值类型的使用 292.2用好引用类型的变量 322.3“值类型变量”的故事 372.4说不尽的字符串 402.5可取空值的“值类型” 442.6数据类型的模板化——泛型 48第3章字段、方法与属性漫谈 533.1字段与属性的初始化方式汇总 543.2让一个方法返回多个结果 583.3命名参数与可选参数 603.4运算符重载 633.5分部类与分部方法 653.6奇特的扩展方法 693.7类和对象的CLR内存布局 723.8剖析WPF依赖属性 76第4章继承与多态 844.1方法的重载、隐藏与重写辨析 844.2通过实例理解多态 904.3多态编程的CLR探索之旅 954.4协变与逆变 104第5章对象的生生死死 1075.1构造函数那点事 1075.2Singleton设计模式的讨论 1125.3对象的延迟创建 1175.4对象的声明式创建 1205.5与对象销毁相关的话题 124第6章异常捕获与处理 1316.1.NET异常处理基础 1326.2应对程序运行时出现的异常 1366.3CLR异常处理机制探秘 1426.4实际开发中有关异常处理的建议 148第7章程序集 1517.1程序集的基础知识 1517.2程序集与组件化开发 1567.3WPF应用程序的结构与运行原理 1607.4探索ASP.NET页面程序集 1617.5Silverlight项目结构剖析 1637.6互操作程序集与本地类型 167第2篇委托构建的世界 175第8章神奇的委托 1778.1委托的概念与使用 1778.2深入探索委托技术内幕 1818.3使用泛型委托 1878.4匿名方法与Lambda表达式 1918.5掌握回调的编程技巧 195第9章事件及事件驱动 2009.1.NET事件处理机制的剖析与应用 2009.2定义自己的事件 2069.3WPF中的路由事件 212第10章异步编程模式 21710.1程序的同步执行和异步执行 21710.2基于委托的异步编程模式 21910.3等待异步调用的完成 22210.4异步调用中的异常与任务同步 22410.5实现IAsyncResult异步调用模式的组件 22710.6基于事件的异步调用模式 22910.7异步编程小结 234第3篇对象的精彩演出 235第11章对象集合与LINQ 23711.1设计可比较大小的对象 23711.2并不简单的对象集合——“数组” 24311.3针对对象集合的标准查询 25311.4伟大的技术创新——LINQ 25611.5掌握LINQ查询表达式的编写技巧 25911.6对象集合的分组与连接 263第12章对象组合与数据结构的应用 26812.1对象的组合方式 26912.2用对象组合实
2025/1/29 4:53:27 39.3MB .NET
1
用VC++实现对WORD文档打开、关闭等事件的监听与响应处理,将WORD编辑的内容回传到MFC界面中,然后在MFC界面中进行修改,最后将内容导出到WORD文档中。
2024/12/23 18:58:11 2.12MB VC++ WORD事件 WORD报表
1
一、课程题目用JAVA语言编写俄罗斯方块游戏,实现俄罗斯方块游戏的基本功能。
课题主要完成目标是利用小应用程序模版及按钮事件、多线程以及相关事件处理完成俄罗斯方块游戏的操作程序。
应用到的技术包括类的继承,接口的引用以及各类中重要方法的充分运用paint方法绘制游戏区,移动有效性判断locateFlag(),等),以及多线程的应用实现对方块下落速度的控制(线程的应用(线程的创建、run()方法的使用)),完成后可以巩固JAVA知识,能灵活应用JAVA的相关技术。
二、题目分析与设计1、可行性分析项目涉及的相关技术在以前都学习过,能够使用小应用程序游戏界面的展示。
用Image对象创建画布,用paint()方法在画布上绘制棋盘,实现基本界面;
利用线程实现方块的不断下落;
继承KeyAdapter创建其子类GameKeyLister实现变形;
disappear()实现消行,得分。
2024/11/24 0:29:20 508KB JAVA编写
1
1、在工程中导入SDK文件DataCollection.jar。
2、在AndroidManifest.xml中加入下面的代码来获取扫描权限。
3、在Activity类(如MainActivity)的声明中加入BarcodeListener和TriggerListener,以便进行扫描键触发处理和条码事件处理。
2024/10/31 8:46:12 5.53MB PDA Android
1
FactorySoftOPCServerToolkit是一款专为开发OPC服务器的工具包,它主要面向那些需要与工业自动化设备进行数据交互的应用程序开发者。
OPC(OLEforProcessControl)是一种工业标准,允许不同厂商的软件和硬件通过COM(ComponentObjectModel)组件进行通信,确保在自动化系统中的互操作性。
该工具包支持OPC2.0规范,这意味着它提供了更高效、更稳定的数据交换能力,并且可能包含了对新功能和改进的增强。
OPC2.0引入了增强的安全特性,例如身份验证、权限管理和加密,以保护工业控制系统免受未经授权的访问和潜在的安全威胁。
FactorySoftOPCServerToolkit包含多个示例OPC服务器,其中一个典型例子是MODBUSOPCServer。
MODBUS是一种广泛使用的串行通信协议,常用于PLC(可编程逻辑控制器)和其他自动化设备之间进行数据交换。
MODBUSOPCServer则是在OPC框架下实现MODBUS协议的服务器,使得基于OPC的上层应用能够轻松地与MODBUS设备进行通信,而无需深入了解MODBUS协议的细节。
在开发过程中,开发者可以利用这个工具包提供的API和SDK(SoftwareDevelopmentKit)来构建自己的OPC服务器。
SDK通常包括文档、库文件、头文件以及示例代码,帮助开发者快速理解和实现OPC服务器的关键功能,如数据读写、事件处理和错误处理等。
安装"idiszerg-3151535-sdkinstall_1605043820"这个文件很可能是FactorySoftOPCServerToolkit的安装程序。
安装后,开发者可以找到所需的开发资源,包括示例代码、库文件和开发环境集成的支持。
这些资源将帮助开发者在各种平台上创建自定义的OPC服务器,满足特定的自动化需求。
FactorySoftOPCServerToolkit是工业自动化领域的重要工具,它简化了OPC服务器的开发过程,促进了不同设备和系统的互连互通。
通过MODBUSOPCServer等实例,开发者能够学习到如何构建符合OPC标准的数据交换桥梁,进而提升整个自动化系统的效率和可靠性。
2024/9/30 16:42:39 3.19MB FactorySoft Server Toolkit factory
1
共 52 条记录 首页 上一页 下一页 尾页
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡