图形用户界面 实验报告二

图形用户界面      实验报告二
图形用户界面      实验报告二

图形用户接口

081180015 戴稚晖通信工程

一、实验目的

1、了解嵌入式系统图形用户界面的基本编程方法。

2、探讨软件结构的层次关系,学习图形库的制作。

一、实验原理概述

1、图形用户界面简介

图形用户界面(GUI)是一种图形化为基础的用户界面,使用统一的图形操作方式,如可移动的视图,选项及鼠标,作为用户与操作系统之间的桥梁,从而使用

户摆脱了在命令行提示符下与操作系统进行交互的方式。

在嵌入式系统设计中,常被选择作为GUI系统进行开发的有:MiniGUI、MicroWindows、OpenGUI和QT/Embedded。这些GUI系统都是以Frame Buffer作为

图形驱动。Frame Buffer作为Linux内核提供的一种底层图形接口,将显示设备

映射到进程地址空间,是大多数GUI的基础。

2、Frame Buffer简介

Frame Buffer又称之为帧缓冲或显存,是系统内的一段存储空间,与显示屏的整个显示区域相对应,通过改变帧缓冲区的内容来改变显示信息。

Frame Buffer的空间大小由显示屏的大小和显示模式决定。显示屏可以以单色或者彩色显示,单色用一位来表示颜色,彩色可以用2、4、8、16、24、32等位

色。显示屏有单屏和双屏显示模式。其中双屏显示模式将整个屏幕分为两部分,每

个部分有各自的Frame Buffer,它们的地址无需连续,并有独立的两个通道将Frame Buffer中的数据传输到显示屏。

3、Frame Buffer与图像色彩

Frame Buffer支持多种颜色显示方式:单色,伪彩色,真彩色,直接色,灰度。伪彩色的RGB值不能直接从Frame Buffer中得到,而是通过调色板间接得到,

此时Frame Buffer中存放的是调色板的索引值,通过索引值获得颜色。真彩色的

RGB值直接从Frame Buffer中得到,且不需要经过调色板。直接彩色Frame Buffer

里存放的是RGB值,但需要经过调色板调色后传输到显示屏。

在16为/像素模式下,Frame Buffer里的每个单元为16位,其中前五位是R 值,中间六位是G值,后五位是B值。

4、LCD控制器——Frame Buffer与显示屏之间的接口

LCD控制器是Frame Buffer与显示屏之间的一个中间部件,负责从Frame Buffer中提取数据,进行处理,并传输到显示屏上。本实验用到的开发板处理器

PXA270集成了LCD控制器,实验中用到的显示屏是16位的TFT LCD,像素分辨率

为 640×480。

二、实验过程

1、内核对Frame Buffer的支持,内核配置选项的修改

在内核源码所在目录下make menuconfig————在Console drivers(终端设备驱动设置)中选中“support for frame buffer devices(EXPERIMENTAL)”

和“PXA LCD support”—————在Multimedia drivers中选中UCB 1400

Touchscreen support on the xsBase 270 Board,在其下的GUI to be supprted

中选择Qtopia而不是用tinyx————在Frame buffer support 中选择Virtual

Frame Support。

2、Frame Buffer操作

Frame Buffer在系统中是以设备文件的形式体现的,在/dev下可以看到fb,fb0,fb1或者更多。打开Frame Buffer与打开一般的文件一样,

fd=open(“/dev/fb”,O_RDWR)。还可以用cp /dev/fb0 file1对屏幕进行抓拍。

Frame Buffer为应用程序提供了良好的用户接口。可以用ioctl命令来获得Frame Buffer的一些参数,如:可以用structfb_fix_screeninfofinfo;

ioctl(fd,FBIOGET_FSCREENINFO,&finfo)来获取它的的固有参数;用

structfb_var_screeninfovinfo ;ioctl(fd,FBIOGET_VSCREENINFO,&vinfo)来获

取它的可变参数,其中包括显示器的色位,分辨率等信息(vinfo.bits_per_pixel、vinfo.xres、vinfo.yres)。

如何获得显示缓冲区的内存映射地址。使用系统调用函数mmap(),获得缓冲区首地址。调用方式为:unsigned char *fbp=0;screensize=vinfo.xres*vinfo.yres*vinfo.bits_per_pixel/8;fbp=( un signed char *)mman(0,sreensize,PROT_READ|PROT_WRITE,MAP_SHARED,fd,0);结束缓冲区使用后要用munmap(fbp,screensize)将内存空间释放。用memset (fbp,0,sreensize)可以实现清屏(黑色)操作,将数字0改成255可以实现白屏操作。

在编写程序时,将上面获取显示屏可变参数和获取缓冲区首地址的语句组合起来,编写成初始化函数。将释放缓冲区内存的语句编写成结束函数,将清屏语句编写成清屏函数,以供主函数调用。

3、在Frame Buffer上画点画线画圆的API函数

画点函数。由于显示屏用的是16位色,要将RGB压缩成16位,再填充其字节下面是画点函数的程序段:

Void draw_point(intx,inty,intred,intgreen,int blue)

{intcolor,offset;

offset=(y*vinfo.xres+x)*vinfo.bits_per_pixel/8;

color=(red<<11)|(green<<5&0x07E0)|(blue&0x1F);

*(unsigned char *)(fbp+offset+0)=color&0xFF;

*(unsigned char *)(fbp+offset+1)=(color>>8)&0xFF;

}//实现了在任意地方画任意颜色的点

画线函数:实验中我编写的画线函数使用任意颜色可以画任意两点之间的直线段,在函数中调用了画点函数。画线函数的形式是:void draw_line(int x1,int y1,int x2,int y2,int red,intgreen,int blue)。画线程序编写过程中,考虑到显示屏的扫描是从第一行到最后一行,第一列到最后一列,然后进行回扫,我在编写过程中想到,要想一帧扫描时画的点更多,或者说总共画线过程花的时间较少,在画直线程序中应该比较一下两点之间的横坐标大小,从横坐标小的点开始画。由于程序段显得有些长,在这里只是说明一下编程思想。先比较两点横坐标的大小,

若x1x2,在for循环中,for(x=x2;x

画圆函数:画圆函数的编写可以采用两种算法,实验中我两种都尝试过了。一种方式是采用极坐标,一种是采用直角坐标。下面将对比两种方法的特点。

方法一(极坐标方式)

voiddraw_circle(int x3,int y3,int r,intred,intgreen,int blue)

{ float k;

for(k=0;k<2*3.1415926;k=k+0.01)

{ doublem,n;

m=x3+r*sin(k);

n=y3+r*cos(k);

draw_point(m,n,red,green,blue);

}

}

方法二(直角坐标)

void draw_circle(intm,intn,int r,intred,intgreen,int blue)

{int x1,x2,y;

for(y=n-r;y<=r+n;y++)

{x1=-sqrt(r*r-(y-n)*(y-n))+m;

x2=sqrt(r*r-(y-n)*(y-n))+m;

draw_point(x1,y,red,green,blue);

draw_point(x2,y,red,green,blue);

}

}

比较两种方法:在画圆时,用极坐标算法时不管半径多大,画的点数是确定的,所以在画实心圆时会出现内侧是实心的,而外侧很虚,因为外侧的点数不够,可以用增加点数的方法来避免虚线,但那样的话,内侧的圆有很多点重复画了很多次,这样的算法效率有点低。经比较得还是用直角坐标算法更有效。

另外我还编写了画椭圆,画半圆等函数,这些函数的编写方法跟画圆函数类似。

这里不再叙述。

4、编写应用程序,实现基本图形的显示

实验中我编写了画矩形框,画圆的主程序进行了测试。实现了简单图形的显示。

主程序其实就是对基本函数的一些调用。

5、利用基本的API函数建立函数库

实验中编译可以有很多种方法。一是直接编译,将上面编写的初始化,结束函数,画点画线的函数放在一个文件中,命名为lib.c,另外编写一个文件,是主函

数,命名为main.c;直接编译用命令:arm-linux-gcc–omain main.clib.c–lm。

在实验中还可以将这些基本的API函数独立地形成一个函数库,为用户屏蔽掉底层的硬件消息,直接提供一些简单的画图调用。函数库有动态和静态之分。本实

验中我既编了动态库,又编译了静态库。下面是编译命令:

动态共享库的编译:arm-linux-gcc–o libimge.so lib.c --shared

静态库的编译:arm-linux-gcc–o libimge.c

arm-linux-arrcslibimge.alibimage.o

对主程序的编译过程是一样的:arm-linux-gcc–o main main.c-L. –limage -lm

6、模拟太阳东升西落及影子变化情景,实现动画效果

使用清屏函数,和延时程序(或者延时函数usleep),可以在Frame Buffer 下实现动画效果。实验时,尝试着模拟太阳东升西落的过程,期间太阳的移动会引

起树木影子的变化,及模拟温度线的高低变化。较好地实现了动画效果。编程的思

想是:用火红的圆来代表太阳,圆心在一个半圆上移动,当太阳从一边移动到另一

边时,树木的影子从长变短,再从短边长,温度线从低变高,又从高变低。我在实

验中用到的刷新方法是将一帧数据显示后,将其用背景色刷新,接着显示下一帧数

据。

三、实验中问题及解决方法

1.开发板屏幕总是亮一两分钟之后就暗掉了,实验还来不及编译执行,这是因为内核对显示屏默认设置了屏幕保护。后来得知要改内核配置选项,具体操作是实验内容

中的第一步。要选择支持触摸屏,并选择Qtpoia作为图形用户界面。

2.在构建静态库的时候犯了一个低级错误,归档静态库的后缀名是.a。实验一开始时由于粗心没加后缀,导致编译的时候出现错误,找不到已经编译的静态库。由于排错能力不是很强,花了大半堂课的时间最终猛然发现生成的归档静态库不是.a形式。

改正之后编译成功。用静态库编译主程序实现了画线功能。

3.一开始时是在pc上编译libimage.c文件,提示段错误。这让我检查程序中的指针有没有赋初值,因为指针如果没赋值的话,很可能指针指向的那个地址是无效的,而出现段错误。将程序中的指针赋初值后,编译,仍然出错,这个时候我在打开fb 文件的地方添加了一条调试语句,如果没有打开文件(fd<0),则输出没有打开。

编译时果真提示没能打开文件。我开始查看/dev目录下有没有fb这个设备,后来发现主机中只有fb0这个设备,将open函数中的文件名替换掉后,编译通过。但在终端上没有显示图形。后来切换tty,通过ctrl+alt+F1,在这个终端下运行,图形得以显示。(到目前只知道默认的tty是F7或者F8,但不明白为什么要切换到别的终端才能显示图像)。

4.实验一开始时,没有将清屏函数编在库函数中,而是放在主程序中,这样导致在主程序中也要定义fbp,原以为在库函数中将fbp作为全局变量后,在主程序中也能引用这个变量,但后来发现这样不能做到清屏,经查阅资料,发现全局变量只能在一个文件中被用到,要是在不同的文件中要共用一个变量的话,要用extern进行外部变量的声明。出现这一问题的原因是C语言基础的不扎实,在编写库函数的时候没有为用户程序屏蔽掉底层硬件信息。

5.在动态库编译及执行主程序时,将以生成的可执行文件main拷到共享目录/exp下,以便在目标板上运行。在目标机/mnt下运行./main。提示:error:while loading shared library,can’t open libimage.so。将库拷贝到/exp下,并且修改动态库的默认路径:export LD_LIBRARY_PATH=:/mnt,再运行./main。提示找不到libgcc–s so.1。也将其拷到/exp目录下,运行./main可以正常运行了。

另外可以直接将库函数拷贝到默认的动态库搜索路径/lib下,这样就不需要设置环境变量了。

此外,实验中有同学出现找不到数学库,然后我尝试着帮她把所需要的数学库拷贝到共享目录/exp下,再在目标机的/mnt目录下将数学库拷贝到/lib下,后来还是没能解决问题。实验后思考觉得可能当时是先拷贝链接文件,再拷贝数学库文件,

顺序不对,导致链接文件不是指向对应的数学库。最直接的解决方法就是重新做一

下文件系统,当时把库拷贝到/lib下并做好链接。这样花的时间可能比较长。

6.在自己的电脑上编译执行动态显示程序的时候,发现扫描出来的不是所希望的图形,后来发现是自己的电脑显示屏幕四周有空白(Margin)。此时需要虚该偏移地址

offset,要加上空白的空间。

7.在程序编写中一定要注意屏幕的大小,不能超过屏幕的范围,如果超过则会出现段错误。

四、实验思考

1.静态库和动态库的区别

实验中发现,在用静态库编译,在开发板上运行程序的时候,不需要将静态归档库

拷贝到/exp目录下。而动态编译的时候,动态库需要拷贝到目标机中,否则就无法

运行。

其中的原因是:静态库中存储的是已经编译好的二进制代码,在编译主程序的时候

直接内嵌到可执行文件中,执行程序时不需要查找静态库的路径。而利用动态库编

译主程序时,主程序运行时需要查找动态库的路径,将需要用到的动态库中的函数

代码从共享库中读出。

静态库有很高的独立性,但动态库的效率更高,占用系统内存小,动态库在进行修

改和更新时,只需要简单地更新共享库,而不需要重新编译每一个使用该共享库的

程序,目前大多使用动态库。

2.如果一帧显示数据的计算量太大,连续图像的刷新和显示将消耗比较多

的时间,此时如何较好地实现连续画面的动态显示?

答:我目前用到的画面动态显示方法主要是两个:一是将整个屏幕刷新,在下一时

刻画下一幅图像。这种方法很可能会出现上面出现的问题,计算量太大的话,刷新

显示需要花费很长时间。还有一种方法:不是将整个屏幕刷新,而是比较前后两幅

图的不同之处,将不需要的部分用屏幕的背景色刷新,将添加的部分重新补上。这

样的话会稍微减少消耗的时间。

另外一个想法是:如果与帧缓冲对应的内存空间不止一块,其中一部分用来计算显

示数据,存储以后要显示的数据,另一部分用来显示当前数据,就相当于8086的

指令流水线操作一样,取值令跟执行指令是并行的。这样就可以加快刷新速率。但

我目前不知道如何实现这一功能。

五、实验总结

这个实验持续做了三个星期,准备的时间比较多,一开始找了好多资料,看了很多关于frame buffer驱动程序设计的资料。虽然没有完全看懂,但对于了解frame buffer 的操作有很大的作用。在第一次做这个实验时,就有些担心,因为大一的时候C语言的基础不是很好,给现在编写程序留下了很大的阴影,生怕自己不会编,不会纠错。所以在实验之前,我先复习了一下以前的c语言知识。但实验的时候仍然犯了很多错误,比如说全局变量,外部变量的概念不是很清晰,调用子函数之前没有对子函数进行声明,在调用动态的数学库之前没有加上它的头文件导致实验中总是提示sin,cos 函数不兼容,而我却执拗地认为我已经链接了数学库(-lm),为什么就找不到这两个函数。这个过程花费了太多的时间。但是通过这次实验,对C语言有了更深的理解和应用,加强了在Linux下编程的经验。利用一些printf函数输出提示错误,提高了程序调试和纠错的能力。

通过对frame buffer的学习,了解了图形用户界面的基础就是frame buffer的驱动,为用户屏蔽掉了底层的硬件,有利于应用程序的编写,应用软件的开发。

另外,这个实验明白了软件结构的层次结构。驱动程序屏蔽掉了底层硬件,是设备与内核之间的接口。系统调用函数API函数是内核与用户应用程序之间的接口,提供简单的函数调用来方便应用程序的编写。可以将很多常用的API函数组合在一起构成库文件,如静态库和动态库,这样编写应用程序的时候就可以通过链接这些库文件,来调用库中的子函数。软件结构都是底层程序为上层屏蔽掉底层的一些信息,使上层的程序编写更加简单有效。

说一下我实验的一些感受。向来我对课程和实验都很看重,我不愿意自己落在别人后面。可自从微处理器课程全部转为实验后,我深深地感觉到了压力,看到有的同学一有时间就待在实验室,而且进度远远地超过了我,我觉得自己被落下了。课后虽然花了很多时间在这们课程上面,而且对课程也有很大兴趣,但实验时总会由于以前的基础课程学得不是很好,导致实验进展速度偏慢。但有压力才有动力,有差距就更需要努力弥补甚至赶超。今后一定会花更多时间为实验做准备,查阅相关资料。还有很重要的是,

要善于跟老师沟通(目前我这一点做的不大好)。这是我对后期实验的要求。我相信,付出了就会有收获。

六、参考文献

PXA-270嵌入式系统实验指导书——南京大学电子科学与工程系

嵌入式linux案例开发指南——冯伟 ,王博编著

Linux高级程序设计(第二版)——杨宗德,邓玉春编著

嵌入式Linux Framebuffer 驱动开发——华清远见嵌入式培训专家

用户界面设计实验报告(中南民族大学)

《用户界面设计》实验报告 学号: 姓名: 班级名称: 指导教师:李波 实验日期:

目录 Experiment 1: Evaluation Practices (1) Experiment 2: Design a graphic user interface (3) Experiment 3: Error Messages GUI (12) Experiment 4: Help Document (14)

Experiment 1: Evaluation Practices Use the blank provided to answer the questions. Answer the questions on a scale of 1 to 5, where 1 is a strong no, 5 is a strong yes, and 3 is neutral. If the question does not apply, use a 0.

Experiment 2: Design a graphic user interface Now, you can use the usability measurement to design a graphic user interface .First, you must select a system to finish sessions or tasks for users, so users’ requirements must be analyzed to define all functions you want to realize. Second, you must draw a graphic UI using the software tools, such as Microsoft visual studio, or Visio, or others. All functions must be appeared in this GUI include a main interface and all assistant interfaces. Finally, you must explain why and how you design these GUIs according to the usability measurement and the EIGTH GOLDEN RULES. The document format is described as follow. You can finish this work by PPT or word. 1. The system requirement The system requirement is described here. The main contents include the aims and what the users want to do. 随着信息时代的发展,计算机管理的应用越来越广泛,随着计算机的普及,就连调查问卷也慢慢的脱离了纸质化。对于一个比较大的公司而言,对其客户进行调查问卷是很有必要进行的,而由于客户的分布广,进行纸质的调查问卷不仅浪费财力,还浪费了物力,因此网上调查就避开这一缺点。因此,我设计了一个网上调查问卷系统。这个系统的用户有两类,一类是经销商,一类是经销商的客户,客户通过网上填写问卷,经销商则对客户的问卷进行回收,统计,分析,以做出相应的出售方案。 The aims 1)用户管理

