java——电商购物平台

news2024/11/29 10:38:04

1.java编译环境的创建,与所需要用到的插件

(1) 选择的编译器为2022版本的intellij idea

首先新建一个空项目

同时,创建完之后,我们点击 文件 -> 项目结构 

进入项目结构,点击项目,选择好你想要的jdk版本,若没有,可以在idea中下载,这里我使用openjdk-19, 

点击模块,添加模块

 我们在Fram1中完成第一个电商平台,Fram2中完成第二个电商平台以此类推

(2) 所需要用到的插件为:JFormDesigner

 下载安装重启软件之后即可使用窗口——swing

第一个电商平台

1.初步思路:

完成一个电商购物平台的登录注册窗体,点击“点我注册”,显示注册窗体,用户输入用户信息,点击提交后到达显示用户信息的窗体,用户点击登录注册窗体的登录按钮,到达商品信息查询的窗体

分析

四个窗口:电商购物平台登录窗口,用户注册窗口,注册的人员名单,全部的商品名单

两个内容:人员信息,商品信息

2.确定java类

根据分析可以得到要完成6个java类,分别是电商购物平台登录窗口类,用户注册窗口类,注册人员名单类,全部的商品名单类,还有人员信息类和商品信息类

3.源码分析

(1) 人员信息类——user类

        按照初步思路来说人员信息需要的属性有:id,type(管理员,普通人员),password,name,sex,city

        每一次都要get属性并set

    public String getId() {
        return this.id;
    }

    public void setId(String id) {
        this.id = id;
    }

再用tostring方法把所有的属性变为额字符串的形式

所以代码如下

public class user {
    private String id;
    private String type;
    private String password;
    private String name;
    private char sex;
    private String city;

