hnapp 后台系统开发、面向对象

利用前面所学的知识,写一个控制台登陆注册后台界面

package sy180918.hnapp.array;

import java.util.Arrays;
import java.util.Scanner; public class HnApp {
static Scanner sc = new Scanner(System.in); // 成员变量 提高作用域 static int[] users = new int[2]; // 存储 用户名
static int[] pswds = new int[2]; // 存储密码
static int count; // 默认是 0 记录真实的用户个数 static boolean userState ;// 默认是 false 用来记录登录状态
static int userName ; // 当前登录用户的用户名 public static void main(String[] args) {
test: while(true){
mainHtml();
int next = sc.nextInt();
switch (next) {
case 1: zhuce();break;
case 2: logon(); break;
case 3: setPswd();break;
case 4: System.out.println("退出");break test;
default:
System.out.println("非法字符");break;
}
} } /**
* 修改密码
*/
private static void setPswd() {
if(!userState){
System.out.println("请先登录 之后再来改密码");
return ;
} int i = 0;
for( ; i < count ; i++){
if(userName == users[i])
break; } System.out.println("请输入新密码");
int newPswd = sc.nextInt(); pswds[i] = newPswd;
System.out.println("密码修改成功 你已下线 请重新登录");
userName = 0;
userState = false; } /**
* 登录方法
*/
private static void logon() {
if(userState){
System.out.println("不能重复登录");
return ;
} System.out.println("欢迎来到登录页面");
System.out.println("请输入登录的用户名");
int user = sc.nextInt();
System.out.println("请输入登录的密码");
int pswd = sc.nextInt(); // 判断用户在不在
boolean flag = selectUser(user); if(flag){// 此时有用户 // 判断密码是否对应 // 1. 找到 在数组中 user 的索引
int i = 0;
for( ; i < count ; i++){
if(users[i] == user)
break;
} if( pswds[i] == pswd){
System.out.println("欢迎登录");
userState = true; // 修改登录状态
userName = user;
}else{
System.out.println("密码错误");
} }else{// 此时没有该用户
System.out.println("用户 "+user+" 不存在");
}
} /**
* 注册的方法
*/
private static void zhuce() {
// 键盘录入 用户
System.out.println("欢迎来到注册页面");
System.out.println("请输入注册的用户名");
int user = sc.nextInt();
System.out.println("请输入注册的密码");
int pswd = sc.nextInt(); // 查看用户是否已经存在
boolean flag = selectUser(user);
if(flag){
System.out.println("用户 "+user+" 已经存在 , 请更换其他用户");
return ;
} // 增加存储介质的 容量
if( count == users.length ){
System.out.println("正在扩容");
int oldLength = users.length ;
int newLength = oldLength + (oldLength>>1);
System.out.println(oldLength+"->"+newLength);
users = Arrays.copyOf(users, newLength); // 1.5 倍扩容
pswds = Arrays.copyOf(pswds, newLength);
} // 写入 存储介质
users[count] = user;
pswds[count] = pswd;
count++;
System.out.println("用户 "+user+" 注册成功");
} /**
* 查看 存储介质中 是否有指定的 user
* @return 规定 : 有该用户返回 true
*/
public static boolean selectUser(int user){
// 查看用户是否已经存在
for(int i = 0 ; i < count ; i++){
if(users[i] == user)
return true;
}
return false;
} /**
* 主菜单页面
*/
public static void mainHtml(){
System.out.println("=====欢迎来到 HnApp 后台系统========");
System.out.println("=================================");
System.out.println("----请按照提示进行操作----"); System.out.println("输入1 : 注册用户");
System.out.println("输入2 : 登录用户");
System.out.println("输入3 : 修改密码");
System.out.println("输入4 : 退出系统\n\n\n");
}
}

这些逻辑就当复习了,注意算术运算符优先级大于位运算符。

每次操作之后立即更新状态,全局变量。

面向对象

面向对象 三大特性 
    1. 封装
    2. 继承
    3. 多态
合理的封装 定义一个类  ?
合理的封装一个类 需要5个部分 
1. 属性 (成员变量)
2. 构造器
3. 访问器
4. 设定器
5. 功能方法
基本写法同c#,就是get、set没有简写。

