java实验报告心得体会

2023-06-30

心得体会是我们接触事物产生的思想,也是我们明确自身发展目标的重要方式。如何结合自身的成长情况,写出勉励自身成长的心得体会呢?今天小编给大家找来了《java实验报告心得体会》,供大家参考借鉴,希望可以帮助到有需要的朋友。

第一篇:java实验报告心得体会

JAVA实验报告心得

北京联合大学 信息学院

“面向对象程序设计”课

程上机实验报告

题 目: java上机实验心得体会

姓名(学号):专 业: 计算机科学与技术

编 制 时 间: 2012年12月19日

版 本: 1.0.0 指 导 教 师:北京联合大学-信息学院编制

实验1 熟悉java运行环境

实验目的:熟悉jdk环境和操作,编写简单的java应用程序。

心得体会:在该实验中,我碰到的问题是jdk环境变量的设置。解决方法是通过查阅资料书和网上搜索相关解决方法及同学的有力帮助。

实验2 选择语句练习

实验目的:正确理解并能够熟练操作和使用java的if和switch语句。

心得体会:我个人感觉有了c的编程基础,if和switch这些简单的流程控制语句运用起来比较轻松,实现简单的逻辑运算也跟c非常相近,所以上手比较快。但是在这次程序中,首次涉及到了java程序的数据输入,与c区别很大。但经过老师的讲解和查阅相关资料,基本明白相关的使用规则和注意事项。在第二个小题中还涉及到了charat()方法,经查阅jdk文档,知道charat()方法返回一个位于提供给它的参数索引处的字符,如: str.chatat(0)检索str中的第一个字符,str.charat(str.length()-1)检索最后一个字符。我运用此方法解决了比较字符串间首字母异同的问题。

实验3 迭代练习

实验4 方法的实现练习

实验目的:声明、定义和调用方法,理解实参和形参的含义。

心得体会:在该实验中,我掌握如何写方法、调用方法,并掌握如何向方法中传递信息和从方法中返回信息。方法声明为非void(构造方法除外)则需要用return语句返回一个相应类型的返回值。

实验5 简单类型数组练习

实验目的:学习创建简单类型的数组,并能用循环语句处理数组。

