淮海工学院java实验二
实验三-Java深入面向对象编程(2)-陈正宁-2015123349

淮海工学院计算机工程学院实验报告书课程名:面向对象程序设计A实验题目: JA V A深入面向对象编程(2)班级:软嵌151学号:2015123349姓名:陈正宁一、实验目的(1)通过实验,进一步理解包的作用,并能够运用包对程序中的类进行逻辑组织;(2)通过实验,进一步掌握接口的定义方法,理解通过接口实现多重继承的原理;(3)通过实验,进一步理解Java的异常处理机制,能够自定义异常来表达特殊的逻辑错误,并能够抛出和捕获用户自定义的异常。
二、实验内容(1)首先,分别编写三个Java源程序,每个源程序中只包含一个类的定义,每个类要有至少两个属性,至少一个构造函数,至少两个能够读取或设置属性的方法,一个toString()方法;再定义第四个源程序,其中包含主类(测试类)的定义,主类中包含main()方法,在main()方法体中,创建以上三个类的对象,并调用相关的方法,完成属性的设置和对象信息的输出。
通过该部分实验,可以体会包(无名包或命名包)的作用。
(2)首先,定义两个接口,每个接口中都包含至少一个static final属性和至少一个public abstarct方法;然后定义一个类,该类是非抽象类并且实现了上述两个接口。
(3)首先,定义一个异常类salaryException,它对应的错误描述信息是“所赋的工资值****不合理,请检查后重新赋值!”。
接下来,定义一个员工类Employee,其中包含工号、姓名、性别、所在部门、工资等属性,为该类定义至少一个构造函数,再定义一个修改工资的方法,该方法接收一个参数,当该参数的值小于原先工资值时,抛出salaryException异常对象。
最后,定义一个主类(测试类),其中包含main()方法,在该方法中,创建Employee对象并调用修改工资的方法。
要注意:由于该方法在执行的过程可能抛出异常,所以该语句必须放到try{}子句中,后跟catch(salaryException e) {}子句。
Java2实用教程(第4版)实验指导与习题解答_IT168文库(精)

