(用于学习笔记)
【5 分】步骤 1:项目准备
照着步骤一给出的指令复制粘贴即可
【10 分】步骤 2:完成类 User
/**
* User类的构造方法
* @param type
* @param name
* @param pwd
*/
public User(int type,String name,String pwd){
// 缺失代码
}
答案
public User(int type,String name,String pwd) {
// 缺失代码
this.type = type;
this.name = name;
this.pwd = pwd;
}
补充user的有参构造函数
【10 分】步骤 3:完成实体类 Book
// 缺失代码:请补全以下方法,要求书籍数量的范围在:0<=num<=100 之间
// 当参数在规定范围外时,不做任何动作
public void setNum(int num) {
}
答案
public void setNum(int num) {
if(num >= 0 && num <= 100){
this.num = num;
}
}
在判断区间赋值即可
【15 分】步骤 4:完成数据操作类 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);
//设置书籍数量,请补全代码
}
答案
//参考如下代码,初始化用户数据(必须和上述需求一致),请补全代码
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
/**
* 打印输出所有书籍的信息
*
* 需求:
* 按照以下格式输出所有书籍,属性之间用短杠(-)分隔,每输出一本书籍信息后换行:
*
* 书籍名称1-书籍作者1-书籍价格1-书籍数量1
* 书籍名称2-书籍作者2-书籍价格2-书籍数量2
*
* 样例:
* 西游记-吴承恩-19-6
* 三国演义-罗贯中-20-9
*/
public void showAll() {
// 补全代码
// 注意1:数据来自Db.books
// 注意2:是直接输出打印到控制台
}
答案
// 书籍的名称 name;
// 书籍的作者 author;
// 书籍的价钱 price;
// 书籍的数量 num;
for(int i = 0; i < Db.booksLength; i++){
System.out.println(Db.books[i].getName() + "-" + Db.books[i].getAuthor() + "-" + Db.books[i].getPrice() + "-" + Db.books[i].getNum());
}
}
可以直接用多条System挨个打印,也可以循环输出,注意给出的格式中的 -
【15 分】步骤 6:继续完善书籍服务类 BookService
/**
* 根据书籍的名称来查询书籍信息
*
* 需求:
* 如果书籍存在则返回书籍对象,不存在则返回null
*
* @param name 书籍名称
* @return 返回对象
*/
public Book find(String name){
// 补全代码
// 注意:数据来自Db.books
return null;
}
答案
// 补全代码
// 注意:数据来自Db.books
for(int i = 0; i < Db.booksLength; i++){
if(Db.books[i].getName().equals(name)){
return Db.books[i];
}
}
return null;
equals用来判断字符串是否匹配
【15 分】步骤 7:完成服务类 UserService
/**
* 根据用户名称、旧密码、新密码来更新密码
*
* 需求:
* 如果用户名称和旧密码不正确,则不更新
* 如果用户名称和旧密码正确,则更新
*
* @param name 姓名
* @param oldPwd 旧密码
* @param newPwd 新密码
*/
public static void changePwd(String name,String oldPwd,String newPwd) {
// 补全代码:
// 注意:数据来自Db.users
}
答案
// 注意:数据来自Db.users
for(int i = 0; i < Db.usersLength; i++){
if(Db.users[i].getName().equals(name) && Db.users[i].getPwd().equals(oldPwd)){
Db.users[i].setPwd(newPwd);
}
}
需要判断姓名和旧密码是否满足给定的值,满足的话把密码设置成newPwd
【15 分】步骤 8:继续完善服务类 UserService
/**
* 根据用户名称删除用户
*
* 需求:
* 如果用户不存在,则返回fasle,如果存在则删除,并返回true
*
* @param name 姓名
*/
public static boolean delete(String name) {
// 补全代码
// 注意:数据来自Db.users
// 删除用户后,后面的用户在数组中的位置要前移,且用户数量要减1
boolean f = false; //用来记录用户是否存在,true表示存在,false表示不存在
return f;
}
答案
public static boolean delete(String name) {
// 补全代码
// 注意:数据来自Db.users
// 删除用户后,后面的用户在数组中的位置要前移,且用户数量要减1
boolean f = false; //用来记录用户是否存在,true表示存在,false表示不存在
for(int i = 0; i < Db.usersLength; i++){
if(Db.users[i].getName().equals(name)){
f = true; //打开删除
//其他的数据向前移动
for(int j = i; j < Db.usersLength - i; j++){
Db.users[j] = Db.users[j+1];
}
Db.usersLength--;
}
}
return f;
}