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

上传人:沈*** 文档编号:103387820 上传时间:2022-06-08 格式:DOC 页数:52 大小:132KB
返回 下载 相关 举报
数据结构课程设计报告停车场管理系统c_第1页
第1页 / 共52页
数据结构课程设计报告停车场管理系统c_第2页
第2页 / 共52页
数据结构课程设计报告停车场管理系统c_第3页
第3页 / 共52页
点击查看更多>>
资源描述
-科技大学数据构造课 程 设 计题目停车场管理器设计院 系 信息工程学院专业 计算机科学与技术姓 名 马小强学 号 1167111103指 导 教 师 康懿 2013年7月5日科技大学课程设计任务书课程名称数据构造课程设计设计题目停车场管理器设计指导教师康懿时间2013.6.242013.7.5一、教学要求1. 掌握数据构造与算法的设计方法,具备初步的独立分析和设计能力2. 初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等根本方法和技能3. 提高综合运用所学的理论知识和方法独立分析和解决问题的能力4. 训练用系统的观点和软件开发一般规进展软件开发,培养软件工作者所应具备的科学的工作方法和作风二、设计资料及参数每个学生在教师提供的课程设计题目中任意选择一题,独立完成,题目选定后不可更换。停车场管理器设计以构造体类型表示停车时间和车辆信息,在此根底上借助栈完成对车辆的入场和出场操作,借助队列完成辅助停车场便道,即存放等待入场车辆或辅助车场中的*辆车出场。要求设计类或类模板来描述栈、队列、停车场及其操作,包含必要的构造函数和析构函数,以及其他能够完成如下功能的成员函数:v 压栈、退栈v 入队列、出队列v 车辆到场有车位即入场,否则入便道等待、车辆出场任意位置车辆均可出场v 查询车辆信息、输出停车场包括停车位和便道的车辆 并设计主函数测试该类。三、设计要求及成果1. 分析课程设计题目的要求2. 写出详细设计说明3. 编写程序代码,调试程序使其能正确运行4. 设计完成的软件要便于操作和使用5. 设计完成后提交课程设计报告四、进度安排资料查阅与讨论1天系统分析2天系统的开发与测试5天编写课程设计说明书和验收2天五、评分标准1. 根据平时上机考勤、表现和进度,教师将每天点名和检查2. 根据课程设计完成情况,必须有可运行的软件。3. 根据课程设计报告的质量,如有雷同,则所有雷同的所有人均判为不及格。4. 根据辩论的情况,应能够以清晰的思路和准确、简练的语言表达自己的设计和答复教师的提问六、建议参考资料1数据构造C语言版严蔚敏、吴伟*编清华大学 2004.112数据构造课程设计案例精编用C/C+描述,建学 等 编著,清华大学 2007.23.数据构造:用面向对象方法与C+语言描述,殷人昆主编,清华大学 2007.6目录目录2第一章、需求分析3第一节、问题描述3第二节、根本要求3第二章、概要设计4第一节、设计思想4第二节、数据构造4第三节、程序模块5第三章、详细设计8第一节、数据类型8第二节、主要操作9第四章、测试与分析14第一节、调试过程中的主要问题14第二节、测试结果的分析与讨论14第五章、用户使用说明18第六章、总结18第七章、发现问题及错误分析20第一节、逻辑错误函数20第二节、修改前得代码20第三节、错误描述20第四节、解决方案如下22第八章、参考文献23附录代码:24第一章、需求分析根据题目要求,充分地分析和理解问题,描述系统的功能要求,明确问题要求做什么.以及限制条件是什么.第一节、问题描述随着我国人民生活水平提高和汽车工业的高速开展越来越多的家庭拥有了汽车,但受到土地的限制,所以采用立体停车场是解决停车难的必然出路。立体停车场占地少,容量大利用效率高;泊车与取车全自动化,省时省力,平安防盗。本文主要以两层停车场为例,设计一能完成存车与取车的停车场系统。有一个两层的停车场,每层有6个车位,当第一层车停满后才允许使用第二层.(停车场可用一个二维数组实现,每个数组元素存放一个车牌号)每辆车的信息包括车牌号、层号、车位号、停车时间共4项,其中停车时间按分钟计算 。假设停车场初始状态为第一层已经停有4辆车,其车位号依次为14,停车时间依次为20,15,10,5.即先将这四辆车的信息存入文件car.dat中(数组的对应元素也要进展赋值) 。停车操作:当一辆车进入停车场时,先输入其车牌号,再为它分配一个层号和一个车位号,停车时间设为5,最后将新停入的汽车的信息添加文件car.dat中,并将在此之前的所有车的停车时间加5。收费管理(取车):当有车离开时,输入其车牌号,先按其停车时间计算费用,每5分钟0.2元.(停车费用可设置一个变量进展保存),同时从文件car.dat中删除该车的信息,并将该车对应的车位设置为可使用状态(即二维数组对应元素清零).按用户的选择来判断是否要输出停车收费的总计。第二节、根本要求输入的形式和输入值的围程序以车牌号作为车主的身份验证,以真实的汽车车牌号为准,当取车或停车时,需输入车牌号,输入字段长7位。输出的形式用户:当车主存车时,要求显示空闲的车位,方便车主在层选择层间要满足,如果第一层有空则必须停在第一层。当车主取车时,可以根据客户选择,决定是否输出凭据。管理员:能够查询全部车辆的信息。程序所能到达的功能用户存车:包括查找空位,选择车位;用户取车:包括出车,显示凭据。更改停车场的状态。停车场管理员:初始化停车场,查询所有车的停车信息历史停车信息,进展一定的查询功能。第二章、概要设计第一节、设计思想本停车场有两层,每层有6个车位,所以停车场可用一个二维数组实现,用来描述现停汽车的信息。每辆车用一构造体表示,包括车牌号、层号、车位号、停车时间和停车标志位标志是否停车。当车入库时,将更改二维数组的信息,当车出库时,将信息写入car.dat中。再次进入该系统时,还用这个二维数组,来承受car.dat数据的读入,便于用户以后的操作,防止停车信息的流失。此外,由于需要显示所有汽车的停车信息,所以我们又加了一个顾客构造体,一个顾客链表,当存车时,新建用户节点,并使用头插法,插于链表便于取车时查到用户,补充完整用户的信息,填写用户的相关信息车牌号,层号,车位号,车入库时刻。当出库时,查找相应节点,补充完整用户信息,包括用户留言,停车时间总计,花费。当退出系统后,将已出库的汽车的车主信息,写入历史文件list.dat中,便于管理员的查询。将还未取走车的车主的信息存入临时文件temp.dat中,防止系统关闭后数据信息的丧失,车主取车时找不到车。第二节、数据构造构造体Car,保存每个车位的停车信息。构造体Snode ,保存每个客户的信息。构造体User,保存管理员信息。构造体Date,保存时间。数组Cars,保存整个停车状况。链表CustList,保存所有客户的信息,包括车已取走,和车未取走的。第三节、程序模块1此停车场管理系统,主要分为以下假设干模块:首先定义用来模拟停车的数组,用来保存顾客信息的链表,保存管理员信息的构造以及全局变量,然后编写主函数,在此主函数中实现对其它各个模块的调用。在主函数中首先调用option()函数,出现欢送用户使用的界面,然后提示用户进入此停车场管理系统后,再出现一个供用户选择的主界面包括顾客界面和停车场管理员管理界面。当用户选择顾客界面时,跳入到顾客界面,再次界面,用户可以选择存车、取车及返回主页面。在用户的选择过程中,程序又分别存车,取车函数调用以及退出程序这三个函数模块。其中,当存车时,调用了显示空闲车位状态的信息函数,并调用了保存car.dat的函数;当取车时,调用显示本次停车情况以及消费金额的函数, 并调用了保存car.dat的函数。最后,在主界面选择“退出,保存历史文件list.dat和临时文件temp.dat。当用户选择车管系统时,调用管理员身份验证函数,从而跳入车管界面,然后相应的功能函数,实现查询所有停车信息。2在以上各个模块中,出现的调用的函数为:/ 客 户 void Customer(Car carsFLOORPNUMBER);void CustomerNote(char note100,CustList *cl);/存车int Enterpark(Car carsFLOORPNUMBER,char *license,int &floor,int &pnumber);void GetDate(Date &date);bool IsFull(Car carsFLOORPNUMBER);bool IsSame(Car carsFLOORPNUMBER,char *license);/取车int CarOutMenu(char license,int &floor,int &pnumber,int &ptime,float &cost,char note100);bool IsEmpty(Car carsFLOORPNUMBER);void Print(char license,int floor,int pnumber,int ptime,float &cost);void Leavepark(Car carsFLOORPNUMBER,char license,int &floor,int &pnumber,int &ptime,char note100);/-后台管理-void Manage(Car carsFLOORPNUMBER); /保存到car.datvoid Savecars(Car carsFLOORPNUMBER);void FourCarIn(Car CarsFLOORPNUMBER); /初始停车场int UsertestAdd();/管理员身份验证void Load(Car carsFLOORPNUMBER); /加载文件void Loadfile(Car carsFLOORPNUMBER,char license8,int floor,int pnumber,int ptime,int empty);void Showcars(Car carsFLOORPNUMBER,CustList *cl); /显示停车场现存车void Message(CustList *clr); /显示客户信息void News();/发布消息void Ine(CustList *cl,char day,float &amount); /一些查询void CheckOneCar(CustList *clr,char *license);/后台中关于单链表的void InitCustList(CustList *&cl);void InsertToFirst(CustList *cl,char *license,int floor,int pnumber,Date date);void InsertToLst(CustList *cl,char *license,int floor,int pnumber,int ptime,float cost,Date date);void SearchCust(CustList *&cl,char *license,float cost,int ptimecount,char note);void SaveListTemp(CustList *cl);/保存到temp.datvoid SaveList(CustList *cl); /保存到list.datvoid DeleteAll(CustList *cl);void ReadFromList(CustList *cl);void LoadList(CustList *clr);void DeleteByNote(CustList *cl);3各模块之间的调用关系以及算法设计下列图是个模块之间的调用关系如图2-1:退出停车场管理员界面显示凭据客户留言返回主页输入车牌号退出退出显示车位,客户选择车牌有效输入车牌号退出一个客户每天收入客户信息车辆信息初始停车场返回主页存车界面取车界面客户界面进入主页面否是满注:在取、存操作后,会自动保存信息到car.dat中。在每次退出系统时,会保存list.dat和temp.dat。图2-1模块调用关系第三章、详细设计实现概要设计中定义的所有数据类型,对主要操作写出实现算法,对主程序和其他模块写出算法,写出函数的调用关系。第一节、数据类型构造体Car,保存每个车位的停车信息。struct Carchar license8;int floor;int pnumber;int ptime;int empty;/标志位,有车为1,无车为0;构造体Snode ,保存每个客户的信息。struct Snodechar license8;/车牌号Date date;/停车的时刻int floor;int pnumber;int ptimecount;/本次停车总时间float cost;char note100;/顾客留言Snode *ne*t;构造体User,保存管理员信息。struct Userchar id10;char name10;char password10;构造体Date,保存时间。struct Datechar day11;char shike9;char weekday10;数组Cars,保存整个停车状况。Car CarsFLOORPNUMBER;链表,保存所有客户的信息,包括车已取走,和车未取走的。typedef struct SnodeCustList;第二节、主要操作1存车:int Enterpark(Car carsFLOORPNUMBER,char *license,int &floor,int &pnumber)/输入车牌号,判断车牌号的有效性coutlicen;while(!licen)|(strlen(licen)!=7)coutlicen;/查看是否有重复while(1)if(IsSame(cars,licen)=1)cout已经存在这辆车,请重新输入:licen;else break;/判断车场是否已经满了/查看是否有空位,并显示。便于客户选择int i,j;if(IsFull(cars)=1)cout已经没有空车位了,谢谢惠顾!正在跳转到顾客界面。endl;return 0;int sign=1;/sign 标志第几层有空位0表一,1表二cout您可以选择的车位endl;cout-endl;cout.setf(ios:left);cout.width(8);cout楼层;cout.width(8);cout车位号;coutendl;for(i=0;iFLOOR;i+)if(sign=0) break;for(j=0;jPNUMBER;j+)if(carsij.empty=0)&(i=0)sign=0;cout.setf(ios:left);cout.width(8);couti+1;cout.width(8);coutj+1endl;if(j=PNUMBER-1) break;else if(carsij.empty=0)&(i=1)cout.setf(ios:left);cout.width(8);couti+1;cout.width(8);coutj+1endl;cout-endl;int temf;couttemf;while(1)if(carssigntemf-1.empty=0)&(temf=1&temf=6)/修改一个车位的信息carssigntemf-1.empty=1;floor=carssigntemf-1.floor=sign+1;pnumber=carssigntemf-1.pnumber=temf;strcpy(carssigntemf-1.license,licen);strcpy(license,licen);carssigntemf-1.ptime=0;/修改整个停车场的信息for(i=0;iFLOOR;i+)for(j=0;jPNUMBER;j+)if(carsij.empty=1)carsij.ptime+=5;break;else cout输入有误!请输入车位号temf;return 1;2取车:void Leavepark(Car carsFLOORPNUMBER,char license,int &floor,int &pnumber,int &ptime,char note100)/判断车位是否已空if(IsEmpty(cars)=1) cout停车场已没有车停放!请确定您是否停车。endl;return;/查找车位int sign=1;/标志位,车库有该车为1,没有赋值为零,初始值为0int i,j;while(sign)for(i=0;iFLOOR;i+)for(j=0;jPNUMBER;j+)if(strcmp(carsij.license,license)=0)sign=0;floor=i;pnumber=j;ptime=carsij.ptime;if(sign)cout您刚刚输入的车牌号不存在!endl;coutlicense;if(sign=0) cout车已找到,请稍等。endl;strcpy(note,0000000000);floor+=1;pnumber+=1;/system (cls);/延时for(i=0;i100000000;i+);/车出库,将车位空出carsfloor-1pnumber-1.floor =0;carsfloor-1pnumber-1.pnumber =0;carsfloor-1pnumber-1.ptime=0;carsfloor-1pnumber-1.empty=0;strcpy(carsfloor-1pnumber-1.license, );/由于floor,pnumber与实际的二位数组有区别,加1第四章、测试与分析进展系统测试,输出测试结果。测试数据应该全面、完整,并对测试结果进展分析。第一节、调试过程中的主要问题由于此停车场管理系统是分模块设计的,而且在程序的实现过程中又使用了清屏函数,所以,运行时用户选择任务并且执行完任务后,又会回到供用户选择功能的主界面,因此整个程序从整体上来讲构造清晰,使用方便。本程序的调试运行,总体上情况良好,但中间也出现了一些小问题。其中比拟有代表性的主要问题有:第二节、测试结果的分析与讨论 主界面如图4-1图4-1系统主界面 客户界面如图4-2图4-2客户界面 存车如图4-3图4-3存车界面 取车如图4-4图4-4取车界面 管理员界面如图4-5图4-5管理员界面第五章、用户使用说明1、 进入主界面2、 选择:1客户界面; 2停车场管理员界面; 3退出;3、进入客户界面1、停车,填写车牌号等信息然后返回;2、取车,输入车牌号和自己的信息,出示凭据,可以进展评价,然后返回主页;4、进入停车场管理员界面1、查看停车场初始化信息;2、选择车辆,查看它的详细信息;3、进一步查看客户的信息;4、清点一天的收入;5、返回主页,退出;第六章、总结在这次的课程设计中不仅检验了我所学习的知识,也培养了我如何去把握一件事情,如何去做一件事情,又如何完成一件事情的方法和技巧。在设计过程中,和同学们相互探讨,相互学习。我学会了运筹帷幄,学会了宽容,学会了理解,也学会了做人与处世,这次课程设计对我来说受益良多。课程设计是我们专业课程知识综合应用的实践训练,这是我们迈向社会,从事职业工作前一个必不少的过程“千里之行始于足下通过这次课程设计,我深深体会到这句千古名言的真正含义我今天认真的进展课程设计,学会脚踏实地迈开这一步,就是为明天能稳健地在社会大潮中奔跑打下坚实的根底。我这次设计的科目是数据结。数据构造,是一门研究非数值计算的程序设计问题中计算机的操作对象数据元素以及它们之间的关系和运算等的学科,而且确保经过这些运算所得到的新构造仍然是原来的构造类型。作为一门独立的课程在国外是从1968年才开场设立的。1968年美国唐欧克努特教授开创了数据构造的最初体系,他所著的计算机程序设计技巧第一卷根本算法是第一本较系统地阐述数据的逻辑构造和存储构造及其操作的著作“数据构造在计算机科学中是一门综合性的专业根底课。数据构造是介于数学、计算机硬件和计算机软件三者之间的一门核心课程。数据构造这一门课的容不仅是一般程序设计特别是非数值性程序设计的根底,而且是设计和实现编译程序、操作系统、数据库系统及其他系统程序的重要根底。一、积累了珍贵的经历我这次课程设计代码中主要使用了链表的循环和遍历这两中操作。循环链表(Circular Linked List)是单链表的另一种形式,它是一个首尾相接的链表。其特点是将单链表最后一个结点的指针域由NULL改为指向头结点或线性表中的第一个结点,就得到了单链形式的循环链表,并称为循环单链表。类似地,还有多重链的循环链表。在循环单链表中,表中所有结点被链在一个环上,多重循环链表则是将表中的结点链在多个环上。为了使*些操作实现起来方便,在循环单链表中也可设置一个头结点。这样,空循环链表仅由一个自成循环的头结点表示。所谓遍历(Traversal),是指沿着*条搜索路线,依次对树中每个结点均做一次且仅做一次访问。访问结点所做的操作依赖于具体的应用问题。这次课程设计我选中的题目是个人资料的管理。编写了一个可以简易使用的个人资料管理系统,可以进展资料的输入和管理。虽然在我的程序中有一局部是从网上搜索得来的,但我已经竭力将所获得的信息变成自己的资源,动手上机操作,在了解和看懂的根底上有所改变和创新,但是在的程序软件中还有局部的缺乏,需要加以更新。仅管,我并没能很好的利用所学数据构造的知识,但我也尽了自己最大的努力用我所学来完成这次的课程设计。同时,通过这次课程设计,我认识到了自己动手实践的弱势,特别是在编程方面,知道了计算机的实践操作是很重要的,只有通过上机编程才能充分的了解自己的缺乏。二、对以后的学习充满了信心和期待通过这次的课程设计,更是让我深刻认识到自己在学习中的缺乏,同时也找到了克制这些缺乏的方法,这也是一笔很大的资源。在以后的时间中,我们应该利用更多的时间去上机实验,加强自学的能力,多编写程序,相信不久后我们的编程能力都会有很大的提高能设计出更多的更有创新的作品。第七章、发现问题及错误分析第一节、逻辑错误函数void Loadfile(Car cars26,char license10,int floor,int pnumber,int ptime,int empty )函数的功能是在每次运行程序时,加载车库里原来已经存在的还没有储库的车第二节、修改前得代码void Loadfile(Car cars26,char license10,int floor,int pnumber,int ptime,int empty )if(!license)return;int j=0;while(cars0j.empty !=0)j+;strcpy(cars0j.license,license);cars0j.floor =floor;cars0j.pnumber =pnumber;cars0j.ptime =ptime;cars0j.empty =empty;第三节、错误描述这个函数有问题,每次读入都是按00,01,02,03,04顺序加载,一个一个的,从而造成了两个问题:车库“假满现象 和“删除后重新加载时只能按顺序加载 ,同时不够简练,重用性不高。错误的一种结果:“假满现象:1.并且上限只能加载第一层的六个车位,第七次调用该函数时就会报错原来车库已经存储的 六 辆车如图7-1:图7-1错误报告第七辆车来时虽然可以停车,保存之后 ,但是下次加载车库中七条数据时就会发生溢出错误 如图7-2、图7-3图7-2溢出错误1 图7-3溢出错误2错误的另一种种结果:2.假设文件原来的保存的车停信息位(0,0)(0,3)(1,0)(1,2)经过加载后,(0,0)保存在00;(0,3)保存在02;(1,0)保存在03;(1,2)保存在04;即只能顺序加载如图7-4、图7-5图7-4加载错误1 图7-5加载错误2第四节、解决方案如下void Loadfile(Car cars26,char license10,int floor,int pnumber,int ptime,int empty )if(!license)return;strcpy(carsfloor-1pnumber-1.license,license);carsfloor-1pnumber-1.floor =floor;carsfloor-1pnumber-1.pnumber =pnumber;carsfloor-1pnumber-1.ptime =ptime;carsfloor-1pnumber-1.empty =empty;第八章、参考文献1数据构造C语言版严蔚敏、吴伟*编清华大学 2004.112数据构造课程设计案例精编用C/C+描述,建学 等 编著,清华大学 2007.23.数据构造:用面向对象方法与C+语言描述,殷人昆主编,清华大学 2007.6附录代码:*include *include *include *include *include *define FLOOR 2*define PNUMBER 6struct Carchar license10;int floor;int pnumber;int ptime;int empty;/标志位,有车为1,无车为0;/顾客信息节点struct Customerchar license10;/车牌号char date64;/停车的时刻int ptimecount;/本次停车总时间float cost;char note100;/顾客留言Customer *ne*t;/顾客信息链表typedef Customer CustList;/管理员struct Userchar id10;char name10;char password10;int UsertestAdd();void Load(Car cars26);void Loadfile(Car cars26,char license10,int floor,int pnumber,int ptime,int empty);void FourCarIn(Car Cars26);void Enterpark(Car cars26);void Showcars(Car cars26);void Savecars(Car cars26);bool IsEmpty(Car cars26);void Print(char license,int floor,int pnumber,int ptime,float &cost);void Leavepark(Car cars26,char license,int &floor,int &pnumber,int &ptime,float &cost,char note100);void CarOutMenu(char license,int &floor,int &pnumber,int &ptime,float &cost,char note100);void Manage(Car cars26);void InitCustList(CustList *&cl);void CreateCustList(CustList *&cl,char *license);void GetDate(char tmp64);void SearchCust(CustList *&cl,char *license,float cost,int pcount);void Customer(Car cars26);void CustomerNote(char note100);void EachGuideInfor(Car c);/游客个人信息的自我查询void EachGuideInfor(Car c)cout.setf(ios:left);cout.width(10);cout车牌号;cout.width(8);cout楼层;cout.width(8);cout车位号;cout.width(8);cout停车开场时间endl;cout.setf(ios:left);cout.width(10);coutc.license;cout.width(8);coutc.floor;cout.width(8);coutc.pnumber;cout.width(8);coutc.ptimeendl;/顾客留言void CustomerNote(char note100)coutnote;/存车void Enterpark(Car cars26)coutinput your licenselicen;while(!licen)coutinput your licenselicen;/判断车库是否已经满了,顺便将原来的ptime加5int i,j;for(i=0;i2;i+)for(j=0;j6;j+)if(carsij.empty=1)carsij.ptime +=5;elsecarsij.floor =i+1;carsij.pnumber =j+1;carsij.ptime=5;carsij.empty=1;strcpy(carsij.license,licen);return; /如果使用break,则只能跳出单层循环,/显示停车信息/cout显示停车信息.Y:是,N:否endl;/couta;/if(a=Y)/EachGuideInfor(cars);/取车void Leavepark(Car cars26,char license,int &floor,int &pnumber,int &ptime,float &cost,char note100)/判断车位是否已空if(IsEmpty(cars)=1) cout停车场已没有车停放!请确定您是否停车。endl;return;/查找车位int sign=1;/标志位,车库有该车为1,没有赋值为零,初始值为0int i,j;while(sign)for(i=0;i2;i+)for(j=0;j6;j+)if(strcmp(carsij.license,license)=0)sign=0;floor=i;pnumber=j;ptime=carsij.ptime;if(sign)cout您刚刚输入的车牌号不存在!endl;coutlicense;if(sign=0) cout车已找到,请稍等。endl;floor+=1;pnumber+=1;/system (cls);/延时for(i=0;i1000000000;i+);/车出库,将车位空出carsfloor-1pnumber-1.floor =0;carsfloor-1pnumber-1.pnumber =0;carsfloor-1pnumber-1.ptime=0;carsfloor-1pnumber-1.empty=0;strcpy(carsfloor-1pnumber-1.license, );/由于floor,pnumber与实际的二位数组有区别,加1/取车的菜单项void CarOutMenu(char license,int &floor,int &pnumber,int &ptime,float &cost,char note100)cout1 输出凭据endl;cout2 留言endl;cout3 直接退出endl;while(1)couti;if(i3)cout您的操作非法!endl;continue;switch(i)case 1:cout-现有汽车停车信息-endl;Print(license,floor,pnumber,ptime,cost);break;case 2:CustomerNote(note);break;case 3:break;if(i=1|i=2) continue;else break;/得到当前时间void GetDate(char tmp64)time_t t = time( 0 ); strftime(tmp, sizeof(tmp), %Y/%m/%d %* %A,localtime(&t) );bool IsEmpty(Car cars26)int i,j;for(i=0;i2;i+)for(j=i;j6;j+)if(carsij.empty=1) return false;return true;/逐条添加记录到car.dat中void Savecars(Car cars26)FILE* fp = fopen(car.t*t,wb);if(fp=NULL)coutCan not open this fileendl;return;/to fileCar car;int i=0;int j=0;while(i2)while(j6)if(carsij.empty =1)car.floor =carsij.floor ;strcpy(car.license ,carsij.license );car.pnumber =carsij.pnumber ;car.ptime =carsij.ptime ; car.empty=carsij.empty ;/fwrite(&cars,sizeof(car),1,fp); / 如果写成这样,每次都从car00地址开场写入,回报原来的容覆盖掉,加深了我对fwrite的理解fwrite(&car,sizeof(car),1,fp);j+;i+;fclose(fp);void Load(Car cars26)FILE* fp = fopen(car.t*t,rb);if(fp=NULL)coutcan not open this fileendl;return;Car car;int n;while(!feof(fp)/read one car informationn = fread(&car,sizeof(car),1,fp);if(n!=1)break;/coutcar.license car.floor car.pnumber car.ptime endl;Loadfile(cars,car.license ,car.floor,car.pnumber ,car.ptime ,car.empty );fclose(fp);/输出收费后 个人 凭据void Print(char license,int floor,int pnumber,int ptime,float &cost)/计算费用cost=ptime*float (0.2);/输出cout.setf(ios:left);cout.width(10);cout车牌号;cout.width(8);cout楼层;cout.width(8);cout车位号;cout.width(8);cout消费endl;cout.setf(ios:left);cout.width(10);coutlicense;cout.width(8);coutfloor;cout.width(8);coutpnumber;cout.width(8);coutcostendl;void FourCarIn(Car cars26)/4 车进库Car c;int i;cout请输入四辆车的信息:endl;for(i=0;i4;i+)cout第 i+1c.license;cout第 i+1c.floor;cout第 i+1c.pnumber;cout第 i+1c.ptime;c.empty=1;Loadfile(cars,c.license,c.floor,c.pnumber,c.ptime,c.empty );/写入文件car.datSavecars(cars);/记录一个停车位的状态void Loadfile(Car cars26,char license10,int floor,int pnumber,int ptime,int empty )if(!license)return;strcpy(carsfloor-1pnumber-1.license,license);carsfloor-1pnumber-1.floor =floor;carsfloor-1pnumber-1.pnumber =pnumber;carsfloor-1pnumber-1.ptime =ptime;carsfloor-1pnumber-1.empty =empty;void Showcars(Car cars26)cout-现有汽车停车信息-endl;int i,j;cout.setf(ios:left);cout.width(10);cout车牌号;cout.width(8);cout楼层;cout.width(8);cout车位号;cout.width(8);cout停车时间endl;for(i=0;i2;i+)for(j=0;j6;j+)if(carsij.empty=1)cout.setf(ios:left);cout.width(10);coutcarsij.license;cout.width(8);coutcarsij.floor;cout.width(8);coutcarsij.pnumber;cout.width(8);coutcarsij.ptimeendl;int UsertestAdd() /simple登陆验证和注册用户功能User UserArr10=201117930,应哲,201117930;/默认用户 int count=0;/统计输入用户名和密码错误次数 int i=0;/遍历变量或找到用户的IDint k=1;/
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!