黑马程序员技术交流社区

标题: 关于注册登录IO版的代码问题求解 [打印本页]

作者: jianhua0798    时间: 2016-6-12 22:12
标题: 关于注册登录IO版的代码问题求解
  1. <blockquote>package 子类窗体包;
复制代码


作者: jianhua0798    时间: 2016-6-12 22:15
关于缓冲区存储的账号和密码的问题
怎么判断读取的是账号还是密码,又怎么用逗号来区分啊
  1. package 子类窗体包;

  2. import java.io.FileReader;
  3. import java.io.FileWriter;
  4. import java.io.IOException;
  5. import java.io.Writer;
  6. import java.util.ArrayList;
  7. import java.util.List;

  8. import javax.swing.JOptionPane;

  9. import 父类窗体包.AbstractRegistFrame;
  10. import 用户包.User;

  11. public class RegistFrame extends AbstractRegistFrame {
  12.         private static final String userPwd1 = null;


  13.         // 关闭按钮
  14.         @Override
  15.         protected void butClose() {
  16.                 // 显示登录界面
  17.                 new LoginFrame().setVisible(true);
  18.                 // 关闭本界面
  19.                 this.dispose();
  20.         }

  21.         // 确定按钮
  22.         @Override
  23.         protected void butOK() {
  24.                 // 1.获取窗体数据
  25.                 String userName = this.txtUserName.getText();
  26.                 String userPwd1 = new String(this.txtPwd.getPassword());
  27.                 String userPwd2 = new String(this.txtPwd2.getPassword());
  28.                 //2.验证用户名和密码是否为空
  29.                 if(userName.trim().length() == 0){
  30.                         JOptionPane.showMessageDialog(this, "请输入用户名");
  31.                         return;
  32.                 }
  33.                 if(userPwd1.trim().length() == 0){
  34.                         JOptionPane.showMessageDialog(this, "请输入用户密码!");
  35.                         return;
  36.                 }
  37.                 if(userPwd2.trim().length() == 0){
  38.                         JOptionPane.showMessageDialog(this, "请输入确认密码!");
  39.                         return;
  40.                        
  41.                 }
  42.                 //3.验证用户名是否相同
  43.                 try {
  44.                         List<User> userList = getAllUser();
  45.                         for(int i = 0;i < userList.size();i++){
  46.                                 User u = userList.get(i);
  47.                                 if(u.getLoginName().equals(userName)){
  48.                                         JOptionPane.showMessageDialog(this, "用户名" + userName + "已被使用,请指定其他用户名!");
  49.                                         return;
  50.                                 }
  51.                         }
  52.                 } catch (IOException e) {
  53.                         e.printStackTrace();
  54.                 }
  55.                 //4.两次输入的密码必须一致
  56.                 if(!userPwd1.equals(userPwd2)){
  57.                         JOptionPane.showMessageDialog(this, "两次输入的密码不一致!");
  58.                         return;
  59.                 }
  60.                 //5.封装对象
  61.                 User user = new User(userName,userPwd1);
  62.                 //6.将对象封装到集合中
  63.                 try {
  64.                         writerUser(user);
  65.                 } catch (IOException e) {
  66.                         JOptionPane.showMessageDialog(this, "在写入用户信息时发生异常,请于系统管理员联系!");
  67.                         return;
  68.                 }
  69.                 //7.弹出对话框提示用户注册成功
  70.                 JOptionPane.showMessageDialog(this, "恭喜您注册成功!");
  71.                 //显示登陆界面
  72.                 new LoginFrame().setVisible(true);
  73.                 //关闭本界面
  74.                 this.dispose();
  75.         }
  76.                

  77.         private void writerUser(User user) throws IOException {
  78.                 //文件输出流
  79.                 Writer out = new FileWriter("user",true);
  80.                 //输出数据
  81.                 out.write("\r\n" + user.getLoginName()+","+user.getLoginPwd());
  82.                 //释放资源
  83.                 out.close();
  84.         }

  85.         private List<User> getAllUser() throws IOException {
  86.                 //字符输入流
  87.                 FileReader in = new FileReader("user");
  88.                 List<User> userList = new ArrayList<>();
  89.                 int n = 0;
  90.                 //存储一行的数据
  91.                 StringBuffer buf = new StringBuffer();
  92.                 while((n = in.read()) != -1){
  93.                         //将读取的数据转换成字符类型存储在字符串缓冲区
  94.                         char c = (char)n;
  95.                         if(c=='\r'){
  96.                                 continue;
  97.                         }
  98.                         if(c == '\n'){
  99.                                 //判断缓冲区内是否有数据
  100.                                 if(buf.length() != 0){
  101.                                         //取出缓冲区中的数据,转换为字符串
  102.                                         String row = buf.toString();
  103.                                         //将字符串使用逗号切割
  104.                                         String[] strArray = row.split(",");
  105.                                         String userName = strArray[0];
  106.                                         String userPwd = strArray[1];
  107.                                         //封装成User对象
  108.                                         User user = new User(userName,userPwd);
  109.                                         //将User对象添加到集合中
  110.                                         userList.add(user);
  111.                                         //清空StringBuffer
  112.                                         buf.delete(0,buf.length());
  113.                                 }
  114.                                 continue;
  115.                         }
  116.                         buf.append(c);
  117.                 }
  118.                 if(buf.length() != 0){
  119.                         //取出缓冲区中的数据,转换为字符串
  120.                         String row = buf.toString();
  121.                         //将字符串使用逗号切割
  122.                         String[] strArray = row.split(",");
  123.                         String userName = strArray[0];
  124.                         String userPwd = strArray[1];
  125.                         //封装成User对象
  126.                         User user = new User(userName,userPwd);
  127.                         //将User对象添加到集合中
  128.                         userList.add(user);
  129.                         //清空StringBuffer
  130.                         buf.delete(0,buf.length());
  131.                 }
  132.                 //关闭流
  133.                 in.close();
  134.                 //将List返回
  135.                 return userList;
  136.         }

  137. }
复制代码






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2