搜档网
当前位置:搜档网 › 实验三--图形用户界面设计(汽院含答案)

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

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

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

实验三图形用户界面设计

实验目的

1.掌握Java语言中GUI编程的基本方法

2.掌握Java语言中AWT组件的基本用法

3.掌握Java语言中Swing组件的基本用法实验导读

1.通过图形用户界面(GUI:Graphics User

Interface),用户和程序之间可以方便地进

行交互。

AWT(Abstract Windowing Toolkit),中文译为抽象窗口工具包,是Java提供的用来建立和设置Java的图形用户界面的基本工具。AWT由Java中的java.awt包提供,里面包含了许多可用来建立与平台无关的图形用户界面(GUI)的类,这些类又被称为组件(components)。

Swing是一个用于开发Java应用程序用户界面的开发工具包。它以抽象窗口工具包(AWT)为基础使跨平台应用程序可以使用任何可插拔的外观风格。Swing开发人员只用很少的代码就可以利用Swing丰富、灵活的功能和模块化组件来创建优雅的用户界面。

JDK写程序所有功能都是靠虚拟机去操作本地操作系统。比如window下,就是JDK用windows API实现功能。而awt包中很多组件是组件自身去调用本地操作系统代码

swing包中的组件采用的是调用本地虚拟机方法,由虚拟机再调用本地操作系统代码。意思就是中间多了一层,这样就加强了swing包的移植性,与本地关系不那强了。

图3.1 AWT常用组件继承关系图Container为容器,是一个特殊的组件,该组件中可以通过add方法添加其他组件进来。

2.布局,容器中的组件的排放方式。常见的布

局管理器:

FlowLayout(流式布局管理器):从左到右的顺序排列。Panel默认的布局管理器。BorderLayout(边界布局管理器):东,南,西,北,中。Frame默认的布局管理器。GridLayout(网格布局管理器):规则的矩阵CardLayout(卡片布局管理器):选项卡GridBagLayout(网格包布局管理器):非规则的矩阵

3.类JFrame是java.awt.Frame 的扩展版本,

该版本添加了对 JFC/Swing 组件架构的支持,常用方法如下:

1)J Frame() 该构造方法可以创建一个无

标题的窗口,窗口的默认布局为

BorderLayout布局。

2)J Frame(String s) 该构造方法可以创

建一个标题为s的窗口,窗口的默认布局

为BorderLayout布局。

3)p ublic void setBounds(int a,int

b,int width,int height) 窗口调用该

方法可以设置出现在屏幕上时的初始位

置是(a,b),即距屏幕左面a个像素、距

屏幕上方b个像素;窗口的宽是width,

高是height。

4)p ublic void setSize(int width,int

height) 设置窗口的大小,窗口在屏幕

出现是默认位置是(0,0)。

5)p ublic void setVisible(boolean b)

设置窗口是可见还是不可见,窗口默认是

不可见的。

6)p ublic void setResizable(boolean b)

设置窗口是否可调整大小,窗口默认是可

调整大小的。

7)p ublic void

setDefaultCloseOperation(int

operation) 设置用户在此窗体上发起

"close" 时默认执行的操作。

8)p ublic void

setLocationRelativeTo(Component c)

设置窗口相对于指定组件的位置。如果

组件当前未显示,或者 c 为 null,则此

窗口将置于屏幕的中央。

实验内容

1.图形用户界面设计程序(ArtFont.java)

要求:设计一个文字字体设置窗体,在该窗体中可以设置要显示文字的字体内容,包括字体名称、字体大小、粗体和斜体等字体风格。

并模拟在不同操作系统下的显示效果。程序的最终显示效果如下:

提示:整个窗体继承于JFrame,采用BorderLayout布局。在窗体中添加三个JPanel:northPanel、centerPanel和southPanel,分别位于窗体的北部、中部和南部,然后分别在各个面板中添加其它组件,并逐步完善程序功能。

请按以下步骤完成程序设计:

1)新建ArtFont类,该类用于显示主界面。

其主要代码如下:

public class ArtFont extends JFrame {

JComboBox fontType;//字体样式下拉框,

JComboBox fontSize;//字体大小下拉框

JComboBox windowStyle;//窗体样式下拉框

JCheckBox boldBx;// 粗体按钮

JCheckBox italicBx;// 斜体按钮

JButton colorBtn;// 颜色按钮;

String[] fontNames;// 字体名称;

String[] fontSizes;// 字体大小;

JLabel label;// 输入提示标签;

JTextField inputText;// 文字输入框;

JTextArea txtArea;// 文字显示区;

JPanel northPanel;// 字体设置;

JPanel centerPanel;// 显示效果区

JPanel southPanel;//样式设置

Font font;

int boldStyle, italicStyle, underlineStyle;

int fontSizeStyle;

String fontNameStyle;

Color colorStyle = Color.black;// 设置字体的默认颜色为

黑色;

String[] style = { "默认显示效果", "Windows显示效果",

"Unix显示效果" };

public ArtFont() {

super("字体设置");

// 设置默认字体

boldStyle = 0;

italicStyle = 0;

underlineStyle = 0;

fontSizeStyle = 10;

fontNameStyle = "宋体";

font = new Font(fontNameStyle, boldStyle + italicStyle, fontSizeStyle);

northPanel = getNorthPanel();

centerPanel = getCenterPanel();

southPanel = getSouthPanel();

// 设置容器;

Container container = getContentPane();

container.setLayout(new BorderLayout());

【补充代码】//将northPanel添加到窗体的北部

【补充代码】//将centerPanel添加到窗体的北部

【补充代码】//将southPanel添加到窗体的北部

setSize(500, 300);

【补充代码】//将窗体位于屏幕的中央

setVisible(true); }

private JPanel getNorthPanel() {

JPanel panel = new JPanel();

return panel;

}

private JPanel getCenterPanel() {

JPanel panel = new JPanel();

return panel;

}

private JPanel getSouthPanel() {

JPanel panel = new JPanel();

return panel;

}

public static void main(String args[]) {

ArtFont artFont = new ArtFont();

artFont.setDefaultCloseOperation(JFrame.EXIT_ON_CL

OSE);

}

}

2)根据ArtFont类代码和程序界面图设计

北部面板northPanel:

private JPanel getNorthPanel() {

JPanel panel = new JPanel();

【补充代码…】

return panel;

}

3)根据ArtFont类代码和程序界面图设计

中部面板centerPanel:

private JPanel getCenterPanel() {

JPanel panel = new JPanel();

【补充代码…】

return panel;

}

4)根据ArtFont类代码和程序界面图设计

南部面板southPanel:

private JPanel getSouthPanel() {

JPanel panel = new JPanel();

//获得系统默认字体

GraphicsEnvironment ge =

GraphicsEnvironment.getLocalGraphicsEnvironment();

fontNames = ge.getAvailableFontFamilyNames();

fontType = new JComboBox(fontNames);

//设置字体大小

fontSizes = new String[63];

for (int i = 0; i < fontSizes.length; i++) {

fontSizes[i] = Integer.toString(i+10);

}

【补充代码…】

return panel;

}

5)调试、编译和运行程序,并显示正确界面。

答案:

import javax.swing.*;

import java.awt.*;

public class ArtFont extends JFrame {

JComboBox fontType;//字体样式下拉框,

JComboBox fontSize;//字体大小下拉框

JComboBox windowStyle;//窗体样式下拉框

JCheckBox boldBx;// 粗体按钮

JCheckBox italicBx;// 斜体按钮

JButton colorBtn;// 颜色按钮;

String[] fontNames;// 字体名称;

String[] fontSizes;// 字体大小;

JLabel label;// 输入提示标签;

JTextField inputText;// 文字输入框;

JTextArea txtArea;// 文字显示区;

JPanel northPanel;// 字体设置;

JPanel centerPanel;// 显示效果区

JPanel southPanel;//样式设置

Font font;

int boldStyle, italicStyle, underlineStyle;

int fontSizeStyle;

String fontNameStyle;

Color colorStyle = Color.black;// 设置字体的默认颜色为黑色;

String[] style= { "默认显示效果", "Windows显示效果", "Unix显示效果"};

public ArtFont() {

super("字体设置");

// 设置默认字体

boldStyle = 0;

italicStyle = 0;

underlineStyle = 0;

fontSizeStyle = 10;

fontNameStyle = "宋体";

font = new Font(fontNameStyle, boldStyle + italicStyle, fontSizeStyle);

northPanel = getNorthPanel();

centerPanel = getCenterPanel();

southPanel = getSouthPanel();

// 设置容器;

Container container = getContentPane();

container.setLayout(new BorderLayout());

container.add(northPanel,BorderLayout.NORTH); //【补充代码】//将northPanel添加到窗体的北部

container.add(centerPanel,BorderLayout.CENTER); //【补充代码】//将centerPanel添加到窗体的北部

container.add(southPanel,BorderLayout.SOUTH); //【补充代码】//将southPanel添加到窗体的北部

setSize(500, 300);

//【补充代码】//将窗体位于屏幕的中央

setLocationRelativeTo(null);

setVisible(true); }

private JPanel getNorthPanel() {

JPanel panel = new JPanel();

label = new JLabel("输入",JLabel.LEFT);

// 设置输入提示标签

panel.add(label);

// 设置文本输入框;

inputText=new JTextField(10);

panel.add(inputText);

// inputText.addActionListener(this);

boldBx=new JCheckBox("粗体");

panel.add(boldBx);

italicBx=new JCheckBox("斜体");

panel.add(italicBx);

colorBtn=new JButton("颜色");

panel.add(colorBtn);

return panel;

}

private JPanel getCenterPanel() {

JPanel panel = new JPanel();

panel.setLayout(new BorderLayout());

txtArea=new JTextArea();

panel.add(txtArea,BorderLayout.CENTER);

return panel;

}

private JPanel getSouthPanel() {

JPanel panel = new JPanel();

GraphicsEnvironment

ge=GraphicsEnvironment.getLocalGraphicsEnvironment();

fontNames=ge.getAvailableFontFamilyNames();// 获得系统中所有字体的名字;

fontType=new JComboBox(fontNames);

fontType.setEditable(false);

fontType.setMaximumRowCount(10);

panel.add(fontType);

fontSizes=new String[63];

for(int i=0;i<63;i++)

{ fontSizes[i]=Integer.toString((i+10)); }

fontSize=new JComboBox(fontSizes);

fontSize.setEditable(false);

fontSize.setMaximumRowCount(10);

panel.add(fontSize);

windowStyle = new JComboBox(style);

panel.add(windowStyle);

return panel;

}

public static void main(String args[]) {

ArtFont artFont = new ArtFont();

artFont.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

}

2.日历应用程序设计

编写一个应用程序,设计一个窗体,该窗体为BorderLayout布局。窗体的中心添加一个Panel容器:Panel容器的布局是7行7列的GridLayout布局,Panel容器中放置49个标签,用来显示日历。窗口的北面添加一个Panel 容器,其布局是FlowLayout布局,Panel容器中放置两个按钮:nextMonth和previousMonth。窗口的南面添加一个Panel 容器,其布局是FlowLayout,Panel容器中放置一个标签用来显示一些信息。

请按以下步骤完成程序设计:

1)编写CalendarBean类,实现日期类:public class CalendarBean {

String day[];

int year = 2013, month = 0;

public void setYear(int year) {

this.year = year;

}

public int getYear() {

return year;

}

public void setMonth(int month) {

this.month = month;

}

public int getMonth() {

return month;

}

//返回某年某月1号开始的日期数组

public String[] getCalendar() {

String a[] = new String[42];

Calendar 日历 = Calendar.getInstance();

//注意:1月份是从0开始,所以要减1

日历.set(year, month - 1, 1);

int星期几 = 日历.get(Calendar.DAY_OF_WEEK) - 1;

int day = 0;

if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12) {

day = 31;

}

if (month == 4 || month == 6 || month == 9 || month == 11) {

day = 30;

}

if (month == 2) {

if(((year% 4 == 0) && (year% 100 != 0)) || (year% 400 == 0)) {

day = 29;

} else {

day = 28;

}

}

for (int i = 星期几, n = 1; i < 星期几 + day; i++) { a[i] = String.valueOf(n);

n++;

}

return a;

}

}

