Java 自动创建会员信息--包含用户名,卡号,密码,电话号码

|--需求说明

1、自动注册一堆会员账号并保存为本地文件

2、关闭程序,载入本地文件,可以用注册出来的会员账号及密码登录

|--实现方式

1、使用随机的方式生成会员信息

2、使用ObjectOutputStream和ObjectInputStream 对会员信息进行保存和读取

|--代码内容

 1 package cn.save;
 2
 3 import java.io.Serializable;
 4
 5 /**
 6  * @auther::9527
 7  * @Description: 用户类
 8  * @program: shi_yong
 9  * @create: 2019-08-02 15:45
10  */
11 public class User implements Serializable {
12     private String name;
13     private String cardId;
14     private String phoneNum;
15     private String passWord;
16
17     public User() {
18     }
19
20     public User(String name, String cardId, String phoneNum, String passWord) {
21         this.name = name;
22         this.cardId = cardId;
23         this.phoneNum = phoneNum;
24         this.passWord = passWord;
25     }
26
27     public String getName() {
28         return name;
29     }
30
31     public void setName(String name) {
32         this.name = name;
33     }
34
35     public String getCardId() {
36         return cardId;
37     }
38
39     public void setCardId(String cardId) {
40         this.cardId = cardId;
41     }
42
43     public String getPhoneNum() {
44         return phoneNum;
45     }
46
47     public void setPhoneNum(String phoneNum) {
48         this.phoneNum = phoneNum;
49     }
50
51     public String getPassWord() {
52         return passWord;
53     }
54
55     public void setPassWord(String passWord) {
56         this.passWord = passWord;
57     }
58
59     @Override
60     public String toString() {
61         return "User{" +
62                 "name=‘" + name + ‘\‘‘ +
63                 ", cardId=‘" + cardId + ‘\‘‘ +
64                 ", phoneNum=‘" + phoneNum + ‘\‘‘ +
65                 ", passWord=‘" + passWord + ‘\‘‘ +
66                 ‘}‘;
67     }
68 }

User类--初始化会员信息

  1 package cn.save;
  2
  3 import com.sun.xml.internal.txw2.output.DumpSerializer;
  4
  5 import java.util.ArrayList;
  6 import java.util.HashMap;
  7 import java.util.Map;
  8 import java.util.Random;
  9
 10 /**
 11  * @auther::9527
 12  * @Description:
 13  * @program: shi_yong
 14  * @create: 2019-08-02 15:48
 15  */
 16 public class Meth {
 17
 18     //创建HashMap的方法
 19     public HashMap<String, User> getMap(String name, String cardId, String phoneNum, String passWord) {
 20         HashMap<String, User> map = new HashMap<>();
 21         User user = new User();
 22         user.setName(name);
 23         user.setCardId(cardId);
 24         user.setPhoneNum(phoneNum);
 25         user.setPassWord(passWord);
 26
 27         map.put(user.getName(),user);
 28
 29
 30
 31         return map;
 32     }
 33
 34     //批量创建会员卡,创建的会员信息是传参加1
 35     public HashMap<String, User> getMap(int num){
 36         HashMap<String, User> map = new HashMap<>();
 37         //恒定创建一个tom的会员信息,以便记忆
 38         User us1 = new User("tom","cp936","15393571586","95273");
 39         map.put(us1.getName(),us1);
 40         for (int i = 0; i < num; i++) {
 41             //String name, String cardId, String phoneNum, String passWord
 42             User user = new User();
 43             user.setName(name());
 44             user.setCardId(cardId());
 45             user.setPhoneNum(phoneNum());
 46             user.setPassWord(getPWD());
 47             map.put(user.getName(),user);
 48         }
 49
 50         return map;
 51     }
 52
 53
 54
 55     //随机生成6位密码的方法
 56     public String getPWD() {
 57         String code = "";
 58         for (int i = 0; i < 6; i++) {
 59             //设定布尔值,根据布尔值确定本轮使用数字还是使用字母
 60             boolean boo = ((int) (Math.random() * 2)) == 0 ? true : false;
 61             if (boo) {
 62                 //如果布尔为真,则本次密码加一个数字
 63                 code += (int) (Math.random() * 10);
 64             } else {
 65                 int temp = ((int) (Math.random() * 2)) == 0 ? 65 : 97;
 66                 code += (char) ((int) (Math.random() * 26) + temp);
 67             }
 68         }
 69         return code;
 70     }
 71
 72     //随机创建帐号的方法
 73     public String cardId() {
 74         Random random = new Random();
 75         String cardId = String.valueOf(random.nextInt(99999999));
 76         return cardId;
 77     }
 78
 79     //生成随机电话号码的方法
 80     public String phoneNum() {
 81         //给予真实的初始号段,号段是在百度上面查找的真实号段
 82         String[] start = {"133", "149", "153", "173", "177",
 83                 "180", "181", "189", "199", "130", "131", "132",
 84                 "145", "155", "156", "166", "171", "175", "176", "185", "186", "166", "134", "135",
 85                 "136", "137", "138", "139", "147", "150", "151", "152", "157", "158", "159", "172",
 86                 "178", "182", "183", "184", "187", "188", "198", "170", "171"};
 87         //随机出一个号段
 88         String fistNum = start[(int) (Math.random() * start.length)];
 89         //随机出一个尾号
 90         String lastNum = "";
 91         for (int i = 0; i < 8; i++) {
 92             lastNum += (int) (Math.random() * 10);
 93         }
 94         //手机号就是手机号段+尾号
 95         String phoneNum = fistNum + lastNum;
 96         return phoneNum;
 97     }
 98
 99     //创建用户名的方法
100     public String name() {
101         String code = "";
102         for (int i = 0; i < 4; i++) {
103             code += (char) ((int) (Math.random() * 26) + 97);
104         }
105         return code;
106     }
107
108
109
110
111
112 }

