数据结构—停车场管理系统

合集下载

数据结构—停车场管理系统

数据结构—停车场管理系统

数据结构—停车场管理系统数据结构—停车场管理系统1.引言本文档描述了一个停车场管理系统的设计和实现。

停车场管理系统是一个用于管理停车场内车辆进出、计费等相关事务的系统。

该系统通过数据结构的应用实现了高效的车辆管理和计费功能。

2.系统概述2.1 目标停车场管理系统的目标是提供一个高效、准确和可靠的车辆管理和计费系统,使停车场管理人员能够更好地管理停车场内的车辆。

2.2 功能该系统的主要功能包括:●车辆进入管理:记录进入停车场的车辆信息,包括车牌号码、进入时间等●车辆离开管理:记录离开停车场的车辆信息,包括车牌号码、离开时间等,并计算相应的停车费用●停车位管理:记录停车场内所有车位的使用情况,包括已使用和空闲的车位信息●支付管理:根据停车时长计算停车费用,并提供支付功能●统计报表:停车场内车辆进出、停车时长、收入等相关统计报表3.系统设计3.1 数据结构选择为了实现停车场管理系统的高效运行,选择以下数据结构:●链表:用于管理车辆进出的顺序,支持快速插入和删除操作●哈希表:用于存储车辆信息,通过车牌号码作为键,快速检索和访问各个车辆的信息●栈:用于管理停车场内的车位,支持快速分配和释放车位●队列:用于统计报表时的数据存储和处理3.2 系统架构停车场管理系统的整体架构如下所示:●用户界面:提供用户操作界面,包括车辆进入、离开、支付以及查询等功能●车辆管理模块:负责处理车辆进入和离开的相关逻辑,包括记录车辆信息、计算停车费用等●停车位管理模块:负责管理停车场内车位的分配和释放,包括查找空闲车位、更新车位状态等●统计报表模块:负责停车场内各种统计报表,包括车辆进出统计、停车时长统计、收入统计等4.系统实现4.1 用户界面实现用户界面可以通过文本命令行交互或者图形用户界面来实现,具体实现方式根据实际需求决定。

4.2 车辆管理模块实现车辆管理模块可以通过链表来实现车辆进出的顺序管理。

每次车辆进入时,创建一个新的节点插入链表末尾;每次车辆离开时,从链表中删除对应节点。

《数据结构》停车场系统设计报告--停车场管理系统_

《数据结构》停车场系统设计报告--停车场管理系统_

《数据结构》停车场系统设计报告--停车场管理系统_一、系统总体原则1.1、系统的安全性:停车场管理系统要求引入多重安全措施,确保其系统数据的安全,以防止非法黑客进行攻击;系统本身要具备安全保护机制,确保核心系统重要功能不能被破坏。

1.2、系统功能:停车场管理系统要具备通行证管理,车辆管理,收费管理,维修管理,系统权限控制和固定车位管理等多种功能。

1.3、系统数据管理:停车场管理系统要实现对用户信息,车辆信息,收费信息,维修信息和工作日志等数据的便捷管理;支持数据注入,报表输出,日志查询,备份恢复等。

二、系统数据结构2.1、用户信息结构:用户类型、用户名、密码、真实姓名、联系电话、优惠折扣比、优惠申请次数等2.2、车辆信息结构:车牌号、车牌颜色、停放位置、停放时间、收费金额等2.3、收费信息结构:收费时间、车牌号、应缴金额、实缴金额、优惠金额、收费员等2.4、维修信息结构:维修时间、车牌号、维修内容、维修费用、维修人等2.5、工作日志结构:日志类型、生成时间、触发时间、操作内容、操作人等三、系统模块设计通行证管理模块:能够管理停车场的客户信息,支持优惠折扣的设置,支持多种客户角色的分配及权限管理。

车辆管理模块:能够管理停车场的车辆信息,支持分配停车位、跟踪车辆停放时间以及出入位置,以实现计算停车费用。

收费管理模块:能够实现车辆停放费用的计费与收取,支持优惠计算功能,支持收费记录的查询与管理。

维修管理模块:能够管理停车场的车辆维修信息,能够针对每辆车的维修记录进行查询、录入和管理。

系统权限控制模块:支持可根据多种角色分配权限,以实现系统模块及功能的控制,保证信息安全性。

固定车位管理模块:能够支持固定车位信息的管理,可支持用户管理固定车位,以便系统自动识别用户并提供优惠处理。

四、系统实现方案4.1 前端 : 对停车场系统进行交互式操作,支持web,客户端,短信等界面,实现用户的操作及查询;前端应用可跨平台进行。

