【完整代码】网上书店信息管理系统--基于Mysql数据库与java

网上书店信息管理系统

  • 一、需求分析
    • (一)设计系统的意义以及用途
    • (二)实现的功能
      • 1.用户模块:
        • 1、全部图书浏览
        • 2、图书搜索
        • 3、购物车管理和订单查看
        • 4、修改密码
      • 2.书店管理员模块
          • 1、图书类别管理
          • 2、图书管理
          • 3、全部订单查看
          • 4、店员信息管理
          • 5、修改密码
  • 二、逻辑结构设计
  • 三、具体实现
    • (一)登录界面的实现
    • (二)注册模块实现
    • (三)用户模块的实现
      • 1.全部图书
      • 2.搜索图书
      • 3.我的购物车、我的订单
    • (四)管理员登录模块的实现
      • 1.图书类别添加、图书类别维护
      • 2.图书添加、图书修改
      • 3.全部订单
      • 4.店员信息管理
    • (五)通用功能
      • 1.修改密码
      • 2.用户退出

一、需求分析

(一)设计系统的意义以及用途

随着信息技术和网络技术的高速发展,图书网上选购工作应运而生,越来越的人开始在网上购买书籍。设计一个信息管理系统,使用MySQL和JAVA,模拟了网上书店,不仅科学地对书店的图书进行有效的分类管理,更是提高了人们对于图书的选购效率,可以有效的节约资源并且有效的存储、更新和查询信息,提高工作和服务的效率。

(二)实现的功能

本系统在区别用户身份时设定了两个主页面,使系统可以允许两种不同的角色进行访问,即用户(购买者)、管理员(店主),并赋予他们不同的访问权限。具体实现的功能如下:

1.用户模块:

1、全部图书浏览

对于书店可出售的全部图书基本信息(图书名称、图书类型、图书作者、图书价格)进行查看浏览

2、图书搜索

(1)对于感兴趣的图书进行关键词搜索,输入与书名相关的关键词,即可搜索显出全部相关的书籍信息;
(2)点击感兴趣的图书,即可查看图书的详细信息;
(3)选定图书,即可加入购物车

3、购物车管理和订单查看

(1)对于购物车中图书选中后,可下单处理;
(2)查看个人的全部购书记录(图书信息、下单金额、下单时间)

4、修改密码

2.书店管理员模块

1、图书类别管理

(1)图书类别添加,管理员输入新的图书类别以及类别的描述,即可在图书类别数据库中添加新的图书类别;
(2)图书类别修改,管理员可以对于现有的全部图书类别以及类别描述进行删除和修改的操作。

2、图书管理

(1)图书添加:在已有的图书类别中添加新的图书,输入图书名称、作者、价格、简介等信息;
(2)图书信息修改:对于数据库已有的全部图书信息进行删除和修改的操作。

3、全部订单查看

管理员可以对用户的全部订单进行查看。

4、店员信息管理
管理员可以对书店员工的基本信息(姓名、电话、薪资等)尽心查看和修改。
5、修改密码

二、逻辑结构设计

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三、具体实现

(一)登录界面的实现

在这里插入图片描述

关键代码实现如下:

protected void LoginActionPerformed(ActionEvent e) {// 获取输入框中“用户名”和“密码”中的内容String name = this.userNameTxt.getText(); String pwd = new String(this.PwdTxt.getPassword());String userid = "";String qxValue = (String) this.UserBoxTxt.getSelectedItem();if (qxValue.equals("用户")) {// 用户登录userid = "0";//根据用户输入的信息在表中进行查询List<User> list = UserDao.login(name, pwd, userid);if (list.size() != 0) {// 登录成功dispose();LoginConfig.save(new User(name, pwd, userid));new MainFrm().setVisible(true);} else {// 弹框输出登录失败的提示内容JOptionPane.showMessageDialog(null, "账号或密码错误");}} else {// 管理员登录同理userid = "1";
}

(二)注册模块实现

在这里插入图片描述
关键代码实现如下:

