学院
《Java程序设计》
教学实习报告
部 门:
专 业:
班 级:
姓 名:
指导教师:
《Java程序设计》教学实习报告
一、实习时间: 年 月 日至 年 月 日
二、实习地点:
三、实习目的
1、掌握搭建Java开发环境的方法;
2、通过团队合作,提高沟通、交流能力,培养团队合作精神;
3、严格按照Java语言编写规约编写代码,养成遵守规约的习惯,增强编码质量的意识;
4、教师面向对象程序实例的剖析,以及实际操作,理解面向对象编程的理念,并熟练编写程序;
5、掌握Java程序的调试方法;
四、实习内容及方法
实训1 相关环境搭建
1、实训目的:
1)、熟悉Java语言的程序开发环境
2)、理解Java两类程序的运行机制。
2、实训内容:
JDK开发环境
第一步:下载。从学校网站上找:ftp://10.1.1.16,在里面找编程软件。
第二步:安装jdk。安装在D盘的根目录下面。
第三步:安装好后,选择“开始”→“运行…”命令,在打开的“运行”窗口中输入“cmd”命令并“确定”。在打开的命令行窗口中,分别执行java和javac命令。第四步:查看操作系统环境变量。
第五步:设置环境变量及path环境变量的作用和设置。
1> 编辑源文件
文本编辑
import java.io.*;
public class HelloWorld1{
public static void main(String arg[]){
System.out.println("Hello World!");
}
}
运行结果如下图所示:
实训2Java基础-控制语句使用实例
一、实训目的:
1、熟练掌握Java语言中的三种基本的流程控制
2、能够读懂一般流程控制的实例
3、理解数组的概念
4、掌握数组的定义方法
5、掌握数组的应用
二、实训内容:
1、随机输入3个数,要求按降序排列。
import java.io.*;
public class jiangxu{
public static void main(String args[]){
int x,y,z;
x=(int)(Math.random()*100);
y=(int)(Math.random()*100);
z=(int)(Math.random()*100);
if(x>y){
if(y>z){
System.out.println(x);System.out.println(y);System.out.println(z);
}
else{
if(x>z){
System.out.println(x);System.out.println(z);System.out.println(y);}
else{System.out.println(z);System.out.println(x);System.out.println(y);}
}
}
if(x<y){
if(z<x){System.out.println(y);System.out.println(x);System.out.println(z);}
else{
if(z<y){System.out.println(y);System.out.println(z);System.out.println(x);}
else{System.out.println(z);System.out.println(y);System.out.println(x);
}
}
}
}
}
运行结果如下图所示:
2、编写程序,用循环语句列出1到10的阶乘值。
public class jiecheng{
public static void main(String args[]){
int i;
int sum=1;
for(i=1;i<=10;i++){
sum*=i;
System.out.println(""+sum);
}
}
}
结果如下图所示:
3、编写程序显示一年的月份。月份要保存在数组中。
public class yuefen{
public static void main(String arg[]){
int[] b=new int[12];
for(int a=1;a<=12;a++){
System.out.println("一年中第"+a+"个月是"+a+"月份");
}
}
}
结果如下图所示:
4、定义一个二维数组,从键盘输入数据,要求求出最大值元素、最小值元素。
public class MaxMin{
public static void main(String args[]){
int[][] x={{1,9,6},{12,10,21},{22},{13,8,15}};
int max=0;
int min=0;
for(int i=0;i<x.length;i++)
{
for(int j=0;j<x[i].length;j++)
{
max=x[0][0];
if(max<x[i][j])
{
max=x[i][j];
}
else{
min=x[i][j];
}
}
}
System.out.println("最大值="+max);
System.out.println("最小值="+min);
}
}
运行结果如下图所表示:
(三)实训分析总结
1、三种循环语句的数据流程图如何执行?
2、三种循环语句的语法格式。
while循环语句是当型结构,它的语法格式是:
[initalization]
While(loop-condition){
Body;
[iteration;]
}
for循环语句是当型结构, 在几种循环语句的使用中最为灵活,语法格式是:
for([initialization];[loop-condition];[iteration]){
body;
}
break语句的作用是终止包含break语句的程序块,语法格式为:
break[label]
3、 什么是数组元素,数组下标?
数组是由相同的数据类型的数据类型按顺序组成的数据集合。数据中的每个数据元素可以用一个统一的数组名和下标来唯一地确定。
数组分为一维数组和多维数组;
4、 数组的定义形式(声明,空间的分配)。
Java中数组的声明格式为:
Type arrayName[];或type[]arrayName;
其中type(数据类型)可以为java中任意的数据类型,包括基本数据类型和对象类型,arrayName(数组明)为一个合法的标识符,[]指明该变量是一个数组类型变量。
数组的空间分配:
Java在数组的声明时并对不为数组元素分配内存,因此在[]中不用指出数组中元素的个数,既数组长度。格式:
arrayName=new type[arraySize];其中arraySize指明数组长度。
实训3 类的封装、继承与多态性
实训目的:
1、理解类、封装、继承多态的概念。
2、掌握类的对象的创建和使用。
3、理解方法的概念。
4、掌握方法的调用,参数的传递。
5、熟练掌握类的继承。
实训内容:
1、编写程序,给定圆的半径和高度,计算圆柱体的体积,利用引用对象方法的形式表示。
class circle{
double TJ(double r,double h){
return 3.14*r*r*h;
}
}
public class yztj{
public static void main(String args[]){
double r,h;
circle c=new circle();
System.out.println("圆柱体积为:"+c.TJ(12,5));
}
}
运行结果如下图所示:
2、试设计一个Calculator类,并完成下列的各方法的程序设计:
定义add(a,b)方法,用来计算两数之和。
定义mul(a,b)方法,用来计算两数的乘积。
定义sub(a,b)方法,用来计算两数之差。
定义div(a,b)方法,用来计算a/b。
class Calculator{
int a;
int b;
Calculator(int a,int b){
this.a=a;
this.b=b;
}
int add(){
return a+b;}
int mul(){
return a*b;
}
int sub(){
return a/b;
}
public static void main(String args[]){
Calculator c1=new Calculator(12,13);
System.out.println("add="+c1.add());
System.out.println("mul="+c1.mul());
System.out.println("sub="+c1.sub());
}
}
运行结果如下图所示:
3、请逐步完成下列的程序设计:
(a)、设计一个父类Caaa,内含public两个整数数据成员。
(b)、设计一个子类Cbbb,继承自Caaa类,并加入set_num()方法,可用来赋值从父类继承而来的成员num1,num2,和show()方法,用来显示num1与num2的值。
(c)、在Caaa类里加入一个没有参数的构造函数Caaa(),它可用来把num1和num2赋值初值为1。
(d)、在类里加入另一个有参数的构造函数Caaa(int a,int b),它可用来把num1赋值为a,把num2赋值为b。
(e)、在main()方法里编写程序代码,测试(c)和(d)的结果。
class Caaa{
public int num1;
public int num2;
public Caaa(int a,int b){
this.num1=a;
this.num2=b;
}
public Caaa(){
this.num1=1;
this.num2=1;
}
public void show(){
System.out.println("num1="+this.num1);
System.out.println("num2="+this.num2);
}
}
class Cbbb extends Caaa{
public void set_num(){
System.out.println("num1="+this.num1);
System.out.println("num2="+this.num2);
}
}
class Cccc{
public static void main(String args[]){
Caaa myCaaa=new Caaa();
Cbbb myCbbb=new Cbbb();
myCbbb.show();
Caaa mCaaa=new Caaa(2,2);
Cbbb mCbbb=new Cbbb();
mCaaa.show();
}
}
运行结果如下图所示:
4、 设计一个类,内含一个方法可以判别输入的值为奇数还是偶数,如果为奇数就输出“此数为奇数”,反之若为偶数就输出“此数为偶数”。
class PD{
public int x;
void M(int x){
if(x%2==0)
System.out.println(x+"为偶数");
else
System.out.println(x+"为奇数");
}
}
public class PDJO{
public static void main(String args[]){
PD x1=new PD();
x1.M(32);
}
}
运行结果如下图所示:
实训分析总结:
1、什么是类?请写出定义类的格式。
答:类是组成Java程序的基本要素,也是Java中重要的引用数据类型。类封装了一类对象的状态属性和行为方法。
[修饰符]class类名{
……//成员变量声明
……//成员方法声明
}
2、如何创建一个类和该类的对象?
答:类名 引用变量;
引用变量名=new 类名([参数表]);
3、如何使用类的成员变量和方法?
答:引用变量名.成员变量名
引用变量名.成员方法名([参数表])
4、什么是方法?
答:方法是来实现对象行为的。
5、 什么是继承?
答:在Java中继承可以实现代码的复用。
6、 什么是封装?
答:把一系列具有相同特征的属性放在一个对象,组成的这个对象的过程就叫做封装。
实训四 简单计算器模拟
实训目的:
1、熟练掌握图形用户界面的设计和各组件的应用
2、能够处理一般事件的响应
实训内容:
1、设计一个窗口,内含一个按钮,当按下此按钮的时候,窗口的颜色会从原来的白色变成其他你所设置的颜色。
import java.awt.*;
import javax.swing.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
public class TestColor extends MouseAdapter{
Panel p1;//定义
Button b1;
Frame f;
CardLayout Clayout=new CardLayout();
public void create(){//创建create方法
b1=new Button("蓝色");//变色按钮
p1=new Panel();//面板
f=new Frame("test CardLayout");
p1.add(b1);//添加按钮到面板中
p1.setBackground(Color.WHITE);//设置背景为白色
p1.setVisible(true);
b1.addMouseListener(this);//添加鼠标事件监听器
f.setLayout(new FlowLayout());//设置面板的布局方式
f.add(p1);//将面板添加到框架中
f.setSize(200,200);
f.setVisible(true);
}
public static void main(String args[]){
TestColor tc=new TestColor(); //建立窗口
tc.create();//调用creat方法
}
public void mousePressed(MouseEvent e){//创建mousePressed方法
if(e.getSource()==b1){//当方法获取鼠标事件的资源为b1时,框架背景色变为蓝色
f.setBackground(Color.BLUE);
}
}
}
运行结果如下图所示:
点击后变为蓝色
2、设计一个包含有文本框和标签的窗口,在文本框中输入一段文字,按回车后,将该段文字内容加入到标签中显示。
import java.awt.*;
import javax.swing.*;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
public class Test4_2{
public static void main(String[] args){
JFrame jf=new JFrame();
JPanel jp=new JPanel();
final JLabel jl=new JLabel();
final JTextField jtf=new JTextField();
jf.add(jp);
jp.setLayout(new GridLayout(2,1));
jp.add(jl);
jp.add(jtf);
jtf.addKeyListener(new KeyAdapter(){
public void keyPressed(KeyEvent e){
if(e.getKeyCode()==KeyEvent.VK_ENTER){
jl.setText(jtf.getText());
}
}
});
jf.setSize(300,300);
jf.setVisible(true);
}
}
运行结果如下图所示:
3、 每一个Windows版本都提供了“计算器”应用程序,可以在附件里打开它,利用AWT组件创建计算器。
public class Jisuan extends JFrame implements ActionListener{
private JTextField reasult;
private JButton bt1,bt2,bt3,bt4,bt5,bt6,bt7,bt8,bt9,bt0,
btAC,btAdd,btSub,/*btcheng,btchu,*/btReasult,btD,btCancel;
private boolean add,sub,end,s,c;
private String str;
private double num1,num2;
public Jisuan(){
JPanel p1=new JPanel();
JPanel p2=new JPanel();
JPanel p3=new JPanel();
btCancel=new JButton("Cancel");
btCancel.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent ee)
{
System.exit(0);
}
});
p3.add(btCancel);
//JPanel p4=new JPanel();
//JPanel p5=new JPanel();
//reasult.setBorder(tb);
reasult =new JTextField("0",20);
reasult.setEditable(false);
reasult.setHorizontalAlignment(JTextField.RIGHT);
reasult.setForeground(Color.BLUE);
p1.add(reasult);
bt0=new JButton("0"); bt0.addActionListener(this);
bt1=new JButton("1"); bt1.addActionListener(this);
bt2=new JButton("2"); bt2.addActionListener(this);
bt3=new JButton("3"); bt3.addActionListener(this);
bt4=new JButton("4"); bt4.addActionListener(this);
bt5=new JButton("5"); bt5.addActionListener(this);
bt6=new JButton("6"); bt6.addActionListener(this);
bt7=new JButton("7"); bt7.addActionListener(this);
bt8=new JButton("8"); bt8.addActionListener(this);
bt9=new JButton("9"); bt9.addActionListener(this);
btD=new JButton("."); btD.addActionListener(this);
btAC=new JButton("AC"); btAC.addActionListener(this);
btAdd=new JButton("+"); btAdd.addActionListener(this);
btSub=new JButton("-"); btSub.addActionListener(this);
/*btcheng=new JButton("*"); btcheng.addActionListener(this);
btchu=new JButton("/"); btchu.addActionListener(this); */
btReasult=new JButton("="); btReasult.addActionListener(this);
p2.add(bt1);p2.add(bt2);p2.add(bt3);p2.add(bt4);p2.add(bt5);
p2.add(bt6);p2.add(bt7);p2.add(bt8);p2.add(bt9);p2.add(bt0);
p2.add(btD);p2.add(btAC);p2.add(btAdd);p2.add(btSub);/*p2.add(btcheng);
p2.add(btchu);*/p2.add(btReasult);
p2.setLayout(new GridLayout(5,3));
add(p1,BorderLayout.NORTH);
add(p2,BorderLayout.CENTER);
add(p3,BorderLayout.SOUTH);
}
第二段:
public void actionPerformed(ActionEvent e){
if(e.getSource()==bt1)
num(1);
else if(e.getSource()==bt2)
num(2);
else if(e.getSource()==bt3)
num(3);
else if(e.getSource()==bt4)
num(4);
else if(e.getSource()==bt5)
num(5);
else if(e.getSource()==bt6)
num(6);
else if(e.getSource()==bt7)
num(7);
else if(e.getSource()==bt8)
num(8);
else if(e.getSource()==bt9)
num(9);
else if(e.getSource()==bt0)
num(0);
else if(e.getSource()==btAdd){
sign(1);
btD.setEnabled(true);
}
else if(e.getSource()==btSub){
sign(2);
btD.setEnabled(true);
}
/*else if(e.getSource()==btcheng){
sign(3);
btD.setEnabled(true);
}
else if(e.getSource()==btchu){
sign(4);
btD.setEnabled(true);
}*/
else if(e.getSource()==btAC){
btD.setEnabled(true);
reasult.setText("0");
}
else if(e.getSource()==btD){
str=reasult.getText();
str+=".";
reasult.setText(str);
btD.setEnabled(false);
}
else if(e.getSource()==btReasult){
btD.setEnabled(true);
num2=Double.parseDouble(reasult.getText());
if(add){num1=num1 + num2;}
else if(sub){num1=num1 - num2;}
//else if(cheng){num1=num1*num2;}
// else (chu){num1=num1/num2;};
reasult.setText(String.valueOf(num1));
end=true;
}
}
运行结果如下图所示:
实训分析总结:
1、什么是布局管理器,它有什么用?
答:在实际编程中,我们每设计一个窗体,都要往其中添加若干组件。为了管理好这些组件的布局,我们就需要使用布局管理器
2、说明文本区和文本框的主要不同点。
答:文本区可以输入多行文字,文本框只能输入单行文字。
实训四 简单网页设计、学生信息管理系统
实训目的:
1、了解一些简单的网页设计的代码
2、分小组完成学生信息管理系统,加强团队合作的意识,充分发挥学生团队作战的能力。
实训内容:
1、简单网页设计
<html>
<head>
<title>框架集</title>
</head>
<frameset rows="*" cols="238,533">
<frame src="Untitled-7.html" />
<frameset cols="266,267">
<frame src="UntitledFrame-2.html" />
<frame src="UntitledFrame-3.html" />
</frameset>
</frameset>
<noframes><body>
</body>
</noframes></html>
结果如图所示:
2、学生管理系统的设计
public void actionPerformed(ActionEvent e){
if(e.getSource()==btn1){ //当选择查询时的事件处理过程
labf.setText("请选择按学号或按姓名查询");
dlg.setLocation(200,100);
dlg.setVisible(true);
}
if(e.getSource()==btn2){ //当选择修改时的事件处理过程
labf.setText("请输入要修改的学号或姓名");
dlg.setLocation(80,30);
txt1.setEditable(true);
strno=txt1.getText();
txt2.setText("");
dlg.add(labf2);
labf2.setText("修改完成按保存按钮");
txt2.setEditable(false);
dlg.setVisible(true);
try{ pstmt.setString(1,strno);
rs=pstmt.executeQuery();
}catch(Exception ee){ee.printStackTrace();}
}
if(e.getSource()==ok){ //当选择保存时的事件处理过程
modi();
initTable();
}
if(e.getSource()==btn3){ //选择退出时的事件处理过程
dlg.dispose();
try{ rs.close();pstmt.close();Connect12.close();
}catch(Exception ee){ee.printStackTrace();}
System.exit(0);
}
if(e.getSource()==but1){
strno=txt1.getText();
strname=txt2.getText();
System.out.println("str1"+strno);
System.out.println("str2"+strname);
dlg.dispose();
search();
}
if(e.getSource()==but2){
dlg.dispose();
initTable();
}
}
void initTable(){ //本方法完成数据模型的数据添加
//dtm.setRowCount(0); //本语句可用来清空模型中的数据
try{
rs.beforeFirst();
while(rs.next()){
Vector v1=new Vector(); //建立行向量
for(int i=1;i<=title.size();i++)
v1.addElement(rs.getString(i));//将当前记录的各列添加到行向量
dtm.addRow(v1); //将行向量添加到数据模型
}
}catch(SQLException e){e.printStackTrace();}
dtm.fireTableStructureChanged();//通知所的listener表格的结构已改变
}
void initDialog(){ //创建一个初始化的对话框,做为各功能按钮的弹出式窗口
bgp.add(radiostrno);bgp.add(radiostrname);
radiostrno.addItemListener(this);
radiostrname.addItemListener(this);
dlg.setLayout(new FlowLayout(FlowLayout.CENTER,10,10));
dlg.add(labf);dlg.add(radiostrno);
dlg.add(txt1);dlg.add(radiostrname); dlg.add(txt2);
txt2.setEditable(false);
dlg.add(but1);dlg.add(but2);
but1.addActionListener(this);
but2.addActionListener(this);
dlg.setSize(250,250);
dlg.setResizable(false) ;
dlg.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);}});
}
public void itemStateChanged(ItemEvent e){ //单选按钮的事件处理方法
if(radiostrno.isSelected()){
txt1.setEditable(true);
txt2.setText("");
txt2.setEditable(false);}
else{
txt2.setEditable(true);
txt1.setText("");
txt1.setEditable(false);
}
}
五、结论
通过这次Java实习,我得到了自己的收获同时也发现了自己的一些不足。一开始,对于老师布置的作业题目,我不太懂,无法进行有效而且清晰的分析,耽误了一些时间;然后对于那些不懂的Java知识和不会写的程序,我通过向同学寻求帮助和利用参考资料书,最终都解决了;由于自己参考资料的不足,我在课后,利用电脑上网查找了一些有关方面的参考知识,终于在最后解决了资料不足的缺点;对于不懂的题目,我也通过向多个同学进行询问,最终弄懂了老师布置的题目所要求的内容;至于流程图,在我向同学询问过,并且上网进行了一番查找和咨询后,也总算弄懂了流程图的含义,并努力写了出来。
最终解决的问题,我弄懂了,我认为这是我的收获,我身为第一组的代理组长,在看到最后一个学生信息管理系统被实现时,感到十分欣喜,让我有种久违了的成就感,我也懂得了要做一个有责任感的人,并且明白,做什么事都要严谨,认真,因为这才是走向成功的捷径。
六、致谢
在实习结束的时候,我要感谢辛勤的老师,在这里我要给***老师说一声:“老师您辛苦了,感谢你这一学期以来对我们的培养和照顾”。在我们休息的时候你还要备课,还要管理班级,上课还要调动课堂气氛,真的是很不容易!
在这个学期你代我们的Java程序设计,您尽心尽责无私的奉献我们非常的感谢你!不论是在上课期间还是在实习期间哪个同学在学习中遇到问题你都耐心的为他们讲解直到他们听懂为止。正是在你的指引下我们对Java的兴趣非常的浓厚,在实习中我们能够做出实训项目,实现一些小程序这都是你的功劳啊。在你的带领下我们学到很多书本上学不到的东西,如做事要一丝不苟,认真踏实。相信在以后找工作中我们会多了一个筹码。
其次,要感谢学校给我们安排了期末的课程实习,让我们能在学期末重新温习和总结整个一学期以来学习的知识,并且总结自己的不足,在以后的学习中能够加以改正和补充。
最后,再次感谢学校和指导的***老师!谢谢。