数据结构课程设计——停车场

数据结构课程设计——停车场

数据结构课程设计——停车场在当今社会,随着汽车数量的不断增加,停车场的管理变得日益重要。

一个高效、合理的停车场管理系统不仅能够提高停车场的使用效率,还能为车主提供更好的服务体验。

在本次数据结构课程设计中,我们将深入探讨如何设计一个实用的停车场管理系统。

一、需求分析首先,我们需要明确停车场管理系统的基本需求。

一般来说,它应该具备以下功能:1、车辆的入场登记,包括车辆的车牌号、入场时间等信息。

2、车辆的出场结算,根据停车时间计算停车费用。

3、实时显示停车场内的车位使用情况,以便车主了解是否有空闲车位。

4、能够支持不同类型的车辆,如小型车、中型车、大型车等,并根据车辆类型收取不同的费用。

二、数据结构选择为了实现上述功能,我们需要选择合适的数据结构来存储和管理停车场的相关信息。

1、对于车辆信息的存储,我们可以使用链表。

链表的优点是插入和删除操作比较方便,可以快速地对车辆的入场和出场进行处理。

2、对于车位的管理,我们可以使用栈或者队列。

如果采用栈的方式,先进后出,适合模拟停车场的一端进出;如果采用队列的方式,先进先出,更符合一些实际场景中车辆按顺序入场和出场的情况。

3、为了快速查找车辆的信息,我们还可以使用哈希表,通过车牌号作为键,快速获取车辆的相关数据。

三、系统设计1、入场流程当车辆入场时,系统会获取车辆的车牌号、车型和入场时间等信息。

将这些信息存储到链表中,并在车位管理的数据结构(如栈或队列)中为车辆分配一个车位。

同时,更新停车场内的车位使用情况。

2、出场流程车辆出场时,根据车牌号在链表中查找车辆的入场时间等信息,计算停车时间和费用。

然后在车位管理的数据结构中释放车位,并更新车位使用情况。

3、车位显示实时统计车位管理数据结构中的空闲车位数量,并展示给车主,让他们能够提前了解停车场的空位情况。

4、费用计算根据车辆的车型和停车时间,按照预设的收费标准计算停车费用。

