停车场标准管理系统.doc
《停车场标准管理系统.doc》由会员分享,可在线阅读,更多相关《停车场标准管理系统.doc(25页珍藏版)》请在咨信网上搜索。
上海海洋大学信息学院 软件工程作业报告 设计题目:停车场管理系统 学院:信息学院 专 业:空间信息与数字技术 班 级:1、2班 学生姓名: 代 雪1353247(组长) 魏梓桐1353204、 刘亚松1353147 刘 花1353209、 吴 仪1353113 程梦雪1353115 1.引言 21世纪以来,当代化产业高速发展,汽车作为寻常交通工具已经普及社会每一种角落,给人们寻常生活带来了极大便利。但是随着汽车拥有量急剧增长,车辆停放问题随之而来,如果没有合理停放规则和秩序,势必引起许多不必要麻烦,反而给生活带来不便。 停车场作为交通设施构成某些,随着交通运送繁忙和不断发展,人们对其管理规定也不断提高,都但愿管理可以达到以便、快捷以及安全效果。然后当前许多停车场还处在一种纯人工管理模式,在车辆管理上效率低下,并且十分容易出错。因而需要一种适当管理系统来解决这些问题,达到高效,简易效果,给广大人民出行带来以便。 本论文旨在设计一种简朴、高效且实用停车场管理系统,但愿能解决当前管理上存在某些问题。系统设计过程通过了需求分析阶段、概念设计阶段、逻辑构造设计阶段、数据库物理设计阶段、数据库实行和维护以及系统调试与测试,最后完毕了一种比较完善收费停车场管理系统。2.需求分析 需求分析是设计数据库起点,需求分析成果与否精确地反映了顾客实际规定,将直接影响到背面各个阶段设计,并影响到设计成果与否合理和实用。 当前停车场管理方式比较落后,已经不能适应当代社会实际需求,本系统开发能给管理上带来新鲜活力,提高管理效率,具备较高实用性和开发价值。 通过调查理解分析停车管理现状,弄清顾客对开发数据库应用系统确切规定,以及停车场管理流程,系统详细功能和数据库中数据信息。 2.1解决对象 系统解决对象涉及车辆信息、固定车位信息、自由车位信息、停车车辆信息以及收费记录等五个方面。即 固定车位信息:车位编号、车位位置、车牌号码、车主姓名、车辆品牌、车辆颜色、车辆照片、联系地址、联系方式、车位余额; 自由车位信息:车位编号、车位位置; 车辆信息:车牌号码、车辆品牌、车辆颜色; 停车信息:车位编号、车牌号码、进入时间、离开时间、时间段、车位类型、在位状况、收费费率; 收费记录:车位编号、车牌号码、停车时间、停车费用、发票编号。 2.2功能规定 整个系统详细涉及三个子系统,分别为:停车解决子系统、车位综合管理子系统以及收费子系统。 解决功能涉及:车辆信息查询以及更新;空闲车位信息查询;固定车位信息查询;进出车辆记录更新和收费信息查询与更新等。 2.3业务流程图 2.4数据流图 2.5数据字典 数据项: 表2-1数据项阐明 数据项编号 数据项名 数据项含义 与其他数据项关系 存储构造 别名 DI-1 Cwno 车位编号 char(10) 编号 DI-2 Carno 车牌号码 char(10) 车牌 DI-3 Carname 车主姓名 char(10) 姓名 DI-4 Carcolor 车辆颜色 char(4) 颜色 DI-5 Carpho 车辆照片 bit 照片 DI-6 Caradd 联系地址 char(20) 地址 DI-7 Cartel 联系方式 char(20) 电话 DI-8 Carat 在位状况 char(4) DI-9 Carin 进入时间 datetime DI-10 Carout 离开时间 datetime DI-11 Carmon 车位余额 float 余额 DI-12 Montime 收费费率 float 费率 DI-13 Moneypay 停车费用 float 收费 DI-14 Cwtype 车位类型 char(4) DI-15 Cartime 停车时间 float 时间 DI-16 Piece 发票编号 char(20) Dl-17 Carsb 车辆品牌 char(10) 车名 Dl-18 Cwpace 车位位置 char(10) 位置 Dl-19 Timetype 时间段 char(6) 2.6逻辑描述 表2-3解决逻辑描述 解决编号 解决功能 解决过程 PR-1 判断顾客查询涉及功能模块 固定车位信息模块、自由车位信息模块、停车车辆信息模块、进出车辆记录信息模块、收费记录模块:先拟定查询所涉及功能模块;然后,拟定要查询内容,拟定查询数据流向;最后显示查询成果。 PR-2 判断顾客修改要涉及模块,同步把相应修改数据传到相应模块之中 固定车位信息模块、自由车位信息模块、停车车辆信息模块、进出车辆记录信息模块、收费记录模块:先拟定更新所涉及功能模块;然后,把更新信息传送到相应模块中;最后,进行相应更新操作。 3.概念设计 3.1目的 概念构造设计师是将需求分析得到顾客需求抽象为信息构造即概念模型过程。它是整个数据库设计核心。概念构造设计环节分为两步:第一步是抽象数据并设计局部视图,第二步是集成局部视图,得到全局概念构造。 3.2设计过程 (1)选取中层数据流为切入点,普通选取实际系统中子系统; (2)设计分E-R图,即各子模块E-R图; (3)生成初步E-R图,通过合并办法,做到各子系统实体、属性、联系统一; (4)生成全局E-R图,通过消除冲突等方面。 通过度析系统业务流图与数据流图,得到系统环绕“车辆”与“车位”之间互有关系。 3.3阶段成果 分E-R图: 全局E-R图: 4.逻辑设计 4.1目的 逻辑构造设计任务是把概念构造设计阶段设计好基本E-R图转换为与选用DBMS产品所支持数据模型相符合逻辑构造。逻辑构造设计时普通要分为3步进行:将概念构造转换为普通关系、网状、层次模型;将转换来关系、网状、层次模型向特定DBMS支持下数据模型转换;对数据模型进行优化。 4.2任务与成果 4.2.1数据组织 (1)将E-R模型转换为关系模型 转换原则是:一种实体型转换为一种关系模式。实体属性就是关系属性,实体码就是关系码。 对于实体间联系则有如下不同状况: 一种1:1联系可以转换为一种独立关系模式,也可以与任意一端相应关系模式合并。三个或三个以上实体间一种多元联系可以转换为一种关系模式。与该多元联系相连各实体码以及联系自身属性均转换为关系属性,而关系码为各实体码组合。 一种1:n联系可以转换为一种独立关系模式,也可以与n端相应关系模式合并。如果转换为一种独立关系模式,则与该联系相连各实体码以及联系自身属性均转换为关系属性,而关系码为n端实体码。 一种m:n联系转换为一种关系模式。与该联系相连各实体码以及联系自身属性均转换为关系属性,而关系码为各实体码组合。 3个或3个以上实体间一种多元联系可以转换位一种关系模型。与该多元联系相连各实体码以及联系自身属性均转换为关系属性,各实体码构成关系码或关系码一某些。 4.2.2功能模块图 图9.系统功能模块图 5.物理设计 5.1目的 物理设计就是为一种给定逻辑数据构造模型选用一种最适当应用规定物理构造过程。物理设计普通分为两步:拟定数据库物理构造,在关系数据库中重要指存取办法和存储构造;对物理构造进行评价,评价重点是时间和空间效率。如果评价成果满足原设计规定,则可进入到物理实行阶段,否则,就需要重新设计或修改物理构造,有时甚至要返回逻辑设计阶段修改数据模型。物理设计内容涉及:为关系模型选取存取办法;设计关系、索引等数据库文献物理存储构造。 5.2任务 5.2.1数据存取方面 由于经常需要判断与否有空余车位,因此要经常查询停车信息,因而在Stop表Cwno上建立聚簇索引以提高查询效率。 为了以便查询各个车辆收费记录,在Moneynote表Carno上建立聚簇索引以提高查询效率 5.2.2功能模块图 (1)车位信息查询及更新模块图: 图10.车位信息查询及更新模块图 (2)停车信息查询及更新模块图: 图11.停车信息查询及更新模块图 (3)收费费率查询及更新模块图: 图12.收费费率查询及更新模块图 6.某些功能代码实现 系统界面 车辆进场 信息查询 出场结算 /*** 用于实现登录界面*/ package com.view; import com.model.LoginModel; import com.model.SellModel; import com.mytools.*; import com.sun.awt.AWTUtilities; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.awt.event.MouseMotionAdapter; import javax.imageio.ImageIO; import javax.swing.*; import javax.swing.border.MatteBorder; import java.io.*; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; import java.util.HashMap; import java.util.Map; import java.util.Vector; @SuppressWarnings("serial") public class Park extends JFrame implements MouseListener { //全局位置变量,用于表达鼠标在窗口上位置 static Point origin = new Point(); // 定义组件 ImagePanel bkim = null; JButton min,close,loginqueding,carIn,carOut,Search,Exit; JComboBox user; JPasswordField password; JPanel contentPane=new JPanel( ); String[] allparas = {"1"}; int count = ParkPojo.getCarCount(); String indate = null; static String userId = getRandomString(8); @SuppressWarnings("unused") public static void main(String[] args) { // TODO Auto-generated method stub Park login1 = new Park(); } public void setbutton(JButton jb) { jb.setContentAreaFilled(false); jb.setBorderPainted(false); jb.setFocusPainted(false); jb.addMouseListener(this); jb.setOpaque(false); } // 窗口操作控制菜单 public void windowsmenu() { min = new JButton(new ImageIcon("image/Loginmin.png")); min.setBounds(346,0,27,21); min.setRolloverIcon(new ImageIcon("image/LoginminC.png")); setbutton(min); min.setToolTipText("最小化"); close = new JButton(new ImageIcon("image/Loginclose.png")); close.setBounds(370,0,29,21); close.setRolloverIcon(new ImageIcon("image/LogincloseC.png")); setbutton(close); close.setToolTipText("关闭"); //bkim.add(min); //bkim.add(close); } // 构造函数 public Park() { // 设立窗体样式为当前系统样式 try { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); } catch (Exception e) { // TODO:handle exception } Image loginbk = null; try { loginbk = ImageIO.read(new File("image/pc1.jpg")); } catch (IOException e) { // TODO:handle exception e.printStackTrace(); } // 窗口背景面板 bkim = new ImagePanel(loginbk); bkim.setLayout(null); carIn = new JButton(new ImageIcon("image/carin.png")); carIn.setBounds(100,36,180,60); carIn.setRolloverIcon(new ImageIcon("image/carin.png")); setbutton(carIn); carIn.setToolTipText("车辆进场"); carOut = new JButton(new ImageIcon("image/carout.png")); carOut.setBounds(100,100,180,60); carOut.setRolloverIcon(new ImageIcon("image/carout.png")); setbutton(carOut); carOut.setToolTipText("出场结算"); Search = new JButton(new ImageIcon("image/infoquery.png")); Search.setBounds(100,160,180,60); Search.setRolloverIcon(new ImageIcon("image/infoquery.png")); setbutton(Search); Search.setToolTipText("信息查询"); Exit = new JButton(new ImageIcon("image/exit.png")); Exit.setBounds(100,220,180,60); Exit.setRolloverIcon(new ImageIcon("image/exit.png")); setbutton(Exit); Exit.setToolTipText("退出"); bkim.add(carIn); bkim.add(carOut); bkim.add(Search); bkim.add(Exit); windowsmenu(); this.setUndecorated(true); WindowMove(); setOpacity(); this.add(bkim); this.setSize(400,290); this.setVisible(true); this.setLocationRelativeTo(null); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } // 窗体移动函数 public void WindowMove() { //设立没有标题窗口可以拖动 this.addMouseListener(new MouseAdapter() { public void mousePressed(MouseEvent e) { //按下(mousePressed 不是点击,而是鼠标被按下没有抬起) origin.x = e.getX(); //当鼠标按下时候获得窗口当前位置 origin.y = e.getY(); } }); this.addMouseMotionListener(new MouseMotionAdapter() { public void mouseDragged(MouseEvent e) { Point p =getLocation(); //当鼠标拖动时获取窗口当前位置 //设立窗口位置 //窗口当前位置 + 鼠标当前在窗口位置 - 鼠标按下时候在窗口位置 setLocation(p.x + e.getX() - origin.x,p.y + e.getY() - origin.y); } }); } @Override public void mouseClicked(MouseEvent e) { // TODO Auto-generated method stub if(e.getSource() == min) { setState(JFrame.ICONIFIED); } if(e.getSource() == close) { dispose(); } if(e.getSource() == loginqueding) { String userid = user.getSelectedItem().toString().trim(); String upassword = new String(this.password.getPassword()); if (userid.equals("")) { JOptionPane.showMessageDialog(this,"请输入顾客再登录"); return; } if (upassword.equals("")) { JOptionPane.showMessageDialog(this,"请输入密码再登录"); return; } if (userid.equals("admin") || upassword.equals("418218")) { new UserMainWindows(); this.dispose(); return; } if (!LoginModel.checkid(userid)) { JOptionPane.showMessageDialog(this,"<html><br/>抱歉 <font color = 'red'>"+userid+"</font> 没有登录此系统权限<br/>"); return; } if (LoginModel.checkpassword(userid,upassword)) { new UserMainWindows(); }else { JOptionPane.showMessageDialog(this,"密码不对的,请重新输入密码"); this.password.setText(""); return; } }else if(e.getSource() == carIn){ if(count>0){ if(indate == null){ count--; ParkPojo.setCarCount(count); Date date=new Date(); DateFormat format=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String time=format.format(date); indate = time; JOptionPane.showMessageDialog(this,"车辆已停入,剩余车位"+count+",当前时间:"+time); }else{ JOptionPane.showMessageDialog(this,"您已停入"); } }else{ JOptionPane.showMessageDialog(this,"已无车位"); } }else if(e.getSource() == carOut){ Date date=new Date(); DateFormat format=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String time=format.format(date); if(indate == null){ JOptionPane.showMessageDialog(this,"未停入车辆"); }else{ count++; ParkPojo.setCarCount(count); int thour = Integer.parseInt(dateDiff(indate,time,"yyyy-MM-dd HH:mm:ss").get("hour").toString())+1; JOptionPane.showMessageDialog(this,"共停放"+thour+"小时,费用是:"+(thour*ParkPojo.getA())+"元"); indate = null; } }else if(e.getSource() == Search){ if(indate == null){ JOptionPane.showMessageDialog(this,"未停入车辆"); }else{ new ParkQuery(indate); } }else if(e.getSource() == Exit){ dispose(); } } @Override public void mouseEntered(MouseEvent e) { // TODO Auto-generated method stub } @Override public void mouseExited(MouseEvent e) { // TODO Auto-generated method stub } @Override public void mousePressed(MouseEvent e) { // TODO Auto-generated method stub } @Override public void mouseReleased(MouseEvent e) { // TODO Auto-generated method stub } // 窗口淡入淡出函数 public void setOpacity() { // 窗口设立淡入淡出代码段 AWTUtilities.setWindowOpacity(Park.this,0f); ActionListener lisener = new ActionListener() { float alpha = 0; @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub if (alpha < 0.9) { AWTUtilities.setWindowOpacity(Park.this,alpha+=0.1); } else { AWTUtilities.setWindowOpacity(Park.this,1); Timer source = (Timer) e.getSource(); source.stop(); } } }; // 设立线程控制 new Timer(50,lisener).start(); } /** * 计算两个日期相差几天 * @author ym * @date Nov 12, 2:30:38 PM * @param startTime * @param endTime * @param format 格式 */ private Map dateDiff(String startTime,String endTime,String format) { // TODO Auto-generated method stub // 按照传入格式生成一种simpledateformate对象 SimpleDateFormat sf = new SimpleDateFormat(format); long nd = 1000 * 24 * 60 * 60;// 一天毫秒数 long nh = 1000 * 60 * 60;// 一小时毫秒数 long nm = 1000 * 60;// 一分钟毫秒数 long ns = 1000;// 一秒钟毫秒数 long diff; Map diffMap = new HashMap(); try { diff = sf.parse(endTime).getTime() - sf.parse(startTime).getTime(); long day = diff / nd;// 计算差多少天 long hour = diff % nd / nh;// 计算差多少小时 long min = diff % nd % nh / nm;// 计算差多少分钟 long sec = diff % nd % nh % nm / ns;// 计算差多少秒 // 输出成果 System.out.println("时间相差:" + day + "天" + hour + "小时" + min + "分钟" + sec + "秒。"); diffMap.put("day",String.valueOf(day)); diffMap.put("hour",String.valueOf(hour)); // diffMap.put("min",String.valueOf(min)); // diffMap.put("sec",String.valueOf(sec)); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } return diffMap; } public static String getRandomString(int length){ String str="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; java.util.Random random = new java.util.Random(); StringBuffer sb = new StringBuffer(); for(int i = 0 ;i < length;++i){ int number = random.nextInt(62);//[0,62) sb.append(str.charAt(number)); } return sb.toString(); } public static String getRandomString2(int length){ java.util.Random random = new java.util.Random(); StringBuffer sb = new StringBuffer(); for(int i = 0;i < length;++i){ int number = random.nextInt(3); long result = 0; switch(number){ case 0: result = Math.round(Math.random() * 25 + 65); sb.append(String.valueOf((char)result)); break; case 1: result = Math.round(Math.random() * 25 + 97); sb.append(String.valueOf((char)result)); break; case 2: sb.append(String.valueOf(new java.util.Random().nextInt(10))); break; } } return sb.toString(); } }- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 停车场 标准 管理 系统
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【天****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【天****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【天****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【天****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文