zoukankan      html  css  js  c++  java
  • 简单的图书管理系统

    自写的极其简陋的图书管理系统,代码不太规范,在学习中慢慢改

    现在还不能实现多用户借书

      问题:A借走了书,B借书时会借走A的书

    数据存储用的是map,如有疑问或建议欢迎留言


     

    LibMain.java

    package com.inclass.test;
    
    import java.util.Scanner;
    
    /*
     *  * 图书管理系统
     * 1.登录和注册
     * 2.登录成功后
     *         a.显示所有图书列表 添加 查询  修  删除
     *         b.借阅图书   需要绑定借阅人账号
     *         c.查看已借阅图书列表  归还图书
     * 3.退出当前登录的账号
     */
    
    public class LibMain {
    
        public static void main(String[] args) {
            /*
             * 预定义
             */
            Libmanage lib = new Libmanage();
            Scanner sc = new Scanner(System.in);
            //将会接收op1方法的返回值,是否进行下一阶段
            int Op1=0;
            //将用于接收对图书的操作
            int Op2=0;
            //用于第一个while循环————登录注册操作
            int flag1=1;
            //用于第二个while循环————是否对图书进行操作
            int flag2=1;
    
            /*
             * 开始进入图书馆
             */
            System.out.println("欢迎来到网络图书馆!");
            while(flag1==1){
                System.out.println("请输入需要的操作:1.登录2.注册0.退出系统");
                Op1 = lib.op1();//在op1方法中登录成功,就会返回1,进入图书操作界面
                
                if(Op1==1){
                    flag2=1;
                    while(flag2==1){
                        lib.show();//显示操作菜单
                        Op2=sc.nextInt();//接收对图书的操作
                        switch(Op2){
                        case 1:
                            lib.addBook();//1.增加图书
                            break;
                        case 2:
                            lib.delBook();//2.删除图书
                            break;
                        case 3:
                            lib.modBook();//3.修改图书
                            break;
                        case 4:
                            lib.selBook();//4.查询图书信息
                            break;
                        case 5:
                            lib.showAllBook();//5.显示可借阅图书
                            break;
                        case 6:
                            lib.borBook();//6.借阅图书
                            break;
                        case 7:
                            lib.showBorBook();//7.查看已经借阅的图书
                            break;
                        case 8:
                            lib.huanBook();//8.归还图书
                            break;
                        case 0:
                            flag2=0;//0.返回上一级
                            break;
                        default:
                            break;
                        }
                    }//第二个while的大括号
                }//执行图书操作的if
            }//第一个while循环的大括号
        }
    }

    Libmanage.java

    package com.inclass.test;
    /**
     * 图书和用户的操作
     * @author y
     *
     */
    
    import java.util.Scanner;
    import java.util.TreeMap;
    
    public class Libmanage {
        Scanner sc = new Scanner(System.in);
        //将会接收登录注册指令
        int op1=0;
        //成员变量————用户
        TreeMap<String, String> userMap = new TreeMap<>();
        //成员变量————图书
        TreeMap<Integer, Library> bookMap = new TreeMap<>();
        //图书编号
        int bno=0;
        //成员变量————用户和借书的关系
        TreeMap<Integer, Library> borBook = new TreeMap<>();//将会被借出去的书存在这个treemap里,然后再与用户关联
        TreeMap<Integer, Library> huanBook = new TreeMap<>();//要还的书的中介
        TreeMap<String, TreeMap> userBook = new TreeMap<>();
        
        //用于注册或登录的用户名和密码
        String name=null,password=null;
        //用于图书操作的属性定义
        String bname,bauther;//书名,书作者
        double bprice;//书价格
        
        
        /*
         * 登录注册选择
         */
        public int op1(){
            int fh=0;
            try{
                op1 = sc.nextInt();//接收登录注册指令
                if(op1==1){
                    int i=1;
                    System.out.println("请输入用户名:");
                    name = sc.next();
                    for (String str : userMap.keySet()) {
                        if(str.equals(name)){
                            fh=login(str);//登录————登录成功会返回1,失败返回0
                            i=0;//如果没有该用户,那就会进行注册,有,置为0,不注册
                            break;
                        }
                    }
                    if(i==1){
                        System.out.println("没有"+name+"用户,请进行注册!");
                        register();//跳到注册界面
                    }
                    
                }else if(op1==2){
                    register();//注册
                }else if(op1==0){
                    System.out.println("退出系统!...");
                    System.exit(0);
                }else{
                    System.out.println("输入有误请重新输入");
                }
            }catch(Exception e){
                System.out.println("输入有误请重新输入");
                sc.next();//出现异常后,就不断进行死循环的解决办法(可想想别的解决办法)
            }
            return fh;
        }
        
        /*
         * 用户注册
         *     ->对密码没有要求
         */
        public int register(){
            System.out.println("请输入用户名:");
            name = sc.next();
            System.out.println("请输入密码:");
            password = sc.next();
            for (String str : userMap.keySet()) {
                if(str.equals(name)){
                    System.out.println("已经存在该用户!请重新注册!");
                    return 0;
                }
            }
            userMap.put(name, password);
            System.out.println("注册成功!");
            return 1;
        }
        
        /*
         * 用户登录
         *     ->先判断用户名是否相同,然后再判断密码是否相同。没有符合条件的就返回false,否则返回true
         */
        public int login(String name){
    
            System.out.println("请输入密码:");
            password = sc.next();
            if(password.equals(userMap.get(name))){
                System.out.println("登陆成功!");
                return 1;
            }
            System.out.println("用户名或密码错误!");
            return 0;
        }
        
        
        /*
         *1.增加图书 
         */
        public void addBook(){
            try {
                int x=0;
                System.out.println("请输入图书编号:");
                bno = sc.nextInt();
                
                for (int i : bookMap.keySet()) {
                    if(i==bno){
                        x=1;//如果已有图书,置为1,告诉用户不能添加
                    }
                }
                if(x==0){
                    System.out.println("请输入书名:");
                    bname = sc.next();
                    System.out.println("请输入作者:");
                    bauther = sc.next();
                    System.out.println("请输入价格:");
                    bprice = sc.nextDouble();
                    bookMap.put(bno, new Library(bname,bauther,bprice));
                    System.out.println("增加成功!新添图书的信息为:");
                    System.out.println("编号:"+bno + " " + bookMap.get(bno));
                }else if(x==1){
                    System.out.println("已经存在编号为"+bno+"的书,请重新输入");
                }
                
            } catch (Exception e) {
                System.out.println("输入有误请重新输入!");
            }
            bno=0;//预防性措施
        }
        
        /*
         * 2.删除图书
         */
        public void delBook(){
            System.out.println("请输入图书编号:");
            try {
                int x=0;
                bno=sc.nextInt();
                for (int i : bookMap.keySet()) {
                    if(bno==i){
                        x=1;
                    }
                }
                if(x==1){
                    bookMap.remove(bno);
                    System.out.println("删除成功!");
                }else{
                    System.out.println("没有编号为"+bno+"的书");
                }
            } catch (Exception e) {
                System.out.println("输入有误请重新输入!");
            }
            bno=0;//预防性措施
        }
        
        /*
         * 3.修改图书信息
         */
        public void modBook(){
            try {
                int x=0;
                System.out.println("请输入需要修改的图书编号:");
                bno = sc.nextInt();
                for (int i : bookMap.keySet()) {
                    if(bno==i){
                        x=1;
                    }
                }
                if(x==1){
                    System.out.println("请输入修改后的书名:");
                    bname = sc.next();
                    System.out.println("请输入修改后的作者:");
                    bauther = sc.next();
                    System.out.println("请输入修改后的价格:");
                    bprice = sc.nextDouble();
                    bookMap.put(bno, new Library(bname,bauther,bprice));
                    System.out.println("修改成功!修改后图书的信息为:");
                    System.out.println("编号:"+bno + " " + bookMap.get(bno));
                }else{
                    System.out.println("没有编号为"+bno+"的书");
                }
            } catch (Exception e) {
                System.out.println("输入有误请重新输入!");
            }
            bno=0;//预防性措施
        }
        
        /*
         * 4.查询图书
         */
        public void selBook(){
            int x=0;
            try {
                System.out.println("请输入需要查询的图书编号:");
                bno=sc.nextInt();
                for (int i : bookMap.keySet()) {
                    if(i==bno){
                        System.out.println(bookMap.get(i));
                        x=1;
                        break;
                    }
                }
                if(x==0){
                    System.out.println("没有编号为"+bno+"的书");
                }
            } catch (Exception e) {
                System.out.println("输入有误请重新输入!");
            }
            bno=0;//预防性措施
        }
        
        /*
         * 5.显示所有可借阅的书
         */
        public void showAllBook(){
            for (int i : bookMap.keySet()) {
                System.out.println(i +" "+ bookMap.get(i));
            }
        }
        
        /*
         * 6.借书
         */
        public void borBook(){
            try {
                int x=0;
                System.out.println("请输入需要借阅图书的编号:");
                bno=sc.nextInt();
                for (int i : bookMap.keySet()) {
                    if(bno==i){
                        x=1;
                    }
                }
                if(x==1){
                    borBook.put(bno, bookMap.get(bno));//中介
                    userBook.put(name, borBook);//用户和借出去的书相关联
                    bookMap.remove(bno);//把这本书从图书馆移除
                    //borBook.clear();//放弃了多用户借书,如果这里clear,用户会借不到书
                }else{
                    System.out.println("不存在"+bno+"的书,请重新输入");
                }
            } catch (Exception e) {
                System.out.println("输入有误请重新输入!");
            }
            bno=0;//预防性措施
        }
        
        /*
         * 7.查看已经借出去的书
         */
        public void showBorBook(){
            for (String str : userBook.keySet()) {
                System.out.println(str);
                System.out.println("        " + userBook.get(str));
            }
        }
        
        /*
         * 8.还书
         */
        public void huanBook(){
            try {
                System.out.println("请输入需要归还图书的编号:");
                bno=sc.nextInt();
                huanBook.put(bno, (Library) userBook.get(name).get(bno));//中介
                bookMap.put(bno, huanBook.get(bno));//向图书馆存书
                userBook.remove(name, userBook.get(name).remove(bno));//将对应关系中的书删除
                huanBook.clear();//清除缓存
            } catch (Exception e) {
                System.out.println("输入有误请重新输入!");
            }
            bno=0;//预防性措施
        }
        
        /*
         * 显示操作菜单
         */
        public void show(){
            System.out.println("请输入需要进行的操作:");
            System.out.println("1.增加图书");
            System.out.println("2.删除图书");
            System.out.println("3.修改图书");
            System.out.println("4.查询图书信息");
            System.out.println("5.显示可借阅图书");
            System.out.println("6.借阅图书");
            System.out.println("7.查看已经借阅的图书");
            System.out.println("8.归还图书");
            System.out.println("0.返回上一级");
        }
        
        {//事先存几本书和一名用户
            bookMap.put(101, new Library("书1","作者1",12));
            bookMap.put(102, new Library("书2","作者2",15));
            bookMap.put(103, new Library("书3","作者3",17));
            bookMap.put(104, new Library("书4","作者4",19));
            userMap.put("aaa", "123");
        }
        
    }

    Library.java

    /**
     * 图书信息
     * @author y
     *
     */
    public class Library {
        //书名
        private String bookName;
        //作者
        private String bookAuther;
        //价格
        private double bookPrice;
        /*
         * set&get
         */
        public String getBookName() {
            return bookName;
        }
        public void setBookName(String bookName) {
            this.bookName = bookName;
        }
    
        public double getBookPrice() {
            return bookPrice;
        }
        public void setBookPrice(double bookPrice) {
            this.bookPrice = bookPrice;
        }
        public String getBookAuther() {
            return bookAuther;
        }
        public void setBookAuther(String bookAuther) {
            this.bookAuther = bookAuther;
        }
        /*
         * 构造方法
         */
    
        public Library() {
            super();
            // TODO Auto-generated constructor stub
        }
        public Library(String bookName, String bookAuther, double bookPrice) {
            super();
            this.bookName = bookName;
            this.bookAuther = bookAuther;
            this.bookPrice = bookPrice;
        }
        @Override
        public String toString() {
            return "书名:" + bookName + ",作者: " + bookAuther + ", 价格:" + bookPrice;
        }
        
        
        
    }
  • 相关阅读:
    【NOIP2003提高组】加分二叉树
    【luogu1220】关路灯
    【luogu2583】地铁间谍
    Hello, World!
    python中的画笔控制函数
    python中库引用与import
    python中RGB色彩
    turtle角度坐标体系
    turtle空间坐标系
    python中turtle库的使用
  • 原文地址:https://www.cnblogs.com/bkytep/p/9587984.html
Copyright © 2011-2022 走看看