四、算法实现1、车辆入场算法```cvoid vehicleEntry(char plateNumber, int vehicleType) {Vehicle newVehicle =(Vehicle )malloc(sizeof(Vehicle));strcpy(newVehicle>plateNumber, plateNumber);newVehicle>vehicleType = vehicleType;newVehicle>entryTime = time(NULL);//将车辆信息插入链表insertVehicle(newVehicle);//为车辆分配车位allocateParkingSpace(newVehicle);updateParkingStatus();}```2、车辆出场算法void vehicleExit(char plateNumber) {Vehicle vehicle = searchVehicle(plateNumber);if (vehicle == NULL) {printf("未找到该车辆信息\n");return;}double parkingFee = calculateFee(vehicle);//释放车位releaseParkingSpace(vehicle);//从链表中删除车辆信息deleteVehicle(vehicle);updateParkingStatus();printf("车牌号:%s,停车费用:%2f 元\n", plateNumber, parkingFee);}```3、车位分配算法(以栈为例)void allocateParkingSpace(Vehicle vehicle) {if (top < MAX_PARKING_SPACES 1) {parkingSpaces++top = vehicle;vehicle>parkingSpaceNumber = top + 1;} else {printf("停车场已满\n");}}```4、车位释放算法```cvoid releaseParkingSpace(Vehicle vehicle) {if (top >= 0 && parkingSpacestop == vehicle) {parkingSpacestop = NULL;top;} else {printf("车位释放错误\n");}}```五、系统测试在完成系统的开发后,我们需要进行充分的测试以确保系统的稳定性和正确性。

数据结构停车场管理系统数据结构设计

数据结构停车场管理系统数据结构设计

数据结构停车场管理系统数据结构设计在智能化时代的今天,停车问题成为了城市管理的一大难题。

为了解决车辆日益增多的停车需求,设计一个高效的停车场管理系统显得尤为重要。

本文将围绕数据结构的设计来探讨停车场管理系统的实现。

一、需求分析停车场管理系统的主要功能是提供用户停车、缴费、查询等服务,同时需要为管理人员提供车辆调度、收费统计等功能。

为了实现这些功能,我们需要从需求角度对数据结构进行设计。

1. 用户管理停车场管理系统需要记录每个用户的停车信息,包括车辆信息、停车时间等。

为了高效查询用户信息,可以使用哈希表作为数据结构,将用户的身份证号或车牌号作为键值,用户信息作为值进行存储。

2. 车辆管理为了维护停车场内的车辆信息,我们可以使用链表作为数据结构来管理车辆。

每个节点可以保存一个车辆的信息,如车牌号、停车时间等,同时连接下一个车辆节点。

3. 车位管理停车场需要管理可用车位和已停车位。

为了高效分配车位,可以使用堆作为数据结构来存储可用车位信息。

堆可以根据剩余车位数量进行自动排序,当有车辆进入停车场时,从堆中取出最小的剩余车位。

4. 收费管理停车场管理系统需要计算用户停车时间并进行费用结算。

为了高效计算停车时间,可以使用栈作为数据结构来记录每个用户进入停车场的时间。

栈可以实现先进后出的特点,正好符合车辆停车的实际情况。

当用户离开停车场时,可以根据进入时间计算停车时间并进行费用结算。

5. 查询与统计为了用户能够方便地查询自己的停车信息,可以使用二叉查找树作为数据结构,将用户的车牌号作为键值进行存储。

二叉查找树可以在O(log n)的时间复杂度内完成查询操作。

另外,为了方便管理人员进行统计工作,可以使用散列表来存储车辆的停车信息,以便根据不同条件进行统计分析。

二、系统设计基于以上需求分析,我们可以得出停车场管理系统的数据结构设计如下:1. 用户管理使用哈希表来存储用户信息,将用户的身份证号或车牌号作为键值,用户信息作为值进行存储。

数据结构-停车场管理系统数据结构设计

数据结构-停车场管理系统数据结构设计

数据结构课程设计个人报告班级计算机10xx学号201026xx姓名xxx日期2012年6月信息学院课程设计个人任务书目录1.概要设计原理及实现方案 (1)1.1 自定义数据结构 (1)1.1.1 关于数据结构的类实现 (1)1.1.2 数据结构设计方案 (1)1.1.3 数据存储结构设计 (1)1.2 数据结构的具体设计 (2)1.2.1 数据结构设计图 (2)1.2.2数据存储及操作函数具体声明 (3)1.2.3 数据结构的初始化 (4)1.2.4 构建操作函数流程图 (6)1.2.5 其他操作函数流程图 (7)1.3 总程序的调试与整合 (7)2.主要程序代码 (9)2.1 .H头文件 (9)parking.h (9)2.2 .CPP文件 (14)Head_Test.cpp (14)3.程序测试与运行 (15)4.问题与创新 (18)4.1 问题分析及改进方法 (18)4.2 创新内容及发展前景 (18)4.3 创新数据结构----宫格树 (18)5.个人课程设计总结 (21)1.概要设计原理及实现方案1.1 自定义数据结构1.1.1 关于数据结构的类实现数据结构的类实现是一种面向对象编程的实现,更有机的结合了数据存储和操作函数的关系。

1.1.2 数据结构设计方案1、此次试验设计的数据结构是根据实验要求停车场数据存储的实际需要而设计的;2、按照停车场数据存储的需要,定义了一个类似于线性表的结构来存储车辆数据。

存储的车辆信息有:上下层信息,停车位编号,车辆型号(大,中,小型),车辆牌照信息,进场小时数,进场时间(日期,月份,年份);3、每种数据按照需要分配存储空间,比如上下层信息只需要一个char型数据即可表明,所以只分配一个char型数据的存储空间。

而车辆牌照需要八个char型数据来存储信息,则分配八个char型数据空间来存储信息;4、操作函数的则设计根据数据存储的结构结合实际停车场的各种功能需要来设计。

数据结构课程设计停车场管理系统

数据结构课程设计停车场管理系统

数据结构课程设计停车场管理系统
停车场管理系统是一种体现现代化管理的车库管理系统,它可以有效地控制车辆的入库、出库和停车费收取等。

停车场管理系统的设计原则是以业务实用性为基础,以车辆的安全和管理的效率为核心,以车主的方便为目标,以信息安全和财务支持为基础,以及以智慧停车场的发展为发展方向来设计。

停车场管理系统是一个基于互联网的系统,可以实现停车场的网络化管理,它可以实现停车场车辆的实时管理,可以实现停车场数据的实时上传和下载,可以实现停车场费用的实时收取,可以实现停车场财务的实时总结等功能,可以提高停车场的管理效率,提升停车场的运营水平。

总之,停车场管理系统是一个具有较强实用性的系统,它可以有效地控制车辆的入库、出库和停车费收取等,并可以实现停车场的网络化管理,提高停车场的管理效率,提升停车场的运营水平。

只要系统管理人员根据实际情况,灵活有效地调整系统的参数和指标,停车场管理系统将会发挥出最大的作用。

数据结构课程设计报告书 停车场管理系统

数据结构课程设计报告书 停车场管理系统

#include<stdio.h>#include<stdlib.h>#include<string.h>#define N 100/*预设停车场有100个车位*/#define D 1.2/*预设车辆停车费为1.2元每小时*/ #define NUMBER 100void menu();void start();void parkingplace();void drive();struc car{int carnumber;int cararrave;int carleave;int carplace;}car[NUMBER];struct park;{int null;}parkingplace[N-1];void main (){menu();/*菜单*/}void menu(){int n;do{puts("****MENU***");puts("1、停车");puts("2、开车");puts("3、退出");puts("4、初始化");printf("请选择你需要的服务(1-4):");scanf("%d",&n);}switch(n){case 1:parking;break;/*停车函数*/case 2:drive;brea ;/*开车函数*/case 3:exit;break;/*退出*/case 4:start;break;/*初始化*/}}void start()/*初始化*/{int i,j;for(i=0;j<N;i++)parking[i].null=0;/*停车场设置为空*/printf("已初始化");menu();}void parkingplace()/*车辆进入函数*/{int i,a,h=0;printf(“请输入该车系序号(从0开始):”);scanf(“%d”,&a);for(i=0;i<N;i++){if(parking[i].park==0)/*无车标记*/if(parking[i].park==1)/*有车标记*/h=h+1;}if(h==N)printf(“停车场内已满!”);else{car[a].carplace=h;parkingplace[h].null=1;printf(“该车应该停在停车场内”);printf(“请输入该车进停车场时间:”);scanf(“d%”,&car[a].cararrave);}void drive()/*车辆离开函数*/{int i,k,time;double(“请输入车辆次序号【】”);scanf(“%d”,&i);printf(“请输入离开时间:”);scanf(“%d”,&car[i]carleave);fee=D*(car[i].carleave-car[i].cardrrave);time=car[i].carleave-car[i].cardrrave;printf(“次序号为%d的车停时间%d小时,应收费%f元”,i,time,fee); }。

数据结构停车场管理实验报告

数据结构停车场管理实验报告

数据结构停车场管理实验报告一、实验目的本次实验旨在通过设计和实现一个停车场管理系统,深入理解和应用数据结构中的栈和队列等知识,提高解决实际问题的能力。

二、实验环境编程语言:C++开发工具:Visual Studio三、实验原理1、停车场采用栈结构来存储停放的车辆信息。

栈具有先进后出的特点,符合车辆先进入停车场后离开的逻辑。

2、停车场外的便道采用队列结构来存储等待进入停车场的车辆。

队列具有先进先出的特点,符合车辆按到达顺序进入停车场的需求。

四、实验内容1、设计数据结构定义栈和队列的数据结构,包括存储车辆信息的结构体。

实现栈和队列的基本操作,如入栈、出栈、入队、出队等。

2、功能实现车辆进入停车场:当有车辆进入停车场时,将车辆信息压入栈中。

车辆离开停车场:当有车辆离开停车场时,从栈中弹出相应车辆,并计算停车费用。

显示停车场状态:实时显示停车场内车辆的信息。

处理便道上的车辆:当停车场有空位时,将便道上的车辆依次入停车场。

3、界面设计设计简单的命令行交互界面,方便用户输入操作指令。

五、实验步骤1、定义数据结构```cppstruct Car {int carNumber;int arrivalTime;int departureTime;};class Stack {private:Car stackArray;int top;int capacity;public:Stack(int size) {capacity = size;stackArray = new Carcapacity; top =-1;}~Stack(){delete stackArray;}bool isFull(){return top == capacity 1;}bool isEmpty(){return top ==-1;}void push(Car car) {if (!isFull()){stackArray++top = car;} else {std::cout <<"停车场已满,无法进入!"<< std::endl;}}Car pop(){if (!isEmpty()){return stackArraytop;} else {std::cout <<"停车场为空,无法离开!"<< std::endl; return {-1, -1, -1};}}Car peek(){if (!isEmpty()){return stackArraytop;} else {std::cout <<"停车场为空!"<< std::endl; return {-1, -1, -1};}}};class Queue {private:Car queueArray;int front;int rear;int capacity;public:Queue(int size) {capacity = size;queueArray = new Carcapacity;front = rear =-1;}~Queue(){delete queueArray;}bool isFull(){return (rear + 1) % capacity == front;}bool isEmpty(){return front ==-1;}void enqueue(Car car) {if (!isFull()){if (isEmpty()){front = 0;}rear =(rear + 1) % capacity; queueArrayrear = car;} else {std::cout <<"便道已满,无法等待!"<< std::endl;}}Car dequeue(){if (!isEmpty()){Car car = queueArrayfront;if (front == rear) {front = rear =-1;} else {front =(front + 1) % capacity;}return car;} else {std::cout <<"便道为空!"<< std::endl;return {-1, -1, -1};}}Car frontElement(){if (!isEmpty()){return queueArrayfront;} else {std::cout <<"便道为空!"<< std::endl;return {-1, -1, -1};}}};```2、主函数实现```cppint main(){int parkingLotCapacity = 10; //假设停车场容量为 10 Stack parkingLot(parkingLotCapacity);Queue waitingQueue(parkingLotCapacity);int choice;while (true) {std::cout <<"1、车辆进入停车场" << std::endl;std::cout <<"2、车辆离开停车场" << std::endl;std::cout <<"3、显示停车场状态" << std::endl;std::cout <<"4、退出" << std::endl;std::cout <<"请选择操作:";std::cin >> choice;switch (choice) {case 1: {int carNumber;std::cout <<"请输入车辆号码:";std::cin >> carNumber;Car car ={carNumber, time(NULL),-1};if (!parkingLotisFull()){parkingLotpush(car);std::cout <<"车辆"<< carNumber <<"进入停车场" <<std::endl;} else {waitingQueueenqueue(car);std::cout <<"停车场已满,车辆"<< carNumber <<"在便道等待" << std::endl;}break;}case 2: {int carNumber;std::cout <<"请输入要离开的车辆号码:";std::cin >> carNumber;Car car;bool found = false;for (int i = parkingLottop; i >= 0; i) {if (parkingLotstackArrayicarNumber == carNumber) {car = parkingLotpop();cardepartureTime = time(NULL);found = true;break;}}if (found) {int parkingTime = difftime(cardepartureTime, cararrivalTime);double parkingFee = parkingTime 2; //假设每单位时间停车费为2 元std::cout <<"车辆"<< carNumber <<"离开停车场,停车时间:"<< parkingTime <<"秒,停车费用:"<<parkingFee <<"元" << std::endl;if (!waitingQueueisEmpty()){Car waitingCar = waitingQueuedequeue();parkingLotpush(waitingCar);std::cout <<"便道上的车辆"<< waitingCarcarNumber <<"进入停车场" << std::endl;}} else {std::cout <<"未找到要离开的车辆" << std::endl;}break;}case 3: {std::cout <<"停车场内车辆:"<< std::endl;for (int i = parkingLottop; i >= 0; i) {std::cout << parkingLotstackArrayicarNumber <<"";}std::cout << std::endl;std::cout <<"便道上等待的车辆:"<< std::endl;if (!waitingQueueisEmpty()){for (int i = waitingQueuefront; i!= waitingQueuerear; i =(i + 1) %waitingQueuecapacity) {std::cout << waitingQueuequeueArrayicarNumber <<"";}std::cout << waitingQueuequeueArraywaitingQueuerearcarNumber<< std::endl;} else {std::cout <<"无" << std::endl;}break;}case 4:return 0;default:std::cout <<"无效的选择,请重新输入" << std::endl;}}return 0;}```六、实验结果1、车辆正常进入停车场,并在停车场已满时在便道等待。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实训报告实训名称:停车场管理姓名: nnn院(系):软件学院专业班级:学号:指导教师:成绩:时间:2010 年 6 月 21 日至 2010 年 6 月 25 日实训任务书一、题目1.停车场管理2.员工管理系统3.校园导游程序4.编写一个杂货店排队模拟程序。

5.猜动物6.硬币游戏7.编写程序帮助旅游者找出从一个城市到另一个城市的最短旅行路径。

8.设计哈希表实现电话号码查询系统。

9.赫夫曼编码及译码二、实训的性质和任务数据结构实训是在完成理论课程学习之后安排的综合实践训练,要求学生能根据数据结构中所讲到的各种数据类型以及它们顺序和链式存储,在具体的应用中能运用并实现各种数据的各种不同操作。

通过一周的综合实训,使学生加深对如何将逻辑关系的数据按一定的存储方式存储在计算机内。

并为以后的编程打好基础。

三、实训的基本要求1、熟悉各种数据类型及它们在计算机中的存储方式;2、熟悉各种数据类型的基本操作,各基本操作的实现。

3、能综合运用各种数据类型实现一些具体的问题。

四、实训内容及要求五、考核指标及成绩评定实训成绩由下面构成:平时成绩(10%)+作品(70%)+实训报告(20%)=总评成绩作品成绩评定标准:1、全部完成90-1002、主要功能完成70-903、部分功能完成60-704、少部分完成40-605、几乎没做0-40完成期限:年月日指导教师签章:专业负责人签章:教学院长签章年月日一、需求说明仅仅认识到栈和队列是两种特殊的线性表是远远不够的,本次实习的目的在于使读者深入了解栈和队列的特征,以便在实际问题背景下灵活运用它们;同时还将巩固这两种结构的构造方法,接触较复杂问题的递归算法设计。

以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理。

每一组输入数据包括三个数据项:汽车“到达”或“离去”信息、汽车牌照号码及到达或离去的时刻,对每一组输入数据进行操作后的输出数据为:若是车辆到达,则输出汽车在停车场内或便道上的停车位置;若是车离去;则输出汽车在停车场内停留的时间和应交纳的费用(在便道上停留的时间不收费)。

栈以顺序结构实现,队列以链表实现。

设停车场内只有一个可停放n辆汽车的狭长通道,且只有一个大门可供汽车进出。

汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车停放在车场的最北端),若车场内已停满n 辆汽车,则后来的汽车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即可开入;当停车场内某辆车要离开时,在它之后开入的车辆必须先退出车场为它让路,待该辆车开出大门外,其它车辆再按原次序进入车场,每辆停放在车场的车在它离开停车场时必须按它停留的时间长短交纳费用。

