首页 > 精品范文库 > 4号文库
实验八 综合程序设计(5篇)
编辑:海棠云影 识别码:13-1067322 4号文库 发布时间: 2024-07-16 11:23:35 来源:网络

第一篇:实验八 综合程序设计

实验八综合程序设计

一、实验目的1.掌握文件以及缓冲文件系统、文件指针的概念。

2.学会使用文件打开、关闭、读、写等文件操作函数。

3.通过一个综合程序,使学生对综合运用C语言程序设计语言有初步的认识。

二、实验内容

1.运行下面程序,给出执行结果。

#include

#include

voidmain(void)

{FILE *fp;

char ch,filename[10];

scanf(“%s”,filename);

if((fp=fopen(filename,“w”))==NULL){

printf(“cannot open filen”);

exit(0);/*终止程序*/}

ch=getchar();/*接收执行scanf语句时最后输入的回车符 */

ch=getchar();/* 接收输入的第一个字符 */

while(ch!='#‘)

{fputc(ch,fp);putchar(ch);

ch=getchar();}

fclose(fp);

}

2.请编写程序:从键盘输入一个字符串,将其中的小写字母全部转换成大写字母,输出到磁盘文件“upper.txt”中保存。输入的字符串以“!”结束。然后再将文件upper.txt中的内容读出显示在屏幕上。

3.教材P349上机实验题16的1、2。

注:本次实验报告内容为实验内容的3.

第二篇:《Web应用程序设计实验》实验指导书-实验八

实验八

Servlet技术的应用

一、实验目的

(1)、掌握怎样编写和使用Servlet。(2)、掌握编写和配置和Servlet有关的web.xml文件。(3)、掌握在Servlet中使用session的方法;熟悉把用户对某JSP页面或Servlet的请求转发给另一个JSP页面或Servlet的方法。

二、实验工具

(1)JDK1.4、JDK1.5或JDK1.6,可以从SUN公司的网站免费下载(2)编辑工具:记事本或Dreamweaver MX 202_、FrontPage 202_(3)Tomcat服务器,也可以从网上免费下载(4)Netbeans 4.1或Jcreator

三、实验原理与内容

(1)、有些Web应用可能需要JSP+JavaBean+Servlet来完成,需要服务器再创建一些Servlet对象,配合JSP页面来完成整个Web应用程序的工作。本小节实验将介绍怎样编写创建Servlet对象的类,怎样在Tomcat服务器上保存编译后的字节码、编写部署文件,怎样请求Tomcat服务器创建一个Servlet对象。

① 复制需要的jar文件:为了编译Servlet源文件,需要HttpServlet、HttpServletRequest等类,JDK内置包中并不包含这些类文件,用户需要将Tomcat服务器中commonlib目录下的servlet-api.jar文件复制到JDK安装目录的jrelibext子目录中。

② 添加Servlet类的字节码文件:编写如下的Servlet类:Computer.java,保存在D:盘根目录下,编译该类,形成starmoonComputer.class,将此文件夹保存到Tomcat当前Web目录(如:ROOT目录)下的WEB-INFclasses子目录中,重新启动Tomcat。Computer.java:

package star.moon;import java.io.*;import javax.servlet.*;import javax.servlet.http.*;public class Computer extends HttpServlet { public void init(ServletConfig config)throws ServletException

{ super.init(config);

}

public void service(HttpServletRequest request,HttpServletResponse response)

throws IOException

{ response.setContentType(“text/html;charset=GB2312”);

PrintWriter out=response.getWriter();

out.println(“”);

String number=request.getParameter(“number”);

//获取客户提交的信息。

double n=0;

try{ n=Double.parseDouble(number);

out.print(“
”+number+“的平方根是:”);

out.print(“
”+Math.sqrt(n));

}

catch(NumberFormatException e)

{ out.print(“

请输入数字字符!

”);

}

out.println("

第三篇:《Java面向对象程序设计》实验-实验八(输入输出流)

广西科技大学

计通学院

《Java面向对象程序设计》实验

实验八

输入输出流

学生姓名:×××

号:×××

级:×××

指导老师:×××

业:计算机科学与技术

提交日期:×××年×× 月××日

实验报告内容

1. 实验目的

掌握字符输入、输出流用法; 掌握使用Scanner类解析文件; 掌握Console流的使用。

2. 实验内容

实验教材-第12章实验1、2、3 字符输入输出流;Scanner类和Console类。

要求: 完善程序,给出实验结果截图;

完成试验后练习。

3. 程序代码及运行结果:

实验1 举重成绩单

// AnalysisResult.java import java.io.*;import java.util.*;public class AnalysisResult { public static void main(String[] args){ File fRead=new File(“score.txt”);File fWrite=new File(“scoreAnalysis.txt”);try{ Writer out=new FileWriter(fWrite);BufferedWriter bufferWrite=new BufferedWriter(out);Reader in=new FileReader(fRead);BufferedReader bufferRead=new BufferedReader(in);String str=null;

while((str=bufferRead.readLine())!=null){

double totalScore=Fenxi.getTotalScore(str);str=str+“总成绩:”+totalScore;System.out.println(str);bufferWrite.write(str);bufferWrite.newLine();} bufferRead.close();bufferWrite.close();} catch(IOException e){ System.out.println(e.toString());} } }

// Fenxi.java

import java.util.*;public class Fenxi { public static double getTotalScore(String s){ String regex = “[^0123456789.]”;String digitMess = s.replaceAll(regex,“*”);StringTokenizer fenxi = new StringTokenizer(digitMess,“*”);double totalScore=0;while(fenxi.hasMoreTokens()){ double score=Double.parseDouble(fenxi.nextToken());totalScore=totalScore+score;} return totalScore;

} }

// score.txt

姓名:张三,抓举成绩 106kg,挺举 189kg。姓名:李四,抓举成绩 108kg,挺举 186kg。姓名:周五,抓举成绩 112kg,挺举 190kg。

运行结果如图1所示

图1

实验2 统计英文单词 // WordStatistic.java import java.io.*;import java.util.*;public class WordStatistic { Vector allWord,noSameWord;File file=new File(“english.txt”);Scanner sc=null;String regex;WordStatistic(){ allWord=new Vector();noSameWord=new Vector();regex=“[sdp{Punct}]+”;//正则表达式 try{ sc=new Scanner(file);sc.useDelimiter(regex);

} catch(IOException exp){ System.out.println(exp.toString());} } void setFileName(String name){ file=new File(name);try{ sc=new Scanner(file);sc.useDelimiter(regex);} catch(IOException exp){ System.out.println(exp.toString());} } void WordStatistic(){ try{ while(sc.hasNext()){ String word=sc.next();allWord.add(word);if(!noSameWord.contains(word))noSameWord.add(word);} } catch(Exception e){} } public VectorgetAllWord(){ return allWord;} public VectorgetNoSameWord(){ return noSameWord;

} }

// OutputWordMess.java import java.util.*;public class OutputWordMess { public static void main(String[] args){ Vector allWord,noSameWord;WordStatistic statistic=new WordStatistic();statistic.setFileName(“hello.txt”);statistic.WordStatistic();allWord=statistic.getAllWord();noSameWord=statistic.getNoSameWord();System.out.println(“共有”+allWord.size()+“个英文单词”);System.out.println(“有”+noSameWord.size()+“个互不相同英文单词”);System.out.println(“按出现的频率排列:”);int count[]=new int[noSameWord.size()];for(int i=0;iif(count[n]>count[m]){ String temp=noSameWord.elementAt(m);

noSameWord.setElementAt(noSameWord.elementAt(n), m);noSameWord.setElementAt(temp, n);int t=count[m];count[m]=count[n];count[n]=t;} } } for(int m=0;m

运行结果如图2所示

图2

实验3 密码流

// PassWord.java import java.io.*;public class PassWord { public static void main(String[] args){ boolean success=false;int count=0;Console cons;char[] passwd;cons=System.console();while(true){

System.out.print(“输入密码:”);

passwd=cons.readPassword();

count++;

String password= new String(passwd);

if(password.equals(“tiger123”)){

success=true;

System.out.println(“您第”+count+“次输入的密码正确!”);

break;

}else{

System.out.println(“您第”+count+“次输入的密码”+password+“不正确!”);

}if(count==3){

System.out.println(“您”+count+“次输入的密码都不正确!”);

System.exit(0);

} } if(success){

File file=new File(“score1.txt”);

try{

FileReader inOne=new FileReader(file);

BufferedReader inTow=new BufferedReader(inOne);

String s=null;

while((s=inTow.readLine())!=null){

System.out.println(s);

}

inOne.close();

inTow.close();

}catch(IOException ioe){} } } }

// score.txt

姓名:张三,抓举成绩 106kg,挺举 189kg。姓名:李四,抓举成绩 108kg,挺举 186kg。姓名:周五,抓举成绩 112kg,挺举 190kg。

运行结果如图3所示

图3

4. 实验后的练习:

实验1

有如下格式的成绩单(文本格式)score.txt。姓名:张三,数学72分,物理67分,英语70分。姓名:李四,数学92分,物理98分,英语88分。

