一、界面化登录窗体,实现主要的界面布局

1 //package newpackage;
  2 import javax.swing.*;
  3 import java.awt.*;
  4 import java.awt.event.*;
  5 import java.util.Vector;
  6  
  7 public class StudentFrame extends JFrame {    //创建一个登录界面
  8       Vector<Student> v = new Vector<Student>();           //创建一个动态数组的对象
  9      // Student student;         
 10     StudentLogin student = new StudentLogin();     //创建一个atm对象
 11     int num;
 12     String num1;    
 13     Container pane;          //content pane是container的一个对象
 14     CardLayout cc = new CardLayout();    //卡片布局
 15     JLabel labTop = new JLabel("学生信息管理系统");     //创建了一个标签写着欢迎你
 16     JLabel labTop2 = new JLabel("  "); //创建了另外一个空标签
 17     JLabel labTop3 = new JLabel("  "); //创建了另外一个空标签
 18     JLabel labTop4 = new JLabel("  "); //创建了另外一个空标签
 19     JLabel labTop5 = new JLabel("  "); //创建了另外一个空标签
 20      
 21     JTextField txtName = new JTextField(15);           //名字输入控制在15个字符以内
 22     JPasswordField txtPassword = new JPasswordField(15);   //密码输入控制在15个字符以内
 23     JButton butOK = new JButton("  登录  ");                 //创建一个OK按钮
 24     JButton butexit = new JButton("  退出  ");   
 25     public StudentFrame() {                                  //登录窗体标题框内容
 26         super("用户登录");
 27         initalInterface();
 28     }   
 29     private void initalInterface() {    //初始化设置       
 30         //设置登录按钮的字体
 31         Font font = new Font("Dialog", Font.BOLD, 16);
 32         butOK.setFont(font);
 33        //设置退出按钮的字体
 34         Font font2 = new Font("Dialog", Font.BOLD, 16);
 35         butexit.setFont(font2);        
 36        //设置"学生信息管理系统"的字体
 37         Font font1 = new Font("Dialog", Font.BOLD, 30);
 38         labTop.setFont(font1);              
 39         //开始构建菜单
 40         //******************************************************
 41         JMenuBar menuBar;
 42         JMenu menu;
 43         JMenuItem menuItem;      
 44         //创建菜单条
 45         menuBar = new JMenuBar();
 46         this.setJMenuBar(menuBar);       
 47         //创建File菜单
 48         menu = new JMenu("文件");
 49         menuBar.add(menu);
 50         menuItem=new JMenuItem("打开");
 51         menu.add(menuItem);
 52         menu.addSeparator();
 53         menuItem = new JMenuItem("退出");     
 54         //给菜单项Exit添加活动事件处理程序
 55         menuItem.addActionListener(new java.awt.event.ActionListener() {
 56  
 57         public void actionPerformed(java.awt.event.ActionEvent evt) {
 58             finish();
 59             System.exit(0);
 60         }
 61         });
 62         menu.add(menuItem);
 63         //创建Help菜单
 64         menu=new JMenu("帮助");
 65         menuBar.add(menu);
 66         menuItem=new JMenuItem("关于");
 67         menu.add(menuItem);
 68         //给菜单项About添加活动事件处理程序
 69         menuItem.addActionListener(new java.awt.event.ActionListener() {
 70  
 71             public void actionPerformed(java.awt.event.ActionEvent evt) {
 72                 aboutActionPerformed(evt);              
 73             }
 74         });
 75         //******************************************************
 76         //结束构建菜单
 77         
 78         //构建第一张卡片panLogin
 79         //*******************************************************
 80         JPanel panLogin = new JPanel();
 81         BoxLayout v = new BoxLayout(panLogin, BoxLayout.Y_AXIS);
 82         panLogin.setLayout(v);
 83         JPanel pt = new JPanel();
 84         panLogin.add(pt);
 85         pt = new JPanel();
 86         labTop.setForeground(Color.BLACK);
 87         pt.add(labTop);
 88         panLogin.add(pt);
 89         pt = new JPanel();
 90         pt.add(new JLabel("用户名:"));
 91         pt.add(txtName);
 92         panLogin.add(pt);
 93         pt = new JPanel();
 94         pt.add(new JLabel("密码:"));
 95         pt.add(txtPassword);
 96         panLogin.add(pt);
 97         //给OK按钮添加活动事件处理程序
 98         butOK.addActionListener(new java.awt.event.ActionListener() {
 99  
100             public void actionPerformed(java.awt.event.ActionEvent evt) {
101                 butOKActionPerformed(evt);
102             }
103         });
104         pt = new JPanel();    
105         pt.add(butOK);
106         panLogin.add(pt);
107         panLogin.add(new JPanel());
108         //第一张卡片panLogin构建结束****************************************************
109         
110         //构建第二张卡片panOperation
111         //********************************************************************
112         JPanel panOperation = new JPanel();
113         panOperation.setLayout(new BorderLayout());
114         panOperation.add(labTop2, BorderLayout.NORTH);
115         panOperation.add(new JLabel("  "), BorderLayout.SOUTH);      
116         JLabel labTop7;   
117         JPanel p2 = new JPanel();
118         p2.setLayout(new GridLayout(5, 3));
119         JButton bPut = new JButton("添加学生信息");
120        JButton bGet = new JButton("");
121         JButton bSearch = new JButton("查询学生信息");
122         JButton bQuit = new JButton("退出");
123         //给四个按钮分别添加活动事件处理程序
124         bPut.addActionListener(new java.awt.event.ActionListener() {
125             public void actionPerformed(java.awt.event.ActionEvent evt) {
126                 bPutActionPerformed(evt);
127             }
128         });
129         bSearch.addActionListener(new java.awt.event.ActionListener() {
130  
131             public void actionPerformed(java.awt.event.ActionEvent evt) {
132                 bSearchActionPerformed(evt);
133             }
134         });
135         bQuit.addActionListener(new java.awt.event.ActionListener() {
136  
137             public void actionPerformed(java.awt.event.ActionEvent evt) {
138                 bQuitActionPerformed(evt);
139             }
140         });
141         p2.add(new JLabel(" "));
142         p2.add(new JLabel(" "));
143         p2.add(new JLabel(" "));
144  
145         p2.add(new JLabel(" "));
146         p2.add(bPut);
147         p2.add(new JLabel(" "));
148  
149         p2.add(new JLabel(" "));
150          p2.add(new JLabel(" "));
151        // p2.add(bGet);
152         p2.add(new JLabel(" "));
153  
154         p2.add(new JLabel(" "));
155         p2.add(bSearch);
156         p2.add(new JLabel(" "));
157  
158         p2.add(new JLabel(" "));
159        // p2.add(bQuit);
160         p2.add(new JLabel(" "));
161  
162         panOperation.add(p2, BorderLayout.CENTER);
163         //第二张卡片panOperation构建结束***************************************************
164  
165         //在主窗口中添加前面构建的两张卡片panLogin和panOperation
166         pane = getContentPane();
167         pane.setLayout(cc);
168         pane.add(panLogin, "login");
169         pane.add(panOperation, "operation");
170         //添加窗口关闭事件
171         this.addWindowListener(new WindowAdapter() {
172  
173             //表示下面的方法是覆盖父类的方法
174             @Override
175             public void windowClosing(WindowEvent e) {
176                 finish();
177             }
178         });
179         setSize(550, 550);
180         //让起始窗口停在屏幕的中央
181         Toolkit kit = Toolkit.getDefaultToolkit();
182         Dimension dim = kit.getScreenSize();
183         setLocation(dim.width / 2 - 150, dim.height / 2 - 100);
184         //禁止用户改变窗口的大小
185         this.setResizable(false);
186         setVisible(true);
187         setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
188  
189     }  
190     private void finish(){
191         student.saveData();
192     }
193     //由菜单About调用的方法
194     private void aboutActionPerformed(java.awt.event.ActionEvent evt){
195          JOptionPane.showMessageDialog(this,"欢迎使用温娉哲开发的学生信息管理系统!","欢迎使用",JOptionPane.INFORMATION_MESSAGE);
196     }         
197     //分别由五个按钮活动事件处理程序调用的方法
198     private void butOKActionPerformed(java.awt.event.ActionEvent evt) {
199         String no = txtName.getText();
200         String pw = new String(txtPassword.getPassword());
201         if (student.check(no, pw)) {
202             labTop.setForeground(Color.black);
203             labTop.setText("欢迎使用");
204             txtName.setText("");
205             txtPassword.setText("");
206             cc.show(pane, "operation");
207         } else {
208             labTop.setForeground(Color.red);
209             labTop.setText("您的账号或密码错误,请重新输入!");
210         }
211     }
212     public void bPutActionPerformed(java.awt.event.ActionEvent evt) {
213          num = Integer.parseInt(JOptionPane.showInputDialog(this, "请添加学生学号:"));
214         labTop2.setText("添加的学生学号为:" + num);
215         
216          num1 = String.format(JOptionPane.showInputDialog(this, "请添加学生姓名:"));           
217         //num1 = student.getCurrent(). inputName(num1);
218         labTop2.setText("添加的学生姓名为:" + num1);
219     }
220     public void bSearchActionPerformed(java.awt.event.ActionEvent evt) {
221        
222        num = Integer.parseInt(JOptionPane.showInputDialog(this, "请输入要查询的学生学号:"));
223       // num = student.getCurrent().inputID(num);
224         
225       // num1 = student.getCurrent().getinformation();
226          
227        labTop2.setText("学号为" + num+"的学生姓名为"+num1);
228     }
229     private void bQuitActionPerformed(java.awt.event.ActionEvent evt) {
230         labTop2.setText("");
231         cc.show(pane, "login");
232         txtName.requestFocusInWindow();
233     }
234     public static void main(String[] args) {
235         StudentFrame student = new StudentFrame();
236     }
237 }

