Проектирование и внедрение системы заказов на базе JavaSwing+Mysql

Java задняя часть

Это 22-й день моего участия в августовском испытании обновлений. Узнайте подробности мероприятия: Испытание августовского обновления

Предисловие:

    Этот проект разработан с использованием Java Swing, который может реализовать вход/регистрацию/сброс системы заказов в ресторане, а администратор может управлять информацией о пакетах в ресторане, добавлять пакеты, поддерживать, изменять и запрашивать информацию о пакетах, обрабатывать информацию о заказах, несколько основных модули, такие как контроль состояния процесса, изменение запроса и пароля, выход из системы и выход. Терминал заказа пользователя может войти в систему для просмотра информации о пакете. Операция заказа и просмотр статуса заказа, дизайн интерфейса относительно краток, подходит для разработки курсов Java для начинающих и использования технологий обучения.

Резюме:

      С развитием индустрии общественного питания в моей стране, из-за низкого порога индустрии общественного питания, большинство владельцев предприятий общественного питания в Китае развивались из небольших магазинов, и большинство из них управляется семьей, а многие до сих пор «управляется человеком». ", и нет современной системы предприятия и системы надзора и управления, поэтому из концепции осведомленности, бизнес-мышления и уровня управления все еще необходимо специализироваться. С повышением уровня жизни населения сфера общественного питания занимает все более важное место в сфере услуг. Стремление выделиться в нынешней все более жесткой конкуренции в сфере общественного питания стало целью, которую преследует каждый оператор отрасли общественного питания. Онлайн-заказы осознали экономическую эффективность небольших витрин и решили проблему невозможности увеличения оборота из-за небольших витрин.Это новая бизнес-модель с небольшими инвестициями и большими результатами. Сегодня, после популяризации компьютеров, Китай вступил в информационную эпоху Интернета, а темп жизни и работы стал актуальным вместе со скоростью передачи информации. От доставки писем до электронной почты, от традиционной телефонной связи до телефонной сети IP-телефонии, все виды поведения, которые изначально принадлежали к реальной жизни, постепенно переходят в Интернет, и традиционные методы покупок также развиваются в Интернет, который становится все более популярным новым способом потребления. Точно так же индустрия общественного питания, которая является основой индустрии услуг, неизбежно имеет тенденцию к объединению в сеть.

Основные модули:

Вход пользователя, регистрация, сброс

Сторона администратора: обслуживание информации о пакете, запросы, операции модификации и удаления, запрос информации о заказе, изменение статуса процесса, изменение пароля и т. д.

Клиент: просмотр информации о пакете, операции с заказом, проверка статуса заказа, изменение пароля и т. д.

Функциональный скриншот:

войти Зарегистрироваться

Добавить информацию о плане

Администратор нажимает, чтобы добавить информацию о пакете, ввести соответствующую информацию, выбрать изображения и т. д., чтобы завершить добавление.

Добавить результат:

Вставьте часть данных в базу данных и успешно добавьте ее

Обслуживание информации о пакете:

Когда администратор входит на страницу обслуживания пакета, он/она может выполнить нечеткий запрос данных в соответствии с такими данными, как имя пакета и ценовой диапазон, и выбрать информацию о пакете, чтобы изменить или удалить пакет.

Управление заказами:

Администратор входит на страницу управления заказами, может запросить данные заказа и процесс статуса в соответствии с информацией о заказе, а также может изменить статус доставки заказа.

 

изменить пароль:

После ввода старого пароля и прохождения проверки дважды введите один и тот же новый пароль, чтобы завершить изменение пароля.

Страница заказа пользователя:

добавить в корзину:

Успешно отправить заказ:

 

Просмотр статуса заказа и отмена действий с заказом:

Некоторые ключевые коды:

Регистрация входа пользователя:

/**
 * 用户登陆模块
 * 
 * @author admin
 */
public class LogOnFrm extends javax.swing.JFrame {

	DbUtil dbUtil = new DbUtil();
	UserDao userDao = new UserDao();
	public static User s_currentUser = null;// 保存登陆用户的参数

	/** Creates new form LogOnFrm */
	public LogOnFrm() {
		// 改变系统默认字体
		Font font = new Font("Dialog", Font.PLAIN, 12);
		java.util.Enumeration keys = UIManager.getDefaults().keys();
		while (keys.hasMoreElements()) {
			Object key = keys.nextElement();
			Object value = UIManager.get(key);
			if (value instanceof javax.swing.plaf.FontUIResource) {
				UIManager.put(key, font);
			}
		}
		initComponents();
		// 设置frame居中显示
		this.setLocationRelativeTo(null);
	}


