结对编程队友代码赏析

优点之一

1.代码模块化,简单明了

2.可扩展性高

1)User

package com.wqqa;

public class User {
    private String name;     //用户姓名
    private String password;  //用户密码
    private String role;    //用户角色
    
    public User(String name, String password, String role) {
        super();
        this.name = name;
        this.password = password;
        this.role = role;
    }
    
    
    public String getName() {
        return name;
    }


    public void setName(String name) {
        this.name = name;//把name参数的值赋给当前属性
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getRole() {
        return role;
    }

    public void setRole(String role) {
        this.role = role;
    }

}

2)登陆验证,切换用户(方便以后插入,验证,可扩展性高)

public class main {
    static ArrayList<User> user_list = new ArrayList<User>();// 类数组user_list

    public static void init() {   //用户,密码,用户角色
        for (int i = 1; i < 4; i++) {
            User temp = new User("张三"  +i, "123", "小学老师");
            user_list.add(temp);
        }
        for (int j = 1; j < 4; j++) {
            User temp = new User("李四" +j, "123", "初中老师");
            user_list.add(temp);
        }
        for (int k = 1; k < 4; k++) {
            User temp = new User("王五"  +k, "123", "高中老师");
            user_list.add(temp);
        }
    }

    public static User load(String name, String password)
    {

        for (int i = 0; i < user_list.size(); i++) 
        {
            if (name.equals(user_list.get(i).getName()) && password.equals(user_list.get(i).getPassword())) 
            {
                
                return user_list.get(i);
            }

        }
        return null;
    }

    public static User load_check() //登陆验证
    {
        Scanner input = new Scanner(System.in);// 创建Scanner对象
        System.out.println("请输入用户名和密码,中间用空格隔开:");
        String in_put = input.nextLine();// 输入的字符串中间有空格
        String[] str_user = in_put.split(" "); // 用split方法在每个空格字符处进行分解,把输入的用户名和密码区分开
        User online = load(str_user[0], str_user[1]);// ,调用load函数,前一段代表用户名,后一个字符代表密码
        if (online != null) 
        {
            return online;
        } 
        else 
        {
            return load_check();
        }
    }
    
    
    public static void change(User role)
    {    
            Scanner input = new Scanner(System.in);// 创建Scanner对象
            System.out.println("请问是否需要切换题目类型?(请输入YES或者NO)");
            while(true)
            {
            int flag = 0;
            String str = input.nextLine();
            if(str.equals("YES"))
            {
                Scanner a = new Scanner(System.in);
                System.out.println("请选择题目类型 小学,初中,高中(分别用A B C)表示");
                while(true)
                {
                   flag = 1;
                String s = a.nextLine();
                if(s.equals("A"))
                {
                    role.setRole("小学老师");
                    break;
                    
                }
                else if(s.equals("B"))
                {
                    role.setRole("初中老师");
                    break;
                }
                else if(s.equals("C"))
                {
                    role.setRole("高中老师");
                    break;
                }
                else
                {
                    System.out.println("请选择题目类型 小学,初中,高中(分别用A B C)表示");
                }
            
            }
            }
            else if(str.equals("NO"))
            {
                System.out.println("用户类型不变");
                break;

            }
            else
            {
                System.out.println("请问是否需要切换题目类型?(请输入YES或者NO)");
            }
                if(flag == 1)
                    break;
            }        
    }

    

3)题目输出判断

    public static int inputint() //判断输入题目的数量对不对
    {
        Scanner scan = new Scanner(System.in);
        int temp; 
        try {
            temp = scan.nextInt();    //获取输入的题目的数量
            if (temp < 10 || temp > 30) {
                System.out.println("题目数量范围不对,请重新输入:");
                temp = inputint();
            }
        } catch (java.util.InputMismatchException e) {
            System.out.println("输入的不是整型,请重新输入:");
            temp = inputint();
        }
        return temp;
    }
    

4)主函数部分

public static void main(String[] args) throws FileNotFoundException 
    {
        init();
        boolean tui = false;    
        User hehe = load_check();
        boolean flag = false;
        while(true)
        {
            SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss");//设置日期格式
            String name = df.format(System.currentTimeMillis());
            String path = "./" + hehe.getName();
            File f = new File(path);
            if(!f.exists())
            {
                f.mkdir();
            }
            PrintStream out = new PrintStream(path +"./" + name +".txt");
            if(hehe.getRole().equals("高中老师"))
            {
                System.out.println("为"+hehe.getRole()+"出题");
                System.out.println("准备生成高中数学题目,请输入生成题目数量");
                int temp = inputint();
                for(int i = 1;i<=temp;i++)
                {
                    out.println(i+" "+chuti_gaozhong()+"=");
                }  
                Scanner cin = new Scanner(System.in);
                System.out.println("是否退出");
                while(true)
                {
                    String isExit = cin.next();
                    if(isExit.equals("是"))
                    {
                        return;
                    }
                    else if(isExit.equals("否"))
                    {
                        break;
                    }
                    else
                    {
                        System.out.println("是否退出");
                    }
                }
                change(hehe);
            }
            else if(hehe.getRole().equals("初中老师"))
            {
                System.out.println("为"+hehe.getRole()+"出题");
                System.out.println("准备生成初中数学题目,请输入生成题目数量");
                int temp = inputint();
                for(int i = 1;i<=temp;i++)
                 {
                    out.println(i+" "+chuti_chuzhong()+"=");
                }  
                Scanner cin = new Scanner(System.in);
                System.out.println("是否退出");
                while(true)
                {
                    String isExit = cin.next();
                    if(isExit.equals("是"))
                    {
                        return;
                    }
                    else if(isExit.equals("否"))
                    {
                        break;
                    }
                    else
                    {
                        System.out.println("是否退出");
                    }
                }
                 change(hehe);
            }
            else if(hehe.getRole().equals("小学老师"))
            {
                System.out.println("为"+hehe.getRole()+"出题");
                System.out.println("准备生成小学数学题目,请输入生成题目数量");
                int temp = inputint();
                for(int i = 1; i <= temp;i++)
                {
                    out.println(i+" "+chuti_xiaoxue()+"=");
                } 
                Scanner cin = new Scanner(System.in);
                System.out.println("是否退出");
                while(true)
                {
                    String isExit = cin.next();
                    if(isExit.equals("是"))
                    {
                        return;
                    }
                    else if(isExit.equals("否"))
                    {
                        break;
                    }
                    else
                    {
                        System.out.println("是否退出");
                    }
                }
                change(hehe);
            }    
            
        }
        
    }

}

5)文件夹创建

    public static void creatFile() //创建用户文件夹
    {
        File f = new File("E:\\test");
        if(!f.exists())
        {
            f.mkdir();
        }
        f.mkdir();  
    }
    

 

缺点:

1.部分功能未实现

2.主函数和部分结合发生重复,或者说可以放在函数里的,放在了主函数,其实可以传参解决。

 

posted on 2018-09-27 21:43  软件1604-钱亮  阅读(331)  评论(0)    收藏  举报