JAVA实训报告

JAVA实训报告,第1张

1、 实训的题目及简介:

题目:java计算器应用程序

简介:通过本程序可以实现计算器的基本功能。程序是Frame类的子类。使用GridLayout的布局方式对组件进行布局,用Panel类的容器存放按扭、文本框组件,程序中也用到大量的else-----if语句。

2、 设计说明:

一实验目的

通过实训能够结合实例进一步理解面向对象程序设计的基本概念,掌握程序设计的基本方法和技巧,灵活的使用包,进一步的理解接口,熟练的掌握在接口中对事件的实现。深入理解和灵活运用面向对象程序设计的基本特性,培养良好的程序设计风格,提高抽象思维、逻辑思维的能力

二实验内容

编写一个实现计算器应用程序

三 程序介绍及其功能的实现

程序需要导入import java.awt.*、 import java.awt.event.*、 import java.lang.*、 import javax.swing.*包。①程序的基本框架是:首先定义一个Frame类的子类,之后声明三个面板的布局,即定义了GridLayout类的三个对象gl1、gl2、gl3。之后是定义了Panel类的容器的四个对象p0、p1、p2、p3,其中p0用来存放显示屏文本框组件,p1采用gl1布局,用来存放删除和归零按钮,p3采用gl3布局,用来存放数字按钮和运算符按钮,p2采用gl2布局,用来存放其它功能按钮键按钮。②具体的实现过程是:⑴、程序定义了JTextField类的对象tf1和TextField类的对象tf2及26个button类的按钮,在Counter类的构造方法中分别对各个对象进行了初始化,对面板进行了合适的布局,各个按钮也相应的添加到相应的容器中,在实例化所有按钮、设置其前景色的同时并注册监听器。

⑵、对各个组件进行相应的设计之后,即程序运行之后的可视化界面完成之后开始实现程序内部的事件过程,即接口的实现。定义了一个名为 Bt的类来实现接口,程序在actionPerformed( )方法中对各个按钮和文本框组件的具体方法进行实现,程序中不断的用else—if语句对按钮 *** 作事件的实现,并对事件的异常进行处理。

3.程序清单

import java.awt.*

import java.awt.event.*

import java.lang.*

import javax.swing.*

public class Counter extends Frame