姓名:周五,数学68分,物理80分,英语77分。要求按行读入取成绩单,并在该行的后面尾加上该同学的总成绩,然后再将该行写入到一个名字为scoreAnalysis.txt的文件中。// AnalysisResult.java import java.io.*;import java.util.*;public class AnalysisResult { public static void main(String[] args){ File fRead=new File(“score.txt”);File fWrite=new File(“scoreAnalysis.txt”);try{ Writer out=new FileWriter(fWrite,true);BufferedWriter bufferWrite=new BufferedWriter(out);Reader in=new FileReader(fRead);BufferedReader bufferRead=new BufferedReader(in);String str=null;

while((str=bufferRead.readLine())!=null){ double totalScore=Fenxi.getTotalScore(str);str=str+“总分:”+totalScore;System.out.println(str);bufferWrite.write(str);bufferWrite.newLine();} bufferRead.close();bufferWrite.close();

} catch(IOException e){ System.out.println(e.toString());} } }

// Fenxi.java

import java.util.*;public class Fenxi { public static double getTotalScore(String s){ Scanner scanner=new Scanner(s);scanner.useDelimiter(“[^0123456789.]+”);double totalScore=0;while(scanner.hasNext()){ try{ double score=scanner.nextDouble();totalScore=totalScore+score;} catch(InputMismatchException exp){ String t=scanner.next();} } return totalScore;} }

// score.txt 姓名:张三,数学72分,物理67分,英语70分。姓名:李四,数学92分,物理98分,英语88分。姓名:周五,数学68分,物理80分,英语77分。

运行结果如图4所示

图4

实验2 按字典序输出全部不相同的单词。// Dictionary.java import java.util.*;public class Dictionary { public static void main(String args[]){

Vector allWord,noSameWord;

WordStatistic statistic=new WordStatistic();

statistic.setFileName(“hello.txt”);

statistic.WordStatistic();//statistic调用WordStatistic()方法

allWord=statistic.getAllWord();

noSameWord=statistic.getNoSameWord();

System.out.println(“共有”+allWord.size()+“个英文单词”);

System.out.println(“有”+noSameWord.size()+“个互不相同英文单词”);

System.out.println(“按字典顺序排列:”);

String s[]=new String [noSameWord.size()];

for(int i=0;i

s[i]=noSameWord.elementAt(i);

}

Arrays.sort(s);

for(int i=0;i

System.out.println(s[i]+“ ”);

} } }

运行结果如图5所示

图5

实验3 编写一个程序,程序运行时,要求用户输入的密码是:hello。如果用户输入了正确的密码。程序将输出“你好,欢迎你!”。程序允许用户2次输入的密码不正确,一旦超过2次,程序将立刻退出。// PassWord.java import java.io.*;import java.util.Scanner;public class PassWord{ public static void main(String args[]){ int count=0;Console cons;String passwd;Scanner sc=new Scanner(System.in);//cons=System.console();

while(true){

System.out.print(“输入密码:”);

passwd=sc.next();//

count++;

String password=new String(passwd);

if(password.equals(“hello”)){

System.out.println(“你好,欢迎你!”);

break;

}

else{

System.out.println(“您第”+count+“次输入的密”+password+“不正确”);

}

if(count==3){

System.out.println(“您”+count+“次输入的密码都不正确”);

System.exit(0);

} } } }

运行结果如图6所示

图6

5. 实验心得和体会

这次实验中,我感觉比较难理解和掌握的就是Console类

了,在实验3 密码流的代码在eclipse中运行出错如下图所示:

就是输入不了密码,后来通过找寻解决方法,才知道了在JDK 6中java.io.Console类专用来访问基于字符的控制台设备,然后使用cmd命令提示符来运行就可以输入密码和显示结果了。

通过这次实验,大概了解了字符输入、输出流用法,如何去使用Scanner类解析文件,对Console类的使用有个大概的认知。总而言之,这次实验收获蛮大的,敲代码的效率比以往提高了,出错率也少了。

第四篇:实验八

课程名称:

SQL

Server

数据库基础

任课教师:

池宗琳

实验名称:

存储过程

年级、专业:

202_级电子信息工程

号:

20181060093

名:

日期:

202_

云南大学

信息学院

一、实验目的1、掌握使用SELECT语句实现对数据库的简单查询

2、掌握使用SELECT语句实现对数据库的多表链接查询和子查询

二、实验内容、方法、步骤、结果与分析

完成以下各题功能,保存或记录实现各题功能的Transact-SQL语句。

1.在数据库HrSystem中创建存储过程avg._wage,用于求所有员工的平均工资,并通过输出参数返回该平均工资。要求在创建存储过程之前要首先判断该存储过程是否已经存在,如果存在,则将其删除。

USE

Hrsystem

GO

IF

EXISTS

(SELECT

name

FROM

sysobjects

WHERE

name

=

'avg_wage')

DROP

PROC

avg_wage

GO

CREATE

PROC

avg_wage

@AVWAGE

AS

FLOAT

AS

SELECT

@AVWAGE

=

AVG(Wage)