    public String getId() {
        return this.id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return this.name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getType() {
        return this.type;
    }

    public void setType(String type) {
        this.type = type;
    }

    public String getPassword() {
        return this.password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public char getSex() {
        return this.sex;
    }

    public void setSex(char sex) {
        this.sex = sex;
    }

    public String getCity() {
        return this.city;
    }

    public void setCity(String city) {
        this.city = city;
    }

    public user(String id, String type, String password, String name, char sex, String city) {
        this.id = id;
        this.type = type;
        this.password = password;
        this.name = name;
        this.sex = sex;
        this.city = city;
    }


    public String toString() {
        return this.id + ":" + this.type + ":" + this.password + ":" + this.name + ":" + this.sex + ":" + this.city;
    }
}

(2)书籍商品信息类——Category类

所需要的属性为:

 与人员信息操作一致,代码如下

public class Category {
    private String id;
    private String name;
    private String author;
    private String firstlevel;
    private String secondlevel;
    private int number;

    public Category(String id, String name, String author, int number, String firstlevel, String secondlevel) {
        this.id = id;
        this.name = name;
        this.author = author;
        this.firstlevel = firstlevel;
        this.secondlevel = secondlevel;
        this.number = number;
    }

    public String getFirstlevel() {
        return this.firstlevel;
    }

    public void setFirstlevel(String firstlevel) {
        this.firstlevel = firstlevel;
    }

    public String getSecondlevel() {
        return this.secondlevel;
    }

    public void setSecondlevel(String secondlevel) {
        this.secondlevel = secondlevel;
    }

    public String getId() {
        return this.id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return this.name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getAuthor() {
        return this.author;
    }

    public void setAuthor(String author) {
        this.author = author;
    }

    public int getNumber() {
        return this.number;
    }

    public void setNumber(int number) {
        this.number = number;
    }
}

(3) 登录界面——LoginFrame类

首先确定登录界面的情况

首先这些属性需要 JLabel(标签类):用户名,用户类型,密码

                                JTextField(文本框)JPasswordField(文本框)

                                JComboBox<String>(选择框)

                                JButton(按钮)

定义主函数,跳出一个登录页面窗口

    public static void main(String[] args) {
        new LoginFrame();
    }

构造登录页面窗口

  public LoginFrame() {
        this.setSize(400, 300);
        this.setTitle("电商购物-登录页面");
        this.setLocation(300, 200);
    }

 初始化窗口的大小和标题还有位置还要初始化属性和可见度

        this.init();
        this.setVisible(true);

 在初始化方法中,先对于每一个属性赋予初始值,对于文本框进行new+构造方法空值,注册按钮则选择跳转,最后则进行网格布局,p.add在网格中全部添加之后,再确定网格边界的位置,则代码如下:

import java.awt.GridLayout;
import java.awt.LayoutManager;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;

public class LoginFrame extends JFrame {
    private JLabel l_name;
    private JLabel l_type;
    private JLabel l_password;
    private JTextField t_name;
    private JComboBox<String> c_type;
    private JPasswordField p_password;
    private JButton b_login;
    private JButton b_reset;
    private JButton b_register;

    public static void main(String[] args) {
        new LoginFrame();
    }

    public LoginFrame() {
        this.setSize(400, 300);
        this.setTitle("电商购物-登录页面");
        this.setLocation(300, 200);
        this.init();
        this.setVisible(true);
    }

    public void init() {
        this.l_name = new JLabel("用户名", 0);
        this.l_type = new JLabel("用户类型", 0);
        this.l_password = new JLabel("密码", 0);
        this.t_name = new JTextField();
        this.c_type = new JComboBox();
        this.c_type.addItem("管理员");
        this.c_type.addItem("普通用户");
        this.p_password = new JPasswordField();
        this.b_login = new JButton("登录");
        this.b_reset = new JButton("重置");
        this.b_register = new JButton("点我注册");
        this.b_register.addActionListener((e) -> {
            new RegisterFrame();
        });
        this.setLayout((LayoutManager)null);
        JPanel p = new JPanel();
        p.setLayout(new GridLayout(3, 2, 5, 5));
        p.add(this.l_name);
        p.add(this.t_name);
        p.add(this.l_type);
        p.add(this.c_type);
        p.add(this.l_password);
        p.add(this.p_password);
        p.setBounds(5, 5, 375, 185);
        this.add(p);
        p = new JPanel();
        p.setLayout(new GridLayout(1, 3, 5, 5));
        p.add(this.b_login);
        p.add(this.b_reset);
        p.add(this.b_register);
        p.setBounds(5, 195, 375, 60);
        this.add(p);
    }
}

剩余三个窗口类都与之类似,分别是:

注册窗口


import java.awt.GridLayout;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JRadioButton;
import javax.swing.JTextField;

public class RegisterFrame extends JFrame {
    private JLabel account;
    private JLabel name;
    private JLabel password;
    private JLabel confirmpass;
    private JLabel sex;
    private JLabel city;
    private JLabel type;
    private JTextField t_account;
    private JTextField t_name;
    private JButton regedit;
    private JButton reset;
    private JPasswordField t_password;
    private JPasswordField t_confirmspass;
    private JRadioButton t_sex1;
    private JRadioButton t_sex2;
    private JComboBox t_city;
    private JComboBox c_type;

    public RegisterFrame() {
        this.setTitle("电商注册平台");
        this.setSize(300, 450);
        this.setLocation(300, 300);
        this.init();
        this.setVisible(true);
    }

    public void init() {
        this.setLayout(new GridLayout(8, 2, 5, 5));
        this.account = new JLabel("账号", 0);
        this.add(this.account);
        this.t_account = new JTextField();
        this.add(this.t_account);
        this.name = new JLabel("姓名", 0);
        this.add(this.name);
        this.t_name = new JTextField();
        this.add(this.t_name);
        this.password = new JLabel("密码", 0);
        this.t_password = new JPasswordField();
        this.add(this.password);
        this.add(this.t_password);
        this.confirmpass = new JLabel("确认密码", 0);
        this.t_confirmspass = new JPasswordField();
        this.add(this.confirmpass);
        this.add(this.t_confirmspass);
        this.type = new JLabel("用户类型", 0);
        this.add(this.type);
        this.c_type = new JComboBox();
        this.c_type.addItem("管理员");
        this.c_type.addItem("普通用户");
        this.add(this.c_type);
        this.sex = new JLabel("性别", 0);
        this.add(this.sex);
        JPanel J = new JPanel();
        this.t_sex1 = new JRadioButton("男");
        this.t_sex2 = new JRadioButton("女");
        J.add(this.t_sex1);
        J.add(this.t_sex2);
        this.add(J);
        this.city = new JLabel("城市", 0);
        this.add(this.city);
        this.t_city = new JComboBox();
        this.t_city.addItem("长治");
        this.t_city.addItem("太原");
        this.t_city.addItem("运城");
        this.t_city.addItem("大同");
        this.add(this.t_city);
        this.regedit = new JButton("注册");
        this.add(this.regedit);
        this.regedit.addActionListener((e) -> {
            this.initdata();
        });
        this.reset = new JButton("重置");
        this.add(this.reset);
    }

    public void initdata() {
        String id = this.t_account.getText().trim();
        String name = this.t_name.getText().trim();
        String type = (String)this.c_type.getSelectedItem();
        char sex;
        if (this.t_sex1.isSelected()) {
            sex = 30007;
        } else {
            sex = 22899;
        }

        String city = (String)this.t_city.getSelectedItem();
        String password = null;
        if ((new String(this.t_password.getPassword())).equals(new String(this.t_confirmspass.getPassword()))) {
            password = new String(this.t_password.getPassword());
            user u = new user(id, type, password, name, sex, city);
            new UserInfoFrame(u);
        } else {
            JOptionPane.showMessageDialog(this, "前后输入密码不一致!请重新输入。", "警告对话框", 2);
            this.t_password.setText("");
            this.t_confirmspass.setText("");
        }

    }
}

书籍商品窗口 


import java.awt.GridLayout;
import java.awt.LayoutManager;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;

public class BookInfoFrame extends JFrame {
    private JTable t_book;
    private JLabel welcomecontent1;
    private JLabel welcomecontent2;
    private JLabel bookname;
    private JLabel bookkind;
    private JTextField t_name;
    private JComboBox t_kind;
    private JButton query;
    private JPanel J1;
    private JPanel J2;
    private JPanel J3;
    private JPanel J4;

    public BookInfoFrame(Category[] C, user u) {
        this.setLayout(new GridLayout(7, 3));
        this.setTitle("电商购物平台-商品查询页面");
        this.setSize(500, 500);
        this.setLocation(500, 200);
        String temp = null;
        if (u.getSex() == 30007) {
            temp = "先生";
        } else if (u.getSex() == 22899) {
            temp = "女士";
        }

        this.setLayout((LayoutManager)null);
        this.J1 = new JPanel();
        this.J1.setLayout(new GridLayout(1, 2));
        String var10003 = u.getName();
        this.welcomecontent1 = new JLabel("您好," + var10003 + temp);
        this.welcomecontent2 = new JLabel("来自:" + u.getCity());
        this.J1.add(this.welcomecontent1);
        this.J1.add(this.welcomecontent2);
        this.J1.setBounds(15, 5, 800, 20);
        this.add(this.J1);
        this.bookname = new JLabel("书籍名称:", 0);
        this.t_name = new JTextField();
        this.bookkind = new JLabel("书籍种类:", 0);
        this.t_kind = new JComboBox();
        this.t_kind.addItem("小说类");
        this.t_kind.addItem("工具类");
        this.query = new JButton("查询");
        this.query.addActionListener((e) -> {
            this.showmessage();
        });
        this.J2 = new JPanel();
        this.J2.setLayout(new GridLayout(1, 5, 5, 5));
        this.J2.add(this.bookname);
        this.J2.add(this.t_name);
        this.J2.add(this.bookkind);
        this.J2.add(this.t_kind);
        this.J2.add(this.query);
        this.J2.setBounds(5, 45, 450, 30);
        this.add(this.J2);
        this.init(C);
        this.setVisible(true);
    }

    public void init(Category[] C) {
        this.J3 = new JPanel();
        Object[] t_title = new Object[]{"书籍编号", "书籍名称", "书籍作者", "库存", "书籍分类"};
        Object[][] books = new Object[C.length][5];

        for(int i = 0; i < C.length; ++i) {
            books[i][0] = C[i].getId();
            books[i][1] = C[i].getName();
            books[i][2] = C[i].getAuthor();
            books[i][3] = C[i].getNumber();
            Object[] var10000 = books[i];
            String var10002 = C[i].getFirstlevel();
            var10000[4] = var10002 + "->" + C[i].getSecondlevel();
        }

        this.t_book = new JTable(books, t_title);
        this.J3.add(new JScrollPane(this.t_book));
        this.J3.setBounds(6, 100, 480, 300);
        this.add(this.J3);
        JButton buy = new JButton("购买");
        buy.addActionListener((e) -> {
            this.warn();
        });
        buy.setBounds(370, 420, 80, 30);
        this.add(buy);
    }

    public void showmessage() {
        JOptionPane.showMessageDialog(this, "表格已经做出来了,别不识好歹(doge),请使用SQL server去处理哦亲(^_^)!", "警告对话框", 2);
    }

    public void warn() {
        JOptionPane.showMessageDialog(this, "你没有钱!", "警告对话框", 2);
    }
}

管理者窗口 



import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;

public class UserInfoFrame extends JFrame {
    private JTable t_user;

    public UserInfoFrame(user u) {
        this.setTitle("电商购物-注册用户信息");
        this.setSize(500, 400);
        this.setLocation(1000, 200);
        this.init(u);
        this.setVisible(true);
    }

    public void init(user u) {
        Object[] t_title = new Object[]{"用户名", "姓名", "密码", "性别", "城市"};
        Object[][] users = new Object[][]{{u.getId(), u.getName(), u.getPassword(), u.getSex(), u.getCity()}};
        this.t_user = new JTable(users, t_title);
        this.add(new JScrollPane(this.t_user));
        Category[] c = new Category[]{new Category("b01", "Java核心技术", "霍斯特曼", 50, "工具类", "软件编程"), new Category("b02", "名著-三国演义", "罗贯中", 40, "小说类", "历史"), new Category("b03", "名著-水浒传", "施耐庵", 30, "小说类", "历史"), new Category("b04", "名著-红楼梦", "曹雪芹", 20, "小说类", "历史")};
        new BookInfoFrame(c, u);
    }
}

成果: 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python适合0基础菜鸟学吗

前言 经常有小伙伴问&#xff1a;Python适合0基础初学编程的人学吗&#xff1f;今天我们就来从Python的功能和特性方面看一下&#xff0c;Python是否能让新人快速上手。 1、非常适合。我觉得刚开始学编程&#xff0c;负担越少越好&#xff0c;应该尽快能做出东西来。刚开始学…

day02 linux常用命令

day02 linux 第一章 Linux常用命令 第一节 进程相关命令 1. 查看进程状态 1.1 命令的使用 ps命令是用于查看进程状态的命令&#xff0c;它常和e参数(对应单词entire&#xff0c;表示全部。具体指显示系统中全部的进程信息。)&#xff0c;以及f参数(对应单词full-formate&a…

Node.js 入门教程 13 在 Node.js 中从命令行接收输入

Node.js 入门教程 Node.js官方入门教程 Node.js中文网 本文仅用于学习记录&#xff0c;不存在任何商业用途&#xff0c;如侵删 文章目录Node.js 入门教程13 在 Node.js 中从命令行接收输入13 在 Node.js 中从命令行接收输入 如何使 Node.js CLI 程序具有交互性&#xff1f; 从…

卡塔尔世界杯--程序员的诗和远方

&#x1f497;wei_shuo的个人主页 &#x1f4ab;wei_shuo的学习社区 &#x1f310;Hello World &#xff01; 卡塔尔世界杯–程序员的诗和远方 2022年卡塔尔世界杯&#xff08;FIFA World Cup Qatar 2022&#xff09;第二十二届世界杯足球赛&#xff0c;历史上首次在卡塔尔和中…

【学习笔记44】JavaScript的事件传播

JavaScript的事件传播一、事件传播1、事件传播的说明2、阻止事件传播二、目标冒泡捕获1、冒泡2、捕获三、事件委托1、事件委托的说明2、为什么要用事件委托四、阻止默认事件1、方法一2、方法二一、事件传播 在触发子元素的事件时, 会将行为传播给父级的同类型事件触发了子元素的…

机器学习1综述

文章目录一、综述学习环境&#xff1a;二、机器学习方法的分类1、监督学习&#xff1b;2、非监督学习&#xff1b;3、半监督学习&#xff1b;4、增强学习&#xff1b;三、机器学习方法分类2、批量学习&#xff08;离线学习&#xff09;Batch Learing&#xff1b;3、参数学习&am…

二叉树的递归问题

目录 一、相同的树 二、另一棵树的子树 三、翻转二叉树 四、平衡二叉树 五、对称二叉树 一、相同的树 给你两棵二叉树的根节点 p 和 q &#xff0c;编写一个函数来检验这两棵树是否相同。 如果两个树在结构上相同&#xff0c;并且节点具有相同的值&#xff0c;则认为它们是…

【毕业设计-课程设计】-超声波测距

资源链接在文章最后,订阅查看获取全部内容及资料,如需可私信提供硬件。 目 录 1 绪论 2 1.1 项目研究背景及意义 2 2 总体设计方案及论证 2 2.1 总体方案设计 2 3 硬件实现及单元电路设计 3 3.1 主控制模块 3 3.2 电源设计 4 3.3 超声波测试模块 4 3.3.1 超声波的特性 5 3.3…

【Python】顺序、条件、循环语句

文章目录一. 顺序语句二. 条件语句1. 什么是条件语句2. 缩进和代码块3. 空语句 pass4. 练习三. 循环语句1. while 循环2. for 循环一. 顺序语句 默认情况下&#xff0c;Python 的代码执行顺序&#xff0c;是从上到下依次执行的&#xff1a; 执行结果一定为 “123”&#xff0…

【工具门户】Backstage配置使用PostgreSQL(三)

先决条件 If the database is not hosted on the same server as the Backstage app, the PostgreSQL port needs to be accessible (the default is 5432 or 5433) PostgreSQL数据库默认端口为5432或5433,如果数据库与Backstage应用不在同一台机器上,需开放PostgreSQL端口…

MyBatis框架一二级缓存含代码演示

目录 1.什么是缓存? 2. Mybatis的一级缓存 2.1实验一: 2.2实验二: 3.Mybatis的二级缓存 3.1 二级缓存需要配置才可以使用: 3.2 实验开始&#xff01;&#xff01; 4.总结 1.什么是缓存? 缓存就是数据交换的缓冲区&#xff08;称作Cache&#xff09;&#xff0c;当某一…

学习Python中turtle模块的基本用法(2:基本绘图函数测试)

个人感觉turtle模块中的绘图函数是按人手拿着画笔一笔一画地画图的思路定义的&#xff0c;这与C#中的GDI函数、html5中canvas的绘图函数及Tkinter中Canvas的绘图函数的定义思路存在差异&#xff0c;但也能完成后面绝大部分的绘图功能&#xff08;目前看到的turtle文章及帮助文档…

安装OpenGL

提示错误信息&#xff1a; (base) C:\Users\Tina\PycharmProjects\FunnyToys-main>conda install opengl Collecting package metadata (current_repodata.json): done Solving environment: failed with initial frozen solve. Retrying with flexible solve. Collecting…

python 栈空间不足异常 Process finished with exit code: -1073741571

问题现象 在pycharm使用debug模式调试代码时&#xff0c;异常退出&#xff0c;且错误码为-1073741571。除了错误码外&#xff0c;并没有看到其它报错。 分析 查阅资料&#xff1a; Process finished with exit code -1073741571 (0xC00000FD) when trying to implement ab…

AxureRP9的新特性介绍和技巧分享

AxureRP自去年8月第一个测试版本发布以来&#xff0c;已经一年多了&#xff0c;官方版本已经发布了近半年&#xff0c;但这个版本的用户声誉是褒贬不一的。许多用户反馈了他们对新版本的喜欢和肯定&#xff0c;但一些老用户仍然不愿意接受它&#xff0c;甚至保持抵制。 根据我…

【Hack The Box】linux练习-- Tabby

HTB 学习笔记 【Hack The Box】linux练习-- Tabby &#x1f525;系列专栏&#xff1a;Hack The Box &#x1f389;欢迎关注&#x1f50e;点赞&#x1f44d;收藏⭐️留言&#x1f4dd; &#x1f4c6;首发时间&#xff1a;&#x1f334;2022年11月22日&#x1f334; &#x1f36…

【数据结构】基础:二叉树

【数据结构】基础&#xff1a;二叉树基础 摘要&#xff1a;本文将会介绍二叉树的基础内容&#xff0c;首先引入树的概念&#xff0c;了解树的基本概念与性质&#xff0c;再对二叉树的概念和性质进行分析&#xff0c;最后对其方法进行实现&#xff0c;最重要的是理解对于二叉树方…

世界65个国家贸易开放度数据 2005-2019年

一、数据介绍 数据名称&#xff1a;UNtrade数据库 数据年份&#xff1a;2005-2019年 数据范围&#xff1a;世界65个国家 数据来源&#xff1a;各地方统计局 部分数据如下&#xff1a; 二、参考文献 用途&#xff1a;研究人民币实际汇率与贸易差额之间的关系等。 [1]卢向…

R语言文本挖掘tf-idf,主题建模,情感分析,n-gram建模研究

数据集中的Usenet公告板包括新汽车&#xff0c;体育和密码学等主题。最近我们被客户要求撰写关于主题建模的研究报告&#xff0c;包括一些图形和统计输出。我们对20个Usenet公告板的20,000条消息进行分析。 相关视频&#xff1a;文本挖掘&#xff1a;主题模型&#xff08;LDA&a…

SpringBoot SpringBoot 原理篇 2 自定义starter 2.1 记录系统访客独立IP访问次数案例介绍

SpringBoot 【黑马程序员SpringBoot2全套视频教程&#xff0c;springboot零基础到项目实战&#xff08;spring boot2完整版&#xff09;】 SpringBoot 原理篇 文章目录SpringBootSpringBoot 原理篇2 自定义starter2.1 记录系统访客独立IP访问次数案例介绍2.1.1 介绍2.1.2 需求…