一道编程挑战!高手赐教

时间:2023-01-04 14:16:44
编写一个简易图书管理系统,有一个用户类User包含属性:用户号:u_id,用户名:username,借阅图书信息:infor.图书类Book包含属性:图书号:book_id,图书名:bookname,馆藏数目:num.测试类中定义一个借阅图书方法:参数为用户号和图书号,返回值为布尔型,根据图书号查找图书,然后在查找馆藏书目,num>1可借阅,并将num-1,书的信息存入到用户的infor中,num=1不可借阅,
2)根据用户号显示该用户已节约的书名和书的数目。
3)归还图书方法,参数:用户号和图书号,返回值类型为布尔型。
高手赐教,小弟刚学java,思路不是很清啊

10 个解决方案

#1


本来想写一下,可是看到你的题目是要高手帮你,我也是刚学,不敢班门了。

#2


题目不是已经写得很清楚了吗

#3


1.图书表(所有图书、包含图书数量)
2.借书证(1个借书证对应一个用户信息)
3.借书还书表(图书ID,用户ID,借书时间,数量,应还时间,实际还书时间)

#4


如何查找馆藏数目啊,参数里没有这个没想好啊

#5


引用 1 楼 napier 的回复:
本来想写一下,可是看到你的题目是要高手帮你,我也是刚学,不敢班门了。

可以试下啊共同学习吗

#6


呵呵,因为快下班才看到,所以写的比较匆忙,没有考虑多线程情况,供楼主参考,采用MVC模式实现


  package com.csdn.library.controller;

import com.csdn.library.model.LibraryService;
import com.csdn.libray.exception.LibraryException;

/**
 * 控制器类
 * @author Administrator
 *
 */
public class LibraryController {


private LibraryService ls ;

public LibraryController(){
ls = new LibraryService();
}

public String controller( String book_id,int user_id ,int type ){
boolean result = false;
try {
result = ls.Service(book_id, user_id, type);
} catch (LibraryException e) {
return e.getMessage();
}

if( result == true ){
return "操作成功";
} else {
return "操作失败";
}
}

public LibraryService getLs() {
return ls;
}

public void setLs(LibraryService ls) {
this.ls = ls;
}


}



package com.csdn.library.model;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import com.csdn.library.vo.BookVO;
import com.csdn.library.vo.User;
import com.csdn.libray.exception.LibraryException;
import com.csdn.libray.util.LibrayUtils;

/**
 * 模型类
 * @author Administrator
 *
 */
public class LibraryService {

public static final int BORROW_OPTION = 1;
public static final int RETURN__OPTION = -1;

public boolean Service(String book_id ,int user_id ,int type) throws LibraryException{

User user = searchUserByID( user_id );
if( user == null ) throw new LibraryException("没有此人");

BookVO book = searchBookByID(book_id);
if( book == null ) throw new LibraryException("没有此书");
if( book.getNum_in_lib() < 1 ) throw new LibraryException("数量不够,暂不借阅");

if( type == LibraryService.BORROW_OPTION){
return borrowBook(user,book);
}else if( type == LibraryService.RETURN__OPTION ){
return returnBook(user,book);
}else {
throw new LibraryException("您输入的操作类型有误");
}
}

private BookVO searchBookByID( String book_id ){
for( BookVO book : BookVO.getBooklist()){
if( book.getBook_id().equals(book_id))
return book;
}
return null;
}


private User searchUserByID( int user_id ){
for(User user:User.getUserlist()){
if( user.getUser_id() == user_id )
return user;
}
return null;
}

private  boolean borrowBook( User user,BookVO book ){
book.setNum_in_lib(book.getNum_in_lib()-1);
Map<String,List<String>> info_map = user.getInfo();
List<String > info = info_map.get(book.getBook_id());
if( info == null ) info = new ArrayList<String>();

info.add(user.getUser_name()+" "+LibrayUtils.createBorrowInfo());
info_map.put(book.getBook_id(), info);

return true;
}

private boolean returnBook( User user,BookVO book) throws LibraryException{
book.setNum_in_lib(book.getNum_in_lib()+1);
Map<String,List<String>> info_map = user.getInfo();
List<String > info = info_map.get(book.getBook_id());
if( info == null ) throw new LibraryException("该人没有借过此书");
info.add(user.getUser_name()+" "+LibrayUtils.createReturnInfo());

info_map.put(book.getBook_id(), info);

return true;
}


}