方法类--创建HashMap、随机创建会员信息的所有方法

 1 package cn.save;
 2
 3 import java.io.FileNotFoundException;
 4 import java.io.FileOutputStream;
 5 import java.io.IOException;
 6 import java.io.ObjectOutputStream;
 7 import java.util.HashMap;
 8
 9 /**
10  * @auther::9527
11  * @Description: 保存批量注册的信息的程序入口
12  * @program: shi_yong
13  * @create: 2019-08-02 17:46
14  */
15 public class Save {
16     public static void main(String[] args) {
17         HashMap<String, User> map = new HashMap<>();
18         Meth meth = new Meth();
19         //随机创建10+1组帐号密码
20         map = meth.getMap(10);
21
22         //创建对象输出的方式
23         ObjectOutputStream oos = null;
24         FileOutputStream fos = null;
25
26         try {
27             fos = new FileOutputStream("d:/userinfo");
28             oos = new ObjectOutputStream(fos);
29             oos.writeObject(map);
30             oos.flush();
31         } catch (FileNotFoundException e) {
32             e.printStackTrace();
33         } catch (IOException e) {
34             e.printStackTrace();
35         } finally {
36             try {
37                 oos.close();
38                 fos.close();
39                 System.out.println("文件已保存并关闭相应进程");
40             } catch (IOException e) {
41                 e.printStackTrace();
42             }
43         }
44     }
45 }

使用ObjectOutputStream保存信息

 1 package cn.save;
 2
 3 import java.io.FileInputStream;
 4 import java.io.FileNotFoundException;
 5 import java.io.IOException;
 6 import java.io.ObjectInputStream;
 7 import java.util.HashMap;
 8 import java.util.Scanner;
 9
10 /**
11  * @auther::9527
12  * @Description:
13  * @program: shi_yong
14  * @create: 2019-08-02 15:45
15  */
16 public class Register {
17     public static void main(String[] args) {
18         Scanner scanner = new Scanner(System.in);
19         ObjectInputStream ois = null;
20         FileInputStream fis = null;
21         HashMap<String,User> map = null;
22
23         try {
24             fis = new FileInputStream("d:/userinfo");
25             ois = new ObjectInputStream(fis);
26
27             map = (HashMap<String, User>)ois.readObject();
28
29             System.out.println("请输入会员名");
30             String name = scanner.next();
31             System.out.println("请输入你的密码");
32             String pwd = scanner.next();
33
34             if (map.containsKey(name)){
35                 if (map.get(name).getPassWord().equals(pwd)){
36                     System.out.println("登录成功,你的会员信息如下:   \n卡号"+map.get(name).getCardId()
37                             +"\n电话号码:"+map.get(name).getPhoneNum());
38
39
40                     System.out.println("登录成功,你的会员信息如下:   \n卡号"+map.get(name).toString());
41                 }
42             }else {
43                 System.out.println("没有找到这个会员名");
44             }
45
46
47
48
49         } catch (FileNotFoundException e) {
50             e.printStackTrace();
51         } catch (IOException e) {
52             e.printStackTrace();
53         } catch (ClassNotFoundException e) {
54             e.printStackTrace();
55         }
56
57     }
58 }

登录类---用于载入数据并登录

|--运行结果

原文地址:https://www.cnblogs.com/twuxian/p/11290762.html

时间: 2024-11-05 11:41:41

Java 自动创建会员信息--包含用户名,卡号,密码,电话号码的相关文章