{

//声明三个面板的布局

GridLayout gl1,gl2,gl3

Panel p0,p1,p2,p3

JTextField tf1

TextField tf2

Button b0,b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15,b16,b17,b18,b19,b20,b21,b22,b23,b24,b25,b26

StringBuffer str//显示屏所显示的字符串

double x,y//x和y都是运算数

int z//Z表示单击了那一个运算符.0表示"+",1表示"-",2表示"*",3表示"/"

static double m//记忆的数字

public Counter()

{

gl1=new GridLayout(1,4,10,0)//实例化三个面板的布局

gl2=new GridLayout(4,1,0,15)

gl3=new GridLayout(4,5,10,15)

tf1=new JTextField(27)//显示屏

tf1.setHorizontalAlignment(JTextField.RIGHT)

tf1.setEnabled(false)

tf1.setText("0")

tf2=new TextField(10)//显示记忆的索引值

tf2.setEditable(false)

//实例化所有按钮、设置其前景色并注册监听器

b0=new Button("Backspace")

b0.setForeground(Color.red)

b0.addActionListener(new Bt())

b1=new Button("CE")

b1.setForeground(Color.red)

b1.addActionListener(new Bt())

b2=new Button("C")

b2.setForeground(Color.red)

b2.addActionListener(new Bt())

b3=new Button("MC")

b3.setForeground(Color.red)

b3.addActionListener(new Bt())

b4=new Button("MR")

b4.setForeground(Color.red)

b4.addActionListener(new Bt())

b5=new Button("MS")

b5.setForeground(Color.red)

b5.addActionListener(new Bt())

b6=new Button("M+")

b6.setForeground(Color.red)

b6.addActionListener(new Bt())

b7=new Button("7")

b7.setForeground(Color.blue)

b7.addActionListener(new Bt())

b8=new Button("8")

b8.setForeground(Color.blue)

b8.addActionListener(new Bt())

b9=new Button("9")

b9.setForeground(Color.blue)

b9.addActionListener(new Bt())

b10=new Button("/")

b10.setForeground(Color.red)

b10.addActionListener(new Bt())

b11=new Button("sqrt")

b11.setForeground(Color.blue)

b11.addActionListener(new Bt())

b12=new Button("4")

b12.setForeground(Color.blue)

b12.addActionListener(new Bt())

b13=new Button("5")

b13.setForeground(Color.blue)

b13.addActionListener(new Bt())

b14=new Button("6")

b14.setForeground(Color.blue)

b14.addActionListener(new Bt())

b15=new Button("*")

b15.setForeground(Color.red)

b15.addActionListener(new Bt())

b16=new Button("%")

b16.setForeground(Color.blue)

b16.addActionListener(new Bt())

b17=new Button("1")

b17.setForeground(Color.blue)

b17.addActionListener(new Bt())

b18=new Button("2")

b18.setForeground(Color.blue)

b18.addActionListener(new Bt())

b19=new Button("3")

b19.setForeground(Color.blue)

b19.addActionListener(new Bt())

b20=new Button("-")

b20.setForeground(Color.red)

b20.addActionListener(new Bt())

b21=new Button("1/X")

b21.setForeground(Color.blue)

b21.addActionListener(new Bt())

b22=new Button("0")

b22.setForeground(Color.blue)

b22.addActionListener(new Bt())

b23=new Button("+/-")

b23.setForeground(Color.blue)

b23.addActionListener(new Bt())

b24=new Button(".")

b24.setForeground(Color.blue)

b24.addActionListener(new Bt())

b25=new Button("+")

b25.setForeground(Color.red)

b25.addActionListener(new Bt())

b26=new Button("=")

b26.setForeground(Color.red)

b26.addActionListener(new Bt())

//实例化四个面板

p0=new Panel()

p1=new Panel()

p2=new Panel()

p3=new Panel()

//创建一个空字符串缓冲区

str=new StringBuffer()

//添加面板p0中的组件和设置其在框架中的位置和大小

p0.add(tf1)

p0.setBounds(10,25,300,40)

//添加面板p1中的组件和设置其在框架中的位置和大小

p1.setLayout(gl1)

p1.add(tf2)

p1.add(b0)

p1.add(b1)

p1.add(b2)

p1.setBounds(10,65,300,25)

//添加面板p2中的组件并设置其的框架中的位置和大小

p2.setLayout(gl2)

p2.add(b3)

p2.add(b4)

p2.add(b5)

p2.add(b6)

p2.setBounds(10,110,40,150)

//添加面板p3中的组件并设置其在框架中的位置和大小

p3.setLayout(gl3)//设置p3的布局

p3.add(b7)

p3.add(b8)

p3.add(b9)

p3.add(b10)

p3.add(b11)

p3.add(b12)

p3.add(b13)

p3.add(b14)

p3.add(b15)

p3.add(b16)

p3.add(b17)

p3.add(b18)

p3.add(b19)

p3.add(b20)

p3.add(b21)

p3.add(b22)

p3.add(b23)

p3.add(b24)

p3.add(b25)

p3.add(b26)

p3.setBounds(60,110,250,150)

//设置框架中的布局为空布局并添加4个面板

setLayout(null)

add(p0)

add(p1)

add(p2)

add(p3)

setResizable(false)//禁止调整框架的大小

//匿名类关闭窗口

addWindowListener(new WindowAdapter(){

public void windowClosing(WindowEvent e1)

{

System.exit(0)

}

})

setBackground(Color.lightGray)

setBounds(100,100,320,280)

setVisible(true)

}

//构造监听器

class Bt implements ActionListener

{

public void actionPerformed(ActionEvent e2)

{

try{

if(e2.getSource()==b1)//选择"CE"清零

{

tf1.setText("0")//把显示屏清零

str.setLength(0)//清空字符串缓冲区以准备接收新的输入运算数

}

else if(e2.getSource()==b2)//选择"C"清零

{

tf1.setText("0")//把显示屏清零

str.setLength(0)

}

else if(e2.getSource()==b23)//单击"+/-"选择输入的运算数是正数还是负数

{

x=Double.parseDouble(tf1.getText().trim())

tf1.setText(""+(-x))

}

else if(e2.getSource()==b25)//单击加号按钮获得x的值和z的值并清空y的值

{

x=Double.parseDouble(tf1.getText().trim())

str.setLength(0)//清空缓冲区以便接收新的另一个运算数

y=0d

z=0

}

else if(e2.getSource()==b20)//单击减号按钮获得x的值和z的值并清空y的值

{

x=Double.parseDouble(tf1.getText().trim())

str.setLength(0)

y=0d

z=1

}

else if(e2.getSource()==b15)//单击乘号按钮获得x的值和z的值并清空y的值

{

x=Double.parseDouble(tf1.getText().trim())

str.setLength(0)

y=0d

z=2

}

else if(e2.getSource()==b10)//单击除号按钮获得x的值和z的值并空y的值

{

x=Double.parseDouble(tf1.getText().trim())

str.setLength(0)

y=0d

z=3

}

else if(e2.getSource()==b26)//单击等号按钮输出计算结果

{

str.setLength(0)

switch(z)

{

case 0 : tf1.setText(""+(x+y))break

case 1 : tf1.setText(""+(x-y))break

case 2 : tf1.setText(""+(x*y))break

case 3 : tf1.setText(""+(x/y))break

}

}

else if(e2.getSource()==b24)//单击"."按钮输入小数

{

if(tf1.getText().trim().indexOf('.')!=-1)//判断字符串中是否已经包含了小数点

{

}

else//如果没数点有小

{

if(tf1.getText().trim().equals("0"))//如果初时显示为0

{

str.setLength(0)

tf1.setText((str.append("0"+e2.getActionCommand())).toString())

}

else if(tf1.getText().trim().equals(""))//如果初时显示为空则不做任何 *** 作

{

}

else

{

tf1.setText(str.append(e2.getActionCommand()).toString())

}

}

y=0d

}

else if(e2.getSource()==b11)//求平方根

{

x=Double.parseDouble(tf1.getText().trim())

tf1.setText("数字格式异常")

if(x<0)

tf1.setText("负数没有平方根")

else

tf1.setText(""+Math.sqrt(x))

str.setLength(0)

y=0d

}

else if(e2.getSource()==b16)//单击了"%"按钮

{

x=Double.parseDouble(tf1.getText().trim())

tf1.setText(""+(0.01*x))

str.setLength(0)

y=0d

}

else if(e2.getSource()==b21)//单击了"1/X"按钮

{

x=Double.parseDouble(tf1.getText().trim())

if(x==0)

{

tf1.setText("除数不能为零")

}

else

{

tf1.setText(""+(1/x))

}

str.setLength(0)

y=0d

}

else if(e2.getSource()==b3)//MC为清除内存

{

m=0d

tf2.setText("")

str.setLength(0)

}

else if(e2.getSource()==b4)//MR为重新调用存储的数据

{

if(tf2.getText().trim()!="")//有记忆数字

{

tf1.setText(""+m)

}

}

else if(e2.getSource()==b5)//MS为存储显示的数据

{

m=Double.parseDouble(tf1.getText().trim())

tf2.setText("M")

tf1.setText("0")

str.setLength(0)

}

else if(e2.getSource()==b6)//M+为将显示的数字与已经存储的数据相加要查看新的数字单击MR

{

m=m+Double.parseDouble(tf1.getText().trim())

}

else//选择的是其他的按钮

{

if(e2.getSource()==b22)//如果选择的是"0"这个数字键

{

if(tf1.getText().trim().equals("0"))//如果显示屏显示的为零不做 *** 作

{

}

else

{

tf1.setText(str.append(e2.getActionCommand()).toString())

y=Double.parseDouble(tf1.getText().trim())

}

}

else if(e2.getSource()==b0)//选择的是“BackSpace”按钮

{

if(!tf1.getText().trim().equals("0"))//如果显示屏显示的不是零

{

if(str.length()!=1)

{

tf1.setText(str.delete(str.length()-1,str.length()).toString())//可能抛出字符串越界异常

}

else

{

tf1.setText("0")

str.setLength(0)

}

}

y=Double.parseDouble(tf1.getText().trim())

}

else//其他的数字键

{

tf1.setText(str.append(e2.getActionCommand()).toString())

y=Double.parseDouble(tf1.getText().trim())

}

}

}

catch(NumberFormatException e){

tf1.setText("数字格式异常")

}

catch(StringIndexOutOfBoundsException e){

tf1.setText("字符串索引越界")

}

}

}

public static void main(String args[])

{

new Counter()

}

}

