JAVAWEB实验报告.docx
- 文档编号:29105346
- 上传时间:2023-07-20
- 格式:DOCX
- 页数:48
- 大小:30.21KB
JAVAWEB实验报告.docx
《JAVAWEB实验报告.docx》由会员分享,可在线阅读,更多相关《JAVAWEB实验报告.docx(48页珍藏版)》请在冰豆网上搜索。
JAVAWEB实验报告
实验报告
(一)
院系:
信息课程名称:
Web数据库技术日期:
班级
信B0941
姓名
专业
信管
学号
实验室
实验名称
面向对象程序设计
成绩评定
教师签名
实验目的
1、掌握java的开发环境
2、掌握public、protected、private、static等修饰
3、掌握类的继承、覆盖、接口等用法
4、掌握异常处理方法
实验内容
public等修饰的用法、类的继承、接口等用法、异常处理方法
实
验
过
程
、
结
果
及
分
析
一、
1、请设计一个类”picture”,要求该类具有两个成员变量”signal”和”lines”,其中“singal”表示构成图像的显示符号,而且显示符合只能是”@”、”#”、”$”及”%”这四类,”lines”表示要显示的行数。
该类有三个成员方法”setSingal(Stringsingal)”、”setlines(intlines)”及”disp()”,”setSingal(Stringsingal)”用于指定显示的符号(其符号要满足规定的要求),”setlines(intlines)”用于指定显示的行数及每行的符号数,”disp()”用于显示指定符号和行数的一个平行四边形,如singal=”@”,lines=5,那么disp()方法的显示是
@@@@@
@@@@@
@@@@@
@@@@@
@@@@@
请实现该类。
Pulicclasspicture{
Stringsingnal;
Intlines
BooleanisSingal(Stringsingal){
If(singal!
=”@”||singal!
=”#”||singal!
=”$”||singal!
=”%”)
Returnfalse;
Else
Returntrue;
}
BooleanisLine(intline){
if(line<1)
returnfalse;
else
returntrue;
}
VoidsetSingal(Stringsingal){
If(!
isSingal(singal))
实
验
过
程
、
结
果
及
分
析
System.out.println(“不符合要求”);
Else
This.Singal=singal;
}
voidsetlines(intline){
if(!
isLine(line))
System.out.println(“不符合要求”);
Else
This.line=line;
}
voiddisp(){
System.out.println(“参数不符合要求”);
Else
{
for(intI=5;I>=1;I--)
{
System.out.println((newString(“”,I))+(newString(singal,5)));
}
}
}
}
1、有类定义如下:
publicclassstudent{
Stringname;
intid;
studentstu;
publicstaticvoidmain(String[]arg){
students1=newstudent();
s1.name=”tom”;
s1.id=1;
stuents2=newstudent();
s2.name=”baidu”;
s2.id=2;
stuents3=newstudent();
if(!
isSingal(singal)||!
isLine(line))
s3.name=”temp”;
s3.id=3;
s1.stu=s3;
s2.stu=s3;
s3=null;
students4=s1.stu;
s4.name=”chang”;
s4.id=0;
System.out.println(s2.stu.name+”and”+s2.stu.id);
}
}
实
验
过
程
、
结
果
及
分
析
执行后的结果是什么。
显示:
changand0;
二、
1、工厂模式:
请先自行设计两个类”student”和”score”,然后请设计一个工厂类”factory”,该类提供一个”ObjectgetInstance(Stringname)”方法,该方法用于返回一个指定类名的实例对象。
工厂类不可以被实例化。
Classstudent{
Stringname;
PublicStringgetName(){
Returnname;
}
}
classscroe{
publicintscore;
}
publicclassfactory{
privatefactory(){}
publicstaticobjectgetInstance(Stringname){
if(name.equals(“student”))
returnnewstudent();
if(name.equals(“scroe”))
returnnewscore();
else
returnnull;
}
}
2、请调试如下代码,输出效果是什么?
publicclassdisp{
static{
System.out.println("类加载");
}
disp(){
System.out.println("实例初始化");
}
publicstaticvoidmain(String[]args){
System.out.println("main开始");
dispd1=newdisp();
System.out.println("main开始");
}
}
输出:
类加载
main开始
实例初始化
main开始
实
验
过
程
、
结
果
及
分
析
3、单例模式:
请设计一个类”onlyInstance”,该类有个方法”publicstaticonlyInstancegetOnlyInstance()”用来获得该类的实例对象。
现要求通过该方法获得的实例对象是唯一的、只要一个。
即在
onlyInstanceonly1=onlyInstance.getOnlyInstance();
onlyInstanceonly2=onlyInstance.getOnlyInstance();
后,only1==only2。
同时要求该类不可以在类外部被实例化!
ClassonlyInstance{
PrivateonlyInstanceonly=null;
PrivateonlyInstance(){
}
publicstaticonlyInstancegetOnlyInstance(){
if(only==null)
only=newonlyInstance();
returnonly;
}
}
三、
1、写出如下代码运行效果并请分析出原因
classstudent{
Stringname;
intage;
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;
}
publicintgetAge(){
returnage;
}
publicvoidsetAge(intage){
this.age=age;
}
publicstudentreturnS(){
returnthis;
}
}
publicclasstest{
publicstaticvoidmain(String[]args){
students2=newstudent();
s2.setAge(40);
s2.setName("张三");
students3=s2.returnS();
s3.setAge(200);
System.out.println("s3:
name="+s3.getName()+";age="+s2.getAge());
}
}
实
验
过
程
、
结
果
及
分
析
输出:
s3:
name=张三;age=200
原因:
s3和s2指向同一个对象。
2、写出如下代码补充完整,并分析代码运行结果
classparent{
Stringname;
publicvoidsetName(Stringname){this.name=name;}
publicvoiddisp(){System.out.println(name);}
publicvoiddisp1(){System.out.println(“parent”);}
}
classchildextendsparent{
intid;
child(Stringname,intid){
super(name);\\调用父类相关构造函数
this.id=id;
}
voiddisp(){
super.disp();
this.disp1();
System.out.println(“id=”+id+”;name=”+name);
}
}
在一个测试类中输入:
parentp1=newchild(“zhangsan”,12):
p1.disp();
输出的效果:
zhangsan
parent
id=12;name=zhangsan
三、请写出下面程序的运行效果
classperson{
Stringname;
Intage;
Publicvioddisp1(){
System.out.println(“person类的方法”+name+”的年龄是”+age);
}
publicvioddisp2(){
System.out.println(“当前用户的名字是”+name);
}
}
classstudentextendsperson{
Stringname;
publicdisp1(){
System.out.println(“student类的方法”+name+”的年龄是”+age);
}
}
实
验
过
程
、
结
果
及
分
析
publicclasstest{
publicstaticvoidmain(String[]args){
studentstu=newstudent();
stu.name=”张小三”;
stu.age=20;
personp=stu;
p.name=”张大三”;
p.age=90;
p.disp1();
p.disp2();
studentstu2=(student)p;
stu2.disp1();
stu2.disp2();
}
}
输出效果:
student类的方法张小三年龄90;当前用户的名字是张大三student类的方法张小三年龄90;当前用户的名字是张大三
四、
1、请在工程中生成一个”exceptions”的package的包,在该包下新建一个accountException的异常类,要求用户可以将不同的异常信息封装到异常类中,同时信息可以通过”getMessage()”的方法调用出来。
ClassaccountExceptionextendsException{
AccountException(Stringmessage){
Super();
This.message=message;
}
voidsetMessage(Stringmessage){
this.message=message;
}
}
2、定义个帐号类:
classaccount{
privateintid;//账户编号
privateStringname;//账户名
privateStringpassword;//账户密码
privatedoublemoney;//账户的资金
}
请将该类的get/set方法补完,构造函数补完。
3、已定义一个接口
interfaceaccoutDeal{
BooleanisExits(intid);//用于判断账户是否存在;
DoubledrawAccount(intid,doublemoney)throwsaccountException;//从指定帐号中取钱
Intlogin(Stringname,Stringpwd)throwsaccountException;//账户登入,当用户不存在时抛出异常
BooleanchangAccount(intid1,intid2,doublemoney)throwsaccountException;//从账户id1中给指定账户id2转money元钱;
}
实验报告
(二)
院系:
信息学院课程名称:
Web数据库技术日期:
班级
信B0941
姓名
专业
信管
学号
实验室
实验名称
Jdbc应用
成绩评定
教师签名
实验目的
1、掌握数据库驱动的加载方式
2、掌握connection对象的使用方法
3、掌握statement对象使用方法
4、掌握事务的处理机制
5、掌握数据持久层的设计
实验内容
connection对象、statement对象等应用
实
验
过
程
、
结
果
及
分
析
一、
1、请建立一个与本地sqlserver服务器的“信息库”的连接对象并输出该连接。
publicclassConnDaoImplimplementsConnDao{
staticStringdirver;
staticStringuser;
staticStringurl;
staticStringpassword;
static{System.out.println("开始加载驱动");
try{
InputStreamis=ConnDaoImpl.class.getResourceAsStream("jdbc.properties");
Propertiespro=newProperties();
pro.load(is);
Stringdriver=pro.getProperty("driver");
url=pro.getProperty("url");
user=pro.getProperty("user");
password=pro.getProperty("password");
Class.forName(driver);
}catch(Exceptione){
e.printStackTrace();
}
System.out.println("驱动加载完毕");
}
publicstaticConnectiongetConn(){
Connectionconn=null;
try{
conn=DriverManager.getConnection(url,user,password);
实
验
过
程
、
结
果
及
分
析
}catch(SQLExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
returnconn;
}
2、请将成绩表中所有学号是’B030110’的成绩加10分
Statemstate=conn.createState();
ResultSetrs=state.executeQuery(“select*from学生表);
While(!
rs.eof){
System.out.println(rs(“学号”)+rs(“姓名”));
}
3、总结创建一个基本的JDBC应用的过程
答:
1)步骤一:
注册一个driver;
2)步骤二:
建立一个到数据库的连接;
3)步骤三:
创建一个statement;
4)步骤四:
执行SQL语句;
5)步骤五:
处理结果;
6)步骤六:
关闭JDBC对象
二、
1、请通过preparedstatement在学生表中输入两个学生信息
packagestudentDaoImpl;
importjava.sql.Connection;
importjava.sql.PreparedStatement;
importjava.sql.ResultSet;
importjava.sql.SQLException;
importjava.sql.Date;
importjava.sql.Statement;
importjava.util.HashSet;
importjava.util.Set;
importpojo.student;
importstudentDao.saveStudentsDao;
importutil.connectionFactory;
publicclasssaveStudentsDaoImplimplementssaveStudentsDao{
privateConnectionconn=connectionFactory.getConnection();
publicSet
Set
Statementstm=null;
ResultSetrs=null;
try{
stm=conn.createStatement();
if(condition==null||"".equals(condition))
实
验
过
程
、
结
果
及
分
析
condition="1=1";
Stringsql="select*from学生表where"+condition;
rs=stm.executeQuery(sql);
studentstu=null;
while(rs.next()){
stu=newstudent();
stu.setId(rs.getInt("id"));
stu.setName(rs.getString("姓名"));
stu.setStuId(rs.getString("学号"));
stu.setBirthday(rs.getTimestamp("出生年月"));
students.add(stu);
}
}catch(SQLExceptione1){
//TODOAuto-generatedcatchblock
e1.printStackTrace();
}
finally{
if(rs!
=null)
try{
rs.close();
}catch(SQLExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
if(stm!
=null)
try{
stm.close();
}catch(SQLExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}}
returnstudents;
}
publicvoidsaveStudent(Set
PreparedStatementpre=null;
try{
pre=conn.prepareStatement("insertinto学生表
(学号,姓名,出生年月)values(?
?
?
)");
for(studentstu:
students){
pre.setString(1,stu.getStuId());
pre.setString(2,stu.getName());
pre.setTimestamp(3,stu.getBirthday());
pre.addBatch();}
pre.executeBatch();
System.out.println("操作结束");
}catch(SQLExceptione){
//TODOAuto-generatedcatchblock
实
验
过
程
、
结
果
及
分
析
e.printStackTrace();
}
finally{
if(pre!
=null)
try{
pre.close();
}catch(SQLExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
}
publicvoidClose(){
if(conn!
=null)
try{
conn.close();
}catch(SQLExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}}}
packagetest;
importjava.sql.Timestamp;
importjava.util.Date;
importjava.util.HashSet;
importjava.util.Set;
importpojo.student;
importstudentDao.saveStuden
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JAVAWEB 实验 报告