性能优化——统计信息——SQLServer自动更新和自动创建统计信息选项 (转载)

原文译自:http://www.mssqltips.com/sqlservertip/2766/sql-server-auto-update-and-auto-create-statistics-options/?utm_source=dailynewsletter&utm_medium=email&utm_content=headline&utm_campaign=2012913 统计信息是如何提高SQLServer查询性能的?统计直方图用作在查询执行计划中查询优化器的选择依据.

转载:性能优化——统计信息——SQLServer自动更新和自动创建统计信息选项

这段时间AX查询变得非常慢,每天都有很多锁. 最后发现是数据库统计信息需要更新. ------------------------------------------------------------------------------ 原文译自:http://www.mssqltips.com/sqlservertip/2766/sql-server-auto-update-and-auto-create-statistics-options/?utm_source=dailynewslet

Java自动创建多层文件目录

// 创建文件上传路径 public static void mkdir(String path) { File fd = null; try { fd = new File(path); if (!fd.exists()) { fd.mkdirs(); } } catch (Exception e) { e.printStackTrace(); } finally { fd = null; } } 经常会遇见在创建某一目录时 因为其上一层目录即父目录不存在而抛出异常(指定文件路径不存在) jd

java自动创建多级目录

// 创建文件上传路径 public static void mkdir(String path) { File fd = null; try { fd = new File(path); if (!fd.exists()) { fd.mkdirs(); } } catch (Exception e) { e.printStackTrace(); } finally { fd = null; } } 经常会遇见在创建某一目录时 因为其上一层目录即父目录不存在而抛出异常(指定文件路径不存在) jd

理解统计信息(4/6):自动更新统计信息的阀值——人为更新统计信息的重要性

在理解统计信息(3/6):谁创建和管理统计信息?在性能调优中,统计信息的作用里我们讨论了统计信息的自动创建和自动更新.我们真的需要人为维护统计信息来保持性能最优?答案是肯定的,这取决与你的工作量.SQL Server只在达到阀限值时进行统计信息的自动更新.当大量的Insert/Update/Delete操作发生时,内建的自动更新统计信息不能持续保证性能的最优. 经过一系列的Insert/Update/Delete后,统计信息可能不会是最新.如果SQL Server查询优化器在表里需要指定列的统计

python 之简单模拟银行系统功能(卡号申请、还款、支付、取现)

一.简单说明 1.源代码文件见附件 Credit.zip 2.关于转账功能,因时间问题,转账功能待续 4.逻辑图 二.代码 1.包encryption中的(password.py文件) #!/usr/bin/env python # -*- coding: utf-8 -*- """ Created on Thu Nov 10 14:47:29 2016 密码相关功能 @author: toby """ import hashlib, re #密

Java实现Flash请求的二进制流图片保存并返回XML信息包含图片访问地址

前段时间和Flash对接了一个打点功能,java后台提供接口,Flash实现打点功能,将打点好的图片信息传到后台java实现保存图片和打点信息.其中图片是以二进制流的方式传到java后台,图片信息是以XML传到后台保存到数据库.刚开始的实现方式保存图片总是出现损坏,最后放到的图片残缺不全,经过一番调试,最终找到了原因,是在后台写入图片流的时候出现了问题,改了之后一切正常,下面是能够正常执行的代码: public void addDotPicture(HttpServletRequest requ

使用MyBatis的Generator自动创建实体类和dao的接口与xml

在实际的项目中其实建立数据库和设计数据库的时候特别重要,而等数据库设计完成之后,根据数据库创建实体类的工作就特别麻烦和繁琐了,不仅很麻烦,而且很浪费时间,不做又不行,这次就找到了一个简单的方法可以让myBatis帮你完成这件事情. 首先你需要一个Generator的myeclipes的插件,这个插件能在网上找到,安装方法也很简单就多说了. 下载了这个插件之后,新建一个xml,这个配置文件,就是对你所需要的实体类dao和xml进行合理的配置,看看你需要那些,不需要那些. 这里的配置我参考了网上给出

Jenkins 配合 GitLab 实现分支的自动合并、自动创建 Tag

Jenkins 配合 GitLab 实现分支的自动合并.自动创建 Tag 背景 GitFlow工作流简介 Gitflow工作流定义了一个围绕项目发布的严格分支模型,它会相对复杂一点,但提供了用于一个健壮的用于管理大型项目的框架,非常适合用来管理大型项目的发布和维护. 贯穿整个开发周期,master和develop分支是一直存在的,master分支可以被视为稳定的分支, 而develop分支是相对稳定的分支,特性开发会在feature分支上进行,发布会在release分支上进行,而bug修复则会在