心得体会:通过该实验,我学会了如何让建立简单类型的数组,并掌握了将数组作为方法的传入参数和返回值。在该实验中,遇到的问题主要是如何将一个连续的多位数在存入数组时,每个数组元素只对应改多位数的一个组成数。我解决的方法如下: for(i=0; i<6; i++){ n[i] = aa%10; //aa%10的结果是aa的末尾数,将多位数aa的末尾数赋给a[i] aa = (int)aa/10; //对aa/10的结果强制取整,去掉了aa的末尾数,以便对下一位数的存数。 } 实验6 类和对象的练习

实验目的:正确理解并能够熟练操作和使用java的类、对象和方法。 心得体会:我学会了如何建立类和对象,分别输出其中包含的成员值;以及分别引用各方法,实现不同的操作。在该程序中,我进一步了解了如何定义成员方法和成员属性以及相关方法的调用。特别是我掌握了利用构造方法对成员属性赋初始值。值得一提的是,我在相应的程序中运用了touppercase方法,经查看jdk文档知道该方法的作用是返回一个所有字母都被转化为大写字母字符串。

实验7 类的实现 实验目的:使用统一建模语言(uml)设计类,并实现类。

心得体会:通过该实验,我学会了使用public、private控制访问及其访问权限;体会了static关键字的作用。并对java程序中的类及面向对象的编程思想有了更进一步的了解。

实验8 继承的练习

实验目的:正确理解并能够熟练操作和使用java类的继承关系。

心得体会:理解了继承的含义,并使用uml符号设计了继承结构;掌握了用java实现继承关系;学会了区分方法重写和方法重载;并深入理解了abstract 和 final修饰符的作用。用final标记的变量只能赋值一次,标记的类不可被继承,方法不可被子类重写。用关键字extends表继承,例如子类a继承了父类b则可写作 class a extends b。在这些概念性知识点弄明白后,在解决实际问题时,碰到了输入年月日计算车龄的问题,我的解决办法如下: public int age(int year) { int age; int a1 = (int)(time/10000); //(int)time/10000是将8位数表示的生产年月日强制转换成四位数表示的年 } int a2 = (int)(year/10000); //将当前年月日转换为年 age = a2 - a1 +1;//计算车龄 return age; 实验9 抽象类、接口练习

实验目的:综合运用接口,类的知识。

心得体会:在该实验中,我掌握了接口定义,以及类实现接口。接口用interface关键字定义,在接口中,可以用abstract是修饰方法的,也可以去掉abstract,编译时会默认为抽象方法。类实现接口可用implements表示,例如class circle implements shape表示,circle类实现了接口shape。

实验10 多态练习

实验目的:理解并使用面向对象的特征:多态。

心得体会:在实验10中,我基本掌握了多态的句柄、多态方法的定义。在改程序中,我遇到了要求随机产生一个图形的难题,通过网上查阅资料,利用系统函数math.random()经一系列的运算处理来随机产生一个图形解决了该难题,具体的程序如下: public static void main(string[] args) { } circle cir = new circle(9); square squ = new square(4); shape shape; int r; r = (int)(math.random()*2);//用math.random()方法产生0.00到if(r == 0) shape = cir; else shape = squ; shape.testshape(shape); //同一条语句产生不同的执行结果,多态1.00的随机数,乘2取整后非0即1 性。

实验11 多线程处理

实验目的:理解线程的基本概念。

心得体会:通过该实验,基本能够理解线程的运行了。学会调用thread类中的系统函数以及掌握这些函数的作用是难点, setname()是设置线程名字,start()是开辟一条新线程,thread.currentthread().getname()是获得正在执行的线程的名字,thread.currentthread().getid()是thread类中返回该线程的标识符的方法,thread.currentthread().getpriority()是thread类中返回线程的优先级的方法。

实验12 i/o及文件处理

实验目的:掌握并使用java中的i/o和文件。

心得体会:对于该实验,由于比较难,只是基本掌握了文件读写的方法和规则,还有待17周java实训时继续攻坚克难。

结语:在这一系列的实验中,我基本掌握了java的编程规则、知识要点和一些小技巧,特别是对面向对象的编程思想和风格有了进一步的认识和体会。同时,因正确的编出程序而带来的成就感让我对编程更加感兴趣。对于在这些实验过程中,请教老师、同学互助、查阅资料等基本的学习方式,使我更加领悟到集体和团队的力量,也树立了敢于攻坚的信心。篇二:java实训心得 java实训心得

在上学期的最后一周和本学期的第一周,我和同组的学员在学校机房进行了java暑期实训,现在已经结束了。

回首上学期的java学习,重点还是在学习概念等一些常识性的东西,application应用程序和applet小程序,它的开发工具、数据类型、变量、接口、输入输出流等。学会分析异常,抛出异常,后期主要是小程序运用,gui界面设计和事件。我觉得这两种程序结构有很大的不同,不管是体系结构还是运行方式,都有很大的区别,而我主要偏向于小程序的学习。因为我感觉它实用性比较大,可以做出很多不错的游戏、运用程序等,而且它比较灵活。当然学知识不能仅凭自己的爱好和一时兴趣,要一步一个脚印、认认真真、踏踏实实,理论与实践相结合。在掌握课本实例和内容之后,要有一定的扩展阅读和课外学习,充分全面的了解java的应用和扩展运用。在我所学的语言当中,我自认为java是一门比较强大的面向对象编程语言。不仅仅因为它的跨平台性,更多的是因为它的灵活多变和实用性,而且它比较的经典和强悍。

这次实训,面对老师布置的任务,一开始有些慌张和无措。不过,事后我首先想到这和课本上的某些知识具有结合点,回忆和分析了老师教过的算法和具体实施方法,并综合考虑了其他的方面。在编写时,一个小小的符号、一个常量变量的设定,这都无不考量着我的细心和严谨。所以学习java,不仅对我们以后学习其他语言有很大

的好处,而且也让我们知道了和理解了作为一个编程人员首先应具有的良好心理素质,那就是冷静思考和专心致志。

在此次实训中,我意识到一个好的编程人员要善于沟通和团结拼搏。实训结束后,我觉得要学好一门计算机语言必须牢记以下几点: 1. 态度第一 2.兴趣是关键 3.敢于挑战 4.不懈追求

实训结束了,大家都有一种解脱的感觉。当然我想自己更多的是兴奋和一点点的成就感。现在我觉得,学习java要不断的复习和运用,做到举一反三,将所学知识充分融入到平时的学习生活中去,从而为以后的工作打好坚实的基础。感谢学校和老师能够为我们提供这次机会,让我们更好的掌握和了解java这门语言。

通过这次实训,我真的从中学到了很多东西。我对这个介于人类与非人类之间的计算机编程语言有了较上学期更进一步的认识。其间开心过、郁闷过、无奈过、彷徨过„„随着实训的圆满成功与实验报告的顺利完成,有点微微的自豪感使人难忘。至于我做的程序,还不是很完善,所以我将一直去完善它,不断地学习下去。伴随着学习的深入,我发现高深的东西还有很多很多,等待着我自己去发掘。对于java语言,我会更加努力。 2011/9/10篇三:java实验报告 java程序设计实验报告

题目: 研究java中的for循环

院(系)

专 业 信息与计算科学

班 级 101001班

姓 名 学 号 101001113 导 师 2012年 11月 26日 for循环程序设计

【实验目的】通过对for循环学习,了解java中的循环语句的应用和它们的用法。

【实验原理】for(表达式1;表达式2;表达式3){ //循环体 } 表达式1一般是一个赋值语句,它用来给循环控制变量 赋初值;表达式2是一个布尔类型的表达式,它决定什么时候退出循环;表达式3一般用来修改循环变量,控制变量每循环一次后按什么方式变化。这三个部分之间用“;”隔开。

【实验要求】windows操作系统(32位),安装jdk1.6,eclipse运行环境

【实验步骤】

(2)按给定的题目写出符合语法分析方法,按给定的题目给出语法分析方法的思想及分析表设计。

(3)按给定的题目给出中间代码序列的结构设计。对于for循环的具体操作,见程序test1(图1)

图1 for循环语句

(4)探究if与for循环嵌套,及其其他循环语句的使用,与for循环使用的差别,见程序(图2图3)

图2 if与for嵌套

图3 switch循环

【问题与解决方法】(1)如图1和2,这个两个程序中,主要遇到的问题在for后面的(表达式1;表达式2;表达式3)里面表示的书写,以及怎样把if嵌套在for语句中。(2)如图3,这个程序中,将其它循环使用的方法搞混。

解决方法:通过查阅资料,熟记了几个循环的使用方法,及其注意事项,将错误的一一修改。

【实验总结】通过这个实验,我已熟悉掌握了for等循环语句的用法,for它既可以单独用,也可以嵌套在for等循环语句中,增加了程序可读行,方便编程,为以后的学习java起到了一定铺垫作用,不过还需要多练习,才能熟能生巧,为以后java编程起到一定作用。 参考文献:

1.郎波.java语言程序设计.(第二版).-北京:清华大学出版社,2010.9篇四:最新java实训报告总结心得

一、实训项目

简易记事本

二、实训目的和要求

本次实训是对前面学过的所有面向对象的编程思想以及java web编程方法的一个总结、回顾和实践,因此,开始设计前学生一定要先回顾以前所学的内容,明确本次作业设计所要用到的技术点并到网上搜索以及查阅相关的书籍来搜集资料。通过编写采用jsp+servlet+javabean技术框架的应用系统综合实例,以掌握java web开发技术。

具体要求有以下几点:

1. 问题的描述与程序将要实现的具体功能。 2. 程序功能实现的具体设计思路或框架,并检查流程设计。 3. 代码实现。

4. 设计小结。

三、实训项目的开发环境和所使用的技术

基于j2se基础,利用myeclipse 8.5以上版本的集成开发环境完成实训项目,界面友好,代码的可维护性好,有必要的注释和相应的文档。

四、实训地点、日程、分组情况:

实训地点:4栋303机房

日 程:

第一阶段:1.班级分组,选定课题,查阅相关资料 半天 2.划分模块、小组成员分工 半天 3.利用case工具进行系统设计和分析,并编制源程序 5天

第二阶段:上机调试,修改、调试、完善系统 2天

第三阶段:撰写、上交课程设计报告,上交课程设计作品源程序(每人1份)2天

五、程序分析

功能模块说明

弹出菜单

for(int f=0;f<4;f++) 改变字号:

public void zihao() { font f=new font(,font.plain,20); jta.setfont(f);} 设置字型

public void ziti() { font f=new font(宋体,font.plain,15); 改变字体颜色

public void font() { jcolorchooser jcolor=new jcolorchooser(); color fcolor=jta.getforeground(); jta.setforeground( jcolor.showdialog(jta,选择字体颜色,fcolor)); } 自动换行

public void action(){ jta.setlinewrap(true);//激活自动换行功能

实现接口

public void actionperformed(actionevent e ) { 创建保存文件对话框

public void savefile() { 创建打开文件对话框

private void openfile() { jfilechooser filechoose=new jfilechooser(); int result=filechoose.showopendialog(null); if(result==jfilechooser.approve_option)

} { try{

file file=filechoose.getselectedfile(); filereader fr=new filereader(file); int len=(int)file.length(); char[] context=new char[len]; fr.read(context,0,len); fr.close(); jta.settext(new string(context)); jfilechooser filechoose=new jfilechooser(); int result=filechoose.showsavedialog(null); if(result==jfilechooser.approve_option)

} { try{

file file=filechoose.getselectedfile(); filewriter fw=new filewriter(file); fw.write(jta.gettext()); fw.close(); }catch(exception e){system.out.println(保存文件失败!);} }else return; }catch(exception e){system.out.println(打开文件失败!);} }else return;

六、程序设计及实现

1、实现弹出菜单(jpopupmenu)

2、设置字型,字体大小,字体颜色

3、实现自动换行

七、实训总结

通过3天的实训,虽然实训的时间不长,但是总体上收获是很大的,我们的java课程学到的只是java和皮毛,一开始我还没有信心完成。我仔细看了书上的代码之后。对计事本有了一个大体的了解,在初训的实候知道自己应该做一个什么样的计事本了,在实训的过程中也遇到了不少困难,通过查api文档和看书,解决了问题,在写到字符的查找的替换时后,用到了上课时学到的知识,对字体的风格的保存里面的颜色分离和还原方法,是通过查api文档获得的,现在我所写的计事本只实现在一些基本功能。简单的复制粘贴,字体风格的设置,还有就是查找和替换功能以及一些字体风格的保存.对文件的操作基本都用到了。

在实现记事本的功能过程中,也不是很顺利,基本的文件读写和保存文档的复制、粘贴、删除等功能还比较容易实现,但如何改变字体、字体颜色和背景颜色,就比较麻烦了,要实现字体颜色和背景颜色,首先要调用系统的调色板,再进行设置。但如何调用系统调色板?我是通过查阅帮助文档来找到其调用方法的。像自动换行、设置字体等都是通过方法来调用,给相关事件加上监听,在进行响应事件。整个程序中方法才是最关键的,也是最困难的。所以像查找、替换、转到几个功能我都不知道用什么方法,也由于时间有限,没有完成其功能。 总体的感觉是对java有了一个全新的认识,现在感觉用java做小的图形用户程序有些缺陷,但是在其的应用方面。尤其是有网络方面的应用,在整个实训我也尝试过做一个小的画图软件。但是由于时间关系还有一个是自身的知识的欠缺,最终这个事情被搁浅下来了。最后还是进行计事本的编写。由于在做画图软件时花了不了时间,所以现在的计事本的功能不是很全,如果有更多的时间,我会把这个记事体再完善一下,再把画图软件也做出来。实训的时间不长,但是我会在课外把它们的功能完善。然后再学习一下java和网络的编程,体验java的前沿技术。

在学习的过程中也体会到,遇到问题也要请教。不然的话自己一个人去做的话会花很多的时间,我在做这个记事本的时间,其中也问到过许多问题,通过同学的帮助下解决了,提高了程序的开发进程。其他的同学有问题的话我也是给他们尽量解决。我认为学习知识的过程当中就应该是相互学习相互进步的。

虽然学习java的路还很找,但我会继续走下去。

第二篇:JAVA实验报告 心得体会——密码攻击、遗传算法

JAVA实验报告

JAVA实验报告

一、 JAVA编程模拟密码攻击MimaGongji 1. 模拟密码攻击MimaGongji功能需求分析

编程模拟密码攻击的过程,实现下述功能:

(1)键盘输入12位密码,包括字母和数字;

(2)采用穷举法进行攻击,直到破解密码为止;

(3)屏幕输出试验的次数,并输出获得的密码。

2. MimaGongji基本设计思路

1) 基于对MimaGongji功能需求的分析,MimaGongji这个类作为主类,实现主要功能,包括密码的流输入,密码的穷举法破解和破解后密码的输出。 2) Java.io.*这个包主要实现数据的流输入和流输出。

3) public static void main(String[] args)这个方法是主要的方法,实现密码的键盘输入,采用穷举法进行攻击,并屏幕输出试验的次数和获得的密码。 4) .length()这个方法主要是计算一个字符串的长度

3. 实验步骤

1) Java程序代码(*.java)和详细的行注释 //文件名称为“MimaGongji.java” import java.io.*; //加入java的流输入和流输出包 class MimaGongji //定义主类 {

public static void main(String[] args)//引入主要方法 {

String s=""; try{ BufferedReader

mima=

new

BufferedReader(new InputStreamReader(System.in)); //定义密码的流输入

- 1

JAVA实验报告

//统计试验的次数

}

System.out.print(po);

} //输出破解之后的密码

} System.out.println();//换行 System.out.println("试验次数:"+g); //输出提示“试验的次数”

} }//类申明的结束