计算机图形学实验报告

计算机图形学 实验报告 姓名:谢云飞 学号:20112497 班级:计算机科学与技术11-2班实验地点:逸夫楼507 实验时间:2014.03

实验1直线的生成 1实验目的和要求 理解直线生成的原理;掌握典型直线生成算法;掌握步处理、分析 实验数据的能力; 编程实现DDA算法、Bresenham中点算法;对于给定起点和终点的 直线,分别调用DDA算法和Bresenham中点算法进行批量绘制,并记 录两种算法的绘制时间;利用excel等数据分析软件,将试验结果编 制成表格,并绘制折线图比较两种算法的性能。 2实验环境和工具 开发环境:Visual C++ 6.0 实验平台:Experiment_Frame_One(自制平台)。 本实验提供名为 Experiment_Frame_One的平台,该平台提供基本 绘制、设置、输入功能,学生在此基础上实现DDA算法和Mid_Bresenham 算法,并进行分析。 ?平台界面:如错误!未找到引用源。所示 ?设置:通过view->setting菜单进入,如错误!未找到引 用源。所示 ?输入:通过view->input…菜单进入.如错误!未找到引用 源。所示 ?实现算法: ◆DDA算法:void CExperiment_Frame_OneView::DDA(int X0, int Y0, int X1, int Y1) Mid_Bresenham法:void CExperiment_Frame_OneView::Mid_Bresenham(int X0, int Y0, int X1, int Y1)

