第13章 综合项目-黑马书屋_第1页
第13章 综合项目-黑马书屋_第2页
第13章 综合项目-黑马书屋_第3页
第13章 综合项目-黑马书屋_第4页
第13章 综合项目-黑马书屋_第5页
已阅读5页,还剩95页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第13章综合项目-黑马项目《Java基础案例教程》(第3版)学习目标/Target掌握用户注册的实现,能够根据提供的用户注册FXML文件,实现用户的注册掌握用户登录的实现,能够根据提供的用户登录FXML文件,实现用户的登录掌握项目开发准备,能够基于提供的资料完成项目环境搭建学习目标/Target掌握用户管理的实现,能够根据提供的修改用户信息FXML文件和修改密码FXML文件,实现用户信息的修改掌握登录管理的实现,能够根据提供的菜单栏FXML文件实现退出登录和退出系统两个功能掌握图书管理的实现,能够根据提供的图书信息FXML文件和借阅记录FXML文件,实现图书信息管理和借阅记录两个功能章节概述/

Summary随着计算机的普及和互联网发展,越来越多的管理员将线下服务扩展至线上,其中书店的线上自助借阅、归还和图书管理已成为当下的常见需求。本章将讲解的黑马书屋是一个运用Java相关基础知识开发的书店业务管理系统,通过这个系统可以加深读者对Java基础知识的理解,并了解Java项目的开发流程。目录/Contents0102项目开发准备用户注册03用户登录目录/Contents0405图书管理用户管理06登录管理项目开发准备13.113.1项目开发准备掌握项目开发准备,能够基于提供的资料完成项目环境搭建

先定一个小目标!13.1.1项目概述随着计算机和互联网的发展,书店可以利用应用程序实现图书线上管理,顾客也可以自助进行图书的借阅和归还,从而使得书店管理人员能更加轻松和高效地进行图书管理操作。本章节讲解的黑马书屋是一个基于GUI实现的书店业务管理系统,此系统专为满足书店日常管理及顾客借阅和归还需求而设计。13.1.1项目概述1.系统功能结构13.1.1项目概述2.系统功能预览系统包括管理员和顾客两种角色,每种角色都具有相应的操作权限和功能。其中,图书管理、用户管理、登录管理需要用户登录后才可以操作,图书管理会根据登录用户的角色提供对应操作权限。13.1.1项目概述2.系统功能预览(1)用户登录管理员和顾客进入系统之前,都需要进行登录。本系统中管理员的信息是固定给出的,顾客的信息可以自行进行注册。管理员登录时需要在登录窗口选择角色为管理员。13.1.1项目概述2.系统功能预览(2)图书管理用户登录系统后默认显示图书管理中的图书信息界面,其中管理员角色可以在图书信息界面添加和修改图书信息。13.1.1项目概述2.系统功能预览(2)图书管理顾客角色登录后可以在图书信息界面借阅和归还图书。13.1.1项目概述2.系统功能预览(2)图书管理图书管理的借阅记录界面可以查看图书借阅记录,其中管理员可以查看所有用户的借阅记录,顾客只能查看自己的借阅记录。13.1.1项目概述2.系统功能预览(3)用户管理在用户管理下可以对用户的个人信息和密码进行修改,其中修改密码之前需要输入原始密码进行校验13.1.1项目概述2.系统功能预览(4)登录管理在登录管理中可以退出当前登录和退出系统。13.1.1项目概述2.系统功能预览(5)用户注册在用户登录界面中单击“注册”按钮会跳转到用户注册界面。13.1.2数据库设计黑马书屋中的实体主要包含用户、图书、借阅记录,对此可以在数据库中创建对应的表存储对应的实体信息。结合系统描述中的信息设计用户表、图书信息表和借阅记录表的表结构。13.1.2数据库设计(1)用户表结构表名(中文)表名(英文)用户表user字段名类型长度是否主键说明idint0是用户编号namevarchar32否用户名称passwordvarchar32否用户密码rolevarchar32否用户角色:管理员,顾客13.1.2数据库设计(2)图书表结构表名(中文)表名(英文)图书表book字段名类型长度是否主键说明idint0是图书编号booknamevarchar32否图书名称authorvarchar32否图书作者statevarchar32否图书状态:可借阅,借阅中,已下架desvarchar255否图书简介borrowervarchar32否图书借阅人borrowtimedatetime0否图书借阅时间13.1.2数据库设计(2)借阅记录表结构表名(中文)表名(英文)借阅记录表record字段名类型长度是否主键说明idint0是借阅记录编号booknamevarchar32否借阅的图书名称borrowervarchar32否图书借阅人borrowtimevarchar32否图书借阅时间remandtimedatetime0否图书归还时间13.1.3项目环境搭建在正式开发功能模块之前,需要先进行项目环境的搭建。本系统的项目环境搭建包括确定项目开发环境、数据库配置、配置文件设置等操作。13.1.3项目环境搭建1.确定项目开发环境操作系统:Windows7及以上版本。Java开发包:JDK17。数据库:MySQL8.0。开发工具:IntelliJIDEACommunityEdition2023.2.1。13.1.3项目环境搭建2.创建数据库和表在MySQL数据库中创建一个名称为bookstore的数据库,并根据设计的数据表结构在bookstore数据库中创建相应的数据表。读者也可以在本书提供的配套资源中获取对应的sql文件创建数据表,并往数据表中插入测试数据。13.1.3项目环境搭建3.创建项目为了提高程序的可维护性、可扩展性和代码结构的清晰性,本项目将每个功能模块划分为表现层、业务逻辑层和数据访问层三部分进行开发。表现层:表现层主要负责与用户进行交互的界面,包括接收用户输入的数据和展示处理后的数据。业务逻辑层:业务逻辑层主要处理用户交互等业务逻辑,它作为表现层和数据访问层之间的桥梁。数据访问层:数据访问层主要负责与数据库进行交互,数据访问层根据业务逻辑层发送过来的请求,操作数据库中的数据,并将操作数据库的结果返回到业务逻辑层,实现对数据的增删改查操作。13.1.3项目环境搭建3.创建项目为了更好地管理项目的代码,除了表现层、业务逻辑层和数据访问层,通常还需要建立实体类和工具类。实体类用于表示业务模型和数据对象,工具类则用于封装一些通用的功能和操作。在IDEA中创建一个名称为bookstore的项目,在项目中创建com.itheima.domain包用于存放项目的实体类,创建com.itheima.utils包用于存放项目的工具类。13.1.3项目环境搭建4.添加JAR包在项目的根目录下创建一个名称为lib的文件夹,用于存放项目中所需的JAR包。黑马书屋使用JavaFX设计应用的图形界面,并将应用的数据存储在数据库中,对此程序中需要JavaFX、MySQL驱动、数据库连接等相关JAR包依赖。将项目所需JAR包放入lib文件夹后,选中lib文件夹右击选择“AddasLibrary……”将该文件夹内的JAR包应用到项目中。13.1.3项目环境搭建5.导入资源本书提供的资源中包含了黑马书屋的图形界面对应的FXML文件、实体类、工具类、perties配置文件等资源,读者只需将这些资源导入到bookstore项目对应的包下即可。用户注册13.213.2用户注册掌握用户注册的实现,能够根据提供的用户注册FXML文件,实现顾客的注册

先定一个小目标!13.2用户注册用户注册需要实现返回登录界面和用户注册两个功能。用户注册的本质是将顾客填写的注册信息保存到数据库中,但在提交用户注册信息之前,为了确保信息的完整性和安全性需要对填写的内容进行校验。13.2用户注册1.创建用户注册Controller类在com.itheima.controller包下创建RegisterController类,并在该类中定义与register.fxml文件绑定的组件和事件处理方法。2.创建用户数据访问类用户注册时用户名是唯一的,对此在注册时需要先查询数据库中是否存在对应的用户名。在com.itheima.dao包下创建用户数据访问类UserDao,在该类中定义根据用户名查询用户信息的方法和注册用户的方法。13.2用户注册3.实现用户注册输入信息校验为了确保提交的用户注册数据符合程序中的规则,需要在提交前对数据进行校验。在RegisterController类中定义initFrame()方法,对用户注册的相关组件进行监听和校验。4.实现用户注册用户在注册界面单击“注册”按钮后,会执行该组件上绑定的toRegister()方法。在RegisterController类中定义toRegister()方法实现用户注册。13.2用户注册5.实现返回用户登录界面在com.itheima.controller包下创建LoginController类,并在该类中定义与login.fxml文件绑定的组件和事件处理方法。返回用户登录界面,只需关闭用户注册界面并展示用户登录界面接口,无需额外事件绑定。在RegisterController类的toLoginPage()方法内使用PaneUtils工具类加载并初始化用户登录界面。13.2用户注册6.创建程序启动类在com.itheima包下创建BookStoreApp类,使用该类继承Application类,并在重写的start()方法中加载register.fxml文件。接着在com.itheima包下创建一个主程序类MainApp,在该类的main()方法中启动JavaFX程序。13.2用户注册7.测试用户注册功能运行文件MainApp.java,效果如下图所示。13.2用户注册7.测试用户注册功能在用户注册界面依次单击所有输入框但不输入任何内容,触发所有文本框的失去焦点事件,效果如右图所示。13.2用户注册7.测试用户注册功能在用户注册界面中输入符合要求用户信息,例如用户名为王五,密码为123,手机号效果如右图所示。13.2用户注册7.测试用户注册功能单击“注册”按钮,效果如右图所示。13.2用户注册7.测试用户注册功能单击消息提示框的“确定”按钮后,单击“返回登录”按钮,效果如右图所示。至此,用户注册界面的功能已全部完成。用户登录13.313.3用户登录掌握用户登录的实现,能够根据提供的用户登录FXML文件,实现用户的登录

先定一个小目标!13.3用户登录为了防止系统信息泄漏,在使用登录功能之外的其他功能之前,管理员和顾客都需要进行登录验证。当管理员或顾客进行登录时,系统要求输入账号、密码和角色信息,并与数据库中的记录进行比对,若匹配成功,则登录成功;否则,登录失败。13.3用户登录1.修改用户登录初始化方法展示用户登录界面时,其中的角色下拉框中并没有任何选项,这是因为当前LoginController的初始化方法initFrame()中并未做任何操作,对此需要在该方法内添加初始化的角色数据,具体代码如下。2.定义用户登录方法在UserDao类中定义用户登录的方法,用于根据传入的用户信息查询数据库中对应的用户信息,具体如下所示。13.3用户登录3.实现跳转至用户注册界面用户在用户登录界面单击“注册”按钮后,会执行该组件上绑定的toRegisterPage()方法。对此需要在toRegisterPage()方法中实现关闭用户登录界面时打开用户注册界面。在LoginController类的toRegisterPage()实现跳转至用户注册界面,具体如下所示。4.实现用户登录用户在用户登录界面单击“登录”按钮后,会执行该组件上绑定的toLogin()方法。在LoginController类的toLogin()方法内实现用户登录,具体代码如下。13.3用户登录5.测试用户登录功能当前程序启动时,默认会加载用户注册的界面,但是通常会将用户登录界面作为程序的初始界面,对此在BookStoreAPP类的start()方法内修改程序启动加载的FXML文件,修改为程序启动时加载用户登录界面。13.3用户登录5.测试用户登录功能运行文件BookStoreApp.java,效果如下图所示。13.3用户登录5.测试用户登录功能在用户登录界面中不输入用户名和密码,直接单击“登录”按钮,效果如右图所示。13.3用户登录5.测试用户登录功能在用户登录界面的输入框中输入注册成功的用户信息后,单击“登录”按钮,效果如右图所示。13.3用户登录5.测试用户登录功能在用户登录界面中单击“注册”按钮,效果如右图所示。图书管理13.413.4.1图书信息掌握图书管理的实现,能够根据提供的图书信息FXML文件文件,实现图书信息的管理

先定一个小目标!13.4.1图书信息图书信息用于查询和修改图书的相关信息,对于不同的用户角色,系统提供了不同的操作权限。为此,在初始化界面时,需要根据登录用户的角色,动态加载不同的组件,以提供相应的操作功能。13.4.1图书信息管理员角色和顾客角色访问图书信息界面时都主要包含三个面板。(1)管理员图书查询面板:主要包含一个下拉框、一个文本框、一个按钮,下拉框用于选择需要查询的图书的状态,包含可借阅、借阅中、已下架三种选项;单击“查询”按钮时,根据下拉框选中的图书状态,以及文本框中输入的图书名称在数据库中查询包含该图书名称的图书信息。图书列表面板:用于展示图书查询的结果,如果查询的图书的状态为借阅中,则需要在表格中新增一列用于显示当前的借阅者。图书添加\修改面板:用于输入和选择需要添加或修改的图书信息,其中修改图书时,只能对查询到图书列表中的图书信息进行修改,当选中图书列表中的某行图书信息时,会自动填充这些信息到面板对应的输入框和下拉框中。13.4.1图书信息(2)顾客图书查询面板:与管理员展示的图书查询面板组件和功能一致,不同的是顾客角色查询时,图书状态下拉框中不包含已下架的选择,只有可借阅和借阅中。图书列表面板:同管理员角色一样,用于展示图书查询的结果。图书借阅\归还面板:用于对可借阅的图书进行借阅,以及对本人已借阅的图书进行归还。图书借阅和归还都需要先进行图书查询,选择图书列表中的图书信息后,会将该图书的信息填充到面板对应的输入框和下拉框中,确认无误后再进行借阅或归还。13.4.1图书信息创建菜单栏Controller为了实现从菜单栏进入图书管理等其他功能,需要创建与菜单栏FXML文件对应的Controller。在com.itheima.controller包下创建MenuBarController类,并在该类中定义与menubar.fxml文件绑定的组件和事件处理方法。2.创建图书信息Controller类在com.itheima.controller包下创建BookController类,并在该类中定义与bookManage.fxml文件绑定的组件和事件处理方法。13.4.1图书信息3.创建图书数据访问类在com.itheima.dao包下创建BookDao类,用于对图书进行查询、添加、修改操作。4.实现图书查询将图书查询的逻辑抽取到一个独立的方法中,以实现代码的复用。在BookController.java中定义toSeach()方法,用于具体根据当前登录用户的角色和指定条件,进行图书信息查询。并在界面初始化方法和查询图书方法中调用toSeach()方法,实现不同场景时的图书查询。13.4.1图书信息5.实现图书添加图书添加只需将图书添加\修改面板中的图书信息传递到图书数据访问层保存即可,在BookController类的addBook()方法中实现图书添加。6.实现图书修改在BookController类的editBook()方法中实现图书修改。13.4.1图书信息7.实现图书借阅图书借阅只需将可借阅的图书信息修改其状态、借阅人和借阅时间,并保存在数据库中即可。在BookController类的lendBook()方法中实现图书借阅。8.实现图书归还(1)图书归还需要将图书状态修改回可借阅,借阅人和借阅时间为null,并在归还成功后添加借阅记录。在com.ithiem.dao包下创建图书借阅数据访问类RecordDao,在该类中定义addRecord()方法用于添加图书借阅记录的方法。(2)在BookController类的returnBook()方法中实现图书归还。13.4.1图书信息9.测试图书信息功能为了实现用户登录成功默认展示图书信息的界面,可以在LoginController类的toLogin()方法中将登录成功的信息提示框替换为查询图书信息的代码。13.4.1图书信息9.测试图书信息功能(1)管理员角色相关功能测试运行MainApp.java文件后,使用管理员“黑马”登录系统,登录后的效果如右图所示。13.4.1图书信息9.测试图书信息功能(1)管理员角色相关功能测试在图书添加\修改面板中输入需要添加的图书信息,例如添加书名为“石头记”,作者为“曹雪芹”,简介为“展现了封建社会的种种虚伪和罪恶的古典长篇小说”,然后单击“添加”按钮,效果如右图所示。13.4.1图书信息9.测试图书信息功能(1)管理员角色相关功能测试单击“确定”按钮后,将图书查询下拉框的状态选中为借阅中,然后单击“查询”按钮,查询所有借阅中的图书信息,效果如右图所示。13.4.1图书信息9.测试图书信息功能(1)管理员角色相关功能测试下面测试图书修改的效果,首先演示修改状态为借阅中的图书信息,以修改图书“边城”为例,先选中图书列表中的“边城”图书信息,效果右图所示。13.4.1图书信息9.测试图书信息功能(1)管理员角色相关功能测试下面修改借阅中的图书信息,以修改图书“石头记”为例,选中列表中的“石头记”后,将书名修改为“红楼梦”,简介修改为“以爱情悲剧为主线,揭示封建社会的种种弊病”,修改后单击“修改”按钮,效果如右图所示。13.4.1图书信息9.测试图书信息功能(2)顾客角色相关功能测试运行MainApp类后,使用顾客“张三”登录系统,登录后效果如右图所示。13.4.1图书信息9.测试图书信息功能(2)顾客角色相关功能测试对可借阅的图书进行借阅,例如借阅图书“红楼梦”,在图书列表中单击选中书名为红楼梦的图书信息,效果如右图所示。13.4.1图书信息9.测试图书信息功能(2)顾客角色相关功能测试确认需要借阅的图书信息无误后,单击“借阅”按钮,效果如右图所示。13.4.1图书信息9.测试图书信息功能(2)顾客角色相关功能测试单击“确定”按钮后,在图书查询下拉框中选中“借阅中”的选项后,单击“查询”按钮,查询张三借阅中的图书信息,效果如右图所示。13.4.1图书信息9.测试图书信息功能(2)顾客角色相关功能测试顾客可以将自己借阅中的图书进行归还,以归还围城为例,单击选择图书列表中书名为围城的图书信息后,单击“归还”按钮,效果如右图所示。13.4.1图书信息9.测试图书信息功能(2)顾客角色相关功能测试再次查询可借阅的图书信息,效果如右图所示。至此,图书信息界面的功能已全部完成。13.4.2借阅记录掌握借阅记录的实现,能够根据提供的借阅记录FXML文件,实现借阅记录功能

先定一个小目标!13.4.2借阅记录借阅记录指的是从借阅到归还的完整借阅信息。借阅记录功能由新增借阅记录和查询借阅记录两个部分组成。新增借阅记录会在顾客成功归还图书时在数据库新增;查询借阅记录指根据指定条件查询数据库中借阅记录的功能。13.4.2借阅记录1.创建借阅记录Controller类在com.itheima.controller包下创建RecordController类,并在该类中定义与record.fxml文件绑定的组件和事件处理方法。由于借阅记录只有查询功能,对此界面初始化时需要自动查询借阅记录,可以直接调用界面初始化方法。2.定义查询借阅记录方法在RecordDao类中定义查询借阅记录的方法,用于根据传入图书名称和用户信息查询对应的图书借阅记录。13.4.2借阅记录3.实现借阅记录功能(1)在RecordController类的initFrame()方法中实现借阅记录的功能。(2)在MenuBarController类的showRecords()方法中指定加载借阅记录对应的FXML文件,并初始化借阅记录界面,以实现单击“借阅记录”菜单项时关闭当前窗口中的界面,并打开初始化后的借阅记录界面。13.4.2借阅记录4.测试借阅记录功能运行MainApp类后,使用管理员“黑马”登录系统,登录后在菜单栏中依次单击“图书管理”→“借阅记录”,效果如右图所示。13.4.2借阅记录4.测试借阅记录功能下面测试指定书名查询借阅记录的效果,例如在图书借阅记录页面的文本框中输入“Java”后,单击“查询”按钮,效果如右图所示。至此,借阅记录界面的全部功能已经完成。13.4.2借阅记录4.测试借阅记录功能下面接着演示顾客角色查询借阅记录的效果。重新运行MainApp类后,使用管理员“张三”登录系统,登录后在菜单栏中依次单击“图书管理”→“借阅记录”,效果如右图所示。用户管理13.513.5.1修改用户信息掌握用户管理的实现,能够根据提供的修改用户信息FXML文件实现用户信息的修改

先定一个小目标!13.5.1修改用户信息用户修改信息后,需要立即对修改的信息进行校验。为了实现这一功能,可以监听需要校验的文本内容,在单击“修改”按钮时,再次对当前个人信息进行校验。只有当符合要求时,才将这些信息更新到数据库中。13.5.1修改用户信息1.创建修改用户注册Controller类在com.itheima.controller包下创建UserInfoController类,在该类中定义与editUserInfo.fxml文件绑定的组件和事件处理方法。2.定义修改用户信息方法在UserDao类中定义方法用于修改用户信息。13.5.1修改用户信息3.实现界面内容初始化在UserInfoController类的initFrame()方法中实现修改用户信息界面内容的初始化,在界面初始化时将当前用户的手机号设置为手机号文本框中的文本,并为手机号文本框绑定失去焦点事件。4.实现修改用户信息(1)在UserInfoController类的editUserInfo()方法中实现修改用户信息,修改之前先对用户信息进行校验。(2)在MenuBarController类的editUserInfo()方法中指定加载修改用户信息对应的FXML文件,并初始化修改用户信息界面,以实现单击“用户管理”菜单下的“修改用户信息”菜单项时关闭当前窗口中的界面,并打开初始化后的修改用户信息界面。13.5.1修改用户信息5.测试修改用户信息运行MainApp类后,使用顾客“王五”登录系统,登录后在菜单栏中依次单击“用户管理”→“修改用户信息”,效果如右图所示。13.5.1修改用户信息5.测试修改用户信息如果将手机号修改为不符合手机号规则的内容后并将鼠标单击性别单选框,此时会触发失去焦点事件,效果如右图所示。13.5.1修改用户信息5.测试修改用户信息将用户信息的性别修改为“女”后,单击“修改”按钮。至此,修改用户信息界面全部功能完成。13.5.2修改密码掌握修改密码的实现,能够根据提供的修改密码FXML文件,实现用户密码的修改

先定一个小目标!13.5.2修改密码1.创建修改密码Controller类在com.itheima.controller包下创建PswController类,在该类中定义与editPsw.fxml

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论