2)程序的运行(包括运行的过程、界面和结果图)

首先编写如上所示的源程序,保存文件名称为“MimaGongji.java”,然后编译源程序,编译完成后,生成一个字节码文件MimaGongji.class,执行这个程序,得到如下图所示的窗口:

- 345

JAVA实验报告

getContentPane().add(pb,BorderLayout.SOUTH);//把面板添加到窗口上

t1=new JTextField(50); //创建文本框

t2=new JTextField(50); //创建文本框

t3=new JTextField(50); //创建文本框 t4=new JTextField(5); //创建文本框 t5=new JTextField(5); //创建文本框 t6=new JTextField(5); //创建文本框

t2.setEditable(false); //定义文本框的不可书写

t4.setEditable(false); //定义文本框的不可书写

t5.setEditable(false); //定义文本框的不可书写

t6.setEditable(false); //定义文本框的不可书写

p.add(l3,BorderLayout.NORTH); //把标签添加到面板上 p.add(t3,BorderLayout.CENTER); //把文本框添加到面板上 p.add(l1,BorderLayout.NORTH); //把标签添加到面板上 p.add(t1,BorderLayout.CENTER); //把文本框添加到面板上 p.add(l2,BorderLayout.NORTH); //把标签添加到面板上 p.add(t2,BorderLayout.CENTER); //把文本框添加到面板上 p.add(l4,BorderLayout.NORTH); //把标签添加到面板上 p.add(t4,BorderLayout.CENTER); //把文本框添加到面板上 p.add(l5,BorderLayout.NORTH); //把标签添加到面板上 p.add(t5,BorderLayout.CENTER); //把文本框添加到面板上 p.add(l6,BorderLayout.NORTH); //把标签添加到面板上 p.add(t6,BorderLayout.CENTER); //把文本框添加到面板上 b0=new JButton("生成父母基因"); //创建父母基因生成按钮 pb.add(b0); //添加到面板上

b1=new JButton("100次交叉、变异"); //创建交叉、变异按钮 pb.add(b1); //添加到面板上 b2=new JButton("200次交叉、变异"); pb.add(b2); b3=new JButton("500次交叉、变异");

- 7

JAVA实验报告

Object s=e.getSource(); if(s==b0) //监听器实现功能 {

t3.setText(s1); //t3文本框输出s1

} t1.setText(s2); t4.setText(String.valueOf(H1)); t5.setText(String.valueOf(H2));

if(s==b1)time(100); //监听器实现功能

} if(s==b2)time(200); if(s==b3)time(500);

public void time(int r) //定义方法,实现函数的调用

{

int x,y,z,d1=0,d2=0,w,k,H3=0;

c=new int[23]; //定义一个数组

for(int j=1;j<=r;j++) //基因的交叉 {

x=1+(int)(Math.random()*23); //生成一个随机父亲基因位

y=1+(int)(Math.random()*23); //生成一个随机母亲基因位

z=f[x-1];f[x-1]=m[y-1];m[y-1]=z; //两个基因位的基因调换 }

for(int j=0;j<23;j++) //分别计算父母基因总和

{

d1+=f[j];

- 9

JAVA实验报告

2)程序的运行(包括运行的过程、界面和结果图)

首先编写如上所示的源程序,保存文件名称为“YichuanSuanfa.java”,然后编译源程序,编译完成后,生成一个字节码文件YichuanSuanfa.class,执行这个程序,得到如下图所示的窗口:

随机生成父母基因,得到如下图示:

- 11

JAVA实验报告

500次交叉、变异之后,得到如下图示:

4.实验心得

.java文件名要与主类名相同,JAVA对字

1.编写调试程序要注意程序编写的规则,母的大小写特别敏感,输入时要特捏注意大小写字母的定义,千万别犯主类名与.java文件名不同的错误。

2.在做图形界面时,注意设置图形界面的大小以及文本框、标签和按钮的位置。创建文本框的时候,可以设置文本框的可写性,以及文本框的颜色等等。在随机生成父母基因的时候,注意生成的随机数是什么范围,我们实验要求的范围是什么。监听器的响应,在文本框中输出的是一个基因整体还是一个数,都需要注意,因为这两种输出的方法不同。

3.为了简化程序,我们应该学会调用函数的方法。一开始做程序的时候,我没有注意到这一点,导致我的程序代码非常繁杂,而且容易出错。在同学的建议下,我把100次、200次、500次交叉、变异的实现使用调用函数的方法,这样我的程序代码变得简明多了。因此,在做程序的时候应该考虑到程序代码的简明扼要,不但美观,还能保证

JAVA实验报告

正确性的要求。

4.特别要注意的是一个变量的使用范围,在同一个方法中,同一变量是可以通用的,即不用重复定义,可以被系统认识,在不同的方法之间,同一变量是不能被对方所认识的,这就需要我们在定义变量时,注意变量的使用范围,如果需要在不同的方法中被引用,那就需要我们在所有的方法之外,同一类中进行定义。

第三篇:JAVA实验报告

河北北方学院信息科学与工程学院

《Java程序设计》

实 验 报 告

实验学期 2014 至 2015 学年 第 2 学期

学生所在系部 信息科学与工程学院 年级 2012 专业班级 电子三班 学生姓名 冯洋 学号 201242220 任课教师 实验成绩

实验七 GUI标准组件及事件处理

一、课程设计目的: 《面向对象程序设计》是一门实践性很强的计算机专业基础课程,课程设计是学习完该课程后进行的一次较全面的综合练习。其目的在于通过实践加深学生对面向对象程序设计的理论、方法和基础知识的理解,掌握使用Java语言进行面向对象设计的基本方法,提高运用面向对象知识分析实际问题、解决实际问题的能力,提高学生的应用能力。

二、实验要求:

设计一个简单的文本编辑器,具有如下基本功能: 1)所见即所得的文本输入;

