給老師安排課表JAVA項目及登錄窗口的實現

  • 2019 年 10 月 14 日
  • 筆記

實現一個安排課表的Java實驗。

有以下幾點要求:

①用所給的教師姓名進行課表安排

②用所給的地點進行課表安排

③不得有重複的課程名稱出現

④將資訊寫入到文件里

⑤用窗口來進行實現

package com.xu;  import java.awt.*;  import java.awt.event.ActionEvent;  import java.awt.event.ActionListener;  import java.util.Random;  import javax.swing.*;    import java.io.*;    public class manageclass extends JFrame{      public manageclass() throws FileNotFoundException      {          this.setTitle("請登錄");          this.setLayout(null);          //創建容器          Container c=this.getContentPane();          //創建課程名稱標籤          JLabel jl1=new JLabel("課程名稱:");          //創建任課老師標籤          JLabel jl2=new JLabel("任課老師:");          //創建上課地點標籤          JLabel jl3=new JLabel("上課地點:");          //創建課程名稱文本框          final JTextField jt=new JTextField();          //創建任課老師文本框          final JTextField jt2=new JTextField();          //創建上課地點文本框          final JTextField jt3=new JTextField();          //創建保存按鈕          JButton jb=new JButton("保存");          //在容器中加入所有標籤和按鈕          c.add(jl1);          c.add(jl2);          c.add(jl3);          c.add(jt);          c.add(jt2);          c.add(jt3);          c.add(jb);          //設置標籤和文本框,按鈕的位置          //x,y,width,height          jl1.setBounds(10, 20, 90, 40);          jl2.setBounds(10, 70, 90, 40);          jl3.setBounds(10, 120, 90, 40);          jt.setBounds(80, 20, 210, 40);          jt2.setBounds(80,70,210,40);          jt3.setBounds(80, 120,210,40);          jb.setBounds(100, 180, 60, 30);          //監聽器的功能實現          jb.addActionListener(new ActionListener() {                @Override              public void actionPerformed(ActionEvent arg0) {                  // TODO Auto-generated method stub                  boolean flag = true;                  //初始化文件的寫入                  File file=new File("E:\數據.txt");                  Writer out=null;                  try {                      out = new FileWriter(file,true);                  } catch (IOException e1) {                      // TODO Auto-generated catch block                      e1.printStackTrace();                  }                  //來判斷任課老師是否是規定的老師姓名                  if(jt2.getText().trim().equals(teacher[0])||jt2.getText().trim().equals(teacher[1])||jt2.getText().trim().equals(teacher[2])||jt2.getText().trim().equals(teacher[3])||jt2.getText().trim().equals(teacher[4]))                  {                      //來判斷上課地點是否為規定的上課地點                      if(jt3.getText().trim().equals(where[0])||jt3.getText().trim().equals(where[1])||jt3.getText().trim().equals(where[2])||jt3.getText().trim().equals(where[3]))                      {                          //對第一個數據的存儲                          if(num==0)                              name[num]=jt.getText().trim();                          //對於其它的數據存儲                          else                          {                              for(int i=0;i<num;i++)                              {                                  //如果和之前的課程名稱相重,則不進行添加,並重新輸入                                  if(jt.getText().trim().equals(name[i]))                                  {                                      JOptionPane.showMessageDialog(null, "課程重複,請重新輸入!");                                      flag=false;                                      break;                                  }                                  //否則就將該資訊加入到數組裡                                  else                                      name[num]=jt.getText().trim();                              }                          }                          //如果不重                          if(flag==true)                          {                              t1[num]=jt2.getText().trim();                              w1[num]=jt3.getText().trim();                              String s="課程名稱:"+name[num]+" 任課老師:"+t1[num]+" 上課地點:"+w1[num];                              //再輸出窗口輸出資訊同時寫入到文件里                              System.out.println(s);                              try {                                  out.write(s);                              } catch (IOException e) {                                  // TODO Auto-generated catch block                                  e.printStackTrace();                              }                              try {                                  out.write("n");                              } catch (IOException e) {                                  // TODO Auto-generated catch block                                  e.printStackTrace();                              }                              //注意要將緩衝區刷新出來                              try {                                  out.flush();                              } catch (IOException e) {                                  // TODO Auto-generated catch block                                  e.printStackTrace();                              }                              num++;                          }                      }                      else                      {                          JOptionPane.showMessageDialog(null, "無該地點!");                      }                  }                  else {                      JOptionPane.showMessageDialog(null, "無該老師!");                  }                  //注意將文本框清除                  jt.setText("");                  jt2.setText("");                  jt3.setText("");              }          });            //設置介面大小及可見          this.setSize(500,300);          this.setVisible(true);          this.setResizable(true);          this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);      }      //課程名稱      static String[] name=new String[1000];      //總共資訊條數      static int num=0;      //老師資訊      static String[] teacher=new String[1000];      //地點資訊      static String[] where=new String[1000];      //實際存儲老師資訊      static String[] t1=new String[1000];      //實際存儲地點資訊      static String[] w1=new String[1000];        public static void main(String[] args) throws IOException {          // TODO Auto-generated method stub          teacher[0]="王建民";          teacher[1]="劉立嘉";          teacher[2]="劉丹";          teacher[3]="王輝";          teacher[4]="楊子光";          where[0]="一教";          where[1]="二教";          where[2]="三教";          where[3]="基教";          new manageclass();        }  }

 

 

 

 

 

 

 

 

 

實現一個簡單的登錄介面,其中註冊頁面被鎖定//後期會改善,驗證碼採用隨機數的原理,可以任意的生成一個小寫/大寫/數字1-9的六位驗證碼

package com.JTextField;  import java.awt.*;  import java.awt.event.ActionEvent;  import java.awt.event.ActionListener;  import java.util.Random;  import javax.swing.*;  import java.awt.Font;  import java.awt.Graphics;    /*   * 2018316   * xulifeng   * 2019-9-21   */      public class JTextFieldTest extends JFrame{      //private static final long serialVersionUID = -1929142760043481303L;      static String s=new String();      public String random()      {          Random r=new Random();          String result = "";          //進行6次循環          for(int i = 0 ; i < 6 ; i ++)          {              //生成一個97~122的int型的整數              int intVal = (r.nextInt(26) + 97);              int x=(r.nextInt(9)+49);              int f=r.nextInt(2);              //將intValue強制轉換為char後連接到result後面              if(f==1)                  result = result + (char)intVal;              else                  result = result + (char)x;          }          return result;      }      public JTextFieldTest()      {          this.setTitle("請登錄");          this.setLayout(null);          //創建容器          Container c=this.getContentPane();          //創建用戶名標籤          JLabel jl1=new JLabel("用戶名:");          //創建密碼標籤          JLabel jl2=new JLabel("密碼:");          //創建驗證碼標籤          JLabel jl3=new JLabel("驗證碼:");          //創建文本框          final JTextField jt=new JTextField();          //創建驗證碼輸入文本框          final JTextField jt2=new JTextField();          //創建驗證碼比對文本框按鈕          s=this.random();          JButton jb3=new JButton(s);            jb3.setFont(new Font("楷體", Font.BOLD,20));            jb3.setForeground(Color.pink);          //創建密碼框          final JPasswordField jp=new JPasswordField();          jp.setEchoChar('*');          //創建登錄按鈕          JButton jb=new JButton("登錄");          //創建註冊按鈕          JButton jb2=new JButton("註冊");          jb.addActionListener(new ActionListener() {              @Override              public void actionPerformed(ActionEvent arg0) {                  // TODO Auto-generated method stub                  if(jt.getText().trim().equals("xlf")&&new String(jp.getPassword()).trim().equals("fengge")&&jt2.getText().trim().equals(s))                  {                      JOptionPane.showMessageDialog(null, "登陸成功!");                      System.exit(-1);                  }                  else if(jt.getText().trim().equals("")||new String(jp.getPassword()).trim().equals("")||jt2.getText().trim().equals(""))                  {                      JOptionPane.showMessageDialog(null, "不能為空");                  }                  else                  {                      JOptionPane.showMessageDialog(null, "登錄錯誤");                  }                  jt.setText("");                  jp.setText("");                  jt2.setText("");                    Random r=new Random();                  String result = "";                  //進行6次循環                  for(int i = 0 ; i < 6 ; i ++)                  {                      //生成一個97~122的int型的整數                      int intVal = (r.nextInt(26) + 97);                      int x=(r.nextInt(9)+49);                      int f=r.nextInt(2);                      //將intValue強制轉換為char後連接到result後面                      if(f==1)                          result = result + (char)intVal;                      else                          result = result + (char)x;                  }                  s=result;                  jb3.setText(s);              }          });          jb2.addActionListener(new ActionListener() {                @Override              public void actionPerformed(ActionEvent e) {                  // TODO Auto-generated method stub                  JOptionPane.showMessageDialog(null, "註冊成功n用戶名:xlfn密碼:fengge");                  jt.setText("");                  jp.setText("");                  jt2.setText("");                    Random r=new Random();                  String result = "";                  //進行6次循環                  for(int i = 0 ; i < 6 ; i ++)                  {                      //生成一個97~122的int型的整數                      int intVal = (r.nextInt(26) + 97);                      int x=(r.nextInt(9)+49);                      int f=r.nextInt(2);                      //將intValue強制轉換為char後連接到result後面                      if(f==1)                          result = result + (char)intVal;                      else                          result = result + (char)x;                  }                  s=result;                  jb3.setText(s);              }          });          jb3.addActionListener(new ActionListener() {                @Override              public void actionPerformed(ActionEvent e) {                  // TODO Auto-generated method stub                    Random r=new Random();                  String result = "";                  //進行6次循環                  for(int i = 0 ; i < 6 ; i ++)                  {                      //生成一個97~122的int型的整數                      int intVal = (r.nextInt(26) + 97);                      int x=(r.nextInt(9)+49);                      int y=(r.nextInt(26)+65);                      int f=r.nextInt(3);                      //將intValue強制轉換為char後連接到result後面                      if(f==1)                          result = result + (char)intVal;                      else if(f==0)                          result = result + (char)x;                      else                          result = result + (char)y;                  }                  s=result;                  jb3.setText(s);              }          });          this.getRootPane().setDefaultButton(jb);          c.add(jb);          c.add(jb2);          c.add(jl1);          c.add(jl2);          c.add(jl3);          c.add(jt);          c.add(jp);          c.add(jt2);          c.add(jb3);          jl1.setBounds(10, 20, 90, 40);          jt.setBounds(60, 20, 210, 40);          jl2.setBounds(25, 70, 90, 40);          jl3.setBounds(10, 120, 90, 40);          jp.setBounds(60, 70, 210, 40);          jt2.setBounds(60, 120,100,40);          jb3.setBounds(180,120,100,40);          jb.setBounds(100, 180, 60, 30);          jb2.setBounds(100, 220, 60, 30);          //設置窗體格式          this.setSize(500,300);          this.setVisible(true);          this.setResizable(true);          this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);      }      public static void main(String[] args) {          // TODO Auto-generated method stub          new JTextFieldTest();      }    }

 

 

 

 

 

 

 

 

這是對窗體的初步練習,後期有待提高下拉框的實現和註冊頁面的改善

Tags: