泊车管理系统程序设计报告剖析[推荐]_停车场管理系统报告

2020-02-27 其他范文 下载本文

泊车管理系统程序设计报告剖析[推荐]由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“停车场管理系统报告”。

程序设计报告

(201 / 201 学年 第 二 学期)

专 学 生 班 级 指 导 指 导 日 题 目:泊车管理系统

姓 名 学 号 教 师 单 位 计算机软件教学中心 期 201年6月19日

泊车管理系统一、课题内容

模拟一个泊车管理系统,提供车位的管理、泊车、取车等功能,并能查询车位信息,并会运用某种排序算法进行排序操作。通过本课题全面掌握文件、数组的各种操作,以及一些算法思想的应用,实现一个简单的泊车管理系统。

二、需求分析

模块一(密码输入):登陆界面,管理员输入密码,若密码正确,进入操作系统。模块二(信息系统):显示当前时间与车库的基本停车情况以及收费标准。

模块三(停车系统):进入此系统后,输入当前时间和车牌号码,若有空位则停车成功,否则显示车库已满,自动返回上一层操作系统。

模块四(取车系统):进入此系统后,依次输入车牌号码,停车时间,当前时间,若

查找到所输入的车牌号码信息,则显示本次停车应付金额,并显示取车成功。若无输入的车牌号码信息,则显示取车错误并返回上层操作系统。

模块五(退出操作):当程序使用结束的时候,用此模块关闭程序。

三、活动收益

这次的设计课我受益颇多,完全是一次真正的自己动手的程序设计!自己发现问题、解决问题。其中不仅对C和C++的操作有了进一步的掌握还学会了使用VISIO软件并熟悉了DEBUG的使用方法,还了解到了程序设计的书写风格及其注释的格式。

当然,我们这次也遇到了不少问题,好在在老师的悉心教导下,我们攻克了一个又一个难关。

四、遇到的问题及解决方法:

●我们遇到的第一个难关就是把密码以明码的形式输出,好在老师及时提醒,所以我们通过上网查资料,想到可以以真假语句来实现,我们在网上找了了几个类似的程序,熟悉了它们的每一步过程之后,我们就开始自己动手,所以最后我们决定以数组的形式来改写,最后利用FOR循环成功解决了。当然在这次解决中,我们充分发挥了团体合作精神。

●我们当然不是一帆风顺的,遇到的第二个问题是经费设计问题,我们一开始忽略了半个小时这个关键词,直接是不足一个小时按一个小时计算,我们于是动手开始设计相应的程序,我们首先思考是不是可以加上1/2,在一番试验、比较之后,最后我们用 fee=feep(&b[top]->timep)*7语句加上IF的判断语句,我们最后成功设计出来了。●接下来我们在时间差函数的设计上完全摸不着头脑,突然我们想到老师给了我们这个2 函数,我们成功地找到了时间差函数,我们仔细研读了老师给我们的程序,了解它是怎么运行的,之后,我们自己开始开工写出了double feep(time_t* tmp)这样的语句,通过编译、运行,证明了我们程序的正确性,为此我们付出了辛勤的汗水。

●我们也在号码查询这一程序过程卡住了,我们丝毫没有头绪,为此我们天天抢占图书馆,翻阅资料,理解、消化,实在不懂就去机房上网去看详尽的解说,晚上回宿舍继续编写,我们几个人讨论、琢磨,不停地修改、再写,好在不负众望,我们想到了printStar();printLine()语句,最终完成。

我们在这个合作完成中学到的感触最深的就是团队精神的重要性,我们不停地讨论,才使得我们的程序设计不断的完美,虽然可能不是太好,但真的有我们几个的汗水在里面。通过这次实验,我们知道了学知识就是要学以致用,提高动手能力,为此很感谢这次实验。

五、程序代码

#include #include #include #include #include #include #include #define PASS 20 #define POT 20 struct Clock //倒计时器c语言源程序 { int sec,min,hour;void tick(){ long t=time(NULL);while(t==time(NULL));if(--sec

{

//parkingLot.top--;

cout

} printf(“r”);if(hour

void run(){ while(sec!=0||min!=0||hour!=0){ tick();show();} } void set(int h,int m,int s){ hour=h;min=m;sec=s;} };