2)能方便地选中文本、复制、删除和插入文本; 3)具有一般编辑器所具有的查找和替换功能;

4)简单的排版,如设置字体和字号等。

三、课程设计说明:

1、需求分析:简单文本编辑器提供给用户基本的纯文本编辑功能,能够将用户录入的文本存储到本地磁盘中。能够读取磁盘中现有的纯文本文件,以及方便用户进行需要的编辑功能。文件操作能够实现新建、保存、打开文档等,编辑操作能过实现文本的剪贴、复制、粘贴等,格式操作能过实现字体设置、背景等,帮助操作能够实现关于主题的查看等功能

2、概要设计:

(一)其基本功能包括:

① 基本的文本操作功能。包括新建,保存,打开,保存。

② 基本的编辑功能。包括复制,剪贴,粘贴。 ③ 基本的格式功能,字体。 ④ 简单的帮助,关于主题。

(二)主要的组件包括:

① 基本的Frame框架; ② 菜单;

③ 打开文件对话框; ④ 保存文件对话框; ⑤ 颜色对话框; ⑥ 简单的帮助框架。

3、程序说明:

整个记事本分成:Jframe程序主体框架,Jmenu菜单栏、JtextArea文本输入区、PopupMenu右键菜单、JscrollPane滚动条、FonDialog字体类等。

本程序中首先定义一个Java Yang类继承JFrame作为最底层容器。 要想记事本完成需求分析中相应的功能,还必须添加事件监听器。事件监听器不仅要添加在菜单栏和内容输入区,还需加在容器中。本程序中ActListener实现了ActionListener接口,用来监听并处理所有菜单项和内容输入区为事件源的事件。 另外,还用来WindowListener来监听处理容器关闭触发的事件,WindowListener继承了WindowsAdapter类并覆盖了WindowsClosing方法。

四、程序调试:

1、调试分析:

(1)关于打开、保存和退出我运用了文件对话框, openFileDialog、saveFileDialog和System.exit()以及文件输入输出流来实现,新建功能我选用了 textArea.setText()方法. (2)对于剪贴,粘贴,复制的实现则用 复制

String text = textArea.getSelectedText(); StringSelection selection= new StringSelection(text); clipboard.setContents(selection,null); 粘贴

Transferable contents = clipboard.getContents(this); if(contents==null) return; String text; text=""; try { text = (String)contents.getTransferData(DataFlavor.stringFlavor); } catch(Exception ex) { } textArea.replaceRange(text,textArea.getSelectionStart(),textArea.getSelectionEnd()); (3)至于字体功能的实现,则是新建了一个字体类,在这个类中设置了字形,字体以及大小并且有字体样式可预览用户当前的设置。FlowLayout()设置布局,setSize()设置大小add()添加需要用的原件。

添加监听器获取选择用户的字号大小

public void itemStateChanged(ItemEvent event) { size = (new Integer((String) event.getItem()).intValue()); setCustomFont(new Font(name, type, size));} 设置字体

private void setCustomFont(Font customFont) { this.customFont = customFont; area.setFont(customFont); area.revalidate();} 获取字体

public Font getCustomFont() { return (this.customFont);}

附录:源代码

//记事本主体类 import java.awt.event.*; import java.awt.*; import java.io.*; import java.awt.datatransfer.*; import javax.swing.*;

import java.awt.print.PrinterException;

public class MiniNote extends JFrame implements ActionListener {

JMenuBar menuBar = new JMenuBar(); JMenu file = new JMenu("文件(F)"), //菜单 edit = new JMenu("编辑(E)"), format = new JMenu("格式(O)"), view = new JMenu("查看(V)"), help = new JMenu("帮助(H)");

JMenuItem[] menuItem ={ //菜单下拉项 new JMenuItem("新建(N)"), new JMenuItem("打开(O)"), new JMenuItem("保存(S)"), new JMenuItem("打印(P)"), new JMenuItem("全选(A)"), new JMenuItem("复制(C)"), new JMenuItem("剪切(T)"), new JMenuItem("粘贴(P)"), new JMenuItem("自动换行(W)"), new JMenuItem("字体(F)"), new JMenuItem("状态栏(S)"), new JMenuItem("帮助主题(H)"), new JMenuItem("关于记事本(A)"), new JMenuItem("页面设置(U)"), new JMenuItem("退出(X)"), new JMenuItem("查找(F)"), new JMenuItem("查找下一个(N)"), new JMenuItem("替换(R)") };

JPopupMenu popupMenu = new JPopupMenu(); ;//右键菜单 JMenuItem [] menuItem1 ={ new JMenuItem("撤销(Z)"), new JMenuItem("剪切(X)"), new JMenuItem("复制(C)"), new JMenuItem("粘贴(V)"), new JMenuItem("删除(D)"), new JMenuItem("全选(A)"), };

private JTextArea textArea ; //文本区域 private JScrollPane js ; //滚动条 private JPanel jp ; private FileDialog openFileDialog ; //打开保存对话框 private FileDialog saveFileDialog ; private Toolkit toolKit; //获取默认工具包。 private Clipboard clipboard; //获取系统剪切板 private String fileName; //设置默认的文件名

/** * MiniEdit 方法定义 * * 实现记事本初始化 * **/ public MiniNote() {

fileName = "无标题"; toolKit = Toolkit.getDefaultToolkit(); clipboard = toolKit.getSystemClipboard(); textArea =new JTextArea(); js = new JScrollPane(textArea); jp = new JPanel(); openFileDialog = new FileDialog(this,"打开",FileDialog.LOAD); saveFileDialog = new FileDialog(this,"另存为",FileDialog.SAVE);

js.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS); jp.setLayout(new GridLayout(1,1)); jp.add(js); textArea.setComponentPopupMenu(popupMenu); //文本区域添加右键 textArea.add(popupMenu); add(jp); setTitle("迷你记事本"); setFont(new Font("Times New Roman",Font.PLAIN,15)); setBackground(Color.white); setSize(800,600); setJMenuBar(menuBar); menuBar.add(file); menuBar.add(edit); menuBar.add(format); menuBar.add(view); menuBar.add(help); for(int i=0;i<4;i++) { file.add(menuItem[i]); edit.add(menuItem[i+4]); } for(int i=0;i<3;++i) { edit.add(menuItem[i+15]); } for(int i=0;i<2;++i) { format.add(menuItem[i+8]); help.add(menuItem[i+11]); } view.add(menuItem[10]); file.add(menuItem[14]); for(int i=0; i<6;++i) { popupMenu.add(menuItem1[i]); }

//窗口监听

addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ e.getWindow().dispose(); System.exit(0); } }); //注册各个菜单项的事件监听器

