Java实习报告.docx
- 文档编号:5310159
- 上传时间:2022-12-15
- 格式:DOCX
- 页数:18
- 大小:689.14KB
Java实习报告.docx
《Java实习报告.docx》由会员分享,可在线阅读,更多相关《Java实习报告.docx(18页珍藏版)》请在冰豆网上搜索。
Java实习报告
Java实习是物联网工程专业的重要实践教学内容,是《Java语言程序设计》课程的综合实践环节,是对该课程的补充和提高,通过实习训练,加深理解、巩固课堂教学内容,提高学生对Java语言各部分内容的综合使用能力,逐步掌握Java语言程序设计的规范与技巧,强调面向对象的编程方法及程序设计技能和设计能力的训练,强调理论与实际的结合,提高学生分析问题、解决问题的能力。
Java程序设计是一门应用性很强的专业课,在学习时必须注意理论与实践相结合,通过此实习使学生能够较全面的掌握面地理解,掌握和综合作用所学的知识,提高自身的编程能力。
二.实习内容:
实习时间:
2016年7月4日到2016年7月15日
实习地点:
工程实践中心D2-408
实习内容:
项目一:
Java图形界面的应用:
了解典型案例;理解事件处理机制的应用;掌握图形界面基本类的应用;
图形用户界面(GraphicsUserInterface,GUI)是指以图形的方式实现人与计算机之间的交互。
在该界面下用户往往只需要通过单击、双击拖拽鼠标和简单的文字输入就可以轻松地操作计算机完成任务。
图形用户界面生动形象使用图形的方式借助菜单、按钮等标准界面元素和鼠标操作,帮助用户和计算机之间进行交互。
用图形的形式借助菜单、按钮等标准界面元素和鼠标操作,帮助用户方便的向计算机系统发出指令、启动操作,并将系统的运行结果同样以图形方式显示给用户的技术。
图形用户界面与字符界面相比,操作简单,画面生动,深受用户欢迎。
Java图形界面技术,即使用java.awt包来创建图形界面的方法,包括awt组件、窗口和菜单设计、布局管理器、绘图操作等等。
(1)以下为创建登录界面的程序代码:
(这段代码能实现什么功能并未写清楚,并加上“具体程序代码如下:
”,以后的都参考这样的写)
packageZZ;
importjava.awt.Button;
importjava.awt.Color;
importjava.awt.Frame;
importjava.awt.Label;
importjava.awt.Panel;
importjava.awt.TextField;
publicclassLL{
publicstaticvoidmain(String[]args){
//TODOAuto-generatedmethodstub
Framenw=newFrame("登录");
Panelnn=newPanel();
Labela1=newLabel("用户名");
Labela2=newLabel("密码");
TextFieldb1=newTextField("name");
TextFieldb2=newTextField("password");
Buttonn1=newButton("确定");
nn.add(a1);
nn.add(b1);
nn.add(a2);
nn.add(b2);
nn.add(n1);
nw.add(nn);
nw.setBackground(Color.cyan);
nw.setSize(300,300);
nw.setVisible(true);}}
(2)以下为创建复选框界面的程序代码:
packagezz;
importjava.awt.*;
importjavax.swing.*;
importjava.awt.event.*;
importjavax.swing.border.*;
publicclasssuimplementsItemListener{
JFramef;
JPanelp;
JTextFieldt;
JCheckBoxc1,c2,c3;
intsum=0;
publicstaticvoidmain(String[]args){
//TODOAuto-generatedmethodstub
sus=newsu();
s.go();}
voidgo(){
f=newJFrame("超市");
p=newJPanel();
t=newJTextField();
c1=newJCheckBox("香蕉3元");
c2=newJCheckBox("苹果2元");
c3=newJCheckBox("橘子3元");
f.add(p,BorderLayout.CENTER);
f.add(t,BorderLayout.SOUTH);
p.add(c1);
p.add(c2);
p.add(c3);
p.setLayout(newBoxLayout(p,BoxLayout.Y_AXIS));
Borderetched=BorderFactory.createEtchedBorder();
Borderborder=BorderFactory.createTitledBorder(etched,"超市");
p.setBorder(border);
f.setSize(500,500);
f.setVisible(true);
c1.addItemListener(this);
c2.addItemListener(this);
c3.addItemListener(this);
}
@Override
publicvoiditemStateChanged(ItemEvente){
//TODOAuto-generatedmethodstub
if(e.getSource()==c1)
{if(c1.isSelected())
sum=sum+5;
elsesum=sum-5;
t.setText("总计为"+sum+"元");
}if(e.getSource()==c2)
{if(c2.isSelected())
sum=sum+2;
elsesum=sum-2;
t.setText("总计为"+sum+"元");}
if(e.getSource()==c3)
{if(c3.isSelected())
sum=sum+3;
elsesum=sum-3;
t.setText("总计为"+sum+"元");}}}
(3)
packagetx;
importjavax.swing.*;
importjava.awt.*;
publicclasstxyhextendsJFrame{
privateJPanelpanel1=newJPanel();
privateJPanelpanel2=newJPanel();
privateJPanelpanel3=newJPanel();
privateJLabellabel1=newJLabel("价格:
");
privateJLabellabel2=newJLabel("颜色:
");
privateJLabellabel3=newJLabel("内存:
");
privateJComboBoxlbk;
privateStringlike[]={"16G","32G","64G","128G"};
publictxyh(){
super("手机类型");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Containerc=getContentPane();
c.setLayout(newGridLayout(1,2,0,0));
panel1.setBackground(newColor(205,110,190));
JTextFieldt1=newJTextField();
t1=newJTextField(10);
panel1.add(label1);
panel1.add(t1);
c.add(panel1);
panel2.setBackground(newColor(140,200,140));
JTextFieldt2=newJTextField();
t2=newJTextField(10);
panel2.add(label2);
panel2.add(t2);
c.add(panel2);
panel3.setBackground(newColor(220,200,200));
lbk=newJComboBox(like);
lbk.setMaximumRowCount(4);
lbk.setSelectedIndex(0);
panel3.add(label3);
panel3.add(lbk,BorderLayout.NORTH);
c.add(panel3);
setSize(300,300);//设置窗口大小
setVisible(true);//指定窗口可见
}
publicstaticvoidmain(String[]args){
//TODOAuto-generatedmethodstub
txyhg=newtxyh();
}
}
项目二:
Java在多线程中的应用:
了解线程和多线程概念;理解和熟悉多线程的同步;掌握多线程应用的典型案例;
线程是进程中某个单一顺序的控制流,是进城内部的一个执行单元。
系统创建好进程后,实际上就启动执行了该进程的主执行线程,主执行线程以函数地址形式将程序启动点提供给Windows系统。
主执行线程终止,例如,某应用软件main或WinMain函数。
程序设计员可以通过Java的应用编程接口API,使含有执行线程的应用软件同时运行。
在这里,每一线程是指可以与其他线程同时执行的一部分程序,成为多线程。
这种能力为Java程序员编写高性能的程序提供了保证。
(1)在某一进程内的两个计数线程的记数调度
packagetext;
publicclassCritical{
publicstaticvoidmain(Stringarrgs[]){
ThreadA=newThread(newcounter_thread());
ThreadB=newThread(newcounter_thread());
A.start();
B.start();
try{
Thread.sleep(1000);
}catch(InterruptedExceptione){
e.printStackTrace();
}
System.out.println("Finished!
Countercount:
"+counter.count);
}
}
classcounter{
publicstaticintcount,temp;
publicstaticvoidinc(){
temp=count;//危险
temp+=1;//危险
count=temp;//危险
}
}
classcounter_threadimplementsRunnable{
publicvoidrun(){
for(inti=0;i<10000;i++){
counter.inc();
}
}
}
多线程可以实现并行处理,避免了某项任务长时间占用CPU时间。
在单处理(CPU)的计算机中,为了运行所有这些线程,操作系统需要为每个独立线程安排一些CPU时间,操作系统以轮换方式为线程提供时间片,在宏观上似乎这些线程是同时运行。
因此,如果两个非常活跃的线程为了抢夺对CPU的控制权,在线程切换时会消耗很多CPU资源,反而会降低系统的性能。
(2)
packagexiancheng;
publicclassxiancheng{
publicstaticvoidmain(String[]args){
finalBusinessbusiness=newBusiness();
newThread(
newRunnable(){
publicvoidrun(){
for(inti=1;i<=50;i++){
business.sub(i);
}
}
}
).start();
for(inti=1;i<=50;i++){
business.main(i);
}
}
}
classBusiness{
privatebooleanbShouldSub=true;
publicsynchronizedvoidsub(inti){
//如果bussiness调用sub的话,则【!
bShouldSub=false,bShouldSub=true】;
//然后主线程main为等待,执行完sub后就bShouldSub=false;唤醒主线程main。
while(!
bShouldSub){
try{
this.wait();
}catch(InterruptedExceptione){
e.printStackTrace();
}
}
for(intj=1;j<=10;j++){
System.out.println("subthreadsequenceof"+j+",loopof"+i);
}
bShouldSub=false;
//唤醒main
this.notify();
}
publicsynchronizedvoidmain(inti){
while(bShouldSub){
try{
this.wait();
}catch(InterruptedExceptione){
e.printStackTrace();
}
}
for(intj=1;j<=100;j++){
System.out.println("mainthreadsequenceof"+j+",loopof"+i);
}
bShouldSub=true;
//唤醒sub
this.notify();
}}
项目三:
JavaApplet的应用:
了解JavaApplet的特点和运行机制;理解HTML语言,熟悉如何在HTML文件中嵌入Applet;掌握Applet的主要方法及生命周期;
JavaApplet的应用:
Applet不是完整独立的程序,而是一个已经构建好的框架程序中的一个模板,因而Applet小应用程序也不能加Application那样直接运行,必须将它翻译生成的字节码文件嵌套在一个HTML文件里,然后打开此HTML文件激活WWW浏览器中的Java解释器才可以运行。
Applet小应用程序必须继承java.applet包中的Applet类。
Applet的默认布局是FlowLayout。
编写了一个时间运行程序的代码及运行结果如下:
(1)下面的程序是完成什么的?
总得写一下吧?
packageapp;
importjava.awt.*;
importjava.util.*;
importjavax.swing.*;
importjava.text.DateFormat;
publicclasscdextendsJFrame{
privateThreadcThread=null;
privatecJPanelcjp=newcJPanel();
publiccd(){
setSize(240,100);
cThread=newThread(cjp,"Clock");
cThread.start();
add(cjp);
setVisible(true);
}
publicstaticvoidmain(String[]args){
newcd();
}
}
classcJPanelextendsJPanelimplementsRunnable{
publicvoidpaint(Graphicsg){
super.paint(g);
Calendarcal=Calendar.getInstance();
Datedate=cal.getTime();
DateFormatdateFormatter=DateFormat.getTimeInstance();
g.setColor(Color.BLUE);
g.setFont(newFont("TimesNewRoman",Font.BOLD,36));
g.drawString(dateFormatter.format(date),50,50);
}
publicvoidrun(){
while(true){
repaint();
try{
Thread.sleep(1000);
}catch(InterruptedExceptione){}
}
}
}
(2)下面的程序是完成什么的?
总得写一下吧?
packageymc;
importjava.applet.*;
importjava.awt.*;
importjava.awt.event.ActionEvent;
publicclassymcextendsApplet{
AudioClipmusic;
Imageimage;
Buttonb1=newButton("play");
Buttonb2=newButton("loop");
Buttonb3=newButton("stop");
privateLabellabel=null;
privateListlist=null;
publicvoidinit(){
b1.setBounds(newRectangle(300,40,87,23));
b2.setBounds(newRectangle(300,80,87,23));
b3.setBounds(newRectangle(300,120,87,23));
this.setLayout(null);
this.setSize(newDimension(430,414));
music=getAudioClip(getCodeBase(),"益母草.wav");
image=getImage(getDocumentBase(),"益母草.jpg");
add(b1);
add(b2);
add(b3);
this.add(getList(),null);
}
publicvoidactionPerformed(ActionEvente){
if(e.getActionCommand().equals("play"))
music.play();
if(e.getActionCommand().equals("loop"))
music.loop();
if(e.getActionCommand().equals("stop"))
music.stop();
}
privateListgetList(){
if(list==null){
list=newList();
list.add("【中文名】益母草");
list.add("【类别】全草类");
list.add("【炮制】拣去杂志,洗净,润透,切段,晒干。
");
list.add("【性味】辛苦,凉。
");
list.add("【功用主治】活血,祛瘀,调经,消水.");
list.setBounds(newRectangle(169,323,261,87));
}
returnlist;
}
publicstaticvoidmain(String[]args){
newymc();
}
}
三.实习结果:
项目一:
(这段是能实现什么功能并未写清楚,并加上“实现效果如下图所示:
”,以后的都参考这样的写)
图1登录界面结果
图2创建复选框结果
图3
项目二:
图4第一次运行结果
图5第二次运行结果
图6第三次运行结果
图7第四次运行结果
图8多线程
项目三:
图9Applet运行结果
图10
四.实习总结:
经过为期两周的Java实训,感触很深,收获也很大,对自己的缺点也有了很多的认识,回收本学期Java的学习,重点还是在学习概念等一些常识性的东西,关于了解图形界面典型案例;理解事件处理机制的应用,掌握图形界面基本类的应用,线程和多线程概念,理解和熟悉多线程的同步,掌握多线程应用的典型案例,了解JavaApplet的特点和运行机制;理解HTML语言,熟悉如何在HTML文件中嵌入Applet,掌握Applet的主要方法及生命周期。
在我学习的语言中,我自己认为Java是一门比较强大的面向对象的编程语言,不仅仅是因为它的跨平台型还有它的较强的实用性,强悍的嵌入性。
本次实习主要是通过实习训练,加深理解、巩固课堂教学内容,提高学生对Java语言各部分内容的综合使用能力,逐步掌握Java语言程序设计的规范与技巧,强调面向对象的编程方法及程序设计技能和设计能力的训练,强调理论与实际的结合,提高学生分析问题、解决问题的能力。
通过这一周的实习,虽然实习的时间不长,但是总体上收获挺大的,当我们正式准备学习实习Java编程技术时,让我感到非常高兴,因为Java一直学的是课本知识,所以实习对于我来说是必须要学会熟练操作的。
当然开始学习后也并非是想象中那样顺利,开始的学习让我异常感到学习任务的艰巨,因为学习中我遇到了很多以前未曾遇到的难点,有时候也难免会失去耐心,但是,通过老师的指导,自己的努力的练习,我顺利的化解了一道道的障碍。
克服了Java学习上的一道道难关,现在自己已经基本掌握了Java的基础知识。
有些知识点以前有学过,但我也没有去研究,实习时突然间觉得自己真的有点无知,虽然现在去看依然可以解决问题,但要浪费许多时间,这一点是我必须在以后的学习中加以改进的地方,同时也要督促自己在学习的过程中不断的完善自我。
另外一点,也是在实习中必不可少的部分,就是同学之间的互相帮助。
所谓”当局者迷,旁观者清”,有些东西感觉自己做的是时候明明没什么错误,偏偏程序运行时就是有错误,让其他同学帮忙看了一下,发现其实是个很小的错误。
所以说,相互帮助是很重要的一点,这在以后的工作或生活中也是很关键的。
此
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 实习 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)