Java程序设计实验报告

2024-08-22 版权声明 我要投稿

Java程序设计实验报告

Java程序设计实验报告 篇1

实验一

实验题目:从键盘上读入10个字符串存入数组a中,然后输出这10个字符串中最大字符串和最小字符串。

实验代码:

public class StrPro {

public static void main(String[] args){

String str[] = new String[5];System.out.println(“Please input 10 strings:”);int i;String max,min;for(i=0;i<5;i++){

} max = str[0];min = str[0];for(i=0;i

}

}

} } if(min.compareTo(str[i])>0){ } min = str[i];System.out.println(“最大的字符串为:”+max);System.out.println(“最小的字符串为:”+min);实验结果:

实验心得体会:

掌握了java的基本语法,数组的定义与使用,做这个实验要了解字符串数组的定义及字符串数组的输入方法,还有比较字符串数组的大小的调用方法等。

实验二

实验题目:

自定义一个矩形类(Rectangle),包含的属性有:长(length),宽(width),包含的方法有:关于属性的setter和getter方法,即setLength,getLength,setWidth,getWidth,计算矩形面积的方法(getArea)。

定义矩形类的子类正方形类(Square),包含的属性和方法自行确定,要求完成的功能是,能计算正方形的面积。

定义一个测试类(Test),测试矩形类和正方形类能否正确的计算面积。

以上类中属性和方法的访问权限自行确定,方法和构造方法若有参数,也自行确定。

实验代码:

public class Rectangle {

int Length;int Width;public int getLength(){ } public void setLength(int length){ } public int getWidth(){ return Width;Length = length;return Length;} public void setWidth(int width){

Width = width;} int getArea(){

return Length * Width;} }

public class Square extends Rectangle{ Square(int border){

super.setLength(border);

super.setWidth(border);} }

public class Test { public void test(){

System.out.println(“请选择计算的形状的序号:1.矩形

Scanner sc = new Scanner(System.in);

int i = sc.nextInt();int len,wid;2.正方形”);

} if(i==1){

} else if(i==2){

} System.out.print(“请输入正方形的边长:”);Scanner s = new Scanner(System.in);len = s.nextInt();Square sq = new Square(len);System.out.println(“正方形面积为:”+sq.getArea());System.out.print(“请输入矩形的长:”);Scanner s = new Scanner(System.in);len = s.nextInt();System.out.print(“请输入矩形的宽:”);wid = s.nextInt();Rectangle re = new Rectangle();re.setLength(len);re.setWidth(wid);System.out.println(“矩形面积为:”+re.getArea());else{ } System.out.println(“输入错误!”);

} public static void main(String[] args){ } new Test().test();实验结果:

实验心得体会:

做这个实验要掌握如何定义类以及类的成员变量、类的方法,学会对象的创建、对象属性的引用和方法的调用以及如何定义和使用构造方法。掌握this的使用以及派生子类的方法,理解关键字super的含义。理解继承中属性的隐藏和方法的覆盖机制,理解在继承关系中构造方法的调用过程。

实验三

实验题目:定义一个Student类,包含姓名(name)、身高(height)、体重(weight),以及talk()方法,该方法的功能是,输出自己的身高和体重信息。

Student类实现Comparable接口,实现按照体重的大小比较两个Student对象的大小。最后,定义一个测试类,生成一个数组,该数组有6个元素,每个元素类型是Student,调用Arrays.sort方法对该数组排序。

实验代码:

public class Student implements Comparable {

public void setName(String name){ } this.name = name;public String getName(){ } return name;public Student(String name, float height, float weight){

} super();this.name = name;this.height = height;this.weight = weight;private String name;private float height, weight;

public float getHeight(){ } return height;public void setHeight(float height){ } this.height = height;public float getWeight(){ } return weight;public void setWeight(float weight){ } this.weight = weight;public void speak(){ System.out.println(“我是” + name + “,我的身高是” + height + “,我的体重是” + weight);

@Override }

} public int compareTo(Student o){

} int flag;if(this.weight

public String toString(){

} return “Person [name=” + name + “, height=” + height + “, weight=” + weight + “]”;public class Test { public static void main(String[] args){

}

} int i;Student ps[] = new Student[6];ps[0] = new Student(“张三”, 170, 110);ps[1] = new Student(“李四”, 168, 120);ps[2] = new Student(“王五”, 165, 115);ps[3] = new Student(“赵六”, 172, 121);ps[4] = new Student(“周七”, 160, 100);ps[5] = new Student(“郑八”, 166, 119);System.out.println(“排序前数组元素的序列是:”);for(i = 0;i < ps.length;i++){ } Arrays.sort(ps);//调用Java系统类中的排序方法对ps数组排序 System.out.println(“n排序后数组元素的序列是:”);for(i = 0;i < ps.length;i++){ } System.out.println(ps[i]);ps[i].speak();实验结果:

实验心得体会:

Java程序设计实验报告 篇2

仿真物理实验就是利用计算机及多媒体技术仿真或虚构实验设备, 供学生通过电脑观察、操纵、建构物理对象, 为学生预习, 做实验提供帮助。它不仅可以解决高校基础实验室设备仪器不足、师资短缺、工作量大的问题, 还可以解决实践教学学生课前预习难等一系列实践教学难题。

2 选用Java技术的优点

物理实验的仿真不是传统意义上的把实验项目制作成图文并貌的试验介绍, 而是学生可以在电脑上进行交互式操作, 实现了真正意义上的试验仿真。

根据一些资料和技术的分析我们认为, 采用Java比较理想。因为Java语言是强类型语言, 它的JSP和APPLET分别可以对数据、图象进行有效地处理, 从而解决FLASH和ASP无法解决的问题;再次, 还因为Java语言有很强的网络功能, 尤其是Applet专用于嵌入WEB网页, 并可产生特殊的页面效果。由于Java Applet具有基本的绘画功能、动态页面效果、动画和声音的播放、交互功能的实现、窗口开发环境、网络交流能力的实现等特点, 所以物理仿真实验要求有大量的图象处理及操作的交互, 并能够在线访问, 这无疑应选Java。因此声速测量将主要采用Java Applet进行设计。Java语言属于强类型语言, 能够对数据进行精确处理, 可以进行浮点运算和字符串的各种处理, 完全能满足物理实验的需求。

3 实现举例

3.1 仪器的操作设计

在本段过程中, 主要完成的任务是初始化仪器的参数, 并对仪器的电源、数据线进行连接。其中, 初始化仪器的参数包括仪器的显示位置和各个图片的预载显示, 如图1所示。

通过点击各线路连接点以完成线路的连接。首先点击信号发生器的电源接点;再点击声速测量仪的一端, 由程序自动生成一幅电源线的图片;连接信号发生器和声速测量仪, 再点击示波器和声速测量仪的另一端, 生成另一幅图片。最终连接3个仪器。

部分代码如下:

3.2 信号发生器的调节

首先要打开电源, 接下来按下正弦波波形, 按下300K频率范围选择开关, 调节频率至40KHZ, 调节电压10V。仪器如图2所示。当用户双击右键打开函数信号发生器时, 导航箭头指向电源按钮, 用户点击电源开关, 函数信号发生器上显示数字、频率和电压;下一步, 箭头指向正弦波按钮, 用户点击按钮, 接下来箭头指向频率范围按钮300KHZ, 按下按钮;下一步, 调节频率, 频率默认39.0, 本实验所需的频率为40.0左右, 要求调至40.0KHZ, 最终调节电压至10V。信号发生器的调节结束。

3.3 示波器的调节

对于示波器, 主要有对波形的振幅调节、波形左右调节和上下调节 (注:由于本校实验室对其它功能的调节不做要求, 故在本设计中不对其它功能操作响应) 。在示波器图片上双击右键放大示波器进行调节, 如图3所示。

对示波器进行振幅、水平和垂直调节属于自主调节, 对于本实验不属于必须过程, 所以实验中不进行严格的过程控制。对TIME/DIV旋钮顺、逆时针调节, 可以使振幅改变并显示在示波器的屏幕上。水平调节和垂直调节同样是将波形图在屏幕上改变位置, 通常情况可以使用默认值。

3.4 声速测量仪的调节

对于声速测量仪, 主要是通过旋转鼓轮查看示波器显示屏上的波形图象, 当振幅达到最大时记录游标和鼓轮的刻度, 如此重复十次。对于鼓轮, 也就是实验中最重要的一部分, 因为最终数据要从此得出。鼓论必须有高清晰度和高精确度, 它的动作必须和游标、示波器图象一致。用户点击鼓轮使鼓轮旋转, 或通过键盘的方向键调节鼓轮, 观察示波器图象中正弦波达到波峰时游标和鼓轮的刻度, 并连续记录十组数据。每两个波峰之间为半个波长, 通过公式可以得出声速。

4 结束语

通过以上论述和声速测定仿真实验的实例操作可以看出, 运用Java技术实现大学物理实验的仿真效果非常好。作为实验辅助教学手段, 它不仅可以弥补实验仪器和元器件缺乏带来的不足, 而且排除了原材料消耗和仪器损坏等因素。把现代计算机技术运用到教学中, 对进一步培养学生综合的自学、实践和创新能力具有重要意义。

摘要:提出并实现的仿真实验是指依托计算机平台, 应用Java技术实现的物理仿真实验。仿真实验是对传统实验教学的强化和延伸, 是实验教学改革的重要方向。它拓展了实验教学的时间和空间, 解决了设备、师资不足的矛盾, 打破了教师传统的示范演示, 激发了学生学习的主动性, 促进了教学效率和质量的提高。

关键词:Java技术,仿真实验,教学改革

参考文献

[1]申蔚, 夏立文.虚拟现实技术[M].北京:北京希望电子出版社, 2002.

[2]印旻.Java语言与面向对象程序设计[M].北京:清华大学出版社, 2000.

浅谈Java语言实验教学 篇3

关键词:Java;实验教学;教学方法

中图分类号:TP312.1-4 文献标识码:A 文章编号:1674-7712 (2014) 18-0000-01

Java语言作为一门面向对象的编程语言,已经成为高校的一门必修课程,在进行Java语言的教学过程中,理论教学面向全体学生,主要采用教师课堂讲解(讲解基本语法,知识内容,编程技巧,学生随堂练习,教师边讲边操作),学生互动的授课方式,让学生掌握基础知识。而实验教学必须辅以实训实习和课程设计来提升教学的深度和广度,让学生将所学理论知识通过实验进行深化,加深理论知识的掌握,同时也锻炼了自己的实践操作能力。在Java语言的整个实验教学过程中,教师要根据学生的实际能力,采用以学生为主体、教师为主导、逐步引导、启发式的教学方法,充分发挥学生自主学习的能力。采用“项目驱动,案例教学,一体化课堂”的教学模式,让学生多进行上机演练,让学生通过动手练习发现问题、提出疑问,首先自己思考解决问题,解决不了再找教师帮助,根据学生提出的问题教师进行综合答疑,最后根据实验过程进行全面总结。这种方法已在本校的实践教学中进行应用,取得了较好的效果。

一、教师需做必要的实验准备

首先,应该充分了解教学大纲的内容,因为教学大纲是教师进行教学的指导棒,它对于理论教学有指导的作用,并且,对于实验教学也有一定的指导意义。也就是说教学大纲无论是理论教学还是实验都是非常重要的。如果要想做好实验前的准备事项,必须充分掌握教学大纲中涉及到的知识点。详细说来,应该设计出实验题目,实验题目要满足两个要求,第一个要求,学生在实验前必须能够掌握必要的基础知识,以便为下一步的学习打下一定的基础。第二个要求,设计的题目要有深度,为开发实用程序提供可能。

其次,作为教师,应该在实验的教学之前备课,备课主要包括实验内容的确定,教学目的的确定。在实验课以前,必须要让学生清楚的知道每次实验课都要做什么、学什么;除此之外,实验内容的设计也是非常重要的,因为实验内容必须围绕大纲,内容必须紧靠大纲,必须使得学生充分了解教学大纲中的重点和难点。另外,作为一个教师,必须在实验课上课前提前把给学生做的题目做一遍以便做到心中有数,在做题过程当中,对于不同的题目难易系数也要做到心中有数,以便学生在做题过程当中遇到问题时能够及时帮助其解决,这样能够节省课堂时间。因为Java的实验性很强,多联系能发现很多问题。在开始上课之前教师还要对实验室机房的机器进行调试,确保机器和软件都能正常运行。

最后,教师应该了解学生状态,做到因材施教。因材施教是教学中非常重要的原则,如果想上好计算机Java语言实验课,这是一个的重要前提条件。不同学生的实际情况不同,有的同学喜欢编程,并且具有一定的编程基础(其他语言),但是,有的同学对编程知识了解的较少,甚至一无所知,这就需要教师在教学过程中采用因材施教的方法,而不能采用填鸭式的一鞭子赶,也就是说,在教学中要避免注入式教学,采用启发性教学。应该启发学生学习Java,让学习的学习动机变成内部动机,使得学生主动学习,主动思考如何解决问题。可以根据学生的情况,将学生分组进行教学,编程基础较好的同学可以去设计一些小项目做一下,基础一般的同学可以联系相对难的题目,基础较差的同学需要巩固基础,多加练习,总结经验,为进一步学习做准备。

二、教师的实验教学方法

对于编程语言的初学者来说,因为Java语言是一门面向对象的课程,所以对于学生而言是相当难理解的。他们缺少编程的思想和模式,编程对学生而言就是新鲜的。所以,在实验课要指导学生在学习过程中逐步建立编程理念和编程模型,要比让学生机械的把程序敲入电脑,查看程序结果修改程序重要的多。因此如何通过实验课提高学生对Java语言的学习兴趣,如何建立编程思想才是教师上实验课应该考虑的重要内容。具体的讲课过程如下:首先简要复习一下理论上所学的知识,加深学生对Java理论知识重点和难点的理解,实验操作需要有扎实的理论知识作基础,只有深入透彻的理解了理论知识才能上好实验课;其次让学生进行预习,针对学生遇到的不好理解,不好掌握的问题,教师要进行重点详细的讲解,然后再针对实验教学计划进行实验课的教学。教师应该布置比较有综合性的题目,将题目用到的重点知识进行讲解,引导学生思考解题思路,留给学生足够的时间自己思考,自己练习,在这其间老师可以进行指导,学生遇到问题,引导学生进行解决,不仅可以加深学生对基本知识的理解,还可以培养学生的编程思路。

三、让学生动手,强化实践环节

当学生掌握了一定的Java编程基础知识以后,学生缺少的是实际的开发经验和全面应用Java技术的能力。该能力可以通过实际项目来锻炼提升,首先对所学知识进行巩固复习,然后通过做项目来获取实际的开发经验,尽快达到实际锻炼的要求。比较典型的实验项目有纸牌游戏,在线购物系统,图书馆系统等,需要学生自己进行课题设计。学生可以几个人一组完成一个课题,每个课题都要有新穎性,在设计性实验中,为了使得学生充分了解自己的进展,把每个作业分成几大块,规定每一个学时中应完成的内容,给出每个块要完成的功能,并给出详细描述,要求学生编写相应代码。学生在实际项目的开发中,不可避免的会遇到各种问题,这就需要教师在教室内巡视,学生一旦遇到问题,教师要给学生进行讲解指导,对于普遍性问题,需要进行归纳总结,统一讲解。这种方法比较符合学生的现状,在实际教学中取得了教的效果,比较值得推广。

四、结束语

Java语言教学重点培养学生面向对象的编程思想和实际的应用开发能力,注重培养学生自主学习能力和独立思考能力,独立解决问题能力,为更深入的学习打基础,教学过程中要采用多媒体,并且引入项目驱动。以上是对Java教学问题的一点简单概述,提出了自己的观点和意见,并实际应用于Java教学,取得了很好的效果。

参考文献:

[1]耿祥义,张跃平.Java 2实用教程(3版)[M].北京:清华大学出版社,2006:95.

Java开发环境实验报告 篇4

课程名称

面向对象程序设计

实验项目名称

Java开发环境实验

学生姓名

专业班级

学号

一.实验目的和要求

1. 建立并熟悉Java开发环境,熟悉Eclipse集成开发环境 2. 能够编写简单的Java应用程序

二.实验内容

1.安装和配置Java SDK

2.安装和配置Eclipse集成开发环境

3.编写在屏幕上输出信息的Java应用程序

三.实验结果与分析(可将程序运行结果截屏,也可简单分析运行结果)

1.用Java SDK开发屏幕输出“Hello World”的程序。程序运行结果如下:

2.用Eclipse开发屏幕输出“Hello World”的程序。程序运行结果如下:

3.用Java SDK开发屏幕输出“你好,我开始学OOP了”的程序。程序运行结果如下:

4.用Eclipse开发屏幕输出“你好,我开始学OOP了”的程序。程序运行结果如下:

四.讨论、心得(可写遇到的问题及解决方法,或者对技术的理解等)

1.public类有何特点?

有public的类可以在包外使用,否则不可以,与此同时,源文件名必须和类名相同。

2.Java语言是否区分大小写?

JAVA语言本身是区分大小写的,但是在用文件路径、文件名对文件进行操作时,这里的文件名和路径是不区分大小写的,这是因为文件系统不区分大小写。

3.JVM和JRE都是什么?

JVM是Java Virtual Machine(Java 虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。

Java运行环境(Java Runtime Environment,简称JRE)是一个软件,由太阳微系统所研发,JRE可以让电脑系统运行Java应用程序(Java Application)。

JRE的内部有一个Java虚拟机(Java Virtual Machine,JVM)以及一些标准的类函数库(Class Library)。

4.Java如何做到平台无关的?

Java课程设计报告 篇5

课程名称 Java语言课程设计 题目名称 人事管理系统的设计与实现 学生学院 应用数学学院 专业班级 学 号 学生姓名 指导教师 刘科峰

2014 年 10 月 29

日 一.设计内容

自学Swing图形界面设计和数据库程序设计。开发用于某单位的人事管理系统。该系统要求实现以下功能:

1.员工信息管理包括:员工信息一览表、新员工的建立、修改 2.薪资福利管理:考勤与薪资的连动计算、薪资与福利的设置

3.考勤假期管理:考勤项目录入, 实现考勤信息的查询、统计、汇总 4.人事报表管理:按照员工性别,数目,薪酬自动生成相关报表, 可自定义统计分析条件并可对历史报表进行管理。

设计亮点

1.null布局方式

Swing图形界面设计中有很多布局方式,通过本次学习了解到了FlowLayout,BorderLayout,GridLayout以及null布局,就这四种布局方式而言,null布局的优点在于可以将组建的位置精准到坐标值,可以把组件放到任意想放置的位置,另外可以通过null去设置组件的大小,相较于其他布局方式来说是一个很大的优势。但同时它的缺点在于不能根据Frame的大小变化而改变位置。

2.组件部分属性的设计

Swing中有很多方法是用来实现组件属性设置的,比如button.setVisible(false);按钮通过调用这个方法实现不可见,这是我此次课程设计中的一个亮点,因为组件是没有设置大小的方法的,只有依靠于相应的布局方式才能改变它的大小,通过设置多几个按钮设为不可见,将所要可见按钮实现大小以及位置的控制是一种很好的方法。

二、设计方案

1主界面(只列出界面设计方面的代码)

JPanel panel=new JPanel();JTable table=null;JButton ibtn=new JButton(“员工信息”);JButton cbtn=new JButton(“考勤管理”);JButton mbtn=new JButton(“薪资管理”);JButton tbtn=new JButton(“人事报表”);ImageIcon rtou = new ImageIcon(“rentou.jpg”);

JLabel imgLabel=new JLabel(rtou);

//上面代码定义了一个面板与四个标签,并引入了一个图片

panel.setLayout(new FlowLayout());//设置面板为流布局

panel.add(ibtn);panel.add(cbtn);panel.add(mbtn);panel.add(tbtn);panel.setBackground(Color.GRAY);

//将按钮加到面板中,设置面板为灰色

this.add(imgLabel,BorderLayout.CENTER);this.add(panel,BorderLayout.SOUTH);this.setBounds(300, 180, 600, 350);this.setVisible(true);this.getContentPane().setBackground(Color.GRAY);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);/*图片标签以边框布局放置在中间,将面板也以边框布局放置在下面,可见,灰色,点击关闭程序*/

(2)查询员工界面(只列出界面设计方面的代码)

Label idlabel = new JLabel(“ID”);JLabel namelabel = new JLabel(“姓名”);JLabel bumenlabel = new JLabel(“部门”);JLabel zhiweilabel = new JLabel(“职位”);

JTextField idfiled = new JTextField(8);JTextField namefield = new JTextField(8);JComboBox bumenbox =new JComboBox();JComboBox zhiweubox = new JComboBox();

JButton btn=new JButton(“查询”);JButton ibtn=new JButton(“添加”)

JPanel spanel=new JPanel();JPanel vpanel=new JPanel();

/*定义和各个组件,4个标签,两个文本框,两个复选框,两个按钮,两个面板容器*/ spanel.setLayout(new FlowLayout());

vpanel.setLayout(new FlowLayout(FlowLayout.CENTER,45,25));

bumenbox.addItem(“");

bumenbox.addItem(”管理部“);

bumenbox.addItem(”生产部“);

bumenbox.addItem(”业务部“);

zhiweubox.addItem(”“);

zhiweubox.addItem(”部长“);

zhiweubox.addItem(”副部长“);

zhiweubox.addItem(”普工“);

spanel.add(idlabel);

spanel.add(idfiled);

spanel.add(namelabel);

spanel.add(namefield);

spanel.add(bumenlabel);

spanel.add(bumenbox);

spanel.add(zhiweilabel);

spanel.add(zhiweubox);

spanel.add(btn);

vpanel.add(ibtn);

spanel.setBackground(Color.GRAY);

vpanel.setBackground(Color.GRAY);

//将各个组件放进对应面板,设置相关属性

this.add(spanel,BorderLayout.NORTH);

this.add(vpanel,BorderLayout.SOUTH);

this.setBounds(300, 180, 600, 350);

this.setVisible(true);

this.getContentPane().setBackground(Color.GRAY);

//将面板以边框布局放入框架中,设置属性(3)增加员工信息界面

JPanel panel=new JPanel();

JLabel timeLabel=new JLabel(”时间“);JLabel allnumLabel=new JLabel(”员工总数“);

JLabel staffMoLabel=new JLabel(”考勤“);JLabel entryLabel=new JLabel(”全勤“);

JLabel quitLabel=new JLabel(”缺勤“);JLabel mwLabel=new JLabel(”性别比例“);

JLabel manLabel=new JLabel(”男“);

JLabel womanLabel=new JLabel(”女“);JLabel proportionLabel=new JLabel(”男女比例“);JLabel distributionLabel=new JLabel(”人员部门分布“);JLabel mdpLabel=new JLabel(”管理部“);

JLabel pdpLabel=new JLabel(”生产部“);JLabel bdpLabel=new JLabel(”业务部“);JLabel xmLabel=new JLabel(”项目“);JLabel xzLabel=new JLabel(”细则“);JLabel stLabel=new JLabel(”数据统计“);

JTextField timeFiled = new JTextField(8);

JTextField allnumFiled = new JTextField(8);JTextField entryFiled = new JTextField(8);JTextField quitFiled = new JTextField(8);JTextField manFiled = new JTextField(8);JTextField womanFiled = new JTextField(8);JTextField proportionFiled = new JTextField(8);JTextField mdpFiled = new JTextField(8);JTextField pdpFiled = new JTextField(8);JTextField bdpFiled = new JTextField(8);// 定义所需组件

public Selectrenshi(String tablename){

super(”人事管理“);

panel.setLayout(null);

panel.setBackground(Color.GRAY);

panel.add(xmLabel);

panel.add(xzLabel);

panel.add(stLabel);

panel.add(timeLabel);

panel.add(timeFiled);

panel.add(allnumLabel);

panel.add(allnumFiled);

panel.add(staffMoLabel);

panel.add(entryLabel);

panel.add(entryFiled);

panel.add(quitLabel);

panel.add(quitFiled);

panel.add(mwLabel);

panel.add(manLabel);

panel.add(manFiled);

panel.add(womanLabel);

panel.add(womanFiled);

panel.add(proportionLabel);

panel.add(proportionFiled);

panel.add(distributionLabel);

panel.add(mdpLabel);

panel.add(mdpFiled);

panel.add(pdpLabel);

panel.add(pdpFiled);

panel.add(bdpLabel);

panel.add(bdpFiled);

//将组件加到相应面板中

xmLabel.setBounds(120,20,100,30);

xzLabel.setBounds(240,20,100,30);

stLabel.setBounds(360,20,100,30);

timeLabel.setBounds(120,50,100,30);

timeFiled.setBounds(360,50,100,30);

allnumLabel.setBounds(120,100,100,30);

allnumFiled.setBounds(360,100,100,30);

staffMoLabel.setBounds(120,150,100,30);

entryLabel.setBounds(240,150,100,30);

entryFiled.setBounds(360,150,100,30);

quitLabel.setBounds(240,200,100,30);

quitFiled.setBounds(360,200,100,30);

mwLabel.setBounds(120,250,100,30);

manLabel.setBounds(240,250,100,30);

manFiled.setBounds(360,250,100,30);

womanLabel.setBounds(240,300,100,30);

womanFiled.setBounds(360,300,100,30);

proportionLabel.setBounds(240,350,100,30);

proportionFiled.setBounds(360,350,100,30);

distributionLabel.setBounds(120,400,100,30);

mdpLabel.setBounds(240,400,100,30);

mdpFiled.setBounds(360,400,100,30);

pdpLabel.setBounds(240,450,100,30);

pdpFiled.setBounds(360,450,100,30);

bdpLabel.setBounds(240,500,100,30);

bdpFiled.setBounds(360,500,100,30);

//采用null布局,设置组建坐标值

this.add(panel,BorderLayout.CENTER);

this.setBounds(300, 100, 600, 600);

this.setVisible(true);

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

this.getContentPane().setBackground(Color.GRAY);

//将面板放入框架,设置相应属性(4)员工考勤界面

JLabel idlabel = new JLabel(”ID“);JComboBox idbox =new JComboBox();CheckTable model = null;

JButton wbtn=new JButton(”修改“);

JButton cbtn=new JButton(”查询“);JButton mbtn=new JButton(”创建薪资表“);JButton rbtn=new JButton(”创建人事表“);

JScrollPane scrollpane = null;JPanel spanel=new JPanel();JPanel vpanel=new JPanel();JTable table=null;spanel.add(idbox);panel.add(wbtn);spanel.add(cbtn);vpanel.add(mbtn);vpanel.add(rbtn);spanel.setBackground(Color.GRAY);vpanel.setBackground(Color.GRAY);this.add(spanel,BorderLayout.NORTH);this.add(vpanel,BorderLayout.SOUTH);this.setBounds(300, 180, 600, 350);this.setVisible(true);this.getContentPane().setBackground(Color.GRAY);

(5)选择考勤表界面

JLabel checklabel = new JLabel(”选择考勤表“);JLabel newlabel = new JLabel(”创建考勤表“);JComboBox timebox =new JComboBox();JTextField newfield = new JTextField();JButton btn=new JButton(”确认“);JButton nbtn=new JButton(”创建");JPanel spanel=new JPanel();spanel.add(checklabel);

spanel.add(timebox);

spanel.add(btn);

spanel.add(newlabel);

spanel.add(newfield);

spanel.add(nbtn);

checklabel.setBounds(30,90,100,30);

timebox.setBounds(180,90,100,30);

btn.setBounds(360,90,100,30);

newlabel.setBounds(30,200,100,30);

newfield.setBounds(180,200,100,30);

nbtn.setBounds(360,200,100,30);

this.add(spanel);

this.setBounds(300, 180, 600, 350);

this.setVisible(true);

三、结果和数据处理

四、结论

1.Swing图形界面

图形用户界面(GUI)是程序不可或缺的一部分,它便于用户和程序的交互。在Swing界面中是以Frame为框架,采用合理的布局方式(FlowLayout,BorderLayout,GridLayout,null),将Panel加入框架之中,而实现界面的各个组件将调用各种方法设置自身属性实行可视化界面以及加入到面板之中。再通过事件监听器实现事件的监听预处理机制。

2.数据库

在这次课程设计中哦我主要负责Swing图像界面,对于数据库只做了最简单的了解。程序中采用了最流行的关系型数据库mysql,雪化了mysql的建立,删除,与修改以及使用sql语言对数据库进行一些简单的操作,将按钮等设置的监听事件与数据库相连接。

五、问题与讨论

1.组件的方法调用

在这次课程设计中,用到了很多的组件,例如Button,Jlabel,TextField,ComBox,等。Swing图形界面也确实提供了很多方法去设置相关组件的属性,例如label.setVisible(false);设置标签不可见等很多方法,只要查看API文档几乎就能实现很多功能,但是对于按钮等最常见的组件来说设置大小如果不依靠相关布局方式很难设置,我在程序中之所以运用了很多的bull布局方式就是为了实现组件大小的设置,如果说能有一个方法直接设置组件大小而不受其他组件或容器影响就能使代码很简洁了。2.相对布局

Java程序设计实验报告 篇6

1. 需求调研

现代社会是一个高速信息化的社会, 数字化生存已经一步步走进我们的生活与工作。现在人们管理各种信息已经不像以前那样需要用纸和笔来记录, 而是用计算机。使用计算机来管理信息, 具有手工管理无法比拟的优点, 能够极大提高管理效率, 节约资源, 也是适应信息化建设发展趋势的重要因素。

目前, 实验室工作繁杂、资料重多, 虽然各类管理信息系统已进入高校, 但并不适用, 而对于实验室管理来说, 目前还没有一套完整的、统一的系统。因此, 开发一套适合Java实验室、兼容性好的管理系统是很有必要的。

本系统是根据Java实验室的具体需求设计的。在日常的实验室工作中, 管理员能够方便得管理实验室的日常事务, 包括增加、删除、修改成员, 安全管理, 立项验收管理, 资源管理等。开发本系统可以减轻实验室工作压力, 比较系统地对实验室成员信息, 成员入室, 立项验收进行管理, 同时, 可以减少劳动力的使用, 加快查询速度、加强管理, 使各项管理更加规范化。

2. 现有系统存在问题的分析

当今时代, 全国各高校的各类管理系统并非一个新的课题, 但也有的学校根本就没有信息任何管理系统, 所有的工作几乎还是手工操作来完成。随着社会的发展, 信息化是社会进程的必然趋势, 学校管理只有快, 准, 精才能发挥其价值。

有些学校虽使用了管理系统, 但是仍然存在很多问题, 问题一日不解决, 效率就一日提不上去。比如有的系统很不完善到处是漏洞, 可以说是千疮百孔, 这样极不完善的系统对管理来说是没有任何保障的。

另外, 很多新开发的系统不具有跨平台性。这样的系统不能方便的移植, 应用价值降低。

二、系统设计

1. 系统结构设计硬件平台:PC

软件平台:Windows系列操作系统或Linux操作系统、Java虚拟机。

数据库:Microsoft Access 2000

设计语言:Java2、Java Bean、SQL等。

2. 系统总体功能设计

基于Swing的实验室管理系统主要包括登录面板和主面板的设计。其中, 登录面板包括背景设置和登录模块的设计。主面板的设计包括成员管理模块 (增加、修改、删除成员等) 和日常管理模块 (部门简介面板、梯队建设、入室申请、安全管理、资源管理、立项验收等) 的设计、透明文本域的设置、背景设置等。

3. 数据库设计

本系统在成员管理模块需要用到数据库, 采用Microsof Access制作数据库Javalab, 包括表renyuan, 定义的字段极其数据类型如右图所示, 其中number字段是主键。

4. 系统所用文件及类结构设计

MF.java包含MF, Login, MFrame三个类, MF是主类, Longin类定义登录模块, MFrame定义主界面整体布局和背景。

RI.java包含五个类, 其中, Cy类定义成员信息, Add Cy类定义增加成员, Edit Cy定义编辑成员, Del Cy定义删除成员, Cy Searchnumber定义查找成员。

JD.java包括JD类, 用来定义文件流来打开文档及图像文件。

Split1.java中的Split1类包括两个内部类:Table Pane和Tree Pane, 分别用来定义中分窗体的表格面板和树面板。

DS.java的两个类Cyb和Database定义数据库的相关操作。

5. 所用类详细设计

MF类是实验室管理系统的主运行类。包括mian方法和MF构造方法。

M F r a m e类是定义实验室管理系统主界面的类, 包含button Name, bj1, button Number等成员变量和MFrameaction Performed等方法。定义了主界面的文本域, 十个按钮, 背景图片, 最后设置总体布局, 为了美观, 设置文本域和按钮都是透明的。

Longin类是定义登录模块的类。包含juserlabel, login1等成员变量和Login和main等方法。类中定义了用户名和密码域, 确定和取消按钮极其事件响应, 最后定义了背景图片并设置总体布局。

Add Cy类定义了成员添加模块的相关变量和方法。Del Cy类定义了成员删除模块的相关变量和方法。Edit Cy类定义了成员编辑模块的相关变量和方法。

Cy Searchnumber类定义了成员查找 (根据序号查找) 模块的相关变量和方法。

JD类定义了文件流的相关操作所用变量及方法。实现:入室申请, 梯队建设, 安全管理, 立项验收, 资源管理, 政策法规等功能。

Split1类定义了部门简介模块的中分窗体, 包括树面板和表格面板。Tree Pane类和Table Pane类是Split1类的内部类。两个类定义了树的节点, 叶子结构, 表格的布局等。

Database类定义了数据库的相关操作, 包括:

加载JDBC驱动程序, 建立和数据库的连接, 执行SQL语句, 存放处理结果, 与数据断开连接

DS类定义了数据库和成员信息管理的增、删、改操作的相关变量和方法。

三、项目创新点和应用前景

本系统采用纯java语言编写, 不受任何平台限制。一般的管理系统采用菜单操作, 界面不美观且操作不方便。而本系统结合本校java实验室的实际情况, 并且采用巨型按钮操作, 加上透明背景, 美观且操作方便。

本项目还有很大的发展空间, 如给成员资料加上照片, 实现图书的借还功能等。项目成果可应用于各大高校及研究机构的实验室管理。

四、结束语

本项目采用的技术基于Swing, 主界面模块和登录界面模块的各项设计都是通过高级GUI编程和Java Bean来实现。部门简介面板的树面板设计树形结构思想。日常管理模块, 应用流与文件技术。成员信息管理模块中, 通过JDBC编程来实现增删改成员对数据库的相关操作。

参考文献

[1]张居敏:Java程序设计经典教程.电子工业出版社, 2008

[2]Cay S.Horstmann:Java核心技术.机械工业出版社, 2008

Java程序设计实验报告 篇7

关键词:程序设计 能力目标 项目教学 教学方案

计算机软件技术专业主要培养具有创新精神和良好的职业道德的软件专业高级专门人才。本专业毕业生主要面向企、事业单位的管理部门和计算机软件开发部门,从事项目负责人、软件程序员、软件测试员、数据库设计师、系统管理员等工作。目前在程序设计应用领域,面向对象的JAVA语言编程和相关的JAVA技术应用相当广泛,JAVA语言成为主流的程序设计开发语言之一,计算机软件技术专业开设的《JAVA程序设计》课程就是要让学生掌握这种主流的程序设计工具,并且能够根据工作平台的实际要求,设计应用软件,解决实际应用中的一些问题。

为了达到更好的教学效果,我们需要构建理论与实践一体化的教学模式,确立重应用能力培养的课程体系,将技能训練贯穿于整个教学环节中,以企业用人标准为培养目标来进行人才的培养工作。

《JAVA程序设计》课程的能力培养目标列举如下:

1、掌握JDK的安装配置,能够熟练地在计算机上安装配置JAVA的运行环境。

2、写符合JAVA语言语法规范的程序代码。

3、养成查阅JAVA官方文档的习惯,能够在帮助文档中获取系统定义类的属性、方法等信息,熟练掌握JDK帮助文档的正确查阅和使用方法。

4、建立面向对象的程序设计思想,学会类的基本设计;能够用面向对象的观点分析、构建实际应用中的对象。

5、学会使用继承的方法设计新的类。

6、理解多态的含义,掌握多态的表现手段,能够根据应用的需要使用多态技术。

7、给应用程序设计构建美观、实用的图形用户界面。

8、在程序设计中能够分析可能发生的异常,并在程序中处理异常。

9、能够用JAVA中提供的流方式对文件进行操作。

10、学会进行数据库的连接,能够通过程序操作数据库,如查询、增、删、改等,从而实现对数据库中各种数据的处理。

11、理解网络通讯协议的概念及作用,熟悉JAVA中利用TCP/IP协议进行网络通讯的机制,能够用JAVA语言编写网络应用程序。

12、利用线程机制设计多用户应用程序。

13、学会利用工具将应用程序生成可执行文件,并在应用环境中发布。

14、对中、小型应用系统的开发流程有一个清楚的认识和经历。

围绕本课程确定的培养目标,在教学中以项目教学方法为主。“项目教学法”是通过实施完整的项目来进行的教学活动,其目的就是要在课堂教学中把理论与实践教学有机地结合起来,充分发掘学生的创造潜能,训练学生小组协作和团队精神,让学生在应用中学习,在实践需要时学习,从而提高学生解决实际问题的综合能力。“项目教学法”是近几年在职业教育领域比较提倡的方法,但在应用中还是应该注意一些问题,比如:项目的选择应具有目的性,所选项目应包含教学计划内要教的各学科的内容;项目应具有完整性,项目从设计、实施到完成必须要能够有一个完整的成品出来,作为项目的成果;在教学中教师要充分的准备工作;要调动学生参与项目的积极性,项目教学的实施要精心地组织安排;对项目结果进行检查,做合理公平的评价等。

在对项目教学法本质及注意问题进行充分认识和分析的情况下,综合考虑各方面因素,结合学生的实际,设计了《JAVA程序设计》课程教学组织的初步实施方案:

把《JAVA程序设计》课程中涉及到的知识划分为五个项目模块:

一、经典C++程序转换模块

这部分的安排主要是借复习C++的语法知识,来快速熟悉JAVA语言的基本语法、流程控制语句等内容,并在从C++语言向JAVA语言的转换过程中,把JAVA的不同之处突出表现,将其作为重点训练。传统的教学过程中,总是将JAVA语言的语法讲解一遍,虽然是不同的语言,但存在太多相同的东西,重复的讲解容易让学生一开始就厌倦课程,这样的调整一方面避免了重复;另一方面还可以节省教学课时,为后期学生实际动手操作训练提供更充足的时间。这一部分可以把传统教材上关于JAVA语言入门、运算符表达式和流程控制、数组和方法、面向对象的程序设计等章节的知识涵盖在其中。

二、界面设计模块

考虑到项目的功能都是在一个美观、实用的前台界面之上实现的,所以第二个模块安排进行应用程序界面设计训练。JAVA中提供进行界面设计主要是AWT、SWING两个包,对于这部分工作涉及到的支撑知识,主要是各种图形界面控件类的使用。第三、第四、第五模块中涉及到的三个应用软件,都具有图形用户界面,将三个小软件的界面作为此阶段的教学案例。安排教师讲解演示一个项目界面,学生课下同步仿制一个项目界面,熟练独立设计一个项目界面的思路完成教学。这一部分涵盖了传统教材上JAVA图形用户界面、JAVA类库和常用类简介等章节知识。

三、俄罗斯方块游戏项目模块

本项目是一个小游戏,容易激发学生的学习兴趣,同时又是一般学生都玩过、都比较熟悉的,同时完成之后,学生也比较容易找到成就感。教师分析项目功能需求,逐步引导学生思考,并分析演示实现方法。第三模块阶段以教师为主,教师演示,学生模仿操作。这部分任务的完成要靠第一、二模块准备的JAVA基础,主要用到数组字符串、事件处理、异常处理等章节知识。

四、网络文件传输项目模块

进入第四模块,项目的完成主要靠学生,教师在其中主要起引导作用。首先引导学生按照软件工程的方法对软件的开发进行需要分析,确定完成的功能,明确实现过程,画出处理流程图;利用前期掌握的知识,根据确定的软件功能完成界面的调整修改;设计单机中文件及文件夹的建立、复制、删除功能;加入网络连接操作,实现网络中文件的传输。本模块主要训练对文件的操作和网络连接的建立。

五、QQ聊天软件项目模块

此模块是对学生进行JAVA项目开发强化训练的部分,使用到前期涉及到的所有知识。由学生独立根据自己的经验进行项目分析,严格按照软件工程的要求进行;根据个人爱好设计有个性的聊天界面;独立架构聊天软件的网络通讯框架;添加多用户同时在线聊天功能;将聊天用户的用户名、密码及相关信息采用数据库管理,登录时进行身份验证。此环节重点训练多线程和数据库连接、操作等章节知识。

以上的五个模块设计层层递进,并在递进中有重叠,有承上启下的目的,巩固上一环节,服务下一模块。任何的一个新的方案都需要在实践中进行检验,通过实践我们可以不断地进行改进和调整,把教学中使用的项目设计更好更全面,从而达到最优的教学效果。

参考文献:

[1] 姜大源. 职业教育学研究新论.教育科学出版社.2007.1

[2] 冯向东.学科、专业建设与人才培养.高等教育研究.2002.3

[3] 孙伟. 《Java程序设计》课程的教学改革与实践. 计算机时代. 2005.11

java_扫雷游戏课程设计报告 篇8

Windows 2000/XP系统提供的扫雷游戏是一个很有趣的游戏。本章的课程设计使用Java语言编写一个与其类似的扫雷游戏。具体要求如下:

(1)扫雷游戏分为初级、中级和高级三个级别,扫雷英雄榜存储每个级别的最好成绩,即挖出全部的地雷且用时最少者。单击游戏菜单可以选择“初级”、“中级”和“高级”或“查看英雄版”。

(2)选择级别后将出现相应级别的扫雷区域,这是用户使用鼠标左键单击雷区中任何一个方块便启动计时器。

(3)用户要揭开某个方块,可单击它。若所揭方块下有泪,用户便输了这一局,若所揭方块下五雷,则显示一个数字,该数字代表方块的周围的8个方块中共有多少颗雷。

(4)如果用户认为某个方块下埋着雷,单击右键可以在方块上标识一个用户认为是雷的图标,即给出一个扫雷标记。用户每标记出一个扫雷标记(无论用户的标记是否正确),程序将显示的剩余雷数减少一个。

(5)扫雷胜利后(用时最少者),程序弹出保存成绩的对话框。

(6)用户可以选择标记疑问的方块,用可以勾选游戏菜单下的标记(或者用快捷键alt+G 然后M)即可,此时双击右键并可出现“?”标记。另有颜色选项,当用户勾选此项时,游戏将以最低图像像素来显示。

(7)如果用户需要即使提示声,并可选中声音选项,此时将听到计时的卡塔声。当用户点中雷时,将有爆炸声产生,胜利时,将有凯旋的旋律播放,此时企鹅出现欢悦表情。

二、需求分析

1、扫雷游戏概述

扫雷是一种具有迷惑性的对记忆和推理能力的简单测试,它是长久以来最受欢迎的Windows游戏之一。游戏目标:找出空方块,同时避免触雷。

2、扫雷的操作方法

游戏主区域由很多个方格组成。使用鼠标随机点击一个方格,方格即被打开并显示出方格中的数字;方格中数字则表示其周围的8个方格隐藏了几颗雷;如果点开的格子为空白格,即其周围有0颗雷,则其周围格子自动打开。

例如,方格中出现1,说明上下左右及斜角合计有一颗雷,依次类推,2则有2颗,3则有3颗。

3、需实现的主要功能

(1)用户可以自定义级别并且可以任意输入雷数;

(2)具有计时功能,即显示用户完成移动盘子所花费的时间;(3)用户可以选择是否有音效;(4)自动保存扫雷英雄榜;

三、总体设计

1、总体功能图

扫雷游戏主界面游戏菜单重新开始帮助开局级别选择标记英雄榜退出关于扫雷

2、总体流程图

开始定义并初始化个按钮,菜单等菜单菜单事件处理按钮按钮开局选择级别标记声音英雄榜退出重新开始方块展示相应的效果是否点中雷NY结束

四、详细设计

1、扫雷棋盘的布局设计

系统的整体布局为:CardLayout布局, 采用了菜单、按钮、面板„等组件,菜单主要包括开始,选择级别,标记,扫雷英雄榜,退出,按钮的功能是重新开始新的游戏。

2、雷区的设计

MineArea类是javax.swing包中Jpanel容器的子类,实现了ActionListener和MouseListener接口,所创建的对象:mineArea是MineGame类中最重要的成员之一,作为一个容器添加到MineGame窗口的中心。标明MineArea类的主要成员变量、方法以及和MineGame类之间组合关系的UML图如图2-1所示。

JPanelActionListenerMouseListenerMineArearow,colum,mineCount,markMount: inblock: Block[]blockView: BlockView[][]showTime: JTextFieldshouMarkedMineCount: JTextField initMineArea(int,int,int): voidactionnPerformed(ActionEvent)voidmousePressed(MouseEvent): voidlay: LayMinesrecord: Record reStart: JButtontime: Timer show(int m,int n): voidinquireWin(): voidMineGamemineArea:MineArea------------------MineArea类的UML图

以下是UML图中有关数据和方法的详细说明。

1、成员变量

(1)block是Block类型的数组,用来确定雷区有多少需进行扫雷的方块。(2)blockView是BlockView类型的数组,负责为block数组中的Block对象提供视图。

(3)lay是LayMines类型的对象,负责设置block数组中的哪些方块是雷或不是雷。

(4)record负责提供保存成绩的界面,是一个对话框,默认不可见。用户只有扫雷成功后(用时最少),才可以看见对话框。

(5)reStart是一个按钮对象,用户单击它重新开始游戏。(6)time是计时器对象,负责计算用户的用时。

2、方法

(1)initMineArea(int,int,int,int)方法可根据参数提供的数据设置雷区的宽度、高度、雷的数目以及雷区的级别。

(2)actionPerformed(ActionEvent)是MineArea类实现的ActionListener接口中的方法。当用户单击blockView中的某个方块时,actionPerformed(ActionEvent)方法负责执行有关算法,例如,当用鼠标左键单击方块上的按钮后,若该方块下有雷,actionPerformed(ActionEvent)方法将使用户输掉本局,若该方块下无雷,actionPerformed(ActionEvent)方法将显示blockView对象中的标签,该标签上是一个数字,该数字代表当前方块的周围的8个方块中共有多少颗雷。

(3)show()方法是一个递归方法。actionPerformed(ActionEvent)方法执行时将调用show方法进行扫雷。

(4)mousePressed(MouseEvent)方法是MineArea类实现的MouseListener接口中的方法,当用户按下鼠标有件事mousePressed(MouseEvent)方法负责让方块上显示一个探雷标记。

(5)inquireWin()方法用来判断用户是否扫雷成功,如果成功该方法负责让record对话框可见。所谓扫雷成功是指不仅找到了全部的累而且用时最少。综上所述,MineArea创建的扫雷区域效果如图2.2.2所示。

3、音效的设计

music类是java.awt包中Frame的子类,通过构造音效声音方法,在MainFrame主类中,通过ActionListener来监视是否已开始游戏,来决定播放计时声,之后又通过ActionListener来监视是否踩到雷和是否完成来决定,播放相应的音乐。下面标明music类的主要成员变量、方法以及和MineFrame类之间组合关系的UML图如图2-2所示。

musiclooping,looping2,looping3:booleanfile1,file2,file3:Filesound1,sound2,sound3:AudioClipchosenClip1,chosenClip2,chosenClip3:AudioClipdidaInit():voiddidaLoop():voiddidaStop():voiddetonationInit():voiddetonationPlay():voidvictoryInit():voidvictoryPlay():void MineArea类的UML图

4、排行榜设计

LogDialog是javax.swing包中Jdialog对话框的子类,并实现了ActiongListener接口。LogDialog创建的对象dialog是MainFrame类(主类)的成员之一,当用户选择查看“英雄榜”菜单项时,该对话框可见,提供了查看扫雷的最好成绩的界面。标明LogDialog类的主要成员变量、方法以及和MainFrame类之间组合关系的UML图如图2-3所示。JDialogActiongListenerLogDialogfile:File 显示成绩:重新记分:JButtonactionPerformed(ActionEvent):voidreadAndShow:voidMineGameshowHeroRecord:ShowRecord

LogDialog类的UML图

五、调试分析、测试结果

在程序代码基本完成后,经过不断的调试与修改,最后测试本次所设计的扫雷游戏能够正常运行,在基本功能与画面上与Windows自带的扫雷游戏没有太大差别,没有出现明显的错误和漏洞,但是在一些细节方面仍然需要完善,比如在游戏中可以加入一些不同语音的提示,在游戏完成和失败的时候可以弹出一些小的Flash动画,还有就是可以扩展一下扫雷英雄榜的功能等。总的来说本次设计在功能上已经基本达到要求,其他细节方面有待以后完善。

六、结论及改进设想

1、界面的美观性做的不太好,比如说布局,颜色搭配有待改进

2、背景音乐在播方的时候有一点小问题,比如单击停止播放,音乐并没有停止,需要单击2次或多次;另外背景音乐似乎很占内存,运行的时候容易死机。

3、MineGame的初始化界面大小难以控制,特别是在自定义的情况下,需在手动改面窗口的大小。

七、心得体会

这个扫雷游戏是完全模拟微软系统自带的扫雷游戏,所以难度是比较大了,必然在编程过程中也遇到很多问题,有些问题比较简单但就不知道错在哪里,有些大问题之道在哪就是不知道怎么办才好,后来经过自己的不断调试,这个扫雷游戏终于大功告成。

经过编写这个扫雷游戏,我认识到应该注意细节问题,虽然是很小的问题,但可以提高自己编程的能力,而且还可以培养自己编程的严谨性,同时还可以为以后的编程积累经验。编写完这个扫雷游戏,我发现自己有很多的不足,我想如果让我来单独来编写这个游戏,我感觉很吃力,因为这个游戏涉及到好多算法。感触最深的就是我们真的要扎扎实实的打基础!并且我感觉到只要我们自己肯下功夫学习,我们也可以做出很好的东西。

通过该课程设计,全面系统的理解了程序构造的一般原理和基本实现方法。把死板的课本知识变得生动有趣,激发了学习的积极性。把学过的计算机编译原理的知识强化,能够把课堂上学的知识通过自己设计的程序表示出来,加深了对理论知识的理解。现在通过自己动手做实验,从实践上认识了Java是如何处理命令的,课程设计中程序比较复杂,在调试时应该仔细。

在这次课程设计中,我就是按照实验指导的思想来完成。加深了理解文件系统的内部功能及内部实现,培养实践动手能力和程序开发能力的目的。

八、参考文献

[1] 耿祥义.Java大学实用教程.北京:清华大学出版社,2009. [2] 耿祥义.Java课程设计.北京:清华大学出版社,2008.

[3] 王鹏.Java Swing图形界面开发与案例详解.北京:清华大学出版社,2008. [4] 丁振凡.Java语言实验教程.北京:北京邮电大学出版社,2005. [5] 郑莉.Java语言程序设计.北京:清华大学出版社,2006.

Java实验5 篇9

一、实验内容:

从键盘上输入一行字符串。

①将字符按Unicode字典顺序排序后输出。②统计每个字符出现的次数和位置。③统计含有的单词个数。④正向和反向输出单词。

二、算法思路:

要完成任务①:使用StringTokenizer类的countTokens()方法和nextToken(),将单词存储到String a[ ]数组中,再定义一个空的String b[ ] , 用来存放比较大小后的单词。

要完成任务③:使用StringTokenizer类中的countTokens()方法。

要完成任务②:定义charArray[i ]存放字符

intArray[ i]出现字符的次数 addr[i][ ]用来存放出现字符的位置

要完成任务④:可以通过之前定义存储的String a[ ]和相关简单算法,输出正向和反向的单词。

三、实验结果:

四、程序代码: import java.util.*;import java.awt.*;import java.awt.event.*;import javax.swing.*;

public class TokenTest extends JFrame{

private JLabel promptLabel;

private JTextField inputField;

private JTextArea outputArea;

public TokenTest(){

super(“字符串”);

Container container=getContentPane();

container.setLayout(new FlowLayout());

promptLabel=new JLabel(“输入一个句子,然后按回车键”);

container.add(promptLabel);

inputField=new JTextField(20);

inputField.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent event){

StringTokenizer tokens=new StringTokenizer(event.getActionCommand());

int num=100;

int n=0;

num=tokens.countTokens();

String a[]=new String[num];

String b[]=new String[num];

while(tokens.hasMoreTokens())

{

a[n++]=tokens.nextToken();

}

n=0;

int m=0;

while(m

{

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

{

if(i==n)

b[i]=a[m];

else if(a[m].compareToIgnoreCase(b[i])<0)

{

for(int j=n;j>i;j--)

b[j]=b[j-1];

b[i]=a[m];

break;

}

}

m++;

n++;

}

outputArea.setText(“按Unicode字典顺序排序后输出:n”);

for(int i=0;i

outputArea.append(b[i]+“ ”);

outputArea.append(“nn单词个数:”+num);

String buffer=inputField.getText();

char charArray[]=new char[26];

int intArray[]=new int[26];

int addr[][]=new int[26][26];

n=0;

for(int i=0;i

{

for(int j=0;j<=n;j++)

{

if(j==n)

{

charArray[j]=buffer.charAt(i);

intArray[j]++;

addr[j][intArray[j]-1]=i;

}

else if(buffer.charAt(i)==)

{n--;break;}

else if(buffer.charAt(i)==charArray[j])

{

intArray[j]++;

addr[j][intArray[j]-1]=i;

n--;

break;

}

}

n++;

}

置:“);

});

}

outputArea.append(”nn统计每个字符出现的次数和位置n“);for(int i=0;i

outputArea.append(charArray[i]+” 次数:“+intArray[i]+” 位

for(int j=0;j

{

outputArea.append(addr[i][j]+“ ”);

}

outputArea.append(“n”);}

String s=“n”;

outputArea.append(“n单词正向输出:n”);

for(int i=0;i

outputArea.append(a[i]+“ ”);

outputArea.append(“nn单词反向输出:”);

for(int i=0;i

{

for(int count=a[i].length()-1;count>=0;count--)

{

s+=a[i].charAt(count);

}

s+=“ ”;

}

outputArea.append(s);}

container.add(inputField);outputArea=new JTextArea(20,40);outputArea.setEditable(false);container.add(new JScrollPane(outputArea));setSize(500,500);setVisible(true);

public static void main(String[] args){

TokenTest application=new TokenTest();

application.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

} }

五、心得体会:

上一篇:网络舆情与伦理道德下一篇:各种建设项目审批流程