for(int i=0;i

Object eventSource = e.getSource(); if(eventSource == menuItem[0]) //新建动作 { textArea.setText(""); } else if(eventSource == menuItem[1])//打开动作 { openFileDialog.setVisible(true); fileName = openFileDialog.getDirectory()+openFileDialog.getFile(); if(fileName != null) { openFile(fileName); } } else if(eventSource ==menuItem[2])//保存动作 { saveFileDialog.setVisible(true); fileName = saveFileDialog.getDirectory()+saveFileDialog.getFile(); if(fileName !=null) { writeFile(fileName); } } else if(eventSource==menuItem[14])//退出动作 { System.exit(0); } else if(eventSource == menuItem[4]||eventSource == menuItem1[5]) //全选动作 { textArea.selectAll(); } else if(eventSource == menuItem[5]||eventSource == menuItem1[2]) //复制动作 { String text = textArea.getSelectedText(); StringSelection selection= new StringSelection(text); clipboard.setContents(selection,null); } else if(eventSource == menuItem[6]||eventSource == menuItem1[1])//剪切动作 { String text = textArea.getSelectedText(); StringSelection selection = new StringSelection(text); clipboard.setContents(selection,null); textArea.replaceRange("", textArea.getSelectionStart(), textArea.getSelectionEnd()); }

else if(eventSource == menuItem[7]||eventSource == menuItem1[3])//粘贴动作 { Transferable contents = clipboard.getContents(this); if(contents==null) return; String text; text=""; try { text = (String)contents.getTransferData(DataFlavor.stringFlavor); } catch(Exception ex) {

} textArea.replaceRange(text, textArea.getSelectionStart(),textArea.getSelectionEnd()); } else if(eventSource == menuItem[8]) //自动换行 { if (textArea.getLineWrap()) textArea.setLineWrap(false); else textArea.setLineWrap(true);

} else if(eventSource == menuItem[9]) //字体 {//实例化字体类

FontDialog fontdialog = new FontDialog(new JFrame(),"字体",true); textArea.setFont(fontdialog.showFontDialog()); //设置字体 }

else if(eventSource == menuItem[11]) //帮助 { try { String filePath = "C:/WINDOWS/Help/notepad.hlp"; Runtime.getRuntime().exec("cmd.exe /c "+filePath); } catch(Exception ee) { JOptionPane.showMessageDialog(this,"打开系统的记事本帮助文件出错!","错误信息",JOptionPane.INFORMATION_MESSAGE); } } else if(eventSource == menuItem[12]) //关于记事本 { String help = "记事本 版本1.0 操作系统:WIN 8 编译器:eclipse 版权" + "所有: ESTON YANG 最终解释权归本人所有" + "" + " Build By 冯洋" + " 课程设计:JAVA"; JOptionPane.showConfirmDialog(null, help, "关于记事本", JOptionPane.DEFAULT_OPTION, JOptionPane.INFORMATION_MESSAGE);

} else if(eventSource == menuItem[15]||eventSource == menuItem[16]) //查找下一个 { search();

} else if(eventSource == menuItem[17]) //替换 { substitude(); } else if(eventSource == menuItem[3]) //打印 { try { textArea.print(); } catch (PrinterException e1) { e1.printStackTrace(); }

} } /** * openFile方法 * * 从TXT读进数据到记事本 * **/ public void openFile(String fileName){

try {

File file = new File(fileName); FileReader readIn = new FileReader(file); int size = (int)file.length(); int charsRead = 0; char[] content = new char[size]; while(readIn.ready()) { charsRead += readIn.read(content,charsRead,size-charsRead); } readIn.close(); textArea.setText(new String(content,0,charsRead)); } catch(Exception e) { System.out.println("Error opening file!"); } } /** * saveFile方法 * * 从记事本写进数据到TXT * **/ public void writeFile(String fileName){ try { File file = new File(fileName); FileWriter write = new FileWriter(file); write.write(textArea.getText()); write.close(); } catch(Exception e) { System.out.println("Error closing file!"); } } /** * substitude方法 * * 实现替换功能 * */ public void substitude() {

final JDialog findDialog = new JDialog(this, "查找与替换", true); Container con = findDialog.getContentPane(); con.setLayout(new FlowLayout(FlowLayout.LEFT)); JLabel searchContentLabel = new JLabel("查找内容(N) :"); JLabel replaceContentLabel = new JLabel("替换为(P) :"); final JTextField findText = new JTextField(30); final JTextField replaceText = new JTextField(30); final JCheckBox matchcase = new JCheckBox("区分大小写(C)"); ButtonGroup bGroup = new ButtonGroup(); final JRadioButton up = new JRadioButton("向上(U)"); final JRadioButton down = new JRadioButton("向下(D)"); down.setSelected(true); //默认向下搜索

bGroup.add(up); bGroup.add(down);

JButton searchNext = new JButton("查找下一个(F)"); JButton replace = new JButton("替换(R)"); final JButton replaceAll = new JButton("全部替换(A)");

//"替换"按钮的事件处理

replace.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (replaceText.getText().length() == 0 && textArea.getSelectedText() != null)

textArea.replaceSelection(""); if (replaceText.getText().length() > 0 && textArea.getSelectedText() != null)

textArea.replaceSelection(replaceText.getText()); } });

//"替换全部"按钮的事件处理

replaceAll.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { textArea.setCaretPosition(0); //将光标放到编辑区开头 int a = 0, b = 0, replaceCount = 0; if (findText.getText().length() == 0) { JOptionPane.showMessageDialog(findDialog, "请填写查找内容!", "提示",JOptionPane.WARNING_MESSAGE); findText.requestFocus(true); return; } while (a > -1) { int FindStartPos = textArea.getCaretPosition();//获取光标位置

String str1, str2, str3, str4, strA, strB; str1 = textArea.getText(); str2 = str1.toLowerCase(); str3 = findText.getText(); str4 = str3.toLowerCase(); if (matchcase.isSelected()) //大小写区分 { strA = str1; strB = str3; } else { strA = str2; strB = str4; }

if (up.isSelected()) //向上搜索

{ if (textArea.getSelectedText() == null) { a = strA.lastIndexOf(strB, FindStartPos1); } } else //向下搜索

{ if (textArea.getSelectedText() == null) { a = strA.indexOf(strB, FindStartPos);

} else { a = strA.indexOf(strB, FindStartPos- findText.getText().length() + 1); } }

if (a > -1) { if (up.isSelected()) {

textArea.setCaretPosition(a); b = findText.getText().length(); textArea.select(a, a + b); } else if (down.isSelected()) {

textArea.setCaretPosition(a); b = findText.getText().length(); textArea.select(a, a + b); } } else { if (replaceCount == 0) { JOptionPane.showMessageDialog(findDialog,"找不到您查找的内容!", "记事本",JOptionPane.INFORMATION_MESSAGE); } else { JOptionPane.showMessageDialog(findDialog, "成功替换"+ replaceCount + "个匹配内容!", "替换成功",JOptionPane.INFORMATION_MESSAGE); } } if (replaceText.getText().length() == 0&& textArea.getSelectedText() != null) //用空字符代替选定内容

{

textArea.replaceSelection(""); replaceCount++; } if (replaceText.getText().length() > 0&& textArea.getSelectedText() != null) //用指定字符代替选定内容 {

textArea.replaceSelection(replaceText.getText()); replaceCount++; } }//end while } });

