Это 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 статей
Каждый может хвалить, собирать, обращать внимание, комментировать меня