FROM

Employees

PRINT

@AVWAGE

GO

2.执行第1题创建的存储过程avg_

wage,打印员工平均工资。

USE

Hrsystem

GO

DECLARE

@avg

AS

FLOAT

EXEC

avg_wage

@avg

3.在数据库HrSystem中创建存储过程max_

wage,根据指定的部门名称(输人参数)返回该部门的最高工资(输出参数)。要求在创建存储过程之前要首先判断该存储过程是否已经存在,如果存在,则将其删除。

USE

Hrsystem

GO

IF

EXISTS

(SELECT

name

FROM

sysobjects

WHERE

name

=

'max_wage')

DROP

PROC

avg_wage

GO

CREATE

PROC

max_wage

@Dename

varchar(20),@MAX_wage

FLOAT

OUTPUT

AS

SELECT

@MAX_wage

=

MAX(Wage)

FROM

Employees

WHERE

Dep_id

IN(SELECT

Dep_id

FROM

Departments

WHERE

Dep_name

=

@Dename)

GROUP

BY

Dep_id

4.执行第3题创建的存储过程max

wage,指定部门为“财务部”,打印该类部门的最高工资。

USE

Hrsystem

GO

DECLARE

@MAX_wage

FLOAT

EXEC

max_wage

'财务部',@MAX_wage

OUTPUT

PRINT

@MAX_wage

5.删除存储过程avg_

wage和I

max_

wage。

USE

Hrsystem

GO

DROP

PROCEDURE

max_wage

GO

DROP

PROCEDURE

avg_wage

(二)触发器

创建一个“学生信息”数据库,包含“学生基本信息”表、“专业”表和“系”表,各表包含的字段如下。

“学生基本信息”表:学号;姓名;性别;班级;出生日期;专业编号。

“专业”表:专业编号;专业名称;系编号。

“系”

表:系编号;系名称;系简介。

各字段类型按其实际含义自行定义,输人-

-些数据,要求数据要有代表性。

以下操作要求全部在SQL

Server

Management

Studio

中完成,保存或记录实现各题功能的Transcat-SQL语句(包括测试相应触发器是否生效的相关语句及测试结果)。

1.在“专业”表上创建一个INSERT触发器“TRG1”。当发生插入专业表操作时,将显示插入的记录。

USE

学生信息

GO

CREATE

TRIGGER

TRG1

ON

专业

FOR

INSERT

AS

DECLARE

@depid

INT

DECLARE

@depname

varchar(50)

DECLARE

@number

INT

SELECT

@depid

=

专业编号

FROM

inserted

SELECT

@number

=

系编号

FROM

inserted

SELECT

@depname

=

专业名称

FROM

inserted

PRINT('系名:'+STR(@depid)+'专业名:'+STR(@depname)+'系的编号:'+str(@number))

INSERT

INTO

专业

(专业编号,专业名称,系编号)

VALUES(@depid,@depname,@number)

2.在“专业”表上创建一个DELETE触发器“TRG2”,当发生删除操作时,将给出警告、列出删除的记录并撤销删除。

USE

学生信息

GO

CREATE

TRIGGER

TRG2

ON

专业

FOR

DELETE

AS

PRINT('警告!禁止删除')

ROLLBACK

TRANSACTION

3.在“专业”表上创建一个UPDTAE触发器“TRG3”,当发生更新“专业名称”字段的操作时,给出警告并撤销更新

USE

学生信息

GO

CREATE

TRIGGER

TRG3

ON

专业

FOR

UPDATE

AS

DECLARE

@temp_proid

INT

DECLARE

@temp_xiid

INT

DECLARE

@temp_porna

varchar(50)

SELECT

@temp_porna

=

专业名称

FROM

inserted

IF

@temp_porna

IS

not

NULL

BEGIN

PRINT('禁止修改专业名称')

ROLLBACK

TRANSACTION

END

ELSE

BEGIN

SELECT

@temp_porna

=

专业名称

FROM

deleted

SELECT

@temp_xiid

=

系编号

FROM

deleted

SELECT

@temp_proid

=

专业编号

FROM

deleted

UPDATE

专业

SET

专业编号

=

@temp_proid,系编号

=

@temp_xiid

WHERE

专业名称

=

@temp_porna

END

4.在“学生基本信息”表上创建一

一个更新触发器“TRG4“,当发生更新“学号”或“姓名”字段的操作时给出警告,并撤销更新。

USE

学生信息

GO

CREATE

TRIGGER

TRG4

ON

学生基本信息

FOR

UPDATE

AS

DECLARE

@temp_stunum

char(11)

DECLARE

@temp_name

char(10)

DECLARE

@temp_gender

BIT

DECLARE

@temp_class

varchar(10)

DECLARE

@temp_date

DATETIME

DECLARE

