experiment @ lzptc ,2nd实训_ 《Java语言程序设计》专业实习任务

  Java 语言程序设计》专业实习任务(二)

一、设计目的:

本次设计是对教材第7章~第17章的总结。涉及到的主要知识点有:GUI设计、事件处理、I/O处理和JDBC。设计的目的在于掌握 Java 的基本原理、设计方法和使用规则;利用Java提供的事务处理机制,合理选择类和类提供的方法,进行应用程序的初步设计。

二、设计题目:

㈠程序 CDInfor.java 完成的功能是: CD 唱片信息管理。

假设有很多唱片,它们的信息都存放在 CDInfor.txt 文件中。文件中每张唱片的信息占一行,信息包括唱片编号、唱片名称、歌手姓名三项内容,信息之间用空格分开。运行界面如下所示。

 

1.    功能描述

①从文件中读出已有的唱片信息并显示在文本域中;但文本域不能进行输入。

②从文本框中输入需要添加的 CD 唱片的信息。

③当单击“增加”按钮时,将信息以追加 的方式存入到文件中,并且刷新文本域里的内容。

④当单击“取消”按钮时,将正在录入的信息从文本框里清空,不再做任何处理。

2.    题目要求

①完成程序段①~⑤的编写。

②回答问题①~③。

3.    提示信息

FileWriter 类有一个构造方法如下:

  FileWriter String filename , Boolean append

  功能:构造一个进行附加的 FileWriter

FileWriter 类的父类有一个方法如下:

  Void write(String str)

  功能:写一个字符串