2)补充代码,完成日历窗体界面类设计:

public class CalendarFrame extends Frame {

Label labelDay[] = new Label[42];

Label labelYear;

Button titleName[] = new Button[7];

Button nextMonth, previousMonth;

Label showMessage;

TextField inputYear;

CalendarBean calendar;

String name[] = { "日", "一", "二", "三", "四", "五",

"六" };

int year = 2013, month = 1;

String days[];

public CalendarFrame() {

calendar = new CalendarBean();

calendar.setYear(year);

calendar.setMonth(month);

days = calendar.getCalendar();

ScrollPane scrollPane = new ScrollPane();

scrollPane.add(getCenterPanel());

【补充代码】// 窗口添加scrollPane在中心区域

【补充代码】// 窗口添加pNorth 在北面区域

【补充代码】// 窗口添加pSouth 在南区域。

}

private Panel getNorthPanel() {

Panel panel = new Panel();

【补充代码…】

return panel;

}

private Panel getCenterPanel() {

Panel panel = new Panel();

【补充代码】// 将panel的布局设置为7行7列的GridLayout 布局

for (int i = 0; i < 7; i++) {

titleName[i] = new Button(name[i]);

【补充代码】// panel添加组件titleName[i]。

}

for (int i = 0; i < 42; i++) {

labelDay[i] = new Label("", Label.CENTER);

【补充代码】// panel添加组件labelDay[i]。

}

for (int i = 0; i < 42; i++) {

labelDay[i].setText(days[i]);

}

return panel;

}

private Panel getSouthPanel() {

Panel panel = new Panel();

【补充代码…】

return panel;

}

}

3)设计主应用程序类:

public class CalendarMainClass {

public static void main(String args[]) {

CalendarFrame frame = new CalendarFrame();

frame.setTitle("日历应用程序");

frame.setBounds(100, 100, 360, 300);

frame.setVisible(true);

frame.validate();

}

}

4)调试、编译和运行程序,并显示正确界面。CalendarBean.java

import java.util.Calendar;

public class CalendarBean {

String day[];

int year = 2013, month = 0;

public void setYear(int year) {

this.year = year;

}

public int getYear() {

return year;

}

public void setMonth(int month) {

this.month = month;

}

public int getMonth() {

return month;

}

//返回某年某月1号开始的日期数组

public String[] getCalendar() {

String a[] = new String[42];

Calendar 日历 = Calendar.getInstance();

//注意:1月份是从0开始,所以要减1

日历.set(year, month - 1, 1);

int星期几 = 日历.get(Calendar.DAY_OF_WEEK) - 1;

int day = 0;

if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12) {

day = 31;

}

if (month == 4 || month == 6 || month == 9 || month == 11) { day = 30;

}

if (month == 2) {

if (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0)) {

day = 29;

} else {

day = 28;

}

}

for (int i = 星期几, n = 1; i < 星期几 + day; i++) {

a[i] = String.valueOf(n);

n++;

}

return a;

}

}

CalendarFrame.java

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

public class CalendarFrame extends JFrame implements

