话说
上一篇博客的图书管理系统目前来看,勉强满意,但是还缺乏用户验证。这篇主要在原来基础上增加权限验证,增加后,单纯就功能而言,差强人意啦。
目标:
1、用户对图书进行增、删、改的时候,需要管理员权限;
2、购买图书会提示登录,没有账号提示注册;
3、只有管理员有权限对用户进行查、删、改操作。
这个管理员,当然就是小美我啦。
开发环境:Eclipse( Oxygen Release Milestone 7)
目录
一、整体效果图
二、Book类
三、User类
四、接口
五、测试类(核心)
六、总结
一、整体效果图
对图书及用户CUD操作做了权限验证。
管理员方可以操作;管理员忘记密码?哈哈,直接后台改代码咯~
用户购买图书,必须存在账号,未存在提示注册。
注册成功后,即可购买。当然用管理员账号什么都可以做啦。
修改、删除用户都类似,不在赘述。
二、Book类
这个跟之前一样。
package com.hmc.bookmanagement;
/**
*
*2017年11月26日
*User:Meice
*下午7:48:14
*/
public class Book {
private int book_id;
private String book_name;
private double book_price;
private String book_author;
public Book() {}
public Book(int book_id,String book_name,double book_price,String book_author) {
this.book_id = book_id;
this.book_name = book_name;
this.book_price = book_price;
this.book_author = book_author;
}
public void setBook_id(int book_id) {
this.book_id = book_id;
}
public int getBook_id() {
return book_id;
}
public void setBook_name(String book_name) {
this.book_name = book_name;
}
public String getBook_name() {
return book_name;
}
public void setBook_price(double book_price) {
this.book_price = book_price;
}
public double getBook_price() {
return book_price;
}
public void setBook_author(String book_author) {
this.book_author = book_author;
}
public String getBook_author() {
return book_author;
}
public String toString() {
return "Book{"+book_id+"\t"+book_name+"\t"+book_price+"\t"+book_author+"}";
}
}
三、User类
User类是新增的
package com.hmc.bookmanagement;
/**
*
*2017年11月27日
*User:Meice
*下午9:11:11
*/
public class User {
private int user_id;
private String username;
private String password;
public User() {}
public User(int user_id,String username,String password) {
this.user_id = user_id;
this.username = username;
this.password = password;
}
public int getUser_id() {
return user_id;
}
public void setUser_id(int user_id) {
this.user_id = user_id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "User [user_id=" + user_id + ", username=" + username + ", password=" + password + "]";
}
}
四、接口
接口跟之前一样:
package com.hmc.bookmanagement;
/**
*
*2017年11月26日
*User:Meice
*下午7:46:47
*/
public interface BookManagementI {
public void showAllBook();
public void addBook(Book book);
public void delBook(String book_name);
public void editBook(String book_name);
public void buyBook();
}
五、测试类(核心)
BookManagementSystemImpl
这个变化很大,原来400来行代码,现在800来行,增加了权限验证及各种异常处理。当然CURD代码思路都是一样,如果用泛型还可以简化。不过这次就完善到这里。
package com.hmc.bookmanagement;
import java.text.DecimalFormat;
import java.util.Arrays;
import java.util.InputMismatchException;
import java.util.Scanner;
import org.junit.Test;
/**
*
*2017年11月26日
*User:Meice
*下午7:54:26
*/
public class BookManagementSystemImpl implements BookManagementI {
static BookManagementSystemImpl bms = new BookManagementSystemImpl();
//用数组作为容器,存放书籍
Book[] BookList = new Book[100];
//定义购书车,存放购买清单
Book[] buiedBooks = new Book[20];
//定义数组,存放待删除信息
User[] waitDelUserList = new User[20];
//定义购买总金额totalPrice
double totalPrice = 0;
//定义数组,用于存放用户信息
User[] UserList = new User[20];
public BookManagementSystemImpl() {
Book book1 = new Book(1, "《笑傲江湖》", 23.33, "金庸");
Book book2 = new Book(2, "《红楼梦续集》", 33.455, "曹雪芹");
Book book3 = new Book(3, "《悲惨世界》", 45.456, "雨果");
Book book4 = new Book(4, "《战争与和平》", 67.899, "托尔斯泰");
Book book5 = new Book(5, "《宝贝,宝贝》", 45.782, "周国平");
BookList[0] = book1;
BookList[1] = book2;
BookList[2] = book3;
BookList[3] = book4;
BookList[4] = book5;
//初始化管理员用户
User user = new User(0, "Meice", "123");
UserList[0] = user;
}
public static void main(String[] args) {
do {
bms.welcomeEnter();
switch(bms.getChooseNumber()) {
case 1:
//TODO showAllBook()
bms.showAllBook();
break;
case 2:
//TODO addBook()
//根据用户选择,是否使用管理员权限
if(bms.isContinue("【用户管理员】方有权限执行【新增】操作,使用管理员权限(y/n)?", "请输入用户名:", "")) {
//权限验证
if(bms.isAdmin(bms.getOneUser(""))) {
bms.addBook(bms.getOneBook());
}
}
break;
case 3:
//TODO delBook()
if(bms.isContinue("【用户管理员】方有权限执行【删除】操作,使用管理员权限(y/n)?", "请输入用户名:", "")) {
if(bms.isAdmin(bms.getOneUser(""))) {
bms.showAllBook();
bms.delBook(bms.getOneBookName("请输入【待删除】图书的【图书名称】:"));
}
}
break;
case 4:
//TODO editBook()
if(bms.isContinue("【用户管理员】方有权限执行【编辑】操作,使用管理员权限(y/n)?", "请输入用户名:", "")) {
if(bms.isAdmin(bms.getOneUser(""))) {
bms.showAllBook();
bms.editBook(bms.getOneBookName("请输入【待修改】图书的【图书名称】:"));
}
}
break;
case 5:
//TODO buyBook()
//购买之前,提示用户登陆,如果是非老用户,提示注册:
if(bms.isContinue("购买操作需要登录奥~已注册(y/n)?", "请输入【已存在】用户名:","")) {
//用户存在方可执行购买操作
if(bms.isOneUserExist(bms.getOneUser(""))) {
bms.showAllBook();
bms.buyBook();
}else {
System.out.println("此用户不存在,请重新选择其他操作:");
}
}else {
//执行注册用户功能
bms.addUser(bms.getOneUser("请输入【注册】用户名:"));
}
break;
case 6:
//查看用户列表
if(bms.isContinue("【用户管理员】方有权限执行【查看用户列表】操作,使用管理员权限(y/n)?", "请输入用户名:", "")) {
if(bms.isAdmin(bms.getOneUser(""))) {
bms.showUsers();
}
}
break;
case 7:
//修改用户
if(bms.isContinue("【用户管理员】方有权限执行【修改】操作,使用管理员权限(y/n)?", "请输入用户名:", "")) {
//判断用户权限
if(bms.isAdmin(bms.getOneUser(""))) {
bms.showUsers();
bms.updateUser(bms.getUserIds("请输入【待修改用户】编号:"));
}
}
break;
case 8:
//删除用户
if(bms.isContinue("【用户管理员】方有权限执行【删除】操作,使用管理员权限(y/n)?", "请输入用户名:", "")) {
//判断用户权限
if(bms.isAdmin(bms.getOneUser(""))) {
bms.showUsers();
bms.delUser(bms.getUserIds("请输入【待删除用户】编号【多个请以英文逗号间隔】:"));
}
}
break;
case 9:
//TODO Exit
System.out.println("谢谢惠顾!期待下次光临! *.* ");
break;
default:
//TODO others
System.out.println("此序号不存在,请重新选择:");
break;
}
}while(bms.isContinue("是否继续(y/n)?","","谢谢惠顾!期待下次相逢 *.* "));
}
/**
* 方法1:欢迎界面
* welcomeEnter()
*/
public void welcomeEnter() {
System.out.println("****************************欢迎进入图书管理系统********************************");
System.out.println("1.查看图书列表\n2.新增图书\n3.删除图书\n4.编辑图书\n5.购买图书");
System.out.println("==后台用户管理==");
System.out.println("6.查看用户列表\n7.修改用户\n8.删除用户\n9.退出");
System.out.println("*************************************************************************");
}
/**
* 方法2:返回选择序号
* getChooseNumber()
*/
public int getChooseNumber() {
System.out.println("请输入选择的序号:");
try {
return new Scanner(System.in).nextInt();
}catch(InputMismatchException e) {
System.out.println("输入有误,请重新输入:");
try {
return new Scanner(System.in).nextInt();
}catch(InputMismatchException e2) {
System.out.println("多次输入有误,求助于管理员【小美】吧!");
return 6;
}
}
}
/**
* 方法3:显示图书列表
*/
@Override
@Test
public void showAllBook() {
System.out.println("****************************图书列表*************************************");
if(bms.getBooksCount()==0) {
System.out.println("图书已售罄,期待下次光临 *.* ");
}else {
System.out.println("图书编号\t图书名称\t\t\t价格\t\t作者");
}
for(int i=0;i<BookList.length;i++) {
if(BookList[i]!=null) {
System.out.println(BookList[i].getBook_id()+"\t"+BookList[i].getBook_name()+"\t\t"+BookList[i].getBook_price()+"\t\t"+BookList[i].getBook_author());
}
}
System.out.println("**********************************************************************");
}
/**
* 方法4:是否继续
* isContinue()
*/
public boolean isContinue(String startInfo,String continueInfo,String notContinueInfo) {
System.out.println(startInfo);
String choice = new Scanner(System.in).next();
if("y".equals(choice)|| "Y".equals(choice)) {
System.out.println(continueInfo);
return true;
}else if("n".equals(choice)|| "N".equals(choice)) {
System.out.println(notContinueInfo);
return false;
}else {
System.out.println("输入有误,请重新输入:y/Y表示继续,n/N表示终止操作:");
String choice2 = new Scanner(System.in).next();
if("y".equals(choice2)|| "Y".equals(choice2)) {
System.out.println(continueInfo);
return true;
}else if("n".equals(choice)|| "N".equals(choice)) {
System.out.println(notContinueInfo);
return false;
}else {
System.out.println("连续多次输入有误,求助于管理员【小美】吧!");
return false;
}
}
}
/**
* 方法5:新增图书
*/
@Override
public void addBook(Book book) {
//输出新增图书
System.out.println("****************************待新增图书信息**********************************");
System.out.println("图书编号\t图书名称\t\t\t价格\t\t作者");
System.out.println(book.getBook_id()+"\t"+book.getBook_name()+"\t\t"+book.getBook_price()+"\t\t"+book.getBook_author());
System.out.println("************************************************************************");
//判断是否新增
if(bms.isContinue("请核实新增图书信息,确认新增(y/n)?","恭喜您!新增成功! *.* ","未执行新增操作,请选择其他操作:")) {
for(int i=0;i<BookList.length;i++) {
if(BookList[i]!=null) {
if(i==bms.getBooksCount()-1) {
BookList[i+1] = book;
//System.out.println("恭喜您!新增成功! *.* ");
//没有break;就会数组越界101 或者所有null值全部添加同一本书
break;
}
}
}
}else {
//已经做了处理notContinueInfo
}
}
/**
* 方法6:获取书籍数量
* getBooksCount()
*/
public int getBooksCount() {
int count =0;
for(int i=0;i<BookList.length;i++) {
if(BookList[i]!=null) {
count ++;
}
}
return count;
}
/**
* 方法7:获得一本书
* getOneBook()
*/
public Book getOneBook() {
System.out.println("请输入新增图书名称:");
String book_name = new Scanner(System.in).next();
System.out.println("请输入新增图书价格:");
double book_price = new Scanner(System.in).nextDouble();
System.out.println("请输入图书作者:");
String book_author = new Scanner(System.in).next();
Book book = new Book(bms.getBooksCount()+1, book_name, book_price, book_author);
return book;
}
//测试书籍数量
@Test
public void test01() {
System.out.println(getBooksCount());
}
/**
* 方法8:删除图书
*
*/
@Override
public void delBook(String book_name) {
//判断该书名是否存在
if(bms.isBookNameExist(book_name)) {
//输出待删除图书信息
Book book = bms.returnOneBookByBookName(book_name);
System.out.println("****************************待删除图书信息**********************************");
System.out.println("图书编号\t图书名称\t\t\t价格\t\t作者");
System.out.println(book.getBook_id()+"\t"+book.getBook_name()+"\t\t"+book.getBook_price()+"\t\t"+book.getBook_author());
System.out.println("***********************************************************************");
//确认是否执行删除操作
if(bms.isContinue("请核实删除信息,确认删除(y/n)?","恭喜!删除成功! *.* ", "未执行删除操作,请选择其他操作")) {
//直接执行删除操作,判断是否存在交给另外的方法
for(int i=0;i<BookList.length;i++) {
if(BookList[i]!=null) {
if(book_name.equals(BookList[i].getBook_name())) {
BookList[i] = null;
//System.out.println("恭喜您!删除成功!*.* ");
break;
}
}
}
}else {
//已经处理
}
}else {
System.out.println("此本书不存在,请重新输入...");
}
}
/**
* 方法9:判断book_name是否存在
* isBookNameExist()
*/
public boolean isBookNameExist(String book_name) {
boolean flag = false;
for(int i=0;i<BookList.length;i++) {
if(BookList[i]!=null) {
if(book_name.equals(BookList[i].getBook_name())) {
flag = true;
//避免flag在发生变化,已经证明存在了,就可以了
break;
}
else {
//System.out.println("此书不存在,请重新选择操作:"); 这里输出信息就不合适,会多次输出 目的只是判断是否存在
flag = false;
}
}
}
return flag;
}
/**
* 方法10:根据书名返回一本书
* returnOneBookByBookName()
*/
public Book returnOneBookByBookName(String book_name) {
for(int i=0;i<BookList.length;i++) {
if(BookList[i]!=null) {
if(book_name.equals(BookList[i].getBook_name())) {
return BookList[i];
}
}
}
//因为这个方法是建立在一定有这本书的基础上,所以其他情况可以返回null
return null;
}
/**
* 方法11:获取一本书名
* getOneBookName()
*/
public String getOneBookName(String info) {
//这里不要写死,灵活变化,删除提示输入要删除的图书名称;修改类似
//System.out.println("请输入图书名称:");
System.out.println(info);
return new Scanner(System.in).next();
}
/**
* 方法12:编辑图书
*/
@Override
public void editBook(String book_name) {
//在书本存在的前提下执行操作
if(bms.isBookNameExist(book_name)) {
System.out.println("请输入修改后的价格:");
double book_price = new Scanner(System.in).nextDouble();
System.out.println("请输入修改后的作者:");
String book_author = new Scanner(System.in).next();
//输出图书信息
System.out.println("****************************待修改图书信息**********************************");
System.out.println("图书名称\t\t\t价格\t\t作者");
System.out.println(book_name+"\t\t"+book_price+"\t\t"+book_author);
System.out.println("***********************************************************************");
//确认是否修改
if(bms.isContinue("请核对修改信息,确认修改(y/n)?", "恭喜!修改成功!","未执行修改操作,请选择其他操作:")) {
//执行修改操作
for(int i=0;i<BookList.length;i++) {
if(BookList[i]!=null) {
if(book_name.equals(BookList[i].getBook_name())) {
BookList[i].setBook_price(book_price);
BookList[i].setBook_author(book_author);
//System.out.println("恭喜您!修改成功! *.* ");
}
}
}
}else {
//已处理
}
}else {
System.out.println("书本不存在,请选择其他操作:");
}
}
/**
* 方法13:购买图书
*/
@Override
public void buyBook() {
//处理NumberFormatException
try {
System.out.println("请输入购买图书序号【购买多本请以英文逗号分隔】:");
String strId = new Scanner(System.in).next();
String[] strIds = strId.split(",");
//在图书存在的前提下在把图书清空并且在输出购买清单
if(isBookExitByBookIds(strId)) {
//遍历判断id是否相等,如果相等,就设置为空
for(int i=0;i<BookList.length;i++) {
if(BookList[i]!=null) {
for(int j=0;j<strIds.length;j++) {
if(BookList[i].getBook_id()==Integer.parseInt(strIds[j])) {
buiedBooks[i] = BookList[i];
totalPrice +=BookList[i].getBook_price();
BookList[i] = null;
//确保只输出一次
if(j==(strIds.length-1)) {
System.out.println("恭喜您!购买成功! *.* ");
}
//这里一定要跳出内存循环,否则空指针
break;
}
}
}
}
//输出购买信息
System.out.println("****************************购买图书清单**********************************");
System.out.println("图书编号\t图书名称\t\t\t价格\t\t作者\t总金额");
for(int i=0;i<buiedBooks.length;i++) {
if(buiedBooks[i]!=null) {
System.out.println(buiedBooks[i].getBook_id()+"\t"+buiedBooks[i].getBook_name()+"\t\t"+buiedBooks[i].getBook_price()+"\t\t"+buiedBooks[i].getBook_author());
}
}
//格式化总金额
DecimalFormat df = new DecimalFormat("#.00");
System.out.println("\t\t\t\t\t\t\t"+df.format(totalPrice)+"元");
System.out.println("***********************************************************************");
}else {
System.out.println("该图书不存在,请重新选择操作:");
}
}catch(NumberFormatException e) {
System.out.println("输入有误,请重新操作:");
}
}
/**
* 方法14:根据图书Id判断图书是否存在
* IsBookExistByBookIds()
* 单本、多本都可以搞定!
*/
public boolean isBookExitByBookIds(String strId) {
boolean flag = false;
String[] strIds = strId.split(",");
for(int i=0;i<BookList.length;i++) {
if(BookList[i]!=null) {
for(int j=0;j<strIds.length;j++) {
if(BookList[i].getBook_id()==Integer.parseInt(strIds[j])) {
flag = true;
//中断循环
break;
}else {
//这里不要在做任何判断,这个很重要;否则又判断回去了,感谢Debug模式,不要太自信自己的判断
//flag = false;
}
}
}
}
//如果2id存在,1本不存在,也视为不存在处理;但是后台已经清空
return flag;
}
//==============================================================================
//以下新增用户权限验证功能
/**
* 方法15:验证管理员权限
* isAdmin()
*/
public boolean isAdmin(User user) {
if("Meice".equals(user.getUsername())&&"123".equals(user.getPassword())) {
System.out.println("欢迎管理员【"+user.getUsername()+"】:");
return true;
}else {
System.out.println("遗憾,您权限不足,请求助管理员【小美】童鞋吧!");
return false;
}
}
/**
* 方法16:得到一个用户
* getOneUser()
* info类似:此操作需要管理员权限,请输入用户名:
* 还可以类似:空串
*/
public User getOneUser(String info) {
System.out.println(info);
String username = new Scanner(System.in).next();
System.out.println("请输入用户密码:");
String password = new Scanner(System.in).next();
User user = new User(getUsersCount(), username, password);
return user;
}
/**
* 方法17:获取用户数量
* getUsersCount()
* 便于user_id自增
*/
@Test
public int getUsersCount() {
int usersCount = 0;
for(int i=0;i<UserList.length;i++) {
if(UserList[i]!=null) {
usersCount ++;
}
}
return usersCount;
}
/**
* 方法18:添加注册用户
*
*/
public void addUser(User user) {
//遍历数组,把数组添加进去
for(int i=0;i<UserList.length;i++) {
//第一个null值处理下
if(getUsersCount()==0) {
//输出注册用户信息
System.out.println("********************待注册用户**************************");
System.out.println("用户编号\t\t用户名\t\t用户密码");
System.out.println(user.getUser_id()+"\t\t"+user.getUsername()+"\t\t"+user.getPassword());
System.out.println("******************************************************");
//让用户确认是否注册
if(isContinue("请核对以上待注册信息,确认注册(y/n)?","恭喜您!热烈您成为图书管理系统【第一个用户】!!! *.*", "未执行新增操作,请选择其他操作:")) {
UserList[0]=user;
//System.out.println("恭喜您!热烈您成为图书管理系统【第一个用户】!!! *.* ");
}else {
break;
}
}else {
if(UserList[i]!=null) {
//输出注册用户信息
System.out.println("********************待注册用户**************************");
System.out.println("用户编号\t\t用户名\t\t用户密码");
System.out.println(user.getUser_id()+"\t\t"+user.getUsername()+"\t\t"+user.getPassword());
System.out.println("******************************************************");
//让用户确认是否注册
if(isContinue("请核对以上待注册信息,确认注册(y/n)?","恭喜您!注册成功! *.* ", "未执行注册操作,请选择其他操作:")) {
UserList[getUsersCount()] = user;
// System.out.println("恭喜您!注册成功! *.* ");
//添加以后,马上终止,否则要么最后越界,要么Null值全部添加为了同一个用户
break;
}else {
break;
}
}
}
}
}
/**
* 方法19:判断用户是否存在
* 单个用户
* isOneUserExist()
*/
public boolean isOneUserExist(User user) {
for(int i=0;i<UserList.length;i++) {
if(UserList[i]!=null) {
if(user.getUsername().equals(UserList[i].getUsername()) &&user.getPassword().equals(UserList[i].getPassword()) ) {
return true;
}
}
}
return false;
}
/**
* 方法20:查看用户列表
* showUsers
*后台查看,也需要权限验证
*/
public void showUsers() {
//如果有用户在显示,否则提示暂无用户”
System.out.println("********************用户列表*****************************");
if(getUsersCount()>0) {
//遍历显示用户
System.out.println("用户编号\t\t用户名\t\t用户密码");
for(int i=0;i<UserList.length;i++) {
if(UserList[i]!=null) {
System.out.println(UserList[i].getUser_id()+"\t\t"+UserList[i].getUsername()+"\t\t"+
UserList[i].getPassword());
}
}
}else {
System.out.println("暂无用户\n请先【增加】几个\"用户\"吧!");
}
System.out.println("******************************************************");
}
/**
* 方法21:修改用户
*/
public void updateUser(String user_id) {
//逻辑类似删除用户 不过编辑是一次编辑一个
//有用户的前提下执行操作
if(getUsersCount()>=1) {
//确保用户存在前提下执行
if(isOneUserIdExist(user_id)) {
//输出修改后的信息
System.out.println("请输出修改后的用户名:");
String username= new Scanner(System.in).next();
System.out.println("请输入修改后的密码:");
String password = new Scanner(System.in).next();
System.out.println("********************待修改用户***************************");
System.out.println("用户编号\t\t用户名\t\t用户密码");
System.out.println(user_id+"\t\t"+username+"\t\t"+password);
System.out.println("******************************************************");
//根据用户选择,是否执行修改操作
if(isContinue("请核对以上待修改信息,确认修改(y/n)?", "","未执行修改操作,请选择其他操作:")) {
for(int i=0;i<UserList.length;i++) {
if(UserList[i]!=null) {
if(UserList[i].getUser_id() == Integer.parseInt(user_id)) {
UserList[i].setUsername(username);
UserList[i].setPassword(password);
System.out.println("恭喜您!修改成功! *.* ");
}
}
}
}else {
}
}else {
System.out.println("用户不存在,请选择其他操作:");
}
}
}
/**
* 方法22:判断单个用户是否存在
* IsOneUserExist()
*/
public boolean isOneUserIdExist(String user_id) {
//处理NumberFormatException
try {
int user_id2 = Integer.parseInt(user_id);
for(int i=0;i<UserList.length;i++) {
if(UserList[i]!=null) {
if(UserList[i].getUser_id()==user_id2) {
return true;
}
}
}
}catch(NumberFormatException e) {
//System.out.println("输入格式有误,请重新选择操作:");
}
return false;
}
/**
* 方法23:删除用户
*/
public void delUser(String user_id) {
String[] user_ids = user_id.split(",");
//输出用户待删除信息
//首先要有用户
if(getUsersCount()>=1) {
//其次user_id存在在输出待删除信息
if(isOneUserIdExist(user_id)) {
System.out.println("********************待删除用户**************************");
System.out.println("用户编号\t\t用户名\t\t用户密码");
for(int i=0;i<UserList.length;i++) {
if(UserList[i]!=null) {
for(int j=0;j<user_ids.length;j++) {
if(UserList[i].getUser_id()==Integer.parseInt(user_ids[j])) {
System.out.println(UserList[i].getUser_id()+"\t\t"+UserList[i].getUsername()+"\t\t"+UserList[i].getPassword());
}
}
}
}
System.out.println("******************************************************");
//用户确认是否执行删除操作
if(isContinue("请核对删除信息,确认删除(y/n)?","", "未执行删除操作,请选择其他操作:")) {
//执行删除操作
for(int i=0;i<UserList.length;i++) {
if(UserList[i]!=null) {
for(int j=0;j<user_ids.length;j++) {
if(UserList[i].getUser_id()==Integer.parseInt(user_ids[j])) {
//存进待删除列表
waitDelUserList[i] = UserList[i];
UserList[i] = null;
//确保只输出一次
if(j==user_ids.length-1) {
System.out.println("恭喜您!删除成功! *.* ");
}
//跳出内存循环
break;
}
}
}
}
}else {
//不做处理
}
}else {
System.out.println("用户不存在奥!请选择其他操作:");
}
}
}
/**
* 方法24:获取用户输入user_id
* getUserIds()
* 用户输入单个字符或者连续输入多个(在删除的时候)都可以
*/
public String getUserIds(String info) {
//必须在有用户的前提下再执行:
if(getUsersCount()>=1) {
System.out.println(info);
//处理NumberFormatException
try {
return new Scanner(System.in).next();
}catch(NumberFormatException e) {
System.out.println("输入格式有误:请重新输入用户编号:");
try {
return new Scanner(System.in).next();
}catch(NumberFormatException e2) {
System.out.println("连续多次输入有误,请重新选择:");
return "";
}
}
}else {
return "";
}
}
/**
* 问题:
* 1.Exception in thread "main" java.util.InputMismatchException——try catch 多个;
* 2.Exception in thread "main" java.lang.NumberFormatException:购买图书,出现中文逗号或者其他 ——try catch
* 3.图书售罄提示
* 4.根据多个Id,判断图书是否存在,还有bug,不准确
* 5.如果管理员忘记密码,可以初始化一下(当然直接改代码就可以了)
*/
}
六、总结
1、在下不能只顾着自己发表博客,记录是好习惯,更重要的是应该多看看同类型的文章,快速借鉴学习主题差不多的文章的优点,这样成长才更快;
2、博客还是时断时续的,我希望博客不要停,这是我的一项有着战略意义的习惯;
3、我应该有更快、更高、更强的意志和决心,这个冬天真冷。上海的冬天真冷。
本文介绍了一个简单的图书管理系统,重点在于增加了用户权限验证功能。管理员可以增删改图书和用户信息,普通用户则需要登录才能购买图书。
408

被折叠的 条评论
为什么被折叠?



