日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

『Java课设』JavaSwing+MySQL实现医院智慧点餐系统

發布時間:2024/1/8 数据库 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 『Java课设』JavaSwing+MySQL实现医院智慧点餐系统 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

👨?🎓作者簡介:一位喜歡寫作,計科專業大三菜鳥

🏡個人主頁:starry陸離

如果文章有幫到你的話記得點贊👍+收藏💗支持一下哦

『Java課設』JavaSwing+MySQL實現醫院智慧點餐系統

  • 1.功能介紹
  • 2.項目包結構
  • 3.數據庫設計
  • 4.JDBC數據庫連接類
  • 5.登錄選擇界面(系統入口)
  • 6.管理員頁面
  • 7.用戶選餐界面

1.功能介紹

這個是大二的Java的課程設計的完整版,功能相對之前發的半成品稍稍豐富些。一開始我們還是按照MVC結構寫的,寫著寫著就視圖,用戶操作邏輯,數據庫數據操作就都寫在一起了,比如管理員操作界面(View層)就嵌入了SQL語句直接操作數據庫了,好在是一個學習過程。

  • 系統角色分為用戶與管理員

  • 用戶登錄系統可以選購餐品并支付

  • 管理員可以登陸系統管理所有的菜品(增刪改查)

  • 管理所有的訂單信息(未完成)

  • 2.項目包結構

    3.數據庫設計

    數據庫設計了5個表,分別是用戶信息表,管理員信息表,菜品信息表,訂單信息表,訂單詳情表

    4.JDBC數據庫連接類

    不同數據庫的連接方式的大同小異,根據開發場景靈活變動就好,我這里用的MySQL8.0所以使用如下兩行配置。

    private static final String USER = "root";//數據庫用戶名,一般是rootprivate static final String PWD = "lx0411";//數據庫密碼 // 連接mysql5.7 // private static final String URL="jdbc:mysql://localhost:3306/studentgrade"; // private static final String DRIVER="com.mysql.jdbc.Driver"; //mysql5.7 // 如果用的是mysql8.0,private static final String DRIVER="com.mysql.cj.jdbc.Driver";private static final String URL= "jdbc:mysql://localhost:3306/catersystem?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&useSSL=false&allowPublicKeyRetrieval=true"; // 如果用的sqlServer數據庫連接 // private static final String URL="jdbc:sqlserver://localhost:1433;DataBaseName=StudentGrade"; // private static final String DRIVER="com.microsoft.sqlserver.jdbc.SQLServerDriver"; // private static final String USER="sa"; // private static final String PWD="lxloveth0411";

    5.登錄選擇界面(系統入口)

    package view;import java.awt.AWTException; import java.awt.Dimension; import java.awt.Font; import java.awt.GridLayout; import java.awt.SystemTray; import java.awt.TrayIcon; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.net.URL;import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel;import handler.LoginChoiceHandler;public class LoginChoiceView extends JFrame{/*** */private static final long serialVersionUID = 1L;JLabel titleNameLabel=new JLabel("醫院智慧選餐系統",JLabel.CENTER);JPanel jp1=new JPanel();JPanel jp2=new JPanel(new GridLayout(5,1));JButton userBtn=new JButton ("用戶 登錄");JButton adminBtn=new JButton("管理員登錄");//聲明桌面系統托盤SystemTraypublic SystemTray systemTray;public TrayIcon trayIcon;LoginChoiceHandler loginChoiceHandler;public LoginChoiceView() {super("醫院智慧選餐系統");loginChoiceHandler=new LoginChoiceHandler(this);//設置標題的字體,格式,大小titleNameLabel.setFont(new Font("華文行楷",Font.PLAIN,40));titleNameLabel.setPreferredSize(new Dimension(0,80));Font centerFont=new Font("楷體",Font.PLAIN,20);userBtn.setFont(centerFont);adminBtn.setFont(centerFont);jp1.add(userBtn);jp1.add(new JPanel());jp1.add(adminBtn);jp2.add(new JPanel());jp2.add(titleNameLabel);jp2.add(new JPanel());jp2.add(jp1);jp2.add(new JPanel());this.add(jp2);userBtn.addActionListener(loginChoiceHandler);adminBtn.addActionListener(loginChoiceHandler);//判斷當前系統是否支持系統托盤if(SystemTray.isSupported()){systemTray=SystemTray.getSystemTray();//初始化系統托盤URL imgUrl = UserLoginView.class.getClassLoader().getResource("LoginView.jpg");trayIcon=new TrayIcon(new ImageIcon(imgUrl).getImage());//初始化托盤圖標trayIcon.setImageAutoSize(true);//托盤圖標可以自動縮放大小try {systemTray.add(trayIcon);//將托盤圖標加入到系統托盤組件中,并拋出異常} catch (AWTException e) {e.printStackTrace();}//創建一個事件響應,最小化時銷毀資源this.addWindowListener(new WindowAdapter() {@Overridepublic void windowIconified(WindowEvent e) {LoginChoiceView.this.dispose();}});//托盤事件監聽(鼠標單擊一次托盤,窗口將會正常顯示)trayIcon.addMouseListener(new MouseAdapter() {@Overridepublic void mouseClicked(MouseEvent e) {int clickCont=e.getClickCount();if(clickCont==1){LoginChoiceView.this.setExtendedState(JFrame.NORMAL);}LoginChoiceView.this.setVisible(true);}});}//設置窗口圖片URL imgUrl=UserLoginView.class.getClassLoader().getResource("LoginView.jpg");setIconImage(new ImageIcon(imgUrl).getImage());//設置窗口基本參數setSize(600,400);setDefaultCloseOperation(EXIT_ON_CLOSE);setLocationRelativeTo(null);setResizable(false);setVisible(true);}public static void main(String[] args) {// TODO Auto-generated method stubnew LoginChoiceView();}}

    6.管理員頁面

    package view;import javax.swing.*;import ext.MainViewTable; import ext.MainViewTableModel; import handler.AdminMainHandler; import req.UserRequest; import res.TableDTO; import service.FoodService; import service.FoodServiceImpl; import util.DBUtil; import util.DimensionUtil;import java.awt.*; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.util.Vector;public class AdminOperateFrame extends JFrame {/*** */private static final long serialVersionUID = 1L;String adminName;String adminId;public String lastPressKey;JLabel adminNameLabel = new JLabel("管理員名:", JLabel.CENTER);JPanel centerPanel = new JPanel(new BorderLayout());JPanel panel1 = new JPanel();JPanel panel2 = new JPanel();JPanel panel3 = new JPanel();JPanel panel4 = new JPanel();//增刪改查按鈕public JButton btnAdd = new JButton("增加菜品");public JButton btnSave = new JButton("保存菜品");JButton btnDelete = new JButton("刪除菜品");JButton btnAlter = new JButton("更改菜品");JButton btnSearch_Food = new JButton("查看菜品");//JButton btnSearch_Order = new JButton("查看訂單");//設置字體大小Font font=new Font("楷體",Font.PLAIN,20);Dimension dimension = new Dimension(130,30);//創建一個MainViewTable對象public MainViewTable mianViewTable=new MainViewTable();public MainViewTableModel mainViewTableModel;//創建一個MainOrderTable訂單table對象public MainViewTable mianOrderTable=new MainViewTable();public MainViewTableModel mainOrderTableModel;//聲明一個MainHandler對象AdminMainHandler adminMainHandler;private int pageNow=1;//默認顯示第一頁private int pageSize=10;//默認每頁顯示十條記錄//搜索框與搜索按鈕public JTextField searchField = new JTextField();JButton searchBt = new JButton("搜索");JButton exitBt = new JButton("退出");public AdminOperateFrame(String adminId) {setTitle("醫院營養配餐系統");this.adminId=adminId;adminMainHandler = new AdminMainHandler(this);layNorth(adminId);layCenter();layEast();laySouth();centerPanel.add(panel1, BorderLayout.NORTH);centerPanel.add(panel2, BorderLayout.CENTER);centerPanel.add(panel3, BorderLayout.EAST);centerPanel.add(panel4, BorderLayout.SOUTH);add(centerPanel);init();}private void init() {setSize(600, 400);setLocationRelativeTo(null);setBounds(DimensionUtil.getBounds());//設置窗體完全充滿整個屏幕setExtendedState(JFrame.MAXIMIZED_BOTH);setDefaultCloseOperation(EXIT_ON_CLOSE);setVisible(true);}private void laySouth() {exitBt.setFont(font);exitBt.setPreferredSize(new Dimension(200,50));panel4.add(exitBt);exitBt.addActionListener(adminMainHandler);}private void layEast() {panel3.setLayout(new FlowLayout());panel3.setPreferredSize(new Dimension(200,100));btnAdd.setFont(font);btnAdd.setPreferredSize(dimension);btnSave.setFont(font);btnSave.setPreferredSize(dimension);btnDelete.setFont(font);btnDelete.setPreferredSize(dimension);btnAlter.setFont(font);btnAlter.setPreferredSize(dimension);btnSearch_Food.setFont(font);btnSearch_Food.setPreferredSize(dimension);//btnSearch_Order.setFont(font);//btnSearch_Order.setPreferredSize(dimension);panel3.add(btnAdd);panel3.add(btnSave);btnSave.setVisible(false);panel3.add(btnDelete);panel3.add(btnAlter);panel3.add(btnSearch_Food);//panel3.add(btnSearch_Order);btnAdd.addActionListener(adminMainHandler);btnSave.addActionListener(adminMainHandler);btnDelete.addActionListener(adminMainHandler);btnAlter.addActionListener(adminMainHandler);btnSearch_Food.addActionListener(adminMainHandler);//btnSearch_Order.addActionListener(adminMainHandler);}private void layNorth(String adminId) {panel1.setLayout(new BorderLayout());selectAdminName(adminId);adminNameLabel.setText("管理員名:"+adminName);adminNameLabel.setFont(font);searchField.setFont(font);searchField.setPreferredSize(dimension);searchBt.setFont(font);searchBt.setPreferredSize(new Dimension(200,50));panel1.add(adminNameLabel, BorderLayout.WEST);panel1.add(searchField, BorderLayout.CENTER);panel1.add(searchBt, BorderLayout.EAST);searchBt.addActionListener(adminMainHandler);}private void layCenter() {//調用數據庫數據,創建一個FoodService和UserRequest實例//獲取從數據庫中查詢到的data與totalCountFoodService foodService=new FoodServiceImpl();UserRequest request=new UserRequest();request.setPageNow(pageNow);request.setPageSize(pageSize);request.setSearchKey(searchField.getText().trim());TableDTO tableDTO = foodService.retrieveFoods(request);Vector<Vector<Object>> data = tableDTO.getData();//自定義的MainViewTableModelmainViewTableModel=MainViewTableModel.assembleModel(data);//將Table與TableModel關聯mianViewTable.setModel(mainViewTableModel);//設置渲染方式mianViewTable.renderRule();JScrollPane jScrollPane = new JScrollPane(mianViewTable);panel2.setLayout(new BorderLayout());panel2.add(jScrollPane, BorderLayout.CENTER);}private void selectAdminName(String adminId) {String sql = "select manaName from managerInfo where manaId = ?";Connection conn=null;PreparedStatement ps=null;ResultSet rs=null;try {//連接數據庫,獲取數據庫連接,getConn()方法已經提前在DBUtil中寫好conn = DBUtil.getConn();System.out.println("數據庫連接成功");//如果連接失敗,則返回falseif(conn==null) {System.out.println("數據庫連接失敗");}ps = conn.prepareStatement(sql);ps.setString(1, adminId);rs = ps.executeQuery();//查詢遍歷while(rs.next()) {adminName = rs.getString(1);}} catch (Exception e) {e.printStackTrace();}finally {//關閉資源DBUtil.closeRs(rs);DBUtil.closeConn(conn);DBUtil.closePs(ps);}}public void setPageNow(int pageNow) {this.pageNow = pageNow;}public int getPageSize() {return pageSize;}public void setPageSize(int pageSize) {this.pageSize = pageSize;}public int getPageNow() {return pageNow;}public void reloadTable() {/**調用數據庫數據,創建一個FoodService和UserRequest實例*獲取從數據庫中查詢到的data與totalCount*查詢完后要更新Model的數據*/FoodService foodService=new FoodServiceImpl();UserRequest request=new UserRequest();request.setPageNow(pageNow);request.setPageSize(pageSize);request.setSearchKey(searchField.getText().trim());TableDTO tableDTO = foodService.retrieveFoods(request);Vector<Vector<Object>> data = tableDTO.getData();// 更新調用updataModel實現更新ModelMainViewTableModel.uptadaModel(data);// 設置渲染方式mianViewTable.renderRule();}public static void main(String[] args) {new AdminOperateFrame("202016");} }

    7.用戶選餐界面

    室友在這里做了一個有趣的處理,點擊支付的時候彈出他的微信收款碼😁。如果用戶想白嫖不支付就退出系統還會有窗口提示(當然并不是真正的需要支付money才能退出系統,你任務管理器一殺我們也沒轍,只是考慮了這個場景就實現了這個邏輯)

    package view; /** 待解決問題:* 1.關閉窗口提示還沒支付* 2.同一用戶可以選同一個菜品* 3.list沒有實現更新* 4.table里的庫存量沒有實現更新* 5.沒有選餐應提示不能實現支付*/ import javax.swing.*;import ext.MainViewTable; import ext.MainViewTableModel; import handler.UserMainHandler; import req.UserRequest; import res.TableDTO; import service.FoodService; import service.FoodServiceImpl; import util.DBUtil; import util.DimensionUtil;import java.awt.*;import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.util.Vector;public class UserSelectionFrame extends JFrame {/*** */private static final long serialVersionUID = 1L;public String userName;public int totalMoney;public int selId = 1;public String userId;JLabel userNameLabel = new JLabel("用戶名:", JLabel.CENTER);JPanel centerPanel = new JPanel(new BorderLayout());JPanel panel1 = new JPanel();JPanel panel2 = new JPanel();JPanel panel3 = new JPanel();JPanel panel4 = new JPanel();JPanel panel5 = new JPanel();//創建一個MainViewTable對象public MainViewTable mianViewTable=new MainViewTable();public MainViewTableModel mainViewTableModel;//聲明一個MainHandler對象UserMainHandler userMainHandler;private int pageNow=1;//默認顯示第一頁private int pageSize=10;//默認每頁顯示十條記錄JButton btSelect = new JButton("選購");//搜索框與搜索按鈕Font centerFont=new Font("楷體",Font.PLAIN,20);Dimension dimension = new Dimension(200,50);JTextField searchField = new JTextField();JButton searchBt = new JButton("搜索");public DefaultListModel<Object> listModel = new DefaultListModel<Object>();public JList<Object> selectedList = new JList<Object>(listModel);JLabel selectedLabel = new JLabel("已選菜品:",JLabel.CENTER);public JLabel totalPriceLabel = new JLabel("總價: 0");JButton payBt = new JButton("支付");public UserSelectionFrame(String userId) {setTitle("醫院營養配餐系統");this.userId = userId;userMainHandler = new UserMainHandler(this);//根據用戶Id查詢出用戶名userName,顯示在userNameLabel上selectUesrName(userId);layNorth();layCenter();layWest();laySouth();init();}private void selectUesrName(String userId) {String sql = "select userName from userInfo where userId = ?";Connection conn=null;PreparedStatement ps=null;ResultSet rs=null;try {//連接數據庫,獲取數據庫連接,getConn()方法已經提前在DBUtil中寫好conn = DBUtil.getConn();System.out.println("數據庫連接成功");//如果連接失敗,則返回falseif(conn==null) {System.out.println("數據庫連接失敗");}ps = conn.prepareStatement(sql);ps.setString(1, userId);rs = ps.executeQuery();//查詢遍歷while(rs.next()) {userName = rs.getString(1);}} catch (Exception e) {e.printStackTrace();}finally {//關閉資源DBUtil.closeRs(rs);DBUtil.closeConn(conn);DBUtil.closePs(ps);}}private void init() {add(centerPanel);setSize(600, 400);setLocationRelativeTo(null);setBounds(DimensionUtil.getBounds());//設置窗體完全充滿整個屏幕setExtendedState(JFrame.MAXIMIZED_BOTH);setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);//在關閉窗口的時候強制支付,應該改成提示“暫時還沒支付”addWindowListener(new UserMainHandler(this));setVisible(true);}private void layNorth() {panel1.setLayout(new BorderLayout());userNameLabel.setText("用戶名:"+userName);panel1.add(userNameLabel, BorderLayout.WEST);userNameLabel.setPreferredSize(dimension);userNameLabel.setFont(centerFont);panel1.add(searchField, BorderLayout.CENTER);searchField.setPreferredSize(dimension);searchField.setFont(centerFont);panel1.add(searchBt, BorderLayout.EAST);searchBt.setPreferredSize(new Dimension(200,50));searchBt.setFont(centerFont);centerPanel.add(panel1, BorderLayout.NORTH);searchBt.addActionListener(userMainHandler);}private void layCenter() {//調用數據庫數據,創建一個FoodService和UserRequest實例//獲取從數據庫中查詢到的data與totalCountFoodService foodService=new FoodServiceImpl();UserRequest request=new UserRequest();request.setPageNow(pageNow);request.setPageSize(pageSize);request.setSearchKey(searchField.getText().trim());TableDTO tableDTO = foodService.retrieveFoods(request);Vector<Vector<Object>> data = tableDTO.getData();showPreNext(tableDTO.getTotalCount());panel2.setLayout(new BorderLayout());//自定義的MainViewTableModelmainViewTableModel=MainViewTableModel.assembleModel(data);//將Table與TableModel關聯mianViewTable.setModel(mainViewTableModel);//設置渲染方式mianViewTable.renderRule();JScrollPane jScrollPane = new JScrollPane(mianViewTable);panel2.add(jScrollPane,BorderLayout.CENTER);btSelect.setPreferredSize(new Dimension(150,50));btSelect.setFont(centerFont);panel5.add(btSelect);panel2.add(panel5, BorderLayout.EAST);centerPanel.add(panel2, BorderLayout.CENTER);btSelect.addActionListener(userMainHandler);}private void layWest() {panel3.setLayout(new BorderLayout());selectedList.setPreferredSize(dimension);selectedList.setFont(centerFont);panel3.add(selectedLabel, BorderLayout.NORTH);selectedLabel.setPreferredSize(dimension);selectedLabel.setFont(centerFont);panel3.add(selectedList, BorderLayout.CENTER);centerPanel.add(panel3, BorderLayout.WEST);}private void laySouth() {totalPriceLabel.setFont(centerFont);panel4.add(totalPriceLabel);payBt.setFont(centerFont);panel4.add(payBt);centerPanel.add(panel4, BorderLayout.SOUTH);payBt.addActionListener(userMainHandler);}private void showPreNext(int totalCount) {if(totalCount%pageSize==0) {}else {}}public void setPageNow(int pageNow) {this.pageNow = pageNow;}public int getPageSize() {return pageSize;}public void setPageSize(int pageSize) {this.pageSize = pageSize;}public int getPageNow() {return pageNow;}public void reloadTable() {/**調用數據庫數據,創建一個FoodService和UserRequest實例*獲取從數據庫中查詢到的data與totalCount*查詢完后要更新Model的數據*/FoodService foodService=new FoodServiceImpl();UserRequest request=new UserRequest();request.setPageNow(pageNow);request.setPageSize(pageSize);request.setSearchKey(searchField.getText().trim());TableDTO tableDTO = foodService.retrieveFoods(request);Vector<Vector<Object>> data = tableDTO.getData();// 更新調用updataModel實現更新ModelMainViewTableModel.uptadaModel(data);// 設置渲染方式mianViewTable.renderRule();// 調用上一頁與下一頁按鈕是否可見showPreNext(tableDTO.getTotalCount());} }{return pageNow;}public void reloadTable() {/**調用數據庫數據,創建一個FoodService和UserRequest實例*獲取從數據庫中查詢到的data與totalCount*查詢完后要更新Model的數據*/FoodService foodService=new FoodServiceImpl();UserRequest request=new UserRequest();request.setPageNow(pageNow);request.setPageSize(pageSize);request.setSearchKey(searchField.getText().trim());TableDTO tableDTO = foodService.retrieveFoods(request);Vector<Vector<Object>> data = tableDTO.getData();// 更新調用updataModel實現更新ModelMainViewTableModel.uptadaModel(data);// 設置渲染方式mianViewTable.renderRule();// 調用上一頁與下一頁按鈕是否可見showPreNext(tableDTO.getTotalCount());} }

    總結

    以上是生活随笔為你收集整理的『Java课设』JavaSwing+MySQL实现医院智慧点餐系统的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。