分析项目结构:概述:本系统借鉴了MVC思想,由Maven构建,使用MyBatis+MySQL进行数据存储与处理,交互界面直接由控制台以字符方式输出
- Data.pojo包下有三个实体类bookInfo、readerInfo、borrowInfo,依次代表图书信息,读者信息,借阅信息
- Data.UI包下mainUI为主菜单,bookInfoUI、readerInfoUI、borrowInfoUI三个类依次实现了交互界面的输出和用户请求的处理,并与数据库进行通信。
- Data.Mapper包为一系列Mapper接口,与SQL映射文件相对应,体现了通过Mapper代理的方式使用MyBatis。
- resource目录下的三个xml文件为SQL映射文件,存储SQL语句,映射到Mapper接口。
使用mapper接口方法bookinfoMapper.bookInfoAdd
private static void bookInfoAdd() throws Exception {
InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession sqlSession = sqlSessionFactory.openSession();
bookinfoMapper bookinfoMapper = sqlSession.getMapper(bookinfoMapper.class);
System.out.println("请输入要添加的图书数量:");
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
bookInfo bookinfo = new bookInfo();
for (int i = 0; i < n; i++) {
System.out.println("请输入书号:");
bookinfo.setId(scanner.nextInt()); scanner.nextLine();
System.out.println("请输入书名:");
bookinfo.setName(scanner.nextLine());
System.out.println("请输入作者:");
bookinfo.setAuthor(scanner.nextLine());
System.out.println("请输入出版社:");
bookinfo.setPress(scanner.nextLine());
System.out.println("请输入出版日期:");
bookinfo.setDate(scanner.nextLine());
System.out.println("请输入存馆数量:");
bookinfo.setNumber(scanner.nextInt());
System.out.println("请输入定价:");
bookinfo.setPrice(scanner.nextDouble());
bookinfoMapper.bookInfoAdd(bookinfo);
sqlSession.commit();
System.out.println("添加成功!");
}
sqlSession.close();
showbookInfo();
}
2.图书信息查询
private static void bookInfoQuery() throws Exception {
InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession sqlSession = sqlSessionFactory.openSession();
bookinfoMapper bookinfoMapper = sqlSession.getMapper(bookinfoMapper.class);
System.out.println("请输入查询对象:");
System.out.println("1.按书名查询");
System.out.println("2.按作者名");
System.out.println("3.按出版社");
Scanner scanner = new Scanner(System.in);
int choose = scanner.nextInt(); scanner.nextLine();
switch (choose){
case 1 -> {
System.out.println("请输入书的名称:");
String name = scanner.nextLine();
List bookinfo = bookinfoMapper.selectByName(name);
for (bookInfo bookInfo : bookinfo) {
System.out.println(bookInfo);
}
sqlSession.close();
showbookInfo();
}
case 2 -> {
System.out.println("请输入作者:");
String author = scanner.nextLine();
List bookinfo = bookinfoMapper.selectByAuthor(author);
for (bookInfo bookInfo : bookinfo) {
System.out.println(bookInfo);
}
sqlSession.close();
showbookInfo();
}
case 3 -> {
System.out.println("请输入出版社:");
String press = scanner.nextLine();
List bookinfo = bookinfoMapper.selectByPress(press);
for (bookInfo bookInfo : bookinfo) {
System.out.println(bookInfo);
}
sqlSession.close();
showbookInfo();
}
}
}
3.图书信息排序
private static void bookInfoSort() throws Exception {
InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession sqlSession = sqlSessionFactory.openSession();
bookinfoMapper bookinfoMapper = sqlSession.getMapper(bookinfoMapper.class);
System.out.println("1.按书号进行升序排序");
System.out.println("2.按书名进行升序排序");
System.out.println("请输入要执行的操作:");
Scanner scanner = new Scanner(System.in);
int choose = scanner.nextInt();
switch (choose){
case 1 -> {
List bookinfo = bookinfoMapper.selectByIdUp();
for (bookInfo bookInfo : bookinfo) {
System.out.println(bookInfo);
}
sqlSession.close();
showbookInfo();
}
case 2 ->{
List bookinfo = bookinfoMapper.selectByNameUp();
for (bookInfo bookInfo : bookinfo) {
System.out.println(bookInfo);
}
sqlSession.close();
showbookInfo();
}
}
}
4.图书信息的修改、删除
private static void bookInfoEdit() throws Exception {
InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession sqlSession = sqlSessionFactory.openSession();
bookinfoMapper bookinfoMapper = sqlSession.getMapper(bookinfoMapper.class);
bookInfo bookinfo = new bookInfo();
System.out.println("1.按书号进行修改");
System.out.println("2.按书名进行修改");
System.out.println("请输入要进行的操作:");
Scanner scanner = new Scanner(System.in);
int choose = scanner.nextInt(); scanner.nextLine();
switch(choose){
case 1 -> {
System.out.println("请输入书号:");
bookinfo.setId(scanner.nextInt()); scanner.nextLine();
System.out.println("请输入书名:");
bookinfo.setName(scanner.nextLine());
System.out.println("请输入作者:");
bookinfo.setAuthor(scanner.nextLine());
System.out.println("请输入出版社:");
bookinfo.setPress(scanner.nextLine());
System.out.println("请输入出版日期:");
bookinfo.setDate(scanner.nextLine());
System.out.println("请输入存馆数量:");
bookinfo.setNumber(scanner.nextInt());
System.out.println("请输入定价:");
bookinfo.setPrice(scanner.nextDouble());
bookinfoMapper.EditById(bookinfo);
sqlSession.commit();
System.out.println("修改成功!");
sqlSession.close();
showbookInfo();
}
case 2 -> {
System.out.println("请输入书名:");
bookinfo.setName(scanner.nextLine());
System.out.println("请输入书号:");
bookinfo.setId(scanner.nextInt()); scanner.nextLine();
System.out.println("请输入作者:");
bookinfo.setAuthor(scanner.nextLine());
System.out.println("请输入出版社:");
bookinfo.setPress(scanner.nextLine());
System.out.println("请输入出版日期:");
bookinfo.setDate(scanner.nextLine());
System.out.println("请输入存馆数量:");
bookinfo.setNumber(scanner.nextInt());
System.out.println("请输入定价:");
bookinfo.setPrice(scanner.nextDouble());
bookinfoMapper.EditByName(bookinfo);
sqlSession.commit();
System.out.println("修改成功!");
sqlSession.close();
showbookInfo();
}
}
}
private static void bookInfoDelete() throws Exception {
InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession sqlSession = sqlSessionFactory.openSession();
bookinfoMapper bookinfoMapper = sqlSession.getMapper(bookinfoMapper.class);
System.out.println("1.按书号删除");
System.out.println("2.按书名删除");
Scanner scanner = new Scanner(System.in);
int choose = scanner.nextInt(); scanner.nextLine();
switch (choose){
case 1 -> {
System.out.println("请输入书号:");
int id = scanner.nextInt();
bookinfoMapper.bookInfoDeleteById(id);
sqlSession.commit();
System.out.println("删除成功");
sqlSession.close();
showbookInfo();
}
case 2 -> {
System.out.println("请输入书名:");
String name = scanner.nextLine();
bookinfoMapper.bookInfoDeleteByName(name);
sqlSession.commit();
System.out.println("删除成功");
sqlSession.close();
showbookInfo();
}
}
}
5.读者信息添加功能
private static void readerInfoAdd() throws Exception {
InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession sqlSession = sqlSessionFactory.openSession();
readerinfoMapper readerinfoMapper = sqlSession.getMapper(readerinfoMapper.class);
readerInfo readerinfo = new readerInfo();
Scanner scanner = new Scanner(System.in);
System.out.println("请输入学号:");
readerinfo.setNum(scanner.nextInt()); scanner.nextLine();
System.out.println("请输入姓名:");
readerinfo.setName(scanner.nextLine());
System.out.println("请输入学院:");
readerinfo.setCollege(scanner.nextLine());
System.out.println("请输入专业班级:");
readerinfo.setMajor_class(scanner.nextLine());
readerinfoMapper.readerInfoAdd(readerinfo);
sqlSession.commit();
System.out.println("添加成功!");
sqlSession.close();
showReaderInfo();
}
6.读者信息查询
private static void readerInfoQuery() throws Exception {
InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession sqlSession = sqlSessionFactory.openSession();
readerinfoMapper readerinfoMapper = sqlSession.getMapper(readerinfoMapper.class);
System.out.println("请输入查询对象:");
System.out.println("1.按学号查询");
System.out.println("2.按姓名查询");
System.out.println("3.按专业班级查询");
Scanner scanner = new Scanner(System.in);
int choose = scanner.nextInt(); scanner.nextLine();
switch (choose){
case 1 -> {
System.out.println("请输入学号:");
int num = scanner.nextInt();
List readerInfos = readerinfoMapper.selectByNum(num);
for(readerInfo readerInfo : readerInfos){
System.out.println(readerInfo);
}
sqlSession.close();
showReaderInfo();
}
case 2 -> {
System.out.println("请输入姓名:");
String name = scanner.nextLine();
List readerInfos = readerinfoMapper.selectByName(name);
for(readerInfo readerInfo : readerInfos){
System.out.println(readerInfo);
}
sqlSession.close();
showReaderInfo();
}
case 3 -> {
System.out.println("请输入专业班级");
String major_class = scanner.nextLine();
List readerInfos = readerinfoMapper.selectByMajor_class(major_class);
for(readerInfo readerInfo : readerInfos){
System.out.println(readerInfo);
}
sqlSession.close();
showReaderInfo();
}
}
}
7.读者信息排序
private static void readerInfoSort() throws Exception {
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession sqlSession = sqlSessionFactory.openSession();
readerinfoMapper readerinfoMapper = sqlSession.getMapper(readerinfoMapper.class);
System.out.println("1.按学号进行升序排序");
System.out.println("2.按学院进行升序排序");
System.out.println("请输入要执行的操作:");
Scanner scanner = new Scanner(System.in);
int choose = scanner.nextInt();
switch (choose){
case 1 ->{
List readerInfos = readerinfoMapper.selectByNumUp();
for(readerInfo readerInfo : readerInfos){
System.out.println(readerInfo);
}
sqlSession.close();
showReaderInfo();
}
case 2 ->{
List readerInfos = readerinfoMapper.selectByCollegeUp();
for(readerInfo readerInfo : readerInfos){
System.out.println(readerInfo);
}
sqlSession.close();
showReaderInfo();
}
}
}
8.读者信息的修改、删除
private static void readerInfoEdit() throws Exception {
InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession sqlSession = sqlSessionFactory.openSession();
readerinfoMapper readerinfoMapper = sqlSession.getMapper(readerinfoMapper.class);
readerInfo readerinfo = new readerInfo();
Scanner scanner = new Scanner(System.in);
System.out.println("请输入学号:");
readerinfo.setNum(scanner.nextInt()); scanner.nextLine();
System.out.println("请输入姓名:");
readerinfo.setName(scanner.nextLine());
System.out.println("请输入学院:");
readerinfo.setCollege(scanner.nextLine());
System.out.println("请输入专业班级:");
readerinfo.setMajor_class(scanner.nextLine());
readerinfoMapper.readerInfoEdit(readerinfo);
sqlSession.commit();
System.out.println("修改成功!");
sqlSession.close();
showReaderInfo();
}
private static void readerInfoDelete() throws Exception {
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession sqlSession = sqlSessionFactory.openSession();
readerinfoMapper readerinfoMapper = sqlSession.getMapper(readerinfoMapper.class);
Scanner scanner = new Scanner(System.in);
System.out.println("请输入学号:");
int num = scanner.nextInt(); scanner.nextLine();
System.out.println("请输入姓名:");
String name = scanner.nextLine();
readerinfoMapper.readerInfoDelete(num,name);
sqlSession.commit();
System.out.println("删除成功");
sqlSession.close();
showReaderInfo();
}
9.图书借阅
private static void borrowBook() throws Exception {
InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession sqlSession = sqlSessionFactory.openSession();
bookinfoMapper bookinfoMapper = sqlSession.getMapper(bookinfoMapper.class);
borrowinfoMapper borrowinfoMapper = sqlSession.getMapper(borrowinfoMapper.class);
readerinfoMapper readerinfoMapper = sqlSession.getMapper(readerinfoMapper.class);
Scanner scanner = new Scanner(System.in);
System.out.println("请输入学号:");
int num = scanner.nextInt();
System.out.println("请输入书号:");
int id = scanner.nextInt();
if(bookinfoMapper.bookNumberQuery(id) > 0){
System.out.println("该书当前数量为" + bookinfoMapper.bookNumberQuery(id) + ",可以借阅");
System.out.println("请输入要借阅的数量:");
int bookNum = scanner.nextInt(); scanner.nextLine();
System.out.println("请输入借阅时长(天):");
String deadline = scanner.nextLine();
String sname = readerinfoMapper.getSname(num);
String bname = bookinfoMapper.getBname(id);
bookinfoMapper.bookNumberDec(id, bookNum);
borrowinfoMapper.borrowInfoAdd(num, id, sname, bname, deadline);
sqlSession.commit();
System.out.println("借阅成功!");
showBorrowInfo();
}else{
System.out.println("该书当前数量为" + bookinfoMapper.bookNumberQuery(id) + ",无法借阅");
showBorrowInfo();
}
}
10.图书归还
private static void returnBook() throws Exception {
InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession sqlSession = sqlSessionFactory.openSession();
bookinfoMapper bookinfoMapper = sqlSession.getMapper(bookinfoMapper.class);
borrowinfoMapper borrowinfoMapper = sqlSession.getMapper(borrowinfoMapper.class);
Scanner scanner = new Scanner(System.in);
System.out.println("请输入学号:");
int num = scanner.nextInt();
System.out.println("请输入书号:");
int id = scanner.nextInt();
System.out.println("请输入要归还的数量:");
int bookNum = scanner.nextInt();
bookinfoMapper.bookNumberInc(id, bookNum);
borrowinfoMapper.returnInfoEdit(num, id);
sqlSession.commit();
System.out.println("归还成功!");
showBorrowInfo();
}
11.图书借阅查询
private static void borrowBookQuery() throws Exception {
InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession sqlSession = sqlSessionFactory.openSession();
borrowinfoMapper borrowinfoMapper = sqlSession.getMapper(borrowinfoMapper.class);
Scanner scanner = new Scanner(System.in);
System.out.println("请输入查询方式:");
System.out.println("1.按学号查询");
System.out.println("2.按书名查询");
System.out.println("3.按学院查询");
int choose = scanner.nextInt(); scanner.nextLine();
switch(choose){
case 1 -> {
System.out.println("请输入学号:");
int num = scanner.nextInt();
List borrowInfos = borrowinfoMapper.selectByNum(num);
for(borrowInfo borrowInfo : borrowInfos){
System.out.println(borrowInfo);
}
sqlSession.close();
showBorrowInfo();
}
case 2 -> {
System.out.println("请输入书名:");
String name = scanner.nextLine();
List borrowInfos = borrowinfoMapper.selectByName(name);
for(borrowInfo borrowInfo : borrowInfos){
System.out.println(borrowInfo);
}
sqlSession.close();
showBorrowInfo();
}
case 3 -> {
System.out.println("请输入学院:");
String college = scanner.nextLine();
List borrowInfos = borrowinfoMapper.selectByCollege(college);
for(borrowInfo borrowInfo : borrowInfos){
System.out.println(borrowInfo);
}
sqlSession.close();
showBorrowInfo();
}
}
}
sqlSession.close();
showBorrowInfo();
}
case 3 -> {
System.out.println("请输入学院:");
String college = scanner.nextLine();
List borrowInfos = borrowinfoMapper.selectByCollege(college);
for(borrowInfo borrowInfo : borrowInfos){
System.out.println(borrowInfo);
}
sqlSession.close();
showBorrowInfo();
}
}
}