package com.csdn.library.vo;

import java.util.ArrayList;
import java.util.List;

import com.csdn.libray.util.LibrayUtils;

public class BookVO {

private static final List<BookVO> booklist = new ArrayList<BookVO>();

private String book_id;
private String book_name;
private int num_in_lib;


public static BookVO createBook(){
BookVO newbook =  new BookVO();
booklist.add(newbook);
return newbook;
}



public static BookVO createBook(String id,String name,int num){
BookVO newbook = new BookVO(id,name,num);
booklist.add(newbook);
return newbook;
}

private BookVO(){
this(LibrayUtils.createBookID(),"默认",1);
}

private BookVO( String book_id,String book_name,int num){
 this.book_id = book_id;
 this.book_name = book_name;
 this.num_in_lib = num;
}



public String getBook_id() {
return book_id;
}

public void setBook_id(String book_id) {
this.book_id = book_id;
}

public String getBook_name() {
return book_name;
}

public void setBook_name(String book_name) {
this.book_name = book_name;
}

public int getNum_in_lib() {
return num_in_lib;
}

public void setNum_in_lib(int num_in_lib) {
this.num_in_lib = num_in_lib;
}



public static List<BookVO> getBooklist() {
return booklist;
}





}


package com.csdn.library.vo;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class User {

private static final List<User> userlist = new ArrayList<User>();

private int user_id;
private String user_name;
private Map<String,List<String>> info = new HashMap<String,List<String>>();



private User( int user_id,String user_name ){
this.user_id = user_id;
this.user_name = user_name;
}


public static User createUser( int id,String name){
User u = new User(id,name);
userlist.add(u);
return u;
}

public int getUser_id() {
return user_id;
}

public void setUser_id(int user_id) {
this.user_id = user_id;
}

public String getUser_name() {
return user_name;
}

public void setUser_name(String user_name) {
this.user_name = user_name;
}

public Map<String, List<String>> getInfo() {
return info;
}

public void setInfo(Map<String, List<String>> info) {
this.info = info;
}


public static List<User> getUserlist() {
return userlist;
}






}



package com.csdn.libray.exception;

/**
 * 异常类
 * @author Administrator
 *
 */
public class LibraryException extends Exception {

public LibraryException( String info ){
super(info);
}

}

package com.csdn.libray.util;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;

import com.csdn.library.vo.User;

/**
 * 工具类
 * @author Administrator
 *
 */
public class LibrayUtils {


public static String createBookID(){
Date now = new Date();
DateFormat format = new SimpleDateFormat("yyyyMMddhhmmss");
return Thread.currentThread().getId()+format.format(now);
}

public static String createBorrowInfo(){
Date now = new Date();
DateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
return format.format(now)+" 借书 ";
}

public static String createReturnInfo(){
Date now = new Date();
DateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
return format.format(now)+" 还书 ";
}

}


package com.csdn.library.test;

import com.csdn.library.controller.LibraryController;
import com.csdn.library.vo.BookVO;
import com.csdn.library.vo.User;

/**
 * 测试类
 * @author Administrator
 *
 */
public class Test {

public static void main(String[] args ){
User.createUser(1, "Jack");
BookVO.createBook("1", "computer", 10);

LibraryController lc = new LibraryController();
String result = lc.controller("1", 1, -1);
//String result = lc.controller("1", 1, 1);
System.out.println(result);
}

}



#7


包结构是这样的

com.csdn.library.controller;
com.csdn.library.model;
com.csdn.library.vo;
com.csdn.library.util;
com.csdn.library.test;

回家了 ,呵呵

#8


晕还有个 
com.csdn.library.exeption;

#9


引用 8 楼 qiaoyupeng 的回复:
晕还有个 
com.csdn.library.exeption;

牛啊,太感谢了,我好好学习学习

#10