试为停车场编制按上述要求进行管理的模拟程序。

二、功能描述停车场管理系统主要有以下几个功能:1、汽车进入车场添加车辆信息:车牌号、进车时间,如果停车场已满,则将车辆停入临时便道内。

2、汽车退出车场根据退出车辆的车牌号,进行优先退出,再根据退出时间计算停车费用。

并将临时便道中的车辆停入停车场内。

3、退出系统三、系统设计及实现软件规格要求合理,基于C语言程序设计,在有限空间达到效果最优化。

3.1设计要求用C语言实现“停车场管理系统”。

3.2系统功能(1)系统启动后,出现用户界面,人机交互。

(2)根据提示输入选项1、汽车进入车场2、汽车退出车场3、退出系统(3)进入车场时录入车辆牌号、和入场时间,输出停靠的停车位置,当停车场车位满时则停靠在临时停车便道内。

(4)退出车场时录入车辆牌号、和出场时间,输出停车总时间,和所停的费用。

3.3系统性能:(1)时间特性需求在网络连接正常的情况下,查询响应时间为秒级。

(2)灵活性当需求发生某些变化时,机票管理应用软件操作方式、数据结构、运行环境基本不会发生变化,变化只是将对应的数据文件内的记录改变,或改变过滤条件。

(3)可用性软件应该尽可能的一目了然,使一般用户能够使用。

