score[i]=Integer.parseInt(JOptionPane.showInputDialog(\请输入第\+(i+1)
+\个同学的成绩\));
}catch(NumberFormatException e) //在try{…….}catch间的语句中若产生异常,则捕获
异常,直接进行异常处理 { } }
14
try{ 检查分数(score[i]); //在检查分数模块中,可能产生高分异常对象,也可能产生低分异}catch(高分异常 e){
System.out.println(e);
常对象,根据不同情况,进行不同处理
}catch(负分异常 e){
System.out.println(e);
}
}
}
public void 输出成绩() {
System.out.println(score[0]); System.out.println(score[1]);
}
public static void main(String arg[]) {
ExceptionDemo demo = new ExceptionDemo(); demo.录入成绩();
demo.输出成绩(); }
XX学院java实验报告
三、实验要求
1、根据题目要求完成程序中没有完成的模块。 2、写好上机报告。
实验七:图形用户界面设计(一)
一、 实验目的:
1. 巩固图形用户界面设计的方法 2. 掌握事件处理的设计方法 二、 实验内容:
1.绘制如下形式的图形界面,要求:窗体背景为蓝色,中间为黄色方格。
import java.awt.*; public class Test{ }
class F extends Frame{
public static void main(String args[]){ }
new F();
F(){
int x,y,w,h;
x = 200;y = 200;w = 200;h = 200; setBounds(x,y,w,h);
setBackground(Color.yellow); Panel p = new Panel();
p.setBounds(x/4,y/4,w/2,h/2); p.setBackground(Color.blue); setLayout(null);
15
XX学院java实验报告
} }
add(p);
setVisible(true);
2. 编写程序,绘制如下格式的界面:
import java.awt.*;
public class Test{
public static void main(String args[]){
Frame f = new Frame();
f.setLayout(new GridLayout(2,1)); f.setBounds(300,300,300,300);
Panel p1 = new Panel(new BorderLayout()); Panel p2 = new Panel(new BorderLayout()); Panel p11 = new Panel(new GridLayout(2,1)); Panel p21 = new Panel(new GridLayout(2,2)); p1.add(new Button(\),BorderLayout.WEST); p1.add(new Button(\),BorderLayout.EAST); p11.add(new Button(\)); p11.add(new Button(\)); p1.add(p11,BorderLayout.CENTER);
p2.add(new Button(\),BorderLayout.WEST); p2.add(new Button(\),BorderLayout.EAST); for(int i = 0;i<4;i++){
p21.add(new Button(\));
16
XX学院java实验报告
}
}
}
p2.add(p21,BorderLayout.CENTER); f.add(p1);f.add(p2); f.setVisible(true);
3.编写程序,创建如下图所示的图形界面(不必为组件提供功能)。
import java.awt.*; import java.awt.event.*;
public class Test{
public static void main(String args[]){
Frame f = new Frame();
f.setBounds(300,300,300,300); f.setLayout(new BorderLayout()); Panel p1 = new Panel();
p1.setLayout(new GridLayout(1,0)); p1.add(new TextField());
17
XX学院java实验报告
}
}
Panel p2 = new Panel();
p2.setLayout(new GridLayout(4,4)); p2.add(new Button(\)); p2.add(new Button(\)); p2.add(new Button(\)); p2.add(new Button(\)); p2.add(new Button(\)); p2.add(new Button(\)); p2.add(new Button(\)); p2.add(new Button(\)); p2.add(new Button(\)); p2.add(new Button(\)); p2.add(new Button(\)); p2.add(new Button(\)); p2.add(new Button(\)); p2.add(new Button(\)); p2.add(new Button(\)); p2.add(new Button(\)); f.add(p1,BorderLayout.NORTH); f.add(p2,BorderLayout.CENTER);
f.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){ }
System.exit(0);
});
f.setVisible(true);
18
XX学院java实验报告
4.验证书中例题。 三、 实验要求:
1. 事先预习,写出预习报告 2. 上机验证后写出实验报告
实验八 图形用户界面设计(二)
一、实验目的
1.掌握各种组件的用法;
2.掌握布局管理器的布局方式; 3.掌握事件处理机制。 二、实验内容
1.验证书中例题。
2.试创建如下图所示的图形用户界面,颜色列表框为红色、绿色和蓝色。
import java.awt.*;
public class Test{
public static void main(String args[]){
Frame f = new Frame();
f.setBounds(300,300,300,300); f.setLayout(new BorderLayout());
Panel p1 = new Panel();Panel p2 = new Panel();Panel p21 = new Panel();Panel p22 p1.setLayout(new GridLayout(1,0)); Choice c = new Choice();
c.add(\红色\);c.add(\绿色\);c.add(\蓝色\); p1.add(c);
p2.setLayout(new GridLayout(2,1));
p21.setLayout(new FlowLayout(FlowLayout.CENTER));p22.setLayout(new p21.add(new Checkbox(\背景\)); p21.add(new Checkbox(\前景\)); p22.add(new Button(\确定\)); p22.add(new Button(\取消\)); p2.add(p21);p2.add(p22);
19
= new Panel();
FlowLayout(FlowLayout.CENTER));
XX学院java实验报告
} }
f.add(p1,BorderLayout.NORTH); f.add(p2,BorderLayout.CENTER);
f.setVisible(true);
3.编写程序,创建如下图所示的图形界面。(要求实现功能)
import java.awt.*; import java.awt.event.*;
public class Test extends Frame{
static TextField tf1 = new TextField(); static TextField tf2 = new TextField(); static TextField tf3 = new TextField();
static Button b1 = new Button(\求和\);static Button b2 = new Button(\清除\); public static void main(String args[]){ }
20
Test f = new Test();
f.setBounds(300,300,300,300); f.setLayout(new GridLayout(3,3)); f.add(new Label(\加数1:\));
f.add(tf1);
f.add(new Label()); tf1.getText();
f.add(new Label(\加数2:\));
f.add(tf2);f.add(new Label());
b1.addActionListener(new Test().new T()); b2.addActionListener(new Test().new T()); f.add(b1);f.add(tf3);f.add(b2); f.setVisible(true);
XX学院java实验报告
class T implements ActionListener{ } }
public void actionPerformed(ActionEvent e) { }
// TODO 自动生成方法存根 if(e.getSource() == b1){ }
int a = Integer.parseInt((tf1.getText())); int b = Integer.parseInt((tf2.getText())); tf3.setText(\+(a+b)); tf1.setText(\); tf2.setText(\); tf3.setText(\);
}else if(e.getSource() == b2){
三、实验要求
1、根据题目要求完成各程序。 2、写好上机报告。
实验九 图形用户界面设计(三)
一、实验目的
1.掌握各种组件的用法;
2.掌握布局管理器的布局方式; 3.掌握事件处理机制。 4. 熟悉绘图类的基本用法
5.掌握绘图类中常用的绘图方法 二、实验内容
1.验证书中例题:P200页 例6.5、P209页 例6.6。
2.设计一个程序,程序执行时,随机产生一条直线、一个矩形、一个椭圆,并且每个图形的颜色不同。(说明:可利用系统类Math中的静态方法random(),该方法产生一个0~1间的小数)
import javax.swing.*;
21
XX学院java实验报告
import java.awt.*; import java.awt.event.*; import java.util.Random;
public class FFrame extends JFrame{ }
public class Test { }
public static void main(String args[]){ }
new FFrame().lauchFFrame(); /** * */
private static final long serialVersionUID = -3229434935585351686L; public void lauchFFrame(){ }
public void paint(Graphics g){ }
Random r = new Random(); int i = r.nextInt(3); if(i == 0){ }
g.setColor(Color.BLACK); g.fillOval(50, 50, 100, 100); g.setColor(Color.blue); g.fillRect(50, 50, 100, 100); g.setColor(Color.CYAN); g.drawLine(50, 50, 100, 100); setBounds(300,300,300,300);
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){ }
setVisible(false); System.exit(0);
});
setVisible(true);
}else if(i == 1){
}else{
22
XX学院java实验报告
3.设计如下形式的窗口,并实现窗口的关闭功能:
import javax.swing.*;
import java.awt.*; import java.awt.event.*;
public class FFrame extends JFrame{
/** * */
private static final long serialVersionUID = -3229434935585351686L; public void lauchFFrame(){ }
public void paint(Graphics g){
g.drawString(\五星\, 200, 200); g.drawLine(81,55,37,190);
23
setBounds(300,300,300,300);
addWindowListener(new WindowAdapter(){
addMouseListener(new MouseAdapter(){
setVisible(true);
public void mousePressed(MouseEvent e){ }
int x = e.getX(); int y = e.getY();
System.out.println(\+x+\+y); public void windowClosing(WindowEvent e){ }
setVisible(false); System.exit(0);
});
});
XX学院java实验报告
}
}
g.drawLine(37,190,159,93); g.drawLine(159,93,32,96); g.drawLine(32,96,155,188); g.drawLine(155,188,81,55);
4. 设计如下形式的窗口,并实现窗口的关闭功能:
package paint;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class FFrame extends JFrame{ /** * */
private static final long serialVersionUID = -3229434935585351686L; public void lauchFFrame(){
setBounds(300,300,500,400);
addWindowListener(new WindowAdapter(){
24
XX学院java实验报告
}
public void windowClosing(WindowEvent e){ setVisible(false); System.exit(0); } });
addMouseListener(new MouseAdapter(){
public void mousePressed(MouseEvent e){ int x = e.getX(); int y = e.getY();
System.out.println(\ } });
setVisible(true); }
public void paint(Graphics g){ g.setColor(Color.BLUE);
g.fillRect((500-100)/2, 80, 100, 100); g.drawOval((500-150)/2, 60, 150, 150); g.setColor(Color.RED);
g.fillRect((500-300)/2,150,300,100); g.fillOval(90, 140, 20, 20); g.fillOval(390, 140, 20, 20); g.fillOval(90, 240, 20, 20); g.fillOval(390, 240, 20, 20); g.fillRect(90, 150, 10, 100); g.fillRect(400, 150, 10, 100); g.fillRect(100,140,300,10); g.fillRect(100,250,300,10); g.fillOval(140, 240, 60, 60); g.fillOval(300, 240, 60, 60); g.setColor(Color.BLACK);
g.drawLine(50, 300, 450, 300); }
25
XX学院java实验报告
三、实验要求
1、根据题目要求完成各程序。 2、写好上机报告。
实验十:图形用户界面综合设计
一、 实验目的:
1、 巩固图形用户界面设计的方法 2、 掌握事件处理的设计方法 二、 实验内容:
案例 学生信息注册界面设计解析
多数学校的学生档案信息都由计算机进行管理,在编写的档案管理应用程序中,有档案信息录入模块,该模块的功能是在图形化的界面下,用户把信息输入到计算机中。录入界面的大致样式及组件名称如图。
26
XX学院java实验报告
框架标签文本行面板单选钮复选框选择框按钮文本区图5-1 信息录入界面
设计上述程序界面并实现相应的功能,程序框架如下,补全代码:
import java.awt.*; import java.awt.event.*;
public class InputData implements ActionListener {
Frame f; //声明框架对象 Label l1,l2,l3,l4; //声明标签对象 TextField t; //声明文本行对象 Checkbox r1,r2; //声明单选钮对象 CheckboxGroup g; //声明组对象 Checkbox c1,c2,c3;
Choice ch; //声明选择框对象 Button b; //声明按钮对象 TextArea ta; //声明文本区对象 Panel p1,p2,p3,p4,p5; //声明面板对象 int i=0;
public InputData() {//对象实例化;
f=new Frame(\信息录入\);
f.setBounds(200,200,500,500); ch = new Choice();
l1 = new Label(\姓名:\);l2 = new Label(\性别:\);l3 = new Label(\爱好:\);l4 = new
Label(\籍贯:\); t = new TextField();
t.setSize(200, 10);g = new CheckboxGroup();
r1 = new Checkbox(\男\,g,false);r2 = new Checkbox(\女\,g,true);
c1 = new Checkbox(\体育\);c2 = new Checkbox(\音乐\);c3 = new Checkbox(\美术\); b = new Button(\确定\);
b.addActionListener(this); ta = new TextArea();
27
XX学院java实验报告
p2 = new Panel();p3 = new Panel();p4 = new Panel();p5 = new Panel();
ch.add(\济南\); //添加选择项 ch.add(\潍坊\); ch.add(\济宁\);
Panel p = new Panel();
p.setLayout(new GridLayout(5,1)); p1=new Panel();
p1.setLayout(new FlowLayout(FlowLayout.LEFT)); //设定面板布局样式 p2.setLayout(new FlowLayout(FlowLayout.LEFT)); p3.setLayout(new FlowLayout(FlowLayout.LEFT)); p4.setLayout(new FlowLayout(FlowLayout.LEFT)); p.add(p1);
p.add(p2);p.add(p3);p.add(p4);p.add(p5);
p1.add(l1); //面板中加入组件 p1.add(t);
p2.add(l2);p2.add(r1);p2.add(r2);
p3.add(l3);p3.add(c1);p3.add(c2);p3.add(c3); p4.add(l4);p4.add(ch);
p5.setLayout(new FlowLayout(FlowLayout.CENTER)); p5.add(b);
f.setLayout(new GridLayout(2,1)); //设定框架布局样式 f.add(p);
28
XX学院java实验报告
}
public void actionPerformed(ActionEvent e) //事件处理接口实现 { //把输入内容显示到文本区中; i++;
String n = \第\+i+\名同学的输入信息为:\\n\ ;
n+= \姓名:\+t.getText()+\;
String xingbie = \+g.getSelectedCheckbox().getLabel();
String aihao = \+(c1.getSelectedObjects()==null?\:c1.getLabel())+
\+(c2.getSelectedObjects()==null?\:c2.getLabel())+
\+(c3.getSelectedObjects()==null?\:c3.getLabel());
f.addWindowListener(new WindowAdapter(){ //注册事件监听器,匿名类实现接口 public void windowClosing(WindowEvent e){
}
f.setVisible(false); System.exit(0);
f.add(ta);
});
f.setVisible(true);
n+= \性别:\+xingbie+\+\爱好:\+aihao;
n+= \籍贯:\+(ch.getSelectedIndex()==0?\济南\:(ch.getSelectedIndex()==1?\潍坊\:\
济宁\));
ta.append(n+\); }
}
public static void main(String args[]) { }
new InputData();
三、 实验要求:
1、 事先预习,写出预习报告 2、 上机验证后写出实验报告
实验十一 多线程技术
一、实验目的
1.理解多线程编程技术的概念; 2.掌握多线程创建的方法;
3.掌握多线程在实际应用开发程序中的使用。 二、实验内容
案例 动画显示解析
29
XX学院java实验报告
动画显示是多媒体技术的一个主要方面,如今动画制作也是日常工作中经常要用到的,实现动画技术的方法也非常多,利用多线程的技术方法可以解决动画显示的一些实现问题,
动画原理:
在Applet中加载若干幅表现不同状态的图片,利用线程按顺序切换图片实现动画效果。下载图片时,使用了图像跟踪技术。
尝试实现功能,补全代码。 1、程序代码: import java.awt.*;
import java.applet.Applet;
public class Animation extends Applet implements Runnable { Image images[]; //图像数组 MediaTracker tracker; //图像跟踪对象变量 int index=0; //图像索引 Thread animator; //线程变量 Image offScrImage; //用于图像缓冲的图像对象变量 Graphics offScrGC; //图像对象变量 int total=5; //图片总数 public void init()
{ tracker=new MediaTracker(this); //建立图像跟踪对象 images=new Image[total]; //建立数组 try{ offScrImage=createImage(getWidth(),getHeight()); //建立用于缓冲的对象 offScrGC=offScrImage.getGraphics(); //取出图像对象 offScrGC.setColor(getBackground()); offScrGC.fillRect(0,0,getWidth(),getHeight()); //用背景色画矩形 }catch(Exception e){e.printStackTrace();} for(int i=0;i{
} try{ tracker.waitForAll(); //等待全部图像载入完 }catch(InterruptedException e){} } public void start() //在缓冲区准备好第一幅图并建立线程、启动线程
{
} public void run()
{
30
XX学院java实验报告
} try{ animator.sleep(200); //休眠等待200毫秒 }catch(InterruptedException e){ } repaint(); //调用重画方法 } }
public void paint(Graphics g) { }
public void update(Graphics g) //重写update()方法防止闪烁 {
}
2、Applet程序运行,编写Html文件:
三、实验要求:
1、事先预习,写出预习报告 2、上机验证后写出实验报告
}
public void stop() { if(animator!=null) animator=null; //清除对象,停止线程 }
实验十二:Applet程序设计
一.实验目的:
1.熟悉Applet程序的编写与运行
2.掌握HTML文件与Applet间参数的传递 3.掌握在Applet中输出图像与声音 二.实验内容:
1.设计用户邮箱登录界面。(如下所示)
31
XX学院java实验报告
2.请编写一个Applet,用它的HTML文件中给出的两个整型参数作加数,求它们的和,并显示结果。
3.准备好几个音乐文件和一幅图像,编写一个Applet,显示一幅图像并添加“播放”、“循环”、“停止”三个按钮,用于控制音乐文件的播放。
32
XX学院java实验报告
4.验证书中例题。 三、试验要求
1、预习试验内容并写出上机报告。 2、实验中出现的问题及实验体会。
实验十三 输入输出(一)
一、实验目的:
1.理解Java输入输出的实现机制;
2.掌握常用的输入输出类的功能及方法;
3.掌握常用数据类型针对文件的输入输出方式。 二、实验内容:
1. double型数组中保存有如下数据:1.23,69.88,34.45,67.98,2345.67。将数据以二进制形式保存到文件中去。
33
XX学院java实验报告
public class Test { }
}
FileOutputStream fos = new FileOutputStream(f); for(int i = 0;ifos.write((char)q[i]);
/**
* @param args
* @throws FileNotFoundException */
public static void main(String[] args) throws Exception {
// TODO 自动生成方法存根 String f = \;
double q[] = {1.23,69.88,34.45,67.98,2345.67};
2.编程将以上数据以可打印形式保存到文件中去。
import java.io.*; public class Test { }
public static void main(String args[]) throws Exception{ }
String n = \;
BufferedWriter bw = new BufferedWriter(new FileWriter(\)); bw.write(n); bw.close();
34
XX学院java实验报告
3.读入http://www.sina.com..cn网页的内容,并以可读形式将其输出到一个文件中去。
import java.net.URL; import java.io.*;
public class Test {
Reader r = new InputStreamReader(is);
FileOutputStream fos = new FileOutputStream(\); int c = 0;
while((c = r.read())!=-1){ fos.write(c); } }
} /**
* @param args
* @throws Exception */
public static void main(String[] args) throws Exception {
URL u = new URL(\); InputStream is = u.openStream(); is = new BufferedInputStream(is);
三、试验要求:
1、预习试验内容并写出上机报告。 2、实验中出现的问题及实验体会。
35
XX学院java实验报告 实验十四 输入输出(二)
一、实验目的
1.理解Java输入输出的实现机制;
2.掌握常用的输入输出类的功能及方法;
3.掌握常用数据类型针对文件的输入输出方式。 二、实验内容
案例 记事本程序设计解析
我们经常使用记事本来记录、保存一些数据、文字,或者打开以前创建的文件进行操作。把我们编辑好的内容存入文件就是输出。而打开原有的文件的内容则是输入。程序主界面如图1所示。当点击打开按钮则弹出打开文件对话框如图2所示。当选择文本文件后,将文本文档的内容显示在文本区中如图3所示。同理,当在文本区中编辑好内容后,点击保存按钮,则弹出文本保存对话框,选择保存位置后可将内容保存到文件中去。
试尝试实现此功能。
图1 记事本界面 图2 打开文件对话框 图3 显示文件内容 源代码如下,补全代码: 1.界面程序: import java.awt.*; import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.io.*;
public class Frame1 extends JFrame implements ActionListener {
JPanel contentPane;
JScrollPane jScrollPane1 = new JScrollPane(); BorderLayout borderLayout1 = new BorderLayout(); JPanel jPanel1 = new JPanel();
JTextArea jTextArea1 = new JTextArea(); JButton jButton1 = new JButton(\保存\ JButton jButton2 = new JButton(\打开\//窗口的构造方法
36
XX学院java实验报告
public Frame1() { }
//jbInit()方法完成界面的初始化设置 private void jbInit() throws Exception {
37
setLayout(borderLayout1); jButton1.addActionListener(this); jButton2.addActionListener(this);
add(jTextArea1,borderLayout1.CENTER); add(jPanel1,borderLayout1.SOUTH); jPanel1.setLayout(new FlowLayout()); jPanel1.add(jButton1); jPanel1.add(jButton2); setBounds(200,200,600,600);
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){ }
setVisible(false); System.exit(0);
});
XX学院java实验报告
}
//保存、打开两个按钮的事件处理方法 public void actionPerformed(ActionEvent e) { //如果用户点击保存按钮
if(e.getSource()==jButton1){ JFileChooser fc1=new JFileChooser();
int option = fc1.showSaveDialog(null); // 显示文件对话框
if(option == JFileChooser.APPROVE_OPTION) // 如果确认选取文件 {
File file = fc1.getSelectedFile(); // 取得选择的文件 setTitle(file.toString()); // 在标题栏上设定文件名称 try {
file.createNewFile(); // 建立文件 }
catch(IOException e1) {
JOptionPane.showMessageDialog(null, e1.toString(),
\无法建立新文件\ } } }
//如果用户点击打开按钮 if(e.getSource()==jButton2) {
jTextArea1.setText(\
JFileChooser fc=new JFileChooser();
38
XX学院java实验报告
int option1 = fc.showDialog(null, null);
39
// 使用者按下确认键
if(option1 == JFileChooser.APPROVE_OPTION) { try {
// 开启选取的文件 BufferedReader buf = new BufferedReader( new FileReader( fc.getSelectedFile()));
setTitle(fc.getSelectedFile().toString());// 设定文件标题 jTextArea1.setText(\清除前一次文件
String lineSeparator = System.getProperty(\ // 取得系统相依的换行字符 String text;// 读取文件并附加至文字编辑区 while((text = buf.readLine()) != null) { }
jTextArea1.append(text); jTextArea1.append(lineSeparator);
buf.close(); }
catch(IOException ee) {
JOptionPane.showMessageDialog(null, ee.toString(), \开启文件失败\ }
XX学院java实验报告
catch(Exception ex){
System.out.print(ex.toString());
} } } }
2.主程序:
}
import java.awt.*; import javax.swing*;
public class Application1 {
public Application1( ) {
Frame1 frame = new Frame1(); // 使窗口居中
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); Dimension frameSize = frame.getSize(); if (frameSize.height > screenSize.height)
{ frameSize.height = screenSize.height; } if (frameSize.width > screenSize.width)
{ frameSize.width = screenSize.width; }
frame.setLocation( (screenSize.width - frameSize.width) / 2, (screenSize.height - frameSize.height) / 2);
frame.setVisible(true); }
//主程序的main()方法
public static void main(String[] args) { new Application1( ); } }
三、试验要求
1、预习试验内容并写出上机报告。 2、实验中出现的问题及实验体会。
实验十五 网络通信
一、实验目的
1.理解网络通信的原理和常用通信技术的概念; 2.掌握基于TCP协议的套接字的网络编程方法 3.掌握网络通信在实际应用开发程序中的应用。 二、实验内容
案例 聊天程序解析
通过建立一个Socket客户端和一个ServerSocket服务端进行实时数据交换。运行时先打开服务器端,然后
40
XX学院java实验报告
再打开客户端,单击客户端的“连接服务器”按钮将与服务器建立连接;连接之后,双方在各自图形界面的文本框中填写要发送的信息,然后单击 “Send”按钮,就可以进行通信了。程序运行结果如图1所示。整个程序分成客户端和服务器端两大部分,分别保存成Client.java和Server.java两个文件。
图1 聊天程序运行界面(客户端和服务器端)
1.客户端程序代码:
import java.net.*; import java.io.*; import java.awt.*; import java.awt.event.*; import javax.swing.*;
class Client extends JFrame implements ActionListener { Socket sock; //定义套接字对象 JTextArea t1=new JTextArea(); {
41
JTextField t2=new JTextField(20); JButton b1=new JButton(\); JButton b2=new JButton(\连接服务器\);
DataOutputStream out; //定义数据输出流 DataInputStream in; //定义数据输出流 public Client()
this.getContentPane().add(jsp,\); JPanel p1=new JPanel(); p1.add(t2); p1.add(b1); JPanel p2=new JPanel(); p2.add(b2);
this.getContentPane().add(p2,\); this.getContentPane().add(p1,\);
b1.addActionListener(this); b2.addActionListener(this); setTitle(\客户端\); setSize(340,200); setVisible(true); addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e)
setVisible(false); System.exit(0);
{ JScrollPane jsp=new JScrollPane(t1);
XX学院java实验报告
{ {
42
}
}
});
public void actionPerformed(ActionEvent e)
if(e.getSource() == b1){
try { }
out = new DataOutputStream(sock.getOutputStream()); String n = t2.getText(); out.writeUTF(n); t2.setText(\);
// TODO 自动生成 catch 块 e1.printStackTrace();
} catch (IOException e1) {
}
else if(e.getSource()==b2)
try { }
new Communnion(this).start();
sock = new Socket(\,7777); // TODO 自动生成 catch 块 e1.printStackTrace(); // TODO 自动生成 catch 块 e1.printStackTrace();
} catch (UnknownHostException e1) {
} catch (IOException e1) {
XX学院java实验报告
{ }
class Communnion extends Thread { { { { }
}
}
try { } try{
fp.out.close(); //关闭Socket输出流 fp.in.close(); //关闭Socket输入流
fp.in = new DataInputStream(fp.sock.getInputStream()); msg = fp.in.readUTF(); if(msg!=null){ }
// TODO 自动生成 catch 块 e.printStackTrace();
fp.t1.append(msg+\);
String msg=null; while(true) }
public void run()
this.fp=fp; Client fp;
Communnion(Client fp) }
Client mainFrame=new Client(); }
public static void main(String agrs[])
}
} catch (IOException e) {
fp.sock.close(); //关闭Socket }catch(Exception ee){}
2.服务器端代码:
43
XX学院java实验报告
package server;
import java.net.*; import java.io.*; import java.awt.*; import java.awt.event.*;
import javax.swing.*;
class Server extends JFrame implements ActionListener { {
ServerSocket serverSock ; //定义服务器套接字 Socket sock; //定义客户套接字 JTextArea t1=new JTextArea(); JTextField t2=new JTextField(20); JButton b1=new JButton(\);
DataOutputStream out; //定义数据输出流 DataInputStream in; //定义数据输入流 String cname=null;
public Server() throws IOException
serverSock = new ServerSocket(7777); JScrollPane jsp=new JScrollPane(t1); this.getContentPane().add(jsp,\); JPanel p1=new JPanel(); p1.add(t2); p1.add(b1);
this.getContentPane().add(p1,\); b1.addActionListener(this);
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){ }
setVisible(false); System.exit(0);
});
setTitle(\服务器\); setSize(340,200); setVisible(true); try{
sock=serverSock.accept(); //使用accept()阻塞等待客户请求,
44
XX学院java实验报告
{ }
class Communnion extends Thread { {
}
//有客户请求到来则产生一个Socket对象,并继续执行 System.out.println(\);
out=new DataOutputStream(sock.getOutputStream()); //由Socket对象得到输入流,并构造相应的DataOutputStream对象 in=new DataInputStream(sock.getInputStream()); out.writeUTF(\你连接服务器成功\); // 给客户反馈信息
Communnion th=new Communnion(this); //建立与客户端交互的线程
//由socket对象得到输出流,并构造DataInputStream对象
th.start(); // 启动线程 }catch(Exception e){}
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e)
out.writeUTF(\); //退出时告诉客户端 }catch(Exception ee){} dispose(); System.exit(0);
{ try{
} });
public void actionPerformed(ActionEvent e)
String n = t2.getText(); try { }
out.writeUTF(n); t2.setText(\);
// TODO 自动生成 catch 块 e1.printStackTrace();
} catch (IOException e1) {
}
public static void main(String agrs[]) throws IOException
{ Server mainFrame=new Server(); }
Server fp;
Communnion(Server fp)
this.fp=fp;
45
XX学院java实验报告
{ {
} try{
fp.out.close(); //关闭socket输出流 fp.in.close(); //关闭socket输入流 fp.sock.close(); //关闭socket }catch(Exception ee){break; }
try{
msg = fp.in.readUTF(); if(msg!=null){ }
fp.t1.append(msg+\);
String msg=null; while(true) }
public void run()
fp.serverSock.close(); //关闭ServerSocket }catch(Exception ee){}
} }
三、实验要求:
1、事先预习,写出预习报告 2、上机验证后写出实验报告
实验十六 数据库设计
一、实验目的
1.理解JDBC的功能及体系结构;
2.掌握利用JDBC实现数据库的查询更新等操作的方法; 3.掌握基本的Java数据库程序设计。 二、实验内容
案例 成绩查询系统分析
设计一个小程序可以实现各种单科考试、竞赛等成绩的各种查询。将操作与图形用户界面相结合,则很容易实现绩查询系统。程序包括三个类,除了主程序及窗体程序外,数据库连接的功能单独由一个类来完成。程序主界面如图1所示。当输入考号后点击按考生查询按钮,则显示该生成绩如图2所示。
46
XX学院java实验报告
图1 成绩查询系统界面 图2 按照考号查询成
点击“成绩名次”按钮可以查看考试排名如图3所示。点击“未通过名单”按钮可以查看学生不及格的情况如图4所示。
图3 查询成绩名次 图4 查询未通过名单
在上面的案例框架中,我们需要利用JDBC连接数据库进行访问。 试尝试实现此功能,补全代码。 1.数据库连接类: import java.sql.*;
public class DbConnect //静态方法提高数据库的连接 { } }
2.窗体程序: import java.awt.*; import javax.swing.*; import java.sql.*;
import java.awt.event.*;
public class ScoreInquirementFrame extends JFrame implements ActionListener {
JPanel contentPane;
47
XX学院java实验报告
Connection con; Statement st;
JSplitPane jSplitPane1 = new JSplitPane();
BorderLayout borderLayout1 = new BorderLayout(); JPanel jPanel1 = new JPanel();
JScrollPane jScrollPane1 = new JScrollPane(); JTextArea jTextArea1 = new JTextArea(); JLabel jLabel1 = new JLabel(\考号\
JButton jButton1 = new JButton(\成绩名次\ JButton jButton2 = new JButton(\未通过名单\ JTextField jTextField1 = new JTextField();
JButton jButton3 = new JButton(\按考生查询\ //构造方法
public ScoreInquirementFrame() {
}/进行窗口的初始化
private void jbInit() throws Exception {
contentPane = (JPanel) getContentPane(); contentPane.setLayout(borderLayout1); setSize(new Dimension(400, 300)); setTitle(\成绩查询系统\ con=DbConnect.getConn(); st=con.createStatement();
jSplitPane1.setOrientation(JSplitPane.VERTICAL_SPLIT); jPanel1.setLayout(null);
jLabel1.setBounds(new Rectangle(24, 15, 49, 25)); jButton1.setBounds(new Rectangle(79, 58, 181, 29)); jButton1.addActionListener(this);
jButton2.setBounds(new Rectangle(80, 100, 178, 28)); jButton2.addActionListener(this);
jTextField1.setBounds(new Rectangle(79, 15, 180, 25)); jButton3.setBounds(new Rectangle(268, 15, 96, 24)); jButton3.addActionListener(this);
contentPane.add(jSplitPane1, java.awt.BorderLayout.CENTER); jSplitPane1.add(jPanel1, JSplitPane.TOP); jPanel1.add(jButton1); jPanel1.add(jButton2); jPanel1.add(jTextField1); jPanel1.add(jButton3); jPanel1.add(jLabel1);
jSplitPane1.add(jScrollPane1, JSplitPane.BOTTOM);
48
XX学院java实验报告
jScrollPane1.getViewport().add(jTextArea1); jSplitPane1.setDividerLocation(135); }
//按钮的事件处理方法
public void actionPerformed(ActionEvent e) {//“按考生查询”按钮的事件处理方法 }
//“未通过名单”按钮的事件处理方法 if(e.getSource()= =jButton2) {
49
XX学院java实验报告
}
//“成绩名次”按钮的事件处理方法 if(e.getSource()= =jButton1) { } } }
3.主程序: import java.awt.*; import javax.swing.*;
public class ScoreInquirement {
public ScoreInquirement() {
ScoreInquirementFrame frame = new ScoreInquirementFrame(); //令窗体对象居中显示
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); Dimension frameSize = frame.getSize();
50