class User1{
public User1(){}
public User1(String u_id,String username){
this.u_id = u_id;
this.username = username;
}
public String u_id;//用户号
public String username;//用户名
public String infor;//借阅图书信息
}
class Book{
public Book(){}
public Book(String book_id,String bookname,int num){
this.book_id = book_id;
this.bookname = bookname;
this.num = num;
}
public String book_id;//图书号
public String bookname;//图书名
public int num;//馆藏数目
}
public class UBTest {
private User1 u[];
private Book books[];
    public UBTest(){
     u = new User1[3];
     u[0] = new User1("123","lisi");
     u[1] = new User1("124","liwu");
     u[2] = new User1("125","liliu");
     books = new Book[4];
books[0] = new Book("234","javass",4);
books[1] = new Book("235","javase",3);
books[2] = new Book("236","javasb",5);
books[3] = new Book("237","javasc",1);
    }
public boolean borrowBook(String uid,String bookid){
for(int j=0;j<books.length;j++){
if(books[j].book_id.equals(bookid)){
if(books[j].num>1){
System.out.println("馆藏书目:"+books[j].num);
System.out.println("可以借阅");
books[j].num = books[j].num-1;
}else{
System.out.println("馆藏不够无法借阅!!");
return false;
}
for(int i=0;i<u.length;i++){
if(u[i].u_id.equals(uid)){
u[i].infor = "图书编号:"+books[j].book_id+"书名:"+books[j].bookname;
System.out.println("借阅成功!!");
return true;
}
}
}

}
System.out.println("无此图书");
return false;
}
public void queryUser(String uid){
for(int i=0;i<u.length;i++){
if(u[i].u_id.equals(uid)){
System.out.println("用户:"+u[i].username+";"+"借阅信息:"+u[i].infor);
}
}
}
public boolean returnbackBook(String uid,String bookid){
for(int i=0;i<u.length;i++){
if(u[i].u_id.equals(uid)){
for(int j=0;j<books.length;j++){
if(books[j].book_id.equals(bookid)){
books[j].num=books[j].num+1;
System.out.println("图书归还成功!!");
System.out.println("图书馆藏书目:"+books[j].num+"本");
return true;
}
}
}
else{
System.out.println("用户账号错误!!无法还书");
return false;
}
}
return true;
}
public static void main(String[] args){
UBTest ut = new UBTest();
ut.borrowBook("123", "234");
ut.queryUser("123");
ut.returnbackBook("123", "234");
}
}
 这是我写的代码比较菜见笑了,望大家指点啊,左后那个还书的方法有问题,大家赐教!!

#1


本来想写一下,可是看到你的题目是要高手帮你,我也是刚学,不敢班门了。

#2


题目不是已经写得很清楚了吗

#3


1.图书表(所有图书、包含图书数量)
2.借书证(1个借书证对应一个用户信息)
3.借书还书表(图书ID,用户ID,借书时间,数量,应还时间,实际还书时间)

#4


如何查找馆藏数目啊,参数里没有这个没想好啊

#5


引用 1 楼 napier 的回复:
本来想写一下,可是看到你的题目是要高手帮你,我也是刚学,不敢班门了。

可以试下啊共同学习吗

#6


呵呵,因为快下班才看到,所以写的比较匆忙,没有考虑多线程情况,供楼主参考,采用MVC模式实现


  package com.csdn.library.controller;

import com.csdn.library.model.LibraryService;
import com.csdn.libray.exception.LibraryException;

/**
 * 控制器类
 * @author Administrator
 *
 */
public class LibraryController {


private LibraryService ls ;

public LibraryController(){
ls = new LibraryService();
}

public String controller( String book_id,int user_id ,int type ){
boolean result = false;
try {
result = ls.Service(book_id, user_id, type);
} catch (LibraryException e) {
return e.getMessage();
}

if( result == true ){
return "操作成功";
} else {
return "操作失败";
}
}

public LibraryService getLs() {
return ls;
}

public void setLs(LibraryService ls) {
this.ls = ls;
}


}



package com.csdn.library.model;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import com.csdn.library.vo.BookVO;
import com.csdn.library.vo.User;
import com.csdn.libray.exception.LibraryException;
import com.csdn.libray.util.LibrayUtils;

/**
 * 模型类
 * @author Administrator
 *
 */
