⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 loginwindow.java

📁 考试系统
💻 JAVA
字号:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.StringTokenizer;

/**创建一个登录窗口
*/
class LoginWindow extends JFrame implements ActionListener
{  

   String str[]=new String[10];//创建一个数组,存放考生信息
   
   String t;//存放读取的一行考生信息
   boolean boo1=true;//控制循环变量
   
   JLabel tipLabel,
          testNumLabel,
          nameLabel;//定义三个标签
          
   JButton loginButton,//登录按钮
           refreshButton;//重输按钮
             
   JTextField testNumText,//输入准考证号文本框
              nameText;//输入姓名文本框
              
   JPanel panel1,panel2,panel3;//声明用于布局的三个面板
   
   File f;//文件对象
   FileReader in;//字符输入流对象
   BufferedReader bufferIn;//缓冲输入流对象
   
   /**创建登录构造函数
    *
    */
   LoginWindow()
   {  
      super("登录窗口");//设置窗口的标题   
      setBounds(100,100,400,400);
      setVisible(true);
      setResizable(false);//设置窗口的大小、位置、可见性、可否调整大小
      
      tipLabel=new JLabel("请输入以下信息:");
      testNumLabel=new JLabel("您的准考证号(7个数字):");
      nameLabel=new JLabel("姓名:");//分别创建三个标签对象
      
      loginButton=new JButton("登录");
      refreshButton=new JButton("重输");//创建两个按钮
      
      testNumText=new JTextField(10);
      nameText=new JTextField(10);//创建两个文本框
      
      panel1=new JPanel();
      panel2=new JPanel(new GridLayout(2,1));//面板2网格布局
      panel3=new JPanel();//创建三块面板
      
      panel1.add(tipLabel);
      
      panel2.add(testNumLabel);
      panel2.add(testNumText);
      panel2.add(nameLabel);
      panel2.add(nameText);
      
      panel3.add(loginButton);
      panel3.add(refreshButton);
      
      Container con=getContentPane();//获取内容面板
      
      con.add(panel1,BorderLayout.NORTH);//面板1添加在北侧
      con.add(panel2,BorderLayout.CENTER);//面板2添加在中间
      con.add(panel3,BorderLayout.SOUTH);//面板3添加在南侧
      
      testNumText.addActionListener(this);//准考证号文本框添加监听
      nameText.addActionListener(this);//姓名文本框添加监听
      loginButton.addActionListener(this);//登录按钮添加监听
      refreshButton.addActionListener(this);//重输按钮添加监听
      
   }   
   
   
   /*定义一个读取考生信息方法
    *
    */
   public void reading()
   {  
      int i=0;
      try{  t=bufferIn.readLine();//读取一行考生信息
            if(!(t.startsWith("endend")))
              {  StringTokenizer tokenizer=new StringTokenizer(t,"#");//以"#"分割考生信息
                 while(tokenizer.hasMoreTokens())
                   {  str[i]=tokenizer.nextToken();
                      i++;
                      boo1=true;//控制循环的执行
                   }
              }
            else if(t.startsWith("endend"))
              {  JOptionPane.showMessageDialog(this,"不存在此考号或姓名!请检查","警告对话框",JOptionPane.WARNING_MESSAGE);//弹出警告对话框
                 boo1=false;//控制循环的执行
                 bufferIn.close();//关闭流
                 in.close();//关闭流
              }
         }
      catch(IOException exp)//发生输入输出异常处理
      {  
       JOptionPane.showMessageDialog(this,"不存在此考号或姓名!请检查","警告对话框",JOptionPane.WARNING_MESSAGE);}//弹出警告对话框
      }
      
    
   /**定义判断方法
    *
    */
   public void panduan()
   {  
      String testNumber=testNumText.getText();//得到考生准考证号
      String name=nameText.getText();//得到名字
      
      if(str[0].equals(testNumber)&&str[1].equalsIgnoreCase(name))//判断是否考号和名字相符
        { 
          TestWindow testWindow=new TestWindow();testWindow.pack();//若相符,进入考试主窗口
           dispose();//撤销当前窗口
        }
      else
        {  reading();//读取考生信息
           if(boo1==true)
             {  
                panduan();//进行判断
             }  
             
             
        }
   }
   
   /**定义按钮及文本框的监听方法
    *
    */
   public void actionPerformed(ActionEvent e)
     { 
        if(e.getSource()==testNumText||e.getSource()==nameText||e.getSource()==loginButton)//判断事件源
         {  
          if(testNumText.getText().length()==0||nameText.getText().length()==0)//判断输入为空吗?
               {    
                JOptionPane.showMessageDialog(this,"准考证号或姓名不能为空!","警告对话框",JOptionPane.WARNING_MESSAGE);//弹出警告对话框
               }   
                 
             else 
               {  
                  String str=testNumText.getText();//得到考生准考证号
 		          char ch[] =str.toCharArray();//将考生准考证号赋给字符数组
 		
 		          for(int i=0;i<ch.length;i++)
 		            {
 			           if(Character.isDigit(ch[i])&&testNumText.getText().length()==7)//判断考生准考证号是数字吗,是7位吗?
 			             {  try{  f=new File("stuInfor\\","stuInfor.txt");//创建文件对象
                                  in=new FileReader(f);//创建字符流对象
                                  bufferIn=new BufferedReader(in);//创建缓冲流对象
                               }
                            catch(IOException ee){}
                            reading();//读取考生信息方法
                            panduan();//循环判断方法
                            break;
 			             }
 			           else  
 			             {
 			                JOptionPane.showMessageDialog(this,"您的输入不合法!请重新输入","警告对话框",JOptionPane.WARNING_MESSAGE);//弹出警告对话框
                            break;
                         }
                         
                     }
               }
          }   
        else if(e.getSource()==refreshButton)//是否为重输按钮
          {  testNumText.setText(null);//清空准考证文本框
             nameText.setText(null);//清空姓名文本框
          }
   }
   
 /**主调函数
  *
  */
 public static void main(String args[])
     {  
        LoginWindow loginWindow=new LoginWindow();
        loginWindow.pack();
     }   
}
      
             

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -