泊车管理系统程序设计报告剖析[推荐]_停车场管理系统报告
泊车管理系统程序设计报告剖析[推荐]由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“停车场管理系统报告”。
程序设计报告
(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
XXXXXXXXXXXC/C++程序设计实训电话簿管理系统学生姓名 ×××× 学 号 ×××× 所在学院 ×××× 专业名称 ×××× 班 级 ×××× 指导教师XXXXXXXXXXXXXXXXXXX XXXXXX......
项目设计题目(学生成绩管理系统)学号: 姓名: 自评成绩:成绩:1.选题意义、依据学生成绩系统的设计从学生的应用中而来,学生了解该系统的组成和运行过程,它贴近学生的生活能使学生更加......
数据库设计实例 教务管理系统数据库实验七 数据库设计题目要求:设计一个教务管理系统。要求管理包括:学生的档案,学生选课的情况,学生每学期的综合测评,教师档案,教师工作量等等。......
C语言程序设计实验报告题 目: 图书管理管理系统 院 系: 信息科技学院 专 业: 姓 名: 学 号:指导教师: 杨呈勇 日 期: 09-09-181 问题定义 …………………………………………………......
#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......