二、添加登录系统的账号密码信息

1 //package newpackage;
 2 import java.io.*;
 3 import java.util.*;
 4  
 5 public class StudentLogin {
 6     Scanner sc = new Scanner(System.in);     //获取控制台输入
 7     Vector<Student> v = new Vector<Student>();           //创建一个动态数组的对象
 8     private Student atm;  
 9     //current是Account的对象,是Account类的实例化
10       
11     public StudentLogin() {
12         try {     //异常捕获
13             FileInputStream fi = new FileInputStream("accoun1t.txt");
14             
15             ObjectInputStream oi = new ObjectInputStream(fi);
16             v = (Vector<Student>) oi.readObject();
17         } catch (FileNotFoundException e) {
18             v.add(new Student("admin", "1", 100));
19             v.add(new Student("user", "2", 100));
20             v.add(new Student("windy", "3", 100));
21             v.add(new Student("jason", "4", 100));
22         } catch (Exception e) {
23             System.out.println("Error - " + e.toString());
24         }
25     }
26  
27     public Student getCurrent() {    //获取当前余额
28         return atm;
29     }
30  
31     public boolean check(String account, String pw) {     //检查账号,密码是否正确
32         int i;    //定义了一个整型变量
33         Student a;     
34         for (i = 0; i < v.size(); i++) {
35             a = v.get(i);
36             if (a.check(account, pw)) {
37                 atm = a;
38                 return true;
39             }
40         }
41        atm = null;
42         return false;
43     }
44     public void saveData() {      //保存数据
45         try {
46             FileOutputStream fo = new FileOutputStream("account.txt");
47             ObjectOutputStream oo = new ObjectOutputStream(fo);
48             oo.writeObject(v);
49             oo.close();
50         } catch (IOException e) {
51             System.out.println("Error -" + e.toString());
52         }
53  
54     }
55 }

