实操考试题其他系列请移步专栏:JAVA实操题_疯狂的格式化的博客-CSDN博客
目标说明
图书管理系统涉及到的用户有学生和管理员,我们需要完成类
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;
}
目标说明
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;
}
}
目标说明
系统需要在内存中将用户和书记信息存储起来,我们使用
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;
}
目标说明
对书籍的一系列操作,被封装在
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;iif(Db.books[i]!=null){
System.out.println(Db.books[i].getName()
+"-"+Db.books[i].getAuthor()
+"-"+Db.books[i].getPrice()
+"-"+Db.books[i].getNum());
}
}
}
目标说明
请根据注释要求,完善
BookService
的find
方法。
/**
* 根据书籍的名称来查询书籍信息
*
* 需求:
* 如果书籍存在则返回书籍对象,不存在则返回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
目标说明
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
目标说明
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