//"查找下一个"按钮事件处理

searchNext.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) { int a = 0, b = 0; int FindStartPos = textArea.getCaretPosition(); String str1, str2, str3, str4, strA, strB; str1 = textArea.getText(); str2 = str1.toLowerCase(); str3 = findText.getText(); str4 = str3.toLowerCase();

//"区分大小写"的CheckBox被选中

if (matchcase.isSelected()) //区分大小写

{ strA = str1; strB = str3; } else //不区分大小写 { strA = str2; strB = str4; } if (up.isSelected()) //向上搜索

{ if (textArea.getSelectedText() == null) {

a = strA.lastIndexOf(strB, FindStartPosfindText.getText().length()findText.getText().length() + 1); } } if (a > -1) { if (up.isSelected()) {

textArea.setCaretPosition(a); b = findText.getText().length(); textArea.select(a, a + b); } else if (down.isSelected()) {

textArea.setCaretPosition(a); b = findText.getText().length(); textArea.select(a, a + b); } } else { JOptionPane.showMessageDialog(null, "找不到您查找的内容!", "记事本", JOptionPane.INFORMATION_MESSAGE); } } });

//"取消"按钮及事件处理

JButton cancel = new JButton("取消"); cancel.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { findDialog.dispose(); } }); //创建"查找与替换"对话框的界面

JPanel bottomPanel = new JPanel(); JPanel centerPanel = new JPanel(); JPanel topPanel = new JPanel(); JPanel direction = new JPanel();

direction.setBorder(BorderFactory.createTitledBorder("方向")); direction.add(up); direction.add(down);

JPanel replacePanel = new JPanel(); replacePanel.setLayout(new GridLayout(1, 2)); replacePanel.add(searchNext); replacePanel.add(replace); replacePanel.add(replaceAll); replacePanel.add(cancel);

topPanel.add(searchContentLabel); topPanel.add(findText);

centerPanel.add(replaceContentLabel); centerPanel.add(replaceText); centerPanel.add(replacePanel);

bottomPanel.add(matchcase); bottomPanel.add(direction);

con.add(replacePanel); con.add(topPanel); con.add(centerPanel); con.add(bottomPanel);

//设置"查找与替换"对话框的大小、可更改大小(否)、位置和可见性

findDialog.setSize(550, 240); findDialog.setResizable(true); findDialog.setLocation(230, 280); findDialog.setVisible(true); }//方法mySearch()结束 /** * search方法 * * 实现查找功能 * */ public void search() {

final JDialog findDialog = new JDialog(this, "查找下一个", true); Container con = findDialog.getContentPane(); con.setLayout(new FlowLayout(FlowLayout.LEFT)); JLabel searchContentLabel = new JLabel(" 查找内容(N) :");

final JTextField findText = new JTextField(17); final JCheckBox matchcase = new JCheckBox("区分大小写(C)"); ButtonGroup bGroup = new ButtonGroup(); final JRadioButton up = new JRadioButton("向上(U)"); final JRadioButton down = new JRadioButton("向下(D)"); down.setSelected(true); //默认向下搜索

bGroup.add(up); bGroup.add(down);

JButton searchNext = new JButton("查找下一个(F)");

//"查找下一个"按钮事件处理

searchNext.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) { int a = 0, b = 0; int FindStartPos = textArea.getCaretPosition(); String str1, str2, str3, str4, strA, strB; str1 = textArea.getText(); str2 = str1.toLowerCase(); str3 = findText.getText(); str4 = str3.toLowerCase();

//"区分大小写"的CheckBox被选中

if (matchcase.isSelected()) //不区分大小写

{ strA = str1; strB = str3; } else //区分大小写 { strA = str2; strB = str4; } if (up.isSelected()) //向上搜索

{ if (textArea.getSelectedText() == null) {

a = strA.lastIndexOf(strB, FindStartPosfindText.getText().length()findText.getText().length() + 1); } } if (a > -1) { if (up.isSelected()) {

textArea.setCaretPosition(a); b = findText.getText().length(); textArea.select(a, a + b); } else if (down.isSelected()) {

textArea.setCaretPosition(a); b = findText.getText().length(); textArea.select(a, a + b); } } else { JOptionPane.showMessageDialog(null, "找不到您查找的内容!", "记事本", JOptionPane.INFORMATION_MESSAGE); } } });

//"取消"按钮及事件处理

JButton cancel = new JButton(" 取消 "); cancel.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { findDialog.dispose(); } }); //创建"替换"对话框的界面

JPanel bottomPanel = new JPanel(); JPanel centerPanel = new JPanel(); JPanel topPanel = new JPanel(); JPanel direction = new JPanel(); direction.setBorder(BorderFactory.createTitledBorder("方向")); direction.add(up); direction.add(down); topPanel.add(searchContentLabel); topPanel.add(findText); topPanel.add(searchNext); bottomPanel.add(matchcase); bottomPanel.add(direction); bottomPanel.add(cancel); con.add(topPanel); con.add(centerPanel); con.add(bottomPanel); //设置"替换"对话框的大小、可更改大小(否)、位置和可见性

findDialog.setSize(425, 200); findDialog.setResizable(true); findDialog.setLocation(230, 280); findDialog.setVisible(true); }

/** * 主函数 * * * **/ public static void main(String[] args) {

MiniNote note = new MiniNote(); note.setVisible(true); }

} //字体类

import java.awt.Font; import java.awt.GraphicsEnvironment; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import java.awt.*; import javax.swing.*; import java.awt.event.*; import javax.swing.border.*; import java.util.*; public class FontDialog {

private Dialog fontdialog; private JButton okButton, cancelButton; private int width = 480; private int height = 250; private String name = "Serif"; private int type = 0; private int size = 12; private Font customFont = new Font("宋体", Font.ITALIC, 12); private boolean okpressed = false; private boolean cancelpressed = false; private JLabel lbl1 = new JLabel("字体:"); private JLabel lbl2 = new JLabel("字形:"); private JLabel lbl3 = new JLabel("大小:"); private JTextArea area; String[] zx = { "常规", "加粗", "斜体", "基线" }; String[] dx = {"8" , "9" , "10", "12", "14", "15", "16", "18",

"20", "21", "22", "24", "26", "28", "30", "36",

"48", "54","72" , "89"}; JLabel lbl = new JLabel("字体样式Style"); private JComboBox cb1, cb3 = new JComboBox(dx), cb2 = new JComboBox(zx); private String[] zt;

public FontDialog(Frame owner, String title, boolean modal) {

init(); fontdialog = new Dialog(owner, title, modal); fontdialog.setLocation(owner.getLocation()); fontdialog.setLayout(new FlowLayout()); fontdialog.setSize(getWidth(), getHeight()); fontdialog.add(lbl1); fontdialog.add(cb1); fontdialog.add(lbl2); fontdialog.add(cb2); fontdialog.add(lbl3); fontdialog.add(cb3); fontdialog.add(okButton); fontdialog.add(cancelButton); fontdialog.add(area); fontdialog.setResizable(false); fontdialog.setAlwaysOnTop(true); cancelButton.addActionListener(new fontListener()); okButton.addActionListener(new fontListener()); fontdialog.addWindowListener(new fontListener());

cb1.addItemListener(new ItemListener() { // public void itemStateChanged(ItemEvent event) { //获取选择用户的字体类型

name = (String) event.getItem(); setCustomFont(new Font(name, type, size)); } });

cb2.addItemListener(new ItemListener() { // public void itemStateChanged(ItemEvent event) { //获取选择用户的字形

String s = (String) event.getItem(); if (s.equals("常规")) { type = Font.PLAIN; setCustomFont(new Font(name, type, size)); } else if (s.equals("加粗")) { type = Font.BOLD;

字体动作 添加监听器字形动作 添加监听器 setCustomFont(new Font(name, type, size)); } else if (s.equals("斜体")) { type = Font.ITALIC; setCustomFont(new Font(name, type, size)); } else { type = Font.CENTER_BASELINE; setCustomFont(new Font(name, type, size)); } } });

