云南大学软件学院JAVA实验九

合集下载

云南大学软件学院Java实验五

云南大学软件学院Java实验五

云南大学软件学院实验报告:定欢学号:20141120188 班级:日期:2016年10月20日成绩:JAVA实验五一、实验目的:Applying OO Concepts Using Java二、实验要求:Create a class called Circle.java with fields named radius〔半径〕, area〔面积〕, and diameter〔直径〕. Include methods named setRadius(),getRadius(), and computeDiameter(), which calculates the circle's diameter, and computeArea(), which computes the circle's area.Hint: diameter of a circle is twice its radius.Hint: area of a circle is 3.14 multiplied by the square of the radius.Create a class called TestCircle. java whose main method declares2 Circle objects. Using setRadius() method, assign one Circle a smallradius value and assign another a larger radius value. CallcomputeDiameter() and computeArea for each circle and display the results.Output result of using command input "5 8":The area of a is 78.5The diameter of a is 10.0The area of b is 200.96The diameter of b is 16.0三、实验内容:1、Circle.java2、CircleTest.java3、结果附加题:1.Monkey.java1.import java.util.Random;2.import java.util.Scanner;3.4.class Monkey {5.private String name;6.private double weight;7.private int age;8.private static String hab = "吃香蕉";9.public void setName(String name){ = name;11.}12.13.public void setWeight(double weight){14.this.weight = weight;15.}16.17.public void setAge(int age){18.this.age = age;19.}20.21.public String getName(){22.return name;23.}24.25.public double getWeight(){26.return weight;27.}28.29.public int getAge(){30.return age;31.}32.//默认构造方法33.public Monkey(){34.35.}36.37.//带参数构造方法38.public Monkey(String name, double weight, int age){ = name;40.this.weight = weight;41.this.age = age;42.}43.44.public void climbTree(){45.Random r = new Random();46.int high = r.nextInt(60)+40;47.int banana = r.nextInt(54);48.System.out.println(name +"会爬树"+"能爬"+high);49.50.if(high>=60){51.System.out.println(name+"会爬树,"+"能爬"+high+","+"摘到"+banana+"香蕉");52.System.out.println("剩下"+(BananaTree.BanaSum-banana)+"香蕉");53.}54.55.else56.System.out.println("不能摘到香蕉");57.58.}59.60. }2.BananaTree:public class BananaTree {double treeHigh;static double BanaSum;public void settreeHigh(double treeHigh){this.treeHigh = treeHigh;}public void setBanaSum(double BanaSum){this.BanaSum = BanaSum;}public double treeHigh(){return treeHigh;}public double getBanaSum(){return BanaSum;}public BananaTree(){}public BananaTree(double treeHigh,double BanaSum){this.treeHigh = treeHigh;this.BanaSum = BanaSum;}}3.MonkeyTest.javapublic class MonkeyTest {public static void main(String[] args) {// TODO Auto-generated method stubMonkey monkey1 = new Monkey();monkey1.setName("甲");monkey1.setAge(3);monkey1.setWeight(40);Monkey monkey2 = new Monkey("乙", 43, 3);BananaTree bt = new BananaTree();bt.settreeHigh(86);bt.setBanaSum(54);monkey1.climbTree();monkey2.climbTree();}}4.结果:四、实验总结:通过此次实验,进一步熟悉了类的构造方法,包括带参数的构造方法和默认构造方法。

云南大学软件学院综合技能实践-开发环境实验指导书

云南大学软件学院综合技能实践-开发环境实验指导书

云南大学软件学院综合技能实践——《常用开发平台的安装和使用》实验指导书指导教师:梁宇蔡莉(注意:请先简要阅读实验指导书的要求再开始做实验)第一部分 JSP开发环境的搭建一、实验目的:1.掌握JSP开发环境搭建的具体步骤和操作方法。

2.掌握在JSP开发环境下创建一个简单JSP文件的方法。

3.掌握在JSP中创建虚拟目录的方法。

二、实验内容预习一、JSP概述JSP(Java Server Pages,Java服务器主页)技术为创建显示动态生成内容的Web页面提供了个简捷而快速的方法。

JSP技术的设计目的使得构造基于Web 的应用程序更加容易和快捷,这些应用程序能够与各种Web服务器、应用服务器、浏览器和开发工具共同工作。

JSP的明显优势如下:平台和服务器的独立性。

基于Java的JSP与平台无关,它可以使用任何web服务器(包括Apache、IIS和PWS)。

使用的脚本语言。

JSP使用Java作为它的脚本语言,其面向对象的编程思想较为优秀。

JSP跨平台的可重用性。

J3P组件(Enterprise JavaBeans,JavaBeans)都是跨平台可重用的。

EJB(Enterprise JavaBeans,企业级JavaBeans)组件可以访问传统的数据库,并能以分布式系统模式工作于UNIX 和Windows平台。

多样化和功能强大的开发工具支持。

JSP已经有了许多非常优秀的开发工具而是有许多可以免费获取,且其中行许多开发工具已经可以顺利地运行于多种平台之下。

二、建立JSP的运行环境由于JSP使用Java作为程序设计脚本语言,因此需要建立Java的运行环境。

编译和调试运行Java程序,需要安装JDK(Java Develop Kit,Java开发工具包)。

另外,JSP是基于Web的Java应用程序,因而它需要有特定的运行环境,即解释器。

由于Java语言是跨平台的,所以能解释Java语言的Web服务器与平台无关。

云南大学综合实践技能《常用数据库系统的安装和调试》实验报告

云南大学综合实践技能《常用数据库系统的安装和调试》实验报告

云南大学软件学院综合技能实践——《常用数据库系统的安装和调试》实验报告指导教师:蔡莉、朱艳萍第一部分MySQL数据库的安装和使用一、实验目的:1.掌握MySQL数据库环境搭建的具体步骤和操作方法。

2.掌握启动和运行MySQL的方法。

3.掌握使用SQL语句创建数据库、表及向表中插入记录的方法。

二、实验内容预习MySQL MySQL是最流行的开放源码SQL数据库管理系统,它是由MySQL AB公司开发、发布并支持的。

MySQL AB是由多名MySQL开发人创办的一家商业公司。

它是一家第二代开放源码公司,结合了开放源码价值取向、方法和成功的商业模型。

SQL语句的介绍结构化查询语言(Structured Query Language,SQL)是1974年由Boyce和Chamberlin提出的。

在IBM公司San Jose Research Laboratory研制的System R上实现了该语言。

SQL语言由以下几个部分组成:1、数据定义:(SQL DDL),用于定义SQL模式、基本表、视图、索引等。

2、数据操纵:(SQL DML),分为数据查询和数据更新两大类操作,其中数据更新包括插入、删除和更新三种操作3、数据控制:(SQL DCL),基本表和视图的授权、完整性规则的描述和事务控制语句等。

三、实验内容和步骤1、首先,查看本台机器的C盘根目录下是否有mysql的文件夹,如果没有,下载mysql-4.0.20a-win.zip文件,解压后进行安装。

2、进入安装目录,然后切换到bin文件夹下,双击运行命令mysqld.exe:3、打开命令窗口,然后切换到C:\mysql\bin文件夹下,并输入如下命令:C:\mysql\bin>mysql -u root -p回车后出现Enter password: 提示信息,继续敲入回车符,就进入到MySQL的工作界面:mysql>。

成功地连接后,可以在mysql>提示下输入QUIT (或\q)随时退出:mysql> QUITBye3、在mysql>提示符输入select version(), current_date();命令,系统将显示:4、下面,在mysql>提示下输入命令SHOW DATABASES; 系统将显示:5、在mysql>提示下输入命令use test; ,系统给出提示信息Database changed,表示已经转到数据库test中:6、在mysql>提示下输入命令show tables; ,系统给出的提示信息是:7、创建数据库、表和表中的记录。

云南大学软件学院报告

云南大学软件学院报告

课程:数据结构实验学期:2014-2015学年第一学期任课教师:专业:信息安全学号:姓名:成绩:实验5 图基础实验一、实验目的1.掌握图的存储结构及其遍历。

二、实验软硬件环境(CPU、OS、IDE):三、实验任务(要求写出核心代码,并对运行结果截图)1)使用邻接矩阵和邻接表储表示分别实现如下给定的图1、图2、图3所示图的物理存储结构。

