Java图书管理系统实训报告(javaEE+Swing+JDBC+MySql)

打印 上一主题 下一主题

主题 660|帖子 660|积分 1980

图书管理系统

一、重要实训内容

​ 本次实训重要目的是通过开辟一个图书管理系统,运用Java编程语言,Swing和JDBC等技术,实现对图书信息的增删查改等基本功能。实训期间学习并掌握了面向对象程序设计方法、数据库应用、Swing界面设计等知识点。

二、项目环境介绍

1.项目配景

​ 图书管理系统是为图书馆、书店等场所设计的一种信息管理系统。通过该系统,用户能够对图书信息举行录入、查询、修改和删除等操作,有用管理图书信息,提高信息处理效率,满足图书信息管理的需求。
2.研发目的及意义

​ 开辟该项目的目的是锻炼对Java编程语言和相干技术的运用本领,提升面向对象编程的理解与实践。图书管理系统的实现能够资助用户高效管理图书信息,提供了便捷的操作方式,具有一定的现实意义。
3.项目树状图目录展示

│ .gitignore
│ java_swing_librarydemo.iml

├─.idea
│ │ .gitignore
│ │ dataSources.local.xml
│ │ dataSources.xml
│ │ misc.xml
│ │ modules.xml
│ │ workspace.xml
│ │
│ ├─dataSources
│ │ │ f995d308-69f9-4969-8e12-603df704cac3.xml
│ │ │
│ │ └─f995d308-69f9-4969-8e12-603df704cac3
│ │ └─storage_v2
│ │ └─_src_
│ │ └─schema
│ │ information_schema.FNRwLQ.meta
│ │ library_system.M5JveQ.meta
│ │ mysql.osA4Bg.meta
│ │ performance_schema.kIw0nw.meta
│ │ sys.zb4BAA.meta
│ │
│ └─libraries
│ mysql_connector_java_5_1_47.xml

├─lib
│ mysql-connector-java-5.1.47.jar

├─out
│ └─production
│ └─java_swing_librarydemo
│ └─com
│ └─niit
│ │ LibraryMain.class
│ │
│ ├─dao
│ │ │ BookDao.class
│ │ │ LoginDao.class
│ │ │
│ │ └─impl
│ │ BookDaoImpl.class
│ │ LoginDaoImpl.class
│ │
│ ├─entity
│ │ Book.class
│ │
│ ├─listener
│ │ DelectListener.class
│ │ LoginListener.class
│ │ MyMouseListenerAdapter.class
│ │ SaveBookListener.class
│ │ SearchListener.class
│ │ ToSaveBtnListener.class
│ │ ToUpdateListener.class
│ │ UpdateListener.class
│ │
│ ├─utils
│ │ ConnectionUtil.class
│ │ Constants.class
│ │ MD5Util.class
│ │
│ └─view
│ AddBookView$1.class
│ AddBookView.class
│ LoginView.class
│ MainView.class

└─src
└─com
​ └─niit
​ │ LibraryMain.java
​ │
​ ├─dao
​ │ │ BookDao.java
​ │ │ LoginDao.java
​ │ │
​ │ └─impl
​ │ BookDaoImpl.java
​ │ LoginDaoImpl.java
​ │
​ ├─entity
​ │ Book.java
​ │
​ ├─listener
​ │ DelectListener.java
​ │ LoginListener.java
​ │ MyMouseListenerAdapter.java
​ │ SaveBookListener.java
​ │ SearchListener.java
​ │ ToSaveBtnListener.java
​ │ ToUpdateListener.java
​ │ UpdateListener.java
​ │
​ ├─utils
​ │ ConnectionUtil.java
​ │ Constants.java
​ │ MD5Util.java
​ │
​ └─view
​ AddBookView.java
​ LoginView.java
​ MainView.java
4.变乱监听器及适配器和关键类总结



  • BookDaoImpl:实现了图书管理的数据访问接口,包括书籍的增删改查操作。
  • LoginDaoImpl:处理用户登录相干的数据访问逻辑,验证用户身份。
  • Book:表示图书的实体类,包罗了书籍的各种属性。
  • MainView:主界面视图类,提供了图书管理系统的整体视图。
  • AddBookView:用于添加书籍的界面视图。
  • LoginView:登录界面视图,处理用户登录。
  • ConnectionUtil:提供数据库毗连和关闭毗连的工具类。
  • Constants:包罗项目中用到的常量。
  • MD5Util:用于暗码加密的工具类。
  • DelectListener:处理删除操作的变乱监听器。
  • LoginListener: 处理登录验证的变乱监听器。
  • MyMouseListenerAdapter: 处理鼠标变乱的适配器。
  • SaveBookListener: 处理生存书籍信息的变乱监听器。
  • SearchListener: 处理搜索功能的变乱监听器。
  • ToSaveBtnListener: 处理点击生存按钮的变乱监听器。
  • ToUpdateListener: 处理更新操作的变乱监听器。
  • UpdateListener: 处理更新书籍信息的变乱监听器。
  • Class CounterProject: 主类
5.项目主界面展示



三、技术门路


  • Java编程语言:利用Java实现了系统的后端逻辑。
  • Swing界面库:设计了GUI界面,提供了用户友好的交互。
  • JDBC数据库毗连:实现PreparedStatement预编译的SQL语句防范SQL注入攻击与MySQL数据库的毗连与交互。
  • IDEA开辟工具:用于代码编写、调试和版本控制。
​ 在实训过程中使用了Java编程语言、Swing界面设计工具,以及JDBC毗连数据库。开辟环境接纳了IDEA编译器和DataGrip数据库管理工具。这些技术和工具的应用资助完成了项目的基本功能和界面设计。

四、需求分析

​ 通太过析项目需求,确定了图书管理系统的基本功能模块,包括图书查询、添加、修改和删除等。用户需求重要集中在对图书信息的便捷操作和查询功能上。

五、概要设计

1.功能模块设计

图书查询模块(支持含糊查询)


图书添加模块


图书修改模块


图书删除模块


2.数据库设计

​ 设计了一个名为sys_book的数据库表,包罗图书的ISBN、书名、作者、出版社等信息字段,通过JDBC毗连实现与系统的交互。


六、系统实现

1.代码结构和功能实现

​ 在设计上,项目遵照了MVC(Model-View-Controller)模式,将业务逻辑、数据和用户界面分离,提高了代码的可维护性和可扩展性。实现了基本的图书管理功能,包括对图书信息的增删改查操作,并提供了用户登录功能。接纳了 Swing 构建用户界面,使用 JDBC 毗连数据库举行数据操作。
2.功能展示

​ 提供了用户友好的GUI界面,展示了系统的各项功能操作,包括图书查询、添加、修改和删除等,实现了基本的图书信息管理。

3.实今世码

  1. `Dao层:`
  2. `public class BookDaoImpl implements BookDao {`
  3.   `@Override`
  4.   `public Vector<Book> bookList(String bookName) {`
  5.     `String sql;`
  6.     `Connection conn = null;`
  7.     `PreparedStatement psmt = null;`
  8.     `ResultSet rs = null;`
  9.    
  10.     `Vector<Book> booklist = new Vector<>();`
  11.     `sql = "select * from sys_books where 1=1 ";`
  12.     `try {`
  13.      `conn = ConnectionUtil.**getConnection**();`
  14.      `if(bookName!=null&&!bookName.trim().equals("")){`
  15.        `bookName="%"+bookName+"%";`
  16.        `sql += "and book_name like ?";`
  17.      `}`
  18.      `psmt = conn.prepareStatement(sql);`
  19.      `if(bookName!=null&&!bookName.trim().equals("")){`
  20.        `psmt.setString(1, bookName);`
  21.      `}`
  22.      
  23.      `rs = psmt.executeQuery();`
  24.      `while(rs.next()) {`
  25.        `Book book = new Book();`
  26.        `book.setId(rs.getInt("id"));`
  27.        `book.setBookName(rs.getString("book_name"));`
  28.        `book.setBookAuthor(rs.getString("book_author"));`
  29.        `book.setBookPublisher(rs.getString("book_publisher"));`
  30.        `book.setBookPrice(rs.getDouble("book_price"));`
  31.        `book.setCreateTime(rs.getTimestamp("create_time"));`
  32.        `booklist.add(book);`
  33.      `}`
  34.     `} catch (Exception e) {`
  35.      `e.printStackTrace();`
  36.     `}finally {`
  37.      `ConnectionUtil.**close**(conn, psmt, rs);`
  38.     `}`
  39.    
  40.     `return booklist;`
  41.   `}`
  42.   `@Override`
  43.   `public void delete(int id) {`
  44.     `String sql;`
  45.     `Connection conn = null;`
  46.     `PreparedStatement psmt = null;`
  47.     `Integer rs ;`
  48.     `try {`
  49.      `sql = "delete from sys_books where id = ? ";`
  50.      `conn = ConnectionUtil.**getConnection**();`
  51.      `psmt = conn.prepareStatement(sql);`
  52.      `psmt.setInt(1, id);`
  53.      `rs = psmt.executeUpdate();`
  54.     `} catch (Exception e) {`
  55.      `e.printStackTrace();`
  56.     `}finally {`
  57.      `ConnectionUtil.**close**(conn, psmt, null);`
  58.     `}`
  59.   `}`
  60.   
  61.   `@Override`
  62.   `public boolean insertBook(Book book) {`
  63.     `Connection conn = null;`
  64.     `PreparedStatement psmt = null;`
  65.     `ResultSet rs = null;`
  66.     `String sql = "insert into sys_books(book_price,book_name,book_author,book_publisher,create_time)"`
  67.        `\+ "values (?,?,?,?,?) ";`
  68.     `try {`
  69.      `conn = ConnectionUtil.**getConnection**();`
  70.      `psmt = conn.prepareStatement(sql);`
  71.      `psmt.setDouble(1, book.getBookPrice());`
  72.      `psmt.setString(2, book.getBookName());`
  73.      `psmt.setString(3, book.getBookAuthor());`
  74.      `psmt.setString(4, book.getBookPublisher());`
  75.      `psmt.setTimestamp(5, book.getCreateTime());`
  76.      `psmt.executeUpdate();`
  77.      `return true;`
  78.     `} catch (Exception e) {`
  79.      `e.printStackTrace();`
  80.     `}finally {`
  81.      `ConnectionUtil.**close**(conn, psmt, rs);`
  82.     `}`
  83.     `return false;`
  84.   `}`
  85.   `@Override`
  86.   `public void update(Book book) {`
  87.     `String sql;`
  88.     `Connection conn = null;`
  89.     `PreparedStatement psmt = null;`
  90.     `Integer rs ;`
  91.     `try {`
  92.      `sql = "update sys_books set book_price = ?,book_name=?,book_author=?,book_publisher=?,create_time=? where id = ?";`
  93.      `conn = ConnectionUtil.**getConnection**();`
  94.      `psmt = conn.prepareStatement(sql);`
  95.      `psmt.setDouble(1, book.getBookPrice());`
  96.      `psmt.setString(2, book.getBookName());`
  97.      `psmt.setString(3, book.getBookAuthor());`
  98.      `psmt.setString(4, book.getBookPublisher());`
  99.      `psmt.setTimestamp(5, book.getCreateTime());`
  100.      `psmt.setInt(6, book.getId());`
  101.      `rs = psmt.executeUpdate();`
  102.     `} catch (Exception e) {`
  103.      `e.printStackTrace();`
  104.     `}finally {`
  105.      `ConnectionUtil.**close**(conn, psmt, null);`
  106.     `}`
  107.   `}`
  108. `}`
  109. `public class LoginDaoImpl implements LoginDao {`
  110.   `@Override`
  111.   `public boolean login(String uname, String pwd) {`
  112.     `String sql = "select * from sys_user where username = ?";`
  113.     `Connection conn = null;`
  114.     `PreparedStatement psmt = null;`
  115.     `ResultSet rs = null;`
  116.     `try {`
  117.      `conn = ConnectionUtil.**getConnection**();`
  118.      `psmt = conn.prepareStatement(sql);`
  119.      `psmt.setString(1, uname);`
  120.      `rs = psmt.executeQuery();`
  121.      `if(rs.next()) {`
  122.        `String dbpwd = rs.getString("pwd");`
  123.        `if(pwd.equals(dbpwd))`
  124.         `return true;`
  125.      `}`
  126.     `} catch (Exception e) {`
  127.      `e.printStackTrace();`
  128.     `}finally {`
  129.      `ConnectionUtil.**close**(conn, psmt, rs);`
  130.     `}`
  131.     `return false;`
  132.   `}`
  133. `}`
  134. ``
  135. `entity实体类:`
  136. `public class Book {`
  137.   `private Integer id;`
  138.   `private Double bookPrice;`
  139.   `private String bookName;`
  140.   `private String bookAuthor;`
  141.   `private String bookPublisher;`
  142.   `private Timestamp createTime;`
  143.   `public Book() {`
  144.   `}`
  145.   `public Book(Double bookPrice, String bookName, String bookAuthor, String bookPublisher) {`
  146.     `super();`
  147.     `this.bookPrice = bookPrice;`
  148.     `this.bookName = bookName;`
  149.     `this.bookAuthor = bookAuthor;`
  150.     `this.bookPublisher = bookPublisher;`
  151.   `}`
  152. ``  
  153.   `public Book(Integer id, Double bookPrice, String bookName, String bookAuthor, String bookPublisher,`
  154.      `Timestamp createTime) {`
  155.     `super();`
  156.     `this.id = id;`
  157.     `this.bookPrice = bookPrice;`
  158.     `this.bookName = bookName;`
  159.     `this.bookAuthor = bookAuthor;`
  160.     `this.bookPublisher = bookPublisher;`
  161.     `this.createTime = createTime;`
  162.   `}`
  163.   `public Integer getId() {`
  164.     `return id;`
  165.   `}`
  166.   `public void setId(Integer id) {`
  167.     `this.id = id;`
  168.   `}`
  169.   `public Double getBookPrice() {`
  170.     `return bookPrice;`
  171.   `}`
  172.   `public void setBookPrice(Double bookPrice) {`
  173.     `this.bookPrice = bookPrice;`
  174.   `}`
  175.   `public String getBookName() {`
  176.     `return bookName;`
  177.   `}`
  178.   `public void setBookName(String bookName) {`
  179.     `this.bookName = bookName;`
  180.   `}`
  181.   `public String getBookAuthor() {`
  182.     `return bookAuthor;`
  183.   `}`
  184.   `public void setBookAuthor(String bookAuthor) {`
  185.     `this.bookAuthor = bookAuthor;`
  186.   `}`
  187.   `public String getBookPublisher() {`
  188.     `return bookPublisher;`
  189.   `}`
  190.   `public void setBookPublisher(String bookPublisher) {`
  191.     `this.bookPublisher = bookPublisher;`
  192.   `}`
  193.   `public Timestamp getCreateTime() {`
  194.     `return createTime;`
  195.   `}`
  196.   `public void setCreateTime(Timestamp createTime) {`
  197.     `this.createTime = createTime;`
  198.   `}`
  199.   `@Override`
  200.   `public String toString() {`
  201.     `return "Book [id=" + id + ", bookPrice=" + bookPrice + ", bookName=" + bookName + ", bookAuthor=" + bookAuthor`
  202.        `\+ ", bookPublisher=" + bookPublisher + ", createTime=" + createTime + "]";`
  203.   `}`
  204.   
  205. `}`
  206. `listener监听类:`
  207. `public class DelectListener extends MouseAdapter{`
  208.   `private MainView view;`
  209.   `private BookDao dao ;`
  210.   `public DelectListener(MainView view){`
  211.     `this.view = view;`
  212.     `dao = new BookDaoImpl();`
  213.   `}`
  214.   `//当点击删除时`
  215.   `@Override`
  216.   `public void mouseClicked(MouseEvent arg0) {`
  217.     `JTable dataTable = view.getDataTable();`
  218.     `int selectedColumn = dataTable.getSelectedColumn();`
  219.     `int row = dataTable.getSelectedRow();`
  220.     `//拿到选中行的id值`
  221.     `int value = (int) dataTable.getValueAt(row, 0);`
  222.     `dao.delete(value);`
  223.     `System.**out**.println("删除ID号"+value+"数据成功");`
  224.     `view.dispose();`
  225.     `new MainView(null);`
  226.   `}`
  227. `}`
  228. `**/******
  229. ** ***** **登录按钮的点击事件****`
  230. `** ***/****`
  231. `**public class LoginListener extends MouseAdapter{
  232.   private LoginView view;
  233.   private LoginDao dao ;
  234.   
  235.   public LoginListener(LoginView loginView) {
  236.     this.view = loginView;
  237.     dao = new LoginDaoImpl();
  238.   }
  239.   
  240.   @Override
  241.   public void mouseClicked(MouseEvent e) {
  242.     String uname = view.getUserNameTextField().getText();
  243.     String pwd = new String(view.getPwdTextField().getPassword());
  244.     if(null != uname && !uname.trim().equals("")  ) {
  245.      String pwMD5 = MD5Util.**encrypt**(pwd);
  246.      boolean flag = dao.login(uname, pwMD5);
  247.      if(flag) {
  248.        new MainView(null);
  249.        view.dispose();
  250.      }else {
  251.        JOptionPane.**showMessageDialog**(null, "用户名或密码错误");
  252.      }
  253.     }else {
  254.      JOptionPane.**showMessageDialog**(null, "用户名不能为空");`
  255.      `return;`
  256.     `}`
  257.   `}`
  258. `}`
  259. `鼠标监听适配器:`
  260. `public class MyMouseListenerAdapter extends MouseAdapter{`
  261.   
  262.   `AddBookView view;`
  263.   
  264.   `public void setView(AddBookView view) {`
  265.     `this.view = view;`
  266.   `}`
  267. `}`
  268. `**/******
  269. ** ***** **保存书籍****`
  270. `** *******`
  271. `** ***/****`
  272. `**public class SaveBookListener extends MyMouseListenerAdapter {`
  273.   `private BookDao bookDao;`
  274.   `public SaveBookListener() {`
  275.     `this.bookDao = new BookDaoImpl();`
  276.   `}`
  277.   `@Override`
  278.   `public void mouseClicked(MouseEvent e) {`
  279.     `String bookName = view.getBookNameTextField().getText();`
  280.     `String bookPrice = view.getBookPriceTextField().getText();`
  281.     `String bookAuthor = view.getBookAuthorTextField().getText();`
  282.     `String bookPublisher = view.getBookPublisherTextField().getText();`
  283.     `Book book = new Book(Double.**parseDouble**(bookPrice), bookName, bookAuthor, bookPublisher);`
  284.     `book.setCreateTime(new Timestamp(System.**currentTimeMillis**()));`
  285.     `boolean flag = bookDao.insertBook(book);`
  286.     `if (flag) {`
  287.      `JOptionPane.**showMessageDialog**(null, "添加成功");`
  288.     `} else {`
  289.      `JOptionPane.**showMessageDialog**(null, "添加失败");`
  290.     `}`
  291.     `new MainView(null);`
  292.     `view.dispose();`
  293.   `}`
  294. `}`
  295. `搜索类:`
  296. `public class SearchListener extends MouseAdapter {`
  297.   `private MainView view;`
  298.   `private BookDao dao ;`
  299.   `public SearchListener(MainView view){`
  300.     `this.view = view;`
  301.     `this.dao = new BookDaoImpl();`
  302.   `}`
  303.   
  304.   `//当点击查询时执行此方法`
  305.   `@Override`
  306.   `public void mouseClicked(MouseEvent e) {`
  307.     `//获取要查询的书名`
  308.     `String bookName = view.getBookNameTextField().getText();`
  309.     `//select * from sys_books where book_name like "%java%";`
  310.     `Vector<Book> bookList = dao.bookList(bookName);`
  311.     `System.**out**.println(bookList);`
  312.     `Vector<Vector> v = new Vector<Vector>();`
  313.     `for(Book b : bookList) {`
  314.      `Vector ve = new Vector();`
  315.      `ve.add(b.getId());`
  316.      `ve.add(b.getBookName());`
  317.      `ve.add(b.getBookAuthor());`
  318.      `ve.add(b.getBookPrice());`
  319.      `ve.add(b.getBookPublisher());`
  320.      `ve.add(b.getCreateTime());`
  321.      `ve.add("修改");`
  322.      `ve.add(new JButton("删除"));`
  323.      `v.add(ve);`
  324.     `}`
  325.     `view.dispose();`
  326.     `new MainView(v);`
  327.   `}`
  328. `}`
  329. `保存书籍:`
  330. `public class ToSaveBtnListener extends MouseAdapter {`
  331.   `private MainView view;`
  332.   `public ToSaveBtnListener(MainView view) {`
  333.     `this.view = view;`
  334.   `}`
  335.   `@Override`
  336.   `public void mouseClicked(MouseEvent e) {`
  337.     `SaveBookListener listener = new SaveBookListener();`
  338.     `new AddBookView("新增",listener);`
  339.     `this.view.dispose();`
  340.   `}`
  341. `}`
  342. `修改书籍:`
  343. `public class ToUpdateListener extends MouseAdapter{`
  344.   `private MainView view;`
  345.   `private BookDao dao ;`
  346.   `public ToUpdateListener(MainView view){`
  347.     `this.view = view;`
  348.     `this.dao = new BookDaoImpl();`
  349.   `}`
  350.   `//点击修改后`
  351.   `@Override`
  352.   `public void mouseClicked(MouseEvent e) {`
  353.     `System.**out**.println("点击修改后");`
  354.     `JTable dataTable = view.getDataTable();`
  355.     `int row = dataTable.getSelectedRow();`
  356. ​    `// 确保有选中的行`
  357. ​    `if (row >= 0) {`
  358. ​     `Object[] oArray = new Object[6];`
  359. ​     `for (int i = 0; i < 6; i++) {`
  360. ​       `Object v = dataTable.getValueAt(row, i);`
  361. ​       `oArray[i] = v;`
  362. ​     `}`
  363. ​     `Book b = new Book((Integer) oArray[0], (Double) oArray[3], (String) oArray[1], (String) oArray[2], (String) oArray[4], (Timestamp) oArray[5]);`
  364. ​     `UpdateListener listener = new UpdateListener(b);`
  365. ​     `new AddBookView("修改", listener);`
  366. ​     `this.view.dispose();`
  367. ​    `} else {`
  368. ​     `// 如果没有选中行,可能需要给出提示或采取其他操作`
  369. ​     `System.**out**.println("请选择要修改的行");`
  370. ​    `}`
  371.   `}`
  372. `}`
  373. `提交监听:`
  374. `public class UpdateListener extends MyMouseListenerAdapter {`
  375.   `private BookDao bookDao;`
  376.   `private Book b;`
  377.   
  378.   `public Book getB() {`
  379.     `return b;`
  380.   `}`
  381.   `public UpdateListener(Book b) {`
  382.     `this.bookDao = new BookDaoImpl();`
  383.     `this.b = b;`
  384.   `}`
  385.   `@Override`
  386.   `public void mouseClicked(MouseEvent e) {`
  387.     `System.**out**.println("点击提交后");`
  388.     `Book b = view.getBook();`
  389.     `String bookName = view.getBookNameTextField().getText();`
  390.     `String bookPrice = view.getBookPriceTextField().getText();`
  391.     `String bookAuthor = view.getBookAuthorTextField().getText();`
  392.     `String bookPublisher = view.getBookPublisherTextField().getText();`
  393.     `Book book = new Book(b.getId(),Double.**parseDouble**(bookPrice), bookName, bookAuthor, bookPublisher,new Timestamp(System.**currentTimeMillis**()));`
  394.     `bookDao.update(book);`
  395.     `new MainView(null);`
  396.     `view.dispose();`
  397.   `}`
  398. `}`
  399. `Utils工具类:`
  400. `数据库连接和关闭连接的工具类:`
  401. `public class ConnectionUtil {`
  402.   
  403.   `private static final String **DRIVER** = "com.mysql.jdbc.Driver";`
  404.   `private static final String **URL** = "jdbc:mysql://localhost:3306/library_system?useUnicode=true&characterEncoding=UTF-8";`
  405.   `private static final String **USERNAME** = "root";`
  406.   `private static final String **PASSWORD** = "123456";`
  407.   
  408.   
  409.   `public static Connection getConnection() {`
  410.     `Connection conn = null;`
  411.     `try {`
  412.      `Class.**forName**(**DRIVER**);`
  413.      `conn = DriverManager.**getConnection**(**URL**, **USERNAME**,**PASSWORD**);`
  414.     `} catch (Exception e) {`
  415.      
  416.      `JOptionPane.**showMessageDialog**(null, "数据库连接失败");`
  417.      `e.printStackTrace();`
  418.     `}`
  419.    
  420.     `return conn;`
  421.   `}`
  422.   
  423.   `public static void close(Connection conn,PreparedStatement psmt, ResultSet rs) {`
  424.     `**closeConnection**(conn);`
  425.     `**closeStatement**(psmt);`
  426.     `**closeResultSet**(rs);`
  427.   `}`
  428.   
  429.   
  430.   `private static void closeConnection(Connection conn){`
  431.     `if(conn != null) {`
  432.      `try {`
  433.        `conn.close();`
  434.      `} catch (SQLException e) {`
  435.        `e.printStackTrace();`
  436.      `}`
  437.     `}`
  438.   `}`
  439.   
  440.   `private static void closeResultSet(ResultSet rs){`
  441.     `if(rs != null) {`
  442.      `try {`
  443.        `rs.close();`
  444.      `} catch (SQLException e) {`
  445.        `e.printStackTrace();`
  446.      `}`
  447.     `}`
  448.   `}`
  449.   
  450.   `private static void closeStatement(Statement pstm){`
  451.     `if(pstm != null) {`
  452.      `try {`
  453.        `pstm.close();`
  454.      `} catch (SQLException e) {`
  455.        `e.printStackTrace();`
  456.      `}`
  457.     `}`
  458.   `}`
  459. `}`
  460. ``
  461. ​    `常量工具类:`
  462. `public class Constants {`
  463.   `public static final String **FONT_STYLE** = "微软雅黑";`
  464.   
  465.   
  466. `}`
  467. `密码加密的工具类:`
  468. `public class MD5Util {`
  469.   `public static String encrypt(String dataStr) {`
  470.     `try {`
  471.      `MessageDigest m = MessageDigest.**getInstance**("MD5");`
  472.      `m.update(dataStr.getBytes("UTF8"));`
  473.      `byte s[] = m.digest();`
  474.      `String result = "";`
  475.      `for (int i = 0; i < s.length; i++) {`
  476.        `result += Integer.**toHexString**((0x000000FF & s[i]) | 0xFFFFFF00).substring(6);`
  477.      `}`
  478.      `return result;`
  479.     `} catch (Exception e) {`
  480.      `e.printStackTrace();`
  481.     `}`
  482. ​    `return "";`
  483.   `}`
  484. `}`
  485. ### 4.数据库核心代码
  486. `· create table sys_books`
  487. `·`
  488. `· //创建一个sys_books的表存储关于图书的数据库表`
  489. `(`
  490.   `id       int auto_increment`
  491.     `primary key,`
  492.   `book_price   double    null comment '价格',`
  493.   `book_name    varchar(100) null,`
  494.   `book_author   varchar(20)  null,`
  495.   `book_publisher varchar(100) null,`
  496.   `create_time   datetime   null`
  497. `)`
  498.   `charset = utf8mb3;        //这指定了该表的字符集为utf8mb3,这是一个支持多字节字符的UTF-8字符集`
  499. `create table sys_user           //表存储关于用户信息的数据库表`
  500. `(`
  501.   `id      int auto_increment`
  502.     `primary key,//主键`
  503.   `username   varchar(50) null,`
  504.   `pwd     varchar(64) null,    //这是一个最大长度为64的变长字符串字段,用于存储用户密码。通常在实际应用中,为了安全,密码应该被加密存储而不是明文`
  505.   `create_time datetime   null    //这是一个日期时间字段,用于存储记录创建的时间`
  506. `)`
  507.   `charset = utf8mb3;          //这指定了该表的字符集为utf8mb3,这是一个支持多字节字符的UTF-8字符集`
  508. ------
  509. ## 七、总结与展望
  510. .printStackTrace();`
  511.     `}`
  512. ​    `return "";`
  513.   `}`
  514. `}`
  515. ### 4.数据库核心代码
  516. `· create table sys_books`
  517. `·`
  518. `· //创建一个sys_books的表存储关于图书的数据库表`
  519. `(`
  520.   `id       int auto_increment`
  521.     `primary key,`
  522.   `book_price   double    null comment '价格',`
  523.   `book_name    varchar(100) null,`
  524.   `book_author   varchar(20)  null,`
  525.   `book_publisher varchar(100) null,`
  526.   `create_time   datetime   null`
  527. `)`
  528.   `charset = utf8mb3;        //这指定了该表的字符集为utf8mb3,这是一个支持多字节字符的UTF-8字符集`
  529. `create table sys_user           //表存储关于用户信息的数据库表`
  530. `(`
  531.   `id      int auto_increment`
  532.     `primary key,//主键`
  533.   `username   varchar(50) null,`
  534.   `pwd     varchar(64) null,    //这是一个最大长度为64的变长字符串字段,用于存储用户密码。通常在实际应用中,为了安全,密码应该被加密存储而不是明文`
  535.   `create_time datetime   null    //这是一个日期时间字段,用于存储记录创建的时间`
  536. `)`
  537.   `charset = utf8mb3;          //这指定了该表的字符集为utf8mb3,这是一个支持多字节字符的UTF-8字符集`
复制代码

七、总结与展望

​ 在项目开辟过程中遇到了数据库毗连问题,通过查阅文档和向同学讨教解决了问题。通过这次实训,更加深入了解了Java编程语言,C/S模式和相干技术的应用。在将来的学习中,计划进一步学习Web开辟和其他Java技术,提升自己的编程水平,收获颇多!

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

飞不高

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表