最新(Java全栈) java码农从零开始学习项目实战

# Author: Steven Zeng
'''
作业2:编写登录接口
输入用户名密码
认证成功后显示欢迎信息
输错3次后锁定
'''
print("welcome to here")
f1=open('username.txt')
f2=open('password.txt')
f3=open('error.txt')#建立一个Demo记录输错3次密码的用户,并对其锁定
username_true=f1.readlines()#readlines读取方式返回的是逐行一个元素的列表
password_true=f2.readlines()
un_error=f3.readlines()
f1.close()
f2.close()
f3.close()
UK={}
#建立一个字典形式为用户名对密码
for i in range(len(username_true)):
    UK[str(username_true[i])]=str(password_true[i])#注:字典的键必须是不可变更型数据(常用整数和字符串)
# 而键值可以是数字也可以是字符串
#print(un_error)
#print(un_error.count(777+'\n')
#print(UK)
count=0
while count<3:
    username = input("Please, input your username:")
    password = input("Please, input your keywords")
    if un_error.count(str(username+'\n'))>=3:
        print("Out of trying, You are Locking!")
        break
    elif str(username+'\n') in UK and str(password+'\n')==UK.get(str(username+'\n')):
        print("welcome to you, honorable customer!")
        break
    else:
        print('''Invalid customer, please try again!
        And you have {count_left1} times left!'''.format(count_left1=2-count))
        f3=open('error.txt','a')#建立一个Demo记录输错3次密码的用户,并对其锁定
        f3.write(username+'\n')
        f3.close()
    count += 1
package com.example.myjavademo;
 
/**
 * 计算机的组装过程较为复杂,并且组装过程不固定,为了易于理解,我们把计算机组装过程简化为
 * 构建主机、设置操作系统、设置显示器3步,然后通过Directer和具体Builder来构建计算机对象
 *
 */
public class BuilderDesignDemo {
    public static void main(String []args){
        //方式一
        Builder builder=new MACBookBuilder();
        Director director=new Director(builder);
        director.construct("intel","AOC");
        System.out.println(builder.create().toString());
 
 
        //方式2
        System.out.println(new MACBookBuilder().
                buildBoard("intel").buildDisplay("AOC").create().toString());
 
 
    }
}
 
/**
 * 计算机抽象类,即Product角色
 */
abstract class Computer{
 
    protected String mBoard;
    protected String mDisplay;
    protected String mOS;
    protected Computer(){
 
    }
    public void setBoard(String board){//具体什么实现进行了隐藏
 
        this.mBoard=board;
    }
    public void setDisplay(String display){//具体什么实现进行了隐藏
        this.mDisplay=display;
    }
    public abstract void setOS();
 
    @Override
    public String toString() {
        return "Computer:="+mBoard+",="+mOS+",="+mDisplay;
    }
}
 
/**
 * 具体的Computer类
 */
 
class MACBook extends Computer{
    protected MACBook(){};
    @Override
    public void setOS() {
        mOS="MAC OS X";
    }
}
 
/**
 * 抽象Builder类
 */
abstract class Builder{
    //设置主机
    public abstract Builder buildBoard(String board);
    //设置操作系统
    public abstract Builder buildOS();
    //设置显示器
    public abstract Builder buildDisplay(String display);
    //创建Computer
    public abstract Computer create();
}
 
/**
 * 具体Builder类,MACBookBuilder
 */
class MACBookBuilder extends Builder{
    private Computer computer=new MACBook();
 
    @Override
    public Builder buildBoard(String board) {
        computer.setBoard(board);
        return this;
    }
 
    @Override
    public Builder buildOS() {
        computer.setOS();
        return this;
    }
 
    @Override
    public Builder buildDisplay(String display) {
        computer.setDisplay(display);
        return this;
    }
 
    @Override
    public Computer create() {//Mac的操作系统肯定是MAC OS的;这部分对外部隐藏
        computer.setOS();
        return computer;
    }
}
 
/**
 * Director类,负责构建Computer
 */
class Director{
    Builder builder=null;
 
    public Director(Builder builder) {
        this.builder = builder;
    }
    /**
     * 构建对象
     */
    public void construct(String board,String display){
        builder.buildBoard(board);
        builder.buildDisplay(display);
 
    }
}
 
class Person(object):
 
    def run(self):
        print("run")
 
    def eat(self,food):
        print("eat " + food)
 
    def say(self):
        print("My name is %s,I am %d years old" % (self.name,self.age))
 
 
    # 构造函数,创建对象时默认的初始化
    def __init__(self,name,age,height,weight,money):
        self.name = name
        self.age = age
        self.height = height
        self.weight = weight
        self.__money = money #实际上是_Person__money
        print("哈喽!我是%s,我今年%d岁了。目前存款%f" %(self.name,self.age,self.__money))
        # 想要内部属性不被直接外部访问,属性前加__,就变成了私有属性private
        self.__money = 100
 
        # 私有属性需要定义get、set方法来访问和赋值
        def setMoney(self,money):
            if(money < 0):
                self.__money = 0
            else:
                self.__money = money
 
        def getMoney(self):
            return self.__money
 
person = Person("小明", 5, 120, 28,93.1)
 
# 属性可直接被访问
person.age = 10
print(person.age)
 
# 私有属性不可直接被访问或赋值,因为解释器把__money变成了_Person__money(可以用这个访问到私有属性的money,但是强烈建议不要),以下2行会报错
# person.money = 10
# print(person.__money)
 
# 可以调用内部方法访问和赋值
print(person.getMoney())
person.setMoney(-10)
print(person.getMoney())
 
 
class Person(object):
 
    def run(self):
        print("run")
 
    def eat(self,food):
        print("eat " + food)
 
    def say(self):
        print("My name is %s,I am %d years old" % (self.name,self.age))
 
 
    # 构造函数,创建对象时默认的初始化
    def __init__(self,name,age,height,weight,money):
        self.name = name
        self.age = age
        self.height = height
        self.weight = weight
        self.__money = money #实际上是_Person__money
        print("哈喽!我是%s,我今年%d岁了。目前存款%f" %(self.name,self.age,self.__money))
        # 想要内部属性不被直接外部访问,属性前加__,就变成了私有属性private
        self.__money = 100
 
    # 私有属性需要定义get、set方法来访问和赋值
    def setMoney(self, money):
        if (money < 0):
            self.__money = 0
        else:
            self.__money = money
 
    def getMoney(self):
        return self.__money
 
person = Person("小明", 5, 120, 28,93.1)
 
# 属性可直接被访问
person.age = 10
print(person.age)
 
# 私有属性不可直接被访问或赋值,因为解释器把__money变成了_Person__money(可以用这个访问到私有属性的money,但是强烈建议不要),以下2行会报错
# person.money = 10
# print(person.__money)
 
# 可以调用内部方法访问和赋值
print(person.getMoney())
person.setMoney(-10)
print(person.getMoney())
 
 
 

猜你喜欢

转载自blog.csdn.net/xuyehong123/article/details/89706673