public class LibraryService {

public static final int BORROW_OPTION = 1;
public static final int RETURN__OPTION = -1;

public boolean Service(String book_id ,int user_id ,int type) throws LibraryException{

User user = searchUserByID( user_id );
if( user == null ) throw new LibraryException("没有此人");

BookVO book = searchBookByID(book_id);
if( book == null ) throw new LibraryException("没有此书");
if( book.getNum_in_lib() < 1 ) throw new LibraryException("数量不够,暂不借阅");

if( type == LibraryService.BORROW_OPTION){
return borrowBook(user,book);
}else if( type == LibraryService.RETURN__OPTION ){
return returnBook(user,book);
}else {
throw new LibraryException("您输入的操作类型有误");
}
}

private BookVO searchBookByID( String book_id ){
for( BookVO book : BookVO.getBooklist()){
if( book.getBook_id().equals(book_id))
return book;
}
return null;
}


private User searchUserByID( int user_id ){
for(User user:User.getUserlist()){
if( user.getUser_id() == user_id )
return user;
}
return null;
}

private  boolean borrowBook( User user,BookVO book ){
book.setNum_in_lib(book.getNum_in_lib()-1);
Map<String,List<String>> info_map = user.getInfo();
List<String > info = info_map.get(book.getBook_id());
if( info == null ) info = new ArrayList<String>();

info.add(user.getUser_name()+" "+LibrayUtils.createBorrowInfo());
info_map.put(book.getBook_id(), info);

return true;
}

private boolean returnBook( User user,BookVO book) throws LibraryException{
book.setNum_in_lib(book.getNum_in_lib()+1);
Map<String,List<String>> info_map = user.getInfo();
List<String > info = info_map.get(book.getBook_id());
if( info == null ) throw new LibraryException("该人没有借过此书");
info.add(user.getUser_name()+" "+LibrayUtils.createReturnInfo());

info_map.put(book.getBook_id(), info);

return true;
}


}


package com.csdn.library.vo;

import java.util.ArrayList;
import java.util.List;

import com.csdn.libray.util.LibrayUtils;

public class BookVO {

private static final List<BookVO> booklist = new ArrayList<BookVO>();

private String book_id;
private String book_name;
private int num_in_lib;


public static BookVO createBook(){
BookVO newbook =  new BookVO();
booklist.add(newbook);
return newbook;
}



public static BookVO createBook(String id,String name,int num){
BookVO newbook = new BookVO(id,name,num);
booklist.add(newbook);
return newbook;
}

private BookVO(){
this(LibrayUtils.createBookID(),"默认",1);
}

private BookVO( String book_id,String book_name,int num){
 this.book_id = book_id;
 this.book_name = book_name;
 this.num_in_lib = num;
}



public String getBook_id() {
return book_id;
}

public void setBook_id(String book_id) {
this.book_id = book_id;
}

public String getBook_name() {
return book_name;
}

public void setBook_name(String book_name) {
this.book_name = book_name;
}

public int getNum_in_lib() {
return num_in_lib;
}

public void setNum_in_lib(int num_in_lib) {
this.num_in_lib = num_in_lib;
}



public static List<BookVO> getBooklist() {
return booklist;
}





}


package com.csdn.library.vo;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class User {

private static final List<User> userlist = new ArrayList<User>();

private int user_id;
private String user_name;
private Map<String,List<String>> info = new HashMap<String,List<String>>();



private User( int user_id,String user_name ){
this.user_id = user_id;
this.user_name = user_name;
}


public static User createUser( int id,String name){
User u = new User(id,name);
userlist.add(u);
return u;
}

public int getUser_id() {
return user_id;
}

public void setUser_id(int user_id) {
this.user_id = user_id;
}

public String getUser_name() {
return user_name;
}

public void setUser_name(String user_name) {
this.user_name = user_name;
}

public Map<String, List<String>> getInfo() {
return info;
}

public void setInfo(Map<String, List<String>> info) {
this.info = info;
}


public static List<User> getUserlist() {
return userlist;
}






}



package com.csdn.libray.exception;

/**
 * 异常类
 * @author Administrator
 *
 */
