实验八基于某图形用户界面的JDBC程序开发Word格式文档下载.docx
- 文档编号:16263721
- 上传时间:2022-11-22
- 格式:DOCX
- 页数:14
- 大小:47KB
实验八基于某图形用户界面的JDBC程序开发Word格式文档下载.docx
《实验八基于某图形用户界面的JDBC程序开发Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《实验八基于某图形用户界面的JDBC程序开发Word格式文档下载.docx(14页珍藏版)》请在冰豆网上搜索。
五、实验步骤与结果
1请按照以下功能要求编写并调试相关程序
(1)请定义一个抽象的“科学图书”类,其中包含1个公共的抽象方法:
图书介绍;
1个属性为:
图书类别(字符串类型);
(2)定义一个“计算机图书”子类(继承于“科学图书”类),其中包括2个域:
、定价;
2个构造方法:
一个为无参构造方法,在该无参构造方法中将“图书类别”设置为“计算机图书”,一个带2个参数(、定价);
不少于2个成员方法:
分别用来查看、修改定价,图书介绍文字可自编,并编写输出计算机图书全部信息的toString()方法。
(3)编写一个图形用户界面,用来测试能否正确创建计算机图书类的对象、能否正常调用其方法,参考界面如下。
必须实现的基本功能是:
1)单击图中的“新增计算机图书”按钮,则可显示出新增的计算机图书信息(显示信息的控件不限,用文本域、列表框、表格均可),要求添加的计算机图书不少于2本,如下图所示:
图1运行截图——新增计算机图书
2)单击图中的“修改定价”按钮,可修改其中某本图书的定价,并在下方显示出修改后的结果
请按照实验容具体要求完成相关设计与编程,实验步骤;
(1)程序代码
importjava.awt.*;
importjava.awt.event.*;
classCMextendsFrameimplementsActionListener
{
CMBookstart;
//当做链表的开头
Panel操作栏;
Label,定价,显示;
TextField栏,定价栏;
Button新增计算机图书,修改定价;
TextArea显示容;
CM()
{
super("
计算机图书类操作图形用户界面"
);
start=null;
显示=newLabel();
显示容=newTextArea();
显示容.setSize(80,50);
新增计算机图书=newButton("
新增计算机图书"
修改定价=newButton("
修改定价"
新增计算机图书.addActionListener(this);
修改定价.addActionListener(this);
操作栏=newPanel();
操作栏.setSize(60,5);
=newLabel("
"
定价=newLabel("
定价"
栏=newTextField(10);
定价栏=newTextField(5);
操作栏.add();
操作栏.add(栏);
操作栏.add(定价);
操作栏.add(定价栏);
操作栏.add(新增计算机图书);
操作栏.add(修改定价);
setTitle("
计算机图书类操作的图形界面"
add(操作栏,BorderLayout.NORTH);
add(显示容,BorderLayout.CENTER);
add(显示,BorderLayout.SOUTH);
setBounds(300,300,500,500);
setVisible(true);
validate();
}
publicvoidactionPerformed(ActionEvente)
if(e.getSource()==新增计算机图书)
{
Stringone=栏.getText();
Stringtwo=定价栏.getText();
if(Integer.parseInt(two)<
0)
{
显示.setText("
价格不能为负数"
}
else
CMBookmid=newCMBook(one,Integer.parseInt(two));
mid.next=start;
start=mid;
显示容.append(mid.toString());
elseif(e.getSource()==修改定价)
intpricenew;
CMBookpoint;
Stringone,two,three;
one=栏.getText();
two=定价栏.getText();
point=start;
while(true)
if(point==null)
{
显示.setText("
查找不到该类别"
break;
}
if(point..equals(one))
point.定价=Integer.parseInt(two);
显示容.append("
价格修改完成"
+point.toString());
else
point=point.next;
}
}
abstractclassBook
String图书类别;
abstractString图书介绍();
classCMBookextendsBook
CMBooknext;
//额外增加一个引用
String;
int定价;
String图书介绍()
return"
书籍是人类进步的阶梯"
;
CMBook()
图书类别="
计算机图书"
next=null;
CMBook(String,int定价)
this.=;
this.定价=定价;
String查看()
return;
void修改定价(int定价)
publicStringtoString()
return("
类别"
+图书类别+"
|"
++"
|定价"
+定价+"
图书介绍|书籍是人类进步的阶梯\n"
publicclassBookcdx
publicstaticvoidmain(Stringargs[])
newCM();
(2)相应运行结果
2、(选做题)改正以下程序中出现的错误,并进行注释说明
importjava.applet.applet;
importjava.awt.*;
publicclasstestextendsApplet
Labelprompt1,prompt2;
TextFieldinputNo1,inputName1
DepartmentMyDept1;
voidinit()
{prompt1=newLabel("
请输入部门的编号:
inputNo1=newTextField(5);
prompt2=newLabel("
请输入部门的名称:
inputName1=newTextField(5);
add(prompt1);
add(inputNo1);
add(prompt2);
add(inputName1);
MyDept1=newDepartment();
inputNo1.addAction(this);
publicpaint(graphicg)
g.drawstring(MyDept1.toString(),20,100);
publicvoidaction(ActionEvente)
if(e.getSource==inputNo1)
MyDept1.setDeptNo(inputNo1.getText());
elseif(e.getSource()=inputName1)
MyDept1.m_DeptName=newString(inputName1.getText());
repaint();
returnTrue;
finalclassDepartment
intm_DeptNo=10;
staticm_DeptName;
StringgetDeptNo()
returnm_DeptNo;
setDeptNo(intnewno)
if(newno>
m_DeptNo=newno;
returntrue;
else
returnfalse;
return("
部门编号:
+getDeptNo()+"
"
+"
部门名称:
+m_DeptName+"
改正:
importjava.applet.*;
//引入包
//引入包
//分号
publicclassTestextendsAppletimplementsActionListener//extend错误
TextFieldinputNo1,inputName1;
publicvoidinit()//少public
//添加inputName1
inputNo1.addActionListener(this);
//添加this
inputName1.addActionListener(this);
this.setVisible(true);
//显示输出
publicvoidpaint(Graphicsg)//单词错误Graphics
g.drawString(MyDept1.toString(),20,100);
//drawString
publicvoidactionPerformed(ActionEvente)//action拼写错误
if(e.getSource()==inputNo1)
MyDept1.setDeptNo(Integer.parseInt(inputNo1.getText()));
//类型转换成字符
elseif(e.getSource()==inputName1)//判断是相等用==
//repaint();
//returnTrue;
//返回为空不需要
classDepartment//final不需要
//分号
Stringm_DeptName;
//类型没有给出
StringgetDeptNo()//S
returnInteger.toString(m_DeptNo);
//类型
booleansetDeptNo(intnewno)//返回类型没有给出
publicStringtoString()//S
3、(选做题)请按照以下功能要求编写并调试相关程序
实验容:
(1)熟练Tomcat安装与配置;
(2)熟练servlet部署、三种开发方式;
(3)练习JDBC连接;
(4)练习基于JDBC与Servlet的数据库查询、更新(添加、删除、修改)
(一)实验步骤:
熟悉Tomcat安装,servlet部署步骤;
(1)依次创建WEB-INF、classes、lib、web.xml等目录结构
(2)完成相关Servlet程序并调试
(二)以继承HttpServlet方式开发Servlet,完成基于Servlet的JDBC连接(数据库选择SQLServer2000以上)和数据查询应用。
(1)选择SQLServer2000数据库,建立Test数据库和相关users表(字段userid,username,userpass),用户名111,密码111;
(2)以继承HttpServlet方式开发Servlet,完成以下数据库查询显示代码并调试相关结果。
packagejs.hit;
importjavax.servlet.http.*;
importjava.sql.*;
importjava.io.*;
publicclassDataSelextendsHttpServlet{
publicvoiddoGet(HttpServletRequestreq,HttpServletResponseres){
try{
res.setContentType("
text/html;
charset=gbk"
PrintWriterout=res.getWriter();
Stringurl="
jdbc:
microsoft:
sqlserver:
//127.0.0.1:
1433;
DatabaseName=test"
Stringuser="
111"
Stringpassword="
Stringsqlsel="
selectuserid,username,userpassfromusers"
Class.forName("
.microsoft.jdbc.sqlserver.SQLServerDriver"
Connection=DriverManager.getConnection(url,user,password);
Statementsm=.createStatement();
ResultSetrs=sm.executeQuery(sqlsel);
while(rs.next())
out.println(rs.getString
(1)+"
out.println(rs.getString
(2)+"
out.println(rs.getString(3)+"
out.println("
<
br>
rs.close();
sm.close();
cn.close();
catch(Exceptionex){
}
publicvoiddoPost(HttpServletRequestreq,HttpServletResponseres){
this.doGet(req,res);
(三)在上例数据库基础上,继续以继承HttpServlet方式开发另一个Servlet,完成基于Servlet的数据更新应用,参考代码如下。
publicclassDataUpdextendsHttpServlet{
charset=gbk"
Stringsqlupd="
updateuserssetuserpass='
8'
whereuserid=3"
sm.executeUpdate(sqlupd);
六、实验分析与体会
(1)请简述使用JDBC技术编写数据库应用关键步骤
1、装库,建库;
2、找到相应的数据库连接包,sql、oracle都有对应的jar包;
2、写一个类,结合对应的jar包来连接数据库;
3、再写一个类,通过第二步的类用来对数据库操作。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 基于 图形 用户界面 JDBC 程序 开发
![提示](https://static.bdocx.com/images/bang_tan.gif)