精华内容
下载资源
问答
  • java实现控制台输入用户管理系统

    热门讨论 2011-05-11 18:53:03
    java实现控制台输入,登录用户管理系统。根据菜单选择自己要做的操作,权限不同操作不同。
  • import java.util.Scanner; public class Test { public static void main(String[] args) { System.out.print("请输入:"); String showInfo=new Scanner(System.in).next(); System.out.println...
    package cn.pb;
    import java.util.Scanner;
    public class Test {
     public static void main(String[] args) {
      System.out.print("请输入:");
      String showInfo=new Scanner(System.in).next();
      System.out.println("\n*************\n");
      System.out.println(showInfo);
     }
    }


    展开全文
  • NULL 博文链接:https://mactavish.iteye.com/blog/1731735
  • 说明:从控制台输入用户名和密码,然后从数据库中查询该用户是否存在,如果存在, 将数据信息保存在User类的对象中,返回该类的对象控制台输出欢迎登录,如果不存在,控制台输出登录失败 前提:已建好一张数据库表,如下图所...

    登录

    说明:从控制台输入用户名和密码,然后从数据库中查询该用户是否存在,如果存在,
    将数据信息保存在User类的对象中,返回该类的对象控制台输出欢迎登录,如果不存在,控制台输出登录失败
    
    前提:已建好一张数据库表,如下图所示:

    这里写图片描述

    User类

    package com.lanou3g.jdbc;
    
    import java.sql.Date;
    
    public class User {
        // 对象中声明的属性名尽量和数据库中的字段相同
        private int id;
        private String name;
        private String password;
        private String email;
        private Date birthday;
        public User() {
            super();
            // TODO Auto-generated constructor stub
        }
        public User(int id, String name, String password, String email, Date birthday) {
            super();
            this.id = id;
            this.name = name;
            this.password = password;
            this.email = email;
            this.birthday = birthday;
        }
        public int getId() {
            return id;
        }
        public void setId(int id) {
            this.id = id;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public String getPassword() {
            return password;
        }
        public void setPassword(String password) {
            this.password = password;
        }
        public String getEmail() {
            return email;
        }
        public void setEmail(String email) {
            this.email = email;
        }
        public Date getBirthday() {
            return birthday;
        }
        public void setBirthday(Date birthday) {
            this.birthday = birthday;
        }
        @Override
        public String toString() {
            return "User [id=" + id + ", name=" + name + ", password=" + password + ", email=" + email + ", birthday="
                    + birthday + "]";
        }
    }

    登录类

    package com.lanou3g.jdbc;
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    
    public class Demo07 {
        static {
            try {
                Class.forName("com.mysql.jdbc.Driver");
            } catch (ClassNotFoundException e) {
                // TODO Auto-generated catch block
                throw new RuntimeException("驱动加载失败");
            }
        }
        public static User getUser(String name1,String password1) {
            User user = null;
            try {
                String url = "jdbc:mysql://localhost:3306/myjdbc";
                Connection connection = DriverManager.getConnection(url,"root","123456");
                Statement statement = connection.createStatement();
                String sql = "select * from users where name = '"+name1+"' "
                        + "and password = '"+password1+"'";
                ResultSet resultSet = statement.executeQuery(sql);
                if(resultSet.next()) {
                    user = new User();
                    user.setId(resultSet.getInt("id"));
                    user.setName(resultSet.getString("name"));
                    user.setPassword(resultSet.getString("password"));
                    user.setEmail(resultSet.getString("email"));
                    user.setBirthday(resultSet.getDate("birthday"));
                }
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            return user;
        }
    }

    测试登录类

    package com.lanou3g.jdbc;
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    import java.util.Scanner;
    
    public class Test {
        public static void main(String[] args) {
            System.out.println("请输入用户名");
            Scanner scanner = new Scanner(System.in);
            String name = scanner.nextLine();
            System.out.println("请输入密码");
            Scanner scanner2 = new Scanner(System.in);
            String password = scanner.nextLine();
            User user = Demo07.getUser(name, password);
            if(user == null) {
                System.out.println("登录失败");
            }else {
                System.out.println("欢迎登录");
            }
        }
    }

    测试结果截图

    这里写图片描述
    这里写图片描述

    存在缺陷

    当密码输入为test'or'1'='1时,无论输入什么用户名,都会成功登录进去
    原因:打印sql语句 如下图所示
    select * from users where name = 'test' and password = 'test'or'1'='1'
    and 优先级高于 or ,无论前面是真是假, '1'='1'永远为真
    即select语句返回的是真,所有查询返回的是真,虽然密码错误,任然可以登录进去

    这里写图片描述

    解决方案

    用PreparedStatement类来代替Statement类,同时采用占位符?
    可以将缺陷完美解决
    

    加强后的代码 其余代码不变

    package com.lanou3g.jdbc;
    
    import java.io.Console;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    
    import com.mysql.jdbc.PreparedStatement;
    
    public class Demo07 {
        static {
            try {
                Class.forName("com.mysql.jdbc.Driver");
            } catch (ClassNotFoundException e) {
                // TODO Auto-generated catch block
                throw new RuntimeException("驱动加载失败");
            }
        }
        static Connection connection = null;
        static java.sql.PreparedStatement statement = null;
        public static User getUser(String name1,String password1) {
            User user = null;
            try {
                String url = "jdbc:mysql://localhost:3306/myjdbc";
                connection = DriverManager.getConnection(url,"root","123456");
                String sql = "select * from users where name=? and password=?";
                //  对sql语句进行预编译
                statement = connection.prepareStatement(sql);
                //  给sql语句的占位符 进行赋值
                //  参数1 填索引 sql语句中问号索引
                statement.setString(1, name1);
                statement.setString(2, password1);
                System.out.println(sql);
                ResultSet resultSet = statement.executeQuery();
                //  只返回一条数据
                if(resultSet.next()) {
                    user = new User();
                    user.setId(resultSet.getInt("id"));
                    user.setName(resultSet.getString("name"));
                    user.setPassword(resultSet.getString("password"));
                    user.setEmail(resultSet.getString("email"));
                    user.setBirthday(resultSet.getDate("birthday"));
                }
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }finally {
                if(connection != null) {
                    try {
                        connection.close();
                    } catch (SQLException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }
                if(statement != null) {
                    try {
                        statement.close();
                    } catch (SQLException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }
            }
            return user;
        }
    }

    结果截图

    这里写图片描述
    这里写图片描述
    这里写图片描述

    注册

    表中设置ID为主键,且为自增类型的,实现控制台输入数据,插入到数据库中

    这里写图片描述

    代码示例

    public class Demo02 {
        @Test
        public static int test1(String name,String password,String email,String birthday) throws ClassNotFoundException, SQLException {
            Class.forName("com.mysql.jdbc.Driver");
            String url = "jdbc:mysql://localhost:3306/myjdbc"; 
            Connection connection = DriverManager.getConnection(url,"root","123456");
            String sql = "insert into users (name,password,email,birthday) values (?,?,?,?)";
            PreparedStatement statement = connection.prepareStatement(sql);
            statement.setString(1, "zhangsna");
            statement.setString(2,"123");
            statement.setString(3, "123@qq.com");
            statement.setString(4, "1254-08-01");
            int row = statement.executeUpdate();
            return row;
        }
    }

    测试类

    public class Demo01 {
        public static void main(String[] args) throws ClassNotFoundException, SQLException {
            Scanner scanner = new Scanner(System.in);
            System.out.println("请输入用户名:");
            String name = scanner.nextLine();
            System.out.println("请输入密码:");
            String password = scanner.nextLine();
            System.out.println("请输入email:");
            String email = scanner.nextLine();
            System.out.println("请输入birthday:");
            String birthday = scanner.nextLine();
            int test1 = Demo02.test1(name, password, email, birthday);
            if(test1 > 0) {
                System.out.println("注册成功");
            }else {
                System.out.println("注册失败");
            }
        }
    }
    展开全文
  • java 监听控制台输入

    2019-06-25 15:42:00
    分享一下我写的java监听控制台输入并可以给出响应的功能。 很多时候需要监听控制台的输入内容,相当于信号监听,根据输入的内容做出相应的动作,这里给出我的一个简单实现。 要注意的是:监听得到的消息中前后的...

    分享一下我写的java监听控制台输入并可以给出响应的功能。

    很多时候需要监听控制台的输入内容,相当于信号监听,根据输入的内容做出相应的动作,这里给出我的一个简单实现。

    要注意的是:监听得到的消息中前后的空格和中间连续的多个空格会被忽略只保留一个空格,不区分大小写。

     

    package com.idealisan.cores;
    
    import java.util.HashMap;
    import java.util.Scanner;
    
    public class ConsoleListener {
        HashMap<String, Action> answers = new HashMap<String, ConsoleListener.Action>();
        Scanner scanner;
        Action defaultAction;
    
        /**
         * Add an action for a message.
         * @param message A string trimed. Ignore case. It has no inner space sequence of two spaces or more.
         * Example:"close connection"
         * @param action The method action.act() will be called when scanner get the message.
         */
        public void addAction(String message, Action action) {
            answers.put(message.toLowerCase(), action);
        }
    
        /**
         * 
         * @param scanner Usually new Scanner(System.in). 
         * Will not be closed after listening.
         * @param defaultAction The defaultAction.act() method will be called if an action is not added for a message.
         */
        public ConsoleListener(Scanner scanner, Action defaultAction) {
            this.scanner = scanner;
            this.defaultAction = defaultAction;
    
            if (scanner == null || defaultAction == null) {
                throw new NullPointerException("null params for ConsoleListener");
            }
        }
    
        public void removeAction(String message, Action action) {
            answers.remove(message, action);
        }
    
        public Action replaceAction(String message, Action action) {
            return answers.replace(message, action);
        }
    
        public void listenInNewThread() {
            Thread t = new Thread() {
                public void run() {
                    listen();
                }
            };
            t.start();
        }
        
        /**
         * Use listenInNewThread() instead.
         * Listen to console input in current thread. It blocks the thread.
         */
        public void listen() {
            while (true) {
                String line = scanner.nextLine();
                String msg = line.replaceAll("[\\s]+", " ");
                msg = msg.trim().toLowerCase();
                Action action = answers.get(msg);
                if (action == null) {
                    action = defaultAction;
                }
    
                action.act(line);
    
            }
        }
    
        public static interface Action {
            public void act(String msg);
        }
    }

     演示:

    package com.idealisan.test;
    
    import java.util.Scanner;
    
    import com.idealisan.cores.ConsoleListener;
    
    /**
     * Hello world!
     *
     */
    public class App {
        public static void main(String[] args) {
            ConsoleListener cs = new ConsoleListener(new Scanner(System.in), new ConsoleListener.Action() {
    
                public void act(String msg) {
                    System.out.println("Console: " + msg);
                }
            });
            cs.addAction("stop", new ConsoleListener.Action() {
    
                public void act(String msg) {
                    System.out.println("Console: Bye");
                    System.exit(0);
                }
            });
            cs.addAction("stop repeating", new ConsoleListener.Action() {
    
                public void act(String msg) {
                    System.out.println("Console: ...");
                }
            });
            cs.listenInNewThread();
    
            while (true) {
                try {
                    Thread.sleep(1);
                } catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
    
        }
    }

     

     

    转载于:https://www.cnblogs.com/memoryLost/p/11083131.html

    展开全文
  • 获取Java 用户控制台输入数据,从控制台获取String和int型的变量,并输出 需要根据相应的方法,来输入指定类型的值。 当输入的数据类型与要求的类型不匹配时,会报异常导致程序终止。 具体实现步骤: 1.导包 2....

    获取Java 用户控制台输入数据,从控制台获取String和int型的变量,并输出

    需要根据相应的方法,来输入指定类型的值。
    当输入的数据类型与要求的类型不匹配时,会报异常导致程序终止。

    具体实现步骤:
    1.导包
    2.实例化Scanner对象
    3.调用Scanner类的相关方法,来 获取Java 用户控制台输入数据

    import java.util.Scanner;//导包入Scanner包
    
    class ScannerTest{
    	public static void main(String[] args){
    		//实例化Scanner对象
    		Scanner scan = new Scanner(System.in);
    		
    		//调用Scanner类的相关方法
    		System.out.println("请输入你的姓名:");
    		String name = scan.next();
    		System.out.println(name);
    
    		System.out.println("请输入年龄:");
    		int age = scan.nextInt();
    		System.out.println(age);
    
    		System.out.println("请输入体重:");
    		double weight = scan.nextDouble();
    		System.out.println(weight);
    
    		System.out.println("是否?(true/false)");
    		boolean is_true = scan.nextBoolean();
    		System.out.println(is_true);
    
    		//对于char型的获取,Scanner没有提供相关的方法。只能获取一个字符串
    		System.out.println("请输入性别(男/女):");
    		String gender = scan.next();//"男"
    		char gender_char = gender.charAt(0);//获取索引为0位置上的字符
    		System.out.println(gender_char);
    	}
    }
    
    展开全文
  • * 实现控制台登录操作。从控制台输入用户名与密码,判断是否正确,一共有三次机会。 */ import java.util.Scanner; public class UsersLogin { public static void main(String[] args) { String userName = ...
  • 杨辉三角实现控制台输入 从控制台输入一个数n实现n行n列的杨辉三角 注意:a[i][j]=a[i-1][j]+a[i-1][j-1];与 a[i][j]=a[i-1][j-1]+a[i-1][j]; 后者无法运算,因为 a[i-1][j]最先被加载出来 import java.util.Scanner...
  • java实现控制台表格

    万次阅读 多人点赞 2019-07-23 19:18:33
    但在控制台环境中就比较困难了。有的时候可以用一些符号大略地模拟:(word文档中可能不整齐,拷贝到记事本中看) +-------+------+ |abc |xyz=tt| +-------+------+ |hellomm|t2 | +-------+------+ 本题目要求...
  • 个别时候有在控制台输入数据,然后通过Scanner读取,去运行某个函数测试的需求。 @Test public void testScanner() throws Exception{ Scanner scanner = new Scanner(System.in); String line = scanner....
  • java实现控制台打印表格

    千次阅读 2020-11-12 17:20:30
    背景 ...在实现该功能的过程中,对我来说最麻烦的是要在控制台输出表格,难点在于表格列宽相等以及表格内容要居中对齐。 效果 最终实现效果如下: 核心代码分享 分享此内容的目的有二: 为要实现
  • java读取控制台 输入

    2013-04-30 09:52:50
    前面介绍了使用IO类实现文件读写的示例,其实在很多地方还需要使用到IO类,这里再以读取控制台输入为例子来介绍IO类的使用。 控制台(Console)指无图形界面的程序,运行时显示或输入数据的位置,前面的介绍中可以...
  • 借助工具类实现读取控制台用户输入数据 Scanner //获取输入 Scanner input=new Scanner(System.in); String in=input.next();//input.Line() next方法遇到空格即停止读取 而 nextLine()方法读取一行 此外还有 ...
  • java控制台输入密码

    千次阅读 2015-08-20 16:48:57
    如果想从控制台读取用户输入,我们一般用Scanner 类留可以了,但是其输入是可见的,所以Scanner类不适用于从控制台读取密码。Java SE 6 引入了Console类实现这个目的。Java.lang.System类提供静态方法console()获取...
  • 编写类,实现系统主入口功能,用户输入用户名和密码,符合条件的进入系统。否则不能进入系统。(用户名固定和密码固定为admin和123)
  • java——控制台输入打印图形

    千次阅读 2014-07-28 23:05:53
    控制台输入直角三角形的高度(行数)。 每行*的数目依次为1、3、5、7等。 实现思路:外层循环控制行数,根据用户输入的行数得到外层循环条件 分析每行打印的内容:每一行均打印*号,第i行的*号数为2*i-1...
  • java控制台输入

    2016-11-24 18:46:23
    我们知道要实现控制台输入,我们可以BufferedReader对象,然后使用里面read方法,来读取我们在控制台中输入的内容。其实对于初学java,就感觉控制台的输入,是一个功能,是一个我们没有办法去实现的功能,也只有...
  • //怎么实现接收控制台输入? import java.util.Scanner; //Test.java import java.util.Scanner; public class Test16{ public static void main(String args[]){ System.out.println("input a...
  • java控制台输入问题

    2012-08-18 22:12:00
    今天看java,想到用控制到接受字符,可在输入代码的时候竟然不知道怎么接收输入字符,大家都知道在c、c++或是c#中直接有相应的函数,直接调用就能实现,但在java中我找了半天也没有如愿,于是百度一下,发现有两种...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,298
精华内容 519
关键字:

java实现控制台输入

java 订阅