public class LibraryException extends Exception {

public LibraryException( String info ){
super(info);
}

}

package com.csdn.libray.util;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;

import com.csdn.library.vo.User;

/**
 * 工具类
 * @author Administrator
 *
 */
public class LibrayUtils {


public static String createBookID(){
Date now = new Date();
DateFormat format = new SimpleDateFormat("yyyyMMddhhmmss");
return Thread.currentThread().getId()+format.format(now);
}

public static String createBorrowInfo(){
Date now = new Date();
DateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
return format.format(now)+" 借书 ";
}

public static String createReturnInfo(){
Date now = new Date();
DateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
return format.format(now)+" 还书 ";
}

}


package com.csdn.library.test;

import com.csdn.library.controller.LibraryController;
import com.csdn.library.vo.BookVO;
import com.csdn.library.vo.User;

/**
 * 测试类
 * @author Administrator
 *
 */
public class Test {

public static void main(String[] args ){
User.createUser(1, "Jack");
BookVO.createBook("1", "computer", 10);

LibraryController lc = new LibraryController();
String result = lc.controller("1", 1, -1);
//String result = lc.controller("1", 1, 1);
System.out.println(result);
}

}



#7


包结构是这样的

com.csdn.library.controller;
com.csdn.library.model;
com.csdn.library.vo;
com.csdn.library.util;
com.csdn.library.test;

回家了 ,呵呵

#8


晕还有个 
com.csdn.library.exeption;

#9


引用 8 楼 qiaoyupeng 的回复:
晕还有个 
com.csdn.library.exeption;

牛啊,太感谢了,我好好学习学习

#10


class User1{
public User1(){}
public User1(String u_id,String username){
this.u_id = u_id;
this.username = username;
}
public String u_id;//用户号
public String username;//用户名
public String infor;//借阅图书信息
}
class Book{
public Book(){}
public Book(String book_id,String bookname,int num){
this.book_id = book_id;
this.bookname = bookname;
this.num = num;
}
public String book_id;//图书号
public String bookname;//图书名
public int num;//馆藏数目
}
public class UBTest {
private User1 u[];
private Book books[];
    public UBTest(){
     u = new User1[3];
     u[0] = new User1("123","lisi");
     u[1] = new User1("124","liwu");
     u[2] = new User1("125","liliu");
     books = new Book[4];
books[0] = new Book("234","javass",4);
books[1] = new Book("235","javase",3);
books[2] = new Book("236","javasb",5);
books[3] = new Book("237","javasc",1);
    }
public boolean borrowBook(String uid,String bookid){
for(int j=0;j<books.length;j++){
if(books[j].book_id.equals(bookid)){
if(books[j].num>1){
System.out.println("馆藏书目:"+books[j].num);
System.out.println("可以借阅");
books[j].num = books[j].num-1;
}else{
System.out.println("馆藏不够无法借阅!!");
return false;
}
for(int i=0;i<u.length;i++){
if(u[i].u_id.equals(uid)){
u[i].infor = "图书编号:"+books[j].book_id+"书名:"+books[j].bookname;
System.out.println("借阅成功!!");
return true;
}
}
}

}
System.out.println("无此图书");
return false;
}
public void queryUser(String uid){
for(int i=0;i<u.length;i++){
if(u[i].u_id.equals(uid)){
System.out.println("用户:"+u[i].username+";"+"借阅信息:"+u[i].infor);
}
}
}
public boolean returnbackBook(String uid,String bookid){
for(int i=0;i<u.length;i++){
if(u[i].u_id.equals(uid)){
for(int j=0;j<books.length;j++){
if(books[j].book_id.equals(bookid)){
books[j].num=books[j].num+1;
System.out.println("图书归还成功!!");
System.out.println("图书馆藏书目:"+books[j].num+"本");
return true;
}
}
}
else{
System.out.println("用户账号错误!!无法还书");
return false;
}
}
return true;
}
public static void main(String[] args){
UBTest ut = new UBTest();
ut.borrowBook("123", "234");
ut.queryUser("123");
ut.returnbackBook("123", "234");
}
}
 这是我写的代码比较菜见笑了,望大家指点啊,左后那个还书的方法有问题,大家赐教!!