JavaJAVA程序设计 答案

更新时间:2023-10-23 16:16:01 阅读量: 综合文库 文档下载

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

项目一 学生管理系统(结构化设计方法实现) 任务一 程序的运行环境 (一)填空题

1.Java SE Java EE Java ME 2.C:\\JDK . 3..java .class 4.public

5.Java应用程序 Java小应用程序 (二)选择题

1.B 2.B 3.D 4.A (三)简答题

1.Java语言有哪些特点?

答:简单,面向对象,与平台无关,解释型,多线程,安全,动态。 2.JDK安装完成后,如何设置环境变量?

答:主要设置环境变量JAVA_HOME,path,classpath。详见教材第6页。 3.简述Java应用程序和小应用程序的区别。

答:Java应用程序是由用户系统就地装入的可独立运行的Java程序,可以是基于窗口或控制台的。而Java小应用程序需要嵌入到网页在浏览器中运行。 4.简述Java应用程序的开发过程。 答:(1)建立源程序。可利用任何文本编辑器建立,文件扩展名为.java。(2)编译源程

序。命令为javac 程序名.java(3)解释运行程序。命令为java 程序名

任务二 成绩的表示和基本运算 (一)填空题

1.true false

2.1 1 false 0 -0.6 (二)选择题

1.C 2.B 3.D 4.D 5.D 6.C 7.C 8.D 9.B 10.D 11.D 12.A (三)编程题

1.定义两个整型变量a,b;然后分别赋予23,89,在屏幕上打印出“a+b=112”字样。 package pr1;

public class lx1_2_1 {

public static void main(String args[]) { int a, b; a = 23; b = 89;

System.out.println(\ } }

2.定义两个浮点型变量m,n;然后分别赋予98.67,2.34,在屏幕上打印出“m-n=96.33”字样。 package pr1;

public class lx1_2_2 {

public static void main(String[] args) { double m, n; m = 98.67; n = 2.34;

System.out.println(\ } }

3.编写程序求出Area=a×b×c,并对a,b,c分别赋予数值,进行调试查看。 package pr1;

public class lx1_2_3 {

public static void main(String[] args) { int a, b, c; int area; a = 17; b = 42; c = 33;

area = a * b * c;

System.out.println(area); } }

4.使用Math.pow( )方法,求出2的32次方的值。 package pr1;

public class lx1_2_4 {

public static void main(String[] args) { double value;

value = Math.pow(2, 32);

System.out.println(\的32次方是:\ } }

任务三 成绩的判断和统计 (一)填空题

1.byte short,int ,char 2.结束整个循环

3.if语句 switch语句 4.>=0 >0 >=0 (二)选择题

1.C 2.C 3.B 4.D 5.C 6.D 7.A 8.B 9.C 10.B 11.D 12.B 13.C (三)编程题

1.输入4个数,将这4个数按从小到大输出。 package pr1;

import java.util.Scanner; public class lx1_3_1 {

public static void main(String args[]) {

Scanner scan=new Scanner(System.in); int a,b,c,d,t;

System.out.println(\请输入三个整数:\ a=scan.nextInt(); b=scan.nextInt(); c=scan.nextInt(); d=scan.nextInt(); if (a>b) {

t=a; a=b; b=t; }

if (a>c) {

t=a; a=c; c=t; }

if (a>d) {

t=a; a=d; d=t; }

if (b>c) {

t=b; b=c; c=t; }

if (b>d) {

t=b; b=d; d=t; }

if (c>d) {

t=c; c=d; d=t; }

System.out.println(a+\ } }

2.输入一个年份值,判断是否是闰年,输出相应的信息。 import java.util.Scanner; public class Exam24 {

public static void main(String[] args) { Scanner input=new Scanner(System.in); int year;

year=input.nextInt();

if (year%4==0 && year0!=0 || year@0==0) {

System.out.println(year+\年是闰年\ } else {

System.out.println(year+\年不是闰年\ } } }

3.输入一元二次方程系数,若有实数根,求根并输出,否则输出“不是二次方程或没有实数根”的信息。 package pr1;

import java.util.Scanner; public class lx1_3_3 {

public static void main(String args[]){ double a,b,c,d,x1,x2;

Scanner scan=new Scanner(System.in);

System.out.println(\请输入一元二次方程的系数:\ a=scan.nextDouble(); b=scan.nextDouble(); c=scan.nextDouble(); d=b*b-4*a*c; if (d>=0){

x1=(-b+Math.sqrt(d))/(2*a); x2=(-b-Math.sqrt(d))/(2*a);

System.out.println(\方程的实数根为:x1=\ }else{

System.out.println(\方程没有实数根!\ } } }

4.编写程序,计算邮局汇款的汇费:如果汇款金额小于100元,汇费为1元,如果金额在100元与500元之间,按1%收取汇费,如果金额大于500元,汇费为50元。 package pr1;

import java.util.Scanner; public class lx1_3_4 {

public static void main(String[] args) { Scanner input=new Scanner(System.in); double je,hf;

je=input.nextDouble(); if (je<100) {

hf=1; }

else if (je<500) {

hf=je*0.01; } else {

hf=50; }

System.out.println(\汇款金额:\汇费:\ } }

5.求某年某月的天数. package pr1;

import java.util.Scanner; public class lx1_3_5 {

public static void main(String args[]) { Scanner input = new Scanner(System.in); int year, month, day; year = input.nextInt(); month = input.nextInt(); switch (month) { case 2:

if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) day = 29; else

day = 28; break; case 1: case 3: case 5: case 7: case 8: case 10: case 12:

day = 31; break; default:

day = 30; break; }

System.out.println(year + \年\月的天数:\ }

}

6.求从1到100之间所有奇数的平方和(用for、while和do??while编写程序)。 public class lx1_3_6 {

public static void main(String[] args) { int i,sum; sum=0;

for(i=1;i<=100;i++) {

if (i%2==1)

sum=sum+i*i;

}

System.out.println(\ } }

7.求S=1+2+3+?+n之和,S<1000的最大n的值。 public class lx1_3_7 {

public static void main(String[] args) { int s=0; int i;

for(i=1;;i++) {

s=s+i;

if (s>1000) break; }

System.out.println(i-1); } }

8. 有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。 public class lx1_3_8{

public static void main(String[] args) { double a,b,s; int i; s=0; a=2;b=1;

for(i=1;i<=20;i++) {

s=s+a/b; a=a+b; b=a-b; }

System.out.println(s); }

}

9.猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个,第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个,到第十天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少? package pr1;

public class lx1_3_9 {

public static void main(String[] args) { int x, i; x = 1;

for (i = 9; i >= 1; i--) { x = 2 * (x + 1); }

System.out.println(x); } }

10.输出九九乘法表。 package pr1;

public class lx1_3_10 {

public static void main(String[] args) { int i, j;

for (i = 1; i <= 9; i++) // 行 {

for (j = 1; j <= i; j++) // 列 {

System.out.print(i + \ }

System.out.println(); // 换行 } } }

11.输出1000之内的所有完数。所谓完数指的是:如果一个数恰好等于它的所有因子之和,

这个数就称为完数。 package pr1;

public class lx1_3_11 {

public static void main(String args[]) { int x, y, i;

for (x = 1; x <= 1000; x++) { y = 0;

for (i = 1; i <= x / 2; i++) { if (x % i == 0) y = y + i; }

if (x == y) {

System.out.println(x); } } } }

12.输出100以内的全部素数。 package pr1;

public class lx1_3_12 {

public static void main(String args[]) { int x, i, k;

for (x = 2; x <= 100; x++) { k = (int) Math.sqrt(x); for (i = 2; i <= k; i++) { if (x % i == 0) break; }

if (i>k){

System.out.println(x); } } } }

13.求1!+2!+3!+??+10! package pr1;

public class lx1_3_13 {

public static void main(String args[]) { double sum = 0, t;

for (int i = 1; i <= 10; i++) { t = 1;

for (int j = 1; j <= i; j++) { t = t * j; }

sum = sum + t; }

System.out.println(\=\ } }

14.求2+22+222+2222+22222。 package pr1;

public class lx1_3_14 {

public static void main(String args[]) { int sum, x, v, n = 5; v = 0;

x = 2; sum = 0;

for (int i = 1; i <= n; i++) { v = v * 10 + x; sum += v; }

System.out.println(\ } }

任务四 学生成绩管理系统功能的实现 (一)填空题

1.int y[]={1,2,3,4,5}; 2.3

3.a[i].length (二)选择题

1.C 2.B 3.C (三)编程题

1.编写一个程序,计算一维数组中的最大值、最小值及其差值。 package pr1;

public class lx1_4_1 {

public static void main(String[] args) {

int a[] = { 34, 65, 79, 50, 30, 40, 65, 23, 8, 10 }; // 数组名.length a.length int i, max, min; int n = a.length; // a[0] a[1] a[n-1] max = a[0]; min = a[0];

for (i = 1; i < n; i++) { if (max < a[i]) { max = a[i];

} else if (min < a[i]) { min = a[i]; } }

System.out.println(\最大数:\最小数:\差值:\- min)); } }

2.将一个数组中的数逆序重新存放。 package pr1;

public class lx1_4_2 {

public static void main(String args[]) {

int a[] = { 3, 15, 28, 11, 34, 78, 95, 27, 18 }; int i, length, temp; length = a.length;

for (i = 0; i < (length / 2); i++) {

// 以下将数组元素a[i]和a[length -1 - i]的值互换 temp = a[i];

a[i] = a[length - 1 - i]; a[length - 1 - i] = temp; }

for (i = 0; i < length; i++) { System.out.print(a[i] + \ } } }

3.已知数组(12,23,26,45,58,60)是有序的,输入一个数x,将它插入到数组中,保证数组仍然是有序的。 package pr1;

import java.util.Scanner; public class lx1_4_3 {

public static void main(String args[]) { int a[] = { 12, 23, 26, 45, 58, 60, 0 }; int x, i, j, n;

Scanner scanner = new Scanner(System.in); System.out.println(\请输入要插入的数x:\ x = scanner.nextInt(); n = 6;

for (i = 0; i < n; i++) { if (x < a[i]) break; }

for (j = n; j > i; j--) { a[j] = a[j - 1]; }

a[i] = x; n++;

for (i = 0; i < n; i++) {

System.out.print(a[i] + \ } } }

4.输出杨辉三角形。如: 1 1 1 1 2 1

1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 ??

package pr1;

public class lx1_4_4 {

public static void main(String args[]) { int a[][] = new int[10][10];

for (int i = 0; i < a.length; i++) { a[i][0] = a[i][i] = 1;

for (int j = 1; j < i ; j++) {

a[i][j] = a[i - 1][j - 1] + a[i - 1][j]; } }

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

System.out.print(a[i][j] + \ }

System.out.println(); } } }

5.求一个二维数组的每行最大数。 package pr1;

public class lx1_4_5 {

public static void main(String args[]) {

int a[][] = { { 34, 23, 45, 78 }, { 2, 24, 16, 20 }, { 43, 56, 22, 12 } }; int max;

for (int i = 0; i < a.length; i++) { max = a[i][0];

for (int j = 0; j < a[i].length; j++) { if (max < a[i][j]) max = a[i][j]; }

System.out.println(\第\行上的最大数为:\ } } }

6.输入一个十进制数,转换成二进制数并输出。 package pr1;

import java.util.Scanner; public class lx1_4_6 {

public static void main(String[] args) {

Scanner input = new Scanner(System.in); int x, i;

System.out.print(\请输入一个十进制数:\ x = input.nextInt(); int a[] = new int[20]; i = 0; do {

a[i++] = x % 2; x = x / 2; } while (x != 0);

System.out.print(\对应的二进制数为:\ for (i--; i >= 0; i--) { System.out.print(a[i]); } } }

项目二 学生成绩管理系统(面向对象设计方法实现) 任务一 用类来表示学生成绩信息 (一)选择题

1.B 2.A 3.D 4.C 5.A 6.D 7.A 8.D 9.A 10.D 11.C 12.C 13.B 14.B 15.B 16.C 17.C 18.B 19.A 20.B (二)编程题

1.某公司正进行招聘工作,被招聘人员需要填写,做“个人简历”的封装类。 class jianli {

String xm;// 姓名 String xb;// 性别 int nl;// 年龄

String jtzz;// 家庭住址 String xl;// 学历

public String getXm() { return xm; }

public void setXm(String xm) { this.xm = xm; }

public String getXb() { return xb; }

public void setXb(String xb) { this.xb = xb; }

public int getNl() {

return nl; }

public void setNl(int nl) { this.nl = nl; }

public String getJtzz() { return jtzz; }

public void setJtzz(String jtzz) { this.jtzz = jtzz; }

public String getXl() { return xl; }

public void setXl(String xl) { this.xl = xl; } }

2.编写程序,提供实现各种数学计算的方法。包括如下几项。 (1)两个数的加、减、乘、除。

(2)求某数的相反数、倒数、绝对值。 (3)取两数中较大的和较小的。

(4)对浮点数(double型)的计算功能。如:给定浮点数d,取大于或等于d的最小整

数,取小于或等于d的最大整数,计算最接近d的整数值,计算d的平方根、自然对数log(d)等。

(5)计算以double型数a为底数,b为指数的幂。 package pr2; class MyMath {

public int add(int a, int b) { return a + b; }

public int sub(int a, int b) { return a - b; }

public int mul(int a, int b) { return a * b; }

public int div(int a, int b) { return a / b; }

public int xianfan(int a) { return -a; }

public double daoshu(int a) { return 1.0 / a; }

public int abs(int a) { if (a >= 0) return a; else

return -a; }

public int max(int a, int b) { if (a > b) return a; else

return b; }

public int min(int a, int b) { if (a < b) return a; else

return b; } } 3.编写一个抽象类Shape,声明计算图形面积的抽象方法。再分别定义Shape的子类Circle(圆)和Rectangle(矩形),在两个子类中按照不同图形的面积计算公式,实现Shape类中计算面积的方法。 (1)抽象类定义 package pr2;

abstract class Shape {

public abstract double area(); }

(2)Circle类定义

public class Circle extends Shape { double r;

public Circle() { r = 0; }

public Circle(double r) { this.r = r; }

public double area() { return 3.14 * r * r; } }

(3)Rectangle类定义

public class Rectangle extends Shape { double w, h;

public Rectangle() { w = h = 0; }

public Rectangle(double w, double h) { this.w = w; this.h = h; }

public double area() { return w * h; } }

4.定义一个接口,接口中有3个抽象方法如下。 (1)“long fact(int m);”方法的功能为求参数的阶乘。 (2)“long intPower(int m,int n);”方法的功能为求参数m的n次方。 (3)“boolean findFactor(int m,int n);”方法的功能为判断参数m加上参数n的和

是否大于100。

定义类实现该接口,编写应用程序,调用接口中的3个方法,并将调用方法所得的结果

输出。 答案:

(1)接口定义 package pr2;

public interface MyInterface { public long fact(int m);

public long intPower(int m, int n);

public boolean findFactor(int m, int n); }

(2)类定义 package pr2;

public class MyClass implements MyInterface { public long fact(int m) { long f; f = 1;

for (int i = 1; i <= m; i++) f = f * i; return f; }

public boolean findFactor(int m, int n) { if (m + n > 100) return true; else

return false; }

}

public long intPower(int m, int n) { long v; v = 1;

for (int i = 1; i <= n; i++) { v = v * m; }

return v; }

(3)主类 package pr2;

public class lx2_1_4 {

public static void main(String[] args) { MyClass c1;

c1 = new MyClass();

System.out.println(c1.fact(10));

System.out.println(c1.intPower(2, 10)); System.out.println(c1.findFactor(2, 10)); } }

5.创建一个接口IShape,接口中有一个求取面积的抽象方法“public double area()”。定义一个正方形类Square,该类实现了IShape接口。Square类中有一个属性a表示正方形的边长,在构造方法中初始化该边长。定义一个主类,在主类中,创建Square类的实例对象,求该正方形对象的面积。 答案:

(1)接口定义 package pr2;

public interface IShape {

public abstract double area(); }

(2)类定义 package pr2;

public class Square implements IShape { double a;

public Square() { a = 0; }

public Square(double a) { this.a = a; }

public double area() { return a * a; } }

(3)主类: package pr2;

public class lx2_1_5 {

public static void main(String[] args) { Square s1 = new Square(4); System.out.println(s1.area()); } }

6.定义一个人类,包括属性:姓名、性别、年龄、国籍;包括方法:吃饭、睡觉,工作。 (1)根据人类,派生一个学生类,增加属性:学校、学号;重写工作方法(学生的工作

是学习)。

(2)根据人类,派生一个工人类,增加属性:单位、工龄;重写工作方法(工人的工作

是??自己想吧)。

(3)根据学生类,派生一个学生干部类,增加属性:职务;增加方法:开会。 (4)编写主函数分别对上述3类具体人物进行测试。 答案: (1)人类 package pr2;

public class People { String xm; String xb; int nl; String gj;

public void chifan() {

System.out.println(\正在吃饭\ }

public void shuijiao() {

System.out.println(\正在睡觉\ }

public void gongzuo() {

System.out.println(\正在工作\ } }

(2)学生类: package pr2;

public class Xuesheng extends People { String xx; int xh;

public void gongzuo() {

System.out.println(\正在学习\ } }

(3)工人类: package pr2;

public class Gongren extends People{ String dw; int gl;

public void gongzuo() {

System.out.println(\正在生产汽车\ } }

(4)干部类: package pr2;

public class Ganbu extends Xuesheng{ String zw;

public void kaihui() {

System.out.println(\正在开会\ } }

(5)主类: package pr2;

public class lx2_1_6 {

public static void main(String[] args) { Xuesheng xs = new Xuesheng();

xs.chifan();xs.shuijiao();xs.gongzuo(); Gongren gr=new Gongren();

gr.chifan();gr.shuijiao();gr.gongzuo(); Ganbu gb=new Ganbu();

gb.chifan();gb.shuijiao();gb.gongzuo();gb.kaihui(); } }

任务二 用动态数组存储学生成绩信息 (一)填空题 1.hello world 2.s1+=s2 3.s1.equals(s2) 4.edcba 5(二)选择题

1.C 2.B 3.B 4.A (三)编程题

1.实现把“I Love Java!”的字符全部转换为小写并输出到控制台。 答案:

package pr2;

public class lx2_2_1 {

public static void main(String[] args) { String str1, str2; str1 = \ str2 = str1.toLowerCase(); System.out.println(str1); System.out.println(str2);

.new Date() } }

2.使用String类中的split()函数,统计出“this is my homework! I must finish it!”中单词的个数。(注意:单词之间用一个空格来分隔。) 答案:

package pr2;

public class lx2_2_2 {

public static void main(String[] args) { String str1;

str1=\ String str2[]=str1.split(\

System.out.println(\单词个数为:\ }

}

3.给出两个日期,计算它们之间相隔的天数。 答案:

package pr2;

import java.util.Calendar; import java.util.Date; public class lx2_2_3 {

public static void main(String args[]) {

Calendar calendar = Calendar.getInstance();

calendar.setTime(new Date());// 用当前时间初始化日历时间 calendar.set(2000, 10, 1); //

long time1 = calendar.getTimeInMillis(); calendar.set(2010, 10, 1);

long time2 = calendar.getTimeInMillis();

long num = (time2 - time1) / (1000 * 60 * 60 * 24); System.out.println(\相隔\天\ } }

4.实现将当前日期信息以4位年份、月份全称、两位日期形式输出。 答案:

package pr2;

import java.text.SimpleDateFormat; import java.util.Date; public class lx2_2_4 {

public static void main(String args[]) { Date nowDate = new Date();

SimpleDateFormat sdf=new SimpleDateFormat(\年MM月dd日\ System.out.println(\当前日期是:\ } }

任务三 学生成绩信息的保存与读取

(一)填空题

1.输入流 输出流 2.字节流和字符流 3.Writer (二)选择题

1.D 2.D 3.A 4.B 5.A 6.A 7.C (三)编程题

1.使用随机文件流RandomAccessFile类将一个文本文件倒置读出。 答案:

package pr2;

import java.io.File;

import java.io.IOException;

import java.io.RandomAccessFile; public class lx2_3_1 {

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

String filename = \ File f1 = new File(filename); try {

RandomAccessFile raf1 = new RandomAccessFile(filename, \ byte[] b = new byte[(int) f1.length()]; StringBuffer sb = new StringBuffer();

for (int i = 0; raf1.read(b) != -1; i++) { sb.append(new String(b, \ }

System.out.println(sb.reverse().toString()); raf1.close();

} catch (IOException e) { e.printStackTrace(); } } } }

2.编写一个Java应用程序,可以实现DOS中的TYPE命令,并加上行号。即将文本文件在控制台上显示出来,并在每一行的前面加上行号。 答案:

package pr2;

import java.io.BufferedReader; import java.io.File;

import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; public class lx2_3_2 {

public static void main(String[] args) { FileReader fr; BufferedReader br;

中证明线程的无序性。 答案: 第一种: package pr4;

class Thread1 extends Thread { public void run() {

for (int i = 1; i <= 100; i++) {

System.out.println(this.getName()); } } }

public class lx4_2_1 {

public static void main(String[] args) { Thread1 th1, th2, th3, th4, th5; th1 = new Thread1(); th2 = new Thread1(); th3 = new Thread1(); th4 = new Thread1(); th5 = new Thread1(); th1.start(); th2.start(); th3.start(); th4.start(); th5.start(); } }

第二种: package pr4;

class Target implements Runnable { public void run() {

for (int i = 1; i <= 100; i++) { System.out.println(i); } } }

public class lx4_2_1 {

public static void main(String[] args) { Target tt = new Target();

Thread th1, th2, th3, th4, th5; th1 = new Thread(tt); th2 = new Thread(tt); th3 = new Thread(tt); th4 = new Thread(tt);

th5 = new Thread(tt); th1.start(); th2.start(); th3.start(); th4.start(); th5.start(); } } 2.制作两个线程对象,要求用同步块的方式使第一个线程运行10次,然后将自己阻塞起来,唤醒第二个线程,第二个线程再运行10次,然后将自己阻塞起来,唤醒第一个线程??两个线程交替执行。 答案:

package pr4;

public class lx4_2_2 implements Runnable { Thread t1, t2; public lx4_2_2() {

t1 = new Thread(this); t2 = new Thread(this); }

public static void main(String args[]) { lx4_2_2 ee = new lx4_2_2(); ee.t2.start(); ee.t1.start(); }

public synchronized void f() { // 同步方法 for (int i = 0; i < 10; i++) {

System.out.println(Thread.currentThread().getName()); try {

Thread.sleep(100);

} catch (InterruptedException e) { e.printStackTrace(); } }

notifyAll(); try {

wait();

} catch (InterruptedException e) { } }

public void run() { while (true) { f(); } }

}

File file = new File(\ String str; int n = 0; try {

fr = new FileReader(file); br = new BufferedReader(fr);

while ((str = br.readLine()) != null) { n++;

System.out.println(n + \ }

} catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }

项目三 学生信息管理系统(图形界面设计应用) 任务一 界面设计 子任务一 主界面设计 (一)填空题

1.setVisible 2.Graphics User Interface 3.add (二)选择题

1.C 2.C 3.B 4.D (三)编程题

1.仿照Windows记事本,制作记事本的窗口和菜单。 package pr3;

import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import javax.swing.JCheckBoxMenuItem; import javax.swing.JFrame; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.JPopupMenu; import javax.swing.JScrollPane; import javax.swing.JTextArea; class Myjsb extends JFrame {

JTextArea ta = new JTextArea(); JMenuBar bar = new JMenuBar();

JMenu fileMenu, editMenu, formatMenu;

JMenuItem newfileItem, openfileItem, savefileItem, saveasfileItem, exitItem, cutItem, copyItem, pasteItem, deleteItem, findItem, replaceItem, selectallItem, linewrapItem, fontItem;

JPopupMenu popMain;

public Myjsb() {

super(\我的记事本\

// **********添加菜单********** fileMenu = new JMenu(\文件\ editMenu = new JMenu(\编辑\ formatMenu = new JMenu(\格式\

newfileItem = new JMenuItem(\新建\ openfileItem = new JMenuItem(\打开\ savefileItem = new JMenuItem(\保存\ saveasfileItem = new JMenuItem(\另存为\ exitItem = new JMenuItem(\退出\ cutItem = new JMenuItem(\剪切\ copyItem = new JMenuItem(\复制\ pasteItem = new JMenuItem(\粘贴\ deleteItem = new JMenuItem(\删除\ findItem = new JMenuItem(\查找\ replaceItem = new JMenuItem(\替换\ selectallItem = new JMenuItem(\全选\

linewrapItem = new JCheckBoxMenuItem(\自动换行\ fontItem = new JMenuItem(\字体\ fileMenu.add(newfileItem); fileMenu.add(openfileItem); fileMenu.add(savefileItem); fileMenu.add(saveasfileItem); fileMenu.addSeparator(); fileMenu.add(exitItem); editMenu.add(cutItem); editMenu.add(copyItem); editMenu.add(pasteItem); editMenu.add(deleteItem); editMenu.addSeparator(); editMenu.add(findItem); editMenu.add(replaceItem); formatMenu.add(linewrapItem); formatMenu.add(fontItem); bar.add(fileMenu); bar.add(editMenu); bar.add(formatMenu); setJMenuBar(bar); // 快捷菜单

popMain = new JPopupMenu(); popMain.add(cutItem);

popMain.add(copyItem); popMain.add(pasteItem); popMain.add(deleteItem);

// **********添加多行文本框********** JScrollPane jsp = new JScrollPane(ta); add(jsp);

// **********关闭窗口时**********

addWindowListener(new WindowAdapter() {

public void windowClosing(WindowEvent e) { System.exit(0); } });

setExtendedState(JFrame.MAXIMIZED_BOTH); // 窗口最大化 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setVisible(true); } }

public class lx3_1_1_1 {

public static void main(String[] args) { Myjsb win = new Myjsb(); } }

2.查看JDK帮助文档,了解javax.swing.JRadioButtonMenuItem和javax.swing.JCheck BoxMenuItem两种菜单项的用法,并编写测试程序。

子任务二 登录界面 (一)填空题

1.addActionListener 2.ActionListener actionPerformed 3.setEnabled

4.tf.setEditable(false) 5.tf.getText() (二)选择题

1.B 2.C 3.C 4.B 5.B (三)编程题

1.设计一个图形界面的猜数游戏程序。 答案:

package pr3;

import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.Toolkit;

import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JTextField;

class Win1 extends JFrame implements ActionListener { int number;

JTextField t1 = new JTextField(10);

JLabel mess = new JLabel(\

JButton b1 = new JButton(\点击产生一个1-100之间的随机数\b2 = new JButton(\确定\

public Win1() {

super(\猜数游戏\

setLayout(new FlowLayout()); add(b1);

add(new JLabel(\你的猜测是:\ add(t1); add(b2); add(mess);

b1.addActionListener(this); b2.addActionListener(this);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); Dimension frameSize = new Dimension(250, 130); if (frameSize.height > screenSize.height) { frameSize.height = screenSize.height; }

if (frameSize.width > screenSize.width) { frameSize.width = screenSize.width; }

setLocation(((screenSize.width - frameSize.width) / 2), ((screenSize.height - frameSize.height) / 2)); setSize(frameSize);

this.setResizable(false); this.setVisible(true); }

public void actionPerformed(ActionEvent e) { if (e.getSource() == b1) {

number = (int) (Math.random() * 100 + 1); } else if (e.getSource() == b2) { try {

int guss = Integer.parseInt(t1.getText()); if (guss > number) {

mess.setText(\猜大了!\ } else if (guss < number) { mess.setText(\猜小了!\ } else {

mess.setText(\猜对了!\ }

} catch (Exception ee) {

javax.swing.JOptionPane.showMessageDialog(null, \请输入数值!\ } }

} }

public class lx3_1_2_1 {

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

2.设计一个窗口,里面有两个文本框和一个按钮,在第一个文本框中输入一个数,当单击按钮时,在另一个文本框显示该数字的平方根,要求能处理异常。 答案:

package pr3;

import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.Toolkit;

import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JTextField; class Win extends JFrame {

JTextField t1 = new JTextField(10); JTextField t2 = new JTextField(10);

JButton pfButton = new JButton(\求平方根\ public Win() {

super(\求平方根\

setLayout(new FlowLayout());

add(new JLabel(\请输入一个整数:\ add(t1);

add(new JLabel(\平方根:\ add(t2);

add(pfButton);

pfButton.addActionListener(new ActionListener() { // 匿名内部类 public void actionPerformed(ActionEvent e) { String str = t1.getText(); int n = Integer.parseInt(str); t2.setText(\ } });

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); Dimension frameSize = new Dimension(250, 130); if (frameSize.height > screenSize.height) { frameSize.height = screenSize.height; }

if (frameSize.width > screenSize.width) { frameSize.width = screenSize.width; }

setLocation(((screenSize.width - frameSize.width) / 2), ((screenSize.height - frameSize.height) / 2)); setSize(frameSize);

this.setResizable(false); this.setVisible(true); } }

public class lx3_2_2 {

public static void main(String[] args) { Win win = new Win(); } }

子任务三 信息录入界面 (一)填空题

1.addItem() 2.getSelectedItem 3.setLineWrap (二)选择题

1.A 2.B 3.B (三)编程题

1.设计一个模拟交通信号灯的窗口。窗口内包含表示红、绿、黄3种颜色信号灯的图标标签,3个对应的单选按钮(标题为红灯、绿灯、黄灯),每当一个按钮被选中,则与之相对应的信号灯亮(即可见)。 答案:

package pr3;

import java.awt.Color; import java.awt.Dimension; import java.awt.Toolkit;

import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import javax.swing.ButtonGroup; import javax.swing.JFrame; import javax.swing.JLabel;

import javax.swing.JRadioButton;

class Win331 extends JFrame implements ItemListener { JLabel red, green, yellow;

JRadioButton redButton, greenButton, yellowButton; public Win331() { super(\交通灯\ setLayout(null);

red = new JLabel(\ red.setOpaque(true);

red.setBackground(Color.RED); green = new JLabel(\ green.setOpaque(true);

green.setBackground(Color.green); yellow = new JLabel(\ yellow.setOpaque(true);

red.setBounds(50, 10, 30, 20); green.setBounds(110, 10, 30, 20); yellow.setBounds(170, 10, 30, 20); red.setVisible(false); green.setVisible(false); yellow.setVisible(false);

yellow.setBackground(Color.yellow); ButtonGroup bg = new ButtonGroup(); redButton = new JRadioButton(\红灯\ greenButton = new JRadioButton(\绿灯\ yellowButton = new JRadioButton(\黄灯\ redButton.setBounds(20, 50, 60, 20); greenButton.setBounds(100, 50, 60, 20); yellowButton.setBounds(180, 50, 60, 20); bg.add(redButton); bg.add(greenButton); bg.add(yellowButton); add(red); add(green); add(yellow); add(redButton); add(greenButton); add(yellowButton);

redButton.addItemListener(this); greenButton.addItemListener(this); yellowButton.addItemListener(this);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); Dimension frameSize = new Dimension(250, 130); if (frameSize.height > screenSize.height) { frameSize.height = screenSize.height; }

if (frameSize.width > screenSize.width) { frameSize.width = screenSize.width; }

setLocation(((screenSize.width - frameSize.width) / 2), ((screenSize.height - frameSize.height) / 2)); setSize(frameSize);

this.setResizable(false); this.setVisible(true); }

public void itemStateChanged(ItemEvent e) { if (e.getSource() == redButton) { red.setVisible(true); green.setVisible(false); yellow.setVisible(false);

} else if (e.getSource() == greenButton) { green.setVisible(true); red.setVisible(false); yellow.setVisible(false);

} else if (e.getSource() == yellowButton) { yellow.setVisible(true); red.setVisible(false); green.setVisible(false); } } }

public class lx3_1_3_1 {

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

2.设计一个窗口,窗口上方是一个组合框,组合框中的列表项有:北京、天津、上海、重庆等城市的名称,窗口下方是一个文本区,当选择某一个城市名称时,在下方的文本区中显示该城市的介绍信息。 答案:

package pr3;

import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.Toolkit;

import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import javax.swing.JComboBox; import javax.swing.JFrame; import javax.swing.JTextArea;

class Win332 extends JFrame implements ItemListener {

JComboBox cb; JTextArea ta; public Win332() { super(\城市\

cb = new JComboBox(); cb.addItem(\北京\ cb.addItem(\天津\ cb.addItem(\上海\ cb.addItem(\重庆\ ta = new JTextArea(); setLayout(null); add(cb);

cb.setBounds(100, 10, 60, 20); add(ta);

ta.setBounds(30, 40, 200, 50); cb.addItemListener(this);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); Dimension frameSize = new Dimension(250, 160); if (frameSize.height > screenSize.height) { frameSize.height = screenSize.height; }

if (frameSize.width > screenSize.width) { frameSize.width = screenSize.width; }

setLocation(((screenSize.width - frameSize.width) / 2), ((screenSize.height - frameSize.height) / 2)); setSize(frameSize);

this.setResizable(false); this.setVisible(true); }

public void itemStateChanged(ItemEvent e) { String str = (String) cb.getSelectedItem(); ta.setText(str); } }

public class lx3_3_2 {

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

3.用列表框完成上题。

请读者参照第2题答案自行完成。

子任务四 信息查询界面 (一)填空题

1.有模式对话框 无模式对话框 2.KeyListener keyTyped keyPressed KeyTyped 3.setFocusable (二)选择题

1.C 2.B 3.B 4.B (三)编程题

1.模仿Windows中的画图软件,设计一个简单的画图程序。 package pr3;

import java.awt.Canvas; import java.awt.Color; import java.awt.Graphics;

import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseEvent; import java.awt.event.MouseListener;

import java.awt.event.MouseMotionListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import javax.swing.JButton;

import javax.swing.JColorChooser; import javax.swing.JFrame; import javax.swing.JPanel;

class Win341 extends JFrame implements ActionListener, MouseMotionListener, MouseListener {

JButton line, rect, circle, pencil, color; JPanel p1;

int x1, x2, y1, y2; String shape = \ Color c;

MyCanvas canvas; public Win341() {

super(\简单绘图程序\ p1 = new JPanel();

line = new JButton(\直线\ rect = new JButton(\矩形\ circle = new JButton(\圆\ pencil = new JButton(\画笔\ color = new JButton(\颜色\ p1.add(line); p1.add(rect); p1.add(circle); p1.add(pencil); p1.add(color);

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

Top