java实验课程教学大纲-孙晶京

更新时间:2024-07-10 14:52:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

山西农业大学

Java面向对象程序设计实验课程教学大纲

一、课程基本信息

课程编码: 609A2011

课程中文名称:java面向对象程序设计 课程英文名称: java oriented object program

design

实验学时:24 实验学分:3 适用专业:信息与计算科学 开课学期:春季 大纲执笔人:孙晶京 大纲审核人:孙晶京 编写时间:2014-3

二、课程性质 专业必修课

三、实验教学目的与任务

通过本课程的实验,掌握Java语言的基本语法,学会利用面向对象程序设计的基本理论和思想解决实际问题,提高学生开发和调试程序的能力。

四、实验课程基本要求

在掌握理论支持的基础上,能够具备与理论相对应的实践开发能力,具体要求与理论要求相同,如下:

(1)掌握Java语言的基本语法和基本结构; (2)掌握面向对象程序设计的基本方法;

(3)熟练使用封装、继承、多态、抽象类、接口技术; (4)掌握java swing图形用户界面编程; (5)掌握jdbc数据库编程方法; (6)掌握Java异常的处理方法;

五、实验课程内容与学时分配(请不要随意变动此表的格式):

序号 一 二 三 四 Java入门 基本数据类型 运算符、表达式与语句 类与对象 实验项目名称 类 型 学 时 基础 综合设计 研究创新 √ √ √ √ 2 2 2 2 五 六 七 八 九 十 十一 十二 继承与接口 内部类与异常类 面向对象基本原则 常用实用类 Java swing图形用户界面 对话框 输入输出流 Jdbc数据库操作 √ √ √ √ √ √ √ √ 2 2 2 2 2 2 2 2 六、实验内容及教学要求 实验项目一:java入门 实验1 一个简单的应用程序

实验教学目标: 掌握开发java应用程序的三个步骤:编写源文件、编译源文件和运行应用程序。

实验场地或主要设备与器材:计算机

实验要求:编写一个java应用程序,该程序在命令行输出两行文字:“你好,很高兴学习java“和”We are student“

实验内容: Hello.java

public class Hello {

public static void main (String args[ ]) {

System.out.printf(“你好,很高兴学习java”); //命令行窗口输出\你好,很高兴学习Java\ A a=new A(); a.fA(); } } class A { void fA() {

System.out.printf(“We are students”); //命令行窗口输出\ } }

实验内容要求:将【代码】部分替换为java程序代码。

实验报告要求:要有实验名称,实验目的,实验要求,实验内容(源代码),运行结果和总结。

实验2教室、老师和学生

实验教学目标: 熟悉java应用程序的基本结构,并能联合编译应用程序所需要的类。 实验场地或主要设备与器材:计算机

实验要求:编写3个源文件:ClassRoom.java ,Teacher.java 和Student.java,每个源文件只有一个类。ClassRoom.java含有应用程序的主类,并使用了Teacher和student

类。将3个源文件保存到同一目录中,然后编译ClassRoom.java

实验内容: ClassRoom.java

public class ClassRoom {

public static void main (String args[ ]) {

System.out.printf(“教学活动从教室开始”);//命令行窗口输出\教学活动从教室开始\ Teacher zhang = new Teacher(); Student jiang = new Student(); zhang.introduceSelf(); jiang.introduceSelf(); } }

Teacher.java

public class Teacher { void introduceSelf() {

System.out.printf(“我是张老师”); //命令行窗口输出\我是张老师\ } }

Student.java

public class Student { void introduceSelf() {

System.out.printf(“我是学生,名字是:奖励”);/ /命令行窗口输出\我是学生,名字是:奖励\ } }

实验内容要求:将【代码】部分替换为java程序代码。

实验报告要求:要有实验名称,实验目的,实验要求,实验内容(源代码),运行结果和总结。

实验项目二:基本数据类型 实验1 输出特殊偏旁的汉字

实验教学目标: 掌握char型和int型数据之间的互相转换,同时了解unicode字符表。 实验场地或主要设备与器材:计算机

实验要求:编写应用程序,在命令行窗口输出5个“石“子旁的汉字和5个”女“子旁的汉字。

实验内容: InputChinese.java

public class E {

public static void main (String args[ ]){ char ch='研',zifu=0;

int p=22920,count=5,position=0;

System.out.printf(\输出%d个石字傍的汉字:\\n\ for(char c=ch;c<=ch+count;c++) {

int position = (int)c; //c进行int型转换据运算,并将结果赋值给position

System.out.printf(\

}

System.out.printf(\输出%d个女字傍的汉字:\\n\ for(int n=p;n<=p+count;n++) {

【代码2】 // n做char型转换运算,并将结果赋值给zifu

System.out.printf(\ } } }

实验内容要求:将【代码】部分替换为java程序代码。

实验报告要求:要有实验名称,实验目的,实验要求,实验内容(源代码),运行结果和总结。

实验2输入、输出学生的基本信息

实验教学目标: 掌握从键盘为简单型变量输入数据。 实验场地或主要设备与器材:计算机

实验要求:编写应用程序,使用Scanner对象输入学生的基本信息,并输出基本信息。 实验内容: InputMess.java

import java.util.Scanner; public class InputMess {

public static void main(String args[]) { Scanner reader=new Scanner(System.in); System.out.println(\输入姓名(回车确认):\

String name=【代码1】 //从键盘为name赋值 System.out.println(\输入年龄(回车确认):\ byte age=【代码2】 //从键盘为age赋值 System.out.println(\输入身高(回车确认):\ float height=【代码3】 //从键盘为height赋值 System.out.printf(\基本信息--\ System.out.printf(\姓名:\ System.out.printf(\年龄:\ System.out.printf(\身高:\ } }

实验内容要求:将【代码】部分替换为java程序代码。

实验报告要求:要有实验名称,实验目的,实验要求,实验内容(源代码),运行结果和总结。

实验3超大整数的加法

实验教学目标: 掌握使用数组处理大整数的加法。 实验场地或主要设备与器材:计算机

实验要求:声明3个int型数组:a,b,c,要求三者的长度相同。将其中的a,b初始化为大整数的表示,但大整数的数字的长度必须小于数组的长度,以便保证数组a,b的首元素为0。将a,b的各个元素进行加法运算(需要进位时,需要改变a的元素的值),结果依次存放到数组c中,输出数组c。

实验内容:

HandleLargeNumber.java

public class HandleLargeNumber { public static void main(String args[]) {

int a[] = {0,9,9,7,9,4,5,6,7,2,3,4,5,6,4,7,8,9,8,7,6,9}; int b[] = {0,0,5,9,1,6,4,5,6,2,3,4,5,7,2,1,3,4,0,3,2,9}; int c[]= new int[a.length]; int i = 0,result =0,k=0; for(i=0;i

for(i=k;i

System.out.printf(\加上:\\n\ for(i=0;i

for(i=k;i

for(i=a.length-1;i>=0;i--) { result = a[i]+b[i]; if(result>=10) { c[i] = result; a[i-1] = a[i-1]+1; } else

c[i] = result; }

System.out.printf(\等于:\\n\ for(i=0;i

for(i=k;i

CD.java

public class CD { int size; int content[];

public void setSize(int size) { this.size = size; content = new int[size]; }

public int getSize() { return size; }

public int [] getContent() { return content; }

public void setContent(int [] b) {

int min=Math.min(content.length,b.length); for(int i=0;i

Computer.java

public class Computer { int data[]; CD includeCD;

public void putCD(CD cd) { includeCD = cd;

int size=includeCD.getSize(); data=new int[size]; }

void copyToComputer() {

int [] b = includeCD.getContent(); int min=Math.min(data.length,b.length); for(int i=0;i

public void addData(int m) { for(int i=0;i

void copyToCD() {

includeCD.setContent(data); }

void showData() {

for(int i=0;i

} }

User.java

public class User {

public static void main(String args[]) { CD dataCD = new CD(); int b[] ={1,2,3,4,5,6,7,8}; dataCD.setSize(b.length); dataCD.setContent(b); int a[]=dataCD.getContent();

System.out.println(\上的内容:\ for(int i=0;i

【代码1】//computerIMB调用putCD(CD cd)方法,将dataCD的引用传递给cd System.out.println(\将dataCD的数据复制到计算机:computerIMB.\ 【代码2】//computerIMB调用copyToComputer()方法 System.out.println(\上的内容:\ computerIMB.showData(); int m=12;

System.out.println(\将每个数据增加\ computerIMB.addData(m);

System.out.println(\将增值后的数据复制到CD:dataCD\ 【代码3】//computerIMB调用copyToCD()方法 System.out.println(\上的内容:\ a=dataCD.getContent(); for(int i=0;i

System.out.printf(\ } }

实验内容要求:将【代码】部分替换为java程序代码。

实验报告要求:要有实验名称,实验目的,实验要求,实验内容(源代码),运行结果和总结。

实验3家族的姓氏

实验教学目标: 掌握类变量和实例变量以及类方法和实例方法的区别。 实验场地或主要设备与器材:计算机

实验要求:模拟一个家族成员的姓氏,姓名有两部分构成:姓氏和名字。编写一个FamilyPerson类,该类有一个静态的String型成员变量surname,用于存储姓氏,一个实例的String型成员变量name,用于存储名字。在主类MainClass的main方法中首先用类名访问surname,并为surname赋值,然后FamilyPerson创建3个对象,father,sonOne和sonTwo,并分别为father,sonOne和sonTwo的成员变量name赋值。

实验内容: FamilyPerson.java

public class FamilyPerson { static String surname;

String name;

public static void setSurname(String s){ surname = s; }

public void setName(String s) { name = s; } }

MainClass.java

public class MainClass {

public static void main(String args[]) {

【代码1】 //用类名FamilyPerson访问surname,并为surname赋值:\李\ FamilyPerson father,sonOne,sonTwo; father = new FamilyPerson(); sonOne = new FamilyPerson(); sonTwo = new FamilyPerson();

【代码2】 //father调用setName(String s),并向s传递\向阳\ sonOne.setName(\抗日\ sonTwo.setName(\抗战\

System.out.println(\父亲:\ System.out.println(\大儿子:\ System.out.println(\二儿子:\ 【代码3】// father调用setSurName(String s),并向s传递\张\ System.out.println(\父亲:\ System.out.println(\大儿子:\ System.out.println(\二儿子:\ } }

实验内容要求:将【代码】部分替换为java程序代码。

实验报告要求:要有实验名称,实验目的,实验要求,实验内容(源代码),运行结果和总结。

实验项目五:继承与接口 实验1 中国人和美国人

实验教学目标: 巩固子类的继承性,子类对象的创建过程以及方法的继承和重写。 实验场地或主要设备与器材:计算机

实验要求: 编写程序模拟中国人、美国人和北京人。要求如下:

People类有权限为protected的double型成员变量:weight和height,以及public void speakHello()、public void averageHeight()和public void averageWeight()。

ChinaPeople类是People的子类,增加了public void chinaGongfu()方法。要求ChinaPeople重写public void speakHello()、public void averageHeight()和public void averageWeight()方法。

AmericanPeople类是People的子类,增加了public void americanBoxing()方法。要求AmericanPeople重写public void speakHello()、public void averageHeight()和public void averageWeight()方法。

BeijingPeople 类是 ChinaPeople的子类,增加了public void beijingOpera()方法。

要求BeijingPeople重写public void speakHello()、public void averageHeight()和public void averageWeight()方法。

实验内容: People.java

public class People {

protected double weight,height; public void speakHello() { System.out.println(\ }

public void averageHeight() { height=173;

System.out.println(\ }

public void averageWeight() { weight=70;

System.out.println(\ } }

ChinaPeople.java

public class ChinaPeople extends People { public void speakHello() { System.out.println(\您好\ }

public void averageHeight() { height = 168.78;

System.out.println(\中国人的平均身高:\厘米\ }

【代码1】 //重写public void averageWeight()方法,输出:\中国人的平均体重:65公斤\ public void chinaGongfu() {

System.out.println(\坐如钟,站如松,睡如弓\ } }

AmericanPeople.java

public class AmericanPeople extends People {

【代码2】 //重写public void speakHello()方法,输出\

【代码3】 //重写public void averageHeight()方法,输出\ public void averageWeight() { weight = 75;

System.out.println(\ }

public void americanBoxing() {

System.out.println(\直拳、钩拳、组合拳\ } }

BeijingPeople.java

public class BeijingPeople extends ChinaPeople {

【代码4】 //重写public void averageHeight()方法, 输出:\北京人的平均身高:172.5厘米\ 【代码5】 //重写public void averageWeight()方法,输出:\北京人的平均体重:70公斤\ public void beijingOpera() {

System.out.println(\花脸、青衣、花旦和老生\ } }

Example.java

public class Example {

public static void main(String args[]) {

ChinaPeople chinaPeople=new ChinaPeople();

AmericanPeople americanPeople=new AmericanPeople(); BeijingPeople beijingPeople=new BeijingPeople(); chinaPeople.speakHello(); americanPeople.speakHello(); beijingPeople.speakHello(); chinaPeople.averageHeight(); americanPeople.averageHeight(); beijingPeople.averageHeight(); chinaPeople.averageWeight(); americanPeople.averageWeight(); beijingPeople.averageWeight(); chinaPeople.chinaGongfu(); americanPeople.americanBoxing(); beijingPeople.beijingOpera() ; beijingPeople.chinaGongfu(); } }

实验内容要求:将【代码】部分替换为java程序代码。

实验报告要求:要有实验名称,实验目的,实验要求,实验内容(源代码),运行结果和总结。

实验2银行与利息

实验教学目标: 掌握重写的目的以及怎样使用super关键字。 实验场地或主要设备与器材:计算机 实验要求: 假设银行Bank已经有了按整年year计算利息的一般方法,其中year只取整数。如按年计算的方法:

double computerInterest() {

interest=year*0.05*savedMoney; return interest; }

建设银行ConstructionBank是Bank的子类,准备隐藏继承的成员变量year,并重写计算利息的方法,即ConstructionBank声明了一个double型的year变量,比如,当year取值为5.216时,表示要计算5年零216天的利息,但希望首先按照Bank类的方法computerInterest()计算出5整年的利息,然后ConstructionBank再计算216天的利息。那么ConstructionBank类就必须把5.216的整数部分赋值给隐藏的year,并让super调用隐藏的按整年计算利息的方法。

要求ConstructionBank和BankOfDalian都是Bank的子类,ConstructionBank和

实验要求: 用户输入两个日期,程序将判断两个日期的大小关系,以及两日期间隔的天数。

实验内容: CompareDate.java

import java.util.*;

public class CompareDate {

public static void main(String args[ ]) { Scanner scanner = new Scanner(System.in); System.out.println(\输入第一个年,月,日数据\ System.out.print(\输入年份\ short yearOne = scanner.nextShort(); System.out.print(\输入月份\ byte monthOne = scanner.nextByte(); System.out.print(\输入日期\ byte dayOne = scanner.nextByte();

System.out.println(\输入第二个年,月,日数据\ System.out.print(\输入年份\ short yearTwo = scanner.nextShort(); System.out.print(\输入月份\ byte monthTwo= scanner.nextByte(); System.out.print(\输入日期\ byte dayTwo = scanner.nextByte();

Calendar calendar = 【代码1】 //初始化日历对象

【代码2】 //将calendar的时间设置为yearOne年monthOne月dayOne日 long timeOne =【代码3】 //calendar表示的时间转换成毫秒 calendar.set(yearTwo,monthTwo-1,dayTwo); long timeTwo=calendar.getTimeInMillis();

Date date1 = 【代码4】 // 用timeOne做参数构造date1 Date date2 =new Date(timeTwo); if(date2.equals(date1))

System.out.println(\两个日期的年、月、日完全相同\ else if(date2.after(date1))

System.out.println(\您输入的第二个日期大于第一个日期\ else if(date2.before(date1))

System.out.println(\您输入的第二个日期小于第一个日期\ long days=【代码5】//使用timeTwo,timeOne计算两个日期相隔天数 System.out.println(yearOne+\年\月\日和\

+yearTwo+\年\月\相隔\天\ } }

实验内容要求:将【代码】部分替换为java程序代码。

实验报告要求:要有实验名称,实验目的,实验要求,实验内容(源代码),运行结果和总结。

实验4 处理大整数

实验教学目标: 掌握Biginteger类的常用方法。 实验场地或主要设备与器材:计算机

实验要求: 计算2个大整数的和差积商,并计算出一个大整数的因子个数(不包括1

和本身)。

实验内容: HandleBigInteger.java

import java.math.*; class BigIntegerExample

{ public static void main(String args[])

{ BigInteger n1=new BigInteger(\ n2=new BigInteger(\ result=null;

result=【代码1】//n1和n2做加法运算 System.out.println(\和:\ result=【代码2】//n1和n2做减法运算 System.out.println(\差:\ result=【代码3】//n1和n2做乘法运算 System.out.println(\积:\ result=【代码4】//n1和n2做除法运算 System.out.println(\商:\ BigInteger m=new BigInteger(\ COUNT=new BigInteger(\ ONE=new BigInteger(\ TWO=new BigInteger(\

System.out.println(m.toString()+\的因子有:\

for(BigInteger i=TWO;i.compareTo(m)<0;i=i.add(ONE)) { if((n1.remainder(i).compareTo(BigInteger.ZERO))==0) { COUNT=COUNT.add(ONE); System.out.print(\ \ } }

System.out.println(\

System.out.println(m.toString()+\一共有\个因子\ } }

实验内容要求:将【代码】部分替换为java程序代码。

实验报告要求:要有实验名称,实验目的,实验要求,实验内容(源代码),运行结果和总结。

实验5 替换IP

实验教学目标: 掌握怎样使用patten类和Match类检索字符串。 实验场地或主要设备与器材:计算机

实验要求: 字符串“登录网站:222.128.89.253”中的正确IP是202.192.78.56。编写程序,输出把错写的IP:222.128.89.253替换为正确的IP:202.192.78.56

实验内容: ReplaceErrorWord.java

import java.util.regex.*; public class ReplaceIP{

public static void main(String args[ ]) {

String str = \登录网站: 222.128.89.253\ Pattern pattern; Matcher matcher;

String regex = \ pattern = 【代码1】 //使用regex初试化模式对象pattern matcher = 【代码2】 //得到检索str的匹配对象matcher String IP=\

while(matcher.find()) { IP= matcher.group();

System.out.print(matcher.start()+\位置出现:\ System.out.println(IP); }

System.out.printf(\将%s替换为202.192.78.56\\n\ String result = matcher.replaceAll(\ System.out.println(result); } }

实验内容要求:将【代码】部分替换为java程序代码。

实验报告要求:要有实验名称,实验目的,实验要求,实验内容(源代码),运行结果和总结。

实验项目九:java swing图形用户界面 实验1算术测试

实验教学目标: 学习处理ActionEvent事件。 实验场地或主要设备与器材:计算机

实验要求: 编写一个算术测试小软件,用来训练小学生的算术能力。程序有3个类,Teacher对象充当监视器,负责给出算术题目,并判断回答者的答案是否正确。ComputerFrame对象负责为算术题目提供视图,比如用户可以通过ComputerFrame对象提供的GUI界面看到题目,并通过该GUI界面给出题目的答案;MainClass是主类。

实验内容: MainClass.java

public class MainClass {

public static void main(String args[]) { ComputerFrame frame; frame=new ComputerFrame(); frame.setTitle(\算术测试\ frame.setBounds(100,100,650,180); } }

ComputerFrame.java

import java.awt.*; import java.awt.event.*; import javax.swing.*;

public class ComputerFrame extends JFrame { JMenuBar menubar;

JMenu choiceGrade; //选择级别的菜单 JMenuItem grade1,grade2;

JTextField textOne,textTwo,textResult; JButton getProblem,giveAnwser; JLabel operatorLabel,message; Teacher teacherZhang; ComputerFrame() {

teacherZhang=new Teacher(); teacherZhang.setMaxInteger(20); setLayout(new FlowLayout()); menubar = new JMenuBar();

choiceGrade = new JMenu(\选择级别\ grade1 = new JMenuItem(\幼儿级别\ grade2 = new JMenuItem(\儿童级别\ grade1.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) { teacherZhang.setMaxInteger(10); } });

grade2.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) { teacherZhang.setMaxInteger(50); } }); choiceGrade.add(grade1); choiceGrade.add(grade2); menubar.add(choiceGrade); setJMenuBar(menubar);

textOne=new JTextField(5); //创建textOne,其可见字符长是5 textTwo=new JTextField(5); textResult=new JTextField(5); operatorLabel=new JLabel(\

operatorLabel.setFont(new Font(\ message=new JLabel(\你还没有回答呢\ getProblem=new JButton(\获取题目\ giveAnwser=new JButton(\确认答案\ add(getProblem); add(textOne); add(operatorLabel); add(textTwo); add(new JLabel(\ add(textResult); add(giveAnwser); add(message);

textResult.requestFocus(); textOne.setEditable(false); textTwo.setEditable(false);

getProblem.setActionCommand(\ textResult.setActionCommand(\

giveAnwser.setActionCommand(\

teacherZhang.setJTextField(textOne,textTwo,textResult); teacherZhang.setJLabel(operatorLabel,message);

getProblem.addActionListener(teacherZhang);//将teacherZhang注册为getProblem的ActionEvent事件监视器

giveAnwser.addActionListener(teacherZhang);//将teacherZhang注册为giveAnwser的ActionEvent事件监视器

textResult.addActionListener(teacherZhang);//将teacherZhang注册为textResult的ActionEvent事件监视器

setVisible(true); validate();

setDefaultCloseOperation(DISPOSE_ON_CLOSE); } }

Teacher.java

import java.util.Random; import java.awt.event.*; import javax.swing.*;

public class Teacher implements ActionListener { int numberOne,numberTwo; String operator=\ boolean isRight;

Random random; //用于给出随机数 int maxInteger; //题目中最大的整数 JTextField textOne,textTwo,textResult; JLabel operatorLabel,message; Teacher() {

random = new Random(); }

public void setMaxInteger(int n) { maxInteger=n; }

public void actionPerformed(ActionEvent e) { String str = e.getActionCommand(); if(str.equals(\

numberOne = random.nextInt(maxInteger)+1;//1至maxInteger之间的随机数; numberTwo=random.nextInt(maxInteger)+1; double d=Math.random(); // 获取(0,1)之间的随机数 if(d>=0.5) operator=\ else

operator=\

textOne.setText(\ textTwo.setText(\ operatorLabel.setText(operator); message.setText(\请回答\ textResult.setText(null); }

else if(str.equals(\

String answer=textResult.getText(); try{ int result=Integer.parseInt(answer); if(operator.equals(\

if(result==numberOne+numberTwo) message.setText(\你回答正确\ else

message.setText(\你回答错误\ }

else if(operator.equals(\

if(result==numberOne-numberTwo) message.setText(\你回答正确\ else

message.setText(\你回答错误\ } }

catch(NumberFormatException ex) { message.setText(\请输入数字字符\ } } }

public void setJTextField(JTextField ... t) { textOne=t[0]; textTwo=t[1]; textResult=t[2]; }

public void setJLabel(JLabel ...label) { operatorLabel=label[0]; message=label[1]; } }

实验内容要求:将【代码】部分替换为java程序代码。

实验报告要求:要有实验名称,实验目的,实验要求,实验内容(源代码),运行结果和总结。

实验2布局与日历

实验教学目标: 掌握使用布局类。 实验场地或主要设备与器材:计算机

实验要求: 编写一个程序,有一个窗口,该窗口的布局为BorderLayOut布局。窗口的中心添加一个JPanel容器pCenter,pCenter的布局设置为7行7列的GridLayout 布局,pCenter中放置49个标签用来显示日历。窗口的北面添加一个JPanel容器pNorth,其布局为FlowLayOut布局,pNorth放置两个按钮,nextMonth和 previousMonth,单击nextMonth显示当前月的下一个月,单击previousMonth显示当前月的上一个月。窗口的南面添加一个JPanel容器pSouth,其布局为FlowLayOut布局,pSouth中放置一个标签用来显示一些信息。

实验内容: CalendarMainClass.java

public class CalendarMainClass { public static void main(String args[]) {

CalendarFrame frame=new CalendarFrame(); frame.setBounds(100,100,360,300); frame.setVisible(true);

frame.setYearAndMonth(2015,5); } }

CalendarBean.java

import java.util.Calendar; public class CalendarBean { String day[]; int year=2005,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; }

public String[] getCalendar() { String a[]=new String[42]; Calendar 日历=Calendar.getInstance(); 日历.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)&&(year0!=0))||(year@0==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.util.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.border.*;

public class CalendarFrame extends JFrame implements ActionListener { JLabel labelDay[]=new JLabel[42]; JButton titleName[]=new JButton[7];

String name[]={\日\一\二\三\四\五\六\ JButton nextMonth,previousMonth; CalendarBean calendar;

JLabel showMessage=new JLabel(\ int year=2011,month=2; public CalendarFrame() { JPanel pCenter=new JPanel();

pCentersetLayout(new GridLayout(7,7)); //将pCenter的布局设置为7行7列的GridLayout 布局。

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

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

titleName[i].setBorder(new SoftBevelBorder(BevelBorder.RAISED)); pCenter.add(titleName[i]); }

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

labelDay[i]=new JLabel(\

labelDay[i].setBorder(new SoftBevelBorder(BevelBorder.LOWERED)); 【代码2】//pCenter添加组件labelDay[i]。 }

calendar=new CalendarBean(); nextMonth=new JButton(\下月\ previousMonth=new JButton(\上月\ nextMonth.addActionListener(this); previousMonth.addActionListener(this); JPanel pNorth=new JPanel(), pSouth=new JPanel(); pNorth.add(previousMonth); pNorth.add(nextMonth); pSouth.add(showMessage);

add(pCenter,BorderLayout.CENTER); 【代码3】 // 窗口添加pNorth 在北面区域 【代码4】 // 窗口添加pSouth 在南区域。 setYearAndMonth(year,month);

setDefaultCloseOperation(DISPOSE_ON_CLOSE); }

public void setYearAndMonth(int y,int m) { calendar.setYear(y); calendar.setMonth(m);

String day[]=calendar.getCalendar(); for(int i=0;i<42;i++)

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

showMessage.setText(\日历:\年\月\ }

public void actionPerformed(ActionEvent e) { if(e.getSource()==nextMonth) { month=month+1; if(month>12) month=1;

calendar.setMonth(month); String day[]=calendar.getCalendar(); for(int i=0;i<42;i++) { labelDay[i].setText(day[i]); } }

else if(e.getSource()==previousMonth) { month=month-1; if(month<1) month=12;

calendar.setMonth(month); String day[]=calendar.getCalendar(); for(int i=0;i<42;i++)

labelDay[i].setText(day[i]); }

showMessage.setText(\日历:\年\月\ } }

实验内容要求:将【代码】部分替换为java程序代码。

实验报告要求:要有实验名称,实验目的,实验要求,实验内容(源代码),运行结果和总结。

实验3华容道

实验教学目标: 学习焦点、鼠标和键盘事件。 实验场地或主要设备与器材:计算机

实验要求: 编写GUI程序,用户通过键盘和鼠标事件来实现曹操和光羽等人物的移动。

实验内容: MainClass.java

public class MainClass {

public static void main(String args[]) { new Hua_Rong_Road(); } }

Hua_Rong_Road.java

import java.awt.*; import javax.swing.*; import java.awt.event.*;

public class Hua_Rong_Road extends JFrame implements MouseListener,KeyListener,ActionListener {

Person person[]=new Person[10]; JButton left,right,above,below; JButton restart=new JButton(\重新开始\ public Hua_Rong_Road() { init();

setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); setBounds(100,100,320,500); setVisible(true); validate(); }

public void init() { setLayout(null); add(restart);

restart.setBounds(100,320,120,35); restart.addActionListener(this);

String name[]={\曹操\关羽\张\刘\周\黄\兵\兵\兵\兵\ for(int k=0;k

person[0].setBounds(104,54,100,100); person[1].setBounds(104,154,100,50); person[2].setBounds(54, 154,50,100); person[3].setBounds(204,154,50,100); person[4].setBounds(54, 54, 50,100); person[5].setBounds(204, 54, 50,100); person[6].setBounds(54,254,50,50); person[7].setBounds(204,254,50,50); person[8].setBounds(104,204,50,50); person[9].setBounds(154,204,50,50); person[9].requestFocus(); left=new JButton(); right=new JButton(); above=new JButton(); below=new JButton(); add(left); add(right); add(above); add(below);

left.setBounds(49,49,5,260); right.setBounds(254,49,5,260); above.setBounds(49,49,210,5); below.setBounds(49,304,210,5); validate(); }

public void keyTyped(KeyEvent e){} public void keyReleased(KeyEvent e){}

本文来源:https://www.bwwdw.com/article/tbt.html

Top