4、调试结果

5、实习体会

二。

1。People.java

public class People {

//性别(sex)及出生日期(date);方法成员有:获取人的性别和出生日期及构造方法。要求构造方法可以设置性别和出生日期的初始值。

private int sex

private Date birth

public People (int sex, Date birth) {

this.sex = sex

this.birth = birth

}

public int getSex() {

return this.sex

}

public Date getBirth() {

return this.birth

}

}

2。Student.java

public class Student extends People{

private int sex

private Date birth

private String name

private int stuno

private double grate

private String studentNative

public Student(int sex, Date birth, String name, int stuno, double grate, String studentNative) {

super(sex, birth)

this.name = name

this.stuno = stuno

this.grate = grate

this.studentNative = studentNative

}

public Date getBirth() {

return birth

}

public double getGrate() {

return grate

}

public String getName() {

return name

}

public int getSex() {

return sex

}

public String getStudentNative() {

return studentNative

}

public int getStuno() {

return stuno

}

}

3。测试类自己编写就好了,创建一个People和Student的对象,然后设置值,取值就可以了。

五。

1.构造方法没有返回值,方法名和类名一样.

2.继承是指子类可以拥有父类的方法和属性;多态是指父类的引用可以指向子类对象的实例

3.重写

4.重载

其他的没什么了,自己完成以下吧。O(∩_∩)O~

