公交车信息查询管理系统(Java实现)
一、需求分析
????????本次Java課程設計本著公交車信息查詢管理系統查詢管理數據的設計原則,讓其滿足日常生活中人們對公交查詢的基本功能,實現信息查詢的基礎效果,提供以下功能:
二、總體設計
????????該公交信息查詢管理系統基于Java圖形化設計界面以及MySQL數據庫實現,采用經典的“Dao設計模式”,其中MySQL數據庫的各類操作實現了實體間表格的增查改刪,并配備了圖形設計界面中的JTable表格控件,做到了實時更新數據的效果。下面為實現該系統的功能結構層次圖:
????????具體功能列表細節如下:
| 功能模塊 | 功能細分 | 備注 |
| 公交線路 信息管理 | 查詢公交信息功能 | 按公交編號查詢指定公交的全部信息 |
| 新增公交信息功能 | 向數據庫中添加新的公交信息記錄 | |
| 修改公交信息功能 | 按公交編號修改需要更正的公交信息 | |
| 刪除公交信息功能 | 按公交編號刪除指定的數據庫記錄 | |
| 用戶使用功能 | 用戶登錄 | 用戶根據查詢后用戶名密碼進行登錄 |
| 線路查詢 | 用戶根據公交車ID對公交信息查詢 | |
| 個人信息確認 | 根據public方法傳入參數顯示 | |
| 用戶注冊 | 注冊用戶個人信息 | |
| 管理員使用功能 | 管理員登錄 | 根據管理員輸入管理員名稱對數據庫密碼檢索 |
| 公交車信息查詢 | 根據UID實行簡單的“增刪改查”操作 | |
| 司機信息查詢操作 | 根據BID實行簡單的“增刪改查”操作 |
三、Mysql數據庫設計
????????經過用戶反饋篩選,我們根據公交車信息管理的設計理念,將上述需求分析階段得到的用戶需求進行分析、總結、歸納,得到該公交車信息查詢管理系統的實體以及實體屬性,并在這里采用E-R圖的方式抽象成信息結構即概念模型,其中根據實體間聯系,畫出局部E-R圖,如下所示:
關系模式(關系模型)
管理員(管理員姓名,管理員密碼);
用戶(用戶姓名,用戶密碼,用戶性別);
公交車(公交編號,司機編號,公交名,公交車站,公交類型);
司機(司機編號,司機姓名,司機性別,公交類型,司機生日,司機地址,電話號碼,有效期截止時間);
四、詳細設計與實現
4.1、登錄界面設計
? ? ? ? 登錄界面設有用戶名、密碼和用戶身份三個字段,在數據庫中進行分別匹配,在用戶輸入信息后,首先判斷該用戶名是否存在,接著匹配該用戶的身份是否正確,最后匹配該身份下的密碼是否正確,通過三重判斷進行頁面跳轉,該頁面也可以將所填信息進行清楚,效果圖如下:
????????部分代碼實現如下:
button.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {if (comboBox.getSelectedItem().equals("普通用戶")) {// 獲得文本框里的值 String username = textField.getText();String upassword = passwordField.getText(); boolean f = dirverdao.userlogin(username, upassword);if (f) {JOptionPane.showMessageDialog(frame, "登陸成功!歡迎!");// 頁面跳轉UsersEnroll ue=new UsersEnroll();// 關閉原頁面frame.setVisible(false); } else {JOptionPane.showMessageDialog(frame, "登陸失敗!賬號或密碼錯誤!");// 賬號密碼清空textField.setText("");passwordField.setText("");}4.2、用戶注冊界面設計
? ? ? ? 注冊界面設有用戶名、性別、密碼和確認密碼四個字段,其中,若二次輸入的密碼與第一次不統一,也會做出相應的提醒,點擊提交則上交給數據庫。效果圖如下:
4.3、線路查詢界面設計
? ? ? ? 用戶可以根據自己的需求,輸入編號對表格查出相應的所需的數據線路進行數據庫查詢操作,JTable表格做到實時更新數據的效果,輸入信息查找這里也采用了鍵盤監聽事件,即可以根據用戶輸入的信息實時調用數據庫數據,具體展示圖如下:
?????????部分代碼如下:
protected TableModel getDataModel(String bySth, String keyWord) {// 獲得所有字段名,做表頭String[] columnNames = bsd.getColumnNames("businfortable");// 獲得查詢結果的list列表,轉換為二維數組,做表中數據List<BusType> buslist = bsd.getBusbySth(bySth, keyWord);int row = buslist.size(); // 獲得行數,即數據個數int column = columnNames.length; // 獲得列數,即字段個數Object[][] data = new Object[row][column];for (int i = 0; i < buslist.size(); i++) {data[i][0] = buslist.get(i).getBid();data[i][1] = buslist.get(i).getDid();data[i][2] = buslist.get(i).getBnum();data[i][3] = buslist.get(i).getBtype();data[i][4] = buslist.get(i).getBusstop();} TableModel dataModel=new DefaultTableModel(data,columnNames); // 建立表格數據模型return dataModel;}4.4、管理員界面設計
? ? ? ? 管理員界面即是對公交車與司機二者信息顯示的增刪改查,這里的修改操作我采用兩種方式,一種是利用getSelectedRow()方法,獲取索引行,將需要修改的信息自動獲取到修改頁面,一種則是直接打開修改頁面,根據你輸入的信息進行主鍵查找,最終達到修改效果,刪除操作也采用同樣的方法,同時實時更新系統表格。效果圖如下:
????????部分核心代碼如下所示:
JMenuBar menuBar = new JMenuBar();frame.setJMenuBar(menuBar); JMenu menu = new JMenu("\u5F00\u59CB");menuBar.add(menu);JMenuItem menuItem = new JMenuItem("\u4FE1\u606F\u4FEE\u6539");menu.add(menuItem);menuItem.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {DriverTableFrame dtf=new DriverTableFrame(); }});JMenu menu_1 = new JMenu("\u5E2E\u52A9");menuBar.add(menu_1);}?????????部分核心代碼如下所示:?
public int addBus(BusType bus) {Connection conn=DBTools.getConn();int i=0;String sql="insert into businfortable(bid,did,bnum,btype,busstop) values(?,?,?,?,?)";PreparedStatement pstmt = null;try {pstmt = conn.prepareStatement(sql);pstmt.setInt(1, bus.getBid());pstmt.setInt(2, bus.getDid());pstmt.setString(3, bus.getBnum());pstmt.setString(4, bus.getBtype());pstmt.setString(5, bus.getBusstop());i=pstmt.executeUpdate();}?
????????部分核心代碼如下所示:??
public void actionPerformed(ActionEvent e) {int frow = table.getSelectedRow(); //獲得第一個選中行的索引if(frow == -1) { JOptionPane.showMessageDialog(frame, "請先單擊選擇一條記錄");}else {//String[]中存入表格選中行的數據String[] sendData = new String[table.getColumnCount()]; for(int i=0; i<sendData.length; i++) {sendData[i] = table.getValueAt(frow, i)+"";}//打開修改頁面,并傳入信息BusInforChanged bic=new BusInforChanged(sendData);}}}); class MYPanel3 extends JPanel {private Image img;public MYPanel3() {// TODO Auto-generated constructor stubImageIcon icon = new ImageIcon(UsersLoginFrame.class.getResource("/images/背景圖3.jpg"));img = icon.getImage();} @Overrideprotected void paintComponent(Graphics g) {// TODO Auto-generated method stubg.drawImage(img, 0, 0, this.getWidth(), this.getHeight(), null);}}?
?
?
部分核心代碼展示如下:
@Overridepublic void itemStateChanged(ItemEvent e) {// TODO Auto-generated method stubif(radioButton.isSelected()){dsex=radioButton.getText();}else if(radioButton_1.isSelected()){ ...... if(chckbxA.isSelected()){dtype+=chckbxA.getText();}} @Overridepublic void actionPerformed(ActionEvent e) {// TODO Auto-generated method stubString dname=textField.getText(); ....if(e.getSource()==button){DriverDaoImpl dridao=new DriverDaoImpl();Driver driver=new Driver();...... else if(e.getSource()==button_2_1){......JOptionPane.showMessageDialog(frame, "刪除成功!");frame.setVisible(false);?
????????至此,該公交車信息查詢管理系統的基本功能與界面展示完畢。如對您有所幫助,望留下寶貴一贊!謝謝!
????????需源碼以及1w3字課程20頁報告 私信扣扣 1092644308!!!!!
?
總結
以上是生活随笔為你收集整理的公交车信息查询管理系统(Java实现)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 论文精读:Mask R-CNN
- 下一篇: Java项目-基于SSM实现公交路线管理