4.    程序清单( Caculate.java

import java.awt.*;

import javax.swing.*;

import java.io.*;

import java.awt.event.*;

 

public class CDInfor extends JFrame implements ActionListener {

  // 定义输入输出流对象

 

  // 问题 1: BufferedReader 类定义输入流,是要利用该类的什么功能(方法)?

  BufferedReader in;  

  FileWriter out;

 

  // 定义容器

  JPanel jPanel1 = new JPanel();

  JPanel jPanel2 = new JPanel(new GridLayout(4,1));

  JPanel jPanel3 = new JPanel();

  JPanel jPanel5 = new JPanel();

  JPanel jPanel4 = new JPanel();

  JPanel jPanel6 = new JPanel();

  JScrollPane jScrollPane1 = new JScrollPane();

 

  // 定义组件并初始化

  JTextArea jTextArea1 = new JTextArea("",10,25);//10 行, 20

  GridLayout gridLayout1 = new GridLayout();

  JTextField jTextField1 = new JTextField(10);   //10

  JTextField jTextField2 = new JTextField(10);   //10

  JTextField jTextField3 = new JTextField(10);   //10

  JLabel jLabel1 = new JLabel(" 唱片编号: ");

  JLabel jLabel2 = new JLabel(" 唱片名称: ");

  JLabel jLabel3 = new JLabel(" 歌手姓名: ");

  JButton jButton1 = new JButton(" 增加 ");

  JButton jButton2 = new JButton(" 取消 ");

  String str;

 

    public CDInfor() {

     try {

     setDefaultCloseOperation(EXIT_ON_CLOSE);

     jbInit();

     }

     catch (Exception exception) {

     exception.printStackTrace();

    }

  }

 

 

  public void jbInit()

    {

      Container cp = getContentPane();

      cp.setLayout(new BorderLayout());

 

      // 加载组件

      jButton1.addActionListener(this);

      jButton2.addActionListener(this);

 

      // 将文本域放到滚动容器里,当内容多时,可以自动形成滚动条

      jTextArea1.setEditable(false);

      jScrollPane1.getViewport().add(jTextArea1);

 

      jPanel3.add(jLabel1);          jPanel3.add(jTextField1);

 

      jPanel4.add(jLabel2);          jPanel4.add(jTextField2);

 

       jPanel5.add(jLabel3);          jPanel5.add(jTextField3);

 

      jPanel6.add(jButton1);         jPanel6.add(jButton2);

 

      // 加载容器

      jPanel1.add(jScrollPane1);

      jPanel2.add(jPanel3);    jPanel2.add(jPanel4);   jPanel2.add(jPanel5);    jPanel2.add(jPanel6);

      jPanel2.setPreferredSize(new Dimension(10, 150));

      cp.add("Center",jPanel1) ;      cp.add("South",jPanel2);

 

      // 问题 2 :设置 try_catch 结构的目的是什么?

      try

      {

         // 完成语句①:初始化输入流对象(以 CDInfor.txt 为数据源)

        

         // 完成语句②:初始化输出流对象(参考提示信息)

        

         // 完成语句③:行读文件,将结果写到文本域里

        

      }

      catch (IOException ex){};

   }

 

      public void actionPerformed(ActionEvent e)

      {

        // 按下“增加”按忸后的操作:

       if(e.getSource()==jButton1)

         {

           // 完成程序④:提取信息并添加到文本域里

         

           // 完成程序⑤:将记录添加到文件末尾并刷新数据流

           // 问题 3 :刷新数据流的作用是什么?

           try {

          

           }

           catch (Exception ex) {}

         }

 

        // 按下“增加”按忸和“取消“按钮都要完成的操作:

        jTextField1.setText("");      

  jTextField2.setText("");

  jTextField3.setText("");

      }

 

     public static void main(String[] args) throws Exception

     {

       CDInfor kk = new CDInfor();

       kk.setSize(350,350);

       kk.setTitle("Please caculat:");

       kk.setVisible(true);

   }

}

 

假设 StudentManager.java 完成的功能是:学生信息管理。

学生信息存放在数据库 Student.mdb 中,信息包括:学号、姓名、性别、年龄、专业。

 

系统包括查询、添加、删除、更新和退出系统五个功能。主界面运行如下:

 

1. 功能描述

①单击“查询”按钮,可以查询数据库中的学生信息,并将学生信息显示在 JPanel 中。运行界面如下:

 

②单击“增加”按钮,可以为数据库表中添加一条学生信息。运行界面如下:

 

要求:学号必须是数字字符串,长度不能大于 10 ;姓名长度不能大于 10 ,专业长度不能大于 25

③单击“删除”按钮,可以删除数据库表中的学生信息。运行界面如下:

 

⑷单击“更新”按钮,可以更新数据库表中指定学号的学生信息。运行界面如下:

 

要求:学号必须是数字字符串,长度不能大于 10 ;姓名长度不能大于 10 ,专业长度不能大于 25

⑸单击“退出系统”按钮,从整个应用系统中退出。

2. 题目要求

①根据题目要求建立数据库。

②完成程序段⑴~⒃的编写,使其系统各功能模块能够正常运行。

③回答问题①~⑧。

3. 提示信息

Statement createStatement(int resultSetType,

                          int resultSetConcurrency)

                          throws SQLException

resultSetType :结果集类型,它是 ResultSet.TYPE_FORWARD_ONLY ResultSet.TYPE_SCROLL_INSENSITIVE ResultSet.TYPE_SCROLL_SENSITIVE 之一;

resultSetConcurrency :并发类型;它是 ResultSet.CONCUR_READ_ONLY ResultSet.CONCUR_UPDATABLE 之一;

update 语句: update 表名 set 字段名 = , 字段名 = , …… where 条件

4. 程序清单

StudentManager.java

package sms;

 

import java.awt.Dimension;

import java.awt.FlowLayout;

import java.awt.Font;

import java.awt.GridLayout;

import java.awt.Toolkit;

 

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JPanel;

 

import java.awt.Color;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

 

public class StudentManager extends  JFrame{

 

  private  JLabel  lbl1;

  private  JButton selBtn,addBtn,delBtn,updBtn;

  private  JButton exitBtn;

  private  JPanel  panel ;

 

  public  StudentManager (){

         super(" 学生管理系统 ");

        

         //     定义出现的组件:由上而下,自左致右

         lbl1 = new JLabel(" 学生管理系统 ",JLabel.CENTER);

         lbl1.setFont(new Font(" 黑体 ",Font.BOLD,35));         

        

         selBtn = new JButton(" 查询 ");

         addBtn = new JButton(" 添加 ");

         delBtn = new JButton(" 删除 ");

         updBtn = new JButton(" 更新 ");

         exitBtn=new  JButton(" 退出系统 ");

        

         //     定义容器

         panel = new JPanel();          

        

         // 为容器设置布局,并将组件添加到容器中

         FlowLayout  flow = new FlowLayout();

         panel.setLayout(flow);

         panel.add(selBtn);

         panel.add(addBtn);

         panel.add(delBtn);

         panel.add(updBtn);

         panel.add(exitBtn);

        

         // 为按钮添加监听事件

         selBtn.addActionListener(new  ButtonEvent());

         addBtn.addActionListener(new  ButtonEvent());

         delBtn.addActionListener(new  ButtonEvent());

         updBtn.addActionListener(new  ButtonEvent());

         exitBtn.addActionListener(new   ActionListener(){

                // 完成语句⑴:退出应用系统的功能

         });

        

         // applet 设置布局,并将组件添加到 applet

         GridLayout  grid = new GridLayout(2,1);

         this.setLayout(grid);

         this.add(lbl1);

         this.add(panel);

        

         // 设置 applet 的大小

         this.setSize(400,300);

         this.setVisible(true);

// 问题 1 Toolkit 的作用是什么?

         Toolkit tool = this.getToolkit();

         Dimension dim = tool.getScreenSize();

         this.setLocation(dim.width/3,dim.height/3);

         this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

         validate();

  }

 

  public static void main(String[] args){

         new StudentManager();

  }

}

DatabaseConnection.java

package sms;

 

// 完成语句⑵:导入该类中操作数据库的相关类包

 

public class DatabaseConnection {

 

  public static Connection  getConnection(String dataSource , String user , String password){

         Connection conn = null;

         try {

                String driverName = "sun.jdbc.odbc.JdbcOdbcDriver";

                // 完成语句⑶:加载数据库驱动

         } catch (ClassNotFoundException e) {

                e.printStackTrace();

         }    

         try {      

                // 完成语句⑷:通过 getConnection() 方法的参数获取数据库连接赋给 conn

         } catch (SQLException e) {

                e.printStackTrace();

         }           

         return conn;

  }

}

③SelFrame.java

package sms;

 

import java.awt.BorderLayout;

import java.awt.Color;

import java.awt.FlowLayout;

import java.awt.GridLayout;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.event.FocusEvent;

import java.awt.event.FocusListener;

 

// 完成语句⑸:导入该类中操作数据库的相关类包

 

import javax.swing.*;

 

public class SelFrame extends JFrame implements ActionListener,FocusListener {

 

  private Connection  conn = null;

  private Statement   stmt = null;

  private ResultSet   rs = null;      

  private int  recordCount=0;

 

  JLabel lbl1 = null;

  JLabel lbl2 = null;

 

  JTextField tf1 = null;

  JTextField tf2 = null;

 

  JButton  selBtn= null;

 

  JPanel p1 = null;

  JPanel p2 = null;

  JPanel p3 = null;

  JPanel resultPanel = null;

  JScrollPane scroll = null;

  JPanel split = null;

  JPanel[] p3_1=null;

 

  JTextField[] tf3_1 = null;

  JTextField[] tf4_1 = null;

  JTextField[] tf5_1 = null;

  JTextField[] tf6_1 = null;

  JTextField[] tf7_1 = null;

  public static int test=1;

 

  public SelFrame(){

         super(" 学生信息查询 ");

         // 定义组件:从上到下,从左到右

         lbl1 = new JLabel(" 姓名: ",10);

         lbl2 = new JLabel(" 专业: ",10);

        

         tf1 = new JTextField(20);

         tf2 = new JTextField(20);

        

         selBtn=new JButton(" 查询 ");

         selBtn.addActionListener(this);

        

         JLabel lbl3 = new JLabel(" 学号 ",JLabel.CENTER);

         JLabel lbl4 = new JLabel(" 姓名 ",JLabel.CENTER);

         JLabel lbl5 = new JLabel(" 年龄 ",JLabel.CENTER);

         JLabel lbl6 = new JLabel(" 性别 ",JLabel.CENTER);

         JLabel lbl7 = new JLabel(" 专业 ",JLabel.CENTER);

        

         p1 = new JPanel (new FlowLayout());

         p1.add(lbl1);

         p1.add(tf1);

         p1.add(lbl2);

         p1.add(tf2);

 

         p2 = new JPanel (new GridLayout(2,1));

         p2.add(p1);

         p1.add(selBtn);

        

         p3 = new JPanel (new GridLayout(1,5));

         p3.add(lbl3);

         p3.add(lbl4);

         p3.add(lbl5);

         p3.add(lbl6);

         p3.add(lbl7);

        

         BorderLayout  border = new BorderLayout();

         this.setLayout(border);

         this.add(p2,BorderLayout.NORTH);

// 完成语句⑹:当点击窗口的关闭按钮时只销毁该窗口,并不退出应用系统

         setSize(750,600);

         setLocation(150,50);

         setVisible(true);

         validate();

  }

  public void actionPerformed(ActionEvent e) {

        

         conn = DatabaseConnection.getConnection("jdbc:odbc:StudentDsn", "", "");

        

         try {

                String  txt1,txt2,condition = "";

                txt1=tf1.getText();               

                txt2=tf2.getText();

               

                if (txt1!=null && !txt1.equals(""))

                       condition = " where sname like '%"+txt1+"%' ";

                if (txt2!=null && !txt2.equals(""))

                       if (condition.equals(""))

                              condition = " where  major like '%"+txt2+"%' ";

                       else              

                              condition =condition + " and major like '%"+txt2+"%' ";

                String sql = "select * from stu " + condition;

 

stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);

               

// 完成语句⑺:提交 sql 语句,并将返回的记录集放在 rs

// 完成语句⑻:获取记录集中的记录条数,放在整形变量 recordCount

 

                GridLayout gl=new GridLayout(recordCount,1);                                    

                if (resultPanel!=null){

                       resultPanel.removeAll();// 问题 2 :该语句的功能是什么?

                }

                else{

                       resultPanel = new JPanel(gl);// 问题 3 :该条语句什么时候执行?

                }

               

                // 问题 2 test 变量的作用是什么?

                if(test==1){

                       scroll = new JScrollPane(resultPanel);

                       split = new JPanel(new BorderLayout());

                       split.add(p3,BorderLayout.NORTH);

                       split.add(scroll,BorderLayout.CENTER);

                      

                       this.add(split,BorderLayout.CENTER);

                       test++;

                }

               

                                    

                p3_1 = new JPanel[recordCount];

                tf3_1 = new JTextField[recordCount];

                tf4_1 = new JTextField[recordCount];

                tf5_1 = new JTextField[recordCount];

                tf6_1 = new JTextField[recordCount];

                tf7_1 = new JTextField[recordCount];

               

                rs.beforeFirst();// 问题 4 :该条语句可不可以用 rs.first() 代替?为什么?

                int i = 0;

               

                while(rs.next()){

                       tf3_1[i] = new JTextField(rs.getString(1));

                       tf4_1[i] = new JTextField(rs.getString(2));

                       tf5_1[i] = new JTextField(rs.getString(3));

                       tf6_1[i] = new JTextField((rs.getString(4).equals("M"))?" ":" ");

                       tf7_1[i] = new JTextField(rs.getString(5));

                       tf3_1[i].setHorizontalAlignment(JTextField.CENTER);

                       tf4_1[i].setHorizontalAlignment(JTextField.CENTER);

                       tf5_1[i].setHorizontalAlignment(JTextField.CENTER);

                       tf6_1[i].setHorizontalAlignment(JTextField.CENTER);

                       tf7_1[i].setHorizontalAlignment(JTextField.CENTER);

                       tf3_1[i].setEditable(false);

                       tf4_1[i].setEditable(false);

                       tf5_1[i].setEditable(false);

                       tf6_1[i].setEditable(false);

                       tf7_1[i].setEditable(false);

                      

// 完成语句⑼:为文本框们添加监听器

                      

                       p3_1[i] = new JPanel (new GridLayout(1,5));

                       p3_1[i].add(tf3_1[i]);

                       p3_1[i].add(tf4_1[i]);

                       p3_1[i].add(tf5_1[i]);

                       p3_1[i].add(tf6_1[i]);

                       p3_1[i].add(tf7_1[i]);

                       resultPanel.add(p3_1[i]);

                       i++;

                }

                resultPanel.repaint();// 问题 5 :该条语句可不可以取消?为什么?

                this.validate();// 问题 6 :该条语句可不可以取消?为什么?

                } catch (SQLException e1) {

                e1.printStackTrace();

         }

         finally{

                // 完成语句⑽:关闭数据库操作时占用的各种资源

         }

 

  public void focusGained(FocusEvent e) {

         // 完成语句⑾:当文本框获得焦点时,文本框为红色

  }

  public void focusLost(FocusEvent e) {

         // 完成语句⑿:当文本框失去焦点时,文本框为白色

  }

 

}

 

④AddFrame.java

package sms;

 

import java.awt.Dimension;

import java.awt.FlowLayout;

import java.awt.Toolkit;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.sql.Connection;

import java.sql.SQLException;

import java.sql.Statement;

 

import javax.swing.Box;

import javax.swing.ButtonGroup;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JOptionPane;

import javax.swing.JPanel;

import javax.swing.JRadioButton;

import javax.swing.JTextField;

 

public class AddFrame extends JFrame  implements  ActionListener{

 

  private Connection  conn;

  private Statement   stmt;    

 

  JLabel lbl1 = null;

  JLabel lbl2 = null;

  JLabel lbl3 = null;

  JLabel lbl4 = null;

  JLabel lbl5 = null;

 

  JTextField tf1 = null;

  JTextField tf2 = null;

  JTextField tf4 = null;

  JTextField tf5 = null;

 

  JRadioButton man = null;

  JRadioButton woman = null;

  ButtonGroup sex = null;

 

  JButton  addBtn = null;

        

  JPanel p1 = null;

 

  Box baseBox,boxV1,boxV2,boxH1;

 

  public AddFrame(){

         super(" 添加学生信息 ");

         // 定义组件:从上到下,从左到右

         lbl1 = new JLabel(" 学号: ");

         lbl2 = new JLabel(" 姓名: ");

         lbl3 = new JLabel(" 性别: ");

         lbl4 = new JLabel(" 年龄: ");

         lbl5 = new JLabel(" 专业: ");

        

         tf1 = new JTextField(20);

         tf2 = new JTextField(20);

         tf4 = new JTextField(20);

         tf5 = new JTextField(20);

        

         man = new JRadioButton(" ",true);

         woman = new JRadioButton(" ");

        

         sex = new ButtonGroup();           

         sex.add(man);

         sex.add(woman);

        

         addBtn=new JButton(" 添加 ");

         addBtn.addActionListener(this);

        

         boxV1 = Box.createVerticalBox();

         boxV1.add(lbl1);

         boxV1.add(Box.createVerticalStrut(8));

         boxV1.add(lbl2);

         boxV1.add(Box.createVerticalStrut(8));

         boxV1.add(lbl3);

         boxV1.add(Box.createVerticalStrut(8));

         boxV1.add(lbl4);

         boxV1.add(Box.createVerticalStrut(8));

         boxV1.add(lbl5);

        

         boxH1 = Box.createHorizontalBox();

         boxH1.add(man);

         boxH1.add(Box.createHorizontalStrut(10));

         boxH1.add(woman);

        

         boxV2 = Box.createVerticalBox();

         boxV2.add(tf1);

         boxV2.add(Box.createVerticalStrut(8));

         boxV2.add(tf2);

         boxV2.add(Box.createVerticalStrut(8));       

         boxV2.add(boxH1);

         boxV2.add(Box.createVerticalStrut(8));

         boxV2.add(tf4);

         boxV2.add(Box.createVerticalStrut(8));

         boxV2.add(tf5);

        

         baseBox = Box.createHorizontalBox();

         baseBox.add(boxV1);

         baseBox.add(Box.createHorizontalStrut(10));

         baseBox.add(boxV2);

        

         p1 = new JPanel (new FlowLayout());        

         p1.add(baseBox);

         p1.add(addBtn);

        

         this.add(p1);

         this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

         setSize(300,250);

         Toolkit tool = this.getToolkit();

         Dimension dim = tool.getScreenSize();

         this.setLocation(dim.width/3+50,dim.height/3+50);

         setVisible(true);

         validate();

  }

 

  public void actionPerformed(ActionEvent e) {

         // 完成语句⒀:获取数据库连接

         try {

                String  txt1,txt2,txt3,txt4,txt5,sql;

                txt1=tf1.getText().trim();

                txt2=tf2.getText().trim();

                if(man.isSelected())txt3="M";

                else txt3="F";

                txt4=tf4.getText().trim();

                txt5=tf5.getText().trim();

               

                sql = "insert into stu(sno,sname,age,sex,major) values (";

                if (txt1.length()<=10 && Util.isNotEmpty(txt1) && Util.isDigits(txt1)){

                       sql = sql + "'"+txt1+"','";

                       if (txt2.length()<=10 && Util.isNotEmpty(txt2)){

                              sql = sql + txt2+"',";

                              if (txt4.length()<=2 && Util.isNotEmpty(txt4) && Util.isDigits(txt4)){

                                     sql = sql + Integer.parseInt(txt4)+",'";

                                     sql = sql + txt3+"','";

                                     if(txt5.length()<=25 && Util.isNotEmpty(txt5))

                                            sql = sql + txt5+"'";

                                     else{

                                            JOptionPane.showMessageDialog(this, " 专业输入有误: 0< 长度 <=25!");

                                            return ;

                                     }                                       

                              }

                              else{

// 完成语句⒁:弹出消息对话框,内容是:年龄输入有误: 0< 长度 <=2 且是数字字符 !

                                     return ;

                              }

                       }

                       else {

                              JOptionPane.showMessageDialog(this, " 姓名输入有误: 0< 长度 <=10!");

                              return ;

                       }

                }

                else {

                       JOptionPane.showMessageDialog(this, " 学号输入有误: 0< 长度 <=10 且是数字字符 !");

                       return ;

                }

                sql = sql + ")";

                int cnt = 0;

// 完成语句⒂:创建提交 sql 语句的对象,并将 sql 语句的执行结果赋给整型变量 cnt

                if (cnt>0)

                       JOptionPane.showMessageDialog(this, " 成功添加 "+cnt+" 条学生记录! ");

                else

                       JOptionPane.showMessageDialog(this, " 添加学生记录失败! ");

         } catch (SQLException e1) {

                e1.printStackTrace();

         }

finally{

                       try{

                              if(stmt!=null)stmt.close();

                              if(conn!=null)conn.close();

                       }

                       catch(SQLException e1) {

                              e1.printStackTrace();

                       }

                }

  }    

}

 

DelFrame.java

package sms;

 

import java.awt.Dimension;

import java.awt.FlowLayout;

import java.awt.GridLayout;

import java.awt.Toolkit;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.sql.Connection;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

 

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JOptionPane;

import javax.swing.JPanel;

import javax.swing.JTextField;

 

public class DelFrame extends JFrame  implements  ActionListener{

 

  private Connection  conn = null;

  private Statement   stmt = null;

 

  JLabel lbl1 = null;

  JLabel lbl2 = null;

 

  JTextField tf1 = null;

  JTextField tf2 = null;

 

  JButton  delBtn = null;

 

  JPanel p1 = null;

  JPanel p2 = null;

 

  public DelFrame(){

         super(" 学生信息删除 ");

         // 定义组件:从上到下,从左到右

         lbl1 = new JLabel(" 学号: ",10);

         lbl2 = new JLabel(" 专业: ",10);

        

         tf1 = new JTextField(20);

         tf2 = new JTextField(20);

        

         delBtn=new JButton(" 删除 ");

         delBtn.addActionListener(this);

        

         p1 = new JPanel (new FlowLayout());

         p1.add(lbl1);

         p1.add(tf1);

         p1.add(lbl2);

         p1.add(tf2);

 

         p2 = new JPanel (new FlowLayout());

         p2.add(p1);

         p2.add(delBtn);

        

         this.setLayout(new GridLayout(3,1));

         this.add(p2);

         this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

         setSize(550,300);

         Toolkit tool = this.getToolkit();

         Dimension dim = tool.getScreenSize();

         this.setLocation(dim.width/3,dim.height/3);

         setVisible(true);

         validate();

  }

  public void actionPerformed(ActionEvent e) {

         int result ;

// 完成语句⒃:弹出确认对话框,内容是:确定要删除吗?标题是:确认删除

         if (result == JOptionPane.YES_OPTION){

                conn = DatabaseConnection.getConnection("jdbc:odbc:StudentDsn", "", "");

                try {

                       String  txt1,txt2,condition = "";

                       txt1=tf1.getText();

                       txt2=tf2.getText();

                       if (txt1!=null && !txt1.equals(""))

                              condition = " where sno like '%"+txt1+"%' ";

                       if (txt2!=null && !txt2.equals(""))

                              if (condition.equals(""))

                                     condition = " where  major like '%"+txt2+"%' ";

                              else              

                                     condition =condition + " and major like '%"+txt2+"%' ";

                       String sql = "delete from stu" + condition;

                       System.out.println(sql);

                       stmt = conn.createStatement();

                       int cnt = stmt.executeUpdate(sql);

                       if (cnt>0)

                              JOptionPane.showMessageDialog(this, " 成功删除 "+cnt+" 条学生记录! ");

                       else

                              JOptionPane.showMessageDialog(this, " 删除学生记录失败! ");

                } catch (SQLException e1) {

                       e1.printStackTrace();

}

finally{

                       try{

                              if(stmt!=null)stmt.close();

                              if(conn!=null)conn.close();

                       }

                       catch(SQLException e1) {

                              e1.printStackTrace();

                       }

                }

  }    

}

 

⑥参考 SelFrame.java AddFrame.java DelFrame.java UpdFrame.java 的代码补充完整,完成学生信息的更新功能。

Util.java

package sms;

 

public class Util {

// 问题 7 :方法 isNotEmpty() 的功能是什么?

  public static boolean isNotEmpty(String str){

         if (str!=null && !str.equals(""))

                return true;

         return false;

  }

// 问题 8 :方法 isDigits () 的功能是什么?

  public static boolean isDigits(String str){

         char[] arr=str.toCharArray();

         int i;

         for(i=0;i<str.length();i++)

                if (!Character.isDigit(arr[i]))

                       return false;

         return true;                         

  }

}

 

㈢附加题:改善日历记事系统。

三、设计要求:

1 .前两道题必做,第三题选做。

2 .积极查阅相关教材、资料,独立完成。

四、实习报告撰写内容和要求

(一)内容

1.       系统环境(硬件环境、软件环境)

2.       设计内容:

        ①设计题目

②完成题目要求

③运行结果(根据自己的运行情况复制一幅)

  另外:第㈡题需要将CDInfor.txt文件用写字板打开,复制最终的结果画面。

 

3.       设计难点及解决办法

4.       创新及技巧:根据自己的设计过程进行汇总,如果没有就不用写。

5.       心得体会

(二)要求

1.         统一书写在实习报告上。

2.       认真填写实习报告,程序要写完整,补充程序段要做特殊标记。

3.       实习报告内容:封面、课程设计任务书、设计报告。

五、设计时间:一 周(第18周)。具体时间参考实验室安排表。

六、说明:

①考勤占评分的 20% (提前完成的同学需要找老师登记) ,程序调试占评分的 40% ,设计报告占评分的 40% 严禁抄袭、复印课程设计报告,否则相同报告均以零分计。

②设计中,要提前编制下次调试的程序,计划好每次上机的内容,积极、高效、独立地完成这次设计任务。对没有准备的同学,禁止上机。

③固定机位,将文件保存在自己的文件夹里,避免误操作或其他同学使用时丢失。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值