上机实践1初识Java实验1一个简单的应用程序1.相关知识点Java语言的出现是源于对独立于平台语言的需要,即这种语言编写的程序不会因为芯片的变化而发生无法运行或出现运行错误的情况。
目前,随着网络的迅速发展,Java语言的优势越发明显,Java已经成为网络时代最重要的语言之一。
Sun公司要实现“编写一次,到处运行”(Write once,run anywhere的目标,就必须提供相应的Java运行平台,目前Java运行平台主要分为下列3个版本。
(1Java SE:称为Java标准版或Java 标准平台。
Java SE 提供了标准的JDK开发平台。
利用该平台可以开发Java桌面应用程序和低端的服务器应用程序,也可以开发Java Applet 程序。
当前成熟的新的JDK版本为JDK 1.6。
(2Java EE:称为Java企业版或Java企业平台。
使用J2EE可以构建企业级的服务应用,Java EE平台包含了Java SE平台,并增加了附加类库,以便支持目录管理、交易管理和企业级消息处理等功能。
(3Java ME:称为Java微型版或Java小型平台。
Java ME是一种很小的Java运行环境,用于嵌入式的消费产品中,如移动电话、掌上电脑或其他无线设备等。
无论上述哪种Java运行平台都包括了相应的Java虚拟机(Java Virtual Machine,虚拟机负责将字节码文件(包括程序使用的类库中的字节码加载到内存,然后采用解释方式来执行字节码文件,即根据相应硬件的机器指令翻译一句执行一句。
J2SE平台是学习掌握Java语言的最佳平台,而掌握J2SE又是进一步学习J2EE和J2ME所必需的。
2.实验目的本实验的目的是让学生掌握开发Java应用程序的三个步骤:编写源文件、编译源文件和运行应用程序。
3.实验要求编写一个简单的Java应用程序,该程序在命令行窗口输出两行文字:“你好,欢迎学习Java”和“We are students”。
java实验二

航班显示系统姓名张韫学号 160341141小组编号第27组__ 小组其他成员的学号160341101 16034127 160341136实验日期 2018年11 月14 日实验报告日期 2018年 11 月 18日成绩 ___________________一. 实验目的1、理解并掌握 Java 中接口的基本概念和具体应用 2、熟悉并熟练掌握 Java 中线程的定义 3、熟悉并掌握多线程间的消息传递、同步和调度等基本操作二. 实验环境EclipseJDK三. 实验实际完成内容及结果分析任务:完成航班系统中对行李提取引导的操作实验完成内容:package zhangyun1;import java.io.*;import java.util.regex.Matcher;import java.util.regex.Pattern;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.io.InputStreamReader;import java.util.Scanner;import java.util.concurrent.ConcurrentHashMap;import java.util.concurrent.LinkedBlockingDeque;public class FDSdata {LinkedBlockingDeque<String> lines = new LinkedBlockingDeque<String>();LinkedBlockingDeque<String> str = new LinkedBlockingDeque<String>();ConcurrentHashMap<String, String> key = new ConcurrentHashMap<String, String>();public static void main(String[] args) {FDSdata fdSdata = new FDSdata();fdSdata.new ReadThread().start();fdSdata.new ExtractThread().start();fdSdata.new AnalysisThread().start();}class ReadThread extends Thread { //读线程@Overridepublic void run() {String line = null;try (Scanner sc = new Scanner(new FileInputStream("fdsdata20181025(0623-0624).txt"))) {while (sc.hasNextLine()) {line = sc.nextLine();lines.put(line);}lines.put("STOP");} catch (FileNotFoundException e) {e.printStackTrace();} catch (InterruptedException e) {e.printStackTrace();}}}class ExtractThread extends Thread { //提取线程public void run() {String getline=null;String tmp = null;String result=null;String str2 = "[\\s\\S]*{50}DFME(.*)";while (true) {try {getline=lines.take();if(getline.equals("STOP"))break;//航班号if (getline.matches(str2)) {Pattern p = pile("ffid=(.*?),");Matcher m = p.matcher(getline);if(m.find()) tmp= m.group(1);else tmp="null";result=tmp+" ";}//共享航班号if (getline.matches(str2)) {Pattern p = pile("sfno=(.*?)[,\\]]");Matcher m = p.matcher(getline);if(m.find()) tmp= m.group(1);else {tmp="null";}result+=tmp+" ";}//始发站if (getline.matches(str2)) {Pattern p = pile("arno=1, apcd=(.*?)[,\\]]");Matcher m = p.matcher(getline);if(m.find()) tmp= m.group(1);else {tmp="null"; }result+=tmp+" ";}//经停站if (getline.matches(str2)) {Pattern p = pile("arno=2, apcd=(.*?),");Matcher m = p.matcher(getline);if(m.find()){ //如果有2号航站,也有3号航站,那么2号航站的apcd就是经停站Pattern p1=pile("arno=3, apcd=(.*?),");Matcher m1 = p1.matcher(getline);if(m1.find()) tmp= m.group(1);else {tmp="null"; };//如果有2号航站,没有3号航站,那么就没有经停站}else {tmp="null"; };//如果没有2号航站,那么就没有经停站result+=tmp+" ";}//转盘编号if (getline.matches(str2)) {Pattern p = pile("BELT.*?code=(.*?),");Matcher m = p.matcher(getline);if(m.find()) tmp= m.group(1);else {tmp="null"; }result+=tmp+" ";}str.put(result);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}class AnalysisThread extends Thread {public void run() {String line = null;String fd = null;int n = 0;String[] result1 = null;while (true) {System.out.println("------------------------------------------------------------------------------------------------------");System.out.println("航班ID 共享航班号起始站经停站转盘编号");while (n++ < 10) {try {line = str.take();} catch (InterruptedException e) {e.printStackTrace();}if (line.equals("STOP")) {for (String value : key.values()) {result1= value.split(" ");System.out.println(result1[0] + " " + result1[1] + " " + result1[2] + " " + result1[3]+" " + result1[4]);}return;}fd = line.split(" ")[0];key.put(fd, line);}for (String value : key.values()) {result1 = value.split(" ");System.out.println(result1[0] + " " + result1[1] + " " + result1[2] + " " + result1[3]+" " + result1[4]);}key.clear();n = 0;try {sleep(5000);} catch (InterruptedException e) {e.printStackTrace();}}}}}实验结果:四. 通过本次实验你掌握了哪些知识?(1)首先对java编程有了更深入的了解,不再像刚开始那样不是很理解某些语句(2)因为实验一用的正则表达式,所以实验二也是用正则表达式来做,加深了Pattern和Matcher对象的使用和正则表达式的理解运用。
2实验二数据库基本语句淮海工学院

淮海工学院计算机工程学院实验报告书课程名《 数据库原理与应用A 》题目:实验一基本语句的使用班级:网络***学号: 20131227**姓名: *****评语:成绩:指导教师:批阅时间:年月日1、 实验内容或题目数据库基本语句2、实验目的与要求(1) 掌握Sql server 2005基本语句的使用。
(2)进行实验操作。
3、实验步骤与源程序⑴ 实验步骤掌握Sql server 2005基本语句的使用,主要是数据库的创建和查询。
练习Sql server 2005基本语句的使用完成实验报告⑵ 编写源代码创建一个名称为test的数据库,并设定数据文件的文件位置文件名称、大小、数据增长及其事务日志文件的相关信息。
create database test1on(name=测试数据,filename='C:\sql sever\测试数据.MDF',size=10MB,MAXSIZE= 50MB,filegrowth= 5MB)log on(name=测试数据日志,filename='C:\sql sever\测试数据日志.LDF',size=10MB,MAXSIZE= 20MB,filegrowth= 5MB )在test1数据库中建立一个BOOK表,并指定bid为主键,而bname为非空use test1create table book(bid int not null primary key,bname char(8)not null,authorid char(10))首先创建一个authors表,然后创建book表,并将authorid列关联到authors的authorid列use test1create table authors(authorid int not null primary key,authorname char(20),address char(30))create table book(bid int not null primary key,bname char(8)not null,authorid int foreign key referencesanthors(authorid))向student表中插入一个学生记录use schoolinsert into student values('200','曾雷','女','1992-2-3','0035')将student表中上例插入学生记录性别修改为“男”USE schoolupdate studentset性别='男'WHERE学号='200'删除学号为‘200’的学生记录USE schoolDELETE student WHERE学号= ‘200’查询教师所有的单位即不重复的单位列use schoolselect distinct单位from teacher以课程号升序、分数降序显示score表的所有记录,然后按班号递减排序后输出use schoolselect*from scoreorder by课程号,分数desc查询‘1031’班的学生人数use schoolselect count(*)as'1031班人数'from studentwhere班号='1031'查询score表中至少有5名学生选修的并以3开头的课程号的平均分数use schoolselect课程号,avg(分数)as'平均分'from scorewhere课程号like'3%'group by课程号having count(*)>5查询所有学生的姓名、课程号和分数列use schoolselect student.姓名,score.课程号,score.分数from student,scorewhere student.学号= score.学号使用命令在school数据库中建立了一个grade表use schoolcreate table grade(low int,upp int,rank char(1)) insert into grade values(90,100,'A')insert into grade values(80,89,'B')insert into grade values(70,79,'C')insert into grade values(60,69,'D')insert into grade values(0,59,'E')查询与学号为103的学生同年出生的所有学生的学号和出生日期列use schoolselect学号,姓名,出生日期from studentwhere year(出生日期)=(select year(出生日期)from studentwhere学号='103')查询分数高于平均分的所有学生成绩记录use schoolselect学号,课程号,分数from scorewhere分数>(select avg(分数)from score )查询所有‘女’教师和‘女’学生的姓名、性别和出生日期use schoolselect姓名,性别,出生日期from teacher where性别='女'unionselect姓名,性别,出生日期from student where性别='女'查询所有学生成绩记录,并将空值作为0处理use schoolselect学号,课程号,isnull(分数,0)as'分数'from score在为小数数值型数据赋值时,应保证所赋数据整数部分的位小于或者等于定义的长度否则会出现溢出错误。
java2实用教程实验代码及答案

上机实践1 初识JA V A (3)实验1一个简单的应用程序 (3)实验2一个简单的J A V A A PPLET程序 (3)实验3联合编译 (4)上机实践2 基本数据类型与控制语句 (5)实验1输出希腊字母表 (5)实验2回文数 (6)实验3猜数字游戏 (8)上机实践3 类与对象 (9)实验1三角形、梯形和圆形的类封装 (9)实验2实例成员与类成员 (12)实验3使用PACKAGE语句与IMPORT语句 (14)上机实践4 继承与接口 (16)实验1继承 (16)实验2上转型对象 (19)实验3接口回调 (21)上机实践5 字符串、时间与数字 (23)实验1S TRING类的常用方法 (23)实验2比较日期的大小 (24)实验3处理大整数 (25)上机实践6 组件及事件处理 (26)实验1算术测试 (26)实验2信号灯 (29)实验3布局与日历 (31)上机实践7 组件及事件处理2 (35)实验1方程求根 (35)实验2字体对话框 (38)实验3英语单词拼写训练 (41)上机实践8 多线程 (45)实验1汉字打字练习 (45)实验2旋转的行星 (47)实验3双线程接力 (51)上机实践9 输入输出流 (54)实验1学读汉字 (54)实验2统计英文单词字 (57)实验2读取Z IP文件 (61)上机实践10 JAV A 中的网络编程 (62)实验1读取服务器端文件 (62)实验2使用套接字读取服务器端对象 (64)实验3基于UDP的图像传输 (67)上机实践11 数据结构 (71)实验1扫雷小游戏 (71)实验2排序与查找 (76)实验3使用T REE S ET排序 (77)上机实践12 JAV A SWING (79)实验1JL AYERED P ANE分层窗格 (79)实验2使用表格显示日历 (80)实验3多文档界面(MDI) (83)上机实践1 初识Java实验1 一个简单的应用程序1.答案:【代码1】:System.out.println("你好,很高兴学习Java") ;【代码2】:System.out.println("We are students") ;2.模板代码Hello.javapublic class Hello{public static void main (String args[ ]){【代码1】//命令行窗口输出"你好,很高兴学习Java"A a=new A();a.fA();}}class A{void fA(){【代码2】//命令行窗口输出"We are students"}}实验2 一个简单的Java Applet程序1.答案:【代码1】:g.drawString("这是一个Java Applet 程序",10,30);【代码2】:g.drawString("我改变了字体",20,50);2.模板代码FirstApplet.javaimport java.applet.*;import java.awt.*;public class FirstApplet extends Applet{public void paint(Graphics g){g.setColor(Color.blue);【代码1】//在Java Applet中绘制一行文字:“这是一个Java Applet 程序”g.setColor(Color.red);g.setFont(new Font("宋体",Font.BOLD,36));【代码2】//在Java Applet中绘制一行文字:“我改变了字体”}}实验3 联合编译1.答案:【代码1】:System.out.println("你好,只需编译我");【代码2】:System.out.println("I am A");【代码3】:System.out.println("I am B");【代码4】:System.out.println("I am C");2.模板代码模板1:Hello.javapublic class MainClass{public static void main (String args[ ]){【代码1】 //命令行窗口输出"你好,只需编译我"A a=new A();a.fA();B b=new B();b.fB();}}模板2 :A.javapublic class A{void fA(){【代码2】 //命令行窗口输出"I am A"}}模板3 :B.javapublic class B{void fB(){【代码3】 //命令行窗口输出"I am B"}}模板4 :C.javapublic class C{void fC(){【代码4】 //命令行窗口输出"I am C"}}上机实践2 基本数据类型与控制语句实验1 输出希腊字母表1.答案:【代码1】:startPosition=(int)cStart;【代码2】:endPosition=(int)cEnd ;【代码3】:c=(char)i;2.模板代码GreekAlphabet.javapublic class GreekAlphabet{public static void main (String args[ ]){int startPosition=0,endPosition=0;char cStart='α',cEnd='ω';【代码1】//cStart做int型转换据运算,并将结果赋值给startPosition【代码2】//cEnd做int型转换运算,并将结果赋值给endPositionSystem.out.println("希腊字母\'α\'在unicode表中的顺序位置:"+(int)c);System.out.println("希腊字母表:");for(int i=startPosition;i<=endPosition;i++){char c='\0';【代码3】//i做char型转换运算,并将结果赋值给cSystem.out.print(" "+c);if((i-startPosition+1)%10==0)System.out.println("");}}}实验2 回文数1.答案:【代码1】:number<=99999&&number>=1【代码2】:d5=number/10000;【代码3】:d4=number%10000/1000;【代码4】:d3=number%1000/100;【代码5】:d5!=0【代码6】:d1==d5&&d2==d4【代码7】:d4!=0【代码8】:d1==d4&&d2==d3【代码9】:d3!=0【代码10】:d1==d32.模板代码Number.javaimport javax.swing.JOptionPane;public class Number{public static void main(String args[]){int number=0,d5,d4,d3,d2,d1;String str=JOptionPane.showInputDialog("输入一个1至99999之间的数");number=Integer.parseInt(str);if(【代码1】) //判断number在1至99999之间的条件{【代码2】//计算number的最高位(万位)d5【代码3】//计算number的千位d4【代码4】//计算number的百位d3d2=number%100/10;d1=number%10;if(【代码5】) //判断number是5位数的条件{System.out.println(number+"是5位数");if(【代码6】) //判断number是回文数的条件{System.out.println(number+"是回文数");}else{System.out.println(number+"不是回文数");}}else if(【代码7】) //判断number是4位数的条件{System.out.println(number+"是4位数");if(【代码8】) //判断number是回文数的条件码{System.out.println(number+"是回文数");}else{System.out.println(number+"不是回文数");}}else if(【代码9】) //判断number是3位数的条件{System.out.println(number+"是3位数");if(【代码10】) //判断number是回文数的条件{System.out.println(number+"是回文数");}else{System.out.println(number+"不是回文数");}}else if(d2!=0){System.out.println(number+"是2位数");if(d1==d2){System.out.println(number+"是回文数");}else{System.out.println(number+"不是回文数");}}else if(d1!=0){System.out.println(number+"是1位数");System.out.println(number+"是回文数");}}else{System.out.printf("\n%d不在1至99999之间",number);}}}实验3 猜数字游戏1.答案:【代码1】:yourGuess!=realNumber【代码2】:yourGuess>realNumber【代码3】:yourGuess<realNumber2.模板代码GuessNumber.javaimport javax.swing.JOptionPane;public class GuessNumber{public static void main (String args[ ]){System.out.println("给你一个1至100之间的整数,请猜测这个数");int realNumber=(int)(Math.random()*100)+1;int yourGuess=0;String str=JOptionPane.showInputDialog("输入您的猜测:");yourGuess=Integer.parseInt(str);while(【代码1】) //循环条件{if(【代码2】) //条件代码{str=JOptionPane.showInputDialog("猜大了,再输入你的猜测:");yourGuess=Integer.parseInt(str);}else if(【代码3】) //条件代码{str=JOptionPane.showInputDialog("猜小了,再输入你的猜测:");yourGuess=Integer.parseInt(str);}}System.out.println("猜对了!");}}上机实践3 类与对象实验1 三角形、梯形和圆形的类封装1.答案:【代码1】:sideA=a;sideB=b;sideC=c;【代码2】:a+b>c&&a+c>b&&c+b>a【代码3】:boo=true;【代码4】:boo=false;【代码5】:if(boo){length=sideA+sideB+sideC;return length;}else{System.out.println("不是一个三角形,不能计算周长");return 0;}【代码6】:sideA=a;sideB=b;sideC=c;【代码7】:a+b>c&&a+c>b&&c+b>a【代码8】:boo=true;【代码9】:boo=false;【代码10】:above=a;bottom=b;height=h;【代码11】:area=(above+bottom)/2*height;return area;【代码12】:radius=r;【代码13】:return 3.14*radius*radius;【代码14】:return 3.14*2*radius;【代码15】:circle=new Circle(10);【代码16】:trangle=new Trangle(3,4,5);【代码17】:lader=new Lader(3,4,10);【代码18】:length=circle.getLength();【代码19】:area=circle.getArea();【代码20】:length=trangle.getLength();【代码21】:area=trangle.getArea();【代码22】:area=lader.getArea();【代码23】:trangle.setABC(12,34,1);【代码24】:area=trangle.getArea();【代码25】:length=trangle.getLength();2.模板代码AreaAndLength.javaclass Trangle{double sideA,sideB,sideC,area,length;boolean boo;public Trangle(double a,double b,double c){【代码1】//参数a,b,c分别赋值给sideA,sideB,sideCif(【代码2】) //a,b,c构成三角形的条件表达式{【代码3】//给boo赋值。
java实验二附答案

Java实验二实验二类与对象实验目的1、掌握面向对象程序设计的方法和Java作为面向对象程序设计语言的特点;2、掌握修饰符和构造方法的使用规则;3、掌握接口的特点、结构、调用和继承;4、掌握如何创建包,通过包如何管理类;5、掌握Java的继承机制和实现多态的方法实验内容(1)定义一个类Student,属性为学号、姓名和成绩;方法为增加记录SetRecord和得到记录GetRecord。
SetRecord赋值学号、姓名和成绩,GetRecord通过学号得到考生的成绩。
通过实例验证编程无误。
(2)定义一个接口Area,其中包含一个计算面积的抽象方法calculateArea(),然后设计Circle和Rectan两个类实现这个接口的方法calculateArea(),分别计算圆和矩形的面积。
通过实例验证编程无误。
(3)假定根据学生的3门学位课程的分数决定其是否可以拿到学位,对于本科生,如果3门课程的平均分数超过60分即表示通过,而对于研究生,则需要平均分超过80分才能够通过。
根据上述要求,请完成以下Java类的设计:(i)设计一个基类Student描述学生的共同特征。
(ii)设计一个描述本科生的类Undergraduate,该类继承并扩展Student类。
(iii)设计一个描述研究生的类Graduate,该类继承并扩展Student类。
(iv)设计一个测试类StudentDemo,分别创建本科生和研究生这两个类的对象,并输出相关信息附实验一名称是Java语言基础实验报告分为以下几个部分一实验名称二实验目的三实验仪器四实验步骤(把你的操作一步一步写清楚,java 程序代码要写)五实验结果(程序运行后的结果就是DOS环境下运行出来的结果写在实验报告上)六实验讨论(实验过程中的错误及如何改正,你的心得体会等)答案:(1)定义一个类Student,属性为学号、姓名和成绩;方法为增加记录SetRecord和得到记录GetRecord。
淮海工学院数据结构第二次实验

淮海工学院计算机科学系实验报告书课程名:《数据结构》题目:线性数据结构实验(栈与队列及其应用)班级:软嵌151学号:2015123352姓名:韩吉线性表算法实现与应用报告要求1目的与要求:1)掌握栈与队列的数据类型描述及特点;2)掌握栈的顺序和链式存储存表示与基本算法的实现;3)掌握队列的链式和循环存储表示与基本操作算法实现;4) 掌握栈与队列在实际问题中的应用和基本编程技巧;5)按照实验题目要求,独立完成实际程序的编写编写、调试和运行,并通过用例的运行过程抓获相关屏面验证程序设计的正确性;7)希望大家过一个丰富多彩的国庆节,抽出一定时间圆满完成实验,并于第6周周二以前按时提交实验报告,逾期按照旷交处理。
2 实验内容或题目(一)必做题:1、实现顺序栈的创建(初始化)、压入(插入)操作(数据、弹出(删除)元素类型自己选取,如整型、字符型等,或参照书上算法选取数据类型),并给出栈的每次操作变化状态;2、实现链栈的创建(初始化)、压入(插入)、弹出(删除)操作(数据元素类型自己选取,如整型、字符型等,或参照书上算法选取数据类型),要求给出栈的操作变化过程;3、实现循环队列的创建、进队、出队等基本操作(数据元素类型自己选取,如整型、字符型等,或参照书上算法选取数据类型),并实时给出队列的操作变化状态;4、实现链式队列的创建、进队、出队等基本操作(数据元素类型自己选取,如整型、字符型等,或参照书上算法选取数据类型),并实时给出队列的操作变化状态;(注意:必做题需用一个主程序实现所有功能)(二)选做题(视自己能力而定,数量不限):任选下列一个或多个栈或队列应用源程序(已经发给学委),并阅读、调试和运行程序,而后给出程序功能分析和实例运行演示;1、实现表达式求值算法程序;2、用递归算法实现汉诺塔问题算法程序;3、使用循环队列实现打印杨辉三角形算法程序。
3 实验步骤与源程序#include<stdio.h>#include<stdlib.h>#include <windows.h>#define TRUE 1#define FALSE 0#define Stack_Size 50#define MAXSIZE 5void mainmenu();/*********************************************//*顺序栈*/typedef struct{int elem[Stack_Size];int top;}SeqStack;/*链栈*/typedef struct node{int data;struct node *next;}LinkStackNode;/*循环队列*/typedef struct{int element[MAXSIZE];int front;int rear;}SeqQueue;/*链式队列*/typedef struct Node{int data;struct Node *next;}LinkQueueNode;typedef struct{LinkQueueNode *front;LinkQueueNode *rear;}LinkQueue;/*********************************************//********************顺序栈************************/ /*构造一个空栈S*/void InitStack(SeqStack *S){S->top = -1;}/*进栈*/int Push(SeqStack *S,int x){if(S->top==(Stack_Size-1))return(FALSE); /*栈已满*/S->top++;S->elem[S->top]=x;return(TRUE);}/*出栈*/int Pop(SeqStack *S,int *x){/* 将栈S的栈顶元素弹出,放到x所指的存储空间中 */if(S->top==-1) /*栈为空*/return(FALSE);else{*x=S->elem[S->top];S->top--; /* 修改栈顶指针 */return(TRUE);}}/*取栈顶元素*/int GetTop(SeqStack *S, int *x){/* 将栈S的栈顶元素弹出,放到x所指的存储空间中,但栈顶指针保持不变 */ if(S->top==-1) /*栈为空*/return(FALSE);else{*x = S->elem[S->top];return(TRUE);}}/**************************************************//********************链栈**************************//*初始化*/void InitStack1(LinkStackNode *top){ //构造一个空栈top = (LinkStackNode *)malloc(sizeof(LinkStackNode));if(!top)printf("OVERFLOW\n");top = NULL;}/*进栈操作。
java实验报告实验2答案

实验二熟悉Applet,GUI编程实验目的:本实验旨在巩固同学们对上课所讲Applet,异常处理,java的控制加深理解,图形用户界面基本组件窗口、按钮、文本框、选择框、滚动条等的使用方法,对java的语法和编程有一个更加深入的理解,为同学们以后的能够用Java进行独立地编写桌面程序打下一定的基础。
了解如何使用布局管理器对组件进行管理,以及如何使用Java的事件处理机制。
实验内容:创建一个java项目,命名为experiment2。
(如何创建项目参考《实验一》的项目创建方法。
)(一)创建图形用户界面图形用户界面(Graphic User Interface ,简称GUI)是为方便用户使用设计的窗口界面,在图形用户界面中用户可以看到什么就操作什么,取代了在字符方式下知道是什么后才能操作什么的方式。
组件(Component)是构成GUI的基本要素,通过对不同事件的响应来完成和用户的交互或组件之间的交互。
组件一般作为一个对象放置在容器(Container)内,容器是能容纳和排列组件的对象,如Applet、Panel(面板)、Frame(窗口)等。
通过容器的add方法把组件加入到容器中。
1.在Applet中添加标签、按钮并使用网格布局(1)程序功能在Applet 容器中添加组件标签、按钮,并使用网格布局管理器排列组件在容器中的位置。
(2)编写LX6_1.java 程序文件,源代码如下:import java.awt.*;import java.applet.Applet;public class LX6_1 extends Applet{Label l1;Button b1, b2, b3, b4, b5, b6;public void init(){setLayout(new GridLayout(3,3)); // 设置网格布局(3 行3 列共9 个网格)l1=new Label("标签1");b1 = new Button("按钮1");b2 = new Button("按钮2");b3 = new Button("按钮3");b4 = new Button("按钮4");add(l1);add(b1);add(b2);add(b3);add(new Label());add(b4);add(new Button("按钮5"));add( new Button("按钮6"));add(new Label("标签2"));}}(3)编译程序LX6_1.java。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
淮海工学院计算机工程学院实验报告书课程名:《面向对象程序设计A》题目:实验二Java面向对象编程初步(2)______ 班级:____软嵌151学号:2015123352姓名:韩吉_一.实验目的(1)通过实验,进一步掌握类的定义,尤其是类中方法(包含构造方法)的定义。
掌握对象的创建方法及对象成员变量和方法的调用;(2)通过编写图形界面的程序,完成对象的创建和调用;(3)能够通过类图来描述程序中类的结构。
二. 实验内容及要求(1)定义教师类Teacher,包含属性工号,姓名,性别,所在部门,职称,职位,专业,学历;定义若干个构造方法,完成对象的各种初始化需要;定义若干个分别能够获取和修改成员变量的方法,如获取工号/修改工号;获取学历/修改学历等;定义toString()方法,能够输出教师的所有相关信息。
(40分)(2)编写字符界面的程序,能够创建若干个教师对象,并输出教师的相关信息;(20分)(3)要求在报告中能够画出类图来描述类的结构(15分)(4)编写图形界面的程序,能够创建若干个教师对象,并输出教师的相关信息。
(25分)可以参照实验指导书中第二个实验的最后一个程序示例。
三. 实验步骤public class Teacher {String number;//工号String teachername;//姓名int age; //年龄String sex; //性别String degree;//学位String title;//职称String position;//职位String depart;//部门String major;//专业static String collegeName = "淮海工学院";Teacher(String number){this.number = number;}Teacher(String number,Stringteachername){this(number);this.teachername = teachername;}Teacher(String number,Stringteachername,int age){this(number, teachername);this.age = age;}Teacher(String number,Stringteachername,intage,String sex){this(number, teachername, age);this.sex = sex;}Teacher(String number,Stringteachername,intage,Stringsex,String degree){ this(number, teachername, age,sex);this.degree = degree;}Teacher(String number,Stringteachername,intage,Stringsex,Stringdegree,String title){ this(number, teachername, age, sex, degree);this.title = title;}Teacher(String number,Stringteachername,intage,Stringsex,Stringdegree,Stringtitle,String position){this(number, teachername, age, sex, degree,title);this.position = position;}Teacher(Stringnumber,Stringteachername,intage,Stringsex,Stringdegree,Stringtitle,Stringposition,String depart){this(number, teachername, age, sex, degree, title, position);this.depart = depart;}Teacher(Stringnumber,Stringteachername,intage,Stringsex,Stringdegree,Stringtitle,Stringposition,Stringdepa rt,String major){this(number, teachername, age, sex, degree, title, position, depart);this.major = major;}public void setdegree(String newdegree){degree = newdegree;}public void settitle(String newtitle){title = newtitle;}public void setposition(String newposition){position = newposition;}public void Setdepart(String newdepart){depart = newdepart;}public static String getCollegeName(){return collegeName;}public static void setCollegeName(String newCollegeName){collegeName=newCollegeName;}public String toString(){return "工号:" + number + ";姓名:" + teachername + ";年龄:" + age + ";性别:" + "" + sex + ";学位:" + degree + ";专业: " + major + ";职称:" + title +";职位:" + position + "所在部门:" + depart + ";所在大学" + collegeName;}}import java.util.Scanner;public classtestTeacher{public static void main(String args[]){int count=0;Scanner scanner=new Scanner(System.in);Teacher[] teachers =new Teacher[80];//创建Teacher对象,表示汪老师Teacher wang = new Teacher("1996000021","汪前进",45,"男"," 硕士","软件工程","副教授","系主任","软件工程系");teachers[count++] = wang;//创建Teacher对象,表示张老师Teacher zhang = new Teacher("2006000037","张键",38,"男"," 博士","计算机硬件","副教授","处长","计算机科学系");teachers[count++] = zhang;//创建Teacher对象,表示董老师Teacher dong = new Teacher("1981000038"," 董剑利",58,"男","硕士","数据结构","教授","班主任","软件工程系");teachers[count++] = dong;//创建Teacher对象,表示戴老师Teacher dai = new Teacher("2008000053","戴志强",40,"男"," 博士","机械自动化","副教授","副院长","机械工程系");teachers[count++] = dai;//创建Teacher对象,表示樊老师Teacher fan = new Teacher("2002000018","樊玲",35,"女"," 硕士","法学","讲师","辅导员","软件工程系");teachers[count++] = fan;//创建Teacher对象,表示李老师Teacher li = new Teacher("2009000035","李志敏",34,"女"," 博士","船舶与海洋","副教授","副院长","海洋工程系");teachers[count++] = li;//输出所有的教师的信息count--;for(inti=0;i <= count;i++)System.out.println(teachers[i]);//以下按姓名查找老师System.out.println("请输入待查找的老师姓名:");while(scanner.hasNextLine()){boolean find = false;String teacherName = scanner.nextLine();for(inti=0;i <= count;i++){if(teachers[i].teachername.contains(teacherName)){ find=true;System.out.println("找到"+teacherName);System.out.println(teachers[i]);}}if(find==false)System.out.println("未找到该教师!!");}}}publicclass Teacher{String tno; //教师工号String tname; //教师姓名int age; //年龄String tsex; //性别String tdegree; //学位String ttitle; //职称String tdept; //所在部门static String collegeName="淮海工学院";//定义了若干个构造函数,相互可以调用Teacher(String tno){ this.tno=tno; }Teacher(String tno,String tname){ this(tno);this.tname=tname;}Teacher(String tno,String tname,int age){ this(tno,tname);this.age=age;}Teacher(String tno,String tname,int age,String tsex){ this(tno,tname,age);this.tsex=tsex;}Teacher(String tno,String tname,int age,String tsex,String tdegree){ this(tno,tname,age,tsex);this.tdegree=tdegree;}Teacher(String tno,String tname,int age,String tsex,String tdegree,String ttitle) { this(tno,tname,age,tsex,tdegree);this.ttitle=ttitle;}Teacher(Stringtno,String tname,int age,String tsex,String tdegree,String ttitle,String tdept) { this(tno,tname,age,tsex,tdegree,ttitle);this.tdept=tdept;}publicvoid setDegree(String newDegree){tdegree=newDegree;}publicvoid setTitle(String newTitle){ttitle=newTitle;}publicstatic String getCollegeName(){return collegeName;}publicstaticvoid setCollegeName(String newCollegeName){collegeName=newCollegeName;}public String toString(){return"工号:"+tno+";姓名:"+tname+";年龄:"+age+";性别:"+tsex+";学位:"+tdegree+";\n 职称:"+ttitle+";所在部门"+tdept+";所在大学"+collegeName;}}import java.awt.*;import javax.swing.*;import java.awt.event.*;class myFrame extends JFrame implements ActionListener{JLabel lblTno,lblTname,lblTage,lblTsex,lblTdegree,lblTtitle,lblTdept;JTextField txtTno,txtTname,txtTage,txtTsex,txtTdegree,txtTtitle,txtTdept;JButton btnCreate,btnSearch,btnshowAll;JLabel prompt;JTextArea jta;ButtonGroup group = new ButtonGroup();JRadioButton radio1 = new JRadioButton("男");JRadioButton radio2 = new JRadioButton("女");Teacher[] teachers=new Teacher[80];int count=0;myFrame(){setTitle("创建教师对象,并查找");setLayout(new FlowLayout());setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);lblTno=new JLabel("请输入工号:");txtTno=new JTextField(10);add(lblTno); add(txtTno);lblTname=new JLabel("请输入姓名:");txtTname=new JTextField(10);add(lblTname); add(txtTname);lblTage=new JLabel("请输入年龄:");txtTage=new JTextField(10);add(lblTage); add(txtTage);// lblTsex=new JLabel("请输入性别:");// txtTsex=new JTextField(10);// add(lblTsex); add(txtTsex);add(new JLabel("性别: "));group.add(radio1);group.add(radio2);add(radio1);add(radio2);lblTdegree=new JLabel("请输入学位:");txtTdegree=new JTextField(10);add(lblTdegree); add(txtTdegree);lblTtitle=new JLabel("请输入职称:");txtTtitle=new JTextField(10);add(lblTtitle); add(txtTtitle);lblTdept=new JLabel("请输入部门:");txtTdept=new JTextField(10);add(lblTdept); add(txtTdept);btnCreate=new JButton("创建教师");btnSearch=new JButton("按姓名查询教师");btnshowAll=new JButton("显示所有教师");add(btnCreate);add(btnSearch);add(btnshowAll);prompt=new JLabel(" ");jta=new JTextArea(40,60);add(prompt);add(jta);btnCreate.addActionListener(this);btnSearch.addActionListener(this);btnshowAll.addActionListener(this);}publicvoid actionPerformed(ActionEvent e){if(e.getSource() == btnCreate){String sex = new String();if (radio1.isSelected()){sex = radio1.getText().toString();}else{sex = radio2.getText().toString();}Teacher teacher = new Teacher(txtTno.getText(), txtTname.getText(), Integer.parseInt(txtTage.getText()), sex, txtTdegree.getText(),txtTtitle.getText(), txtTdept.getText());teachers[count++] = teacher;prompt.setText("成功创建" + "第" + count + "个教师!!!");}if(e.getSource() == btnshowAll&&count> 0){jta.setText(" ");for(int i = 0; i<count; i++){jta.append(teachers[i] + "\n");}}if(e.getSource() == btnSearch){jta.setText(" ");boolean find = false;String teacherName = txtTname.getText();for(int i = 0; i<count; i++)if(teachers[i].tname.equals(teacherName)){find = true;prompt.setText("找到" + teacherName);jta.append(teachers[i] + "\n");}if(find == false){prompt.setText("未找到该教师!!!");;}}}}publicclass testTeacher{publicstaticvoid main(String args[]){myFrame mf=new myFrame();mf.setSize(800,600);mf.setVisible(true);}}四.实验结果(请自己补充完整)五.实验的分析体会(请自己补充完整)对于此次试验,本来要求较简单,老师也把代码发给学生,但我本来想将职称之类弄成下拉菜单,但做好后发现无法读入选中的内容,我也不会。