(4)安全性本套职工信息系统所涉及的数据存放于文件中,在程序中应尽可能的使用调用存储过程的方法以免使某人反编译软件后或入侵到服务器后对数据的结构了如指掌,在程序中应该设置访问时的密码,以保证数据不容易被错改、破坏,而且要经常对数据文件进行备份操作,使得数据一旦受到破坏或是出错能够保证及时的恢复数据,将损失降低到最低。

(5)可维护性(6)应用程序的维护当用户使用本套职工信息系统软件时,遇到了软件本身的逻辑错误时,应当有软件的维护人员对软件进行修改。

(7)可转移、可转换性Visual Studio及C编程语言的兼容性很高,在windows95/98. Windows NT. windows2000. windows XP等操作系统都可以直接运行。

输入项:用户通过软件输入必要的信息,然后保存到数据文件,所输入的信息是经过需求分析限定的内容,同时也是数据文件中每个字段中存储的内容。

输出项:本套职工信息系统软件会将所有需要浏览的数据显示在屏幕上,以便使用户能够浏览到数据文件中的数据或用户想要浏览范围中的数据算法:1)将用户输入的数据,按字段保存到数据文件中。

2)将数据文件中的数据,按字段提取到用户界面中。

3)必要的去除重复项的算法。

4)保持文件和输出数据的一致性。