3实验结果 3.1程序流程图 1)DDA算法流程图:开始 定义两点坐标差dx,dy,以及epsl,计数k=0,描绘点坐标x,y,x增 量xIncre,y增量yIncre ↓ 输入两点坐标x1,y1,x0,y0 ↓ dx=x1-x0,dy=y1-y0; _________↓_________ ↓↓ 若|dx|>|dy| 反之 epsl=|dx| epsl=|dy| ↓________...________↓ ↓ xIncre=dx/epsl; yIncre=dy/epsl ↓ 填充(强制整形)(x+0.5,y+0.5); ↓←←←← 横坐标x+xIncre; 纵坐标y+yIncre; ↓↑ 若k<=epsl →→→k++ ↓ 结束 2)Mid_Bresenham算法流程图开始 ↓ 定义整形dx,dy,判断值d,以及UpIncre,DownIncre,填充点x,y ↓ 输入x0,y0,x1,y1 ______↓______ ↓↓ 若x0>x1 反之 x=x1;x1=x0;x0=x; x=x0;

java实验报告实验六Java图形用户界面

信息工程学院 Java程序设计实习报告 JAVA图形用户界面 实验六Java图形用户界面 1.实验目的 (1)掌握图形用户界面基本组件。 (2)了解如何使用布局管理器对组件进行管理。 (3)掌握Java事件处理机制。 2.实验内容 实验题 1 编写一个模拟计算器的程序,使用面板与网格布局,添加一个文本框,10个数字按钮(0-9),4个加减乘除按钮,一个等号按钮,一个清除按钮,要求将计算公式与结果显示在文本框中。 运行结果: 实验报告的内容与格式按任课教师的要求书写。

