公交车信息查询管理系统(Java实现) | 您所在的位置:网站首页 › 河北公车管理平台下载 › 公交车信息查询管理系统(Java实现) |
一、需求分析
本次Java课程设计本着公交车信息查询管理系统查询管理数据的设计原则,让其满足日常生活中人们对公交查询的基本功能,实现信息查询的基础效果,提供以下功能: 数据库连接,数据库操作功能;管理员登录,管理员退出;用户登录,用户注册(两次密码不一致时报错),用户退出,用户查看个人信息用户可根据公交车ID进行简单的公交线路查询,刷新表格内部数据;管理员可添加车站信息、修改车站信息、删除车站信息、查询车站信息;刷新公交表格数据;管理员可添加司机信息、修改司机信息、删除司机信息、刷新司机表格信息。 二、总体设计该公交信息查询管理系统基于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 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 |
CopyRight 2018-2019 实验室设备网 版权所有 |