@temp_proID

INT

SELECT

@temp_name

=

姓名

FROM

inserted

SELECT

@temp_stunum

=

学号

FROM

inserted

IF

@temp_name

IS

NOT

NULL

OR

@temp_stunum

IS

NOT

NULL

BEGIN

PRINT('禁止修改学号或者姓名')

ROLLBACK

TRANSACTION

END

ELSE

BEGIN

SELECT

@temp_stunum

=

学号

FROM

deleted

SELECT

@temp_name

=

姓名

FROM

deleted

SELECT

@temp_gender

=

性别

FROM

inserted

SELECT

@temp_class

=

班级

FROM

inserted

SELECT

@temp_date

=

出生日期

FROM

inserted

SELECT

@temp_proID

=

专业编号

FROM

inserted

UPDATE

学生基本信息

SET

性别

=

@temp_gender,班级

=

@temp_class,出生日期

=

@temp_date,专业编号

=

@temp_proID

WHERE

学号

=

@temp_stunum

END

5.删除以

上各题创建的所有触发器。做好“学生信息”数据库的备份,以备第10章、第章上机操作时使用。

USE

学生信息

GO

DROP

TRIGGER

TRG1

DROP

TRIGGER

TRG2

DROP

TRIGGER

TRG3

DROP

TRIGGER

TRG4

三、实验小结【对自己而言,通过实验学到的关键技术方法】

掌握了触发器的一些基本方法:

1.创建触发器

2.分清了触发器的种类,但是还是需要深入了解dml触发器中三个种类触发器的不同。

3.了解了触发器在我们实际操作中的作用

4.

第五篇:Java程序设计实验2

学 生 实 验 报 告 册

课程名称:

学生学号:

所属院部:

(理工类)

专业班级:

学生姓名:

指导教师: ——20 学年 第 学期

金陵科技学院教务处制

实验报告书写要求

实验报告原则上要求学生手写,要求书写工整。若因课程特点需打印的,标题采用四号黑体,正文采用小四号宋体,单倍行距。纸张一律采用A4的纸张。

实验报告书写说明

实验报告中实验目的和要求、实验仪器和设备、实验内容与过程、实验结果与分析这四项内容为必需项。教师可根据学科特点和实验具体要求增加项目。

填写注意事项

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

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

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

实验报告批改说明

实验报告的批改要及时、认真、仔细,一律用红色笔批改。实验报告的批改成绩采用五级记分制或百分制,按《金陵科技学院课堂教学实施细则》中作业批阅成绩评定要求执行。

实验报告装订要求

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

金陵科技学院实验报告

实验项目名称: 面向对象编程实验 实验学时: 8 同组学生姓名: 实验地点: 实验日期: 实验成绩: 批改教师: 批改时间:

金陵科技学院实验报告

实验1 面向对象编程实验

一、实验目的和要求

(1)理解Java概念、掌握JDK环境配置(2)熟悉Java开发过程

(3)掌握Java面向对象编程基础:封装、继承、多态(4)掌握Java接口编程,理解开发模式

二、实验仪器和设备

奔腾以上个人计算机,windows操作系统。

配置好JDK环境,安装集成开发环境(Eclipse)

三、实验内容与过程

1、JDK环境配置

2、面向对象的封装性

范例:设计一个表示学生的类,里面有学生的三项成绩:计算机成绩、数学成绩、英语成绩。要求可以求总分、平均分、最高分、最低分,并且可以输出一个学生的完整信息。代码如下: class Student{ private String name;private int age;private float english;private float computer;private float math;public Student(){} public Student(String n,int a,float e,float c,float m){

this.setName(n);

this.setAge(a);

this.setEnglish(e);

this.setComputer(c);

this.setMath(m);} public float sum(){

return english + computer + math;} public float avg(){

return this.sum()/ 3;} public float max(){

float max = computer>math?computer:math;

max = max>english?max:english;

return max;} public float min(){

float min = computer

min = min

return min;

金陵科技学院实验报告

} public String getInfo(){

return “学生信息: n” +

“t|-姓名:” + this.getName()+ “n” +

“t|-年龄:” + this.getAge()+ “n” +

“t|-数学成绩:” + this.getMath()+ “n” +

“t|-英语成绩:” + this.getEnglish()+ “n” +

“t|-计算机成绩:” + this.getComputer();} public void setName(String n){

name = n;} public void setAge(int a){

age = a;} public void setEnglish(float e){

english = e;} public void setComputer(float c){

computer = c;} public void setMath(float m){

math = m;} public String getName(){

return name;} public int getAge(){

return age;} public float getEnglish(){

return english;} public float getComputer(){

return computer;} public float getMath(){

return math;} } public class ExecDemo{ public static void main(String args[]){

Student stu = new Student(“张三”,30,89.0f,91.0f,87.0f);

System.out.println(“总分:” + stu.sum());

金陵科技学院实验报告

}

} System.out.println(“平均分:” + stu.avg());System.out.println(“最高分:” + stu.max());System.out.println(“最低分:” + stu.min());System.out.println(stu.getInfo());对照范例写出如下题目:

(1)编写并测试一个代表地址的Address类,包括以下的属性:国家、省份、城市、街道、邮编。

可以从此地址类中得到一个完整的地址信息。

(2)定义并测试一个代表员工的Employee类。它的属性包括“员工姓名”、“员工号码”、“员工基本薪水”,它的方法包括“构造方法”、“获取员工姓名”、“获取员工号码”、“获取员工基本薪水”、“设置员工姓名”、“设置员工号码”、“设置员工基本薪水”、所有员工信息的输出getInfo。(3)、定义一个圆形类,可以返回圆的面积与周长。

class Circle{

成员变量 半径 r

构造方法

成员函数 设置和获取 半径

计算周长

计算面积

所有信息输出 } 定义一个矩形类,返回矩形的面积与周长(4)、思考设计:一个人有一本书,一本书属于一个人。//一个人有一本书,一本书属于一个人 //类 新的类别、类型 定义新的数据类型 //两个类的关系 独立的两个类 使用 class Person{ private String name;private int age;private Book book;//一个人有一本书 public Person(){

} public Person(String name,int age){ this.name=name;this.age=age;} public void setBook(Book book){ this.book=book;} public Book getBook(){ return this.book;

金陵科技学院实验报告

} } class Book{ private String name;private float price;private Person person;//一本书属于一个人 public Book(){ } public Book(String name,float price){ this.name=name;this.price=price;} public void setPerson(Person person){ this.person=person;} public Person getPerson(){ return this.person;} } public class TestBP{ public static void main(String args[]){ Person per=new Person(“zhangsan”,20);Book bok=new Book(“Java program”,20.0f);per.setBook(bok);//一个人有一本书

bok.setPerson(per);//一本书属于一个人

per.getBook().getPrice();bok.getPerson().getName();} }

3、面向对象的继承性

范例:要求定义一个数组类Array,里面定义了一个整型数组,但是此整型数组属于动态分配大小,即:所有的大小由程序指定,并在此基础上实现以下的两个子类:

反转类:可以将数组的内容反转排列

排序类:可以对数组进行排序的操作 class Array{ private int temp[] = null;// 只是声明数组,但是大小未知

private int foot = 0;// 用于保存下一个的记录点

public Array(int len){

if(len>0){

this.temp = new int[len];// 此时大小由外部决定

}else{

this.temp = new int[1];// 至少开辟一个空间

} }

金陵科技学院实验报告

public boolean add(int i){ // 加入数据操作

if(this.foot

this.temp[this.foot] = i;// 加入内容

this.foot++;// 改变长度

return true;// 加入成功返回true

}else{

return false;// 加入失败

} } public int[] getArray(){ // 返回全部的数组

return this.temp;} } class SortArray extends Array{ public SortArray(int len){

super(len);} public int[] getArray(){

java.util.Arrays.sort(super.getArray());// 排序操作

return super.getArray();// 返回的是排序后的内容

} } class ReverseArray extends Array{ public ReverseArray(int len){

super(len);} public int[] getArray(){

int rt[] = new int[super.getArray().length];// 根据大小开辟新数组

int count = rt.length-1;

for(int x=0;x

rt[count] = super.getArray()[x];

count--;

}

return rt;} } public class ArrayDemo{ public static void main(String args[]){

ReverseArray arr = new ReverseArray(6);

System.out.println(arr.add(3));

System.out.println(arr.add(23));

System.out.println(arr.add(1));

System.out.println(arr.add(5));

金陵科技学院实验报告

System.out.println(arr.add(6));

System.out.println(arr.add(8));

System.out.println(arr.add(11));

System.out.println(arr.add(16));

print(arr.getArray());} public static void print(int i[]){

for(int x=0;x

System.out.print(i[x] + “、”);

} } } 对照范例写出如下题目:

(1).创建GrandFather类,其中包括

a)属性:姓名(name),年龄(age)

b)方法getGrandFather():显示爷爷的信息

c)构造方法:给爷爷的姓名,年龄赋值(2).创建Father类,继承Grandfather类 a)属性:除了继承爷爷的属性以外,还要增加自己的属性:“职业”(occupation)b)构造方法:显式调用父类的构造方法,为Father类的姓名和年龄赋初始值。再为职业输入初始值。

c)方法getFather(): 显示父亲的相关信息

(3).创建ClassMain()类,定义main()方法,构造GrandFather类的对象和Father类的对象,并分别显示详细信息。

