基于Map的用户注册、登录、抽奖系统
期望功能





方法设计
1.类的设计:
定义两个参与者的属性:
private String username;
private String userpassword;
2.注册方法:
public void register(){
System.out.println("[抽奖系统 > 注册]");
System.out.println("请填写个人注册信息");
System.out.println("请输入用户名:");
String regusername = scanner.next(); //获取控制台输入的注册用户名
System.out.println("请输入密码:");
String reguserpassword = scanner.next(); //获取控制台输入的注册密码
Participant regparticipant = new Participant(regusername,reguserpassword); //将输入的用户名和密码存入新的参与者对象
int id = random.nextInt(8999)+1000; //获取1000~9999随机数卡号
map.put(id,regparticipant); //将卡号和参与者对象存入Map中
System.out.println("注册成功,请记好你的会员卡号");
System.out.println("用户名:" + regusername);
System.out.println("密码:" + reguserpassword);
System.out.println("卡号:" + id);
jud = judge();
}
3.登录方法:
public void login(){
if (d == 1)
{
System.out.println("[抽奖系统 > 登录]");
System.out.println("请填写个人登录信息");
System.out.println("请输入用户名:");
String loginusername = scanner.next();
System.out.println("请输入密码:");
String loginuserpassword = scanner.next();
Participant loginparticipant = new Participant(loginusername,loginuserpassword);
boolean c = false; //设置一个布尔值用来判断是否登录成功
for (Object o : map.values()){
if (o.equals(loginparticipant)) { //遍历values,将对象与对象相比较(重写equals方法)
System.out.println("登录成功!");
b = 1;
c = true;
}
}if(!c) {
System.out.println("登录失败,请重新登录!"); //如果登录失败重新登录
login();
}
jud = judge();
}
else
{
System.out.println("您还未注册,请先注册!"); //当d!=1时,未注册状态,执行注册方法
register();
}
}
3.抽奖方法:
public void join() {
System.out.println("[抽奖系统 > 抽奖]");
if (b == 1) { //当b=1时,是已经登录的状态
System.out.println("请输入您的卡号:");
int inputid = scanner.nextInt(); //获取控制台输入的卡号
System.out.println("本日的幸运数字是:");
int[] a = new int[5]; //新建数组用于判断是否中奖
for (int i = 0; i
4.重写后的equals方法判断类相等
@Override
public boolean equals(Object obj) {
if (this == obj){
return true;
}
if (getClass() != obj.getClass()){
return false;
}
Participant participant = (Participant)obj;
//判断属性与属性相等
return (username.equals(participant.username)) && (userpassword.equals(participant.userpassword));
}
5.判断是否继续
public boolean judge(){
boolean booljudge = true;
System.out.println("是否继续?y/n");
String judgeinput = scanner.next();
if (judgeinput.equals("y")){ //输入y继续
return booljudge;
}
else {
return !booljudge;
}
}
6.Main主函数
while(booljudge){
System.out.println("-----欢迎进入抽奖系统-----");
System.out.println(" 1.注册 ");
System.out.println(" 2.登录 ");
System.out.println(" 3.参加抽奖 ");
System.out.println(" 4.退出系统 ");
System.out.println("-----------------------");
System.out.println("请选择菜单:");
int i = scanner.nextInt();
if (i == 1) {
participant.register();
booljudge = Participant.jud;
}
else if (i ==2){
participant.login();
booljudge = Participant.jud;
}
else if (i == 3){
participant.join();
booljudge = Participant.jud;
}
else if (i == 4){
System.out.println("您已成功退出系统!");
break;
}
}
还未实现的和想优化的
- 1.Map接口过于给自己找难度,其实只用list就可以;
- 2.抽奖时卡号还要自己输入,因为map无法根据value来获取key;
- 3.登录是参与者对象与对象相比,有点绕弯,还要重写equals方法,应该可以直接get到value的对象中的值;
- 4.判断是否中奖的方法可能会有更简便的,我想不到了才用这个睿智方法;
- 5.界面优化;
- 6.一个操作结束后判断是否继续y/n 1.1版本更新修改
- 7.我什么时候能中一次????????
样例测试
主页面

注册



登录

抽奖



中奖,不存在的
未注册登录


未登录抽奖

退出系统

工程及完整代码
- 1.0版本
链接:https://pan.baidu.com/s/18_gUwDIYJ2m_IgQpneaCRw
提取码:bu26 - 1.1版本
链接:https://pan.baidu.com/s/1lOmxq35E0O4iISB8bzSyyQ
提取码:mffp - 版本合集
链接:https://pan.baidu.com/s/1OnDS1msiuiCiKPx_dU5UDA
提取码:rnyn
基于Map的用户注册、登录、抽奖系统的更多相关文章
- 基于xml的用户注册登录案例
用户注册登录 要求:3层框架,使用验证码 1 功能分析 l 注册 l 登录 1.1 JSP页面 l regist.jsp 注册表单:用户输入注册信息: 回显错误信息:当注册失败时, ...
- 【分布式】-- 基于Nacos、OpenFeign搭建的微服务抽奖系统后台小案例
1.项目介绍 最近入项目之前要求熟悉一下SpringCloud Nacos微服务基于Feign接口调用并整合Swagger2进行接口文档展示给前端,所以自己按照要求来编写并整合了一套基于SpringC ...
- 用户注册登录系统 V2.0
# 准备空列表 users = [] # 准备当前在线用户 online_user = {} while True: # 打印系统提示 print("欢迎使用 用户注册登录系统V2.0&qu ...
- 基于云端的通用权限管理系统,SAAS服务,基于SAAS的权限管理,基于SAAS的单点登录SSO,企业单点登录,企业系统监控,企业授权认证中心
基于云端的通用权限管理系统 SAAS服务 基于SAAS的权限管理 基于SAAS的单点登录SSO 基于.Net的SSO,单点登录系统,提供SAAS服务 基于Extjs 4.2 的企业信息管理系统 基于E ...
- python 容器 用户注册登录系统
1. 列表和普通变量有什么区别 列表是数据类型,普通变量是用来存储数据的 可以把列表赋值给普通变量 2.存在列表 a = [11, 22, 33], 如何向列表中添加(增)新元素 44 a.appen ...
- 传智播客JavaWeb day07、day08-自定义标签(传统标签和简单标签)、mvc设计模式、用户注册登录注销
第七天的课程主要是讲了自定义标签.简单介绍了mvc设计模式.然后做了案例 1. 自定义标签 1.1 为什么要有自定义标签 前面所说的EL.JSTL等技术都是为了提高jsp的可读性.可维护性.方便性而取 ...
- 基于Hadoop开发网络云盘系统架构设计方案
基于Hadoop开发网络云盘系统架构设计方案第一稿 引言 云计算技术的发展,各种网络云盘技术如雨后春笋,层出不穷,百度.新浪.网易都推出了自己的云盘系统,本文基于开源框架Hadoop设计实现了一套自己 ...
- SpringBoot整合Shiro实现基于角色的权限访问控制(RBAC)系统简单设计从零搭建
SpringBoot整合Shiro实现基于角色的权限访问控制(RBAC)系统简单设计从零搭建 技术栈 : SpringBoot + shiro + jpa + freemark ,因为篇幅原因,这里只 ...
- 基于JSP的学术交流论坛系统的设计与实现
版权声明:本文为[博主](https://zhangkn.github.io)原创文章.未经博主同意不得转载. https://creativecommons.org/licenses/by-nc-s ...
随机推荐
- 自定义JTabbedPane 标签风格
自定义JTabbedPane 标签风格 2012年03月09日 20:33:12 阅读数:2435 demo 下载地址:http://download.csdn.net/detail/jinannan ...
- DataTable对象的操作问题
DataTable,DataRow,DataClomun三种对象都是引用类型. C#中值的传递方式分为值传递与引用传递. 1.复制DataTable对象 //以下做法是错误的,dt1和dt2引用的 ...
- css总结18:HTML 表单和inut各个常用标签
1 HTML 表单和输入 1.1 HTML 表单介绍 表单是一个包含表单元素的区域. 表单元素是允许用户在表单中输入内容,比如:文本域(textarea).下拉列表.单选框(radio-buttons ...
- HTTP文件上传插件开发文档-JSP
版权所有 2009-2016 荆门泽优软件有限公司 保留所有权利 官方网站:http://www.ncmem.com/ 产品首页:http://www.ncmem.com/webplug/http-u ...
- APUE(1)----UNIX基础知识
一.UNIX体系结构 所有操作系统都为他们所运行的程序提供服务,典型的服务包括:执行新程序.打开文件.读文件.分配存储区等.严格意义上来说,操作系统可以定义为一种软件,它控制计算机硬件资源,提供程序运 ...
- BZOJ3223 文艺平衡树(splay)
题目背景 这是一道经典的Splay模板题——文艺平衡树. 题目描述 您需要写一种数据结构(可参考题目标题),来维护一个有序数列,其中需要提供以下操作:翻转一个区间,例如原有序序列是5 4 3 2 1, ...
- C# ADO.NET+反射读取数据库并转换为List
public List<T> QueryByADO<T>(string connStr, string sql) where T : class, new() { using ...
- 从map中取出最大或最小value对应的key---多种写法
package com.yuwanlong.hashing; import java.util.ArrayList; import java.util.Collections; import java ...
- Python——零基础向-四行代码下载网页上的一张图片
一.确保安装了requests模块 还没安装的可以百度一下如何安装,很简单的. 这里简单的说一下方法:win+R,输入cmd,打开命令行窗口,输入命令:pip install requests ,即可 ...
- ubuntu15.04下安装docker
##获得更多资料欢迎进入我的网站或者 csdn或者博客园 最近听说docker很火,不知道什么东西,只知道是一个容器,可以跨平台.闲来无事,我也来倒弄倒弄.本文主要介绍:ubuntu下的安装,以及基 ...