20210620 1+X 初级实操考试

实操考试题其他系列请移步专栏:JAVA实操题_疯狂的格式化的博客-CSDN博客

【10 分】步骤 2:完成类 User

目标说明

图书管理系统涉及到的用户有学生和管理员,我们需要完成类 User 的编写。

项目源代码下方的 org.lanqiao.bean.User 是一个用户类,请根据代码中的注释要求,补全空缺的代码。

    /**
     * User类的构造方法
     * @param type
     * @param name
     * @param pwd
     */
    public User(int type,String name,String pwd){
        // 缺失代码
    }

构造方法代码不多,可以直接手写。也可以把代码复制粘贴到 Eclipse 中,自动生成构造函数

右键——>Source——>Generate Constructor using Fields...

 

	public User(int type,String name,String pwd) {
		// 缺失代码
		this.type=type;
		this.name=name;
		this.pwd=pwd;
	}

【10 分】步骤 3:完成实体类 Book

目标说明

org.lanqiao.bean.Book 是一个实体类,表示的是书籍,请根据注释要求,补全空缺的代码。

    // 缺失代码:请补全以下方法,要求书籍数量的范围在:0<=num<=100 之间
    // 当参数在规定范围外时,不做任何动作
    public void setNum(int num) {


    }

使用 if 判断即可。 

	public void setNum(int num) {
		if(num>=0&&num<=100){
			this.num=num;
		}
	}

【15 分】步骤 4:完成数据操作类 Db

目标说明

系统需要在内存中将用户和书记信息存储起来,我们使用 org.lanqiao.db.Db 类来实现,请根据注释要求,补全空缺的代码。


    static{
        //参考如下代码,初始化用户数据(必须和上述需求一致),请补全代码
        users[0] = new User(User.ADMIN,"zs","123");
        users[1] = new User(User.STUDENT,"ls","456");
        

        //设置用户人数,请补全代码
        
        //参考如下代码,初始化书籍数据(必须和上述需求一致),请补全代码
        books[0] = new Book("西游记","吴承恩",21,5);
        books[1] = new Book("水浒传","施耐庵",25,3);
        
        //设置书籍数量,请补全代码
        
    }

根据注释和给出的样例代码照样子写即可。

static{
		//参考如下代码,初始化用户数据(必须和上述需求一致),请补全代码
    	users[0] = new User(User.ADMIN,"zs","123");
		users[1] = new User(User.STUDENT,"ls","456");
		users[2] = new User(User.STUDENT,"ww","123456");


		//设置用户人数,请补全代码
		usersLength=3;

		//参考如下代码,初始化书籍数据(必须和上述需求一致),请补全代码
		books[0] = new Book("西游记","吴承恩",21,5);
		books[1] = new Book("水浒传","施耐庵",25,3);
		books[2] = new Book("红楼梦","曹雪芹",30,6);
		books[3] = new Book("三国演义","罗贯中",40,10);

		//设置书籍数量,请补全代码
		booksLength=4;
}

【15 分】步骤 5:完成书籍服务类 BookService

目标说明

对书籍的一系列操作,被封装在 org.lanqiao.service.BookService 类中,请根据注释要求,补全空缺的代码。

    /**
     * 打印输出所有书籍的信息
     *
     * 需求:
     * 按照以下格式输出所有书籍,属性之间用短杠(-)分隔,每输出一本书籍信息后换行:
     *
     * 书籍名称1-书籍作者1-书籍价格1-书籍数量1
     * 书籍名称2-书籍作者2-书籍价格2-书籍数量2
     *
     * 样例:
     * 西游记-吴承恩-19-6
     * 三国演义-罗贯中-20-9
     */
    public void showAll() {
        // 补全代码
        // 注意1:数据来自Db.books
        // 注意2:是直接输出打印到控制台

    }