注释设计:尽可能的将软件中插入注释语句,使语句功能明了。

制作的时候应该制作两分,一份是标有注释语句的代码,用来给维护人员、测试人员和开发人员了解开发过程所用,另一份是不带有注释语句的代码,用来最后实际应用当中,这样可以充分的利用有限的时间,降低客户的计算机打开系统功能的时间,提高客户的使用速度。

限制条件:限制必要的条件,以排除由于用户的误操作造成不必要的错误。

测试计划:在软件编辑的工作进行当中,测试人员便要开始制定测试计划,其中要包括白盒和黑盒的具体测试项目,及其必要的测试数据和出错的信息。

每次测试的结果要写报告,并就发现和怀疑的问题与编辑人员联系。

测试的结果要让编辑人员明白。

通过文件存储方式将用户所录入的数据保存妥当,充分地描述了数据间的内在联系,便于数据修改、更新与扩充,同时保证了数据的独立性、可靠性、安全性与完整性,减少了数据冗余,提高了数据共享程度及数据管理效率。

3.4设计思路及框架停车场的管理流程如下:①当车辆要进入停车场时,检查停车场是否已满,如果未满则车辆进入停车场;如果停车场已满,则车辆进入便道等候。

②当车辆要求出栈时,先让在它之后进入停车场的车辆退出停车场为它让路,再让该车退出停车场,让路的所有车辆再按其原来进入停车场的次序进入停车场。

