实验4基于图形用户界面的JDBC程序开发(2)淮海工学院计算机科学系实验报告书课程名:__Java___________题目:_基于图形用户界面的JDBC程序开发班级:_____________学号:____________姓名:_____________评语:成绩:指导教师:批阅时间:年月日1一、实验目的熟练运用GUI标准组件和布局管理器,正确合理地利用常用AWT和Swing组件进行图形界面的设计;理解Java的事件处理机制,正确运用Java的事件处理机制及事件委托模型编写图形界面组件的事件处理程序;理解Java多线程机制,掌握线程使用方法。理解JDBC的数据库访问编程原理,正确利用JDBC技术编写以数据库应用为核心的软件系统,并在设计中灵活运用之前所学的Java语言面向对象的编程技术。二、实验环境操作系统:windows2000或WindowXP集成开发环境:JDK1.6及以上版本三、实验学时2学时,必做实验。四、实验内容(1)进一步熟悉JavaGUI标准组件和布局管理器、正确合理地利用常用AWT和Swing组件进行图形界面的设计;理解Java的事件处理机制,正确运用Java的事件处理机制及事件委托模型编写图形界面组件的事件处理程序;实践程序调试方法、纠错能力及编程规范性等;理解JDBC的数据库访问编程原理,正确利用JDBC技术编写以各种数据库应用;(2)按以下各题目具体要求调试或编写相关算法程序五、实验步骤与结果1请按照以下功能要求编写并调试相关程序(1)请定义一个抽象的“科学图书”类,其中包含1个公共的抽象方法:图书介绍;1个属性为:图书类别(字符串类型);(2)定义一个“计算机图书”子类(继承于“科学图书”类),其中包括2个域:出版社、定价;2个构造方法:一个为无参构造方法,在该无参构造方法中将“图书类别”设置为“计算机图书”,一个带2个参数(出版社、定价);不少于2个成员方法:分别用来查看出版社、修改定价,图书介绍文字可自编,并编写输出计算机图书全部信息的toString()方法。(3)编写一个图形用户界面,用来测试能否正确创建计算机图书类的对象、能否正常调用其方法,参考界面如下。必须实现的基本功能是:1)单击图中的“新增计算机图书”按钮,则可显示出新增的计算机图书信息(显示信息的控件不限,用文本域、列表框、表格均可),要求添加的计算机图书不少于2本,如下图所示:2图1运行截图——新增计算机图书2)单击图中的“修改定价”按钮,可修改其中某本图书的定价,并在下方显示出修改后的结果请按照实验内容具体要求完成相关设计与编程,实验步骤;(1)程序代码importjava.awt.*;importjava.awt.event.*;classCMextendsFrameimplementsActionListener{CMBookstart;//当做链表的开头Panel操作栏;Label出版社,定价,显示;TextField出版社栏,定价栏;Button新增计算机图书,修改定价;TextArea显示内容;CM(){super(计算机图书类操作图形用户界面);start=null;显示=newLabel();3显示内容=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(价格不能为负数);4}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());break;}else{5point=point.next;}}}}}abstractclassBook{String图书类别;abstractString图书介绍();}classCMBookextendsBook{CMBooknext;//额外增加一个引用String出版社;int定价;String图书介绍(){return书籍是人类进步的阶梯;}CMBook(){图书类别=计算机图书;next=null;}CMBook(String出版社,int定价){this.出版社=出版社;this.定价=定价;图书类别=计算机图书;next=null;}6String查看出版社(){return出版社;}void修改定价(int定价){this.定价=定价;}publicStringtoString(){return(类别+图书类别+|出版社+出版社+|定价+定价+图书介绍|书籍是人类进步的阶梯\n);}}publicclassBookcdx{publicstaticvoidmain(Stringargs[]){newCM();}}(2)相应运行结果72、(选做题)改正以下程序中出现的错误,并进行注释说明importjava.applet.applet;importjava.awt.*;publicclasstestextendsApplet{Labelprompt1,prompt2;TextFieldinputNo1,inputName1DepartmentMyDept1;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(newno0){8m_DeptNo=newno;returntrue;}elsereturnfalse;}publicStringtoString(){return(部门编号:+getDeptNo()+;+部门名称:+m_DeptName+;);}}改正:importjava.applet.*;//引入包importjava.awt.*;//引入包importjava.awt.event.*;//分号publicclassTestextendsAppletimplementsActionListener//extend错误{Labelprompt1,prompt2;TextFieldinputNo1,inputName1;//分号DepartmentMyDept1;publicvoidinit()//少public{prompt1=newLabel(请输入部门的编号:);inputNo1=newTextField(5);prompt2=newLabel(请输入部门的名称:);inputName1=newTextField(5);add(prompt1);add(inputNo1);add(prompt2);add(inputName1);//添加inputName1MyDept1=newDepartment();inputNo1.addActionListener(this);//添加thisinputName1.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()));//类型转换成字符9elseif(e.getSource()==inputName1)//判断是相等用==MyDept1.m_DeptName=newString(inputName1.getText());//repaint();//returnTrue;//返回为空不需要}}classDepartment//final不需要{intm_DeptNo=10;//分号Stringm_DeptName;//类型没有给出StringgetDeptNo()//S{returnInteger.toString(m_DeptNo);//类型}booleansetDeptNo(intnewno)//返回类型没有给出{if(newno0){m_DeptNo=newno;returntrue;}elsereturnfalse;}publicStringtoString()//S{return(部门编号:+getDeptNo()+;+部门名称:+m_DeptName+;);}}3、(选做题)请按照以下功能要求编写并调试相关程序实验内容:(1)熟练Tomcat安装