java学习笔记——图书馆管理系统(java+IO流)

目录

一,功能分析

1,功能模块

2,功能结构图

3,项目结构

二,功能实现

1,管理员模块

2,读者模块

3,图书管理模块

4,图书借阅模块

5,罚金模块

三,总结


一,功能分析

整个系统的功能主要可以分为五个模块,系统的使用者(管理员模块),书籍信息以及操作(图书管理模块),借阅书籍的人的信息记录(读者模块),图书借阅的功能(图书借阅模块)。

java学习笔记——图书馆管理系统(java+IO流)_第1张图片

1,功能模块

管理员模块首先可以进行管理员账号的注册,登录功能。以及对登陆的账号进行密码修改的操作,也可以删除当前登录的账号。账号信息主要有id,用户名,密码三个属性。

读者模块是管理员对读者信息进行添加,查询,修改操作。读者模块包括读者的编号,姓名出生,性别,电话,院系,注册时间,读者类别以及该类别可以借阅的书籍以及时间等属性。

图书管理模块是对书籍进行增,删,查,改和打印书籍信息的操作,存储的书籍信息包括名称,作者,印刷次数,类别,编号等属性。

图书借阅模块完成图书的借阅以及归还功能,主要有借阅时间,归还时间两个属性。

罚金模块主要存储借阅逾期时的罚金信息。

2,功能结构图

java学习笔记——图书馆管理系统(java+IO流)_第2张图片

3,项目结构

java学习笔记——图书馆管理系统(java+IO流)_第3张图片

二,功能实现

1,管理员模块

管理员模块包括注册,登录,修改密码,删除用户四个功能

//    管理员登录
    public boolean login(){
        journal.setJournal("账号登录");
        FileReader fileReader= null;
        try {
            fileReader = new FileReader(Administrator.adminnistratorfile);
        } catch (IOException e) {
            try {
                e.printStackTrace(new PrintStream(journal.toString()));
            } catch (FileNotFoundException ex) {
                ex.printStackTrace();
            }
        }
        String [][]str=getUser(fileReader);

        System.out.println("登陆界面");
//        存储文件存在且为空
        if (Administrator.adminnistratorfile.exists()&&Administrator.adminnistratorfile.length()==0){
            System.out.println("尚未注册用户");
            return false;
        }
        do {
            System.out.print("请输入用户名:");
            administrator.setAdministratorName(scanner.next());
            System.out.print("请输入密码:");
            administrator.setAdministratorPassword(scanner.next());

            for (int i=0;i

2,读者模块

读者模块包括添加,查询,修改三个功能

//    添加
    public void readerInformationAdd(){
        journal.setJournal("读者信息添加");
//        读者
        FileWriter fileWriter= null;
        FileReader fileReader= null;
//        借阅书籍
        FileWriter fileWriter1= null;
        try {
            fileWriter = new FileWriter(ReaderInformation.readerfile,true);
            fileReader = new FileReader(ReaderInformation.readerfile);
            fileWriter1 = new FileWriter(BookLending.readerbookfile,true);
        } catch (IOException e) {
            e.printStackTrace();
        }
        boolean flag=true;
        System.out.println("读者信息添加界面");
        do {
//            1.姓名
            System.out.print("读者姓名:");
            readerInformation.setReaderName(scanner.next());
            while (readerInformation.getReaderName().equals("NULL")){
                System.out.print("非法输入,请重新选择:");
                readerInformation.setReaderName(scanner.next());
            }
//            2.读者类型(一类/二类/三类)
            readerInformation.setReaderType("三类");
//            3.出生
            System.out.print("读者出生年月(yyyy-MM):");
            readerInformation.setReaderBirthday(scanner.next());
            while (!readerInformation.getReaderBirthday().matches(pattern2)){
                System.out.print("非法输入,请重新选择:");
                readerInformation.setReaderBirthday(scanner.next());
            }
//            4.性别
            System.out.print("读者性别:");
            readerInformation.setGender(scanner.next());
            while (!readerInformation.getGender().matches(pattern3)){
                System.out.print("非法输入,请重新选择:");
                readerInformation.setGender(scanner.next());
            }
//            5.电话
            System.out.print("读者电话:");
            readerInformation.setPhone(scanner.next());
            while (!readerInformation.getPhone().matches(pattern4)){
                System.out.print("非法输入,请重新选择:");
                readerInformation.setPhone(scanner.next());
            }
//            6.院系
            System.out.print("读者所在院系(文学院/理工学院/体育学院/医学院/商学院/艺术学院/管理学院/外国语学院/电子信息学院):");
            readerInformation.setDepartment(scanner.next());
            while (!readerInformation.getDepartment().matches(pattern5)){
                System.out.print("非法输入,请重新选择:");
                readerInformation.setDepartment(scanner.next());
            }
//            7.注册时间
            Date date = new Date();
            SimpleDateFormat dateFormat= new SimpleDateFormat("yyyy-MM-dd");
            readerInformation.setRegistrationTime(dateFormat.format(date));
//            8.借阅数量
            readerInformation.setLendingNum("1");
//            9.借阅时间
            readerInformation.setLendingTime("7");
//            文件存在且为空
            if (ReaderInformation.readerfile.exists()&&ReaderInformation.readerfile.length()==0){
                readerInformation.setReaderId("1");
                flag=false;
            }else {
                String [][]str= getUser(fileReader);
                int id=Integer.parseInt(str[str.length-1][0])+1;
                readerInformation.setReaderId(Integer.toString(id));
                for (int i=0;i

3,图书管理模块

图书管理模块包括显示图书信息,添加,查询,修改,删除五个功能

//    打印所有书籍信息
    public boolean booksFindAll(){
        journal.setJournal("书籍信息打印");
        FileReader fileReader= null;
        try {
            fileReader = new FileReader(BookInformation.booksfile);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        if (BookInformation.booksfile.exists()&&BookInformation.booksfile.length()==0){
            System.out.println("还未录入图书信息");
            return false;
        }else {
            String [][]str=getUser(fileReader);
            for (int i=0;i

4,图书借阅模块

图书借阅模块包括借阅和归还两个功能

//    图书借阅
    public void bookLending() {
        journal.setJournal("图书借阅");
//        读者
        if (ReaderInformation.readerfile.exists()&&ReaderInformation.readerfile.length()==0){
            System.out.println("未存入读者信息");
            return;
        }
        FileReader fileReader1= null;
        FileReader fileReader2= null;
        try {
            fileReader1 = new FileReader(ReaderInformation.readerfile);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        String [][]str1=getUser(fileReader1);//读者
        FileWriter fileWriter1= null;
        try {
            fileWriter1 = new FileWriter(ReaderInformation.readerfile);
        } catch (IOException e) {
            e.printStackTrace();
        }
//        书籍
        if (BookInformation.booksfile.exists()&&BookInformation.booksfile.length()==0){
            System.out.println("未存入书籍信息");
            return;
        }
        try {
            fileReader2 = new FileReader(BookInformation.booksfile);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        String [][]str2=getUser(fileReader2);//书籍
        FileWriter fileWriter2= null;
        try {
            fileWriter2 = new FileWriter(BookInformation.booksfile);
        } catch (IOException e) {
            e.printStackTrace();
        }
//        借阅书籍
        FileReader fileReader3= null;
        try {
            fileReader3 = new FileReader(BookLending.readerbookfile);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        String [][]str3=getUser(fileReader3);//借阅
        FileWriter fileWriter3= null;
        try {
            fileWriter3 = new FileWriter(BookLending.readerbookfile);
        } catch (IOException e) {
            e.printStackTrace();
        }
        Date date = new Date();
        String choice, str=null;
        int i=0,j=0,l=0,z=0;
        boolean readerflag=true;
        boolean bookflag=true;
        SimpleDateFormat dateFormat= new SimpleDateFormat("yyyy-MM-dd");
        bookLending.setBookLendingTime(dateFormat.format(date));
        System.out.println("图书借阅界面");
        while (readerflag){
            System.out.println("请输入读者编号");
            choice=scanner.next();
            while (!choice.matches(pattern1)){
                System.out.print("非法输入,请重新输入:");
                choice=scanner.next();
            }
            for (i=0;i0){
                    System.out.println("请缴纳罚金"+days*money+"元");
                }
                break;
            }else if(j==str2[i].length-1){
                System.out.println("未借阅");
                return;
            }
        }
        try {
            for (z=0;z

5,罚金模块

public void forfeit(){
        journal.setJournal("罚金规则查看");
        String choice1;
        FileReader fileReader= null;
        FileWriter fileWriter= null;
        try {
            fileReader = new FileReader(BasicInformation.forfeitfile);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        String str=getUser(fileReader);
        try {
            fileWriter = new FileWriter(BasicInformation.forfeitfile);
        } catch (IOException e) {
            e.printStackTrace();
        }
        System.out.println("+-----------------------------------------------------------+");
        System.out.println("|\t\t\t\t\t\t  设 置 界 面  \t\t\t\t\t\t|");
        System.out.println("+-----------------------------------------------------------+");
        System.out.println("逾期的罚金规则为每超过一天罚"+str+"元");
        System.out.print("是否修改?(y/n)");
        choice1=scanner.next();
        while (!choice1.matches(pattern1)){
            System.out.print("非法输入,请重新选择:");
            choice1=scanner.next();
        }
        if (choice1.equals("y")){
            journal.setJournal("罚金规则修改");
            System.out.println("请输入新的惩罚金额");
            basicInformation.setForfeit(scanner.next());
            while (!basicInformation.getForfeit().matches(pattern3)){
                System.out.print("非法输入,请重新选择:");
                basicInformation.setForfeit(scanner.next());
            }
            str=basicInformation.getForfeit();
            try {
                fileWriter.write(str);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        ioDealWith.close(fileWriter,fileReader,journal);
    }

 

三,总结

整个系统的基本功能都得以实现,但就代码而言,整个程序的代码显得比较复杂,还可以对代码进行优化和改进,对IO流的理解和掌握还不够熟练。除此以外这个程序还有很多的不足之处,欢迎各位的指正和建议。

你可能感兴趣的:(java学习笔记——图书馆管理系统(java+IO流))