cb3.addItemListener(new ItemListener() { //大小动作 public void itemStateChanged(ItemEvent event) { //添加监听器获取选择用户的字号大小

size = (new Integer((String) event.getItem()).intValue()); setCustomFont(new Font(name, type, size)); } });

}

public Font showFontDialog() { fontdialog.setVisible(true); if (okpressed) { return getCustomFont(); } else { return customFont; } }

private void init() { //初始化 okButton = new JButton("确定"); cancelButton = new JButton("取消"); GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); zt = ge.getAvailableFontFamilyNames(); cb1 = new JComboBox(zt); cb1.setMaximumRowCount(6); area = new JTextArea(6, 30); cb3 = new JComboBox(dx); cb3.setMaximumRowCount(6); okButton.setFocusable(true); area.setEditable(false); area.setText(new Date().toString()); area.setBorder(new TitledBorder("字体样式")); }

public void setWidth(int width) { this.width = width; }

public void setHeight(int height) { this.height = height; }

private int getWidth() { return (this.width); }

private int getHeight() { return (this.height); }

private void setCustomFont(Font customFont) //{ this.customFont = customFont; area.setFont(customFont); area.revalidate(); }

public String toString() { return FontDialog.class.toString(); }

设置字体 public Font getCustomFont() //获取字体 { return (this.customFont); }

private class fontListener extends WindowAdapter implements ActionListener //监听事件类 { public void windowClosing(WindowEvent e) { fontdialog.dispose(); }

public void actionPerformed(ActionEvent e) { if (e.getSource() == cancelButton) { fontdialog.dispose(); cancelpressed = true; } else if (e.getSource() == okButton) { okpressed = true; setCustomFont(new Font(name, type, size)); fontdialog.dispose(); } } } }

第四篇:java实验报告4

实验项目名称:实验4 基于Socket的网络编程

【实验目的】

1、 理解Java的基于套接字的网络通信原理。

2、 理解客户端和服务器的概念。

3、 学习使用套接字实现客户端和服务器通信的程序设计方法。

【实验任务】

使用Java的Socket(套接字)技术和多线程技术,开发一个分布式井字游戏。允许2个用户在因特网上任意不同的计算机上相互对弈。

【上机步骤】(含基本步骤,主要程序结果及异常情况记录等)

1. 新建类“test41”,新建接口“TicTacToeConstants”,分别如下代码:

4.运行结果如下:

【实验总结】(实验后的心得体会、建议等)

第五篇:Java EE实验报告

学 生 实 验 报 告

课程名称:

学生学号:

所属院部:

(理工类)

J2EE程序设计 专业班级:

学生姓名:

信息技术学院 指导教师:

20 13 ——20 14 学年 第 2 学期

金陵科技学院教务处制 实验报告书写要求

实验报告原则上要求学生手写,要求书写工整。若因课程特点需打印的,要遵照以下字体、字号、间距等的具体要求。纸张一律采用A4的纸张。

实验报告书写说明

实验报告中一至四项内容为必填项,包括实验目的和要求;实验仪器和设备;实验内容与过程;实验结果与分析。各院部可根据学科特点和实验具体要求增加项目。

填写注意事项

(1)细致观察,及时、准确、如实记录。 (2)准确说明,层次清晰。

(3)尽量采用专用术语来说明事物。

(4)外文、符号、公式要准确,应使用统一规定的名词和符号。 (5)应独立完成实验报告的书写,严禁抄袭、复印,一经发现,以零分论处。

实验报告批改说明

实验报告的批改要及时、认真、仔细,一律用红色笔批改。实验报告的批改成绩采用百分制,具体评分标准由各院部自行制定。

实验报告装订要求

实验批改完毕后,任课老师将每门课程的每个实验项目的实验报告以自然班为单位、按学号升序排列,装订成册,并附上一份该门课程的实验大纲。

实验项目名称:Java编程基础 实验学时: 4 同组学生姓名: ———— 实验地点: 实验日期: 实验成绩: 批改教师: 批改时间:

一、实验目的和要求

(1) 熟练掌握JDK1.7及Eclipse Kepler Service Release 1(下简称Eclipse)编写调试Java应用程序的方法;

(2) 熟练掌握Java常用工具类的使用; (3) 熟练掌握Java集合框架编程;

(4) 调试程序要记录调试过程中出现的问题及解决办法;

(5) 编写程序要规范、正确,上机调试过程和结果要有记录,不断积累编程及调试经验; (6) 做完实验后给出本实验的实验报告。

二、实验仪器和设备

奔4以上计算机,Windows 操作系统,装有JDK1.7和Eclipse软件。

三、实验内容及过程

(1) 设计一个类Student,类的属性有:姓名,学号,出生日期,性别,所在系等。并生成学生类对象数组,按照学生的姓名将学生排序输出。(注意:使用String类的compareTo方法)

(2) 使用日历类等相关方法,按截图做出一个日历。参照书本示例,研究其中代码,回顾与复习利用Java Swing编程。

(3) 将本学期开设的课程名称加入到HashSet中,并使用迭代器遍历输出。

(4) 完成以下实验: (1) 定义一个学生类:属性有学号、姓名、专业、高数成绩、外语成绩、Java课程成绩。 (2) 在测试类中生成多个学生类的对象,放入TreeSet中,要求按照三门课总成绩从高到低排序,总成绩相等按学号排序输出排序结果。 (注意:实现Comparator接口的compare(Object obj1,Object obj2)函数)

(5) 以List接口对象(ArrayList)为基础建立一个通讯录,要求通讯录中必须含有编号、姓名,性别、电话、地址、Email等等。实现该类并包含添加、删除、修改、按姓名查等几个方法。编写主程序测试。

要求:

(1) 编译调试程序之前应配置好环境变量;

(2) 要掌握用JDK命令行和Eclipse集成开发环境调试Java程序; (3) 熟练掌握Java常用工具类和集合框架的使用;

程序清单:

(建议程序中适当添加注释信息,增强可读性;较长程序可分栏书写,保证报告排版整洁美观。)

(实验一程序清单续1)

(实验一程序清单续2)

四、实验结果与分析

实验项目名称: JSP编程基础 实验学时: 6 同组学生姓名: ———— 实验地点: 实验日期: 实验成绩: 批改教师: 批改时间:

一、实验目的和要求

(1) 熟练掌握JDOM对XML编程的使用; (2) 熟练掌握HTML编程基础;

(3) 熟练掌握JSP环境配置以及编程基础; (4) 熟练掌握JavaBean编程;

(5) 调试程序要记录调试过程中出现的问题及解决办法;

(6) 编写程序要规范、正确,上机调试过程和结果要有记录,不断积累编程及调试经验; (7) 做完实验后给出本实验的实验报告。

二、实验仪器和设备

奔4以上计算机,Windows 操作系统,装有JDK1.7,Tomcat6.0和Eclipse软件。

三、实验内容及过程

(1) 通过JDOM技术实现对以下XML文件的操作:

 显示整个XML文件内容

 显示第二个客户节点内容

 增加一个节点:如

<客户 性别="男"> <姓名>张三

<电子邮件>Zhangsan@magicactor.com

 删除客户名称为张三的节点

 修改客户名称为张三的节点的电子邮件为Zhangsan@126.com