**首先获取输入的用户名,利用函数userDao.selectUname(name)在数据库的user中进行表中进行查询,是否已经存在**String name = this.nameTxt.getText();User user = userDao.selectUname(name);//查询语句,写在selectUname(name)函数当中String sql = "select * from t_user where userName=?";if (user != null) {JOptionPane.showConfirmDialog(null, "用户名已经注册");//体现实体完整性,用户名是用户实体的主键,不允许重复reset();} else {int i = userDao.reg(name, pwd,sex,tel);if (StringUtil.isEmpty(name)) {JOptionPane.showMessageDialog(null, "用户名不能为空");return;}if (tel.length()!=11) {JOptionPane.showMessageDialog(null, "联系方式格式错误"); //体现用户自定义的完整性,要求telTxt长度必须为11return;}
//若用户名不存在则插入用户信息public int reg(String name, String pwd,String sex, String tel) {String sql = "insert into t_user(userName,password,userid,sex,telephone) value(?,?,?,?,?)";int jdbc_update = DButils.jdbc_update(sql, name, pwd, "0",sex,tel);return jdbc_update;}

(三)用户模块的实现

在这里插入图片描述

1.全部图书

在这里插入图片描述

  • 具体实现方法就是对于book表进行查询,利用SQL语句String sql = “select * from t_book,t_booktype where t_book.bookTypeId=t_booktype.id and isflag=0”;将表中需要的字段取出并且保存在集合List当中并且依次输出。
   public void fillTable() {DefaultTableModel dtm = (DefaultTableModel) table.getModel();dtm.setRowCount(0);// 设置成0行// 查询出书籍List<BooKAndBookType> b = userDao.listBook2();System.out.println(b);for (BooKAndBookType book2 : b) {Vector v = new Vector<>();v.add(book2.getId());v.add(book2.getBookName());v.add(book2.getBookTypeName());v.add(book2.getAuthor());v.add(book2.getPrice());dtm.addRow(v);}
}

2.搜索图书

在这里插入图片描述
在这里插入图片描述

上述功能的具体是实现如下:

//关键字查询的实现
String selectBook = this.selectBookTxt.getText();//1.利用函数SelectBookClass(selectBook),查询是否存在与输入文字相关的t_book.booNameList<BooKAndBookType> b =userDao.SelectBookClass(selectBook);
String sql = "select * from t_book where t_book.bookName like'%"+selectBook+"%' ";
//同时将信息存入集合当中while (rs.next()) {BooKAndBookType book = new BooKAndBookType(Bookid, bookName, author, price, bookDesc);list.add(book);}
//加入购物车按钮触发的事件处理protected void BookYJActionPerformed(ActionEvent e) {int i = userDao.borrowBook(bookid);if (i > 0) {List<String> reader = LoginConfig.reader();String name = reader.get(0);User u = userDao.selectUname(name);int id = u.getId();//将对应的图书存入borrow表当中int j = userDao.insertBorrow(id, bookid);String sql = "insert into t_borrow(userid,bookid) value(?,?)";if (j > 0) {JOptionPane.showMessageDialog(null, "加入购物车成功!");fillTable();reset();}

3.我的购物车、我的订单

在这里插入图片描述
在这里插入图片描述

具体实现如下:

//取出用户的“用户名”的信息,查找出对应的borrow表中的图书信息List<String> reader = LoginConfig.reader();String uname = reader.get(0);User u = userDao.selectUname(uname);List<BookAndBorrow> b = userDao.listBook(u.getId());//同样的订单查看,也是根据获取用户名,对于下单记录进行查找List<BookAndBorrow> b = userDao.listBookHistory(userid);for (BookAndBorrow book2 : b) {Vector v = new Vector<>();v.add(dtm.getRowCount() + 1);v.add(book2.getBookName());v.add(book2.getAuthor());v.add(book2.getPrice());//v.add(book2.getBtime().toString());v.add(book2.getRtime().toString());dtm.addRow(v);}

(四)管理员登录模块的实现

1.图书类别添加、图书类别维护

在这里插入图片描述
在这里插入图片描述

2.图书添加、图书修改

在这里插入图片描述
在这里插入图片描述

上述四个功能的实现原理基本相似,这里以图书修改功能的具体实现作出说明:

//要求根据搜索框的内容进行搜索,然后显示对应的全部信息protected void SelectBookActionPerformed(ActionEvent e) {String bookName = this.bookName.getText();String author = this.author.getText();BookType booktype = (BookType) this.bookTypeName.getSelectedItem();String bookTypeName2 = booktype.getBookTypeName();fillTable(bookName, author, bookTypeName2);}
//信息修改,根据文本框的不同属性进行信息的修改protected void updateBookActionPerformed(ActionEvent e) {String id = this.bookId.getText();String bookName = this.bookName2.getText();String author = this.author2.getText();String price = this.price.getText();String bookDesc = this.bookDesc.getText();// 拿单选按钮String sex = "";if (nan.isSelected()) {sex = "男";} else {sex = "女";}// 下拉框的拿值BookType b = (BookType) bookTypeNameJcb.getSelectedItem();int bookTypeId = b.getId();Book book = new Book(Integer.parseInt(id), bookName, author, Float.parseFloat(price), bookDesc, sex,bookTypeId);int i = adminDao.updateBook(book);if (i > 0) {JOptionPane.showMessageDialog(null, "修改成功");reset();fillTable("", "", "");// 更新表格} else {JOptionPane.showMessageDialog(null, "修改失败");reset();}//删除图书全部信息public int deleteBook(int id) {String sql = "delete from t_book where bookTypeid=?";return DButils.jdbc_update(sql, id);}

3.全部订单

在这里插入图片描述

具体实现与普通用户查看我的订单的功能相类似,不同之处只是只是管理员拥有对于全部下单表的查看权限。