	// 登陆验证显示登陆以后界面
	private void jb_logonActionPerformed(java.awt.event.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;
		}
		User user = new User(userName, password);
		Connection con = null;
		try {
			con = dbUtil.getCon();
			User currentUser = userDao.login(con, user);
			if (currentUser != null) {
				s_currentUser = currentUser;// 保存登陆的用户
				int role = currentUser.getRank();
				if (role == 1) {
					this.dispose();
					new AdminFrm().setVisible(true);// 进入管理员页面
				} else if (role == 0) {
					this.dispose();
					new UserOrderFrm().setVisible(true);// 进入用户点餐界面
				}
			} else {
				JOptionPane.showMessageDialog(null, "用户名或密码错误");
			}
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			JOptionPane.showMessageDialog(null, "用户名或密码错误");
		} finally {
			try {
				dbUtil.closeCon(con);
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}

	}

	
	/**
	 * @param args
	 *  the command line arguments
	 */
	public static void main(String args[]) {
		java.awt.EventQueue.invokeLater(new Runnable() {
			public void run() {
				new LogOnFrm().setVisible(true);
			}
		});
	}

	// GEN-BEGIN:variables
	// Variables declaration - do not modify
	private javax.swing.JLabel jLabel1;
	private javax.swing.JLabel jLabel2;
	private javax.swing.JLabel jLabel3;
	private javax.swing.JButton jb_logon;
	private javax.swing.JButton jb_register;
	private javax.swing.JButton jb_reset;
	private javax.swing.JPasswordField passwordTxt;
	private javax.swing.JTextField userNameTxt;
	// End of variables declaration//GEN-END:variables

}

Добавьте информацию о плане:

/**
 * 套餐添加
 * 
 * @author admin
 */
public class GoodsAddInterFrm extends javax.swing.JInternalFrame {

	DbUtil dbUtil = new DbUtil();
	GoodsDao goodsDao = new GoodsDao();

	/** Creates new form GoodsAddInterFrm */
	public GoodsAddInterFrm() {
		initComponents();
		this.setLocation(200, 80);

	}

	private void jb_addActionPerformed(java.awt.event.ActionEvent evt) {
		String goodsName = this.goodsNameTxt.getText();
		String goodsDesc = this.goodsDescTxt.getText();
		String price = this.priceTxt.getText();
		String imageLink = this.imageLinkTxt.getText();
		if (StringUtil.isEmpty(goodsName)) {
			JOptionPane.showMessageDialog(null, "套餐名称不能为空!");
			return;
		}
		if (StringUtil.isEmpty(price)) {
			JOptionPane.showMessageDialog(null, "套餐价格不能为空!");
			return;
		}
		if (!StringUtil.isNum(price)) {
			JOptionPane.showMessageDialog(null, "请重新输入套餐价格!");
			return;
		}
		Goods goods = new Goods(goodsName, goodsDesc, Float.parseFloat(price), imageLink);
		Connection con = null;
		try {
			con = dbUtil.getCon();
			int n = goodsDao.GoodsAdd(con, goods);
			if (n == 1) {
				JOptionPane.showMessageDialog(null, "套餐添加成功");
				this.resetValues();
			} else {
				JOptionPane.showMessageDialog(null, "套餐添加失败");
			}
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			JOptionPane.showMessageDialog(null, "套餐添加失败2");
		}
	}


	// 点击选择图片操作
	private void jb_chooserActionPerformed(java.awt.event.ActionEvent evt) {
		JFileChooser chooser = new JFileChooser();// 创建文件对话框
		FileNameExtensionFilter filter = new FileNameExtensionFilter("JPG & GIF Images", "jpg", "gif");// 创建文件过滤器
		chooser.setFileFilter(filter);// 为文件对话框设置文件过滤器
		int returnValue = chooser.showOpenDialog(getParent());// 打开文件选择对话框
		if (returnValue == JFileChooser.APPROVE_OPTION) { // 判断是否选择了文件
			File file = chooser.getSelectedFile(); // 获得文件对象
			/*
			 * if (file.length() / 1024.0 > 50.0) {
			 * JOptionPane.showMessageDialog(null, "请选择小于等于50KB的图片文件。"); return;
			 * }
			 */
			String picturePath = file.getAbsolutePath();// 获取路径
			// System.out.println(picturePath);
			Icon icon = new ImageIcon(picturePath);// 新建图标
			this.iamgeLb.setIcon(icon);// 设置图片并显示
			this.imageLinkTxt.setText(picturePath);// 文本框显示路径

		}
	}

}

