Java实战之网上书店管理系统的实现

网友投稿 269 2022-07-26


目录1.效果展示2.需求功能3.系统总体设计及部分代码3.1登录http://模块设计3.2新用户的注册3.3图书添加模块3.4图书添加事件3.5买家信息维护3.6订单管理模块4.数据库设计4.1系统数据库设计4.2系统E-R图设计5.JDBC连接数据库

1.效果展示

2.需求功能

用户可以进行注册登陆系统,在用户的界面上,其可以进行查看网上书店里的图书类别和所在类别下的图书,根据自己的需求可在订单项目里添加订单购买自己喜欢的图书;

管理员可以通过自己的账号登录到管理员系统对书店进行管理,其可实现对图书的添加,修改,查询,和删除功能,可以查看用户的订单,修改和维护订单。添家客户的信息用以统计数据。

在构造系统时,首先从需求出发构造数据库,然后再由数据库表结合需求划分系统功能模块。这样,就把一个大的系统解成了几个小系统。这里把系统划分为了三个模块:用户登录模块,管理员模块,用户购买模块。模块分别能够实现以下功能:

登录模块:实现登录,注册功能。管理员模块:实现对图书的添加修改和删除以及对订单的添加修改和删除功能。用户购买模块:实现对图书的查找以及对所需图书的下单功能。

3.系统总体设计及部分代码

3.1登录模块设计

用户正确输入用户名和密码,连接到数据库,登录成功!