三、主要实现获取学生的学号和姓名,调用方法

1 import java.io.*;
 2 public class Student implements Serializable{
 3     private String no;   //账号
 4     private String password;   //密码
 5     private int information;       //余额
 6         private int ID;       //余额     
 7         private String name;//姓名
 8     public Student(String accounts,String pw,int num) {   //
 9         no=new String(accounts);
10         password=new String(pw);
11         information=(num>0?num:0);
12     }
13 //     public String getNo(){      //获取学号
14 //         return no;
15 //     }
16     public int getinformation() {  //获取学生信息
17         return information;
18     }
19     public int inputID(int num) {   //获取学号
20         
21         return ID;
22     }       
23         public String inputName(String num1) {   //获取学生姓名
24         return name;
25     }
26     public boolean setPassword(String pw) {     //修改密码
27         password=new String(pw);
28         return true;
29     }
30     public boolean check(String accounts,String pw) {     //核对密码
31         if(no.equals(accounts)&&password.equals(pw))
32             return true;
33         else
34             return false;    
35     }    
36     int Add(int num) {
37         throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
38     }
39 }

四、添加学生学号信息,通过查询学生学号检索出学生的姓名(没有使用数据库,大家懂,嘿嘿)

1 package newpackage;
 2  
 3 import java.io.*;
 4 import java.util.*;
 5  
 6 public class FunctionFrame {
 7     StudentLogin student = new StudentLogin();     //创建一个student对象
 8     Scanner sc = new Scanner(System.in);    //创建一个sc对象    scanner获取控制台输入,控制台会一直等待输入,直到敲回车键结束,把所输入的内容传给scanner,作为扫描对象        system.in  是输入的意思
 9  
10     public void inputNoPassword() {     //定义了一个无返回值的输入密码的方法
11         String account, pw;      //定义了俩个字符串类型的变量
12         boolean b;               //定义了一个布尔类型的变量
13         do {                    //循环语句,
14             System.out.print("Please enter account:");   //提示输入账号
15             account = sc.next();        //sc是scanner类中的一个对象,此时表示从结果集中连续取值
16             System.out.print("Please enter password:");   //提示输入密码
17             pw = sc.next();               //查找并返回来自此扫描器的下一个完整标记
18             b = student.check(account, pw);      //检查账号,密码是否正确
19             if (b == false) {    //如果账号,密码不相等,提示请重新输入
20                 System.out.println("您的账号或密码错误,请重新输入!");
21             }
22         } while (b == false);    
23     }
24  
25     public void operate() {     //定义了一个返回值为空的操作方法
26         int i;   //定义了一个整型变量
27         do {                //设置了四个不同的功能
28             System.out.println("please choose:");
29             System.out.println("添加学生信息");
30             System.out.println("");
31             System.out.println("查询学生信息");
32             System.out.println("");
33             try {
34                 i = sc.nextInt();
35                 if (i == 1) {
36                      inputID();
37                   //  getMoney();
38                 } else if (i == 2) {
39                    // putID();
40                 } else if (i == 3) {
41                     search();
42                 } else if (i == 4) {
43                     break;
44                 } else {
45                     System.out.println("输入有误,请重新输入!");
46                 }
47             } catch (InputMismatchException e) {
48                 System.out.println("输入有误\nPlease choose1-4:");
49                 sc.nextLine();
50             }
51         } while (true);
52     }
53     private void inputID() {
54         int i, num;
55         System.out.print("Please enter ID : ");
56         i = sc.nextInt();
57         num = student.getCurrent().inputID(i);
58         System.out.println("You have put into: " + num);
59     } 
60  
61     private void search() {
62         int num;
63         num = student.getCurrent().getBalance();
64         System.out.println("学生信息为: " + num);
65     }
66  
67     public void start() {
68         do {
69             inputNoPassword();
70             operate();
71             System.out.print("你确定要退出吗? y/n");
72             if (sc.next().equals("y")) {
73                student.saveData();
74                 break;
75             }
76         } while (true);
77     }
78  
79     public static void main(String[] args) {
80         FunctionFrame atmNoFrame = new FunctionFrame();
81         atmNoFrame.start();
82     }
83 }