《Java程序设计A》课程考试报告
开课实验室:软件开发实验室 年 月 日
第二篇:《Java程序设计》实验指导书
Java语言程序设计
实验指导书
目 录
实验一 JDK的安装和运行环境变量的设置... 3
实验二 JAVA语言基础实验... 3
实验三 JAVA面向对象特性实验... 5
实验四 Java输入输出实验... 6
实验五 基于AWT及SWING的GUI及事件处理实验... 8
实验六 Applet 11
附录Ⅰ... 14
附录Ⅱ... 15
实验一 JDK的安装和运行环境变量的设置
实验目的
1.通过实验使学生掌握J2SDK安装和运行环境设置。
2.掌握java最简单的程序结构,会使用javac和java命令。
实验内容
1. 下载j2sdk1.6.x。在http://java.sun.com 网站的download链接中选择J2SE1.6.x链接,选择j2sdk-1.6.x-windows-i586.exe下载。
2. 安装该程序。默认安装路径为c:\jdk1.6.x。
设置环境变量。主要有path和classpath两个环境变量需设置。在windows2000按如下方法设置:
进入“控制面板”->“系统” ->“高级” ->“环境变量” ->“系统变量”后,双击path,在后面添加:c:\jdk1.6.x\bin,双击classpath,在后面添加:c:\jdk1.6.x\lib。重新启动系统。
4、编写一个输出“这是我的第一个JAVA程序”程序。
5、示例程序:
public class HelloWorld{
public static void main(String [ ] args){
System.out.println(“Hello World”);
}
}
在记事本中编写该程序,并保存为d:\my\HelloWorld.java。
运行过程为:
进入dos环境,切换到保存路径,然后在命令行中输入下列命令:
javac HelloWorld.java
编译通过后,在命令行中输入下面的命令
java HelloWorld
运行结果应该为:Hello World
6、用集成开发环境编写程序实现:从键盘接受数据,并将接受到的数据输出。从键盘接受数据参考代码如下:请修改程序可以接受其他类型的数据。
import java.util.Scanner;
public class Helloworld {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner console=new Scanner(System.in);
int choice = console.nextInt(); //接受整数
String s=console.nextLine(); //接受一行字符串
float f=console.nextFloat(); //接受单精度浮点数
System.out.println("this is first java class!"+choice+s+f);
}
}
实验二 JAVA语言基础实验
实验目的
1. 通过实验使学生掌握JAVA变量、标识符以及语法规则。
2. 掌握JAVA三种程序结构的设计方法。
3. 掌握数组的声明,使用方法。
4.掌握JAVA基本程序设计的方法。
实验原理
Java中数据类型分为基本数据类型与复合数据类型,相应地变量分为基本类型与引用类型。基本类型变量有8种,而类、接口和数组变量是引用类型。基本类型变量使用和C及C++完全一样,但引用类型的使用有点与C中的指针相同(注意Java中并没有指针的概念)。
引用类型变量的使用有引用空间与数据空间的概念,当变量声明时只是给该变量分配引用空间(或可以理解为地址空间),数据空间并没有分配。
例如定义:Mydate today; 定义的变量名today为引用空间的变量名
today=new Mydate(); 实例化Mydate类的一个对象,也即产生了数据空间用于存放该对象的数据。并且将该对象的地址赋给today,这样对象名today就指向了相应的数据空间。
数组的定义和使用举例 int a[]=new int[6];
程序的流程控制结构和C语言基本类同,有顺序结构、选择结构、循环结构。但初学面向对象编程容易犯程序结构上的毛病,许多同学编出的程序和面向过程语言的一样只是换成Java的语法。原则上面向对象编程的结构,应该以类为基本组织单位。
实验内容
1. 写程序,创建一个整型5*5矩阵,并输出。
本程序源文件名为 shiyan21.java,包含两个类matrix及主类shiyan21
import java.io.*;
//矩阵类包含input( )及output( )两个方法
class matrix{
void input(int a[][]){
int i,j;
for(i=0;i<5;i++){
for(j=0;j<5;j++){
a[i][j]=i+j ;
}
}
}
//output()方法完成矩阵的输出,请在下面的方法中完成相应的代码
void output(int a[][]){
}
public class shiyan21{
public static void main(String[ ] args){
int a[][]=new int[5][5];
matrix m=new matrix ();
m.input(a);
m.output(a);
}
}
2. 给出一百分制成绩,要求输出“优”,“良”,“中”,“合格”,“差”。90分以上为“优”,80-89为“良”,70-79为“中”,60-69为“合格”,60分以下为“差”。
import java.io.*;
public class shiyan22{
//以下grade( )方法的功能是根据所给成绩,得出成绩的等第请完成相应的代码
void grade(int score){
}
public static void main(String[] args){
//该语句功能是将标准输入流system.in与输入流、缓冲流套接,从键盘接受一个字符串
BufferedReader strin=new BufferedReader(new InputStreamReader(System.in));
System.out.print("please input to data:");
//这里try{ }catch(){ } 结构为Java系统要求的异常处理为第六章的内容
try{
//将键盘输入的字符串转换成整数类型,并赋值给变量s
s=Integer.parseInt(strin.readLine());
//以上方法注意在以后自己的程序中加以应用
}catch(IOException e){ }
shiyan12 x=new shiyan22();
x.grade(s);
}
}
3. 给出一个不多于5位的正整数,要求(1)求出他是几位数(2)分别打印出每一位数字(3)按照逆序打印出各位数值。例如123应输出321。
4. 求40的阶乘。
本题编程时要考虑到所求结果的准确性
5. 给出10个数,使用某种排序方法,按照从小到大的顺序输出各个数。
实验三 JAVA面向对象特性实验
实验目的
1. 过实验使学生类的封装、继承和多态等特性。
2. 掌握JAVA类的设计方法。
3. 掌握JAVA类继承以及方法重写的实现。
4.掌握接口的设计方法。
5.掌握包的设计以及使用方法。
实验原理
面向对象是Java语言最基本的特征,其中封装、继承和多态是面向对象程序设计的三个关键特征。
将对象的数据与操作数据的方法结合,通过方法将对象的数据与实现细节保护起来就是封装。外界只能通过对象的方法访问对象,这样既保证了对象数据的一致性,又提高了软件模块的内聚性。继承性使得子类继承父类的状态(变量)和行为(方法),这样提高了编程的效率和代码的利用率。
Java中类都有构造方法,通常构造方法用来进行该类的初始化。构造方法与所属的类同名,但是要注意只有无参数的构造方法可以继承,而有参数的构造方法是不能够被继承的。
方法重写可以隐藏父类定义的方法,可以使子类有自己特有的行为方法。要注意子类中重写的方法必须与父类中对应的方法具有相同的返回值、方法名和参数列表。方法重写又是实现对象运行时多态的基础,而多态性又使得程序具有良好的可扩展性。
包又是Java的重要特色,它可以将一组相关类与接口包裹起来形成包。提供了以包为单位的独立命名空间,有效地解决了命名冲突的问题。
通过以下几个实验,可以掌握和理解类的这些基本特性。
实验内容
1. 设计一个水果类,要求包括名称(name),颜色(color),产地(place)等属性以及得到和输出这些属性的方法。要求各有一个无参和有参的构造函数。
2. 设计一个苹果类和一个菠萝类,继承水果类。并至少具有一个品种属性。重写父类的部分方法。要求这两个类都有各自的构造函数。
3. 将以上各类包含在一个包中。
4. 设计一个接口Action,该接口中至少包含吃(eat),摘(pick)和存储(store)方法。
要求以上各类实现该接口。
5. 计一个测试类,输出所有信息。
实验四 Java输入输出实验
实验目的
1.通过实验使学生理解JAVA输入输出系统的基本原理。
2.掌握字节流输入输出类(FileInputStream,FileOutputStream)、字符流输入输出类(FileReader,FileWriter)、随机存取文件类RandomAccessFile及File类的使用方法。
实验原理
应用程序常常需要从外界输入数据,或者把数据输出到外界。Java的输入输出系统支持流式输入/输出(即顺序存取方式)和随机存取文件的方式,保存数据的粒度从字节、字符到对象。其中流式输入输出是最基础的,应该重点掌握。
实验内容
1.编写一个程序,求2—200之间的素数,并将结果保存在文件prime.dat中。再从该文件中读取内容并在屏幕上显示出来。
以下程序共有两个类,类prime完成求素数。请根据所述功能,在程序空白处填空。
import java.io.*;
class prime{
void getprime(int m,int n,int a[]){
int i,j,k;
for(i=m,k=0;i<=n;i++){
for(j=2;j<=i/2;j++){
if(i%j==0) break;
}
if(j>i/2) a[k++]=i;
}
}
}
public class shiyan41{
public static void main(String[] args){
File primefile=new File("prime1.dat");
prime p=new prime();
int a[]=new int[50];
int i=0,c;
p.getprime(2,200,a);
try{
FileOutputStream out= ; //创建文件输出字节流
FileInputStream in= ; //创建文件输入字节流
while(a[i]!=0){
; //写数据
}
while((c=in.read())!=-1){
System.out.println(c);
}
in.close();
out.close();}catch(IOException e){ e.printStackTrace();}
}
}
2.写一个程序显示在程序的命令行中指定的目录中所有的文件和目录,包括文件大小以及是文件还是目录类型,并且按照字母顺序排列显示。
3.使用随机访问流读出文本文件最后n个字符,文本文件名和数字n用命令行参数的方式提供。
以下程序是本题的主要代码,按照题目要求运行时命令行指定文本文件名和数字n。例如:java shiyan44 text.txt 12 其中文本文件名 text.txt对应args[0], 12对应args[1]。必须加以注意的是这里12为字符串,要求在程序中加以处理转化为数值类型。请根据功能要求将空白处的语句填写完整。
import java.io.* ;
public class shiyan44{
public static void main(String args[])throws Exception{
String filename,s,t;
int n=0;
long leng,filepoint; //注意这里定义为长整型
RandomAccessFile file= ; //创建随机文件读写对象
leng=file.length();
t=args[1];
//以下循环语句完成将从命令行接受到的数字字符转换成为整数类型
for(int i=0;i<t.length();i++){
n=10*n+(int)(t.charAt(i)-48);
}
file.skipBytes((int)(leng-n));
//将文件指针向前移动到最后n个字符,请注意这里为何要将长整形转换为整型类型
filepoint=file.getFilePointer();
while(filepoint<leng){
s= ; //读出内容并赋值给变量s
System.out.println(s);
filepoint=file.getFilePointer();
}
file.close();
}
}
4.编写一个程序,保存一个包含整数、日期和地址的对象到文件sample.dat中,并从该文件中读取对象显示出来。
实验五 基于AWT及SWING的GUI及事件处理实验
实验目的
1. 熟悉JAVA的图形用户界面的基本组件,以及它们的层次关系和使用方法。
2.掌握常见的布局管理设计器,如FlowLayout,GridLayout,BorderLayout。学会如何进行布局设计。
3.掌握事件驱动原理,使GUI中的基本组件能够响应用户的操作。
实验原理
在应用程序的开发中,开发出友好的图形用户界面是极为重要的。在Java中有AWT(Abstract Windows Toolkit 抽象窗口工具集)和Swing两类工具集,其中AWT和本地代码有关并不完全独立于平台,而Swing成为轻量级组件完全支持跨平台。但是两者的机制完全一样,例如事件处理机制都采用监听方式;都提供了容器、布局管理器的机制。
实验内容
1.编写程序,包括一个标签、文本框和命令按钮。当用户单击按钮时,程序把文本框中的内容复制到当前的位置。
2.编写程序,利用JtextField和JpasswordField分别接收用户输入的用户名和密码,并对用户输入的密码进行检验。对于每个用户名有三次密码输入机会。
3.编写程序实现一个计算器,包括10个数字(0-9)按钮和4个运算符(加、减、乘、除)按钮,以及等号和清空两个辅助按钮,还有一个显示输入输出的文本框。
以下是本题的参考代码,请大家调试运行然后根据自己的需求添加相应的功能。如增加开平方根、求阶乘等功能。
import java.awt.event.*;
import javax.swing.*;
import java.awt.*;
public class shiyan53 extends JFrame {
JButton jbut0,jbut1,jbut2,jbut3,jbut4,jbut5;
JButton jbut6,jbut7,jbut8,jbut9,jbutClear,jbutCalculate;
JButton jbutAdd,jbutSubtract,jbutMultiply,jbutDivide;
JTextField jTxt;
float s=0,t=0,result;
int operator;
boolean flag=true;
JLabel jlab=new JLabel();
//
shiyan53(){
super("");
Container contentPane=getContentPane();
contentPane.setLayout(new GridLayout(5,4));
jbut0=new JButton("0");
jbut1=new JButton("1");
jbut2=new JButton("2");
jbut3=new JButton("3");
jbut4=new JButton("4");
jbut5=new JButton("5");
jbut6=new JButton("6");
jbut7=new JButton("7");
jbut8=new JButton("8");
jbut9=new JButton("9");
jbutAdd=new JButton("+");
jbutSubtract=new JButton("-");
jbutMultiply=new JButton("*");
jbutDivide=new JButton("/");
jbutClear=new JButton("Clear");
jbutCalculate=new JButton("=");
jTxt=new JTextField();
contentPane.add(jbut0);
contentPane.add(jbut1);
contentPane.add(jbut2);
contentPane.add(jbut3);
contentPane.add(jbut4);
contentPane.add(jbut5);
contentPane.add(jbut6);
contentPane.add(jbut7);
contentPane.add(jbut8);
contentPane.add(jbut9);
contentPane.add(jbutAdd);
contentPane.add(jbutSubtract);
contentPane.add(jbutMultiply);
contentPane.add(jbutDivide);
contentPane.add(jbutClear);
contentPane.add(jbutCalculate);
contentPane.add(jTxt);
jbut0.addActionListener(new ButtonHandler());
jbut1.addActionListener(new ButtonHandler());
jbut2.addActionListener(new ButtonHandler());
jbut3.addActionListener(new ButtonHandler());
jbut4.addActionListener(new ButtonHandler());
jbut5.addActionListener(new ButtonHandler());
jbut6.addActionListener(new ButtonHandler());
jbut7.addActionListener(new ButtonHandler());
jbut8.addActionListener(new ButtonHandler());
jbut9.addActionListener(new ButtonHandler());
jbutAdd.addActionListener(new ButtonHandler());
jbutSubtract.addActionListener(new ButtonHandler());
jbutMultiply.addActionListener(new ButtonHandler());
jbutDivide.addActionListener(new ButtonHandler());
jbutClear.addActionListener(new ButtonHandler1());
jbutCalculate.addActionListener(new ButtonHandler2());
}
//ActionEvent
class ButtonHandler implements ActionListener{
public void actionPerformed(ActionEvent e){
String o,p;
p=e.getActionCommand();
o=jTxt.getText();
jTxt.setText(o+p);
if(p=="+") {flag=false;operator=1;}
else if(p=="-"){flag=false;operator=2;}
else if(p=="*"){flag=false;operator=3;}
else if(p=="/") {flag=false;operator=4;}
else if(flag) s=10*s+(int) (p.charAt(0)-48);
else t=10*t+ (int) (p.charAt(0)-48);
}
}
//ActionEvent clear jTxt
class ButtonHandler1 implements ActionListener{
public void actionPerformed(ActionEvent e){
jTxt.setText("");
flag=true;
s=0;
t=0;
}
}
//ActionEvent calculator
class ButtonHandler2 implements ActionListener{
public void actionPerformed(ActionEvent e){
switch(operator){
case 1: result=s+t;
break;
case 2: result=s-t;
break;
case 3: result=s*t;
break;
case 4: result=s/t;
break;
}
jTxt.setText(" "+result);
}
}
public static void main(String args[]){
shiyan53 cal=new shiyan53();
cal.setSize(400,150);
cal.setDefaultCloseOperation(cal.EXIT_ON_CLOSE);
cal.setVisible(true);
}
}
实验六 Applet
实验目的
1.掌握Java Applet程序结构和开发过程
2.了解Applet运行机制
3.学会编写Applet对应的HTML文件,掌握从HTML文件向Applet传递参数的方法。
4.了解Applet与浏览器的通信。
5.掌握在Applet图形界面设计。
实验原理
Applet小应用程序,是Java与Web相结合的一种应用形式。它可以使Web页具有动画、声音、图象和其他特效功能,可使Web页能够与用户动态交互,接受用户的输入并且给用户以相应的回应。而且在Applet中支持使用AWT和SWING组件构建图形化用户界面。
实验内容
1.编写Applet,从HTML文件中获取两个字符串参数,并将它们在浏览器中显示出来。
2.编写Applet,绘制直线、各种矩形、多边形、圆和椭圆等图形。
3.编写Applet,在浏览器中显示一幅动画。(在一定范围内碰撞运行的小球)
以下是本题的参考代码,请大家调试运行然后根据自己的需求修该相应的功能。例如:将小球的颜色改变、小球的运行轨迹改为水平或垂直移动等。
import java.applet.*;
import java.awt.*;
public class shiyan63 extends Applet implements Runnable {
int x = 150, y = 50, r = 15;
int dx = 11, dy = 7;
Thread animator;
int s,t;
volatile boolean pleaseStop;
public void paint(Graphics g) {
g.setColor(Color.red);
g.fillOval(x-r, y-r, r*2, r*2);
}
public void animate() {
Rectangle bounds = getBounds();
s= bounds.width;
t= bounds.height;
if ((x - r + dx < 0) || (x + r + dx > bounds.width))
{dx = -dx;}
if ((y - r + dy < 0) || (y + r + dy > bounds.height))
{dy = -dy;}
x += dx; y += dy;
repaint();
}
public void run() {
while(!pleaseStop) { animate();
try { Thread.sleep(100);
}catch(InterruptedException e) {}
}
}
public void start() {
animator = new Thread(this);
pleaseStop = false;
animator.start();
}
public void stop() {
pleaseStop = true;
}
}
相应的html文件
<HTML>
<HEAD>
<TITLE>??? </TITLE>
</HEAD>
<BODY>
<APPLET CODE=shiyan63.class WIDTH=200 HEIGHT=200>
</APPLET>
</BODY>
</HTML>
附录Ⅰ
综合性实验
实验名称
小型人事管理系统的开发
项目背景
使用计算机进行信息化管理,可以极大地提高工作效率、节省人力物力。在企事业单位中,人事管理对于发挥企业的效益、进一步挖掘开发企业的人力资源起到极为重要的作用。本项目基于此目的,用Java开发出小型人事管理软件。
项目目标
本系统开发的总体任务是实现人事管理的信息化。系统要求完成简单的人事管理,包括 员工基础信息登记模块;上班登记模块;下班登记模块;请假登记模块;查询统计模块。
功能需求
1) 员工基础信息登记模块:完成对本企业所有在册员工的基础信息,进行录入操作。员工的基础信息包括工号、姓名、性别、省份证号码、专业特长、工龄、工作部门等。
2) 上班登记模块:完成对所有员工的上班信息登记,包括员工的工号、姓名、上班时间和相应的备注信息。并且还要能够删除错误信息的记录。
3) 下班登记模块:完成对所有员工的下班信息登记,包括员工的工号、姓名、 下班时间和相应的备注信息,并且还要能够删除错误信息的记录。
4) 请假登记模块:完成对所有员工的请假信息登记,包括员工的工号、姓名、请假时间和相应的备注信息,并且还要能够删除错误信息的记录。
5) 查询统计模块:主要对所有员工的上(下)时间信息、请假时间信息进行查询统计等。
系统主框架
说明:本实验正常需要20学时,但由于课时的限制故此暂时定位选做。
附录Ⅱ
《Java程序设计》实验大纲
课程名称:《Java程序设计》
学时:全日制本科 32(8) 怀德 48(12)
类别:C3 学分:2.0
授课对象:计算机应用专业本科生 开课学期:第7学期
先修课程:高级语言程序设计、数据结构、数据库系统概论
选用教材:《Java语言程序设计》郎波编著 清华大学出版社
考核方式:考查 执笔人:杨亚南、徐守坤
审定人:徐守坤 编写时间:20##年9月