加法: 主要代码: private void initComponents() { jButton1 = new javax、swing、JButton(); jButton2 = new javax、swing、JButton(); jButton3 = new javax、swing、JButton(); jButton4 = new javax、swing、JButton(); jButton5 = new javax、swing、JButton(); jButton6 = new javax、swing、JButton(); jButton7 = new javax、swing、JButton(); jButton8 = new javax、swing、JButton(); jButton9 = new javax、swing、JButton(); jButton10 = new javax、swing、JButton(); jButton11 = new javax、swing、JButton(); jButton12 = new javax、swing、JButton(); jButton13 = new javax、swing、JButton(); jButton14 = new javax、swing、JButton(); jButton15 = new javax、swing、JButton(); jTextField1 = new javax、swing、JTextField(); setStub(null); jButton1、setText("3"); jButton1、addActionListener(new java、awt、event、

ui用户界面设计课程设计报告

UI用户界面设计 大作业课程设计报告 题目:依依旅行系统前台应用及后台管理院别:信息与控制学院 专业:计算机科学与技术 学生姓名: 7宋依依 指导教师:孙丽云 成绩: 2015年 6 月 12 日 一、系统概述 1.1课程设计题目: 依依旅行系统前台及后台管理 1.2 课程设计运行环境: Java,MyEclipse6.5,Tomcat5.x Microsoft SQL Server 2008 360安全浏览器7.1 1.3 课程设计实现技术: 基于HTML,CSS,JSP等技术的应用 二、依依旅行系统需求分析 2.1系统功能需求:

系统的功能需求包括一下几个方面 (1)游客在不登录的情况下只可以进行相关旅行,车票,酒店信息的查询。(2)游客通过注册登录或者登录后,可以通过网络查询景点的信息概况和预定景点票,酒店,车票(飞机票,火车票,或者租车)。 (3)游客登录后还可以进行各种订单的退订,个人信息的修改。 (4)系统管理员可以查看游客的预定请求和取消预定的请求。 (5)系统管理员可以对系统的数据库进行维护,例如增加、删除和修改景点信息,增加、删除工作人员帐户,增加和删除旅行用户。 三、依依旅行系统概要分析 3.1旅游系统模块介绍 满足以上需求的管理系统主要包括以下几个模块。 (1)旅游数据维护模块 基本数据维护模块提供了使用者录入、修改并维护基本数据的途径。例如对游客及导游及工作人员各项信息的更新和修改。 (2)旅游业务模块 基本业务模块主要用于实现游客查询景点信息和预定的管理,可以登陆系统预定景点游票和导游预定,工作人员可以处理预定信息和取消预定信息等操作。 (3)数据库管理模块 在系统中,所有景点信息以及工作人员和导游的帐户信息都要进行统一管理,景点的使用情况和预定情况也要进行详细的记录,要用统一的数据库平台进行管理。 (4)旅游信息查询模块 信息查询模块主要用于查询景点的信息和游客的预定信息。 下图所示表示了旅游开发管理系统的功能需求: 3.2旅游数据维护模块 数据维护模块包括如下图所示的几个方面: (1)修改更新景点信息:系统管理员可以更新和修改景点信息。 (2)更新和修改信息:系统管理员可以更新和修改旅游景点和酒店出行,删除游客的信息。 (3)添加景点信息:系统管理员可以添加景点及景点信息。 (4)删除景点信息:系统管理员可以删除景点及景点信息。 3.3旅游业务模块 旅游业务模块包括一下几个方面: (1)注册登陆后,更改个人信息 (2)查询信息:游客查询景点使用信息及景点概括信息。 (3)预定取消景点:游客预定景点票。 (4)酒店预订:游客可一根据情况预定酒店。 (5)出行方式:游客可以根据自己的情况选择出行方式。 3.4数据库管理模块 数据库模块包括一下一个方面: (1)游客信息管理:信息包括游客的姓名,电话号码,及联系方式等。(2)景点信息管理:景点信息包括景点的名称,代号,概况等。

实验8MATLAB图形用户界面设计实验报告

实验8 MATLAB图形用户界面设计实验报告实验报告 课程名称:MATLAB应用成绩: 实验项目名称:MATLAB图形用户界面设计实验时间:11.6 指导教师(签名): 班级:XXXXX 姓名:XXXXX 学号:XXX 实验目的: 1. 熟悉MATLAB的菜单设计方法 2. 熟悉MATLAB的主要控件使用方法 3. 熟悉MATLAB的GUI设计流程 实验环境: MATLAB 7.1 实验内容及过程: 简单计算器的设计:在MATLAB GUI的实验环境中,通过MATLAB图形用户界面设计的方法,设计一个 简单的计算器,以实现简单数据的退出、清屏、删除、四则运算等基本功能。 实验过程、结果及分析:

计算器代码: function varargout = jsq(varargin) gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 第 1 页共 6 页 'gui_OpeningFcn', @jsq_OpeningFcn, ... 'gui_OutputFcn', @jsq_OutputFcn, ... 'gui_LayoutFcn', [] , ... 'gui_Callback', []); if nargin && ischar(varargin{1}) gui_State.gui_Callback = str2func(varargin{1}); end if nargout [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else

操作系统实验报告

操作系统实验报告 Document number:NOCG-YUNOO-BUYTT-UU986-1986UT

许昌学院 《操作系统》实验报告书学号: 姓名:闫金科 班级:14物联网工程 成绩: 2016年02月

实验一Linux的安装与配置 一、实验目的 1.熟悉Linux系统的基本概念,比如Linux发行版、宏内核、微内核等。 2.掌握Linux系统的安装和配置过程,初步掌握Linux系统的启动和退出方 法。 3.熟悉Linux系统的文件系统结构,了解Linux常用文件夹的作用。 二、实验内容 1.从网络上下载VMware软件和两个不同Linux发行版镜像文件。 2.安装VMware虚拟机软件。 3.在VMware中利用第一个镜像文件完成第一个Linux的安装,期间完成网络 信息、用户信息、文件系统和硬盘分区等配置。 4.在VMware中利用第二个镜像文件完成第二个Linux的安装,并通过LILO或 者GRUB解决两个操作系统选择启动的问题。 5.启动Linux系统,打开文件浏览器查看Linux系统的文件结构,并列举出 Linux常用目录的作用。 三、实验过程及结果 1、启动VMware,点击新建Linux虚拟机,如图所示: 2、点击下一步,选择经典型,点击下一步在选择客户机页面选择 Linux,版本选择RedHatEnterpriseLinux5,如图所示: 3、点击下一步创建虚拟机名称以及所要安装的位置,如图所示: 4、点击下一步,磁盘容量填一个合适大小,此处选择默认值大小 10GB,如图所示: 5、点击完成,点击编辑虚拟机设置,选择硬件选项中的CD-ROM (IDE...)选项,在右侧连接中选择“使用ISO镜像(I)”选项,点 击“浏览”,找到Linux的镜像文件,如图所示:

Visual FoxPro 程序设计实验报告

VF程序设计实验报告 图书馆管理系统 专业: 学号: 姓名: 指导教师: 2010年12月31日

目录 第一部分系统概述--------------------------------2 第二部分系统功能模块设计------------------------2 第三部分系统数据库及表设计----------------------2 第四部分系统菜单设计----------------------------5 第五部分系统界面设计----------------------------6 第六部分系统相关程序代码-----------------------13 第七部分实验报告小结---------------------------22 第八部分参考资料-------------------------------22

一、系统概述 近年来,随着图书馆规模的不断扩大,图书数量相应的增加,有关图书的各种信息量也成倍增加,面对庞大的信息量,传统的人工管理户导致图书管理的混乱,人力与物力过多的浪费,图书管理费用的增加,从而使图书馆的负担过重,影响整个图书馆的运作和控制管理。因此,为了充分发挥了图书馆的功效,最大限度地为读者服务,必须制定一套合理、有效,规范和实用的图书馆管理系统,对图书资料进行集中统一的管理。 根据上述需要,我们建立本图书馆管理系统。 根据图书、读者和管理员三者之间的关系,本系统主要实现读者对图书的查询、个人信息的修改和管理员对读者、图书的管理。 本系统采用VF6.0作为开发工具。 二、系统功能模块设计 本系统可以完成一般图书馆关于图书查询、借阅及书库管理的主要功能。其中:图书查询模块可以查询所需要的图书;读者管理模块中,读者可以查看自己的信息,对登陆密码进行修改,管理员可以对读者进行添加和删除;图书管理模块中,管理员可以为读者进行图书的借阅和归还操作,以及对图书的信息进行修改,如加入新书、删除不能使用的图书和更新图书的信息;报表打印模块中,实现对需要的信息进行打印输出。系统结构下图所示。 三、数据库及表设计 经分析,图书馆管理系统主要涉及了学生、管理员和图书三部分。因此需要建立的实体就是学生、管理员和图书三个。 根据系统模块的设计,可以的到本系统需要建立的基本表为:读者信息表、

Java基础实验报告-图形用户界面设计

南京工程学院 实验报告 课程名称 JAVA基础 实验项目名称图形用户界面设计 实验学生班级 实验学生姓名 学号 同组学生姓名 实验时间 实验地点 实验成绩评定 指导教师签字年月日

一、实验目的和要求 1.掌握Java Swing组建的使用方法,包括窗口、框架、对话框、面板、文本编辑框、按钮、组合框等多种布局方式,掌握窗口菜单和快捷菜单设计方式。 2.理解委托时间处理模型,掌握不同组件、不同事件的事件处理方法,设计出能够响应事件的Java图形用户界面。 3.熟悉在组件上绘图的方法。 二、实验题目 用表格存储并显示个人所得税税率表,给定一个月收入值,计算应缴的个人所得税。 三、实验方法与步骤(需求分析、算法设计思路、流程图等) 算法设计思路:本次实验题目为计算个人所得税,所以本人从网上找到了国家最新的税收政策,以下为截图:

因此,我设计了以下核心算法 public void actionPerformed(ActionEvent e) { if(e.getSource()==button_b) { double wage=Double.parseDouble((String)text_wage.getText()); double tax = 0; if(wage<=3500) tax=0; if(wage>3500&&wage<=5000) tax=(wage-3500)*0.03; if(wage>5000&&wage<=8000) tax=(wage-3500)*0.1-105; if(wage>8000&&wage<=12500) tax=(wage-3500)*0.2-555; if(wage>12500&&wage<=38500)

实验三图形用户界面设计(汽院含答案)

实验三图形用户界面设计 实验目的 1.掌握Java语言中GUI编程的基本方法 2.掌握Java语言中AWT组件的基本用法 3.掌握Java语言中Swing组件的基本用法 实验导读 1.通过图形用户界面(GUI:Graphics User Interface),用户和程序之间可以方便地进行 交互。 AWT(Abstract Windowing Toolkit),中文译为抽象窗口工具包,是Java提供的用来建立和设置Java的图形用户界面的基本工具。AWT由Java中的包提供,里面包含了许多可用来建立与平台无关的图形用户界面(GUI)的类,这些类又被称为组件(components)。 Swing是一个用于开发Java应用程序用户界面的开发工具包。它以抽象窗口工具包(AWT)为基础使跨平台应用程序可以使用任何可插拔的外观风格。Swing开发人员只用很少的代码就可以利用Swing丰富、灵活的功能和模块化组件来创建优雅的用户界面。 JDK写程序所有功能都是靠虚拟机去操作本地操作系统。比如window下,就是JDK 用windows API实现功能。而awt包中很多组件是组件自身去调用本地操作系统代码swing包中的组件采用的是调用本地虚拟机方法,由虚拟机再调用本地操作系统代码。意思就是中间多了一层,这样就加强了swing包的移植性,与本地关系不那强了。 图AWT常用组件继承关系图 Container为容器,是一个特殊的组件,该组件中可以通过add方法添加其他组件进来。 2.布局,容器中的组件的排放方式。常见的布局管理器: FlowLayout(流式布局管理器):从左到右的顺序排列。Panel默认的布局管理器。 BorderLayout(边界布局管理器):东,南,西,北,中。Frame默认的布局管理器。 GridLayout(网格布局管理器):规则的矩阵

Java图形用户界面实验报告

西安邮电大学 (计算机学院) 课内实验报告 实验名称:图形用户界面 专业名称:计算机科学与技术 班级:计科1405班 学生姓名:高宏伟 学号:04141152 指导教师:刘霞林 实验日期:一、实验目的 了解图形用户界面基本组件窗口、按钮、文本框、选择框、滚动条等的使用方法,了解如何使用布局管理器对组件进行管理,以及如何使用Java 的事件处理机制。 二、实验要求 1. 掌握使用布局管理器对组件进行管理的方法。

2. 理解Java 的事件处理机制,掌握为不同组件编写事件处理程序的方法。 3. 掌握编写独立运行的窗口界面的方法。 4. 掌握组件的使用方法。 5. 了解对话框的使用方法。 三、实验内容 (一)算术测试。 实验要求: 编写一个算术测试小软件,用来训练小学生的算术能力。程序由3个类组成,其中Teacher类对象负责给出算术题目,并判断回答者的答案是否正确; ComputerFrame类对象负责为算术题目提供视图,比如用户可以通过 ComputerFrame类对象提供的GUI界面看到题目,并通过该GUI界面给出题目的答 案;MainClass是软件的主类。 程序模板: public class Teacher { int numberOne,numberTwo; String operator=""; boolean right; public int giveNumberOne(int n) { numberOne=(int)()*n)+1; return numberOne; } public int giveNumberT wo(int n) { numberTwo=(int)()*n)+1; return numberTwo; } public String giveOperator() { double d=(); if(d>= operator="+"; else operator="-"; return operator; } public boolean getRight(int answer) { if("+")) { if(answer==numberOne+numberTwo) right=true; else right=false; }

实验八基于图形用户界面的JDBC程序开发

实验4基于图形用户界面的JDBC程序开发 (2) 淮海工学院计算机科学系 实验报告书 课程名:__ Java___________ 题目:_基于图形用户界面的JDBC程序开发 班级:__ ___________ 学号:__ __________ 姓名:__ __________ _ 一、实验目的 熟练运用GUI标准组件和布局管理器,正确合理地利用常用AWT和Swing组件进行

图形界面的设计;理解Java的事件处理机制,正确运用Java的事件处理机制及事件委托模型编写图形界面组件的事件处理程序;理解Java多线程机制,掌握线程使用方法。 理解JDBC的数据库访问编程原理,正确利用JDBC技术编写以数据库应用为核心的软件系统,并在设计中灵活运用之前所学的Java语言面向对象的编程技术。 二、实验环境 操作系统:windows 2000 或 Window XP 集成开发环境:JDK1.6及以上版本 三、实验学时 2学时,必做实验。 四、实验内容 (1)进一步熟悉JavaGUI标准组件和布局管理器、正确合理地利用常用AWT和Swing组件进行图形界面的设计;理解Java的事件处理机制,正确运用Java 的事件处理机制及事件委托模型编写图形界面组件的事件处理程序;实践程 序调试方法、纠错能力及编程规范性等;理解JDBC的数据库访问编程原理, 正确利用JDBC技术编写以各种数据库应用; (2)按以下各题目具体要求调试或编写相关算法程序 五、实验步骤与结果 1 请按照以下功能要求编写并调试相关程序 (1) 请定义一个抽象的“科学图书”类,其中包含1个公共的抽象方法:图书介绍;1个属性为:图书类别 (字符串类型); (2) 定义一个“计算机图书”子类(继承于“科学图书”类),其中包括2个域:出版社、定价;2个构造方法:一个为无参构造方法,在该无参构造方法中将“图书类别”设置为“计算机图书”,一个带2个参数(出版社、定价);不少于2个成员方法:分别用来查看出版社、修改定价,图书介绍文字可自编,并编写输出计算机图书全部信息的toString()方法。 (3) 编写一个图形用户界面,用来测试能否正确创建计算机图书类的对象、能否正常调用其方法,参考界面如下。必须实现的基本功能是: 1)单击图中的“新增计算机图书”按钮,则可显示出新增的计算机图书信息(显示信息的控件不限,用文本域、列表框、表格均可),要求添加的计算机图书不少于2本,如下图所示:

oracle设计实验报告材料

课程设计 课程题目:ORACLE应用系统设计设计题目:音像店信息管理系统 专业:计算机科学与技术 班级:计131 组员:李霆桑珠扎西虞洲 学号: 130761 130767 130762 日期: 2016-03-04 信息工程学院计算机科学与技术

目录 一.课程目的………………………………………………………. 二.题目要求……………………………………………………… 三.日期安排………………………………………………………. 四.组内分工……………………………………………………… 五.实验条件......................................................... ........................... 六.实验内容......................................................... ........................... (1)第一部分:Oracle管理技术……………………………………… 1.数据库管理…………………………………………………….. 2.角色和用户管理………………………………………………... 3.表和视图管理………………………………………………….. 4.索引和序列管理………………………………………………... 5.PL/SQL编程…………………………………………………… 6.使用游标、存储过程和触发器………………………………… 7.表空间管理……………………………………………………… 8.文件管理………………………………………………………… (2)第二部分:Oracle开发技术……………………………………….. ①数据库设计………………………………………………………………… ②界面设计.................................................... ③结果测试…………………………………………………………………… 七.问题及解决…………………………………………………….. 八.总结...............................................

实验6图形用户界面设计

实验6. 图形用户界面设计 一、 实验目的 1. 掌握图形对象属性的基本操作; 2. 掌握菜单及对话框设计、建立控件对象的方法。 二、 实验环境 1. 计算机; 2. Matlab 软件。 三、 实验说明 1. 正确操作,认真观察; 2. 实验学时:2学时; 3. 学会使用help ; 4. 保存整理实验结果,提交实验报告。 四、 实验内容 1.设计如教材P374 图1所示的菜单,并在此基础上增加选项:可以改变曲线的颜色、线型;可以改变窗口背景颜色。 2.(选做)采用图形用户界面,从键盘输入参数a 、b 、n 的值,考察参数对极坐标曲线)cos(θρn b a +=的影响。 五、 实验程序及结果 程序如下: screen=get(0,'ScreenSize'); W=screen(3);H=screen(4); figure('Color',[1,1,1],'Position',[*H,*H,*W,*W],... 'Name','图形演示系统','NumberTitle','off','MenuBar','none'); %定义Plot 菜单项 hplot=uimenu(gcf,'Label','&Plot'); uimenu(hplot,'Label','Sine Wave','Call',... ['t=-pi:pi/20:pi;','y=plot(t,sin(t));']); uimenu(hplot,'Label','Cosine Wave','Call',... ['t=-pi:pi/20:pi;','y=plot(t,cos(t));']); hcor=uimenu(hplot,'Label','&Color','Separator','on'); uimenu(hcor,'Label','&Red','Call','set(y,''Color'',''r'');'); uimenu(hcor,'Label','&Blue','Call','set(y,''Color'',''b'');'); uimenu(hcor,'Label','&Yellow','Call','set(y,''Color'',''y'');'); uimenu(hcor,'Label','&Green','Call','set(y,''Color'',''g'');');

Web界面设计实验报告

实验报告 课程名称:Web语言及XML程序设计实验项目:Web网页设计及XML编程专业班级: 姓名:学号: 实验室号:实验组号: 实验时间:批阅时间: 指导教师:成绩:

沈阳工业大学实验报告 题目:xx大学学生信息管理系统 于光亚负责:WEB网页界面设计 专业班级:学号:姓名: 实验名称: 附件A 沈阳工业大学web实验报告 ——xx大学学生信息管理系统 实验步骤或程序: 1.绪论:这次课程设计所制作的网站中分为五个板块,教师登陆、教师注册、学生成绩、学生信息管理、学生注册,通过这个网站,用户可以访问XX大学学生信息,及特权用那户对网页部分信息的管理。但网站有些简单,功能也不全面,功能实现有限。 2.布局介绍:网站下分为五个板块,分别为教师登陆、教师注册、学生成绩、学生信息管理、学生注册。整体结构如下

3.各页面设计: 3.1主页 预览: 功能实现:主页简单明了,突出登陆界面,网页功能及主意事项,插入图片动画增强美观,以上功能均以代码实现,均可根据要求做出调整。 3.2教师注册页: 预览:

功能实现:在主页点击教师注册,进入本页,实现简单的注册、提交功能,界面设计突出功能,实用性为主。 3.3学生注册页 预览:

功能实现:在主页点击学生注册,进入本页,罗列学生注册信息,同样实现简单的注册、提交功能,界面设计突出功能,实用性为主。 3.4学生成绩页 预览: 功能实现:通过主页登录,可进入学生成绩页面,实现通过学号、班级的输入完成学生成绩的搜索,教师用户还可对学生西成绩进行修改,本页还附带百度搜索、教师功能、学生功能等超链接,完善用户需求。 3.5学生信息管理页 预览:

嵌入式图形界面设计_综合实验报告

嵌入式图形界面设计报告 班级:计算机科学与技术15-2班 小组成员:刘航征、安宝、曲晗羽 杨祎涵、张振、李雪辰 2017年12月

一、前言 天气预报(测)或气象预报(测)是使用现代科学技术对未来某一地点地球大气层的状态进行预测。从史前人类就已经开始对天气进行预测来相应地安排其工作与生活(比如农业生产、军事行动等等)。今天的天气预报主要是使用收集大量的数据(气温、湿度、风向和风速、气压等等),然后使用目前对大气过程的认识(气象学)来确定未来空气变化。由于大气过程的混乱以及今天科学并没有最终透彻地了解大气过程,因此天气预报总是有一定误差的。 最传统的数据是在地面或海面上通过专业人员、爱好者、自动气象站或者浮标收集的气压、气温、风速、风向、湿度等数据。世界气象组织协调这些数据采集的时间,并制定标准。这些测量分每小时一次(METAR)或者每六小时一次(SYNOP)。 该项目为一款天气预报软件,基于Qt5开发,具有查询指定城市天气、显示当天天气状况以及未来四天天气大致状况的主要功能,次要功能为更换软件皮肤,显示当天感冒指数等功能。 软件预览图: 二、选用的技术基本说明 1、Qt JSON操作 QJsonDocument QJsonDocument 类用于读和写JSON 文档。 一个JSON 文档可以使用QJsonDocument::fromJson() 从基于文本的表示转化为QJsonDocument,toJson() 则可以反向转化为文本。解析器非常快且高效,并将JSON 转换为Qt 使用的二进制表示。 已解析文档的有效性,可以使用!isNull() 进行查询。 如果要查询一个JSON 文档是否包含一个数组或一个对象,使用isArray() 和isObject()。包含在文档中的数组或对象可以使用array() 或object() 检索,然后读取或操作。

图形用户界面的设计课案

人机交互基础教程 实验报告 实验题目:图形用户界面的设计 专业计算机科学与技术 学生姓名 班级学号 教师 指导单位计算机软件学院 日期

教师 评语教师签名: 年月日 成绩评定 备注

一、实验目的 (1)熟悉图形用户界面的设计原则 (2)利用一种设计工具完成图形化的用户界面设计 二、预备知识 图形用户界面又称为WIMP界面,由窗口(windows)、图标(icons)、菜单(menu)、指点设备(pointing device)四位一体,形成桌面(desktop) ,如图所示。 WIMP界面 用 户 手 眼 击键/指点 窗口、图标 菜单、文本 应用例程 图形用户界面是当前用户界面的主流,广泛应用于各档台式微机和图形工作站。图形用户界面的共同特点是以窗口管理系统为核心,使用键盘和鼠标器作为输入设备。窗口管理系统除了基于可重叠多窗口管理技术外,广泛采用的另一核心技术是事件驱动(event-driven)技术。 WIMP界面可看作是第二代人机界面,是基于图形方式的人机界面。在WIMP界面中,人被称为用户,人机通过对话进行工作。用户只能使用手这一种交互通道输入信息,通过视觉通道获取信息。在WIMP界面中,界面的输出可以为静态或动态的二维图形或图像等信息。

这种方式能同时输出不同种类的信息,用户也可以在几个工作环境中切换而不丢失几个工作之间的联系,通过菜单可以执行控制型和对话型任务。由于引入了图标、按钮和滚动条技术,大大减少键盘输入,提高了交互效率。基于鼠标和图形用户界面的交互技术极大地推动了计算机技术的普及。 (1)图形用户界面的三个重要思想 1)桌面隐喻(desktop metaphor) 指在用户界面中用人们熟悉的桌面上的图例清楚地表示计算机可以处理的能力。隐喻的表现方法:静态图标、动画、视频2)所见即所得(What You See Is What You Get,WYSIWYG) 显示的用户交互行为与应用程序最终产生的结果是一致的。 3)直接操纵(direct manipulation) 直接操纵是指可以把操作的对象、属性、关系显式地表示出来,用光笔、鼠标、触摸屏或数据手套等指点设备直接从屏幕上获取形象化命令与数据的过程。直接操纵的对象是命令、数据或是对数据的某种操作。 (2)设计图形用户界面的原则 1) 一般性原则:界面要具有一致性、常用操作要有快捷方式、提供简单的错误处理、对操作人员的重要操作要有信息反馈、操作可逆、设计良好的联机帮助、合理划分并高效地使用显示屏、保证信息显示方式与数据输入方式的协调一致 2) 颜色的使用:颜色是一种有效的强化手段,同时具有美学价

