Java语言程序设计教程实训指导书_第1页
Java语言程序设计教程实训指导书_第2页
Java语言程序设计教程实训指导书_第3页
Java语言程序设计教程实训指导书_第4页
Java语言程序设计教程实训指导书_第5页
已阅读5页,还剩22页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验内容提要教师:刘发久班级:计科1201-1206地点:#1409日期:2014年月日第第页山西农业大学信息学院《基于Java技术的软件项目实训》教学大纲课程名称:基于JAVA技术的软件项目实训SoftwareProjectTrainingBasedontheJavaTechnology课程编号:101208课程类别:实训学时/学分:2周/1学分适用专业:软件工程专业前言课程性质:《基于JAVA技术的软件项目实训》是必修课程,是在Java程序设计课程的基础上,把Java知识和技能,转化为Java项目开发能力的训练,把个人开发,转化为团队开发,培养学生的团队精神。基于JAVA技术的软件项目实训是软件工程专业的实用课,对于毕业生就业具有重要意义。教学目标:通过学习本课程,学生能够理解和掌握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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论