📄 loginwindow.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 + -