作品页面大致介绍:
登录页面:
账号、密码、是否同意登录协议。
用户注册页面:
字段:姓名、性别、账号、密码、电话等
注册按钮
是否同意注册协议
管理员统计页面:
功能:增加、删除、修改、查找(根据姓名或者id)
图书页面
用户:查找(根据图书的名字或者书的id)
管理员:增加、删除、修改、查找(根据书名或者书的id)
借阅记录页面:
字段:b_id(书的编号)、书名、借阅人姓名、借阅人电话、书本状态等
运行后,第一个是登录页面,除了登录按钮上面还会有注册按钮,当用户第一次使用时可以先进行注册;
注册登录后,用户填写个人信息后进行借阅书籍,也可以查看自己借阅书籍的借阅记录;管理员登录后,可以查看其他管理员的账号,并且可以对图书以及借阅记录进行增删改查
注意的地方:
1、注册的账号需要保持唯一性
2、jdbc连接失败可能是:mysql断开了;需要重新导入jar包
集中步骤:
页面跳转:
登录——>注册 登录——>library 登录——>图书管理 library——>个人借书记录 图书管理——>总借书记录
一.实现各个页面之间的跳转, 连接jdbc
- 公共部分:
- 页面之间互相跳转,写在最开始那个页面的类中:
regist:点击的按钮的fx:id Register.fxml是将要跳转到的页面
二、能获取到页面文本框中输入的内容,有条件性的实现登录
- 判断数据库中是否有这组数据
- 判断账号密码是否相等以及是否签订登录协议来满足登录条件并实现页面跳转,注册同理
三、能够将注册页面中输入的信息导入到数据库中、单选按钮唯一性
- 先设置一个方法用sql语句来实现插入操作(将文本框中的内容插入到数据库中)、
- 在自行输入注册的账号和密码时,先判定该账号是否被是注册过,如果没有的话,获取页面文本框中的内容,作为insert方法的参数;结合上面的insert方法的功能将内容插入到数据库中
四、将从数据库中筛选出来的内容分类呈现到书库的页面中去
- 首先创建一个带参数的方法,通过sql语句查询经查询到的数据库中的信息存入到data中,然后再while循环中将data中每个属性(b_id、b_name...)赋值,然后将这些属性与页面中的列绑定起来
- 但要实现点击指定按钮筛选出不同类型的书籍,就要设定一个状态变量state,让其初始为0;然后在分类的类中,通过不同按钮所对应的类中设置不同的state值
这只是其中两种类型的,其他的同理
- 然后回到原来的类中的一个初始化方法(因为实现的是最开始图书馆的页面中就已经有书籍了),然后根据不同的state值来给adddate方法传不同的参数来从数据库中选出对应类型的书籍并渲染到页面列表中
五、各项功能(增删改查)
-
查询
- 首先声明一个方法,通过sql语句查询同时满足书名、作者和类型的书籍然后将其存到一个集合里,并将其返回
- 在搜索按钮的点击事件中,先声明一个集合,根据state来判断点击的是哪个类型书籍的按钮,然后点用上面的方法,传入三个参数:搜索时输入的书名、搜索时输入的作者、以及这个状态时的书籍类型;
- 将查询到的数据存入上面声明的集合中
- 将之前的页面清除,把新查询到的数据插入表格中
- 最后显示表格,就实现了我们想要的效果
2.增、删、改
- 可以创建一个booksql类,用来专门存储关于书籍增删改的sql语句;创建对应的方法来实现相应的功能
- 然后分别创建增删改各自的类,在里面创建方法;可以先分别再画一个页面来存储要 增删改的内容,所以涉及到页面的跳转:由图书管理页面---->增删改重绘的小页面 小页面------>图书管理页面(实现功能后,要跳转回来)
- 在各自的类里创建方法:
这三个功能实现的方法基本一致
3.实现用户的借阅功能
- 通过点击功能获取到要借书的书名和作者、用Java的函数来获取到当前时间、默认书本状态是“未归还”
- 将新借阅的记录存入数据库中
- 要将每个用户的借阅记录从总的借阅记录库中筛选出来
- 借阅哪本书后,该书的剩余量减一,借出次数加一
4.归还图书的功能
- 点击这行数据,再点击归还
- 先检查这本书的状态是什么,然后将个人借书记录中的“未归还”改为“已归还”;
- 书的剩余数量加一
5.查找某本书借阅记录的功能
- 利用sql语句通过书本的名称和作者将书本查出来,存到一个集合中并返回
- 将原来页面上的数据清空,然后将刚才存入数据的集合放入页面中并显示出来
组长检查后出现的问题:
1、未能通过模糊查询来实现书本和借阅记录的搜索功能
- 通过修改搜索功能处的sql语句,使用模糊查询,将%写在合适的位置
2、信息变动地方:打开页面时将原本的信息显示出来并进行想要实现的修改
- 通过点击某一行来获取该行书本的信息,并实现页面的跳转
- 更改页面初始化时就将刚获取到的信息填入页面中
- 然后更改某个数据后,再调用更改数据库信息的bookchange方法将数据库中的信息更改
3、信息变动为空时会报错
- 限定当这些空都不为空时(用!字段.getText().isEmpty()),进行更改;为空时则弹出一个页面进行提示
4、借书时没有实现借了同一本书好几次,归还一次只还一本书
- 原本借阅记录的表没有主键,后将主键加上
- 原本归还按钮在图书馆的页面中写的,后来将它调整为在借阅记录页面显示,然后当点击归还按钮时,获得其主键的数据
- 将主键作为参数,将归还后需要改变的数据进行更改
5、价格、剩余量等数据类型为整形的字段,限制一下,如果输入字符串就提醒重新输入
- 使用这个语句来判定输入框中的内容是否是整形
6、书本的类型要限定(添加、修改的时候)
- 加个if语句判定一下
7、更改时书本的编号可以显示但不能被修改
- 在初始化方法中加入:文本框名.setEditable(false);
8、添加、修改书本信息时注意不能使两本书的作者和书名都相同
- 写一个sql语句来查询数据库中是否有这组信息
- 然后用一个Boolean类型的数据接收,根据这个数据的true或false来决定实现怎样的功能。
9、书本的剩余数量不能小于零
- 限定一下,如果图书馆中还有这本书则可以实现借阅功能;如果这本书已经没有了,则弹出一个窗口进行提醒
10、个人借阅时要把价钱也渲染到页面上,并且算出目前所有未归还的书的总价钱
- 使用sql语句通过books表和record表中都有书名而联系起来,然后通过record表中的书名查询此书的在books表中的价格,并且把价格也渲染到页面上
- 然后通过sql中的sum函数将未归还书(通过group by分类)的总价钱算出来并且通过写到初始化方法中渲染到页面上
11、注册不能为空
- 限定文本框中的内容不能为空,否则跳出一个页面进行提醒
12、加个按钮,当搜索不到时,实现初始化
- 在页面中添加一个复原的按钮,然后设定这个按钮的onAction属性,对应的类中会出现对应的方法,在该方法中调用初始化函数
基础知识点:
- MySQL限定某个字段自增的语句:id INT(6) NOT NULL PRIMARY KEY AUTO_INCREMENT,
- 获取文本框的内容:先用fx:id给文本框命名,然后用id.getText()来获取
- Javafx限定输入框中只能是整形:Price.getText().matches("\\d*")
- 当同一个实体类中需要有两个类型和个数相同的构造方法,可以进行将数据的顺序调换一下,使用不同的参数顺序