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