2)在1)所建立的图形存储结构上分别实现深度优先搜索遍历和广度优先搜索遍历,并给出遍历结果(序列)。

图3 有向图实验代码:#include<stdio.h>#include<stdlib.h>#define MAXVEX 20#define OK 1#define ERROR 0#define OVERFLOW -1#define INFINITY 65535#define QueueSize 20 //队列中最大元素个数typedef int QElemType; //队列的元素的类型typedef int VertexType;typedef int EdgeType;typedef enum{False,True}Boolean; //Boolean是布尔类型,其值是ture或false Boolean visited[MAXVEX]; //访问标志的数组。

typedef struct{VertexType vexs[MAXVEX];EdgeType arc[MAXVEX][MAXVEX];int numVertexes,numEdges;} MGraph; //邻接矩阵。

typedef struct EdgeNode //边表结点。

{int adjvex;struct EdgeNode *next;}EdgeNode;typedef struct VertexNode //顶点表结点。

{int data;EdgeNode *firstedge;}VertexNode,AdjList[MAXVEX];typedef struct{AdjList adjlist;int numVertexes,numEdges; //图中当前顶点数边数。

云南大学JAVA程序设计实验三

云南大学JAVA程序设计实验三

实验报告序号:实验老师:陆歌皓课程名称:JA V A程序设计实验实验名称:JA V A开发环境学号:20111120279 姓名:李张昱实验三Fundamental programming structures in java:Control Flow, Big Numbers, Arrays and Vectors一.实验目的练习java基本编程结构,包括字符串、输入输出控制流。

二.实验内容(算法、程序、步骤和方法)任务一. Write a Java program called AverageNumbers2.java that calculates the average of numbers 1 to 50 using the for loop. Do it again using the while loop.Output:average of numbers is 25.5根据实验要求写了以下程序:public class AverageNumbers2{public static void main(String[] args){float sum=0;for(int i=1;i<=50;i++)sum+=i;float average=sum/50;System.out.println("average of numbers 1 to 50 is "+average);}}任务二.Write a Java program called InputParms.java that accepts 3 arguments in the main method using an array. Iterate through the array looking for your name using a for loop. Display the message "The name <your name> was found" if your name is found.For example, using the following commandJava InputParms I am MichaelOutput:The name Michael was found.根据实验要求写了以下程序:import java.util.Scanner;public class InputParms {public static void main(String[] args){Scanner in = new Scanner(System.in);System.out.println("you can input 3 number of name at will");int a=3;String[] name=new String[a];for(int i=0;i<a;i++){System.out.println("please input number of "+(i+1)+" name:");name[i]=in.next();}System.out.println("please input your name:");String myname=in.next();for(int k=0;k<a;k++)if(name[k].equals(myname)){System.out.println("The name "+name[k]+" was found");}}}任务三.Write a Java program called BreakLoop.java that uses a for loop with the variable "count" and count 1 to 10.. Display "count=<count>" each time you loop through. Break out of the loop at 5. At the end of the program display "Broke out of the loop at count = 5".Output:count = 1count = 2count = 3count = 4Broke out of the loop at count = 5根据实验要求写了以下程序:public class BreakLoop {public static void main(String[] args){int i=1;for(i=1;i<=10;i++){if(i==5)break;System.out.println("count="+i);}System.out.println("Broke out of the loop at count = "+i);}}任务四.Write a Java program called ContinueLoop.java that uses a for loop with the variable "count" and count 1 to 10.. Display "count=<count>" each time you loop through. Skip the display statement using the continue statement if count = 5. At the end of the program display "Used continue to skip printing 5".Output:count = 1count = 2count = 3count = 4count = 6count = 7count = 8count = 9count = 10Used continue statement to skip printing 5根据实验要求写了以下程序:public class ContinueLoop {public static void main(String[] args){for(int i=1;i<=10;i++){if(i==5)continue;System.out.println("count="+i);}System.out.println("Used continue to skip printing 5");}}三.数据记录和计算任务一运行结果:任务二运行结果:任务三运行结果:任务四运行结果:四.结论break 跳出语句块,执行下面的语句。

Lab9

Lab9

云南大学软件学院实验报告姓名:赵子源学号:20131070208 班级:软件工程日期:15.12.7序号 6 成绩:JAVA实验九一、实验目的:熟悉Java中的图形化编程以及事件监听器的使用。

二、实验要求:Program 1Create an application ChangeBallColor that displays a panel. This panel will contain two buttons (one for red and one for blue). It will also display a filled in circle. When the user clicks on a button, the circle should change to that color. So, if a user clicks the blue button, the circle will change to blue. Similarly, if a user clicks the red button, the circle will turn to red.Program 2Create an application AddCircles that displays a panel. This panel will contain two buttons (one for red and one for blue). When the user clicks on a button, change a variable called currentColor to that particular color. Now when the user clicks on a space in the panel (outside a button), draw a circle with the current color. Have your application just add new circles when the user clicks the mouse. Do not erase previous circles.三、实验内容:Balls.javaChangeBallColor.javaAddCircles.javaLab9_附加四、实验总结:本次实验我主要通过几个JAVA中图形化编程的相关联系,掌握了基本的JAVA绘图技术,事件的处理和监听,主要用到绘图函数paint(),事件监听ActionListener。

软件学院上机实验报告(3篇)

软件学院上机实验报告(3篇)

实验名称:Java面向对象编程实验实验日期:2023年3月15日实验地点:软件学院实验室一、实验目的1. 理解Java面向对象编程的基本概念,包括类、对象、继承、多态等。

2. 掌握Java面向对象编程的基本语法和操作。

3. 能够运用面向对象编程思想设计简单的Java程序。

二、实验内容1. 创建一个名为“Student”的类,包含以下属性:姓名(name)、年龄(age)、性别(gender)。

2. 在“Student”类中定义一个构造方法,用于初始化对象的属性。

3. 定义一个名为“printInfo”的方法,用于打印学生的信息。

4. 创建两个“Student”对象,并分别设置其属性。

5. 调用“printInfo”方法,打印两个学生的信息。

三、实验步骤1. 打开IDEA软件,创建一个名为“Experiment1”的新项目。

2. 在项目中创建一个名为“Student”的Java类。

3. 在“Student”类中定义属性:name、age、gender。

4. 定义构造方法,初始化属性。

5. 定义“printInfo”方法,打印学生信息。

6. 在主类中创建“Student”对象,设置属性。

7. 调用“printInfo”方法,打印学生信息。

四、实验代码public class Student {private String name;private int age;private String gender;public Student(String name, int age, String gender) { = name;this.age = age;this.gender = gender;}public void printInfo() {System.out.println("姓名:" + name + ",年龄:" + age + ",性别:" + gender);}public static void main(String[] args) {Student student1 = new Student("张三", 20, "男");Student student2 = new Student("李四", 21, "女");student1.printInfo();student2.printInfo();}}```五、实验结果与分析1. 编译并运行程序,控制台输出如下信息:```姓名:张三,年龄:20,性别:男姓名:李四,年龄:21,性别:女```2. 通过本次实验,掌握了Java面向对象编程的基本概念和操作,能够运用面向对象编程思想设计简单的Java程序。

云南大学软件学院JAVA实验二

云南大学软件学院JAVA实验二

云南大学软件学院实验报告姓名:王增伟学号:20111120083 班级:软件工程日期:2014-9-24成绩:JAVA实验二一、实验目的:进一步熟悉JAVA编译环境,编译三个简单的JAVA程序,熟悉JAVA语言。

二、实验要求:1. Write Java program called AverageNumbers.java to determine the average ofseveral numbers.Set the following five integer variables:int1 = 5int2 = 7int3 = 4int4 = 25int5 = 13Calculate and display the average of these numbers and the square root(平方根)of average.2. Write a temperature conversion(温度转换) Java program calledFarheheitToCentigrade.java.Set a variable called tempFarenheit = 98.6. (华氏温度)Calculate the Centigrade temp (tempCelcius)(摄氏温度)by using the formula (公式) Centigrade = 5/9 (Fahrenheit -32)3.Write a Java payroll(工资) program called Payroll.java that determines payand taxes.(确定工资税)Set the following variables:pay = $25 per hourhoursWorked = 40Calculate grossPay(应付) by multiplying pay * hoursWorked.Calculate taxesWithheld(缴税) by multiplying grossPay * .15.Calculate netPay by subtracting(减去) taxesWithheld from grossPay.Display all variables.三、实验内容:1.求五个整数的平均值和平均值的平方根AverageNumbers.java程序代码如下:运行结果:2.温度转换:华氏温度转摄氏温度FarheheitToCentigrade.java程序代码如下:运行结果:3.计算工资和税Payroll.java程序如下:运行结果:四、实验总结:通过本次试验,懂得了如何灵活运用数据类型和运算符,由浅入深的对java编程语言有了更近一步的认识。

[整理]1-5确定性跳跃表Java实现

[整理]1-5确定性跳跃表Java实现

1-5确定性跳跃表Java实现作者:云南大学软件学院09数字媒体技术雒森/** To change this template, choose Tools | Templates* and open the template in the editor.*/package LuoSen.DS.DS;import java.io.Serializable;/**** @author LENOVO*//**确定性跳跃表链的结点*/public class DSLLinkNode<S> implements Serializable {/**跳跃表链结点的层数*/public int levelNum=1;/**跳跃表链结点的数据*/public S data;/**顶部的链*/public DSLNode<S> top;/**构造函数*/public DSLLinkNode(){data=null;top=null;}/**构造函数*/public DSLLinkNode(S data,DSLNode<S> top){this.data=data;this.top=top;}/**构造函数*/public DSLLinkNode(S data,DSLNode<S> top,int i){this.data=data;this.top=top;this.levelNum=i;}/**判断节点是否相等*/@Overridepublic boolean equals(Object o){if(this==o)return true;if(o==null||!(o instanceof DSLLinkNode))return false;DSLLinkNode<S> a=(DSLLinkNode<S>)o;if(data.equals(a.data))return true;return false;}@Overridepublic int hashCode() {int hash = 7;hash = 41 * hash + this.levelNum;hash += 41 * hash + (this.data != null ? this.data.hashCode() : 0);return hash;}@Overridepublic String toString(){return ""+data;}}/** To change this template, choose Tools | Templates* and open the template in the editor.*/package LuoSen.DS.DS;import java.io.Serializable;/**** @author LENOVO*//**确定性跳跃表结点*/public class DSLNode<S> implements Serializable {/**向右的链*/public DSLNode<S> right;/**向下的链*/public DSLNode<S> down;/**确定性跳跃表链的结点*/public DSLLinkNode<S> link;/**默认构造函数*/public DSLNode(){right=down=null;link=null;}/**构造函数*/public DSLNode(DSLNode<S> right){this.right=right;this.down=null;link=null;}/**构造函数*/public DSLNode(DSLNode<S> right,DSLNode<S> down){this.right=right;this.down=down;link=null;}/**构造函数*/public DSLNode(DSLNode<S> right,DSLNode<S> down,DSLNode<S> top,int i){ this.right=right;this.down=down;link=new DSLLinkNode<S>((S)new Object(),top,i);}/**构造函数*/public DSLNode(DSLNode<S> right,DSLNode<S> down,DSLLinkNode<S> link){ this.right=right;this.down=down;this.link=link;}/**判断节点是否相等*/@Overridepublic boolean equals(Object o){if(this==o)return true;if(o==null||!(o instanceof DSLNode))return false;DSLNode a=(DSLNode)o;if(link==a.link||(link!=null&&link.equals(a.link)))return true;return false;}@Overridepublic int hashCode() {int hash = 7;hash = 47 * hash + (this.link != null ? this.link.hashCode() : 0);return hash;}@Overridepublic String toString(){if(link!=null)return link.toString();elsereturn "";}}/** To change this template, choose Tools | Templates* and open the template in the editor.*/package LuoSen.DS.DS;import LuoSen.DS.Alg.Util.CreateComparator;import LuoSen.DS.Exceptions.IllegalParameterException;import java.io.Serializable;import java.util.Collection;import parator;import java.util.HashSet;import java.util.Iterator;import java.util.List;import java.util.Set;import java.util.logging.Level;import java.util.logging.Logger;/**** @author 云大09数媒雒森*//**1-5确定性跳跃表*/public class DSkipList<S> implements Serializable,Iterable<S> { /**头结点*/protected DSLNode<S> header;/**尾结点*/protected DSLNode<S> tailer=null;/**底结点*/protected DSLNode<S> bottom=null;/**表中元素的个数*/protected int size=0;/**比较器*/protected Comparator<S> cp=null;/**构造函数*/public DSkipList(){bottom=null;tailer=null;header=new DSLNode<S>(tailer,bottom,null, (byte)0);}/**构造函数*/public DSkipList(Comparator<S> cp){bottom=null;tailer=null;header=new DSLNode<S>(tailer,bottom,null,(byte)0);this.cp=cp;}/**使用一个DSkipList跳表初始化,目的是将目标复制到当前表中*/ public boolean initial(DSkipList<S> dsl){if(dsl==null)return false;this.cp=dsl.cp;this.header=dsl.header;this.size=dsl.size;return true;}/**返回跳跃表的头*/public DSLNode<S> getHeader(){return header;}/**设置比较器*/public void setComparator(Comparator<S> cp){this.cp=cp;}/**返回比较器*/public Comparator<S> getComparator(){return cp;}/**判断表中是否有关键字对应值*/public boolean contain(S data){return this.search(data)!=null;}/**查找数据为data的数据比较关键字封装在data中*/public S search(S data){if(data==null||size==0)return null;DSLNode<S> cur=header;while(cur!=bottom){while(cur.right!=tailer&&pare(cur.right.link.data,data)<0){cur=cur.right;}if(cur.right!=tailer&&pare(cur.right.link.data,data)==0){return cur.right.link.data;}cur=cur.down;}return null;}/**查找数据为data的数据比较关键字封装在data中,若查不到则返回位于它之后的第一个(最底部)结点*/public DSLNode<S> searchStart(S data){if(data==null||size==0)return null;DSLNode<S> cur=header;while(cur!=bottom){while(cur.right!=tailer&&pare(cur.right.link.data,data)<0){cur=cur.right;}if(cur.down==bottom||(cur.right!=tailer&&pare(cur.right.link.data,data)==0)){cur=cur.right;if(cur!=tailer){while(cur.down!=bottom)cur=cur.down;}return cur;}cur=cur.down;}return null;}/**查找数据为data的数据比较关键字封装在data中,若查不到则返回位于它之前的第一个(最底部)结点*/public DSLNode<S> searchEnd(S data){if(data==null||size==0)return null;DSLNode<S> cur=header;while(cur!=bottom){while(cur.right!=tailer&&pare(cur.right.link.data,data)<0){cur=cur.right;}if(cur.down==bottom||(cur.right!=tailer&&pare(cur.right.link.data,data)==0)){cur=cur.right;if(cur!=tailer){while(cur.down!=bottom)cur=cur.down;if(cur.right!=tailer&&pare(cur.right.link.data,data)==0)cur=cur.right;}return cur;}cur=cur.down;}return null;}/**插入数据data,若已存在返回数据链结点,并不插入数据,你可以在外面修改*/ public DSLLinkNode<S> insert(S data) throws IllegalParameterException{ if(data==null)return null;if(cp==null){if(Comparable.class.isAssignableFrom(data.getClass())){CreateComparator<S> cc =new CreateComparator<S>();cp=cc.getComparator();}else{throw new IllegalParameterException("数据不可以比较,请先设置比较器!");}}DSLNode<S> cur=header;DSLNode<S> newNode=null;while(cur!=bottom){while(cur.right!=tailer&&pare(cur.right.link.data,data)<0){cur=cur.right;}if(cur.right!=tailer&&pare(cur.right.link.data,data)==0){newNode=cur.right;break;}if(cur.down==bottom){newNode=new DSLNode<S>(cur.right,bottom);newNode.link=new DSLLinkNode<S>(data,newNode);cur.right=newNode;size++;break;}else if(cur.down.right!=tailer&&cur.down.right.right!=tailer&&cur.down.right.right.right!=tailer&&cur.down.right.right.right.right!=tailer&&cur.down.right.right.right.right.right!=tailer&&(cur.right==tailer||pare(cur.down.right.right.right.right.right.link.data,cur.right.link.data)<0)){cur.right=newDSLNode<S>(cur.right,cur.down.right.right.right,cur.down.right.right.right.link);cur.right.link.top=cur.right;cur.right.link.levelNum++;}cur=cur.down;}if(header.right!=tailer){header.link.levelNum++;header.link.top=header;header=new DSLNode<S>(tailer,header,header.link);}return newNode.link;}/**删除数据data*/public boolean remove(S data) throws IllegalParameterException{if(data==null||size==0)return false;if(cp==null){if(Comparable.class.isAssignableFrom(data.getClass())){CreateComparator<S> cc =new CreateComparator<S>();cp=cc.getComparator();}else{throw new IllegalParameterException("数据不可以比较,请先设置比较器!");}}DSLNode<S> cur=header;DSLNode<S> c=null,cc=null,top=null;while(cur!=bottom){while(cur.right!=tailer&&pare(cur.right.link.data,data)<0){cur=cur.right;}if(cur.down==bottom&&cur.right!=tailer&&pare(cur.right.link.data,data)==0){if(size==1){header=new DSLNode<S>(tailer,bottom,null,(byte)0);}else{if(cur.link.levelNum<cur.right.link.levelNum){//比较左右位置结点层数高低,待删除的右边结点c=cur.right.link.top;top=cur.right.link.top;cur.link.levelNum=cur.right.link.levelNum;while(c.down!=cur.link.top.right){c.link=cur.link;c=c.down;}c.link=cur.link;c.down=cur.link.top;c=cur.link.top.right;cc=cur.link.top;while(c!=bottom&&cc!=bottom){cc.right=c.right;cc=cc.down;c=c.down;}cur.link.top=top;}else{cc=cur.link.top;while(cc.right!=cur.right.link.top){cc=cc.down;}c=cur.right.link.top;while(c!=bottom&&cc!=bottom){cc.right=c.right;cc=cc.down;c=c.down;}}}size--;while(header.down!=bottom&&header.down.right==tailer){header=header.down;header.link.levelNum--;header.link.top=header.down;}return true;}cur=cur.down;}return false;}/**获取条件一维区间odr之间的元素集合,,该函数主要服务于:KDSkipList<S>,用于检索一维区间*/public Collection<S> queryRegion(ODRegion<S> odr){Set<S> s=new HashSet<S>();if(odr.isNoHasCondition){DSLNode<S> cur=header;while(cur.down!=bottom)cur=cur.down;cur=cur.right;while(cur!=tailer){if(cur.link.data instanceof KDSLNode)s.addAll(((KDSLNode)cur.link.data).set);elses.add(cur.link.data);cur=cur.right;}}else{DSLNode<S> cur=header;DSLNode<S> end=null;if(odr.start!=null)cur=this.searchStart(odr.start);else{while(cur.down!=bottom)cur=cur.down;cur=cur.right;}end=this.searchEnd(odr.end);if(cur==null||(cur!=null&&end!=null&&pare(cur.link.data,end.link.data)>0))return s;while(cur!=end){if(cur.link.data instanceof KDSLNode)s.addAll(((KDSLNode)cur.link.data).set);elses.add(cur.link.data);cur=cur.right;}}return s;}/**获取条件一维区间odr之间的元素满足多维条件的数据集合,index为odr在qc中的位置,* 该函数主要服务于:MLDSkipList<S> 用于检索多位区间*/public Collection queryRegion(Collection s,ODRegion<S> odr,int index,List<ODRegion<S>> qc,List<Comparator<S>> cps){if(s==null)return s;if(odr.isNoHasCondition){DSLNode<S> cur=header;while(cur.down!=bottom)cur=cur.down;cur=cur.right;while(cur!=tailer){if(cur.link.data instanceof MLDSLNode){MLDSLNode a=(MLDSLNode) cur.link.data;if(a.dslsl==null){if(this.isMeetQC(cur.link.data, index, qc.size(), qc,cps,index,true))s.add(a.data);}else{a.dslsl.queryRegion(s,qc.get(index+1), index+1, qc, cps);}}else{if(this.isMeetQC(cur.link.data, 0, qc.size(), qc, cps,index,true))s.add(cur.link.data);}cur=cur.right;}}else{DSLNode<S> cur=header;DSLNode<S> end=null;if(odr.start!=null)cur=this.searchStart(odr.start);else{while(cur.down!=bottom)cur=cur.down;cur=cur.right;}end=this.searchEnd(odr.end);if(cur==null||(cur!=null&&end!=null&&pare(cur.link.data,end.link.data)>0))return s;while(cur!=end){if(cur.link.data instanceof MLDSLNode){MLDSLNode a=(MLDSLNode) cur.link.data;if(a.dslsl==null){if(this.isMeetQC(cur.link.data, index, qc.size(), qc, cps,index,true))s.add(a.data);}else{a.dslsl.queryRegion(s,qc.get(index+1), index+1, qc, cps);}}else{if(this.isMeetQC(cur.link.data, 0, qc.size(), qc, cps,index,true))s.add(cur.link.data);}cur=cur.right;}}return s;}/**检测元素o是否满足多位区间条件qc,start为数组偏移索引,end为结束索引,* isFilterCondition表示是否忽略filterIndex标识的位置的一维区间条件*/protected boolean isMeetQC(S o,int start,int end,List<ODRegion<S>>qc,List<Comparator<S>> cps,int filterIndex,boolean isFilterCondition){for(int i=start;i<end;i++){if(qc.get(i).isNoHasCondition||(isFilterCondition&&i==filterIndex)||(qc.get(i).start==null&&qc.get(i).end==null)){ continue;}if((qc.get(i).start!=null&&cps.get(i).compare(o,qc.get(i).start)<0)||(qc.get(i).end!=null&&cps.get(i).compare(o, qc.get(i).end)>0)){return false;}}return true;}/**返回表中元素的个数*/public int size(){return size;}/**返回确定性跳跃表的层数*/public int getLevel(){return header.down == null ? 0:header.down.link.levelNum; }/**转化为数组,若表中有0个元素返回null*/public Object[] toArray(){if(size==0)return null;Object []o=new Object[size];int i=0;DSLNode<S> cur=header;while(cur.down!=bottom)cur=cur.down;cur=cur.right;while(cur!=tailer){o[i]=cur.link.data;cur=cur.right;i++;}return o;}/**当划分跳表后更新跳表元素个数*/public void updateSize(){int i=0;DSLNode<S> cur=header;while(cur.down!=bottom)cur=cur.down;cur=cur.right;while(cur!=tailer){cur=cur.right;i++;}size=i;/**返回最小的元素,若不存在返回null*/public S minData(){if(size==0)return null;DSLNode<S> cur=header;while(cur.down!=bottom)cur=cur.down;cur=cur.right;return cur==null ? null:cur.link.data;}/**返回最小的元素并删除,若不存在返回null*/public S popMinData() throws IllegalParameterException{ if(size==0)return null;DSLNode<S> cur=header;while(cur.down!=bottom)cur=cur.down;cur=cur.right;S s=null;if(cur==tailer)return s;else{s=cur.link.data;remove(s);return s;}}/**返回最大的元素,若不存在返回null*/public S maxData(){if(size==0)return null;DSLNode<S> cur=header;while(cur!=bottom){while(cur.right!=tailer){cur=cur.right;}if(cur.down==bottom&&cur.right==tailer){break;}cur=cur.down;}return cur.link.data;/**返回最大的元素并删除,,若不存在返回null*/public S popMaxData() throws IllegalParameterException{ if(size==0)return null;DSLNode<S> cur=header;while(cur!=bottom){while(cur.right!=tailer){cur=cur.right;}if(cur.down==bottom&&cur.right==tailer){break;}cur=cur.down;}remove(cur.link.data);return cur.link.data;}/**清空跳表*/public void clear(){size=0;header=new DSLNode<S>(tailer,bottom,null,(byte)0); }@Overridepublic String toString(){StringBuilder a=new StringBuilder();a.append("当前表中的元素为:[");DSLNode<S> cur=header;while(cur.down!=bottom){cur=cur.down;}if(size!=0){cur=cur.right;boolean i=false;while(cur!=tailer){if(i)a.append(" , ");if(!i)i=true;a.append(cur);cur=cur.right;}}a.append("]");return a.toString();}/**将当前的调表一分为2返回产生的两个跳表(当前的跳表,和分出的另一半跳表)* 注意:划分成功后,需要手动更新两个调表的元素数目(即调用updateSize()函数),当跳表的层数小于2时返回null表示划分失败*/public DSkipList<S> split(){if(this.getLevel()<2)return null;else{DSLNode<S> cur=header,c=null,d=null;DSkipList<S> dsl=new DSkipList<S>(cp);cur=cur.down;/*if(cur.right!=tailer&&cur.right.right!=tailer&&cur.right.right.right!=tailer) cur=cur.right.right.right;else */if(cur.right!=tailer&&cur.right.right!=tailer)cur=cur.right.right;else if(cur.right!=tailer)cur=cur.right;if(cur.right==tailer){c=cur.down;while(c!=bottom){dsl.header.link.levelNum++;dsl.header.link.top=header;dsl.header=new DSLNode<S>(tailer,dsl.header,dsl.header.link);c=c.down;}c=cur;d=dsl.header;while(c!=bottom){d.right=c.right;c.right=tailer;c=c.down;d=d.down;}this.updateSize();dsl.updateSize();return dsl;}else{c=cur;while(c!=bottom){dsl.header.link.levelNum++;dsl.header.link.top=dsl.header;dsl.header=new DSLNode<S>(tailer,dsl.header,dsl.header.link);}c=cur;d=dsl.header.down;while(c!=bottom){d.right=c.right;c.right=tailer;c=c.down;d=d.down;}return dsl;}}}/**返回迭代器*/@Overridepublic Iterator<S> iterator() {Queue<S> D=new Queue<S>();DSLNode<S> cur=header;while(cur.down!=bottom){cur=cur.down;}cur=cur.right;while(cur!=tailer){D.enQueue(cur.link.data);cur=cur.right;}class DataIterator implements Iterator{ private Queue<S> D=null;public DataIterator(Queue<S> D){this.D=D;}@Overridepublic boolean hasNext() {return !D.isEmpty();}@Overridepublic S next() {return D.deQueue();}@Overridepublic void remove() {try {DSkipList.this.remove(a);} catch (IllegalParameterException ex) {Logger.getLogger(DSkipList.class.getName()).log(Level.SEVERE, null, ex);}}}return new DataIterator(D);}}/** To change this template, choose Tools | Templates* and open the template in the editor.*/package LuoSen.DS.Alg.Util;import java.io.Serializable;import parator;/**** @author LENOVO* @param <S>*//**比较器类型*/public class CComparator<S> implements Comparator<S>,Serializable{@Overridepublic int compare(S o1, S o2){Comparable a;a=(Comparable) o1;return pareTo(o2);}}/** To change this template, choose Tools | Templates* and open the template in the editor.*/package LuoSen.DS.Alg.Util;import parator;/**** @author LENOVO*//**用于生成自然可比较类型(数值类型或String字符串类型)的比较器类型*/ public class CreateComparator<S>{/**创建一个比较器*/public Comparator<S> getComparator(){return new CComparator<S>();}}/** To change this template, choose Tools | Templates* and open the template in the editor.*/package LuoSen.DS.Exceptions;/**** @author LENOVO*/public class IllegalParameterException extends Exception{public IllegalParameterException(){super();}public IllegalParameterException(String msg){super(msg);}}/** To change this template, choose Tools | Templates* and open the template in the editor.*/package LuoSen.DS.DS;import java.io.Serializable;/**** @author LENOVO*//**一维区间*/public class ODRegion<S> implements Serializable {/**标识当前维上是否有条件*/public boolean isNoHasCondition=true;/**标识当前唯独下限的数据,为null表示没有下限*/public S start=null;/**标识当前维上上限的数据,为null表示没有上限*/public S end=null;public ODRegion(){}public ODRegion(boolean isNoHasCondition){this.isNoHasCondition=isNoHasCondition;}/**satrt一定要小于end否则差错*/public ODRegion(boolean isNoHasCondition,S start,S end){this.isNoHasCondition=isNoHasCondition;this.start=start;this.end=end;}}注意:对于确定性跳跃表类DSkipList<S>类中iterator(){函数中随之用的队列类型Queue-------------是我自己写的,你可以选择其他队列替换掉}-------------。

Java期中

Java期中

实验报告序号:实验老师:陆歌皓课程名称:Java多媒体程序设计实验实验名称:期中考试学号:姓名:一、实验目的Java课程期中考试二、实验要求程序1:学生成绩统计系统学生在整个学期中的各次成绩。

行代表一个学生在学期的各门成绩,列代表某门考试所有学生的成绩。

在GradeBook类中,定义的方法有在学期中各门课程中的最低成绩、最高成绩、平均成绩以及输出整个学期中所有成绩的条形分布图。

使用GradeBookTest测试GradeBook 类中的方法(可让用户输入学生姓名及该生各门课程成绩)。

程序2:采用多态方法的工资支付系统使用抽象方法,根据员工的类型多态地计算其应得的工资。

创建一个员工层次,以解决以下问题。

中国航空公司支付员工工资。

该公司有4类员工:领固定周薪的;计时取酬的(如果一周工时超过40小时,则还需对额外的工时支付加班费) ;按销售额提成的;带底薪并按销售额提成的。

目前,公司决定对带底薪并按销售额提成的成员工增加10%的底薪。

该公司要开发一个Java应用程序,多态地进行工资计算(周薪,日薪,小时薪,销售量,底薪,销售提成额度由用户输入决定)。

三、实验内容Program 1程序代码如下:import java.sql.SQLClientInfoException;import java.util.Scanner;public class GradeBookTest {public static void main(String[] args) {// TODO Auto-generated method stubScanner sc = new Scanner(System.in);System.out.print("请输入学生个数:");int n= sc.nextInt();System.out.print("请输入课程个数:");int m= sc.nextInt();int[][] grade=new int[n][m];String[] name=new String[n];for(int i=0;i<n;i++){System.out.print("请输入学生姓名:");name[i] = sc.next();for(int j=0;j<m;j++){System.out.print("请输入课程"+j+"成绩:");grade[i][j] = sc.nextInt();}}GradeBook gb=new GradeBook();gb.minGrades(grade);for(int i=0;i<grade[0].length;i++){System.out.println("课程:"+i+" 最低成绩"+gb.minGrades(grade)[i]+" 最高成绩"+gb.maxGrades(grade)[i]+" 平均成绩"+gb.pjGrades(grade)[i]);System.out.print("最低成绩:");gb.txGrades(gb.minGrades(grade)[i]);System.out.print("最高成绩:");gb.txGrades(gb.maxGrades(grade)[i]);System.out.print("平均成绩:" );gb.txGrades(gb.pjGrades(grade)[i]);}System.out.print("姓名:李鹏斌学号:20121120206" );}}import java.awt.Color;import java.awt.Font;import java.awt.Graphics;import java.awt.image.BufferedImage;import javax.imageio.ImageIO;public class GradeBook {public int[] minGrades(int[][] grade){int len1=grade.length;int len2=grade[0].length;int[] mins=new int[len2];for(int i=0;i<len2;i++){for(int j=0;j<len1-1;j++){if(grade[j][i] < grade[j + 1][i]){ //把小的值交换到后面int temp = grade[j][i];grade[j][i] = grade[j + 1][i];grade[j+1][i] = temp;}}mins[i]=grade[len1-1][i];}return mins;}public int[] maxGrades(int[][] grade){int len1=grade.length;int len2=grade[0].length;int[] maxs=new int[len2];for(int i=0;i<len2;i++){for(int j=0;j<len1-1;j++){if(grade[j][i] < grade[j + 1][i]){ //把小的值交换到后面int temp = grade[j][i];grade[j][i] = grade[j + 1][i];grade[j+1][i] = temp;}}maxs[i]=grade[0][i];}return maxs;}public int[] pjGrades(int[][] grade){int len1=grade.length;int len2=grade[0].length;int[] pjs=new int[len2];for(int i=0;i<len2;i++){int sum=0;for(int j=0;j<len1;j++){sum=sum+(int)grade[j][i];}pjs[i]=sum/len2;}return pjs;}public void txGrades(int x){if(x<10) System.out.println("*");else if(x<20) System.out.println("**");else if(x<30) System.out.println("***");else if(x<40) System.out.println("****");else if(x<50) System.out.println("*****");else if(x<60) System.out.println("******");else if(x<70) System.out.println("*******");else if(x<80) System.out.println("********");else if(x<90) System.out.println("*********");else if(x<100) System.out.println("**********");}}Program 1运行结果如下:Program 2程序代码如下:import java.util.Scanner;public class UseEmployee {public static void main(String[] args) {Scanner tp=new Scanner(System.in);System.out.println("请输入工作类型:");String type =tp.next();if (type.equals("BaseSalaryman")){Employee m=new BaseSalaryman();Scanner a=new Scanner(System.in);System.out.println("请输入工作周数:");m.weeks=a.nextInt();System.out.println("请输入周薪:");m.weeksalary=a.nextInt();System.out.println("领固定周新的工资为:"+puteSalary());}if (type.equals("AccoutTime")){Employee m=new AccoutTime();Scanner a=new Scanner(System.in);S ystem.out.println("请输入时薪:");m.hoursalary=a.nextDouble();System.out.println("请输入工作时间:");m.weekhours=a.nextInt();System.out.println("计时取酬人员的工资为:"+puteSalary());}if (type.equals("Salesman")){Employee m=new Salesman();Scanner a=new Scanner(System.in);S ystem.out.println("请输入销售额:");m.salemount=a.nextInt();System.out.println("请输入百分比:");m.per=a.nextDouble();System.out.println("销售人员的工资为:"+puteSalary());}if (type.equals("HighSalesman")){Employee m=new HighSalesman();Scanner a=new Scanner(System.in);System.out.println("请输入销售额:");m.salemount=a.nextInt();System.out.println("请输入百分比:");m.per=a.nextDouble();System.out.println("销售人员的工资为:"+puteSalary());}System.out.println("姓名:李鹏斌学号:20121120206");}}public abstract class Employee {protected double weeksalary;protected double daysalary;protected double hoursalary;protected int salemount;protected double basesalary;protected double per;protected int weekhours;protected int weeks;protected double salary;public abstract double computeSalary();}public class AccoutTime extends Employee {private double salary;@Overridepublic double computeSalary() {int w=super.weekhours;if(w<40){salary=super.hoursalary*w;}else {salary=super.hoursalary*40+(w-40)*8;}return salary;}}public class BaseSalaryman extends Employee {@Overridepublic double computeSalary() {salary=super.weeksalary*super.weeks;return salary;}}public class HighSalesman extends Employee{@Overridepublic double computeSalary() {salary=basesalary+salemount*per;return salary;}}public class Salesman extends Employee {@Overridepublic double computeSalary() {salary=salemount * per;return salary;}}Program 2运行结果如下:。

云南大学软件学院JAVA实验十

云南大学软件学院JAVA实验十

云南大学软件学院JAVA实验十报告姓名:王增伟学号:班级:软件工程日期:全文结束》》、11、24 成绩:JAVA实验一、实验目的:熟悉Java中文本域以及组合框组件的使用,学会Swing界面简单布局。

二、实验要求:Write a Swing application for a video store named Video、java、 Place the names of10 of your favorite movies in a drop-downlist、 Let the user select the movie he or she wants to rent、 Charge $2 for most movies, and $2、50 for your personal favorite movie、 Display the total rental fee、三、实验内容:实验代码部分:package Lab10;import java、awt、*;import javax、swing、*;import java、awt、event、*;public class Video extends JFrame implements ActionListener {//创建组件JButton jb1;//显示总租金按钮JPanel jp1,jp2,jp3,jp4;JLabel jl1,jl2,jl3,jl4;//标签JboBox jcb1;//下拉框double pay=0;//初始的租金为0public static void main(String[] args){// TODO Auto-generated method stubVideo video=new Video();}//构造函数public Video(){jp1=newJPanel();jp2=new JPanel();jp3=new JPanel();jp4=new JPanel();//设置按钮jb1=new JButton("购买此电影票");//注册监听jb1、addActionListener(this);jb1、setActionmand("OK");//设置标签jl1=new JLabel("我喜欢的电影列表:");jl2=new JLabel("《三傻大闹宝莱坞》和《肖申克的救赎》票价$2、50,其余的全部$2、00、");jl3=new JLabel("总租金为:");jl4=new JLabel("0$");//此标签用来显示租金//定义一个电影的数组String[]movies={"蜘蛛侠","人狗奇缘","三傻大闹宝莱坞","极乐世界","厨子戏子痞子","未知死亡","玩命快递","死亡飞车","肖申克的救赎","年度街舞大赛"};jcb1=new JboBox(movies);//将数组信息添加到下拉框//设置网格布局this、setLayout(new GridLayout(4,1));//添加组件jp1、add(jl1);jp1、add(jcb1);jp2、add(jl2);jp3、add(jl3);jp3、add(jl4);jp4、add(jb1);this、add(jp1);this、add(jp2);this、add(jp3);this、add(jp4);this、setSize(500,300);this、setDefaultCloseOperation(JFrame、EXIT_ON_CLOSE);this、setVisible(true);}public void actionPerformed(ActionEvent e){// TODO Auto-generated method stubif(e、getActionmand()、equals("OK")){//获取下拉框中的选项if(jcb1、getSelectedItem()、equals("三傻大闹宝莱坞")||jcb1、getSelectedItem()、equals("肖申克的救赎")){pay+=2、5;}else{pay+=2、0;}//将租金转换成字符型String,并且赋给jl4标签jl4、setText(String、valueOf(pay)+"$");}}}实验运行结果:初始运行界面:选择普通电影后,点击购买电影票后支付总金额增加2、0:选择《三傻大闹宝莱坞》和《肖申克的救赎》这两部电影,点击购买电影票支付总金额增加2、5四、实验总结:本次实验主要将窗体组件和事件管理器的组合运用,使得自己在JAVA编程中的灵活运用能力进一步提高!指导教师签名:。

云南大学JAVA实验11

云南大学JAVA实验11
FileWriter fileWriter=new FileWriter(filepath); for (int i = 0; i < args.length; i++) {
fileWriter.write(String.valueOf(args[i])+" ");
}
fileWriter.flush(); fileWriter.close();
云南大学软件学院
实验报告
姓名:
学号:
班级:
日期:
成绩:
JAVA 实验十一
一、 实验目的:
熟悉 Java 中有关文件的相关操作,学会读写文件。
二、实验要求:
Use FileAccessTest as a shell and write a program to read data from a file - users.txt, write data out to another file - emailnames.txt and log activity at different levels (log file location: "D:\log\").
FileOpertion file=new FileOpertion();
if(args[0].equals("copy")){ if(!args指[1导].教is师Em签pt名y(:)){ file.copyFile(args[1],
args[2]); file.log(args);
System.out.print(args[0]+" "+args[1]+" "+args[2]+" commplete!");
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Now when the user clicks on a space in the panel (outside a button), draw a circle with the current color. Have your application just add new circles when the user clicks the mouse. Do not erase previous circles.
Program 2
Create an application AddCircles that displays a panel. This panel will contain two buttons (one for red and one for blue). When the user clicks on a button, change a variable called currentColor to that particular color.
super.paint();
//设置背景颜色 g.setColor(Color.CYAN); g.fillRect(0, 0, 500, 500);
//画出不同颜色的固定圆 this.DrawBall(g, this.ball.getColor(), this.ball.getLocate()); }
public int getColor() { return color;
} public void setColor(int color) {
this.color = color; } public int getLocate() {
return locate; } public void setLocate(int locate) {
//定义一个画圆的函数 public void DrawBall(Graphics g,int color, int locate) {
switch(color) { case 0:
g.setColor(Color.WHITE); break; case 1: g.setColor(Color.BLUE); break; case 2: g.setColor(Color.RED); break; } g.fillOval(locate, locate, 150, 150); }
this.add(jp,BorderLayout.NORTH); this.add(mp);
this.setTitle("ChangeBallColor"); this.setSize(500, 500); this.setLocation(300, 150); this.setVisible(true); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } }
this.add(jp,BorderLayout.NORTH); this.add(mp);
this.setTitle("ChangeBallColor"); this.setSize(500, 500); this.setLocation(300, 150); this.setVisible(true); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } }
//定义组件 JPanel jp; JButton jb1,jb2,jb3; MyPanel mp=null;
public static void main(String[] args) { // TODO Auto-generated method stub AddCircles main=new AddCircles();
三、实验内容:
Program 1:
Balls.java 代码部分
package Lab9;
class Balls { //定义圆的颜色 type,1 表示蓝色,2 表示红色 int color=0; //定义圆的位置 int locate=50;
public int getColor() { return color;
}
//构造函数 public AddCircles() {
mp=new MyPanel(); jp=new JPanel(); jb1=new JButton("蓝色"); jb2=new JButton("红色"); jb3=new JButton("增加一个同颜色的圆");
jp.add(jb1); jp.add(jb2); jp.add(jb3);
//构造函数 public Balls(int color, int locate) {
this.color=color; this.locate=locate; }
}
ChangeBallColor.java 代码部分
package Lab9;
import java.awt.*; import java.awt.event.*; import javax.swing.*;
//对事件的处理函数 public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub if(e.getActionCommand().equals("蓝色")) {
this.ball.setColor(1); this.ball.setLocate(150); }else if(e.getActionCommand().equals("红色")) { this.ball.setColor(2); this.ball.setLocate(150); }
this.locate = locate; }
//构造函数 public Balls(int color, int locate) {
this.color=color; this.locate=locate; } }
//增加圆的类 class AddBalls extends Balls {
public AddBalls(int color, int locate) {
//定义我的面板 class MyPanel extends JPanel implements ActionListener {
Balls ball=null; //创建一个集合,用于保存增加的圆 Vector<AddBalls> abList=new Vector<AddBalls>(); int i=150;//表示增加圆的位置,初始为 150 //构造函数 public MyPanel() {
云南大学软件学院
实验报告
姓名: 王增伟 学号: 20111120083 班级: 软件工程 日期: 2014.11.18 成绩:
JAVA 实验九
一、 实验目的:
熟悉 Java 中的图形化编程以及事件监听器的使用。
二、实验要求:
Program 1
Create an application ChangeBallColor that displays a panel. This panel will contain two buttons (one for red and one for blue). It will also display a filled in circle. When the user clicks on a button, the circle should change to that color. So, if a user clicks the blue button, the circle will change to blue. Similarly, if a user clicks the red button, the circle will turn to red.
public class ChangeBallColor extends JFrame {
//定义组件
JPanel jp; JButton jb1,jb2; Panel mp=null;
public static void main(String[] args) { // TODO Auto-generated method stub ChangeBallColor main=new ChangeBallColor();
//定义我的面板 class Panel extends JPanel implements ActionListener {
Balls ball=null;
//构造函数 public Panel() {
//初始化圆 ball=new Balls(0,150); }
public void paint(Graphics g) {
//重绘界面 this.repaint(); } }
运行结果显示: 初始颜色为白色:
点击蓝色按钮后变为蓝色:
点击红色按钮后变为红色:
Program 2:
Balls.java 代码部分
package Lab9;
class Balls { //定义圆的颜色 type,1 表示蓝色,2 表示红色 int color=0; //定义圆的位置 int locate=50;
//注册监听 jb1.addActionListener(mp); jb1.setActionCommand("蓝色"); jb2.addActionListener(mp); jb2.setActionCommand("红色"); jb3.addActionListener(mp); jb3.setActionCommand("加圆");
相关文档
最新文档