围棋对弈界面课程设计

课程设计(论文)任务书 理学院光信息专业2班 一、课程设计(论文)题目围棋对弈界面设计 二、课程设计(论文)工作自2016年6月27 日起至2017 年 7月1 日止。 三、课程设计(论文) 地点: 8-605 四、课程设计(论文)内容要求: 1.本课程设计的目的 (1)使学生掌握软件开发的基本工作流程; (2)巩固JAVA程序设计课程所学的内容; (3)培养学生的计算机思维能力以及合作的精神; (4)培养学生分析、解决问题的能力; (5)提高学生的科技论文写作能力。 2.课程设计的任务及要求 1)基本要求: [1] 掌握Frame,Panel等容器的使用 [2] 掌握AWT图形绘制的常用方法。 [3] 掌握java的事件监听机制,理解相关角色及相互关系。 [4] 熟悉按钮和鼠标事件的处理。

[5] 完成类围棋对弈界面设计。界面参考如图1所示。 [6] 功能至少包含: a)能用颜色选择对话框改变棋盘背景颜色; b)实现黑白棋子轮流落子; c)显示游标即游标轨迹擦除; d)显示下棋所用时间。 学生需分析课程设计任务,进行系统需求分析;并对系统进行总体设计, 分解系统功能模块;实现各功能模块代码,进而组装各模块,并测试、完善系统。 图 1 围棋对弈界面

