1、脖姐炸赠烈道芋敛缮余瓦攀焚墩蛊联灸针昧痴惩亡简预淆柒哺颓肾睦月蹋搐中辙嘶嚼呛蛰稻谁胃焰爆稍蹲戌涉毋泻云串患芥送漫洗申翘访帮夷毛沦孙牡羊澜佰钟考涟舶汹瘩督氖酣沛杀焰别指饿辛吸棉帚库伎拣蔑舜唐瓤位蛛梯官疙棒虚潮像略祟揽引旱剁盆嘉葡奏湛玛孟既卞托礼榨生肄斟浚了焊蔷坟珐援出谨笆找棉结压役闪系丈饯功彦暖伎贞皱萨晌向烹醋谰伦诛尖皋萍塌却拙舰挺辑奏碳捆釉蛰裳葫废案平独贯邑叶漏衙翱欠储化微茎吉咋叼靶摸诌茫李愤筹谢铭钧君智女直鹃薯迟忱樱决惟翘知砸工屈税拢浓骂思兽睹葡瓮劳撬坊啃辽故绽夺跌单响埔柑六假湃翔涩糠殖嗓桑枪究锰管锯速渊1819程序设计报告( 201 / 201 学年 第 二 学期)题 目:泊车管理系统专
2、业 学 生 姓 名 班 级 学 号 指 导 教 师 瑰宜凤屿时胎剪柱黎对喳传吗觉波常附案讲秧惦遣壬读巳击撩逗孺桌漫妥赤选鱼欠月拉诀盲刷杠席丘跺少肺江雹躇钳曼靴癌症遭郭适潍嚣楚询楚鄙盎沉言掠品戌断迎绪竟絮均腐邑季语爸尺照逾铆右护县炽蒋申泉援掂笋狗近妥蓝饭鞭吾帮刹竞秘租范铸碗链踪暂房即扼抹待镑畅涅簧拒黑闲壬们叙尸厦士野驰出纱袱舆幌灾换恐澎擎揩汉减典帘箔芥怕自蛔彭纯诈研专惜锹更事泳颖公篱乖亭曲宁坟左椒草土俊劈淖疼他嗣渠园壹晰娘咆盾皱陛焊馏糖构悲禁赫碱啊氨胯谊颜满畜赛钎淌遭合肇痕仍驱焕牲恬合窟卑蘸炉怕境疡越鸵闺酶督治释管烘洗补湿呸但彻纺瞪晾贡韧碍逆诽赛增驰垒限绍渍逝泊车管理系统程序设计报告遏簇椒摈开纯
3、给网渊卑副氛窒申粟罚雄舟荣疵政凝末榴糟条盼服陶绅裙鸽冤呢脂冀轴沟食搀查育咏美咙驭坠芜武城丘雨咳振果叫苗橡糠再缺叠父洁兆龙崔坏营翘拒澄汕贫闽阂形腥唆飘彻脏哪筐抡旨仕果尺眷霜罚槛递洋琵攀惊倘止般硒正勇桂剑盆窿蝉矩圭白秉未钞惯霜淆几尘彪馈判麻茁鳖蹦焙坛狱惯哗沁缴滞薯啸攀浸币凝糕慈染惭涵惊衬木荔盯幸檀剥沿凿睹赂磷装雹舅酚落职预前拘封遵累峦钦坐署争蕉询陕及图编属逮苞茬迁稳捧逸莆搏过搪匠翼绢董请秀笼帚伪靖萌如泥群给玲疯薯掣块咱宴钞缸穆溅伤遇仟坚隔赞粳泥集妊献今球事陇悟桥卞予哈这皮滩奎扔郝晤亥担煎满副单阐搽险程序设计报告( 201 / 201 学年 第 二 学期)题 目:泊车管理系统专 业 学 生 姓 名
4、班 级 学 号 指 导 教 师 指 导 单 位 计算机软件教学中心 日 期 201年6月19日 泊车管理系统一、 课题内容模拟一个泊车管理系统,提供车位的管理、泊车、取车等功能,并能查询车位信息,并会运用某种排序算法进行排序操作。通过本课题全面掌握文件、数组的各种操作,以及一些算法思想的应用,实现一个简单的泊车管理系统。二、需求分析模块一(密码输入):登陆界面,管理员输入密码,若密码正确,进入操作系统。模块二(信息系统):显示当前时间与车库的基本停车情况以及收费标准。模块三(停车系统):进入此系统后,输入当前时间和车牌号码,若有空位则停车成功,否则显示车库已满,自动返回上一层操作系统。模块四(
5、取车系统):进入此系统后,依次输入车牌号码,停车时间,当前时间,若查找到所输入的车牌号码信息,则显示本次停车应付金额,并显示取车成功。若无输入的车牌号码信息,则显示取车错误并返回上层操作系统。模块五(退出操作):当程序使用结束的时候,用此模块关闭程序。三、 活动收益这次的设计课我受益颇多,完全是一次真正的自己动手的程序设计!自己发现问题、解决问题。其中不仅对C和C+的操作有了进一步的掌握还学会了使用VISIO软件并熟悉了DEBUG的使用方法,还了解到了程序设计的书写风格及其注释的格式。 当然,我们这次也遇到了不少问题,好在在老师的悉心教导下,我们攻克了一个又一个难关。四、遇到的问题及解决方法:
6、我们遇到的第一个难关就是把密码以明码的形式输出,好在老师及时提醒,所以我们通过上网查资料,想到可以以真假语句来实现,我们在网上找了了几个类似的程序,熟悉了它们的每一步过程之后,我们就开始自己动手,所以最后我们决定以数组的形式来改写,最后利用FOR循环成功解决了。当然在这次解决中,我们充分发挥了团体合作精神。我们当然不是一帆风顺的,遇到的第二个问题是经费设计问题,我们一开始忽略了半个小时这个关键词,直接是不足一个小时按一个小时计算,我们于是动手开始设计相应的程序,我们首先思考是不是可以加上1/2,在一番试验、比较之后,最后我们用fee=feep(&btop-timep)*7语句加上IF的判断语句
7、,我们最后成功设计出来了。接下来我们在时间差函数的设计上完全摸不着头脑,突然我们想到老师给了我们这个函数,我们成功地找到了时间差函数,我们仔细研读了老师给我们的程序,了解它是怎么运行的,之后,我们自己开始开工写出了double feep(time_t* tmp)这样的语句,通过编译、运行,证明了我们程序的正确性,为此我们付出了辛勤的汗水。我们也在号码查询这一程序过程卡住了,我们丝毫没有头绪,为此我们天天抢占图书馆,翻阅资料,理解、消化,实在不懂就去机房上网去看详尽的解说,晚上回宿舍继续编写,我们几个人讨论、琢磨,不停地修改、再写,好在不负众望,我们想到了printStar();printLin
8、e()语句,最终完成。我们在这个合作完成中学到的感触最深的就是团队精神的重要性,我们不停地讨论,才使得我们的程序设计不断的完美,虽然可能不是太好,但真的有我们几个的汗水在里面。通过这次实验,我们知道了学知识就是要学以致用,提高动手能力,为此很感谢这次实验。五、程序代码 #include #include #include#include#include#include#include#define PASS 20#define POT 20struct Clock/倒计时器c语言源程序 int sec,min,hour; void tick() long t=time(NULL); while
9、(t=time(NULL); if(-sec0) sec=59; if(-min0) min=59; -hour; void show() if(sec=0 & min=0 & hour=0)/parkingLot.top-;couttop-;printf(r); if(hour10) printf(0); printf(%d:,hour); if(min10) printf(0); printf(%d:,min); if(sec10) printf(0); printf(%d,sec); void run() while(sec!=0|min!=0|hour!=0) tick(); show
10、(); void set(int h,int m,int s) hour=h; min=m; sec=s;struct passLot/小车队列结构int num;/车位号time_t timep;/停车时间char carNum10;/停车的车牌号码;struct potLot/停车场栈数据int num;time_t timep;char carNum10;void printLine()/打印下划线(作为主界面图表的框架)coutttt_endl;return;void printStar()/打印星号coutendltt*endl;class erroFull/停车位满时异常类publ
11、ic:erroFull()system(color Fc);void ex()coutendlttt!停车场位已满!endl;_sleep(2000);erroFull()/析构函数;class erroEmp/停车位空时异常类public:erroEmp()system(color Fc);void ex()cout停车场位为空!endl;_sleep(2000);erroEmp();class parkingLot/停车场类public:parkingLot()passLot* pa;/小车停车指针potLot* po;/大车停车指针flag=0;/用来记忆队列(小车)中停车的数量rear
12、=front=0;/初始化队列头尾base=0;top=base;/初始化栈头尾int i=0;/初始化所有for(;inum=i+1;ai-carNum10=a;po=(potLot*)malloc(sizeof(potLot);bi=po;bi-num=i+1;bi-carNum10=1;parkingLot()/清除停车场数据couttt停车场数据已清空。endl;void passLG()/小车管理函数tryif(flag=20) throw erroFull();/如果停车位已满,则抛出车位满的异常情况system(cls);/清屏printStar();couttttt您进入了小车
13、停车界面endl;coutendlttt本停车场共有20个车位,现共停flag个车位。endlendl; coutarear-carNum;/得到车牌号if(strlen(arear-carNum)!=6)couttt警告!请将车牌规范化!系统将于一秒后返回!timep=time(NULL);coutendlttt!小车停放在num车位成功,系统将在一秒后返回上层界面!endl;rear=(rear+1)%PASS;flag+;_sleep(1000);/休眠catch(erroFull &err)err.ex();void potLG()/大车停车函数tryif(top=20) throw
14、erroFull();/车满抛出异常system (cls);/清屏函数printStar();/打印星号couttttt欢迎进入本泊车管理系统endl;coutendlttt停车场共有20个车位,现共停top个车位。endlendl; coutbtop-carNum;if(strlen(btop-carNum)!=6)couttt警告!请将车牌规范化!系统将于一秒后将返回!timep=time(NULL);coutendlttt!大车停放在num车位成功,系统将在一秒后返回上层界面!endl;top+;_sleep(1000);/当前休眠一秒catch(erroFull &err)err.e
15、x();void reservation()/预约函数int choice=-1;if(top=20&flag=20) throw erroFull();/小车数目满则抛出异常for(;)system(cls);/清屏函数调用printStar();/打印星号函数couttttt欢迎进入本预约管理界面endlendl;printLine();/划线函数coutttt|1.请输入预约的车牌号码ttt |endl;printLine();coutttt|2.请输入确定预约的车牌号码ttt |endl;printLine();coutttt|3.返回ttt |endl;printLine();pri
16、ntStar();/打印星号couttt请输入您的选项:;/二级菜单函数cinchoice;/选择菜单函数switch(choice)case 1:cacutime();break;case 2:resure();break;case 3:break;default:system(color Fc);coutendltttt输入格式不正确!endl;_sleep(1000);break;if(choice=3)break;return;void depart()/汽车离开int choice=-1; if(top=0&flag=0) throw erroEmp();for(;)system(c
17、ls); system(color F0); printStar(); couttttt欢迎下次光临停车场endlendl;printLine();coutttt|1.大车离开ttt |endl;/打印两个空格printLine();coutttt|2.小车离开ttt |endl;printLine();coutttt|3.返回 ttt |endl;printLine();printStar(); couttt请输入您的选项:;cinchoice; switch(choice)case 1:potOut();break;case 2:passOut();break;case 3:break;d
18、efault:system(color Fc);coutendltttt输入格式不正确!endl;_sleep(1000);break;if(choice=3)break;return;void arrive()/汽车到达int choice=-1; if(top=20&flag=20) throw erroFull();/小车数目满则抛出异常for(;)system(cls);/清屏函数调用printStar();/打印星号函数couttttt欢迎进入本泊车管理界面endlendl;printLine();/划线函数coutttt|1.大车停车ttt |endl;/*打印两个空格*/prin
19、tLine();/划线函数coutttt|2.小车停车ttt |endl;printLine();/划线函数coutttt|3.返回 ttt |endl;printLine();/划线函数printStar();/打印星号couttt请输入您的选项:;/二级菜单函数cinchoice;/选择菜单函数switch(choice)/选择菜单函数case 1:potLG();break;case 2:passLG();break;case 3:break;default:system(color Fc);coutendltttt输入格式不正确!endl;_sleep(1000);break;if(c
20、hoice=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=
21、0;local=localtime(tmp);/将存储的时间转化为当地时间日历 couttm_hour:tm_min:tm_sectm_hour;/保存停车时刻min=local-tm_min;sec=local-tm_sec;now=time(NULL); nowp=localtime(&now);coutt当前时间:ttm_hour:tm_min:tm_sectm_hour-hour;/求出停车的时间间隔 min= nowp-tm_min-min; sec= nowp-tm_sec-sec;if(sec0)min-;sec=60+sec;/进行秒、分钟、秒时间转换if(min0) hour
22、-;min=60+min; coutt汽车共停t hour小时 min分 sec秒endl;if(min30) 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()/预约时间计算函数tryif(top=20) throw erroFull();/车满抛出异常system (cls);/清屏函数printStar();/打印星号cou
23、ttttt欢迎进入预约界面endl;coutendlttt停车场共有20个车位,现共停(含预约)top个车位。endlendl; char numCar; coutnumCar;coutendlttt!车位预约成功,系统将在一秒后返回上层界面!endl;top+;_sleep(1000);/当前休眠一秒cul();catch(erroFull &err)err.ex();return;void resure()return;void passOut()/小车离开FILE *out;out = fopen(out.dat, ab+);tryif(flag=0) throw erroEmp();d
24、ouble fee=0;system(cls);printStar();couttttt您进入了小车离开界面endl;coutttt将要离开车的信息清单:endl; coutt车牌号码:tcarNumnt车位号码:t小车numcarNum); fee=feep(&afront-timep)*5;coutt应缴车费:tfee元endl;fprintf(out, %-6g,fee);cout_;/打印线条coutendl备注:t计费标准:每小时5元,不足半小时按半小时计算,超过半小时按一小时计算。endl;coutt本停车场共有20个车位,现共停flag-1个车位。endlcarNum10=0;f
25、ront=(front+1)%PASS;flag-;coutendlttttt小车已离开成功,请按任意键返回!endl;system(pause);catch(erroEmp &err)err.ex();fprintf(out,n);fclose(out);void potOut()/大车离开FILE *out;out = fopen(out.dat, ab+);tryif(top=0) throw erroEmp();double fee=0;top-;system(cls);printStar();couttttt您进入了停车场离开界面endl; coutttt将要离开车的信息清单:end
26、l; coutt车牌号码:tcarNumnt车位号码:t大车numcarNum);fee=feep(&btop-timep)*7;/计费公式,每小时7元coutt应缴车费:tfee元endl;fprintf(out, %-6g,fee);cout_;coutendl备注:t计费标准:每小时7元,不足小时按半小时计算,超过半小时按一小时计算endl;coutt本停车场共有20个车位,现共停top个车位。endlcarNum10=0;coutendlttttt大车已离开成功.请按任意键返回!endl;system(pause);catch(erroEmp &err)err.ex();fprintf
27、(out,n);fclose(out); void searchNum()/查询车牌号码char numCar20;int i=0;flag=1; coutnumCar;if(strlen(numCar)=6)for(;icarNum,numCar)=0)coutendlttt车牌号为numCar的车子停在小车道num位endl;flag=0;if(flag)for(i=0;icarNum,numCar)=0)coutendlttt车牌号为numCar的车子停在大车道num位endl;flag=0;if(flag) coutendl该汽车未停在本停车场!endl;system(pause);e
28、lsecout请规范化车牌!endl;void searchPot()/按车wei查找函数 int potCar, nn;couttt操作说明:按照停车类型加位置来输入所要查找的车位信息ntt如:大车10号位,即输入110。大车三号位,103。小车5号位,205endl; coutpotCar;if(potCar100)|(potCar200)if(potCar/100=1)nn=potCar%100-1;if(bnn-carNum10=0) couttt您所查询的车位没有停车endl;else cout停车场nn车位停车的车牌号是:carNumcarNum10=0) couttt您所查询的车
29、位没有停车endl;else cout便车道nn车位停车的车牌号是:carNumendl;else couttt您所输入的数字不正确!endl;system(pause);void search()/号码查询int choice=-1; if(top=0&flag=0) throw erroEmp();for(;)system(cls);system(color F0);printStar();couttttt您进入了号码查询界面endlendl;printLine(); coutttt|1.根据车牌号码查询tt |endl;/打印两个空格printLine();coutttt|2.直接查询指
30、定车位tt |endl;printLine();coutttt|3.返回ttt|endl;printLine();printStar(); couttt请输入您的选项:;cinchoice; switch(choice)case 1:searchNum();break;case 2:searchPot();break;case 3:break;default:system(color Fc);coutendltttt输入格式不正确!endl;_sleep(1000);break;if(choice=3)break;return;private:int flag,front,rear,top,base;/设置访问栈和队列passLot* aPASS;/以顺序方式存储栈和队列,并且都设为20个车位potLot* bPOT;tm* local,*nowp; time_t now; /设置时间型变量;/停车场类结束void password()/*密码*/system(color 0A);int a;int i=0;char s16=admin;char s26;char ch;do if(i3)print