之后,再检查在便道上是否有车等候,有车则让最先等待的那辆车进入停车场。

四、各功能模块1、交互菜单2、汽车进入停车场13、汽车退出停车场2五、总结实训期间,让我学到了很多东西,不仅使我在理论上对软件行业有了全新的认识,在实践能力上也得到了提高,真正地做到了学以致用,对我来说受益非浅。

除此以外,我还学会了如何更好地与别人沟通,如何更好地去陈述自己的观点,如何说服别人认同自己的观点。

第一次亲身感受到理论与实际的相结合,让我大开眼界。

也是对以前所学知识的一个初审吧!这次实训对于我以后学习、找工作也真是受益菲浅,在这短短的几天中相信这些宝贵的经验会成为我今后成功的重要的基石。

作为一名大二的学生,经过两年的在校学习,对程序设计有了理性的认识和理解。

在校期间,一直忙于理论知识的学习,没有机会也没有相应的经验来参与项目的开发。

所以在实训之前,软件项目开发对我来说是比较抽象的,一个完整的项目要怎么来分工以及完成该项目所要的基本步骤也不明确。

而经过这次实训,让我明白一个完整项目的开发它所要经历的阶段包括:规划和用例说明、项目结构、业务功能说明书、详细设计说明书、代码实现、测试、实训手册。

一个项目的开发所需要的财力、人力都是大量的,如果没有一个好的远景规划,对以后的开发进度会产生很大的影响,严重时导致在预定时间内不能完成该项目或者完成的项目跟原先计划所要实现的项目功能不符合。

一份好的项目结构、业务功能和详细设计说明书对一个项目的开发有明确的指引作用,它可以使开发人员对这个项目所要实现的功能在总体上有具体的认识,并能减少在开发过程中出现不必要的脱节。

代码的实现是一个项目开发成功与否的关键,可以说,前面所做的事情就是为代码的实现做铺垫。

这次实训也让我深刻了解到,不管在工作中还是在生活中要和老师,同学保持良好的关系是很重要的。

做事首先要学做人,要明白做人的道理,如何与人相处是现代社会的做人的一个最基本的问题。

对于自己这样一个即将步入社会的人来说,需要学习的东西很多,他们就是最好的老师,正所谓“三人行,必有我师”,我们可以向他们学习很多知识、道理。

在此,我应当感谢老师的指导与帮助以及学院提供此次千载难逢的实训机会。