struct paLot

//小车队列结构 { int num;

//车位号

time_t timep;

//停车时间

char carNum[10];

//停车的车牌号码 };

struct potLot

//停车场栈数据 { int num;time_t timep;char carNum[10];};

void printLine()

//打印下划线(作为主界面图表的框架){ cout

void printStar()

//打印星号 { cout

cla erroFull

//停车位满时异常类 { public: erroFull(){ system(“color Fc”);} void ex(){ cout

//析构函数 };cla erroEmp

//停车位空时异常类 { public: erroEmp(){ system(“color Fc”);}

void ex(){ cout

cla parkingLot

//停车场类 {

public:

parkingLot(){

paLot* pa;

//小车停车指针

potLot* po;

//大车停车指针

flag=0;

//用来记忆队列(小车)中停车的数量

rear=front=0;

//初始化队列头尾

base=0;

top=base;

//初始化栈头尾

int i=0;

//初始化所有

for(;i

{

pa=(paLot*)malloc(sizeof(paLot));//申请动态空间

a[i]=pa;

a[i]->num=i+1;

a[i]->carNum[10]='a';

po=(potLot*)malloc(sizeof(potLot));

b[i]=po;

b[i]->num=i+1;

b[i]->carNum[10]=1;

} }

~parkingLot()

//清除停车场数据

{

cout

void paLG()

//小车管理函数

{

try

{

if(flag==20)throw erroFull();

//如果停车位已满,则抛出车位满的异常情况

system(“cls”);

//清屏

printStar();

cout

cout

cin>>a[rear]->carNum;

//得到车牌号

if(strlen(a[rear]->carNum)!=6)

{

cout

_sleep(1000);

return;}

a[rear]->timep=time(NULL);

coutnum

rear=(rear+1)%PASS;

flag++;

_sleep(1000);

//休眠

}

catch(erroFull &err)

{

err.ex();

}

}

void potLG()

//大车停车函数

{

try

{

if(top==20)throw erroFull();

//车满抛出异常

system(“cls”);

//清屏函数

printStar();

//打印星号

cout

cout

cin>>b[top]->carNum;

if(strlen(b[top]->carNum)!=6)

{

cout

_sleep(1000);

return;}

b[top]->timep=time(NULL);

coutnum

top++;

_sleep(1000);

//当前休眠一秒

}

catch(erroFull &err)

{

err.ex();

} } void reservation()

//预约函数 { int choice=-1;if(top==20&&flag==20)throw erroFull();

//小车数目满则抛出异常

for(;;){

system(“cls”);

//清屏函数调用

printStar();

//打印星号函数

cout

printLine();

//划线函数

cout

printLine();

cout

printLine();

cout

printLine();

printStar();

//打印星号

cout:“;

//二级菜单函数

cin>>choice;

//选择菜单函数

switch(choice){

case 1:cacutime();break;

case 2:resure();break;

case 3:break;

default:system(”color Fc“);cout

_sleep(1000);break;} if(choice==3)break;} return;} void depart()

//汽车离开 { int choice=-1;if(top==0&&flag==0)throw erroEmp();for(;;){ system(”cls“);system(”color F0“);printStar();cout

//打印两个空格 printLine();cout

cout:”;cin>>choice;switch(choice){

case 1:potOut();break;

case 2:paOut();break;

case 3:break;

default:system(“color Fc”);cout

_sleep(1000);break;} if(choice==3)break;} return;} void arrive()

//汽车到达 {

int choice=-1;if(top==20&&flag==20)throw erroFull();

//小车数目满则抛出异常

for(;;){

system(“cls”);

//清屏函数调用

printStar();

//打印星号函数

cout

printLine();

//划线函数

cout

/*打印两个空格*/

printLine();

//划线函数

cout

printLine();

//划线函数

cout

printLine();

//划线函数

printStar();

//打印星号

cout:“;

//二级菜单函数

cin>>choice;

//选择菜单函数

switch(choice)

//选择菜单函数

{

case 1:potLG();break;

case 2:paLG();break;

case 3:break;

default:system(”color Fc“);

cout

_sleep(1000);break;

} if(choice==3)break;} return;} /*void readwriteDAT(){ long *temp;FILE *rf,*wf;

rf=fopen(”in.dat“ ,” r“);wf=fopen(” out.dat“ ,” w“);fscanf(rf,” %ld“ ,&temp);feep(temp);fprintf(wf,” %ld“ ,temp);fprintf(wf,”n“);fclose(rf);fclose(wf);} */ double feep(time_t* tmp)

//时间差的计算 { int m=0,min=0,sec=0;

//设置数据用来计算时间间隔,停车时、分、秒。

double gap=0,hour=0;

local=localtime(tmp);

//将存储的时间转化为当地时间日历

couttm_hourtm_mintm_sec

hour=local->tm_hour;

//保存停车时刻

min=local->tm_min;

sec=local->tm_sec;

now=time(NULL);nowp=localtime(&now);

couttm_hourtm_mintm_sec

hour = nowp->tm_hour-hour;

//求出停车的时间间隔 min= nowp->tm_min-min;sec= nowp->tm_sec-sec;

if(sec

//进行秒、分钟、秒时间转换

if(min

if(min

gap=hour+0.5;

else

gap=hour+1;

//停车应收费的时间(单位:小时)

return gap;}

void cul()

{

int s=5,m=0,h=0;

Clock c;

c.set(h,m,s);

c.run();

printf(”ntThe time is over!!an“);}

void cacutime()

//预约时间计算函数 {

try

{

if(top==20)throw erroFull();

//车满抛出异常

system(”cls“);

//清屏函数

printStar();

//打印星号

cout

cout

cout

cin>>numCar;

cout

top++;

_sleep(1000);

//当前休眠一秒

cul();

}

catch(erroFull &err)

{

err.ex();

}

return;} void resure(){

return;} void paOut()

//小车离开 { FILE *out;out = fopen(”out.dat“, ”ab+“);try

{

if(flag==0)throw erroEmp();

double fee=0;

system(”cls“);

printStar();

cout

coutcarNumnum

fprintf(out, ”%s“,a[front]->carNum);fee=feep(&a[front]->timep)*5;

cout

fprintf(out, ”%-6g“,fee);

cout

cout

cout

a[front]->carNum[10]=0;

front=(front+1)%PASS;

flag--;

cout

system(”pause“);

}

catch(erroEmp &err)

{

err.ex();

}

fprintf(out,”n“);

fclose(out);}

void potOut()

//大车离开 { FILE *out;out = fopen(”out.dat“, ”ab+“);try

{

if(top==0)throw erroEmp();

double fee=0;

top--;

system(”cls“);

printStar();

coutcarNumnum

fprintf(out, ”%s“,b[top]->carNum);

fee=feep(&b[top]->timep)*7;

//计费公式,每小时7元

cout

fprintf(out, ”%-6g“,fee);

cout

cout

cout

b[top]->carNum[10]=0;

cout

system(”pause“);

}

catch(erroEmp &err)

{

err.ex();

}

fprintf(out,”n“);

fclose(out);}

void searchNum()

//查询车牌号码 { char numCar[20];int i=0;flag=1;cout>numCar;if(strlen(numCar)==6){ for(;i

if(strcmp(a[i]->carNum,numCar)==0)

{

coutnum

flag=0;

} } if(flag)for(i=0;i

if(strcmp(b[i]->carNum,numCar)==0){

coutnum

flag=0;

} } if(flag)cout

cout

void searchPot()

//按车wei查找函数 { int potCar, nn;cout>potCar;if((potCar100)||(potCar200)){

if(potCar/100==1)

{

nn=potCar%100-1;

if(b[nn]->carNum[10]==0)cout

else coutcarNum

} if(potCar/100==2){ nn=potCar%100-1;

if(a[nn]->carNum[10]==0)cout

else coutcarNum

void search()

//号码查询 { int choice=-1;if(top==0&&flag==0)throw erroEmp();for(;;){

system(”cls“);

system(”color F0“);

printStar();

cout

printLine();

cout

//打印两个空格

printLine();

cout

printLine();

cout

printLine();

printStar();

cout:”;cin>>choice;switch(choice){ case 1:searchNum();break;case 2:searchPot();break;case 3:break;default:system(“color Fc”);cout

_sleep(1000);break;} if(choice==3)break;} return;}

private: int flag,front,rear,top,base;