Запросить записи заказа:

/**
 * 查询下单记录
 * 
 * @author admin
 */
public class CheckOrderInterFrm extends javax.swing.JInternalFrame {
	private static final JTable j_orderTable = null;
	DbUtil dbUtil = new DbUtil();
	OrderDao orderDao = new OrderDao();
	GoodsDao goodsDao = new GoodsDao();

	/** Creates new form checkOrderInterFrm */
	public CheckOrderInterFrm() {
		initComponents();
		this.setLocation(320, 100);
		this.userNameTxt.setText(LogOnFrm.s_currentUser.getUserName());
	}

	// GEN-BEGIN:initComponents
	// <editor-fold defaultstate="collapsed" desc="Generated Code">
	private void initComponents() {

		jScrollPane2 = new javax.swing.JScrollPane();
		cartTable = new javax.swing.JTable();
		jLabel2 = new javax.swing.JLabel();
		totalNumTxt = new javax.swing.JTextField();
		totalMoneyTxt = new javax.swing.JTextField();
		jLabel1 = new javax.swing.JLabel();
		jLabel3 = new javax.swing.JLabel();
		orderStatusTxt = new javax.swing.JTextField();
		jb_status = new javax.swing.JButton();
		jLabel4 = new javax.swing.JLabel();
		userNameTxt = new javax.swing.JTextField();
		jLabel5 = new javax.swing.JLabel();
		orderIdTxt = new javax.swing.JTextField();
		jb_search = new javax.swing.JButton();
		jScrollPane1 = new javax.swing.JScrollPane();
		orderTable = new javax.swing.JTable();
		jPanel2 = new javax.swing.JPanel();
		iamgeLb = new javax.swing.JLabel();

		setClosable(true);
		setIconifiable(true);
		setTitle("\u67e5\u770b\u8ba2\u5355");

		
	// 填充ordertable
	private void fillOrderTable() {
		String orderId = this.orderIdTxt.getText();
		String userName = this.userNameTxt.getText();
		Order order = new Order();
		order.setOrderId(orderId);
		order.setUserName(userName);
		DefaultTableModel dtm = (DefaultTableModel) orderTable.getModel();
		dtm.setRowCount(0);
		Connection con = null;
		try {
			con = dbUtil.getCon();
			ResultSet rs = orderDao.orderList(con, order);
			while (rs.next()) {
				Vector v = new Vector();
				v.add(rs.getString("orderId"));
				v.add(rs.getInt("orderNum"));
				v.add(rs.getFloat("orderTotalMoney"));
				int status = rs.getInt("orderStatus");
				switch (status) {
				case 0:
					v.add("未处理");
					break;
				case 1:
					v.add("烹饪中");
					break;
				case 2:
					v.add("已送达");
					break;
				case 3:
					v.add("已付款");
					break;
				case 4:
					v.add("已取消");
					break;
				}
				dtm.addRow(v);
			}
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			try {
				dbUtil.closeCon(con);
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}

	
	// 点击订单table
	private void orderTableMousePressed(java.awt.event.MouseEvent evt) {
		// 获取选中的行
		int row = orderTable.getSelectedRow();
		String orderId = (String) orderTable.getValueAt(row, 0);
		this.totalNumTxt.setText(orderTable.getValueAt(row, 1) + "");// 把int,float型转化为string
		this.totalMoneyTxt.setText(orderTable.getValueAt(row, 2) + "");
		String orderStatus = (String) orderTable.getValueAt(row, 3);
		this.orderStatusTxt.setText(orderStatus);
		this.iamgeLb.setIcon(null);
		// 修改取消订单按钮状态
		if (!orderStatus.equals("未处理")) {
			jb_status.setEnabled(false);
		} else {
			jb_status.setEnabled(true);
		}
		Order order = new Order();
		order.setOrderId(orderId);
		DefaultTableModel dtm = (DefaultTableModel) cartTable.getModel();
		dtm.setRowCount(0);
		Connection con = null;
		try {
			con = dbUtil.getCon();
			ResultSet rs = orderDao.orderGoodsList(con, order);
			while (rs.next()) {
				Vector v = new Vector();
				v.add(rs.getString("goodsId"));
				v.add(rs.getString("goodsName"));
				v.add(rs.getInt("goodsNum"));
				v.add(rs.getFloat("goodsPrice"));
				v.add(rs.getFloat("goodsTotalPrice"));
				dtm.addRow(v);
			}
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			try {
				dbUtil.closeCon(con);
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}

	}

	// 点击查询订单
	private void jb_searchActionPerformed(java.awt.event.ActionEvent evt) {
		fillOrderTable();

	}

}

Дизайн базы данных:

Таблица пакетов:

CREATE TABLE `NewTable` (
`id`  int(10) NOT NULL AUTO_INCREMENT ,
`goodsName`  varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
`price`  float NULL DEFAULT NULL ,
`goodsDesc`  varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
`imageLink`  varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
PRIMARY KEY (`id`)
)
ENGINE=InnoDB
DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci
AUTO_INCREMENT=17
ROW_FORMAT=DYNAMIC
;

Таблица пакетов заказов:

CREATE TABLE `NewTable` (
`id`  int(10) NOT NULL AUTO_INCREMENT ,
`orderId`  varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
`goodsTotalPrice`  float NULL DEFAULT NULL ,
`goodsId`  int(10) NULL DEFAULT NULL ,
`goodsPrice`  float NULL DEFAULT NULL ,
`goodsNum`  int(10) NULL DEFAULT NULL ,
`goodsName`  varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
PRIMARY KEY (`id`),
INDEX `FK_order_goods_2` (`orderId`) USING BTREE ,
INDEX `FK_order_goods_1` (`goodsId`) USING BTREE 
)
ENGINE=InnoDB
DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci
AUTO_INCREMENT=48
ROW_FORMAT=DYNAMIC
;

Кассовый аппарат:

CREATE TABLE `NewTable` (
`id`  int(11) NOT NULL AUTO_INCREMENT ,
`type`  varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '类型' ,
`money`  varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '金额' ,
`remarks`  varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '备注' ,
`time`  varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '创建时间' ,
PRIMARY KEY (`id`)
)
ENGINE=InnoDB
DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci
AUTO_INCREMENT=8
ROW_FORMAT=DYNAMIC
;

Информационный лист заказа:

CREATE TABLE `NewTable` (
`orderId`  varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ,
`orderStatus`  int(10) NULL DEFAULT NULL ,
`orderNum`  int(10) NULL DEFAULT NULL ,
`orderTotalMoney`  float NULL DEFAULT NULL ,
`userName`  varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
PRIMARY KEY (`orderId`)
)
ENGINE=InnoDB
DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci
ROW_FORMAT=DYNAMIC
;

Форма информации о пользователе:

CREATE TABLE `NewTable` (
`id`  int(10) NOT NULL AUTO_INCREMENT ,
`userName`  varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
`password`  varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
`email`  varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
`rank`  int(1) NULL DEFAULT 0 ,
PRIMARY KEY (`id`)
)
ENGINE=InnoDB
DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci
AUTO_INCREMENT=11
ROW_FORMAT=DYNAMIC
;

Суммировать:

         через этот дизайн курса. Я узнал много вещей, которые мне очень пригодились. Я чувствую, что дизайн интерфейса java похож на интерфейс mfc. Просто у java нет визуального интерфейса и это слишком утомительно. Другие в основном связаны с классами и объектами. Это довольно просто реализовать. Используя базу данных mysql с высокой стабильностью и безопасностью, два программного обеспечения объединяются для завершения проектирования и разработки системы. Он также полностью учитывает потребности пользователей. Оператор может запросить всю информацию в любое время, и каждый модуль предоставляет функцию просмотра информации. Эта система понимает, что клиенты, которые потребляют на веб-сайте системы онлайн-заказов, могут искать необходимую им информацию о пакете через систему, покупать нужный пакет и размещать заказ в Интернете. Затем система онлайн-заказов будет обрабатывать соответствующую информацию о заказе и другую информацию в фоновом режиме. Из-за отсутствия у меня знаний и опыта, а также короткого времени в процессе разработки система будет иметь некоторые недостатки и недостатки. В будущем будет предпринято больше усилий для улучшения этой системы, но она по-прежнему является хорошим выбором в качестве справочника по обучению студентов и разработки курса.

Зарегистрируйте обновление проекта JavaSwing 8/100 статей

Каждый может хвалить, собирать, обращать внимание, комментировать меня