六、附录#include<stdio.h>#include <stdlib.h>#include<string.h>#include<math.h>#define size 1 //停车场位置数//模拟停车场的堆栈的性质;typedef struct zanlind{int number; //汽车车号float ar_time; //汽车到达时间}zanInode;typedef struct{zanInode *base; //停车场的堆栈底zanInode *top; //停车场的堆栈顶int stacksize_curren;}stackhead;//堆栈的基本操作;void initstack(stackhead &L) //构造一个空栈L{L.base=(zanInode*)malloc(size*sizeof(zanlind));if(!L.base) exit(0); //存储分配失败L.top=L.base;L.stacksize_curren=0;}void push(stackhead &L,zanInode e) //插入元素e为新的栈顶元素{*L.top++=e;L.stacksize_curren++;}void pop(stackhead &L,zanInode &e) //若栈不为空,删除L的栈顶元素,用e返回其值{if(L.top==L.base){printf("停车场为空!!");return;}e=*--L.top;L.stacksize_curren--;}//模拟便道的队列的性质;typedef struct duilie{int number; //汽车车号float ar_time; //汽车到达时间struct duilie *next;}*queueptr;typedef struct{queueptr front; //便道的队列的对头queueptr rear; //便道的队列的队尾int length;}linkqueue;//队列的基本操作;void initqueue(linkqueue &q) //构造一个空队列q{q.front=q.rear=(queueptr)malloc(sizeof(duilie));if(!q.front||!q.rear)exit(0); //存储分配失败q.front->next=NULL;q.length=0;}void enqueue(linkqueue &q,int number,int ar_time) //把元素的插入队列尾(属性为number,ar_time){queueptr p;p=(queueptr)malloc(sizeof(duilie));if(!p) exit(0); //存储分配失败p->number=number;p->ar_time=ar_time;p->next=NULL;q.rear->next=p;q.rear=p;q.length++;}void popqueue(linkqueue &q,queueptr &w) //删除q的队头元素 w(属性为number,ar_time){queueptr p;if(q.front==q.rear){printf("停车场通道为空");return;}p=q.front->next;w=p;q.front->next=p->next;q.length--;if(q.rear==p) q.front=q.rear;}float shijiancha(float x,float y) //求时间差的子程序{i nt shix,shiy,fenx,feny;f loat shijiancha;s hix=x;s hiy=y;fenx=(int)((x-shix)*100);feny=(int)((y-shiy)*100);i f(fenx>feny){shijiancha=(shiy-shix-1)+(float)(feny+60-fenx)/100;}e lseshijiancha=(shiy-shix)+(float)(feny-fenx)/100;r eturn shijiancha;}void jinru(stackhead &st,linkqueue &q) //对进入停车场的汽车的处理;{int number;float time_a;printf("请输入车牌号:");scanf("%d" ,&number);printf("请输入您进车场的时间(比如说:8点半则输入8.30):"); scanf("%f",&time_a);if(st.stacksize_curren<2){zanInode e;e.number=number;e.ar_time=time_a;push(st,e);printf("请把你的车停在%d号车道\n\n",st.stacksize_curren);}else{enqueue(q,number,time_a);printf("停车场已满,请把你的车停在便道的第%d个位置上",q.length);}}void likai(stackhead &st,stackhead &sl,linkqueue &q) //对离开的汽车的处理;{ //st 堆栈为停车场,sl 堆栈为倒车场int number,flag=1; //q 为便道队列float sh,time_d,arrivaltime,money1;printf("请输入您的车牌号:"); scanf("%d",&number);printf("请输入您出车场的时间(比如说:8点半则输入8.30):"); scanf("%f",&time_d);zanInode e,q_to_s;queueptr w;while(flag) //找到要开出的车,并弹出停车场栈{pop(st,e);push(sl,e);if(e.number==number){flag=0;arrivaltime=e.ar_time;sh=shijiancha(arrivaltime,time_d);money1=(int)sh*2+(sh-(int)sh)*100/30;}}pop(sl,e); //把临时堆栈的第一辆车(要离开的)去掉;while(sl.stacksize_curren) //把倒车场的车倒回停车场{pop(sl,e);push(st,e);}if(st.stacksize_curren<2&&q.length!=0) //停车场有空位,便道上的车开进入停车场{popqueue(q,w);q_to_s.ar_time=time_d;q_to_s.number=w->number;push(st,q_to_s);printf("车牌为%d 的车已从通道进入停车场, 所在的停车位为 %d:\n",q_to_s.number,st.stacksize_curren);}printf("\n 收据");printf("车牌号:%d\n",number);printf("++++++++++++++++++++++++++++++\n");printf(" 进车场时间:%4.2f\n",arrivaltime);printf(" 出车场时间:%4.2f\n",time_d);printf(" 停留时间:%4.2f\n",sh);printf(" 应付(元) %4.2f\n",money1);printf("++++++++++++++++++++++++++++++\n\n");}void main(){int m=100;char flag; //进入或离开的标识;stackhead sting,slinshi; //停车场和临时倒车场堆栈的定义;linkqueue line; //队列的定义;initstack(sting); //构造停车场堆栈stinginitstack(slinshi); //构造倒车场堆栈slinshiinitqueue(line); //构造便道队列linewhile(m){printf("\n ******************停车场管理程序*************** ");printf("\n*===========================================================*"); printf("\n*温馨提示:请车主在24:00之前来取车,给您带来的不便,敬请原谅!*"); printf("\n* 1 *** 汽车进车场 2 *** 汽车出车场 3 *** 退出程序 *"); printf("\n*===========================================================*"); printf("\n 请输入您需要的服务的代号(1、2、3),谢谢!\n");scanf("%c",&flag);switch(flag){case '1': jinru(sting,line);break; //汽车进车场case '2': likai(sting,slinshi,line);break; //汽车出车场case '3': exit(0);}m--;}}。

相关文档
最新文档