大数据学习--day08(hnapp 后台系统开发、面向对象)的更多相关文章

  1. 大数据学习路线之linux系统基础搭建

    学习大数据是必须掌握一定Linux知识的,工欲善其事,必先利其器.在学习之前,首先需要搭建Linux系统,本节将讲解VMware Workstation的安装和CentOS 7系统的安装. 1.2.1 ...

  2. 大数据学习——azkaban工作流调度系统

    azkaban的安装部署 在/root/apps 1目录下新建azkaban文件夹 上传安装包到azkaban 2解压 .tar.gz 3删掉安装包 [root@mini1 azkaban]# .ta ...

  3. 大数据学习day26----hive01----1hive的简介 2 hive的安装(hive的两种连接方式,后台启动,标准输出,错误输出)3. 数据库的基本操作 4. 建表(内部表和外部表的创建以及应用场景,数据导入,学生、分数sql练习)5.分区表 6加载数据的方式

    1. hive的简介(具体见文档) Hive是分析处理结构化数据的工具   本质:将hive sql转化成MapReduce程序或者spark程序 Hive处理的数据一般存储在HDFS上,其分析数据底 ...

  4. 大数据学习之Linux基础01

    大数据学习之Linux基础 01:Linux简介 linux是一种自由和开放源代码的类UNIX操作系统.该操作系统的内核由林纳斯·托瓦兹 在1991年10月5日首次发布.,在加上用户空间的应用程序之后 ...

  5. 大数据学习:storm流式计算

    Storm是一个分布式的.高容错的实时计算系统.Storm适用的场景: 1.Storm可以用来用来处理源源不断的消息,并将处理之后的结果保存到持久化介质中. 2.由于Storm的处理组件都是分布式的, ...

  6. 大数据学习之Hadoop快速入门

    1.Hadoop生态概况 Hadoop是一个由Apache基金会所开发的分布式系统集成架构,用户可以在不了解分布式底层细节情况下,开发分布式程序,充分利用集群的威力来进行高速运算与存储,具有可靠.高效 ...

  7. 大数据学习(一) | 初识 Hadoop

    作者: seriouszyx 首发地址:https://seriouszyx.top/ 代码均可在 Github 上找到(求Star) 最近想要了解一些前沿技术,不能一门心思眼中只有 web,因为我目 ...

  8. 大数据学习笔记——Hadoop编程实战之HDFS

    HDFS基本API的应用(包含IDEA的基本设置) 在上一篇博客中,本人详细地整理了如何从0搭建一个HA模式下的分布式Hadoop平台,那么,在上一篇的基础上,我们终于可以进行编程实操了,同样,在编程 ...

  9. 大数据学习day31------spark11-------1. Redis的安装和启动,2 redis客户端 3.Redis的数据类型 4. kafka(安装和常用命令)5.kafka java客户端

    1. Redis Redis是目前一个非常优秀的key-value存储系统(内存的NoSQL数据库).和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list ...

随机推荐

  1. 抓取windows系统进程

    最近在开发辅流分享界面,然后之前的windows编程的代码都忘记了,翻到了一个博客,具体的还是去msdn去查函数,这个是入门的链接如下: http://blog.csdn.net/zdragon200 ...

  2. ES6 Map遍历、filter()筛选对象

    目录: -------- 1.map() -------- 2.filter(): ------------- 2.1.filter函数可以看成是一个过滤函数,返回符合条件的元素的数组 ------- ...

  3. 【深入理解JAVA虚拟机】第二部分.内存自动管理机制.2.HotSpot虚拟机对象探秘

    对象的创建过程 1.加载类 虚拟机遇到一条new指令时,首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已被加载. 解析和初始化过. 如果没有,那必须 ...

  4. TFS--解决新创建的windows用户无法访问TFS的问题

    今天入职新同事,帮忙配置TFS的账号碰到一个问题,TFS账号是映射取administrators组得 所以新建用户之后,无法马上引入TFS.查询原因是 Builtin组中没有该账号,以前也总是碰到新加 ...

  5. 阅读MySQL文档第21章摘抄

    触发程序是与表相关的数据库对象. mysql> CREATE TABLE account (acct_num INT, amount DECIMAL(10,2)); Query OK, 0 ro ...

  6. 对于view的深入理解,续篇(一)重写ViewGroup的onDraw

    在上一篇文章中,不仅熟悉了动态设定布局的方法,而且也对view的绘制流程有所了解.于是我继续做了下面几个实验,发现了一个问题.如果对view的绘制流程不是很明白,可以看看我的上一篇文章的介绍,点击下面 ...

  7. Django admin页面 显示中文问题

    http://127.0.0.1:8000/admin/ 该页中实现中文显示. 1.  页面显示的数据表表名 实现中文显示. models.Model类的内部类Meta,有两个特殊的选项:verbos ...

  8. ios 线程同步

    https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/Multithreading/ThreadSafe ...

  9. iOS动画的要素:CALayer维护数据模型和图片,沟通了CPU和GPU--视图中与图形绘制相关的功能

    1)iOS动画的模型:三层树模型: CALayer维护数据模型和图片,沟通了CPU和GPU:数据模型和图片本尊有CPU生成和维护:图片动画由GPU合成和呈现: https://developer.ap ...

  10. sqlserver数据库 表中字段值有空格,如何去除空格(例如char (5) 存入数据不足5位时sqlserver会自动补空格)

    普通的空格 前后的空格,使用LTrim和RTrim即可,例如:LTrim(RTrim(Name)) 中间的空格,使用replace函数替换,例如:Replace(Name,' ','') 如果是普通的 ...