private void loginActionPerformed(ActionEvent evt) {

String userName=this.userNameTxt.getText();

String password=new String(this.passwordTxt.getPassword());

if(StringUtil.isEmpty(userName)){

JOptionPane.showMessageDialog(null, "用户名不能为空!");

return;

}

if(StringUtil.isEmpty(password)){

JOptionPane.showMessageDialog(null, "密码不能为空!");

return;

}

CUser cuser=new CUser(userName,password);

Connection con=null;

try {

con=dbUtil.getCon();

CUser currentCUser =cuserDao.login(con,cuser);

if(currentCUser!=null){

dispose();

new CMainFrm().setVisible(true);

}else{

JOptionPane.showMessageDialog(null, "用户名或者密码错误!");

}

} catch (Exception e) {

// TODO 自动生成的 catch 块

e.printStackTrace();

}

3.2新用户的注册

此模块的核心是创建实例化对象。

private void registrationActionPerformed(ActionEvent evt) {

String userName=thsxtTZis.userNameTxt.getText();

String password=this.passwordTxt.getText();

if(StringUtil.isEmpty(userName)){

JOptionPane.showMessageDialog(null, "用户名不能为空!");

return;

}

if(StringUtil.isEmpty(password)){

JOptionPane.showMessageDialog(null, "密码不能为空!");

return;

}

Registration registration= new Registration(userName,password);

Connection con= null;

try {

con=dbUtil.getCon();

int n= registrationDao.add(con, registration);

if(n==1){

JOptionPane.showMessageDialog(null, "注册成功!");

resetValue();

}else{

JOptionPane.showMessageDialog(null, "注册失败!");

}

}catch(Exception e) {

}finally {

try {

dbUtil.closeCon(con);

} catch (Exception e) {

// TODO 自动生成的 catch 块

e.printStackTrace();

JOptionPane.showMessageDialog(null, "注册失败!");

}

}

}

3.3图书添加模块

管理员在此界面上可对系统里的图书进行查询修改和删除。

public static void main(String[] args) {

EventQueue.invokeLater(new Runnable() {

public void run() {

try {

BookAddInterFrm frame = new BookAddInterFrm();

frame.setVisible(true);

} catch (Exception e) {

e.printStackTrace();

}

}

});

}

3.4图书添加事件

此界面主要实现图书的添加功能。

/**

*图书添加事件

*/

private void bookAddActionPerformed(ActionEvent evt) {

String bookName=this.bookNameTxt.getText();

String author=this.authorTxt.getText();

String price=this.priceTxt.getText();

String bookDesc=this.bookDescTxt.getText();

if(StringUtil.isEmpty(bookName)){

JOptionPane.showMessageDialog(null, "图书名称不能为空!");

return;

}

if(StringUtil.isEmpty(author)){

return;

}

if(StringUtil.isEmpty(price)){

JOptionPane.showMessageDialog(null, "图书价格不能为空!");

return;

}

String sex="";

if(manJrb.isSelected()){

sex="男";

}else if(femaleJrb.isSelected()){

sex="女";

}

BookType bookType=(BookType) bookTypeJcb.getSelectedItem();

int bookTypeId=bookType.getId();

Book book=new Book(bookName,author, sex, Float.parseFloat(price) , bookTypeId, bookDesc);

Connection con=null;

try{

con=dbUtil.getCon();

int addNum=bookDao.add(con, book);

if(addNum==1){

JOptionPane.showMessageDialog(null, "图书添加成功!");

resetValue();

}else{

JOptionPane.showMessageDialog(null, "图书添加失败!");

}

}catch(Exception e){

e.printStackTrace();

JOptionPane.showMessageDialog(null, "图书添加失败!");

}finally{

try {

dbUtil.closeCon(con);

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

/**

* 重置表单

*/

private void resetValue(){

this.bookNameTxt.setText("");

this.authorTxt.setText("");

this.priceTxt.setText("");

this.manJrb.setSelected(true);

this.bookDescTxt.setText("");

if(this.bookTypeJcb.getItemCount()>0){

this.bookTypeJcb.setSelectedIndex(0);

}

}

/**

* 初始化图书类别下拉框

*/

private void fillBookType(){

ConnesxtTZction con=null;

BookType bookType=null;

try{

con=dbUtil.getCon();

ResultSet rs=bookTypeDao.list(con, new BookType());

while(rs.next()){

bookType=new BookType();

bookType.setId(rs.getInt("id"));

bookType.setBookTypeName(rs.getString("bookTypeName"));

this.bookTypeJcb.addItem(bookType);

}

}catch(Exception e){

e.printStackTrace();

}finally{

}

}

}

3.5买家信息维护

此模块主要用于对买家信息的查找和维护。

/**

* 买家信息搜索事件处理

*/

protected void consumerSerachActionPerformed(ActionEvent evt) {

String s_consumerName= this.s_consumerNameTxt.getText();

Consumer consumer=new Consumer();

consumer.setConsumerName(s_consumerName);

this.fillTable(consumer);

}

private void fillTable(Consumer consumer){

DefaultTableModel dtm=(DefaultTableModel) consumerTable.getModel();

dtm.setRowCount(0); // 设置成0行

Connection con=null;

try{

con=dbUtil.getCon();

ResultSet rs=consumerDao.list(con, consumer);

while(rs.next()){

Vector v=new Vector();

v.add(rs.getString("id"));

v.add(rs.getString("consumerName"));

v.add(rs.getString("sex"));

v.add(rs.getString("age"));

v.add(rs.getString("number"));

v.add(rs.getString("bookName"));

dtm.addRow(v);

}

}catch(Exception e){

e.printStackTrace();

}finally {

try {

dbUtil.closeCon(con);

} catch (Exception e) {

// TODO 自动生成的 catch 块

e.printStackTrace();

}

}

}

/**

* 买家信息修改

*/

private void consumerUpdateActionEvet(ActionEvent evt) {

String id=idTxt.getText();

String consumerName=consumerNameTxt.getText();

String sex=sexTxt.getText();

String age=ageTxt.getText();

String number=numberTxt.getText();

String bookName=bookNameTxt.getText();

if(StringUtil.isEmpty(id)){

JOptionPane.showMessageDialog(null, "请选择要修改的记录");

return;

}

if(StringUtil.isEmpty(consumerName)){

JOptionPane.showMessageDialog(null, "购书者名称不能为空");

return;

}

if(StringUtil.isEmpty(age)){

JOptionPane.showMessageDialog(null, "年龄不能为空");

return;

}

if(StringUtil.isEmpty(number)){

JOptionPane.showMessageDialog(null, "联系方式不能为空");

return;

}

if(StringUtil.isEmpty(bookName)){

JOptionPane.showMessageDialog(null, "图书名称不能为空");

return;

}

if(StringUtil.isEmpty(sex)){

JOptionPane.showMessageDialog(null, "性别不能为空");

return;

}

Consumer consumer=new Consumer(Integer.parseInt(id),consumerName,sex,age,number,bookName);

Connection con=null;

try {

con=dbUtil.getCon();

con=dbUtil.getCon();

int modifyNum=consumerDao.update(con, consumer);

if(modifyNum==1){

JOptionPane.showMessageDialog(null, "修改成功");

this.resetValue();

this.fillTable(new Consumer());

}else{

JOptionPane.showMessageDialog(null, "修改失败");

}

}catch(Exception e) {

e.printStackTrace();

JOptionPane.showMessageDialog(null, "修改失败");

}finally {

try {

dbUtil.closeCon(con);

} catch (Exception e) {

// TODO 自动生成的 catch 块

e.printStackTrace();

}

}

}

3.6订单管理模块

此模块用于图书订单管理,查找,修改,删除等功能的实现。

/**

* 订单修改事件

*/

protected void orderUpdateActionPerformed(ActionEvent evt) {

String id=this.idTxt.getText();

if(StringUtil.isEmpty(id)){

JOptionPane.showMessageDialog(null, "请选择要修改的记录");

return;

}

String addressee=this.addresseeTxt.getText();

String number=this.numberTxt.getText();

String deliveryMent=this.deliveryMentTxt.getText();

String paymentMethod=this.paymentMethodTxt.getText();

String shippingAddress=this.shippingAddressTxt.getText();

if(StringUtil.isEmpty(addressee)){

JOptionPane.showMessageDialog(null, "收件人不能为空!");

return;

}

if(StringUtil.isEmpty(number)){

JOptionPane.showMessageDialog(null, "购买数量不能为空!");

return;

}

if(StringUtil.isEmpty(deliveryMent)){

JOptionPane.showMessageDialog(null, "运送方式不能为空!");

return;

}

if(StringUtil.isEmpty(paymentMethod)){

JOptionPane.showMessageDialog(null, "支付方式不能为空!");

return;

}

if(StringUtil.isEmpty(paymentMethod)){

JOptionPane.showMessageDialog(null, "收件地址不能为空!");

return;

}

Book book=(Book) this.bookNameJcb.getSelectedItem();

int bookId=book.getId();

Order order =new Order(Integer.parseInt(id), addressee, number, deliveryMent, paymentMethod, shippingAddress,

bookId);

Connection con =null;

try {

con=dbUtil.getCon();

int addNum=orderDao.update(con, order);

if(addNum==1) {

JOptionPane.showMessageDialog(null, "订单修改成功!");

resetValue();

this.fillTable(new Order());

}else {

JOptionPane.showMessageDialog(null, "订单修改失败!");

}

}catch(Exception e) {

e.printStackTrace();

}finally {

try {

dbUtil.closeCon(con);

} catch (Exception e) {

// TODO 自动生成的 catch 块

e.printStackTrace();

JOptionPane.showMessageDialog(null, "订单添加失败!");

}

}

}

4.数据库设计

4.1系统数据库设计

使用sql语句查询项目存储数据用到的数据库表格:

1.管理员信息表

列名数据类型长度主键非空自增IdInt11√√√usenamevarchar20   passwordvarchar20

2.图书类型信息表

列名数据类型长度主键非空自增idInt11√√√BookTypeNameVarchar20   bookTypeDesVarchar20

3.图书信息表

列名数据类型长度主键非空自增BooknameInt11√√√AuthorVarchar20   SexVarchar10   PriceFloat10   bookTypeIdInt11   bookDescVarchar1000

4.订单信息表

列名数据类型长度主键非空自增BuyidInt11√√√NameVarchar20   SexVarchar20   BuybooknamtelVarchar20   WayVarchar20   AddressVarchar20

5.买家信息表

列名数据类型长度主键非空自增IdInt11√√√ConsumernameVarchar50   SexVarchar50   AgeVarchar50   NumberVarchar50   BooknameVarchar50

4.2系统E-R图设计

5.JDBC连接数据库

一定要安装数据库jdbc驱动包!

代码展示:

package com.util;

import java.sql.Connection;

import java.sql.DriverManager;

/**

* 数据库工具类

*/

public class DbUtil {

private String jdbcName="com.mysql.cj.jdbc.Driver"; // 驱动名称

数据库连接地址 由于数据库为最新版本 导致驱动名称已改为com.mysql.cj.jdbc.Driver

//由于时区错乱 执行命令给MySQL服务器设置时区为东八区 serverTimezone=GMT%2B8

private String dbUrl="jdbc:mysql://localhost:3306/db_book?serverTimezone=GMT%2B8";// 数据库连接地址

private String dbuserName = "root"; // 用户名

private String dbpassWord = "abc123"; // 密码

/**

* 获取数据库连接

*/

public Connection getCon()throws Exception{

Class.forName(jdbcName);

Connection con=DriverManager.getConnection(dbUrl, dbuserName, dbpassWord);

return con;

}

/**

* 关闭数据库连接

*/

public void closeCon(Connection con)throws Exception{

if(con!=null){

con.close();

}

}

public static void main(String[] args) {

DbUtil dbUtil=new DbUtil();

try {

dbUtil.getCon();

System.out.println("数据库连接成功!");

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

System.out.println("数据库连接失败");

}

}

}

以上就是Java实战之网上书店管理系统的实现的详细内容,更多关于Java书店管理系统的资料请关注我们其它相关文章!


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:java使用stream判断两个list元素的属性并输出方式
下一篇:Java利用遗传算法求解最短路径问题
相关文章

 发表评论

暂时没有评论,来抢沙发吧~