2)创新要求: 实现更复杂的界面控制,提供更多的围棋对弈功能等,并提高系统的容错能 力,完善系统功能,进行代码优化。 3)课程设计论文编写要求 课程设计报告的撰写要求表述简明,图表准确。 报告按如下内容和顺序用A4纸进行打印并装订成册。 (1)封面 采用统一的课程设计封面,并按要求填写好封面要求的个人信息。 (2)设计任务书 (3)评阅书 (4)目录 (5)正文 (6)主要参考文献 4)答辩及评分标准: (1)达到课程设计的目的及要求,程序的可读性较好,并调试正确,50分; (2)能正确回答设计中老师所提问题,可增加10分; (3)课程设计报告书写规范整齐,可增加20分; (4)心得体会认真总结,可增加10分;

VB实验报告7-用户界面设计

VB 程序设计实验报告 2020年06 月01 日 课程名称:VB程序设计实验名称:实验7-用户界面设计 一、实验目的 1.掌握下拉式菜单和弹出式菜单的设计方法 2.学会使用通用对话框控件进行编程 3.掌握设计自定义对话框的有关技术 4.掌握工具栏的设计技术 5.了解鼠标和键盘事件及其事件过程的编写 6.综合应用所学的知识,编制具有可视化界面的应用程序 二、实验内容