3、面向对象多态性

范例:计算柱体的体积。柱体体积计算公式是:底部面积乘以高度 柱体底部分为 圆形和矩形 要求:通过抽象类和多态实现 package cn.jit.demo;abstract class Bottom { //父类抽象类 底部

public abstract double calculatorArea();} class CircleBottom extends Bottom{ //圆形底

/** * 半径

*/ private double radius;

@Override public double calculatorArea(){

return Math.PI * radius * radius;} public double getRadius(){

金陵科技学院实验报告

return radius;} public void setRadius(double radius){

this.radius = radius;} public CircleBottom(double radius){

super();

this.radius = radius;} } class SquareBottom extends Bottom{ //矩形底

private double sideA;

private double sideB;public double getSideA(){

return sideA;} public void setSideA(double sideA){

this.sideA = sideA;} public double getSideB(){

return sideB;} public void setSideB(double sideB){

this.sideB = sideB;} @Override public double calculatorArea(){

return sideA * sideB;} public SquareBottom(double sideA, double sideB){

super();

this.sideA = sideA;

this.sideB = sideB;} } class ZhuTi { //柱体类,完成形状的拼装

/** * 底

*/ private Bottom bottom;/** * 高

*/

金陵科技学院实验报告

private double height;/** * 计算体积

* @return */ public double calculatorVolumn(){

return bottom.calculatorArea()* height;} public ZhuTi(Bottom bottom, double height){

super();

this.bottom = bottom;

this.height = height;} public Bottom getBottom(){

return bottom;} public void setBottom(Bottom bottom){

this.bottom = bottom;} public double getHeight(){

return height;} public void setHeight(double height){

this.height = height;} public void changeBottom(Bottom bottom){

this.bottom = bottom;} } public class VolumnTest { //测试类

public static void main(String[] args){

Bottom bottom = new CircleBottom(1.0);

double height = 1.0;

ZhuTi zhuTi = new ZhuTi(bottom,height);

double result = zhuTi.calculatorVolumn();

System.out.println(“圆柱体的体积是:” + result);

bottom = new SquareBottom(1.0,1.0);

zhuTi.changeBottom(bottom);

result = zhuTi.calculatorVolumn();

System.out.println(“立方体的体积是:” + result);} } 范例:接口和多态的应用,例如:电脑上实现了USB接口,U盘,打印机等等也都实现了此标准。

金陵科技学院实验报告

interface USB{ public void start();// 开始工作

public void stop();// 结束工作 } class Computer{ public static void plugin(USB usb){

usb.start();

usb.stop();} };class Flash implements USB{ public void start(){

System.out.println(“U盘开始工作。”);} public void stop(){

System.out.println(“U盘停止工作。”);} };class Print implements USB{ public void start(){

System.out.println(“打印机开始工作。”);} public void stop(){

System.out.println(“打印机停止工作。”);} };public class InterPolDemo02{ public static void main(String args[]){

Computer.plugin(new Flash());

Computer.plugin(new Print());} };对照范例,写出以下程序:(1)乐器(Instrument)的标准为弹奏(play),而乐器类型分为:钢琴(Piano)和小提琴(Violin),各种乐器的弹奏方法各不同。编写代码实现不同乐器的弹奏。(2)计算机模拟

四、实验结果与分析(程序运行结果及其分析)

五、实验体会

金陵科技学院实验报告

实验项目名称: 类集

实验学时: 4 同组学生姓名: 实验地点: 实验日期: 实验成绩: 批改教师: 批改时间:

金陵科技学院实验报告

实验2 类集

一、实验目的和要求(1)理解类集概念

(2)熟悉Collection接口、List接口、Set接口和Map接口(3)掌握ArrayList类、HashSet类和TreeSet类(4)理解TreeMap、HashMap

二、实验仪器和设备

奔腾以上个人计算机,windows操作系统。

配置好JDK环境,安装集成开发环境(Eclipse)

三、实验内容与过程

1、类集应用

范例:实现一个超市管理系统,要求可以添加货物,删除货物和查询货物:

。代码如下:

public interface Goods { public String getName();// 得到商品名称

public int getCount();// 得到商品数量

public float getPrice();// 得到商品价格 }

public class Book implements Goods {

private String name;private int count;private float price;

public Book(){ }

public Book(String name, int count, float price){

this.name = name;

this.count = count;

this.price = price;}

public String getName(){

return name;}

public void setName(String name){

this.name = name;

金陵科技学院实验报告

}

public int getCount(){

return count;}

public void setCount(int count){

this.count = count;}

public float getPrice(){

return price;}

public void setPrice(float price){

this.price = price;}

public boolean equals(Object obj){

if(this == obj){

return true;

}

if(!(obj instanceof Book)){

return false;

}

Book b =(Book)obj;

if(b.name.equals(this.name)&& b.count == this.count

&& b.price == this.price){

return true;

} else {

return false;

} }

public int hashCode(){

return this.name.hashCode()+ new Integer(this.count).hashCode()

+ new Float(this.price).hashCode();}

public String toString(){

return “书名:” + this.name + “;书的价格:” + this.price + “;书的数量:”

+ this.count;}

金陵科技学院实验报告

}

import java.util.ArrayList;import java.util.Iterator;import java.util.List;

public class SuperMarket { private List allGoods;

public SuperMarket(){

this.allGoods = new ArrayList();}

public void add(Goods goods){

this.allGoods.add(goods);}

public void remove(Goods goods){

this.allGoods.remove(goods);}

public List search(String keyWord){

List temp = new ArrayList();

Iterator iter = this.allGoods.iterator();

while(iter.hasNext()){

Goods g = iter.next();

if(g.getName().indexOf(keyWord)!=-1){

temp.add(g);

}

}

return temp;}

public List getAllGoods(){

return this.allGoods;} }

import java.util.Iterator;import java.util.List;

public class Test {

金陵科技学院实验报告

public static void main(String[] args){

SuperMarket mak = new SuperMarket();

mak.add(new Book(“Java”, 2, 30.9f));

mak.add(new Book(“C++”, 3, 10.9f));

mak.add(new Book(“JSP”, 5, 80.9f));

print(mak.search(“J”));

mak.remove(new Book(“Java”, 2, 30.9f));

print(mak.search(“J”));}

public static void print(List all){

Iterator iter = all.iterator();

while(iter.hasNext()){

System.out.println(iter.next());

} } } 对照范例写出如下题目:

(1)宠物商店,要求可以添加、删除和查找宠物(2)实现以下两个关系

A、一个学校可以有多个学生,所有学生属于一个学校

B、一门课程可以有多个学生选,一个学生可以选多门课程

四、实验结果与分析(程序运行结果及其分析)

五、实验体会

金陵科技学院实验报告

实验项目名称: Java IO操作

实验学时: 6 同组学生姓名: 实验地点: 实验日期: 实验成绩: 批改教师: 批改时间:

金陵科技学院实验报告

实验3 Java IO操作

一、实验目的和要求

(1)理解输入输出流概念(2)掌握文件输入输出流

(3)掌握键盘的输入、显示器的输出(4)理解其他输入输出流

二、实验仪器和设备

奔腾以上个人计算机,windows操作系统。

配置好JDK环境,安装集成开发环境(Eclipse)

三、实验内容与过程

1、编写类模拟命令Copy

范例:实现文件的复制代码。参考代码如下:

File file1 = new File(“d:”+File.seperator +”demo.txt”);

// 找到第一个文件的File对象

File file2 = new File(“d:”+File.seperator +”cemo.txt”);// 找到目标文件路径 InputStream input = new FileInputStream(file1);// 输入流 OutputStream output = new FileOutputStream(file2);// 输出流 int temp = 0;// 定义一个整数表示接收的内容

while((temp = input.read())!=-1){ // 表示还有内容可以继续读

output.write(temp);// 写入数据 } input.close();// 关闭 output.close();// 关闭

2、通过键盘的输入,实现简单的选项操作。

*********XXXX管理系统***********

[1]添加

[2]删除

[3]修改

[4]查询

[5]退出

3、编写一个简单管理系统,实现真实的操作。

四、实验结果与分析(程序运行结果及其分析)

五、实验体会

金陵科技学院实验报告

实验项目名称: JDBC

实验学时: 6 同组学生姓名: 实验地点: 实验日期: 实验成绩: 批改教师: 批改时间:

金陵科技学院实验报告

实验4 JDBC

一、实验目的和要求(1)理解JDBC分类

(2)掌握JDBC数据库连接步骤

(3)掌握JDBC连接MySQL数据库代码(4)理解JDBC连接其他数据库方式

二、实验仪器和设备

奔腾以上个人计算机,windows操作系统。

配置好JDK环境,安装集成开发环境(Eclipse)

三、实验内容与过程

1、安装MySQL数据库,配置好数据库

创建一个数据库表,按要求给出详细的字段设计

pid name age birthday salary

主要操作:

2、创建Eclipse项目,配置驱动包

每个数据库厂商都会提供对Java开发技术的支持,即都会提供对应的Java驱动,也就是一个jar包

主要操作:

3、项目中建立一个详细例子,按照要求连接、操作、关闭数据库

按照标准的步骤完成对MySQL数据库的操作

主要代码:(添加、修改、删除和查询)

金陵科技学院实验报告

4、试着连接其他类型数据库。

四、实验结果与分析(程序运行结果及其分析)

五、实验体会

实验八 综合程序设计(5篇)
TOP