程序设计_停车场管理系统

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

程序设计报告

( 2014 / 2015 学年第 1学期)

题目:停车场管理系统

专业

组长学号姓名

组员学号姓名

指导教师

指导单位

日期

停车场管理系统一、课题内容和要求

停车场管理是一个计时收费系统,同时也是一个能对车位进行管理的系统,最基本的功能是实现停车、取车、查询以及修改停车费费率等功能。同时,为了使用的方便和安全的考虑设计了管理员能对密码进行修改的功能。在停车的功能中采用了文件流的形式,对车位、车牌号、车型都进行了保存,以便于查询功能的实现,除此之外,也是为了能够实现在取车模块中利用输入的车牌号自动计算出停车的费用。停车位第一个为空的位置,由程序查询自动给出车位号,如果车位已满要给出提示。取车时,需要根据车辆停泊时间自动计算费用(半小时内以半价计算,超出半小时不足一小时按一小时计算)并显示在屏幕上,可以随时根据车牌查询是否入库。可以随时根据车位查询该位置上的相关信息。本系统对不同车型的费率给出了默认值,管理员可以根据实际需要对费率进行修改。

功能要求:用C/C++设计一个程序实现停车场管理系统,要求如下:

(1)管理人员根据口令进入系统;

(2)管理人员有权限对登陆账号和密码进行修改;

(3)管理车位信息(车位编号,状态)和每小时的收费费率;

(4)停车时录入汽车停泊信息(车牌号,车型,停泊位置,停泊开始时间);如果车位已满要给出提示;

(5)取车时,根据车牌取,如果没有给出提示;需要根据车辆停泊时间自动计算费用并显示在屏幕上。

(6)管理人员可以根据需要随时更改每小时的收费费率。

二、需求分析

停车场管理系统的功能框架图如图1所示。

图1 功能框架图

(1)系统主要包括了管理员登陆、停车操作、取车操作、信息查询、费率修改这五大模块,每个模块都用用相应的函数来实现这些功能。

(2)在管理员登陆模块中,设置了三次输入机会,用户名和密码事先用文档存储,供使用者进入系统;若管理员连续输入密码错误超过提示,则系统给出修改密码或者退出系统的提示,这些功能在函数名为loadin()的函数中实现。

(3)管理员登陆模块结束之后便到了系统的主要界面,选择操作1是停车模块。在选择停车操作之后,系统能够实现“将第一个为空的位置,由程序查询自动给出车位号,如果车位已满要给出提示”这一功能用函数compare()和jugement()共同实现的。进入停车模块后,还应选择不同的车型进行停车,这一过程会调用putcar()和gettime()函数,用来给出不同车型的费率和调用停车时的系统时间。

(4)通常选择了停车操作之后取车和查询功能才会有意义,所以取车和查询公共主要是使用了campare()函数,调用strcmp()字符串比较函数对输入的车牌号和停车时的车牌号进行比较,若相同,则返回该车位,达到取车和查询的作用。

(5)不同的停车场可以根据需要修改每种车型的车辆对应的费率。这个功能在修改费率的模块中实现。

(6)根据不同的车型以及其停泊时间收费,间差乘以单价就是最后收费,其中取车时,需要根据车辆停泊时间自动计算费用(半小时内以半价计算,超出半小时不足一小时按一小时计算)并显示在屏幕上。这个功能需要调用系统时间,因此在整个程序中包含了头文

件后(#include)利用结构这种数据类型来实现。

三、概要设计

1. 主要结构体

为了实现停车场管理系统的停车、取车、查询、修改功能,主要用一个while循环,通过输入的数字选择相应的操作。同时为了实现每个模块的功能,引用一些相应的子函数。下面是主要结构体的流程图:

图2 主要结构体流程图

2. 主要函数流程图

(1)管理员登陆模块

管理员登陆模块是用函数loadin()来实现的,在loadin()函数中对账号和密码都

有三次的输入机会,用变量ai来记录输入的次数,当ai>=3时,进入修改密码的界面。在修改密码模块了,用strcpy()函数将输入的字符串adpassword1赋值给密码adpassword(adpassword为全局变量,所以才能起到修改的作用)。修改完成密码后,在loadin()函数中再次调用loadin()函数,这样在修改密码后就能重新回到登陆界面进行登陆,大体程序流程图如下:

图3 管理员登陆模块流程图

(2)比较函数compare()

在停车场管理系统的取车、查询模块中都需要用到输入“车牌号判断停车场中是否有该车”这个功能,而compare()函数就是用来实现这个功能的。其大概思路是,通过输入的字符串与系统储存有的字符串进行比较,如果字符串相等就返回一个0,如果不相等就返回非0,而通过0和非0的控制,便能实现判断的功能,其流程图如下所示:

图4 字符串比较函数流程图

(3)搜索空车位函数jugement()

对于停车操作来说,需要在所有停车位中找到第一个空车位,并返回这个车位。

在该系统中,这个功能由函数jugement()来实现。设int型变量j为车位编号,利用数字position[j]的值是否为1,来判断是车位是否为空(这里是将1视为有车,0为无车)。

图5 搜索空车位函数流程图

在这个函数中还要注意:在用while循环对每个车位进行逐个判断的时候,j一定要小于停车场的总车位。除此之外,返回第一个空车位表示将要在这个车位进行停车,因此要重新将position[j]的值置为1。

四、源程序代码

#include

#include

#include

#include

using namespace std;

class car

{

public:

char no[10];

int pos;

double fee;

void putcar();

void takecar();

void changefee();

};

class Time

{

public:

int hour;

int min;

void getime();

};

char adpassword[10]="123456";

char adname[10]="wcx";

int i,poi;

int position[50]={0};//全局变量

car carin[50];

Time catime[50];

double Fee1=6.0, Fee2=5.0, Fee3=4.0 , Fee4=3.0 ;

int jugement();

int compare();

void search_no();

void search_position();

void loadin();

void main(){

//---------------------------------------------管理员登陆模块---------------------------- loadin();

//--------------------------------------------------登陆模块结束---------------------

int k=0;

相关文档
最新文档