【专升本快速报名和免费咨询:https://www.87dh.com/xl/ 】福州理工学院专升本计算机科学与技术专业介绍已经公布,从专业简介、特色优势、师资队伍、主要课程及就业方向等几个方面做了详细讲解。详情如下:

福州理工学院专升本计算机科学与技术专业介绍

点击查看:福建统招专升本视频课程

点击查看:福建统招专升本题库试题

专业名称:计算机科学与技术

学科:工学

门类:计算机类

修业年限:四年

授予学位:工学学士

专业培养目标:

本专业培养适应我国社会主义现代化建设需要,德、智、体全面发展,具有良好的科学素养和人文知识背景,较系统地掌握计算机科学与技术的基本理论知识,具有较强地实践应用能力与知识创新能力,在互联网信息等相关领域,特别是云计算大数据领域从事嵌入式系统开发、云平台组建、云平台中间件应用与开发、云平台应用系统开发等工作的应用型工程技术人才。

专业培养要求:

本专业学生主要学习计算机科学与技术的基础理论和基本知识,接受从事研究与应用计算机的基本训练,使学生具有较强的分析问题和解决实际问题能力,以及工程应用开发的能力,并针对相关合作企业或行业技术培养学生的实践能力。毕业生应获得以下几个方面的知识和能力:

1.系统掌握计算机科学与技术的基本理论与基本知识

2.掌握计算机系统的分析和设计的基本方法

3.熟练掌握一门外语

4.具有研究开发计算机软硬件系统的基本能力

5.了解本专业领域的理论前沿和发展动态。

6.掌握文献检索、资料查询的基本方法,具有一定的科学创新、开发、工程应用和管理能力。

7.具有工程意识、创新意识、经济意识和管理意识,掌握一定的经济学与管理学的知识,具有较强的工作适应能力,团队协作能力,组织管理能力。

8.具有较强的云存储或嵌入式系统的设计开发和实施能力,能够从事相对应的工作,尤其是云存储平台的开发、应用和安全维护等方面的工作。

专业特色:产学研相结合

福州理工学院是国脉科技股份有限公司主办的学院。国脉科技股份有限公司依托物联网大数据运营平台和国脉云健康医学中心建设,进一步深化大数据、云计算等核心业务在重点行业的布局,已积累并在未来继续向本专业提供强力有的智力支持!更同时拥有福建慧翰微电子有限公司中来自美国贝尔实验室的顶尖科学家团队以及福建国脉圣桥网络技术有限公司资深研发团队的加盟!

