数据结构课程设计-停车场管理程序.doc_第1页
数据结构课程设计-停车场管理程序.doc_第2页
数据结构课程设计-停车场管理程序.doc_第3页
数据结构课程设计-停车场管理程序.doc_第4页
数据结构课程设计-停车场管理程序.doc_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数据结构与算法设计课程设计任务书题 目停车场管理程序学生姓名小海学号201001010104专业班级信息1001设计内容与要求【问题描述】有一个停车场,它只有一个大门可以供车辆出入,车辆在停车场内按车辆先后顺序一次排列,若站内已停满车,后来的车则在门外的通道上等待,直到停车场内有车离开,利用JAVA语言编写,可以实现对进入和离开的车辆的统计、协调及收费,减轻大型停车场管理人员的工作负担,实现管理工作信息化。【课程设计目的】设计一个Java程序,可以查看停车场信息,可以添加、查看、删除停车场车位信息等功能,掌握栈和队列的基本操作算法,达到灵活运用。【软件功能】1、对到达车辆进行车位分配。2、随着车辆的到达/离去可以记录牌号,停车时间,停车位号及离开时的计费。3、管理员可以按照车位号进行数据查询。4、可以通过对进入/离开车辆的数量统计,对空余停车位进行统计。5、采用菜单编辑进行操作。【算法思想】1、 选择、顺序栈和链队列,数组的运用。2、 车站是一个很窄的、一边开口的车道,先进先出,故车场用栈这种数据结构来描述。3、 外面狭长的通道,先进先出,故用队列结构来描述。4、 当停车场已满时,对于通道上车辆的停放,用一个循环列队来实现,通道上的车辆离开或进入只需改变此循环列队上的结点而已。【提交成果】1.“数据结构与算法设计课程设计任务书”一份,打印装袋;2.“数据结构与算法设计课程设计报告”一份,打印装袋;3、上面两项内容的word文档,通过电子邮件交到指导教师。起止时间2013 年 6 月18日 至 2013 年7月 1 日指导教师签名 年 月 日 系(教研室)主任签名 年 月 日学生签名小海 2013 年 6 月 18 日数据结构与算法设计课程设计专业 信息与计算科学 班级 信息1001学号 姓名小海 完成日期 2013/6/18 指导教师(签名)1、 程序设计说明书【设计题目】停车场管理程序【问题描述】有一个停车场,它只有一个大门可以供车辆出入,车辆在停车场内按车辆先后顺序一次排列,若站内已停满车,后来的车则在门外的通道上等待,直到停车场内有车离开,利用JAVA语言编写,可以实现对进入和离开的车辆的统计、协调及收费,减轻大型停车场管理人员的工作负担,实现管理工作信息化。【软件功能】1、对到达车辆进行车位分配。2、随着车辆的到达/离去可以记录牌号,停车时间及离开时的计费。3、管理员可以按照车位号进行数据查询。4、可以通过对进入/离开车辆的数量统计,对空余停车位进行统计。5、采用菜单编辑进行操作。【算法思想】1选择、顺序栈和链队列,数组的运用。2车站是一个很窄的、一边开口的车道,先进先出,故车场用栈这种数据结构来描述。3外面狭长的通道,先进先出,故用队列结构来描述。4当停车场已满时,对于通道上车辆的停放,用一个循环列队来实现,通道上的车辆离开或进入只需改变此循环列队上的结点而已。【类的设计】CarInfo.javapackage 停车场管理;/* * 车辆信息类:每个车有车辆编号以及进站时间 * author Micro * */public class CarInfo /车的编号Data.javapackage 停车场管理;import javax.swing.DefaultComboBoxModel;import javax.swing.JComboBox;import javax.swing.JTextArea;import javax.swing.JTextField;/* * 存放数据的类 * * author Micro * */public class Data ListNode.javapackage 停车场管理;/* * 链表节点类 * * author Micro * */public class ListNode MyListQueue.javapackage 停车场管理;/* * 用链表实现的队列 * * author Micro * */public class MyListQueue MyStack.javapackage 停车场管理;/* * 自定义栈,用数组实现 * * author Micro * */public class MyStack UI.java/界面设计【存储结构设计】采用顺序栈和链式队列结构,用户界面通过DOS来实现,主要的业务逻辑在顺序栈和队列中实现。【模块划分及调用关系】主模块车辆信息模块链表节点模块用链表实现的队列模块存放数据模块自定义栈模块本程序采用栈表示停车场,用数组实现,采用队列表示候车场,用链表实现,自定义的链表、栈以及队列如下图所示:1. 车入站:首先判断停车场是否有空位,若有空位则进入停车场,若没有空位则判断后车场是否有空位,若有则进入候车场排队,若没有显示不能进入,代码实现如下:public boolean carIn(CarInfo ca) if (isHave(ca.getCarNo() return false; else / 如果停车场没满,停入停车场if (!inSide.isFull() inSide.Push(ca);System.out.println(编号为 + ca.getCarNo() + 的车存入了停车场,位置为+ inSide.size();javax.swing.JOptionPane.showMessageDialog(null,编号为 + ca.getCarNo() + 的车存入了停车场,位置为 + inSide.size();inSideinfo.setText(还剩 + (size1 - inSide.size() + 个车位);String model=new StringinSide.size();CarInfo mod=inSide.toArray();for(int i=0;iinSide.size();i+)modeli=+modi.getCarNo();cho.setModel(new DefaultComboBoxModel(model);return true; else if (!wait.isFull() / 如果后车场没满,停入候车场wait.add(ca);System.out.println(编号为 + ca.getCarNo() + 的车进入了候车场,位置为+ wait.size();javax.swing.JOptionPane.showMessageDialog(null,编号为 + ca.getCarNo() + 的车进入了候车场,位置为 + wait.size();waitInfo.setText(还剩 + (size2 - wait.size() + 个位置);return true; else / 都满了提示无法进入System.out.println(已满);javax.swing.JOptionPane.showMessageDialog(null, 已满);return false;2. 车出站:若此车不为栈顶元素,则需要将它上面的元素先移出栈,然后再让车回来,若此时候车场里有等待的车,则让候车场排第一个位置的车停入停车场,代码实现如下:public CarInfo carOut(int CarNo,int outTime) CarInfo ca = null;String info = ;/ 如果停车场不为空if (!inSide.isEmpty() / 判断是否为要的车ca = inSide.Pop();while (ca.getCarNo() != CarNo) outSide.Push(ca);info += 编号为 + ca.getCarNo() + 的车出站让路n;ca = inSide.Pop();ca.setOutTime(outTime);info += 找到编号为 + ca.getCarNo() + 的车n;/ 让车回来while (!outSide.isEmpty() inSide.Push(outSide.Pop();info += 停车场剩余位置 + (size1 - inSide.size() + n;inSideinfo.setText(还剩 + (size1 - inSide.size() + 个车位);/ 如果侯车场有车,让候车区的车停入if (!wait.isEmpty() CarInfo waitIn=wait.deQueue();waitIn.setinTime(outTime);inSide.Push(waitIn);info += 候车场编号为+waitIn.getCarNo()+的车进入停车场,侯车场现在有 + wait.size() + 辆车n;inSideinfo.setText(还剩 + (size1 - inSide.size() + 个车位);waitInfo.setText(还剩 + (size2 - wait.size() + 个位置);String model=new StringinSide.size();CarInfo mod=inSide.toArray();for(int i=0;i 0) i = (i + 1) % size;WaitArri = WaitCari;return WaitArr;/ 获取循环列表长度public int size() return (rear - (front + 1) % size) + size) % size+1;【收获及体会】1、巩固和加深了对数据结构的理解,提高综合运用本课程所学知识的能力。2、培养了我选用参考书,查阅手册及文献资料的能力。培养独立思考,深入研究,分析问题、解决问题的能力。3、通过实际编译系统的分析设计、编程调试,掌握应用软件的分析方法和工程设计方法。4、通过课程设计,培养了我严肃认真的工作作风,逐步建立正确的生产观念、经济观念和全局观念。根据我在实习中遇到得问题,我将在以后的学习过程中注意以下几点: 1、认真上好专业实验课,多在实践中锻炼自己。2、写程序的过程中要考虑周到,严密。3、在做设计的时候要有信心,有耐心,切勿浮躁。4、认真的学习课本知识,掌握课本中的知识点,并在此基础上学会灵活运用。5、在课余时间里多写程序,熟练掌握在调试程序的过程中所遇到的常见错误,以便能节省调试程序的时间。这是一门纯属于设计的科目,它需用把理论变为上机调试。在学习科目的第一节课起,李老师就为我们阐述了它的重要性。它对我们来说具有一定的难度。它是其它编程语言的一门基本学科。尤其是在这次课程设计中,我做的是停车场管理程序,其中有很多算法的不是一下就可以想出来的,虽然过程比较艰难,但是从的收益匪浅。4、 源程序代码CarInfo.javapackage 停车场管理;/* * 车辆信息类:每个车有车辆编号以及进站时间 * author Micro * */public class CarInfo /车的编号private int carNo;/车的停车时刻private int inTime;private int outTime;public CarInfo(int carNo,int inTime)this.carNo=carNo;this.inTime=inTime;public int getCarNo() return carNo;public int getinTime() return inTime;public void setinTime(int time)this.inTime=time;public int getOutTime() return outTime;public void setOutTime(int outTime) this.outTime = outTime;Data.javapackage 停车场管理;import javax.swing.DefaultComboBoxModel;import javax.swing.JComboBox;import javax.swing.JTextArea;import javax.swing.JTextField;/* * 存放数据的类 * * author Micro * */public class Data private MyStack inSide;private MyStack outSide;private MyListQueue wait;private int size1;private int size2;private JTextArea jta;private JTextField inSideinfo;private JTextField waitInfo;private JComboBox cho;/* * * param waitInfo * 显示候车区状态 * param inSideInfo * 显示停车场状态 * param jta * 显示出站时状态 * param size1 * 栈的大小 * param size2 * 队列的大小 * param cho * 选择在停车场里面的车出站 */public Data(JTextField inSideinfo, JTextField waitInfo, JTextArea jta,int size1, int size2, JComboBox cho) this.size1 = size1;this.size2 = size2;this.inSide = new MyStack(size1);inSide.InitStack();this.outSide = new MyStack(size1);outSide.InitStack();inSideinfo.setText(还剩 + (size1 - inSide.size() + 个车位);this.wait = new MyListQueue(size2);wait.InitQueue();waitInfo.setText(还剩 + (size2 - wait.size() + 个位置);this.inSideinfo = inSideinfo;this.waitInfo = waitInfo;this.jta = jta;this.cho=cho;public MyStack getInSide() return inSide;public MyStack getOutSide() return outSide;public MyListQueue getWait() return wait;public boolean carIn(CarInfo ca) if (isHave(ca.getCarNo() return false; else / 如果停车场没满,停入停车场if (!inSide.isFull() inSide.Push(ca);System.out.println(编号为 + ca.getCarNo() + 的车存入了停车场,位置为+ inSide.size();javax.swing.JOptionPane.showMessageDialog(null,编号为 + ca.getCarNo() + 的车存入了停车场,位置为 + inSide.size();inSideinfo.setText(还剩 + (size1 - inSide.size() + 个车位);String model=new StringinSide.size();CarInfo mod=inSide.toArray();for(int i=0;iinSide.size();i+)modeli=+modi.getCarNo();cho.setModel(new DefaultComboBoxModel(model);return true; else if (!wait.isFull() / 如果后车场没满,停入候车场wait.add(ca);System.out.println(编号为 + ca.getCarNo() + 的车进入了候车场,位置为+ wait.size();javax.swing.JOptionPane.showMessageDialog(null,编号为 + ca.getCarNo() + 的车进入了候车场,位置为 + wait.size();waitInfo.setText(还剩 + (size2 - wait.size() + 个位置);return true; else / 都满了提示无法进入System.out.println(已满);javax.swing.JOptionPane.showMessageDialog(null, 已满);return false;public CarInfo carOut(int CarNo,int outTime) CarInfo ca = null;String info = ;/ 如果停车场不为空if (!inSide.isEmpty() / 判断是否为要的车ca = inSide.Pop();while (ca.getCarNo() != CarNo) outSide.Push(ca);info += 编号为 + ca.getCarNo() + 的车出站让路n;ca = inSide.Pop();ca.setOutTime(outTime);info += 找到编号为 + ca.getCarNo() + 的车n;/ 让车回来while (!outSide.isEmpty() inSide.Push(outSide.Pop();info += 停车场剩余位置 + (size1 - inSide.size() + n;inSideinfo.setText(还剩 + (size1 - inSide.size() + 个车位);/ 如果侯车场有车,让候车区的车停入if (!wait.isEmpty() CarInfo waitIn=wait.deQueue();waitIn.setinTime(outTime);inSide.Push(waitIn);info += 候车场编号为+waitIn.getCarNo()+的车进入停车场,侯车场现在有 + wait.size() + 辆车n;inSideinfo.setText(还剩 + (size1 - inSide.size() + 个车位);waitInfo.setText(还剩 + (size2 - wait.size() + 个位置);String model=new StringinSide.size();CarInfo mod=inSide.toArray();for(int i=0;iinSide.size();i+)modeli=+modi.getCarNo();cho.setModel(new DefaultComboBoxModel(model);jta.setText(info);return ca;private boolean isHave(int CarNo) for (int i = 0; i inSide.size(); i+) if (inSide.toArray()i.getCarNo() = CarNo) System.out.println(此车在停车场);javax.swing.JOptionPane.showMessageDialog(null, 此车在停车场);return true;for (int i = 0; i -1; i-) / System.out.println(caListi);caArri = caListi;return caArr;/* * 检查是否存在元素 * * param CarNo * 车辆编号 * return */public boolean isHave(int CarNo) for (int i = top; i -1; i-) if (caListi.getCarNo() = CarNo) / /System.out.println(找到编号为 + CarNo + 的车);return true;/ System.out.println(没有找到编号为 + CarNo + 的车);return false;UI.javapackage 停车场管理;import java.awt.BorderLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.ComboBoxModel;import javax.swing.DefaultComboBoxModel;import javax.swing.JButton;import javax.swing.JComboBox;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JScrollPane;import javax.swing.JTabbedPane;import javax.swing.JTextArea;import javax.swing.JTextField;import javax.swing.WindowConstants;import javax.swing.SwingUtilities;/* * This code was edited or generated using CloudGardens Jigloo SWT/Swing GUI * Builder, which is free for non-commercial use. If Jigloo is being used * commercially (ie, by a corporation, company or business for any purpose * whatever) then you should purchase a license for each developer using Jigloo. * Please visit for details. Use of Jigloo implies * acceptance of these licensing terms. A COMMERCIAL LICENSE HAS NOT BEEN * PURCHASED FOR THIS MACHINE, SO JIGLOO OR THIS CODE CANNOT BE USED LEGALLY FOR * ANY CORPORATE OR COMMERCIAL PURPOSE. */public class UI extends javax.swing.JFrame /* * */private static final long serialVersionUID = 1L;/ Set Look & Feeltry javax.swing.UIManager.setLookAndFeel(com.sun.java.swing.plaf.windows.WindowsLookAndFeel); catch (Exception e) e.printStackTrace();private JTabbedPane jTabbedPane1;private JPanel jPanel1;private JLabel jLabel3;private JLabel jLabel4;private JLabel jLabel5;private JScrollPane jScrollPane1;private JLabel jLabel6;private JTextField jTextField5;private JButton jButton3;private JTextArea jTextArea1;private JComboBox jComboBox1;private JButton jButton1;private JTextField jTextField4;private JTextField jTextField3;private JLabel jLabel2;private JTextField jTextField2;private JTextField jTextField1;private JLabel jLabel1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论