Java实现网上书店管理系统(idea+MySQL+navicat)

打印 上一主题 下一主题

主题 761|帖子 761|积分 2283

最近一直在做网上书店管理系统,现在这个项目已基本具有一个图书管理系统的雏形,实现了数据的增删改查功能。本项目采用swing技术开发,使用数据库存放具体数据,现在做一个总结,供学习参考!


文章目录



1. 开发工具

本项目采用idea+MySQL开发,使用数据库可视化工具navicat管理数据。其中用到的MySQL版本是8.0。


2.数据库设计

数据库中共维护了四个关系表:

管理员信息表:

订单表信息:

图书信息表:

进货信息表:


连接数据库:
  1. package jdbc;
  2. import java.text.SimpleDateFormat;
  3. import java.util.Calendar;
  4. import java.sql.*;
  5. /**
  6. *数据库管理类
  7. */
  8. public class ConnectionManager {
  9.     //连接数据库的四大必需属性
  10.     private static final String driver = "com.mysql.cj.jdbc.Driver";
  11.     private static final String url = "jdbc:mysql://localhost:3306/book-management?useSSL=false&serverTimezone=Asia/Shanghai";
  12.     private static final String user = "root";
  13.     private static final String psd = "abc123";
  14.    
  15.     //静态块加载驱动
  16.     static {
  17.         try {
  18.             Class.forName(driver);
  19.             System.out.println("加载驱动成功!");
  20.         } catch (ClassNotFoundException e) {
  21.             e.printStackTrace();
  22.             System.out.println("加载驱动失败!");
  23.         }
  24.     }
  25.    
  26.     //返回一个连接对象
  27.     public static Connection getConnection() {
  28.         Connection connection = null;
  29.         try {
  30.             connection = DriverManager.getConnection(url, user, psd);
  31. //            System.out.println("连接数据库成功");
  32.         } catch (SQLException e) {
  33.             e.printStackTrace();
  34.         }
  35.         return connection;
  36.     }
复制代码
使用jdbc技术连接数据库,记得下载驱动包!
创建数据库关系表格:
  1. DROP TABLE IF EXISTS `book_stack`;
  2. CREATE TABLE `book_stack`  (
  3.   `ISBN` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT 'ISBN码',
  4.   `bookname` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '书名',
  5.   `author` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '作者',
  6.   `num` int(11) NULL DEFAULT NULL COMMENT '数量',
  7.   `markprice` decimal(10, 2) NULL DEFAULT NULL COMMENT '标价',
  8.   PRIMARY KEY (`ISBN`) USING BTREE,
  9.   INDEX `bookname`(`bookname`) USING BTREE,
  10.   INDEX `num`(`num`) USING BTREE
  11. ) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
  12. SET FOREIGN_KEY_CHECKS = 1;
复制代码

3. 项目功能设计

1.登录界面设计


2.图书信息维护界面


3.图书信息查询界面


4.图书销售信息界面


此系统实现了对图书信息的增删改查功能,以及对图书订单的相关操作。已基本完善相关功能,下面只对部分代码做一个展示,供初学者学习参考:
  1. package frame;
  2. import jdbc.ConnectionManager;
  3. import model.Manager;
  4. import javax.swing.*;
  5. import javax.swing.border.EmptyBorder;
  6. import javax.swing.event.DocumentEvent;
  7. import javax.swing.event.DocumentListener;
  8. import javax.swing.text.Document;
  9. import java.awt.*;
  10. import java.awt.event.ActionEvent;
  11. import java.awt.event.ActionListener;
  12. import java.sql.ResultSet;
  13. import java.sql.SQLException;
  14. public class Login extends JFrame {
  15.         private JPanel contentPane;
  16.         private JTextField jt_user;
  17.         private JPasswordField jt_psw;
  18.         public static Jrame2 jrame;
  19.         private final JPanel panel_3 = new JPanel();
  20.         public static void main(String[] args) {
  21.                 EventQueue.invokeLater(new Runnable() {
  22.                         public void run() {
  23.                                 try {
  24.                                         Login frame = new Login();
  25.                                         frame.setVisible(true);
  26.                                 } catch (Exception e) {
  27.                                         e.printStackTrace();
  28.                                 }
  29.                         }
  30.                 });
  31.         }
  32.         /**
  33.          * Create the frame.
  34.          */
  35.         public Login() {
  36.                 setBackground(new Color(224, 255, 255));
  37.                 setIconImage(Toolkit.getDefaultToolkit().getImage(Login.class.getResource("/img/线性图书 (1).png")));
  38.                 setTitle("网上书店管理系统");
  39.                 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  40.                 setBounds(100, 100, 610, 377);
  41.                 contentPane = new JPanel();
  42.                 contentPane.setBackground(SystemColor.menu);
  43.                 contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
  44.                 setContentPane(contentPane);
  45.                 contentPane.setLayout(null);
  46.                
  47.                 JPanel panel = new JPanel();
  48.                 panel.setBackground(SystemColor.menu);
  49.                 panel.setBounds(10, 25, 576, 81);
  50.                 contentPane.add(panel);
  51.                 panel.setLayout(null);
  52.                
  53.                 JLabel lblNewLabel = new JLabel("Welcome to use the System!");
  54.                 lblNewLabel.setIcon(new ImageIcon(Login.class.getResource("/img/welcome.png")));
  55.                 lblNewLabel.setBounds(73, 25, 435, 34);
  56.                 lblNewLabel.setForeground(new Color(0, 0, 0));
  57.                 lblNewLabel.setFont(new Font("宋体", Font.BOLD, 29));
  58.                 panel.add(lblNewLabel);
  59.                
  60.                 JPanel panel_1 = new JPanel();
  61.                 panel_1.setBackground(SystemColor.menu);
  62.                 panel_1.setBounds(10, 116, 576, 60);
  63.                 contentPane.add(panel_1);
  64.                 panel_1.setLayout(null);
  65.                
  66.                 JLabel lblNewLabel_1 = new JLabel("账号:");
  67.                 lblNewLabel_1.setBounds(96, 5, 98, 32);
  68.                 lblNewLabel_1.setIcon(new ImageIcon(Login.class.getResource("/img/账号 (1).png")));
  69.                 lblNewLabel_1.setFont(new Font("宋体", Font.BOLD, 20));
  70.                 panel_1.add(lblNewLabel_1);
  71.                
  72.                 jt_user = new JTextField();
  73.                 jt_user.setBounds(199, 6, 281, 30);
  74.                 jt_user.setFont(new Font("宋体", Font.BOLD, 20));
  75.                 panel_1.add(jt_user);
  76.                 jt_user.setColumns(25);
  77.                
  78.                 JLabel mess1 = new JLabel("");
  79.                 mess1.setFont(new Font("宋体", Font.PLAIN, 14));
  80.                 mess1.setForeground(Color.RED);
  81.                 mess1.setBounds(199, 38, 125, 24);
  82.                 panel_1.add(mess1);
  83.                
  84.                 JPanel panel_1_1 = new JPanel();
  85.                 panel_1_1.setBackground(SystemColor.menu);
  86.                 panel_1_1.setBounds(10, 186, 576, 60);
  87.                 contentPane.add(panel_1_1);
  88.                 panel_1_1.setLayout(null);
  89.                
  90.                 JLabel lblNewLabel_1_1 = new JLabel("密码:");
  91.                 lblNewLabel_1_1.setBounds(97, 10, 98, 32);
  92.                 lblNewLabel_1_1.setIcon(new ImageIcon(Login.class.getResource("/img/密码 (7).png")));
  93.                 lblNewLabel_1_1.setFont(new Font("宋体", Font.BOLD, 20));
  94.                 panel_1_1.add(lblNewLabel_1_1);
  95.                
  96.                 jt_psw = new JPasswordField();
  97.                 jt_psw.setBounds(201, 5, 280, 32);
  98.                 jt_psw.setFont(new Font("宋体", Font.BOLD, 15));
  99.                 jt_psw.setColumns(25);
  100.                 panel_1_1.add(jt_psw);
  101.                
  102.                 JLabel mess2 = new JLabel("");
  103.                 mess2.setForeground(Color.RED);
  104.                 mess2.setFont(new Font("宋体", Font.PLAIN, 14));
  105.                 mess2.setBounds(201, 36, 125, 24);
  106.                 panel_1_1.add(mess2);
  107.                
  108.                 JPanel panel_2 = new JPanel();
  109.                 panel_2.setBackground(SystemColor.menu);
  110.                 panel_2.setBounds(10, 270, 576, 60);
  111.                 contentPane.add(panel_2);
  112.                 panel_2.setLayout(null);
  113.                
  114.                 JButton jb_reset = new JButton("重置");
  115.                 jb_reset.addActionListener(new ActionListener() {
  116.                         public void actionPerformed(ActionEvent e) {
  117. //                                重置输入框
  118.                                 jt_user.setText("");
  119.                                 jt_psw.setText("");
  120.                         }
  121.                 });
  122.                 jb_reset.setIcon(new ImageIcon(Login.class.getResource("/img/重置.png")));
  123.                 jb_reset.setFont(new Font("宋体", Font.BOLD, 17));
  124.                 jb_reset.setBounds(113, 10, 97, 23);
  125.                 panel_2.add(jb_reset);
  126.                
  127.                 JButton jb_login = new JButton("登录");
  128.                 jb_login.setIcon(new ImageIcon(Login.class.getResource("/img/登录统计.png")));
  129.                 jb_login.addActionListener(new ActionListener() {
  130.                         public void actionPerformed(ActionEvent e) {
  131. //                                获取账号和密码
  132.                                 String userString=jt_user.getText();
  133.                                 char[] a=jt_psw.getPassword();
  134.                                 String pswString=String.valueOf(a);
  135. //                                查询是否匹配
  136.                                 String sql="select * from manager where user=?";
  137.                                 if (jt_user.getText().equals("")) {
  138.                                         mess1.setText("请输入账号:");
  139.                                 }else {
  140.                                         try {
  141.                                                 ResultSet set=ConnectionManager.query(sql, new Object[] {userString});
  142.                                                 if(set.next()) {
  143. //                                                        找到用户
  144.                                                         String user=set.getString("user");
  145.                                                         String psw=set.getString("password");
  146.                                                
  147.                                                         System.out.println(user+psw);
  148. //                                                        判断密码
  149.                                                         if (pswString.equals("")) {
  150.                                                                 mess2.setText("请输入密码!");
  151.                                                         }else if (psw.equals(pswString)) {
  152. //                                                                登录成功
  153.                                                                 System.out.println("登录成功!");
  154. //                                                                打开新窗口
  155.                                                             jrame=new Jrame2(new Manager(userString, pswString));
  156. //                                                                关闭当前
  157.                                                                 dispose();
  158.                                                                 jrame.setVisible(true);
  159.                                                         }else {
  160.                                                                 System.out.println("密码输入错误!");
  161.                                                                 mess2.setText("密码输入错误!");
  162.                                                         }
  163.                                                 }else {
  164.                                                         System.out.println("账号不存在!");
  165.                                                         mess1.setText("该账号不存在!");
  166.                                                 }
  167.                                         } catch (SQLException e1) {
  168.                                                 // TODO Auto-generated catch block
  169.                                                 e1.printStackTrace();
  170.                                         }
  171.                                 }
  172.                                
  173.                         }
  174.                 });
  175.                
  176. //                动态清零
  177.                 Document dt=jt_user.getDocument();
  178.                 dt.addDocumentListener(new DocumentListener() {
  179.                        
  180.                         @Override
  181.                         public void removeUpdate(DocumentEvent e) {
  182.                                 // TODO Auto-generated method stub
  183.                                 mess1.setText("");
  184.                                 mess2.setText("");
  185.                                
  186.                         }
  187.                        
  188.                         @Override
  189.                         public void insertUpdate(DocumentEvent e) {
  190.                                 // TODO Auto-generated method stub
  191.                                 mess1.setText("");
  192.                                 mess2.setText("");
  193.                         }
  194.                        
  195.                         @Override
  196.                         public void changedUpdate(DocumentEvent e) {
  197.                                 // TODO Auto-generated method stub
  198.                                 mess1.setText("");
  199.                                 mess2.setText("");
  200.                         }
  201.                 });
  202.                 jb_login.setFont(new Font("宋体", Font.BOLD, 17));
  203.                 jb_login.setBounds(356, 10, 97, 23);
  204.                 panel_2.add(jb_login);
  205.         }
  206. }
复制代码

5.项目结构

以下是项目此项目的结构:


4.总结

   在互联网的快速发展的今天,电脑的普及为人们适应快速的生活节奏提供了条件。电子商务的概念也随之产生。相比传统的零售业务,电子商务不管是在地域上、时间上还是经济上都优于传统业务,但因其以开放的互联网为基础,存在一定的局限性。随着互联网技术的进一步发展,电子商务正以一种惊人的速度发展着。
  
  通过建立网上书店购物系统,可以提高企业的生产效率,降低经营成本,优化资源配置,从而实现企业的利润最大化由。于网上图书交易打破了图书经销的规则及图书经营模式,越来越的网上书店的出现,要想很好的发展下去,就需要开发一套行之有效的网上图书交易系统。
  
  本项目采用Java swing技术开发,对于学习Java编程和刚学习数据库系统的初学者来说,是一个练手的好项目。在项目开发时遇到了很多的问题,在解决完问题以后对深入理解Java面向对象编程有很大的帮助,虽然GUI技术现在没有很大的市场,甚至很多初学者放弃学习,但是利用GUI技术编程的过程对于提高编程兴趣,理解Java编程有很大的作用。
  谢谢大家!

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

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

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

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

本版积分规则

干翻全岛蛙蛙

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

标签云

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