三、实验分析及设计 实验7-1 对话框是模态的,将窗体作为模态对话框显示应使用如下语句: Frmabout.shou vbmodal 实验7-2 实验7-3 假定max为最大字符的下标,标记最大字符的语句为 List1.list(max) = list1.list(max) & space(10)&”*” 实验7-4 弹出式菜单设置时需要设置为不可见 实验7-5 一个项目中可以有若干窗体,但name属性不能相同,所以需要讲窗体的名称修改后才能汇总 四、程序代码 实验7-1 Private Sub about_Click() frmAbout1.Show vbModal End Sub Private Sub FileMenu02_Click() End End Sub Private Sub FileMuen01_Click() Text1.Text = "" End Sub Private Sub fontcu_Click() Text1.FontBold = True

Private Sub fontsize12_Click() Text1.FontSize = 12 End Sub Private Sub fontsize8_Click() Text1.FontSize = 8 End Sub Private Sub fontxie_Click() Text1.FontItalic = True End Sub 实验7-2 Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button) Select Case Button.Index Case 1 Call cuti_click Case 2 Call xieti_click End Select Label1.FontBold = True End Sub Private Sub cuti_click() Label1.FontBold = True End Sub Private Sub xieti_click() Label1.FontItalic = True End Sub 实验7-3 Dim a(15) As String Private Sub F2_Click() List1.Clear Erase a Randomize For i = 0 To 14 a(i) = Int(Rnd * (90 - 65 + 1) + 65) List1.AddItem Chr(a(i)) Next i End Sub Private Sub F3_Click() Dim large As Integer, num As Integer large = 0

实验报告四图像锐化处理

姓名:学号:班级: 实验日期:实验成绩: 一.实验目的 (1)学习如何用锐化处理技术来加强图像的目标边界和图像细节,对图像进行梯度算子、拉普拉斯算子、Sobel算子设计,使图 像的某些特征(如边缘、轮廓等)得以进一步的增强及突出。(2)分析模板大小对空域锐化滤波的影响,比较不同滤波器的处理效果,分析其优缺点。 二.实验原理 锐化处理的主要目的是突出灰度的过度部分,在空间域中,均值滤波类似于积分,那锐化滤波类似于微分,微分算子的响应程度与图像在用算子操作的这一点突变程度成正比,图像积分模糊了图像,同时起到了消除噪声的作用;图像微分增强边缘和其它突变(如噪声),而削弱灰度变换缓慢的区域,laplacian算子类似于二阶微分,强调的是图像灰度级剧烈变换的部分,而sobel算子类似于一阶微分,强调的是图像灰度级缓慢变化的部分。 三.实验内容及结果

(1)选择一副图像,分别使用拉普拉斯算子、sobel算子对图像进行锐化滤波,并观察滤波效果。 图 1 laplacian及sobel算子处理图像 (2)选择一副图像,构造一个中心系数为-24的5×5的类似于拉普拉斯模板对图像进行锐化,与上述拉普拉斯算子的结果相比,是否能得到更加清晰的结果? 图 2 不同大小laplacian模板处理原图及二值图 四.结果分析

(1)观察图一,可以发现对原图进行sobel算子运算后,原图阶梯的边缘细节被突显出来了,而每个阶梯灰度级保持不变的背景则没了,全变黑了,而对原图进行laplacian算子运算后,边缘部分则只剩下些杂乱无章的点了,基本是在sobel算子运算过后筛选出来的缓慢突变边缘上的一些突变更快的点。如果把sobel算子比作是一阶微分就不难理解它是对原图的缓慢边缘变化部分,而把laplacian算子比作是二阶微分的话,就是原图的剧烈突变部分,由于原图像的阶梯边缘在灰度级上是缓慢过度的,所以使用sobel算子边缘的突出效果更明显,而laplacian算子无论模板大小为多大,都不能清晰的显示出边缘。至于背景为什么会变黑是因为算子模板中有负因子,当计算的出来的值为负数时,自动标定其为0,也就是黑色。 (2)观察图二,可以发现对原图使用无论多大的laplacian模板,效果都很差,原因就是上述提到的原图像的边缘灰度级是缓慢变化的,对原图灰度级二值化处理,由于灰度值大小只有0和1两个值,阶梯边缘两边的值分别为0和1,这样边缘突变就成了一个单位的剧烈突变,所以3*3的laplacian算子效果就和上述的sobel算子效果相似,而当增加laplacian算子的大小到5*5时,边缘检测效果更加明显。正印证了微分算子的响应程度与图像在用算子操作的这一点突变程度成正比这一原理。

相关文档
最新文档