1-图书管理系统(环境部署)

热帖

所有用到的资料在文章末尾获取!!!

一、IntelliJ IDEA软件的安装

IDEA 2024.3 最新破解版安装教程(附激活码,至2099年~)-软技收集(这个是IntelliJ IDEA安装教程)

二、JDK安装

1.下载jdk的安装包

这里我提供了一个 jdk-8u421-windows-x64.exe

image

①双击打开,点击下一步

PixPin 2024 12 08 22 57 56

②选着你需要安装到的位置

这里我就默认C盘,当然你也可以选择其他地方

PixPin 2024 12 08 22 59 19

③等待一会弹出安装目标文件夹窗口

继续点击下一步,这里我就默认C盘,当然你也可以选择其他地方

PixPin 2024 12 08 23 00 44

④到这里jdk的安装就完成了

但是没有配置环境变量,依旧不能使用

PixPin 2024 12 08 23 02 06

⑤JDK环境变量配置

1.1右键此电脑,选择属性

PixPin 2024 12 08 23 04 20

1.2向下滑动找到高级系统设置

PixPin 2024 12 08 23 05 28

1.3选择环境变量

PixPin 2024 12 08 23 07 25

1.4添加系统环境变量(JAVA_HOME

【变量名】为:JAVA_HOME

【变量值】为:C:\Program Files\Java\jre1.8.0_421

注:此处填写你自己的jdk安装路径

最后点击【确定】

PixPin 2024 12 08 23 10 47

1.5添加系统环境变量(CLASSPATH

【变量名】为:CLASSPATH

【变量值】为:%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar

最后点击【确定】

PixPin 2024 12 08 23 14 16

1.6系统环境变量里面的Path新添加一条记录值

新增一行记录,填入的值为:%JAVA_HOME%\bin

然后点击【确定】

PixPin 2024 12 08 23 16 23

1.7添加的记录

最后一定要点确定,不然所有的都白费了

PixPin 2024 12 08 23 20 59

1.8验证JDK是否部署成功

使用快捷键【win+R】,输入cmd,点击【确定】

PixPin 2024 12 08 23 23 23

输入【java -version】,命令窗口打印jdk信息则安装成功。

PixPin 2024 12 08 23 24 44

三、项目搭建

①打开IntelliJ IDEA

新建一个项目(New Project)

PixPin 2024 12 08 23 44 07

PixPin 2024 12 08 23 46 48

②复制文件到刚刚创建的项目

PixPin 2024 12 08 23 49 42

大概是这样的结构

PixPin 2024 12 08 23 50 50

③jar驱动添加为库

PixPin 2024 12 08 23 52 55

PixPin 2024 12 08 23 54 02

这里IntelliJ IDEA的环境就搭建好了

四、MySQL数据库搭建

Windows MySQL 5.7.44 解压版安装教程及报错处理-软技收集(这个是MySQL数据库安装教程)(最好是卸载你原来的重新安装

MySQL 命令大全 | 菜鸟教程

卸载MySQL

如果你想卸载MySQL,也很简单。

使用管理员运行cmd,打开黑框。

敲入net stop mysql,回车。

image

再敲入mysqld -remove mysql,回车。

image

最后删除MySQL目录及相关的环境变量。

至此,MySQL卸载完成!

按照上面搭建好数据库,并导入data文件

4.1停止数据库服务

使用命令或则服务

# 启动MySQL服务
net start mysql

# 检查MySQL服务状态
sc query mysql

# 关闭MySQL服务
net stop mysql

PixPin 2024 12 09 00 11 42

确保MySQL服务是关闭状态

4.2导入data

PixPin 2024 12 09 00 23 33

PixPin 2024 12 09 00 26 22

没有这个解压软件的到这里下载

PC-64-Bandizip v7.36 激活版(解压缩软件)-软技收集

4.3然后启动MySQL服务

启动MySQL服务

net start mysql

4.4打开Navicat Premium连接好本地的数据库

没有的去这里下载

PC-02-Navicat Premium(数据库管理) v17.1.11 绿色版-软技收集

PixPin 2024 12 09 00 30 48

PixPin 2024 12 09 00 32 17

4.5以下为导入后的数据展示

book

PixPin 2024 12 09 00 33 09

borrow

PixPin 2024 12 09 00 34 10

reader

PixPin 2024 12 09 00 34 51

user

PixPin 2024 12 09 00 35 20

到此数据库的部署也完成了,现在可以去IntelliJ IDEA修改一个地方,然后运行项目

五、项目的运行

①打开项目的src-》data-》BaseDao

PixPin 2024 12 09 01 37 46

②打开中文是乱码

是我们的编码格式设置为UTF-8而项目是GBK格式

改一下就好

PixPin 2024 12 09 01 46 46

PixPin 2024 12 09 01 38 25

PixPin 2024 12 09 01 38 49

PixPin 2024 12 09 01 43 54

或者修改整个项目的编码格式

PixPin 2024 12 09 01 49 05

PixPin 2024 12 09 01 53 10

PixPin 2024 12 09 01 53 48

PixPin 2024 12 09 01 54 27

PixPin 2024 12 09 01 59 56

③修改url和dbPwd

PixPin 2024 12 09 02 01 14

改成我们自己的

protected static String url = "jdbc:mysql://localhost:3306/db_09";// 定义要使用的数据库资源
protected static String dbPwd = "123";// 定义连接数据库的密码

PixPin 2024 12 09 02 03 20

④运行Login登录界面

PixPin 2024 12 09 02 05 07

PixPin 2024 12 09 02 06 12

⑤运行成功

PixPin 2024 12 09 02 06 41

⑥登录密码

用户名:admin

密码:admin

用户名:user

密码:user

PixPin 2024 12 09 02 07 37

注:

项目运行后里面内容是乱码

编码格式问题已解决

PixPin 2024 12 09 10 47 26

六、编码格式问题解决思路

下面是研究过程

image

大概的方法是修改src-》data中的代码

其中的ChangeString删除,这个主要负责

类功能:用于字符编码的相互转换。

/**
 * 静态成员方法1:用于将字符集为“ISO8859_1”的字符串,转换为字符集为"GBK"的字符串。 转出:
 * 数据表(ISO8859_1或Latin1)→程序(GBK)
 */

image

例如BookDao

image

改为,将代码中的

book.setId(ChangeString.ISOToGBK(rs.getString(“id”)));

改为

book.setId(rs.getString(“id”));

修改后的代码移除了编码转换(ISO 转 GBK)部分,直接将数据库中获取的原始字符串赋值给 book 的 ID 属性。

image

七、中文乱码解决方法

修改src-》data中每个代码

1.ReaderDao.java

此处只粘贴要修改的代码

//为原来的,//下面的为修改后

	/** 成员方法1:通过读者编号,获取一个读者对象 */
	public static Reader getReaderById(String id) {
		Reader reader = null;
		if (id != null) {
			// 构造按照读者编号查询读者的sql查询语句
			String sql = "select * from reader where id='" + id + "'";
			ResultSet rs = BaseDao.executeQuery(sql);// 执行查询语句,并返回结果集
			try {
				if (rs.next()) {// 下移结果集指针,判断记录是否存在?
					reader = new Reader();// 创建读者对象,并保存读者信息
//					reader.setId(ChangeString.ISOToGBK(rs.getString("id")));
					reader.setId(rs.getString("id"));
//				reader.setName(ChangeString.ISOToGBK(rs.getString("name")));
					reader.setName(rs.getString("name"));
//				reader.setType(ChangeString.ISOToGBK(rs.getString("type")));
					reader.setType(rs.getString("type"));
//				reader.setSex(ChangeString.ISOToGBK(rs.getString("sex")));
					reader.setSex(rs.getString("sex"));
					reader.setMax_num(rs.getInt("max_num"));
					reader.setDays_num(rs.getInt("days_num"));
				}
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		return reader;// 返回读者对象
	}

	/** 成员方法2:通过sql查询语句,获取读者对象列表 */
	public static List<Reader> selectReaderList(String sql) {
		List<Reader> list = new ArrayList<Reader>(); // 创建一个保存读者对象的列表
		if (sql != null) {
			Reader reader = null;
			ResultSet rs = BaseDao.executeQuery(sql);// 执行查询语句,并返回结果集
			try {
				while (rs.next()) {// 下移结果集指针,判断记录是否存在?
					reader = new Reader(); // 创建读者对象,保存读者信息
//					reader.setId(ChangeString.ISOToGBK(rs.getString("id")));
					reader.setId(rs.getString("id"));
//				reader.setName(ChangeString.ISOToGBK(rs.getString("name")));
					reader.setName(rs.getString("name"));
//				reader.setType(ChangeString.ISOToGBK(rs.getString("type")));
					reader.setType(rs.getString("type"));
//				reader.setSex(ChangeString.ISOToGBK(rs.getString("sex")));
					reader.setSex(rs.getString("sex"));
					reader.setMax_num(rs.getInt("max_num"));
					reader.setDays_num(rs.getInt("days_num"));
					list.add(reader);// 向读者列表添加读者对象
				}
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
		return list;// 返回读者列表
	}

2.BookDao.java

此处只粘贴要修改的代码

//为原来的,//下面的为修改后

	/** 成员方法1:通过图书编号,获取一个图书对象 */
	public static Book getBookById(String id) {
		Book book = null;
		if (id != null) {
			// 构造按照图书编号查询图书的sql查询语句
			String sql = "select * from book where id='" + id + "'";
			ResultSet rs = BaseDao.executeQuery(sql);// 执行查询语句,并返回结果集
			// 处理查询结果
			try {
				if (rs.next()) {
					// 创建图书对象,保存图书信息
					book = new Book();
//					book.setId(ChangeString.ISOToGBK(rs.getString("id")));
					book.setId(rs.getString("id"));
//				book.setName(ChangeString.ISOToGBK(rs.getString("name")));
					book.setName(rs.getString("name"));
//				book.setType(ChangeString.ISOToGBK(rs.getString("type")));
					book.setType(rs.getString("type"));
//				book.setAuthor(ChangeString.ISOToGBK(rs.getString("author")));
					book.setAuthor(rs.getString("author"));
//			book.setTranslator(ChangeString.ISOToGBK(rs.getString("translator")));
					book.setTranslator(rs.getString("translator"));
//			book.setPublisher(ChangeString.ISOToGBK(rs.getString("publisher")));
					book.setPublisher(rs.getString("publisher"));
//		book.setPublish_time(ChangeString.ISOToGBK(rs.getString("publish_time")));
					book.setPublish_time(rs.getString("publish_time"));
					book.setStock(rs.getInt("stock"));
					book.setPrice(rs.getDouble("price"));
				}
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		return book;// 返回图书对象
	}

	/** 成员方法2:通过图书名,获取一个图书对象 */
	public static Book getBookByName(String name) {
		Book book = null;
		if (name != null) {
			// 构造按照图书名称查询图书的sql查询语句
			String sql = "select * from book where name='" + name + "'";
			ResultSet rs = BaseDao.executeQuery(sql);// 执行查询语句,并返回结果集
			// 处理查询结果
			try {
				if (rs.next()) {
					// 创建图书对象,保存图书信息
					book = new Book();
//					book.setId(ChangeString.ISOToGBK(rs.getString("id")));
					book.setId(rs.getString("id"));
//				book.setName(ChangeString.ISOToGBK(rs.getString("name")));
					book.setName(rs.getString("name"));
//				book.setType(ChangeString.ISOToGBK(rs.getString("type")));
					book.setType(rs.getString("type"));
//				book.setAuthor(ChangeString.ISOToGBK(rs.getString("author")));
					book.setAuthor(rs.getString("author"));
//			book.setTranslator(ChangeString.ISOToGBK(rs.getString("translator")));
					System.out.println(rs.getString("translator"));
//			book.setPublisher(ChangeString.ISOToGBK(rs.getString("publisher")));
					System.out.println(rs.getString("publisher"));
//		book.setPublish_time(ChangeString.ISOToGBK(rs.getString("publish_time")));
					book.setPublish_time(rs.getString("publish_time"));
					book.setStock(rs.getInt("stock"));
					book.setPrice(rs.getDouble("price"));
				}
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		return book;// 返回图书对象
	}

3.UserDao.java

此处只粘贴要修改的代码

//为原来的,//下面的为修改后

	/** 成员方法1:通过用户名和用户密码,获取一个用户对象 */
	public static User getUser(String name, String pass) {
		User user = null;
		if (name != null || pass != null) {
			// 构造按照用户名和密码查询用户的sql查询语句
			String sql = "select * from user where name=" + "'" + name + "' and pass="
					+ "'" + pass + "'";
			ResultSet rs = BaseDao.executeQuery(sql);// 执行查询语句,并返回结果集
			try {
				// 处理查询结果
				if (rs.next()) {// 下移结果集指针,判断记录是否存在?
					user = new User();// 创建用户对象,并保存用户信息
					user.setId(rs.getInt("id"));
//				user.setName(ChangeString.ISOToGBK(rs.getString("name")));
					user.setName(rs.getString("name"));
//				user.setPass(ChangeString.ISOToGBK(rs.getString("pass")));
					user.setPass(rs.getString("pass"));
					user.setIs_admin((rs.getByte("is_admin")));

				}
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		return user;// 返回用户对象
	}

	/** 成员方法2:通过用户编号,获取一个用户对象 */
	public static User getUser(int id) {
		User user = null;
		if (id > 0) {
			// 构造按照用户编号查询用户的sql查询语句
			String sql = "select * from user where id=" + id;
			ResultSet rs = BaseDao.executeQuery(sql);// 执行查询语句,并返回结果集
			try {
				if (rs.next()) {// 下移结果集指针,判断记录是否存在?
					user = new User();// 创建用户对象,并保存用户信息
					user.setId(rs.getInt("id"));
//				user.setName(ChangeString.ISOToGBK(rs.getString("name")));
					user.setName(rs.getString("name"));
//				user.setPass(ChangeString.ISOToGBK(rs.getString("pass")));
					user.setPass(rs.getString("pass"));
					user.setIs_admin((rs.getByte("is_admin")));
				}
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		return user;// 返回用户对象
	}

	/** 成员方法3:通过用户名,获取一个用户对象 */
	public static User getUser(String name) {
		User user = null;
		if (name != null) {
			// 构造按照用户名查询用户的sql查询语句
			String sql = "select * from user where name='" + name + "'";
			ResultSet rs = BaseDao.executeQuery(sql);// 执行查询语句,并返回结果集
			try {
				if (rs.next()) {
					user = new User();
					user.setId(rs.getInt("id"));
//				user.setName(ChangeString.ISOToGBK(rs.getString("name")));
					user.setName(rs.getString("name"));
//				user.setPass(ChangeString.ISOToGBK(rs.getString("pass")));
					user.setPass(rs.getString("pass"));
					user.setIs_admin((rs.getByte("is_admin")));
				}
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		return user;
	}

	/** 成员方法4:查询所有用户对象,并返回用户对象列表 */
	public static List<User> selectUserList() {
		User user = null;
		List<User> list = new ArrayList<User>();// 创建一个放置用户对象的列表
		// 构造查询所有用户的sql查询语句
		String sql = "select * from user";
		ResultSet rs = BaseDao.executeQuery(sql);// 执行查询操作,并返回结果集
		try {
			while (rs.next()) {
				// 创建用户对象,并保存用户信息
				user = new User();
				user.setId(rs.getInt("id"));
//				user.setName(ChangeString.ISOToGBK(rs.getString("name")));
				user.setName(rs.getString("name"));
//				user.setPass(ChangeString.ISOToGBK(rs.getString("pass")));
				user.setPass(rs.getString("pass"));
				user.setIs_admin((rs.getByte("is_admin")));
				list.add(user);// 将这个用户对象,添加到用户列表中
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return list;// 返回用户对象列表
	}

4.ChangeString.java 删除

5.BaseDao.java

此处只粘贴要修改的代码

//为原来的,//下面的为修改后

	/**
	 * 成员方法1:创建执行对象,执行查询操作
	 * @param sql
	 * @return
	 */
	public static ResultSet executeQuery(String sql) {
		if (sql != null) {
			if (conn == null) {
				new BaseDao();// 加载驱动,并创建与数据库的连接对象
			}
			try {
				return conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
//						ResultSet.CONCUR_UPDATABLE).executeQuery(ChangeString.GBKToISO(sql));// 创建执行对象,执行查询操作,并返回结果集
						ResultSet.CONCUR_UPDATABLE).executeQuery(sql);// 创建执行对象,执行查询操作,并返回结果集
			} catch (SQLException e) {
				System.out.println("查询失败!");//调式
				e.printStackTrace();
				return null;
			}
		} else {
			System.out.println("查询语句为空!");//调式
			return null;
		}
	}

	/**
	 * 成员方法2:创建执行对象,执行更新操作
	 * @param sql
	 * @return
	 */
	public static int executeUpdate(String sql) {
		if (sql != null) {
			if (conn == null) {
				new BaseDao();// 加载驱动,并创建与数据库的连接对象
			}
			try {
//				return conn.createStatement().executeUpdate(ChangeString.GBKToISO(sql));// 创建执行对象,执行更新操作,并返回1
				return conn.createStatement().executeUpdate(sql);// 创建执行对象,执行更新操作,并返回1
			} catch (SQLException e) {
				System.out.println("更新失败!");//调式
				e.printStackTrace();
				return -1;
			}
		} else {
			System.out.println("更新语句为空!");//调式
			return -1;
		}
	}

温馨提示:本文最后更新于2024年12月19日 11:43:07,某些文章具有时效性,若有错误或已失效,请在下方留言或联系站长
本文资源整理自网络,仅供学习和研究使用,请在下载后24小时内删除,谢谢合作!
如果觉得本文有用就按Ctrl+D收藏,方便以后随时翻看,免得想看时又找不着 或 发现更多
十二 9

本站历史上的今天

    "吼吼~~~,往年的今天站长不知道跑哪里偷懒去了~~~"
© 版权声明
THE END
喜欢就支持一下软技收集吧
点赞5赞赏 分享
相关推荐
评论区 抢沙发

    快来评论吧!