public void fillTable() {DefaultTableModel dtm = (DefaultTableModel) table.getModel();dtm.setRowCount(0);// 设置成0行.// 查询出书籍List<BookAndBorrow> b = userDao.AllBookHistory();for (BookAndBorrow book2 : b) {Vector v = new Vector<>();v.add(book2.getUserName());v.add(book2.getBookName());v.add(book2.getAuthor());v.add(book2.getPrice());v.add(book2.getRtime().toString());dtm.addRow(v);}

4.店员信息管理

在这里插入图片描述

(五)通用功能

1.修改密码

在这里插入图片描述

具体代码实现如下:

//首先取出用户的用户名,密码等信息,放在List集合当中
List<String> reader = LoginConfig.reader();String oldPwd = reader.get(1);if (oldPwd.equals(pwd)) {// 原密码相同if (Newpwd.equals(Newpwd2)) {int i = userDao.updatePwd(Newpwd, name);if (i > 0) {JOptionPane.showMessageDialog(null, "修改成功");reset();}} else {JOptionPane.showMessageDialog(null, "两次密码不一致");reset();}} else {// 原密码不一致JOptionPane.showMessageDialog(null, "与原密码不相同");reset();

2.用户退出

在这里插入图片描述

比较容易实现,如下:

public void actionPerformed(ActionEvent e) {// 是 0 否 1int x = JOptionPane.showConfirmDialog(null, "是否退出系统");if (x == 0) {// 退出dispose();LoginConfig.clean();}}

需要完整代码看下面哦~欢迎留言

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/317715.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

无辅源电压继电器 RWY-D2/3 180-440VAC 导轨安装 josef约瑟

RWY-D1型电压继电器&#xff1b; RWY-D2型电压继电器&#xff1b; 一、 概述 RWY-D系列电压继电器&#xff08;以下简称本继电器&#xff09;用于发电机、变压器和输电线的电器保护装置中&#xff0c;作为过电压保护或低电压闭锁的启动原件。本继电器为集成电路静态型继电器…

《数字图像处理-OpenCV/Python》连载:空间滤波之高斯滤波器

《数字图像处理-OpenCV/Python》连载&#xff1a;空间滤波之高斯滤波器 本书京东 优惠购书链接 https://item.jd.com/14098452.html 本书CSDN 独家连载专栏 https://blog.csdn.net/youcans/category_12418787.html 第 10 章 图像卷积与空间滤波 图像滤波是指在尽可能保留图像细…

UOS下通过SSH隧道访问云端内网windows桌面

1 用户痛点 随着时代的发展&#xff0c;众多企业的服务器慢慢走向云端。大量云端服务器节省企业成本的同时&#xff0c;也带来了安全性问题。例如&#xff1a;管理云端的服务器&#xff0c;特别是windows桌面服务器&#xff0c;往往需要给这个服务器分配一个公网IP地址&#x…

面向对象综合训练综合练习(文字版格斗游戏,对象数组,复杂的对象数组操作)

文章目录 练习一&#xff1a;文字版格斗游戏练习二&#xff1a;文字版格斗游戏进阶练习三&#xff1a;对象数组&#xff08;商品&#xff09;练习四&#xff1a;对象数组&#xff08;汽车&#xff09;练习五&#xff1a;对象数组&#xff08;手机&#xff09;练习六&#xff1a…

Java 第23章 反射 本章作业

文章目录 反射修改私有成员变量反射和File 反射修改私有成员变量 public class Homework01 {public static void main(String[] args) throws IllegalAccessException, InstantiationException, NoSuchFieldException, NoSuchMethodException, InvocationTargetException {/***…

Large Language Models Paper 分享

论文1&#xff1a; ChatGPTs One-year Anniversary: Are Open-Source Large Language Models Catching up? 简介 2022年11月&#xff0c;OpenAI发布了ChatGPT&#xff0c;这一事件在AI社区甚至全世界引起了轰动。首次&#xff0c;一个基于应用的AI聊天机器人能够提供有帮助、…

Docker 入门 ------容器互通以及Dockerfile

1. 端口映射以及容器互联 Docker 除了通过网络访问&#xff0c;还提供了两种很方便的功能来满足服务访问的基本需求&#xff1a; 允许映射容器内应用的服务端口到本地宿主主机互联机制实现多个容器间通过容器名来快速访问 1.1 容器映射实现访问容器 1.1.1 从外部访问容器应…

【elfboard linux开发板】4. 文件点灯与创建多进程

ps&#xff1a;提升效率的小tips&#xff1a; 灵活运用vim操作命令&#xff0c;gg快速跳转到文件开头&#xff0c;G跳转到结尾 多行操作 ctrl V shift i 插入修改内容 esc退出编辑 sudo vi /etc/vim/vimrc 在文件中添加如下内容省略重复工作&#xff1a; autocmd BufNewFile …

分布式(8)

目录 36.什么是TCC&#xff1f; 37.分布式系统中常用的缓存方案有哪些&#xff1f; 38.分布式系统缓存的更新模式&#xff1f; 39.分布式缓存的淘汰策略&#xff1f; 40.Java中定时任务有哪些&#xff1f;如何演化的&#xff1f; 36.什么是TCC&#xff1f; TCC&#xff08…

数据库云平台新数科技完成B轮融资,打造全链路智能化数据库云平台

数据库云平台软件厂商「北京新数科技有限公司」&#xff08;以下简称「新数科技」&#xff09;已于2023年完成B1轮和B2轮融资&#xff0c;分别由渤海创富和彬复资本投资&#xff1b;义柏资本担任本轮融资独家财务顾问。 新数科技成立于2014年&#xff0c;当前产品矩阵包括数据库…

使用宝塔在Linux面板搭建网站,并实现公网远程访问

文章目录 前言1. 环境安装2. 安装cpolar内网穿透3. 内网穿透4. 固定http地址5. 配置二级子域名6. 创建一个测试页面 前言 宝塔面板作为简单好用的服务器运维管理面板&#xff0c;它支持Linux/Windows系统&#xff0c;我们可用它来一键配置LAMP/LNMP环境、网站、数据库、FTP等&…

【MPC学习笔记】01:MPC简介(Lecture 1_1 Unconstrained MPC)

本笔记来自北航诸兵老师的课程 课程地址&#xff1a;模型预测控制&#xff08;2022春&#xff09;lecture 1-1 Unconstrained MPC 文章目录 0 MPC 简介0.1 案例引入0.2 系统模型0.3 MPC的优点0.4 MPC的缺点0.5 MPC的未来 1 详细介绍 0 MPC 简介 0.1 案例引入 MPC&#xff08;…