ActionListener,KeyListener{

/**

*

*/

private static final long serialVersionUID = 1L;

Label labelDay[] = new Label[42];

Label labelYear;

Button titleName[] = new Button[7];

Button nextMonth, previousMonth;

Label showMessage;

TextField inputYear;

CalendarBean calendar;

String name[] = { "日", "一", "二", "三", "四", "五", "六" };

int year = 2013, month = 1;

String days[];

public CalendarFrame() {

calendar = new CalendarBean();

calendar.setYear(year);

calendar.setMonth(month);

days = calendar.getCalendar();

ScrollPane scrollPane = new ScrollPane();

scrollPane.add(getCenterPanel());

add("Center",scrollPane);//【补充代码】// 窗口添加scrollPane在中心区域

add(getNorthPanel(),BorderLayout.NORTH);//【补充代码】// 窗口添加pNorth 在北面区域

add(getSouthPanel(),BorderLayout.SOUTH);//【补充代码】// 窗口添加pSouth 在南区域。

}

private Panel getNorthPanel() {

Panel panel = new Panel();

//【补充代码…】

panel.setLayout(new FlowLayout(FlowLayout.CENTER,10,5));

showMessage=new Label("请输入年份:");

inputYear=new TextField(8);

previousMonth=new Button("上月");

nextMonth=new Button("下月");

panel.add(showMessage);

panel.add(inputYear);

panel.add(previousMonth);

panel.add(nextMonth);

return panel;

}

private Panel getCenterPanel() {

Panel panel = new Panel();

panel.setLayout(new GridLayout(7,7));//【补充代码】// 将panel的布局设置为7行7列的GridLayout布局

for (int i = 0; i < 7; i++) {

titleName[i] = new Button(name[i]);

panel.add(titleName[i]);//【补充代码】// panel添加组件titleName[i]。

}

for (int i = 0; i < 42; i++) {

labelDay[i] = new Label("", Label.CENTER);

panel.add(labelDay[i]);//【补充代码】// panel添加组件labelDay[i]。

}

for (int i = 0; i < 42; i++) {

labelDay[i].setText(days[i]);

}

return panel;

}

private Panel getSouthPanel() { CalendarMainClass.java

import java.awt.*;

import javax.swing.*;

public class CalendarFrame extends JFrame {

/**

*

*/

private static final long serialVersionUID = 1L;

Label labelDay[] = new Label[42];

Label labelYear;

Button titleName[] = new Button[7];

Button nextMonth, previousMonth;

Label showMessage;

TextField inputYear;

CalendarBean calendar;

String name[] = { "日", "一", "二", "三", "四", "五", "六" };

int year = 2013, month = 1;

String days[];

public CalendarFrame() {

calendar = new CalendarBean();

calendar.setYear(year);

calendar.setMonth(month);

days = calendar.getCalendar();

ScrollPane scrollPane = new ScrollPane();

scrollPane.add(getCenterPanel());

add("Center",scrollPane);//【补充代码】// 窗口添加scrollPane在中心区域

add(getNorthPanel(),BorderLayout.NORTH);//【补充代码】// 窗口添加pNorth 在北面区域

add(getSouthPanel(),BorderLayout.SOUTH);//【补充代码】// 窗口添加pSouth 在南区域。

}

private Panel getNorthPanel() {

Panel panel = new Panel();

//【补充代码…】

panel.setLayout(new FlowLayout(FlowLayout.CENTER,10,5));

showMessage=new Label("请输入年份:");

inputYear=new TextField(8);

previousMonth=new Button("上月");

nextMonth=new Button("下月");

panel.add(showMessage);

panel.add(inputYear);

panel.add(previousMonth);

panel.add(nextMonth);

return panel;

}

private Panel getCenterPanel() {

Panel panel = new Panel();

panel.setLayout(new GridLayout(7,7));//【补充代码】// 将panel的布局设置为7行7列的GridLayout布局

for (int i = 0; i < 7; i++) {

titleName[i] = new Button(name[i]);

panel.add(titleName[i]);//【补充代码】// panel添加组件titleName[i]。

}

for (int i = 0; i < 42; i++) {

labelDay[i] = new Label("", Label.CENTER);

panel.add(labelDay[i]);//【补充代码】// panel添加组件labelDay[i]。

}

for (int i = 0; i < 42; i++) {

labelDay[i].setText(days[i]);

}

return panel;

}

private Panel getSouthPanel() {

Panel panel = new Panel();

//panel.setLayout(new FlowLayout(FlowLayout.CENTER));

labelYear=new Label("月份:"+calendar.getYear()+"年

"+calendar.getMonth()+"月");

panel.add(labelYear);//【补充代码…】

return panel;

}

}

实验总结

请书写你对本次实验有哪些实质性的收获和体会,以及对本次实验有何良好的建议?

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

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

目录 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)用户管理

图形学实验报告

计 算 机 图 形 学 实验指导书 学号:1441901105 姓名:谢卉

实验一:图形的几何变换 实验学时:4学时 实验类型:验证 实验要求:必修 一、实验目的 二维图形的平移、缩放、旋转和投影变换(投影变换可在实验三中实现)等是最基本的图形变换,被广泛用于计算机图形学的各种应用程序中,本实验通过算法分析以及程序设计实验二维的图形变换,以了解变换实现的方法。如可能也可进行裁剪设计。 二、实验内容 掌握平移、缩放、旋转变换的基本原理,理解线段裁剪的算法原理,并通过程序设计实现上述变换。建议采用VC++实现OpenGL程序设计。 三、实验原理、方法和手段 1.图形的平移 在屏幕上显示一个人或其它物体(如图1所示),用交互操作方式使其在屏幕上沿水平和垂直方向移动Tx和Ty,则有 x’=x+Tx y’=y+Ty 其中:x与y为变换前图形中某一点的坐标,x’和y’为变换后图形中该点的坐标。其交互方式可先定义键值,然后操作功能键使其移动。 2.图形的缩放 在屏幕上显示一个帆船(使它生成在右下方),使其相对于屏幕坐标原点缩小s倍(即x方向和y方向均缩小s倍)。则有: x’=x*s y’=y*s 注意:有时图形缩放并不一定相对于原点,而是事先确定一个参考位置。一般情况下,参考点在图形的左下角或中心。设参考点坐标为xf、yf则有变换公式x’=x*Sx+xf*(1-Sx)=xf+(x-xf)*Sx y’=y*Sy+yf*(1-Sy)=yf+(y-yf)*Sy 式中的x与y为变换前图形中某一点的坐标,x’和y’为变换后图形中该点的坐标。当Sx>1和Sy>1时为放大倍数,Sx<1和Sy<1时为缩小倍数(但Sx和Sy

实验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

计算机图形学实验报告

《计算机图形学》实验报告姓名:郭子玉 学号:2012211632 班级:计算机12-2班 实验地点:逸夫楼507 实验时间:15.04.10 15.04.17

实验一 1 实验目的和要求 理解直线生成的原理;掌握典型直线生成算法;掌握步处理、分析实验数据的能力; 编程实现DDA 算法、Bresenham 中点算法;对于给定起点和终点的直线,分别调用DDA 算法和Bresenham 中点算法进行批量绘制,并记录两种算法的绘制时间;利用excel 等数据分析软件,将试验结果编制成表格,并绘制折线图比较两种算法的性能。 2 实验环境和工具 开发环境:Visual C++ 6.0 实验平台:Experiment_Frame_One (自制平台) 3 实验结果 3.1 程序流程图 (1)DDA 算法 是 否 否 是 是 开始 计算k ,b K<=1 x=x+1;y=y+k; 绘点 x<=X1 y<=Y1 绘点 y=y+1;x=x+1/k; 结束

(2)Mid_Bresenham 算法 是 否 否 是 是 是 否 是 否 开始 计算dx,dy dx>dy D=dx-2*dy 绘点 D<0 y=y+1;D = D + 2*dx - 2*dy; x=x+1; D = D - 2*dy; x=x+1; x

3.2程序代码 //-------------------------算法实现------------------------------// //绘制像素的函数DrawPixel(x, y); (1)DDA算法 void CExperiment_Frame_OneView::DDA(int X0, int Y0, int X1, int Y1) { //----------请实现DDA算法------------// float k, b; float d; k = float(Y1 - Y0)/float(X1 - X0); b = float(X1*Y0 - X0*Y1)/float(X1 - X0); if(fabs(k)<= 1) { if(X0 > X1) { int temp = X0; X0 = X1; X1 = temp; }

计算机图形学实验报告实验2

大学实验报告 学院: 计算机科学与信息专业:计算机科学与技术班级:计科101 喻志华学号1008060024 实验组实验时间2013/3/30 指导教师吴云成绩实验项目名称圆和椭圆的生成算法 实 验目的 根据圆的Brensenham算法、中点算法和中点改进算法,以及椭圆的中点算法,编写程序,实现圆与椭圆的绘制。 实 验要求1.圆、椭圆的中点算法 2.圆的优化后的算法:二次差分法 3.编制源程序; 4.对于一些较为重要的算法,可以摘抄在报告中; 实验原理 1.中点算法 A.构造函数 F(X,Y)=X2+Y2-R2,则可知 F(M)< 0:M在圆,取T F(M)≥ 0:M在圆外,取 B B.第一个M点的值有: (一)DM0 = F(M0)= F(1,R-0.5)= 12+(R-0.5)2-R2=1.25-R 若 D=d-0.25 则判别式d<0等价于D<-0.25。即DM0=1-R与DM0=1.25-R等价。 (二)如果dM<0,表示下一中点M在圆,选择T点,且: dMT= F(MT)= F(xp+2,yp-0.5) 则: ?dMT= dMT - dM=2xp+3 (三)如果dM>0,表示下一中点M在圆外,选择B点,且: dMB= F(xMB,yMB)= F(xp+2,yp-1.5)则: ?dMB= dMB - dM=2xp-2yp +5 2.中点改进算法——增量算法

设圆上某点I(xi,yi);则下一点为J点,坐标为(xi+1,yj)dT=2xp+3; dB=2(xp-yp)+5; d1=d2=0; 因为x每次加1,所以 dj点 A.将增量?dMT=2(xi+1)+3=dT+2=dT+d1; (d1=d1+2) B.将增量?dMB=2(xi+1)-2yj+5=dB+d1+d2; dj较之于di,x部分增量增加相同的量,y部分两种情况 1.取T点,yj不减1,y部分增量的增量无变化 2.取B点,yj减1,y部分增量的增量加 2. 所以当y—时,d2=d2+2 因此,d<0, d=d+dT+d1; d>0, d=d+dB+d1+d2; 3.Brensenham算法 1.基本思想: 当|D(Ti)|≥|D(Bi)|,则Bi更接近于圆周,选择Bi; 当|D(Ti)|<|D(Bi)|,则Ti更接近于圆周,选择Ti; 若令D=|D(Ti)|-|D(Bi)| 则D≥0,取Bi; D<0,取Ti; 2.三种情况 A.设x0=0,y0=R;则T1为(1,R),B1为(1,R-1), d1=(12+R2-R2)+[(12+(R-1)2-R2]=3-2R B.若di<0,则取Ti作为下一点,即Pi(xi-1+1,yi-1); d(i+1)=di+4xi-1+6 C.若di≥0,则取Bi作为下一点,即Pi(xi-1+1,yi-1-1), d(i+1)=di+4(xi-1-yi-1)+10 4.椭圆的中点算法

计算机图形学实验三报告

计算机科学与通信工程学院 实验报告 课程计算机图形学 实验题目二维图形变换 学生姓名 学号 专业班级 指导教师 日期

成绩评定表

二维图形变换 1. 实验内容 完成对北极星图案的缩放、平移、旋转、对称等二维变换。 提示:首先要建好图示的北极星图案的数据模型(顶点表、边表)。另外,可重复调用“清屏”和“暂停”等函数,使整个变换过程具有动态效果。 2. 实验环境 软硬件运行环境:Windows XP 开发工具:visual studio 2008 3. 问题分析

4. 算法设计 程序框架: //DiamondView.h class CDiamondView : public CView { …… public: //参数输入和提示对话框 void Polaris();//北极星 …… }; //DiamondView.cpp void CDiamondView::OnMenuDiamond() { IsCutting = FALSE; if(dlgDiamond.DoModal()==IDOK) DrawDiamond(dlgDiamond.m_nVertex,dlgDiamond.

m_nRadius,100);//调用绘制金刚石的函数 } //北极星 void CDiamondView::Polaris() {......} 5. 源代码 //北极星 void hzbjx(CDC* pDC,long x[18],long y[18]) { CPen newPen1,*oldPen; newPen1.CreatePen(PS_SOLID,2,RGB(255,0,0)); oldPen = pDC->SelectObject(&newPen1); POINT vertex1[11]={{x[1],y[1]},{x[2],y[2]},{x[3],y[3]},{x[4],y[4]},{x[5],y[5]},{x[3],y[3]},{x[1],y[1]}, {x[6],y[6]},{x[3],y[3]},{x[7],y[7]},{x[5],y[5]}}; pDC->Polyline(vertex1, 11); newPen1.DeleteObject(); newPen1.CreatePen(PS_SOLID, 2, RGB(0,255,0)); oldPen = pDC->SelectObject(&newPen1); POINT vertex2[5]={{x[6],y[6]},{x[8],y[8]},{x[9],y[9]},{x[3],y[3]},{x[8],y[8]}}; pDC->Polyline(vertex2, 5); POINT vertex3[5]={{x[4],y[4]},{x[10],y[10]},{x[11],y[11]},{x[3],y[3]},{x[10],y[10]}}; pDC->Polyline(vertex3, 5);

Visual FoxPro 程序设计实验报告

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

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

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

图形学实验报告

山东建筑大学测绘地理信息学院 实验报告 (2016—2017学年第一学期) 课程:计算机图形学 专业:地理信息科学 班级:地信141 学生姓名:王俊凝 学号:20140113010 指

实验一直线生成算法设计 一、实验目的 掌握基本图形元素直线的生成算法,利用编程语言C分别实现直线和圆的绘制算法。 二、实验任务 在TurboC环境下开发出绘制直线和圆的程序。 三、实验仪器设备 计算机。 四、实验方法与步骤 1 运行TurboC编程环境。 2 编写Bresenham直线绘制算法的函数并进行测试。 3 编写中点圆绘制算法的函数并进行测试。 4 增加函数参数,实现直线颜色的设置。 提示: 1. 编程时可分别针对直线和圆的绘制算法,设计相应的函数,例如void drawline(…)和void drawcircle(…),直线的两个端点可作为drawline的参数,圆的圆心和半径可作为drawcircle的参数。 2. 使用C语言编写一个结构体类型用来表示一个点,结构体由两个成员构成,x和y。这样,在向函数传入参数时,可使用两个点类型来传参。定义方法为:

typedef struct{ int x; int y; }pt2; 此处,pt2就是定义的一个新的结构体数据类型,之后就可用pt2来定义其他变量,具体用法见程序模板。 3. 在main函数中,分别调用以上函数,并传入不同的参数,实现对直线的绘制。 4. 线的颜色也可作为参数传入,参数可采用TurboC语言中的预设颜色值,具体参见TurboC图形函数。 五、注意事项 1 代码要求正确运行,直线和圆的位置应当为参数,实现可配置。 2 程序提交.c源文件,函数前和关键代码中增加注释。 程序模板 #include #include typedef struct{ int x; int y; }pt2; /*declare your drawing functions.*/ void drawline(pt2 startpt,pt2 endpt,int color); void drawcircle(pt2 centerpt,int radius,int color); void circlePlotPoints(pt2 centerpt,int x,int y,int color); int main() { int color,radius;

计算机图形学实验

实验1 直线的绘制 实验目的 1、通过实验,进一步理解和掌握DDA和Bresenham算法; 2、掌握以上算法生成直线段的基本过程; 3、通过编程,会在TC环境下完成用DDA或中点算法实现直线段的绘制。实验环境 计算机、Turbo C或其他C语言程序设计环境 实验学时 2学时,必做实验。 实验内容 用DDA算法或Besenham算法实现斜率k在0和1之间的直线段的绘制。 实验步骤 1、算法、原理清晰,有详细的设计步骤; 2、依据算法、步骤或程序流程图,用C语言编写源程序; 3、编辑源程序并进行调试; 4、进行运行测试,并结合情况进行调整; 5、对运行结果进行保存与分析; 6、把源程序以文件的形式提交; 7、按格式书写实验报告。 实验代码:DDA: # include # include

void DDALine(int x0,int y0,int x1,int y1,int color) { int dx,dy,epsl,k; float x,y,xIncre,yIncre; dx=x1-x0; dy=y1-y0; x=x0; y=y0; if(abs(dx)>abs(dy)) epsl=abs(dx); else epsl=abs(dy); xIncre=(float)dx/(float)epsl; yIncre=(float)dy/(float)epsl; for(k=0;k<=epsl;k++) { putpixel((int)(x+0.5),(int)(y+0.5),4); x+=xIncre; y+=yIncre; } } main(){ int gdriver ,gmode ;

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)

oracle设计实验报告材料

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

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

计算机图形学实验报告

《计算机图形学》 实验报告 学号:0908610211 姓名:宋雪英 班级:计算机0961 项目: 1.利用其它两种画直线方法实现放大10陪显示方法,交互式画直线,预先定义直线段的起止端点,每点击一次鼠标左键,画出直线上的一点,直到终点为止。 2.利用方形、线性两种画刷来绘制圆和椭圆。 3.实现交互式二维图形的放缩,旋转和对称变换 2012年12月25日

基本图形的生成技术 一、实验目的 在一个图形系统中,基本图形(也称为图元、图素等)的生成技术是最基本的,任何复杂的图形都是由基本图形组成的,基本图形生成的质量直接影响该图形系统绘图的质量。所以,需要设计出精确的基本图形生成算法,以确保图形系统绘图的精确性。本次实验的目的就是利用Bresenham 算法和中心画线法两种画直线方法实现放大10陪显示方法,交互式画直线,预先定义直线段的起止端点,每点击一次鼠标左键,画出直线上的一点,直到终点为止。利用方形、线性两种画刷来绘制圆和椭圆。实现交互式二维图形的放缩,旋转和对称变换。 二、实验任务 1.利用其它两种画直线方法实现放大10陪显示方法,交互式画直线,预先定义直线段的起止端点,每点击一次鼠标左键,画出直线上的一点,直到终点为止。 2.利用方形、线性两种画刷来绘制圆和椭圆。 3.实现交互式二维图形的放缩,旋转和对称变换。 三、画直线的实验内容 任务一:利用其它两种画直线方法实现放大10陪显示方法交互式画直线,预先定义直线段的起止端点,每点击一次鼠标左键,画出直线上的一点,直到终点为止。 1、设计思路 第一步:建立DDAMouseLine工程文件; 第二步:向视图类中添加自定义的成员变量 用鼠标右键单击视图类,选择“Add Member Variable…”,添加下面三个成员变量。 proctected : CPoint m_p1; //起点 CPoint m_p2; //起点 CPoint m_p; //点击鼠标时点的取值 第三步:向视图类中添加自定义的成员函数原型:

计算机图形学实验报告记录

计算机图形学实验报告记录

————————————————————————————————作者:————————————————————————————————日期:

计算机图形学实验报告 姓名:___ __________ 学号:_____ ________ 班级:______ _______ 时间:_____2016年12月_________

实验一OpenGL编程与图形绘制 1.实验目的 了解OpenGL编程,并熟悉OpenGL的主要功能、绘制流程和基本语法。学会配置OpenGL环境,并在该环境中编程绘图。 2.实验内容 OpenGL的主要功能:模型绘制、模型观察、颜色模式、光照应用、图像效果增强、位图和图像处理、纹理映射、实时动画和交互技术。 OpenGL的绘制流程分为两个方面:一个完整的窗口系统的OpenGL图形处理系统的结构为:最底层为图形硬件,第二层为操作系统,第三层为窗口系统,第四层为OpenGL,最上面的层为应用软件;OpenGL命令将被放在一个命令缓冲区中,这样命令缓冲区中包含了大量的命令、顶点数据和纹理数据。当缓冲区被清空时,缓冲区中的命令和数据都将传递给流水线的下一个阶段。 OpenGL的基本语法中相关库有:OpenGL核心库:gl、OpenGL实用程序库:glu、OpenG 编程辅助库:aux、OpenGL实用程序工具包(OpenGL utility toolkit,GLUT):glut、Windows 专用库:wgl。 OpenGL的基本语法中命名规则为:OpenGL函数都遵循一个命名约定,即采用以下格式:<库前缀><根命令><可选的参数个数><可选的参数类型>。 了解了上述基础知识后,配置好OpenGL环境,然后在该环境中编程练习图形的绘制,本次实验主要是对点的绘制、直线的绘制和多边形面的绘制。 3.实验代码及结果 3.1点的绘制: #include void Initial(void) { glClearColor(1.0f,1.0f,1.0f,1.0f); //设置窗口背景颜色为白色 glMatrixMode(GL_PROJECTION); //指定设置投影参数 gluOrtho2D(0.0,200.0,0.0,150.0); //设置投影参数 } void Display(void) {

Web界面设计实验报告

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

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

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

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

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

计算机图形学实验报告 (2)

中南大学信息科学与工程学院 实验报告实验名称 实验地点科技楼四楼 实验日期2014年6月 指导教师 学生班级 学生姓名 学生学号 提交日期2014年6月

实验一Window图形编程基础 一、实验类型:验证型实验 二、实验目的 1、熟练使用实验主要开发平台VC6.0; 2、掌握如何在编译平台下编辑、编译、连接和运行一个简单的Windows图形应用程序; 3、掌握Window图形编程的基本方法; 4、学会使用基本绘图函数和Window GDI对象; 三、实验内容 创建基于MFC的Single Document应用程序(Win32应用程序也可,同学们可根据自己的喜好决定),程序可以实现以下要求: 1、用户可以通过菜单选择绘图颜色; 2、用户点击菜单选择绘图形状时,能在视图中绘制指定形状的图形; 四、实验要求与指导 1、建立名为“颜色”的菜单,该菜单下有四个菜单项:红、绿、蓝、黄。用户通过点击不同的菜单项,可以选择不同的颜色进行绘图。 2、建立名为“绘图”的菜单,该菜单下有三个菜单项:直线、曲线、矩形 其中“曲线”项有级联菜单,包括:圆、椭圆。 3、用户通过点击“绘图”中不同的菜单项,弹出对话框,让用户输入绘图位置,在指定位置进行绘图。

五、实验结果: 六、实验主要代码 1、画直线:CClientDC *m_pDC;再在OnDraw函数里给变量初始化m_pDC=new CClientDC(this); 在OnDraw函数中添加: m_pDC=new CClientDC(this); m_pDC->MoveTo(10,10); m_pDC->LineTo(100,100); m_pDC->SetPixel(100,200,RGB(0,0,0)); m_pDC->TextOut(100,100); 2、画圆: void CMyCG::LineDDA2(int xa, int ya, int xb, int yb, CDC *pDC) { int dx = xb - xa; int dy = yb - ya; int Steps, k; float xIncrement,yIncrement; float x = xa,y= ya; if(abs(dx)>abs(dy))

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

计算机图形学实验报告

目录

实验一直线的DDA算法 一、【实验目的】 1.掌握DDA算法的基本原理。 2.掌握DDA直线扫描转换算法。 3.深入了解直线扫描转换的编程思想。 二、【实验内容】 1.利用DDA的算法原理,编程实现对直线的扫描转换。 2.加强对DDA算法的理解和掌握。 三、【测试数据及其结果】 四、【实验源代码】 #include

#include #include #include GLsizei winWidth=500; GLsizei winHeight=500; void Initial(void) { glClearColor(1.0f,1.0f,1.0f,1.0f); glMatrixMode(GL_PROJECTION); gluOrtho2D(0.0,200.0,0.0,150.0); } void DDALine(int x0,int y0,int x1,int y1) { glColor3f(1.0,0.0,0.0); int dx,dy,epsl,k; float x,y,xIncre,yIncre; dx=x1-x0; dy=y1-y0; x=x0; y=y0; if(abs(dx)>abs(dy)) epsl=abs(dx); else epsl=abs(dy); xIncre=(float)dx/(float)epsl; yIncre=(float)dy/(float)epsl; for(k=0;k<=epsl;k++) { glPointSize(3); glBegin(GL_POINTS); glV ertex2i(int(x+0.5),(int)(y+0.5)); glEnd(); x+=xIncre; y+=yIncre; } } void Display(void) { glClear(GL_COLOR_BUFFER_BIT); DDALine(100,100,200,180); glFlush(); }

用户界面设计实验

《用户界面设计》实验报告 学号:201521092041 姓名:汪业伟 班级名称:12软工 指导教师:王新年 实验日期: 序号版本号修订内容教师评语及成绩 Ex1 Ex2 Ex3 Ex4

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

Experiment 1: Evaluation Practices My Opinion about the web sites: 中国工商银行自动取款机 No. Criteria Importance Goal Actual most least 12345Time Time 1 Time to learn √一分钟一分钟 2 Speed of performance √ low mod high very high low mod high very high 3 Rate of errors by users √√√ 4 Subjective satisfaction √√√ 5 Retention over time √√√ 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. No. Criteria Score no neutral yes 12345N/A 6 Is the terminology consistent? √ 7 Is the terminology appropriate? √ 8 Is the terminology in the user's vocabulary? √ 9 Are the instructions consistent? √ 10 Do the instructions accurately describe the task? √ 11 Do the display layouts simplify the tasks? √ 12 Are the error messages helpful? √ 13 Is it easy to correct errors? √

相关主题