實驗八基于圖形用戶界面的JDBC程序開發(fā).doc
《實驗八基于圖形用戶界面的JDBC程序開發(fā).doc》由會員分享,可在線閱讀,更多相關(guān)《實驗八基于圖形用戶界面的JDBC程序開發(fā).doc(12頁珍藏版)》請在裝配圖網(wǎng)上搜索。
實驗4基于圖形用戶界面的JDBC程序開發(fā) (2) 淮海工學院計算機科學系 實驗報告書 課程名:__ Java___________ 題 目:_基于圖形用戶界面的JDBC程序開發(fā) 班 級:__ ___________ 學 號:__ __________ 姓 名:__ __________ _ 評語: 成績: 指導教師: 批閱時間: 年 月 日 一、實驗目的 熟練運用GUI標準組件和布局管理器,正確合理地利用常用AWT和Swing組件進行圖形界面的設計;理解Java的事件處理機制,正確運用Java的事件處理機制及事件委托模型編寫圖形界面組件的事件處理程序;理解Java多線程機制,掌握線程使用方法。 理解JDBC的數(shù)據(jù)庫訪問編程原理,正確利用JDBC技術(shù)編寫以數(shù)據(jù)庫應用為核心的軟件系統(tǒng),并在設計中靈活運用之前所學的Java語言面向?qū)ο蟮木幊碳夹g(shù)。 二、實驗環(huán)境 操作系統(tǒng):windows 2000 或 Window XP 集成開發(fā)環(huán)境:JDK1.6及以上版本 三、實驗學時 2學時,必做實驗。 四、實驗內(nèi)容 (1) 進一步熟悉JavaGUI標準組件和布局管理器、正確合理地利用常用AWT和Swing組件進行圖形界面的設計;理解Java的事件處理機制,正確運用Java的事件處理機制及事件委托模型編寫圖形界面組件的事件處理程序;實踐程序調(diào)試方法、糾錯能力及編程規(guī)范性等;理解JDBC的數(shù)據(jù)庫訪問編程原理,正確利用JDBC技術(shù)編寫以各種數(shù)據(jù)庫應用; (2) 按以下各題目具體要求調(diào)試或編寫相關(guān)算法程序 五、實驗步驟與結(jié)果 1 請按照以下功能要求編寫并調(diào)試相關(guān)程序 (1) 請定義一個抽象的“科學圖書”類,其中包含1個公共的抽象方法:圖書介紹;1個屬性為:圖書類別 (字符串類型); (2) 定義一個“計算機圖書”子類(繼承于“科學圖書”類),其中包括2個域:出版社、定價;2個構(gòu)造方法: 一個為無參構(gòu)造方法,在該無參構(gòu)造方法中將“圖書類別”設置為“計算機圖書”,一個帶2個參數(shù)(出版社、定價);不少于2個成員方法:分別用來查看出版社、修改定價,圖書介紹文字可自編,并編寫輸出計算機圖書全部信息的toString()方法。 (3) 編寫一個圖形用戶界面,用來測試能否正確創(chuàng)建計算機圖書類的對象、能否正常調(diào)用其方法,參考界面如下。必須實現(xiàn)的基本功能是: 1)單擊圖中的“新增計算機圖書”按鈕,則可顯示出新增的計算機圖書信息(顯示信息的控件不限,用文本域、列表框、表格均可),要求添加的計算機圖書不少于2本,如下圖所示: 圖1 運行截圖——新增計算機圖書 2)單擊圖中的“修改定價”按鈕,可修改其中某本圖書的定價,并在下方顯示出修改后的結(jié)果 請按照實驗內(nèi)容具體要求完成相關(guān)設計與編程,實驗步驟; (1) 程序代碼 import java.awt.*; import java.awt.event.*; class CM extends Frame implements ActionListener { CMBook start; //當做鏈表的開頭 Panel 操作欄; Label 出版社,定價,顯示; TextField 出版社欄,定價欄; Button 新增計算機圖書,修改定價; TextArea 顯示內(nèi)容; CM() { super("計算機圖書類操作圖形用戶界面"); start=null; 顯示=new Label(); 顯示內(nèi)容=new TextArea(); 顯示內(nèi)容.setSize(80,50); 新增計算機圖書=new Button("新增計算機圖書"); 修改定價=new Button("修改定價"); 新增計算機圖書.addActionListener(this); 修改定價.addActionListener(this); 操作欄=new Panel(); 操作欄.setSize(60,5); 出版社=new Label("出版社"); 定價=new Label("定價"); 出版社欄=new TextField(10); 定價欄=new TextField(5); 操作欄.add(出版社);操作欄.add(出版社欄); 操作欄.add(定價);操作欄.add(定價欄); 操作欄.add(新增計算機圖書);操作欄.add(修改定價); setTitle("計算機圖書類操作的圖形界面"); add(操作欄,BorderLayout.NORTH); add(顯示內(nèi)容,BorderLayout.CENTER); add(顯示,BorderLayout.SOUTH); setBounds(300,300,500,500); setVisible(true); validate(); } public void actionPerformed(ActionEvent e) { if(e.getSource()==新增計算機圖書) { String one=出版社欄.getText(); String two=定價欄.getText(); if(Integer.parseInt(two)<0) { 顯示.setText("價格不能為負數(shù)"); } else { CMBook mid=new CMBook(one,Integer.parseInt(two)); mid.next=start; start=mid; 顯示內(nèi)容.append(mid.toString()); } } else if(e.getSource()==修改定價) { int pricenew; CMBook point; String one,two,three; one=出版社欄.getText(); two=定價欄.getText(); point=start; while(true) { if(point==null) { 顯示.setText("查找不到該類別"); break; } if(point.出版社.equals(one)) { point.定價=Integer.parseInt(two); 顯示內(nèi)容.append("價格修改完成"+point.toString()); break; } else { point=point.next; } } } } } abstract class Book { String 圖書類別; abstract String 圖書介紹(); } class CMBook extends Book { CMBook next; //額外增加一個引用 String 出版社; int 定價; String 圖書介紹() { return "書籍是人類進步的階梯"; } CMBook() { 圖書類別="計算機圖書"; next=null; } CMBook(String 出版社,int 定價) { this.出版社=出版社; this.定價=定價; 圖書類別="計算機圖書"; next=null; } String 查看出版社() { return 出版社; } void 修改定價(int 定價) { this.定價=定價; } public String toString() { return ("類別"+圖書類別+"|出版社"+出版社+"|定價"+定價+"圖書介紹|書籍是人類進步的階梯\n"); } } public class Bookcdx { public static void main(String args[]) { new CM(); } } (2) 相應運行結(jié)果 2、(選做題) 改正以下程序中出現(xiàn)的錯誤,并進行注釋說明 import java.applet.applet; import java.awt.*; public class test extends Applet { Label prompt1,prompt2; TextField inputNo1,inputName1 Department MyDept1; void init() { prompt1=new Label("請輸入部門的編號:"); inputNo1=new TextField(5); prompt2=new Label("請輸入部門的名稱:"); inputName1=new TextField(5); add(prompt1); add(inputNo1); add(prompt2); add(inputName1); MyDept1=new Department ( ); inputNo1.addAction(this); } public paint(graphic g) { g.drawstring(MyDept1.toString(),20,100); } public void action(ActionEvent e) { if(e.getSource==inputNo1) MyDept1.setDeptNo(inputNo1.getText()); else if(e.getSource()=inputName1) MyDept1.m_DeptName=new String(inputName1.getText()); repaint(); return True; } } final class Department { int m_DeptNo=10; static m_DeptName; String getDeptNo() { return m_DeptNo; } setDeptNo(int newno) { if(newno>0) { m_DeptNo=newno; return true; } else return false; } public String toString() { return("部門編號:"+getDeptNo()+"; " +"部門名稱:" +m_DeptName+"; "); } } 改正: import java.applet.*;// 引入包 import java.awt.*; // 引入包 import java.awt.event.*;//分號 public class Test extends Applet implements ActionListener // extend錯誤 { Label prompt1,prompt2; TextField inputNo1,inputName1;//分號 Department MyDept1; public void init() //少public { prompt1=new Label("請輸入部門的編號:"); inputNo1=new TextField(5); prompt2=new Label("請輸入部門的名稱:"); inputName1=new TextField(5); add(prompt1); add(inputNo1); add(prompt2); add(inputName1);//添加inputName1 MyDept1=new Department ( ); inputNo1.addActionListener(this);//添加this inputName1.addActionListener(this); this.setVisible(true);//顯示輸出 } public void paint(Graphics g)// 單詞錯誤Graphics { g.drawString(MyDept1.toString(),20,100); //drawString } public void actionPerformed(ActionEvent e)//action 拼寫錯誤 { if(e.getSource()==inputNo1) MyDept1.setDeptNo(Integer.parseInt(inputNo1.getText())); //類型轉(zhuǎn)換成字符 else if(e.getSource()==inputName1)//判斷是相等用== MyDept1.m_DeptName=new String(inputName1.getText()); //repaint(); //return True; //返回為空不需要 } } class Department //final不需要 { int m_DeptNo=10; //分號 String m_DeptName; //類型沒有給出 String getDeptNo() //S { return Integer.toString(m_DeptNo); //類型 } boolean setDeptNo(int newno)//返回類型沒有給出 { if(newno>0) { m_DeptNo=newno; return true; } else return false; } public String toString() //S { return("部門編號:"+getDeptNo()+"; " +"部門名稱:" +m_DeptName+"; "); } } 3、(選做題) 請按照以下功能要求編寫并調(diào)試相關(guān)程序 實驗內(nèi)容:(1) 熟練Tomcat安裝與配置; (2) 熟練servlet部署、三種開發(fā)方式;(3) 練習JDBC連接;(4) 練習基于JDBC與Servlet的數(shù)據(jù)庫查詢、更新(添加、刪除、修改) (一) 實驗步驟:熟悉Tomcat安裝,servlet部署步驟; (1) 依次創(chuàng)建WEB-INF、classes、lib、web.xml等目錄結(jié)構(gòu) (2) 完成相關(guān)Servlet程序并調(diào)試 (二) 以繼承HttpServlet方式開發(fā)Servlet,完成基于Servlet的JDBC連接(數(shù)據(jù)庫選擇SQLServer2000以上)和數(shù)據(jù)查詢應用。 (1) 選擇SQLServer2000數(shù)據(jù)庫,建立Test數(shù)據(jù)庫和相關(guān)users表(字段userid,username,userpass),用戶名111,密碼111; (2) 以繼承HttpServlet方式開發(fā)Servlet,完成以下數(shù)據(jù)庫查詢顯示代碼并調(diào)試相關(guān)結(jié)果。 package js.hit; import javax.servlet.http.*; import java.sql.*; import java.io.*; public class DataSel extends HttpServlet{ public void doGet(HttpServletRequest req,HttpServletResponse res){ try { res.setContentType("text/html;charset=gbk"); PrintWriter out = res.getWriter(); String url = "jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName = test"; String user = "111"; String password = "111"; String sqlsel = "select userid,username,userpass from users"; Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); Connection cn = DriverManager.getConnection(url,user,password); Statement sm = cn.createStatement(); ResultSet rs = sm.executeQuery(sqlsel); while(rs.next()) { out.println(rs.getString(1)+""); out.println(rs.getString(2)+""); out.println(rs.getString(3)+""); out.println(""); } rs.close(); sm.close(); cn.close(); } catch (Exception ex) { } } public void doPost(HttpServletRequest req,HttpServletResponse res){ this.doGet(req,res); } } (三) 在上例數(shù)據(jù)庫基礎上,繼續(xù)以繼承HttpServlet方式開發(fā)另一個Servlet,完成基于Servlet的數(shù)據(jù)更新應用,參考代碼如下。 package js.hit; import javax.servlet.http.*; import java.io.*; import java.sql.*; public class DataUpd extends HttpServlet { public void doGet(HttpServletRequest req,HttpServletResponse res){ try { res.setContentType("text/html;charset =gbk"); PrintWriter out = res.getWriter(); String url = "jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName = test"; String user = "111"; String password = "111"; String sqlupd = "update users set userpass = 8 where userid = 3"; Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); Connection cn = DriverManager.getConnection(url,user,password); Statement sm = cn.createStatement(); sm.executeUpdate(sqlupd); sm.close(); cn.close(); } catch (Exception ex) { } } public void doPost(HttpServletRequest req,HttpServletResponse res){ this.doGet(req,res); } } 六、實驗分析與體會 (1) 請簡述使用JDBC技術(shù)編寫數(shù)據(jù)庫應用關(guān)鍵步驟 1、裝庫,建庫; 2、找到相應的數(shù)據(jù)庫連接包,sql、oracle都有對應的jar包; 2、寫一個類,結(jié)合對應的jar包來連接數(shù)據(jù)庫; 3、再寫一個類,通過第二步的類用來對數(shù)據(jù)庫操作。
- 1.請仔細閱讀文檔,確保文檔完整性,對于不預覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點此認領(lǐng)!既往收益都歸您。
下載文檔到電腦,查找使用更方便
9.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標,表示該PPT已包含配套word講稿。雙擊word圖標可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設計者僅對作品中獨創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 實驗 基于 圖形 用戶界面 JDBC 程序 開發(fā)
鏈接地址:http://www.820124.com/p-6687349.html