版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
實驗內容提要教師:劉發久班級:計科1201-1206地點:#1409日期:2014年月日第第頁山西農業大學信息學院《基于Java技術的軟件項目實訓》教學大綱課程名稱:基于JAVA技術的軟件項目實訓SoftwareProjectTrainingBasedontheJavaTechnology課程編號:101208課程類別:實訓學時/學分:2周/1學分適用專業:軟件工程專業前言課程性質:《基于JAVA技術的軟件項目實訓》是必修課程,是在Java程序設計課程的基礎上,把Java知識和技能,轉化為Java項目開發能力的訓練,把個人開發,轉化為團隊開發,培養學生的團隊精神?;贘AVA技術的軟件項目實訓是軟件工程專業的實用課,對于畢業生就業具有重要意義。教學目標:通過學習本課程,學生能夠理解和掌握JavaGUI設計和JDBC操作數據庫、理解和掌握Socket編程和多線程編程,熟悉網絡環境的編程。。鼓勵學生自學、互幫互學,激發學生的自主學習熱情、提升學生自學整合。實訓方法與要求建議:通過案例進行教學,本課程共設置2個實訓項目,每個項目1周,共2周,每周安排不少于24學時??己朔绞郊耙?1.平時成績:40分=考勤15分+上機作業25分2.期末成績:100分折合為總成績的60%;3.考試方式:提交文檔4.成績評定:百分制教學內容實訓項目一:GUI和JDBC應用實例實訓性質:實訓實驗類別:上機實驗類型:綜合性計劃學時:1周實驗分組:4-5人1組實訓目的理解和掌握JavaGUI設計和JDBC操作數據庫,熟悉Java工具和環境,能夠進行網站規劃和設計。實驗的基本內容與要求設計一個GUI,能夠實現對數據庫表中數據進行添加、修改、刪除和查詢操作,監聽器用匿名內部類實現。實驗儀器設備、材料計算機、Java環境實驗操作要點GUI控件和布局監聽器設計更新數據庫表中數據的方法查詢數據庫表中數據的方法實驗教學建議做中學,學中做;邊做邊學,邊學邊做。指導書與參考資料Java實用教程,耿祥義,清華大學出版社;2009年7月1日實訓項目二:簡易聊天室的設計與實現實訓性質:實訓實驗類別:上機實驗類型:綜合性計劃學時:1周實驗分組:4-5人1組實訓目的理解和掌握Socket編程和多線程編程,熟悉網絡環境的編程。實驗的基本內容與要求設計一個簡易聊天室,采用Client/Server模式編程,實現用戶之間的對話。實驗儀器設備、材料計算機、Java環境實驗操作要點聊天室界面設計監聽器設計發送消息的方法接受消息的方法實驗教學建議做中學,學中做;邊做邊學,邊學邊做。指導書與參考資料Java實用教程,耿祥義,清華大學出版社;2009年7月1日執筆:審核:編制(修訂)時間:
實驗名稱:HelloWorld程序目的與意義了解Java程序設計的基本特征和面向對象的優越性。體驗類和對象的概念,體驗Java實現圖形界面的簡單性。理解類和對象的概念。掌握Java程序設計的基本過程。內容與要求用記事本編寫程序代碼,在DOS命令窗口中和JDK環境下,編譯、運行HelloWorld程序。程序源代碼importjava.awt.event.*;importjavax.swing.*;publicclassHelloWorldextendsJFrameimplementsActionListener{ JButtonb; MyWin_1(){ setVisible(true); b=newJButton("HelloWorld"); add(b); b.addActionListener(this); } @Override publicvoidactionPerformed(ActionEvente){ if(b.getText()=="HelloWorld"){b.setText("^_^");}else{b.setText("HelloWorld") } publicstaticvoidmain(String[]args){ newMyWin_1(); }}運行結果初始界面:點擊按鈕后的界面:實驗總結對象是面向對象程序設計的核心,所有的對象來自于類,類則是由人們創建的或從API核心類庫中引進的。什么是類?如何創建類?什么是對象?如何創建和使用對象?這些是Java面向對象程序設計的基礎。
實驗名稱:簡單的運算器目的與意義了解數據類型轉換的意義和方法。體驗類監聽器的用途和實現方法。理解事件處理的基本過程。理解界面布局的意義和方法。掌握內部類、匿名類的使用方法。內容與要求在MyEclipse環境下,完成程序的編寫、調試和運行。程序源代碼importjava.awt.GridLayout;importjava.awt.event.*;importjavax.swing.*;classMyWin_3extendsJFrame{ JTextFieldn1,n2,n3; JButtonb1,b2,b3,b4; MyWin_3(){ setVisible(true); n1=newJTextField(10); n2=newJTextField(10); n3=newJTextField(10);n3.setEditable(false); b1=newJButton("+"); b2=newJButton("-"); b3=newJButton("*"); b4=newJButton("/"); setLayout(newGridLayout(5,2)); add(newJLabel("N1:"));add(n1); add(newJLabel("N2:"));add(n2); add(newJLabel("result:"));add(n3); add(b1);add(b2); add(b3);add(b4); b1.addActionListener(newActionListener(){ @Override publicvoidactionPerformed(ActionEvente){ intr=Integer.parseInt(n1.getText().toString())+Integer.parseInt(n2.getText().toString()); n3.setText(String.valueOf(r)); } }); b2.addActionListener(newActionListener(){ @Override publicvoidactionPerformed(ActionEvente){ intr=Integer.parseInt(n1.getText().toString())-Integer.parseInt(n2.getText().toString()); n3.setText(String.valueOf(r)); } }); b3.addActionListener(newActionListener(){ @Override publicvoidactionPerformed(ActionEvente){ intr=Integer.parseInt(n1.getText().toString())*Integer.parseInt(n2.getText().toString()); n3.setText(String.valueOf(r)); } }); b4.addActionListener(newActionListener(){ @Override publicvoidactionPerformed(ActionEvente){ intr=Integer.parseInt(n1.getText().toString())/Integer.parseInt(n2.getText().toString()); n3.setText(String.valueOf(r)); } }); } publicstaticvoidmain(String[]args){ newMyWin_3(); }}運行結果初始界面:輸入數據并點擊+按鈕后的界面:實驗總結界面布局、監聽器、事件處理是Java程序設計的重要內容,掌握界面布局、監聽器、事件處理是掌握Java面向對象程序設計的基礎。
實驗名稱:用JDBC對數據庫進行操作目的與意義了解JDBC的意義和基本用法。體驗JDBC對數據庫的操作。理解加載數據庫驅動、連接數據源、創建語句對象和執行SQL語句的過程。理解Java程序設計的工廠設計模式。掌握JDBC對數據庫的操作的方法。內容與要求在MyEclipse環境下,完成程序的編寫、調試和運行。程序源代碼importjava.awt.GridLayout;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.sql.*;importjavax.swing.*;publicclassMyWindowextendsJFrame{JTextFieldn1,n2,n3;JButtonb1,b2,b3,b4;Connectioncn;Statementst;ResultSetrs; MyWindow(){ setVisible(true); n1=newJTextField(); n2=newJTextField(); n3=newJTextField(); b1=newJButton("添加"); b2=newJButton("修改"); b3=newJButton("刪除"); b4=newJButton("查詢"); setLayout(newGridLayout(5,2)); add(newJLabel("姓名:"));add(n1); add(newJLabel("電話:"));add(n2); add(newJLabel("成績:"));add(n3); add(b1);add(b2); add(b3);add(b4); b1.addActionListener(newActionListener(){ @Override publicvoidactionPerformed(ActionEvente){ Stringsql="insertStudentsvalues('"+n1.getText()+"','"+n2.getText()+"','"+n3.getText()+"')"; doUpdate(sql); n1.setText("");n2.setText("");n3.setText(""); }}); b4.addActionListener(newActionListener(){ @Override publicvoidactionPerformed(ActionEvente){ Stringsql="select*fromStudents"; rs=doQuery(sql); JFramew=newJFrame(); w.setVisible(true); try{ intr=rs.getRow(); w.setLayout(newGridLayout(r,3)); while(rs.next()){ w.add(newJLabel(rs.getString(1)));w.add(newJLabel(rs.getString(2)));w.add(newJLabel(rs.getString(3))); } }catch(Exceptionee){} }}); } voiddoUpdate(Stringsql){ try{ //1.加載數據庫驅動 Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); //2.連接數據源 cn=DriverManager.getConnection("jdbc:odbc:km"); //3.創建語句對象 st=cn.createStatement(); //4.執行SQL語句 st.executeUpdate(sql); }catch(Exceptionee){} }ResultSetdoQuery(Stringsql){ try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); cn=DriverManager.getConnection("jdbc:odbc:km"); st=cn.createStatement(); rs=st.executeQuery(sql); }catch(Exceptionee){} returnrs; } publicstaticvoidmain(String[]args){ newMyWindow(); }}運行結果實驗總結JDBC對數據庫的操作是Java應用的重要內容,掌握加載數據庫驅動、連接數據源、創建語句對象和執行SQL語句的過程是Java程序員必備的技能。
實驗名稱:Java的網絡程序設計目的與意義了解Java的網絡程序設計的基本方法。體驗TCP/IPSocket程序設計的過程。理解客戶端套接字Socket和服務器套接字ServerSocket的意義。理解Client/Server設計模式。掌握Socket和ServerSocket編程方法。內容與要求在MyEclipse環境下,完成程序的編寫、調試和運行。程序源代碼1.Client代碼:import.*;importjava.io.*;importjavax.swing.*;importjava.awt.*;importjava.awt.event.*;publicclassFrameServerextendsJFrame{ ServerSocketserver; Socketclient; DataOutputStreamout; DataInputStreamin;JTextFieldsend,receive;JButtonbutton;FrameServer(){button=newJButton("OK");send=newJTextField(10);receive=newJTextField(10);receive.setEditable(false);add(newJLabel("接收"));add(receive);add(newJLabel("發送"));add(send);add(newJLabel("確認"));add(button);setTitle("FrameServer");setBounds(100,100,600,200);setLayout(newGridLayout(3,2));setVisible(true);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);button.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){speak();}});try{server=newServerSocket(5678);client=server.accept();out=newDataOutputStream(client.getOutputStream()); in=newDataInputStream(client.getInputStream()); }catch(Exceptioneee){eee.printStackTrace();} listen();}voidspeak(){ try{ out.writeUTF(send.getText().trim());}catch(Exceptioneee){eee.printStackTrace();} }voidlisten(){ try{while(true){StringreadClient=in.readUTF();receive.setText(readClient);}}catch(Exceptioneee){eee.printStackTrace();}}publicstaticvoidmain(Stringargs[]){newFrameServer();}}2.Server代碼:import.*;importjava.io.*;importjavax.swing.*;importjava.awt.*;importjava.awt.event.*;publicclassFrameClientextendsJFrame{ Socketclient; DataOutputStreamout; DataInputStreamin; JTextFieldsend,receive;JButtonbutton;FrameClient(){button=newJButton("OK");send=newJTextField(10);receive=newJTextField(10);receive.setEditable(false);setLayout(newGridLayout(3,2));add(newJLabel("接收"));add(receive);add(newJLabel("發送"));add(send);add(newJLabel("確認"));add(button);setTitle("FrameClient");setBounds(100,100,600,200);setVisible(true);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);try{client=newSocket("",5678); out=newDataOutputStream(client.getOutputStream());in=newDataInputStream(client.getInputStream());}catch(Exceptioneee){eee.printStackTrace();}button.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){speak();}});listen();}voidspeak(){ try{ out.writeUTF(send.getText().trim());}catch(Exceptioneee){eee.printStackTrace();} }voidlisten(){ try{while(true){ StringreadClient=in.readUTF();receive.setText(readClient);}}catch(Exceptioneee){eee.printStackTrace();}}publicstaticvoidmain(Stringargs[]){newFrameClient();}}運行結果實驗總結Java套接字分為兩種,一種是客戶端套接字Socket,一種是服務器套接字ServerSocket,網絡程序設計,需要一個客戶端程序和一個服務器程序,客戶端程序是呼叫方,因而需要知道服務器程序的地址和端口號,地址表示網絡上的一臺計算機,端口號表示這臺計算機上的正在運行的一個服務器程序。服務器程序是被叫方,需要響應客戶端程序發出的請求。
實驗名稱:一個最簡單的Web服務器目的與意義了解Web服務器的作用和設計的基本方法。體驗服務器上建立的數據流與客戶端數據流的過程。理解BufferedReader、InputStreamReader、OutputStream的用法。進一步掌握Socket和ServerSocket編程方法。內容與要求在MyEclipse環境下,完成程序的編寫、調試和運行。程序源代碼import.*;importjava.io.*;importjava.util.*;publicclassWebServer{publicstaticvoidmain(Stringargs[])throwsException{ServerSocketserver=newServerSocket(1234);System.out.println("SimpleWebServerrunningonport"+server.getLocalPort());while(true){//等待客戶端連接Socketsocket=server.accept();httpSocket(socket);}}publicstaticvoidhttpSocket(Socketsocket)throwsException{BufferedReaderbr=newBufferedReader(newInputStreamReader(socket.getInputStream()));OutputStreamoutput=socket.getOutputStream();Stringfile;StringheaderLine;while(true){//讀取瀏覽器提交的請求信息if(br.ready()){headerLine=br.readLine();System.out.println(headerLine);System.out.println("Theclientrequestis”+headerLine);StringTokenizers=newStringTokenizer(headerLine);Stringtemp=s.nextToken();System.out.println("Thetempis"+temp);if(temp.equals("GET")){file=s.nextToken();System.out.println("ThefileNameis"+file);}else{file="index.html";}FileInputStreamfis=newFileInputStream("root\\"+file);byte[]data=newbyte[1024];inti=fis.read(data);output.write(data);fis.close();br.close();socket.close();System.out.println("ok");break;}}}}運行結果實驗總結本程序實現了在IE瀏覽器的地址中寫入http://localhost:1234/hello.html回車后會訪問到Web服務器目錄下的root\hello.html文件的功能。
實驗名稱:一個最簡單的Web瀏覽器目的與意義了解Web瀏覽器的作用和設計的基本方法。體驗Web瀏覽器上建立的數據流與客戶端數據流的過程。進一步理解BufferedReader、InputStreamReader、OutputStream的用法。進一步掌握Socket和ServerSocket編程方法。內容與要求在MyEclipse環境下,完成程序的編寫、調試和運行。程序源代碼importjava.io.*;import.*;importjavax.swing.*;importjava.awt.*;importjava.awt.event.*;importjava.util.*;classWebBrowserextendsJFrameimplementsActionListener{ JToolBartoolbar; JButtonaddrButton; JTextFieldaddrField; JTextAreatextArea;WebBrowser(){ addrButton=newJButton("地址"); addrField=newJTextField(100); textArea=newJTextArea(50,100); textArea.setEditable(false);toolbar=newJToolBar();toolbar.add(addrButton);toolbar.add(addrField);add("North",toolbar); add("Center",textArea); addrField.addActionListener(this);setTitle("一個簡單的Web瀏覽器");setBounds(100,100,500,400);setVisible(true); }publicvoidactionPerformed(ActionEvente){ System.out.println("ok"); Stringaddr=addrField.getText(); try{ StringTokenizers=newStringTokenizer(addr,":/");Stringprotocol=s.nextToken();Stringhost=s.nextToken();Stringport=s.nextToken();Stringfile=s.nextToken();System.out.println(addr); System.out.println(protocol+"-"+host+"-"+port+"-"+file);Socketsocket=newSocket(host,Integer.parseInt(port));OutputStreamos=socket.getOutputStream(); PrintWriterout=newPrintWriter(socket.getOutputStream(),true); BufferedReaderin=newBufferedReader(newInputStreamReader(socket.getInputStream())); //sendanHTTPrequesttothewebserver out.println("GET/"+file+"HTTP/1.1"); //readtheresponse char[]data=newchar[1024]; while(true){ if(in.ready()){inti=in.read(data);break;} } //displaytheresponsetotheoutconsole textArea.setText(newString(data)); socket.close(); }catch(Exceptionee){ee.printStackTrace();}}publicstaticvoidmain(Stringargs[]){newWebBrowser();}}運行結果實驗總結隨著Internet的發展,Client/Server在計算機方面的許多新技術應運而生,其中應用范圍最為廣泛的就是Java了,Java不單定義了一種計算機語言,而且提供了一整套Client/Server解決方案。本程序實現了在IE瀏覽器的地址中寫入http://localhost:1234/hello.html回車后會訪問到Web服務器目錄下的root\hello.html文件的功能。
實驗名稱:用多線程實現多用戶服務器目的與意義了解Java多線程程序設計的基本方法。體驗Thread程序設計的過程。理解和掌握線程run()方法的使用。掌握多用戶服務器的編程方法。內容與要求在MyEclipse環境下,完成程序的編寫、調試和運行。程序源代碼importjava.awt.GridLayout;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.io.DataInputStream;importjava.io.DataOutputStream;import.ServerSocket;import.Socket;importjava.util.LinkedList;importjavax.swing.*;classMultiuserServerextendsJFrame{ ServerSocketserver; Socketclient; DataOutputStreamout; DataInputStreamin;JTextFieldsend;JTextAreareceive;JButtonbutton;LinkedList<Socket>sList=newLinkedList<Socket>();MultiuserServer(){button=newJButton("OK");send=newJTextField(10);receive=newJTextArea(40,80);receive.setEditable(false);receive.setAutoscrolls(true);add(newJLabel("接收"));add(receive);add(newJLabel("發送"));add(send);add(newJLabel("確認"));add(button);setTitle("FrameServer");setBounds(100,100,800,200);setLayout(newGridLayout(3,2));setVisible(true);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);button.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){speak();}});try{server=newServerSocket(5678);while(true){//等待客戶端訪問client=server.accept();sList.add(client);//把客戶端Socket對象存儲到鏈表sList中。(newServerThread(client,receive)).start();//執行run()方法。} }catch(Exceptioneee){eee.printStackTrace();} }voidspeak(){ try{ for(inti=0;i<sList.size();i++){ out=newDataOutputStream(sList.get(i).getOutputStream()); out.writeUTF(send.getText().trim()); }}catch(Exceptioneee){eee.printStackTrace();}}classServerThreadextendsThread{ Socketuser; JTextAreareceive; publicServerThread(Socketu,JTextArear){ user=u; receive=r; } publicvoidrun(){ listen(user,receive); }}voidlisten(Socketuser,JTextAreareceive){ try{ in=newDataInputStream(user.getInputStream()); StringreadClient; while(true){ readClient=in.readUTF(); receive.append(readClient+"\n");
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 植筋錨固施工方案
- (2026年)靜脈輸液與輸血考試題(附答案)
- 礦山施工組織設計方案
- 多重耐藥菌感染預防及控制措施試題(附答案)
- 學生對食堂的建議問卷調查
- 2026年第三季度院感職業暴露試題及答案
- 金屬加工企業安全技術措施制度
- 酚醛保溫板施工專項施工方案
- 中外歷史綱要(下) 選擇性必修1 第14單元 第40講 第1課時 中國古代政治制度的形成與發展
- 東北農業大學考研復試題庫全解析
- 2026年新疆維吾爾自治區法檢系統書記員招聘考試參考試題及答案詳解
- 醫療護理員試題含答案
- 腦出血診療指南(2024 版)
- 2026廣西交投集團招聘第三季度招聘188人易考易錯模擬試題(共500題)試卷后附參考答案
- 全球與中國高超音速風洞行業監測調研及發展態勢展望研究報告
- 人工智能教學設計案例高中政治哲學
- 沉井基礎工程施工應急處理保證措施
- Q-CR 9230-2025 鐵路工程沉降變形觀測與評估技術規程
- 小兒腸梗阻的飲食護理指南
- (2025)FIGO、IPPS共識聲明:解決慢性盆腔疼痛女性全球未滿足需求解讀
- 工業園區統計工作制度
評論
0/150
提交評論