作为一个具有系统集成资质并且实力雄厚口碑良好的的企业,国脉科技股份有限公司积极为省内的各大中小型企业、医院、电力行业等等提供广泛服务。与中国普天信息产业股份有限公司签订了合资组建“中国下一代信息产业研发及生产南方基地项目”的战略合作协议,预计投资30亿元,将为本专业提供一个实实在在的产学研大平台国脉科技股份有公司与福州市科学技术协会签订了共建国脉科学园与中国科协青年科学家福州活动基地的合作协议,根据该协议将设置国际学术交流中心、院士之家、开放实验室、研发中心等配套服务设施,最终形成一个功能完善的产学研综合体。

学院与公司的性质决定了所开设的计算机科学与技术专业可以得到计算机相关业界的有力支持,保证了产学研合作教育的顺利实施,有助于提高计算机科学与技术专业的人才培养质量。学院以TMT(Technology, Media, Telecom)行业为背景,以大数据云计算为核心,建立专业指导委员会,定期进行研讨,针对专业发展和社会需求的变化,对课程设置、培养目标、培养方案等进行合理化更新。

主要课程:

电路与模拟电子技术、数字电子技术、离散数学、C语言程序设计、数据结构与算法、面向对象程序设计、计算机组成原理、计算机 *** 作系统、数据库原理及应用、Java语言程序设计、计算机网络技术、编译原理、软件工程。

主要实践性教学环节:

对于应用型人才的能力培养,实践教学环节是极为重要的教学途径,各类集中性实践教学环节的基本构成安排如下:

专业教育实践:专业基础C语言课程设计,培养学生结构化、模块化程序设计的能力及调试程序的技巧和软件设计的能力。

数据结构课程设计:通过上机调试,掌握各种数据结构及其特点,培养学生特定数据结构上的算法,来解决计算机应用实际问题的能力。 数据库原理课程设计:掌握数据库原理以及数据库开发及访问技术。

面向对象程序设计课程实训:掌握基于面向对象语言的应用程序开发技术及数据库访问技术。

计算机网络课程设计:掌握计算机网络规划、绘制网络拓扑或结构图、IP规划、网络布线等实践能力。

计算机 *** 作系统课程设计:掌握计算机系统、进程概念的理解,加强分析、修改和设计 *** 作系统的能力。

专业技能/专业基础:单片机技术课程设计(方向1限选),培养学生数字电路和单片机只是解决电子信息的常见实际问题的能力,积累单片机系统开发经验。云平台构建课程设计(方向2限选),培养学生利用存储技术、计算平台、消息驱动框架和API架构设计等知识,来开发云平台,积累工程经验。云服务软件课程设计(方向3限选),培养学生利用云中间件、云计算系统开发云服务的应用软件,积累工程经验。

校企合作创新创业实践:通过模拟大学生自主创新创业,培养和提高学生实践创新能力,锻炼学生的社会实践能力,引导学生知识和实际 完美结合,用理论去指导实践,用实践去证明理论。

行业技术工程实践1:云存储设备工程实践,通过校企合作平台,让学生在校所学与企业实践有机结合,在学习的过程中得到历练,掌握云存储设备工程的流程。行业技术工程实践2:云平台系统工程实践,通过校企合作平台,让学生理论联系实际,让学校和企业的设备、技术实现优势互补、资源共享,让学生在学习的过程中得到历练,掌握云平台中间件设计流程和方法等。行业技术工程实践3:云平台应用设计工程实践,通过校企合作平台,让学生在校所学与企业实践有机结合,让学校和企业的设备、技术实现优势互补、资源共享,让学生在学习的过程中得到历练,掌握云安全技术设计流程和方法等。

典型就业岗位:

云计算运维工程师,云计算中间件工程师,云计算软件服务工程师,大数据开发工程师,软件开发工程师,软件测试工程师,嵌入式开发工程师,嵌入式测试工程师,云存储售前工程师等。

典型就业企业:

国脉科技股份有限公司、网龙网络控股有限公司、星网锐捷网络有限公司、深圳华为技术有限公司、中兴通讯股份有限公司、新大陆集团、神州数码有限公司等 。

福州理工学院专升本专业介绍:计算机科学与技术专业已经公布,更多福建专升本资讯,请关注福建专升本栏目页面。

相关阅读:2023年各省专升本报名指南

专升本有疑问、不知道如何总结专升本考点内容、不清楚专升本报名当地政策,点击底部咨询官网,免费领取复习资料:https://www.87dh.com/xl/


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7764159.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-09
下一篇 2023-04-09

发表评论

登录后才能评论

评论列表(0条)

保存