访问栈和队列

paLot* a[PASS];

式存储栈和队列,并且都设为20个车位

potLot* b[POT];tm* local,*nowp;time_t now;

置时间型变量

};

结束

void paword()

*/ { 16

//设置

//以顺序方

//设

//停车场类

/*密码 system(“color 0A”);int a;int i=0;char s1[6]={“admin”};char s2[6];char ch;do { if(i

printf(“n 请输入管理员密码,您有 %d 次机会:”,3-i);

int j=0,n=strlen(s1);while(n--){ ch=getch();//读取字符,不显示

if(ch!='n')//这边可以加上一些限制,如字符类型,退格等 { putchar('*');s2[j++]=ch;} } s2[strlen(s1)]='';if(!strcmp(s1,s2))

a=1;else {

a=0;} if(a==1)的密码str1 和设定的密码str2,输出“密码正确”。*/ {printf(“nnt授权成功!准许进入!n nttt后.................nn”);

_sleep(1000);} else if(a==0){ system(“color 0c”);printf(“ntI'm sorry,The code is wrong!”);if(i

/*比较输入进入中,请稍17

} while(a==0);system(“cls”);}

void main()//程序运行主函数 { system(“color F6”);printf(“n”);printf(“t

----------------------n”);

//初始欢迎界面

printf(“t

----------------------n”);printf(“n”);printf(“t n”);printf(“t n”);printf(“t

欢迎进入本泊车场管理系统 n”);printf(“t n”);printf(“t n”);

printf(“t

----------------------n”);printf(“t

----------------------n”);printf(“tttttt 出品人:XXX n”);printf(“n”);printf(“n”);printf(“n”);

system(“PAUSE”);

//清屏操作

system(“CLS”);

paword();

//密码函数

parkingLot a;int choice=-1;for(;;)

//使主界面能够自动初始化和重复使用

{ system(“cls”);

//清屏18 函数

system(“color F0”);

//设为背景为白色前景色为黑色

printStar();cout

//时间结构或者对象

t=time(NULL);

//获取当前系统的日历时间

cout

//显示当前时间

printLine();cout

/*打印两个空格*/ printLine();cout:“;cin>>choice;switch(choice){ case 1:

try{

a.arrive();

}

catch(erroFull &erro)

{

erro.ex();

}

break;case 2:a.depart();break;case 3:a.search();break;case 4:a.reservation();break;case 5:break;default:system(”color Fc");cout

_sleep(2000);;break;} if(choice==5)break;} return;} 20

C++程序设计—电话簿管理系统

XXXXXXXXXXXC/C++程序设计实训电话簿管理系统学生姓名 ×××× 学 号 ×××× 所在学院 ×××× 专业名称 ×××× 班 级 ×××× 指导教师XXXXXXXXXXXXXXXXXXX XXXXXX......

学生成绩管理系统C++程序设计

项目设计题目(学生成绩管理系统)学号: 姓名: 自评成绩:成绩:1.选题意义、依据学生成绩系统的设计从学生的应用中而来,学生了解该系统的组成和运行过程,它贴近学生的生活能使学生更加......

数据库程序设计教务辅助管理系统

数据库设计实例 教务管理系统数据库实验七 数据库设计题目要求:设计一个教务管理系统。要求管理包括:学生的档案,学生选课的情况,学生每学期的综合测评,教师档案,教师工作量等等。......

C语言程序设计图书管理系统

C语言程序设计实验报告题 目: 图书管理管理系统 院 系: 信息科技学院 专 业: 姓 名: 学 号:指导教师: 杨呈勇 日 期: 09-09-181 问题定义 …………………………………………………......

C语言程序设计学生通讯录管理系统

#include "stdio.h" #include "stdlib.h" #include "string.h" #include "conio.h" #include "stdlib.h" #define null 0 struct record { char name[20]; char p......

《泊车管理系统程序设计报告剖析[推荐].docx》
将本文的Word文档下载,方便收藏和打印
推荐度:
泊车管理系统程序设计报告剖析[推荐]
点击下载文档
相关专题 停车场管理系统报告 管理系统 报告 程序设计 停车场管理系统报告 管理系统 报告 程序设计
[其他范文]相关推荐
[其他范文]热门文章
下载全文