(2) 使用HTML与JavaScript完成一个简单的四则运算,界面功能如下:

(3) 使用JSP与JavaBean实现一个简易计算器.

注意:仿照(2)HTML代码编写网页,使用request对象接收值,在JavaBean中计算,JSP页面调用该JavaBean,实现数字计算。

(4) 使用application内置对象实现一个简易的网站计数器,界面如教材P288图15.7所示。

(5) 使用session内置对象实现一个简易的购物车功能。利用session保存用户选购的商品信息,本购物车程序至少包含两个页面:显示商品页面showbooks.jsp;显示购物车页面showcarts.jsp。

要求:

(1) 学会配置JSP编程环境;

(2) 学会使用Eclipse的各种调试方法; (3) 熟练掌握JSP的编程基础。

程序清单:

(建议程序中适当添加注释信息,增强可读性;较长程序可分栏书写,保证报告排版整洁美观。)

(实验二程序清单续1)

(实验二程序清单续2)

四、实验结果与分析

实验项目名称: Servlet与JSP综合编程 实验学时: 6 同组学生姓名: ———— 实验地点: 实验日期: 实验成绩: 批改教师: 批改时间:

一、实验目的和要求

(1) 熟练掌握JDBC数据库编程的使用; (2) 熟练掌握Servlet编程基础; (3) 熟练掌握JSP综合编程;

(4) 调试程序要记录调试过程中出现的问题及解决办法;

(5) 编写程序要规范、正确,上机调试过程和结果要有记录,不断积累编程及调试经验; (6) 做完实验后给出本实验的实验报告。

二、实验仪器和设备

奔4以上计算机,Windows 操作系统,装有JDK1.7,MySQL,Tomcat6和Eclipse软件。

三、实验内容及过程

(1) 在数据库中建立一个表,表名为学生,其结构为:学号、姓名、性别、年龄、成绩。编程实现以下功能:

   编写方法向学生表中增加记录;

编写方法将每条记录按成绩由大到小的顺序显示到界面; 编写方法删除成绩不及格的学生记录。

(2) 使用JSP与JavaBean实现用户登录功能,要求实现以下功能:

   创建数据库MyDB,创建一个表Users(用户名、密码),用户日志表userLog; 创建一个JavaBean;UserDao主要包含两个函数:验证函数、日志函数; 创建登录页面JSP页面(login.jsp),构建表单Form,使用Servlet实现验证码功能。当用户输入提交后,调用JavaBean验证其合法性,如果验证不通过导向登录页面,验证通过导向欢迎页面。不管是否通过验证都应该向userLog表中添加成功登录或失败登录信息。;  创建成功页面JSP页面(success.jsp)。

(3) 使用JSP、Servlet以及JavaBean实现MVC架构计算圆面积,要求实现以下功能:

   编写JSP页面View; 编写JavaBean实现业务逻辑;

编写一个Servlet,从JSP界面接收用户输入的半径,调用JavaBean实现圆面积计算;  在web.xml文件中配置Servlet的Mapping URL。

(4) 参考书本上关于Filter的描述,编写一个用于用户认证的过滤器。如果管理员即后台所有页面都有“/admin”,如管理员登陆页面http://localhost:8088/admin/login.jsp,要求拦截/admin的页面进行认证(登陆界面除外),如果用户没有认证则跳转到登陆页面。 要求:

(1) 学会配置JDBC编程环境; (2) 学会使用Eclipse的各种调试方法;

(3) 熟练掌握JSP、JavaBean与Servlet综合编程的使用。

程序清单:

(建议程序中适当添加注释信息,增强可读性;较长程序可分栏书写,保证报告排版整洁美观。)

(实验三程序清单续1)

(实验三程序清单续2)

(实验三程序清单续3)

四、实验结果与分析

实验项目名称: SSH框架编程 实验学时: 8 同组学生姓名: ———— 实验地点: 实验日期: 实验成绩: 批改教师: 批改时间:

一、实验目的和要求

(1) 熟练掌握Hibernate框架编程技术; (2) 熟练掌握Struts2框架编程技术; (3) 熟练掌握Spring框架编程技术; (4) 熟练掌握以上三种框架综合编程技术;

(5) 调试程序要记录调试过程中出现的问题及解决办法;

(6) 编写程序要规范、正确,上机调试过程和结果要有记录,不断积累编程及调试经验; (7) 做完实验后给出本实验的实验报告。

二、实验仪器和设备

奔4以上计算机,Windows 操作系统,装有JDK1.7,MySQL,Tomcat6和Eclipse软件。

三、实验内容及过程

(1) 使用Hibernate将顾客表中的内容输出到JSP页面中,要求实现以下功能:

 将如下的数据库脚本在MySQL中执行,数据库为MyDB; create table customers( customerid char(8) primary key, name char(40) default null, phone char(16) default null );  在项目中加入Hibernate支持并生成映射文件,映射类以及HibernateSessionFactory类。再创建一个Dao类读取顾客表中所有记录返回集合List;  编写JSP文件。使用JSTL标签输出,如教材P291图15.13所示。

(2) 使用Hibernate对多表进行关联操作。对数据库脚本中的职工表与部门表进行级联操作。要求实现以下功能:   可以根据部门编号查询部门及其查询该部门下的所有职工信息;

删除部门时级联删除部门下的所有职工。考虑当删除部门时不想删除该部门的职工而只将职工中的部门编号置为空,应该怎么设置。

(3) 使用Struts2实现以下用户登陆功能:

 完成一个用户登录,用户名以及密码为必填项。使用 Action中的validate函数进行验证。体会Struts2基本流程;  当用户输入的用户名不是 admin或密码不是 12345时要求用户重新登录,并给出错误提示。当用户填写正确时,导向一个成功页面显示用户登录成功;  结合使用Hibernate将用户信息保存到数据库中;  利用Struts标签 bean 以及logic标签,将数据库中的表Customer中的内容输出,在页面中输出成表格,使用Hibernate读写数据库。

(4) Struts国际化试验,改造上述实验。当用户名或密码未输入,在中文环境下显示中文,在英文环境下显示英文错误信息。注意:编写两个资源文件。

(5) 编写图形接口Shape,该接口中有抽象函数计算面积double area();编写圆类Circle与矩形类Rectange实现该接口。再编写一个ShapeDao类,将Shape接口作为其属性。通过Spring配置JavaBean,实现Bean的动态注入。即只需改变注入的Bean就可以计算不同图形的面积。

(6) 完成网上成绩录入系统综合实验。实验要求读取数据库中学生表、课程表和选课表中的内容,动态形成表单;教师可以登陆系统录入学生成绩。其中总评成绩=平时成绩*30% +期末成绩*70%,各项成绩为百分制。  教师登陆界面;

图14.16 教师登陆界面参考

 登陆成功后选择所要录入的课程;

图14.17 教师选择课程界面参考

 录入成绩界面;

图14.18 教师录入成绩界面参考  点击“保存成绩”,则向数据库中写入输入的成绩。 要求:

(1) 学会SSH框架编程环境;

(2) 学会使用Eclipse的各种调试方法;

(3) 熟练掌握Hibernate、Struts与Spring综合编程的使用。

程序清单:

(建议程序中适当添加注释信息,增强可读性;较长程序可分栏书写,保证报告排版整洁美观。)

(实验四程序清单续1)

(实验四程序清单续2)

四、实验结果与分析

本文来自 99学术网(www.99xueshu.com),转载请保留网址和出处

上一篇:分公司2019年工作计划下一篇:高考英语b6u5一轮复习