根据题目要求输出即可。记住一定要判断是否为空(null),因为 books[i] 的长度是100,而数组中只有4条数据。null 对象调用 get 方法会报错。

	public void showAll() {
		// 补全代码
		// 注意1:数据来自Db.books
		// 注意2:是直接输出打印到控制台
		for(int i =0;i<Db.books.length;i++){
			if(Db.books[i]!=null){
				System.out.println(Db.books[i].getName()
				+"-"+Db.books[i].getAuthor()
				+"-"+Db.books[i].getPrice()
				+"-"+Db.books[i].getNum());
			}
		}
	}

【15 分】步骤 6:继续完善书籍服务类 BookService

目标说明

请根据注释要求,完善BookServicefind方法。

    /**
     * 根据书籍的名称来查询书籍信息
     *
     * 需求:
     * 如果书籍存在则返回书籍对象,不存在则返回null
     *
     * @param name 书籍名称
     * @return 返回对象
     */
    public Book find(String name){
        // 补全代码
        // 注意:数据来自Db.books

        return null;
    }

 记住一定要判断是否为空(null),使用 equals 进行字符串的值比较即可。 

	public Book find(String name){
		// 补全代码
		// 注意:数据来自Db.books
		for(int i =0;i<Db.books.length;i++){
			if(Db.books[i]!=null&&Db.books[i].getName().equals(name)){
				return Db.books[i];
			}
		}
		return null;
	}

【15 分】步骤 7:完成服务类 UserService

目标说明

org.lanqiao.service.UserService 是用户服务类,关于用户的系列操作都封装在其中,请根据注释要求,补全空缺的代码。

    /**
     * 根据用户名称、旧密码、新密码来更新密码
     *
     * 需求:
     * 如果用户名称和旧密码不正确,则不更新
     * 如果用户名称和旧密码正确,则更新
     *
     * @param name 姓名
     * @param oldPwd 旧密码
     * @param newPwd 新密码
     */
    public static void changePwd(String name,String oldPwd,String newPwd) {
        // 补全代码:
        // 注意:数据来自Db.users

    }

 记住一定要判断是否为空(null),调用 get set 方法获取和修改数据。 

    public static void changePwd(String name,String oldPwd,String newPwd) {
        // 补全代码:
        // 注意:数据来自Db.users
        for(int i = 0;i<Db.users.length;i++){
            if(Db.users[i]!=null
            &&Db.users[i].getName().equals(name)
            &&Db.users[i].getPwd().equals(oldPwd)){
                Db.users[i].setPwd(newPwd);
            }
        }
    }

【15 分】步骤 8:继续完善服务类 UserService

目标说明

org.lanqiao.service.UserService 还有一个删除用户的功能未完成:

    /**
     * 根据用户名称删除用户
     *
     * 需求:
     * 如果用户不存在,则返回fasle,如果存在则删除,并返回true
     *
     * @param name 姓名
     */
    public static boolean delete(String name) {
        // 补全代码
        // 注意:数据来自Db.users
        // 删除用户后,后面的用户在数组中的位置要前移,且用户数量要减1
        boolean f = false; //用来记录用户是否存在,true表示存在,false表示不存在


        return f;
    }

把 i 定义在 for 的外面话很重要,因为删除数据后将后面的数据前移时要从被删除的那个数据的下标开始前移,所以下标 i 在数据前移时须要用到,只有 i 定义在 for 的外面才可以。第一个 for 循环中一定要加上 break ,在找到用户后就要马上退出循环,否则 i 就永远是 Db.users.length-1。还有只有 f 为 true 时才进行数据前移操作。

	public static boolean delete(String name) {
        // 补全代码
        // 注意:数据来自Db.users
        // 删除用户后,后面的用户在数组中的位置要前移,且用户数量要减1
        boolean f = false; //用来记录用户是否存在,true表示存在,false表示不存在
        int i;
        for(i = 0;i<Db.users.length;i++){
            if(Db.users[i]!=null
            &&Db.users[i].getName().equals(name)){
                f = true;
                Db.usersLength--;
                break;
            }
        }
        if(f){
            for(int j = i;j<Db.users.length-1;j++){
                Db.users[j]=Db.users[j+1];
            }
        }
        return f;
	}
  • 7
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值