停车场管理系统设计_第1页
停车场管理系统设计_第2页
停车场管理系统设计_第3页
停车场管理系统设计_第4页
停车场管理系统设计_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、面向对象程序设计(C+)课程大作业设计题目:停车场管理系统设计院系:计算机科学与信息工程学院专业班级:学号姓名:指导教师:word资料一、成员分工1二、需求分析2三、总体设计3四、详细设计6五、系统测试17六、 总结20七、参考文献21一成员分工我们小组成员共有三名,分别是,为了能按时圆满的完成这次VC+课程设计,我们小组进行了详细的分工,以确保设计能按时完成。经过周密的考虑和详细的调查最终确定该停车场管理系统需要以下 几个功能模块:(1)需求分析(2)界面的设计(3)添加功能(4)显示功能(5)查询功能(6)编辑功能(7)删除功能(8)统计功能(9)保存功能(10)读取功能经过小组成员的讨论

2、,并根据个人的特长和具体爱好做如下具体分工:神1具体完成以下模块的设计与实现:(1)需求分析(2)界面的设计(3)添加功能(4)保存功能神2具体完成以下模块的设计与实现:(1)显示功能(2)查询功能(3)显示功能神3主要具体完成以下模块的设计与实现:(1)编辑功能(2)删除功能(3)读取功能二需求分析1问题描述定义车辆类,属性有车牌号、颜色、车型(小汽车、小卡、中卡和大卡)、至U达的时间和离开的时间等信息和相关的对属性做操作的行为。定义一个管理类,完成对停车场的管理。停车场的具体要求:设停车场是一个可停放n辆汽车的狭长通道,且只有一个大门可供汽车进出。汽车在停车场内按车辆到达时间的先后顺序,依

3、次由北向南排列(大门在最南端,最先到达的第一辆车停放在车 场的最北端),若车场内已停满n辆汽车,则后来的汽车只能在门外的便道上等待,一旦有车开走,则排在便道上的第一辆车即可开入;每辆停放在车场的车在它离开停车场时必须按它停留的时间长 短交纳费用。2.基本要求(1) 添加功能:程序能够添加到达停车场的车辆信息,要求车辆的车牌号要唯一, 如果添加了重复编号的记录时,则提示数据添加重复并取消添加。(2) 查询功能:可根据车牌号、车型等信息对已添加的停车场中的车辆信息进行查询,如果未找到,给出相应的提示信息,如果找到,则显示相应的记录信息;(3) 显示功能:可显示当前系统中所有车辆的信息,每条记录占据

4、一行。(4) 编辑功能:可根据查询结果对相应的记录进行修改,修改时注意车牌号的唯一性。(5 )删除功能:主要实现对已添加的车辆记录进行删除。如果当前系统中没有相 应的人员记录,贝U提示“记录为空!”并返回操作。(6)统计功能:能统计停车场中车辆的总数、按车型、按到达时间进行统计等。(7 )保存功能:可将当前系统中各类人员记录和休假记录存入文件中,存入方式 任意。(8)读取功能:可将保存在文件中的信息读入到当前系统中,供用户进行使用。3 .系统运行环境(1)硬件环境。联想 双核处理器,2G内存,2G独立显卡,80G硬盘。(2)软件环境。 Microsoft Visual C+6.0,Wi ndo

5、sXP系统。三总体设计(1)设计思想本停车场n个车位,所以可以用数组表示,每辆车用一结构体表示,包括车牌号、颜色、车型、车位号、停车时间和停车标志位(标志是否停车)。当车入库时,将更改信息,当车出库时,将信息写入 car.dat中。再次进入该系统时,还用这个该数组,来接受 car.dat数 据的读入,便于用户以后的操作,防止停车信息的流失。此外,由于需要显示所有汽车的停 车信息,所以我们又加了一个顾客结构体,一个顾客链表,当存车时,新建用户节点,并使 用头插法,插于链表(便于取车时查到用户,补充完整用户的信息),填写用户的相关信息(车牌号,颜色,车型,车位号,车入库时刻)。当出库时,查找相应节

6、点,补充完整用户 信息,包括(用户留言,停车时间总计,花费)。当退出系统后,将已出库的汽车的车主信 息,写入历史文件list.dat中,便于管理员的查询。将还未取走车的车主的信息存入临时文件temp.dat中,防止系统关闭后数据信息的丢失,车主取车时找不到车。同时,还要将成 员信息写入临时文件 user.dat ;(2)数据结构结构体Car,保存每个车位的停车信息。结构体Gustomer,保存每个客户的信息。结构体User,保存管理员信息。数组Cars,保存整个停车状况。数组user;链表CustList,保存所有客户的信息,包括车已取走,和车未取走的。(3)程序模块(1)此停车场管理系统,主

7、要分为以下若干模块:首先定义用来模拟停车的数组,用来保存顾客信息的链表,保存管理员信息的结构以及全局 变量,然后编写主函数,在此主函数中实现对其它各个模块的调用。在主函数中首先调用 optio n()函数,出现欢迎用户使用的界面,然后提示用户进入此停车场管理系统后,再出现 一个供用户选择的主界面(包括顾客界面和停车场管理员管理界面)。当用户选择顾客界面 时,跳入到顾客界面,再次界面,用户可以选择存车、取车及返回主页面。在用户的选择过 程中,程序又分别存车,取车函数调用以及退出程序这三个函数模块。其中,当存车时,调 用了显示空闲车位状态的信息函数,并调用了保存car.dat的函数;当取车时,调用

8、显示本次停车情况以及消费金额的函数,并调用了保存car.dat的函数。建立user.dat存放管理人员的信息。最后,在主界面选择退出,保存历史文件list.dat和临时文件temp.dat。当用户选择车管系统时,调用管理员身份验证函数,从而跳入车管界面,然后相应的功能函 数,实现查询所有停车信息。(2)各模块之间的调用关系以及算法设计下图是个模块之间的调用关系:欢迎页面进入主页面初 始 停 车 场停车场管理员界面车辆信息输显入示管管理理员员信信息息注:在取、存操作后,会自动保存信息到car.dat 中。在每次退出系统时,会保存list.dat和 temp.dat。(3 )函数设计int Use

9、rtestAdd();void SaveUsers(User users6);void loa(User users6);void FourUserl n( User users6);void Load(Car cars6);void Showusers(User users6);void loafile(User users6,char n ame10,char id10,char password10,intqin gjia,i nt empty);void Loadfile(Car cars6,char lice nse10,charpchex in g10,charpcolor2,i

10、ntpnumber,int ptime,int empty);void FourCarI n(Car Cars6);void En terpark(Car cars6);void Showcars(Car cars6);void Savecars(Car cars6);bool lsEmpty(Car cars6);voidPrin t(charlice nse10,charpchex in g10,charpcolor2,i ntpnu mber,i nt ptime,float&cost);void Leavepark(Car cars6,char lice nse,charpchex i

11、n g,charpcolor,i nt&pnu mber,i nt& ptime,float & cost,char no te1OO);voidCarOutMe nu (charlice nse,charpchex in g,charpcolor,i nt&pnu mber,i nt& ptime,float & cost,char n ote100);void Ma nage(Car cars 6);void Ini tCustList(CustList *&cl);void CreateCustList(CustList *&cl,char *lice nse,char *pchex i

12、n g,char *pcolor);void GetDate(char tmp64);void SearchCust(CustList *&cl,char *lice nse,char *pchex in g,char *pcolor,float cost, intpco un t);void Customer(Car cars6);void CustomerNote(char n ote100);void EachGuide In for(Car c);四详细设计实现概要设计中定义的所有数据类型,对主要操作写出实现算法,对主程序和其他模块写出算法, 写出函数的调用关系。(1)数据类型结构体C

13、ar,保存每个车位的停车信息。struct Car char lice nse8;int pnu mber;char pcolor2;char pchex in g10;有车为 1,无车为0int ptime;int empty;/ 标志位, ;struct Customer车牌号车的型号车的颜色停车的时刻本次停车总时间顾客留言char lice nse10;char pchex in g10;char pcolor2;char date64; int ptimeco un t; float cost;char note100;Customer *n ext;struct Userchar i

14、d10;编号char name10; 姓名char password10;留言int qi ngjia;int empty;/标志位,有车为1,无车为0;数组Cars,保存整个停车状况。数组User,保存整个管理人员的信息。Car CarsPNUMBER;链表,保存所有客户的信息,包括车已取走,和车未取走的。typedef struct Snode CustList;(2)主要操作1) 存车void En terpark(Car cars6)couti nput your lice nse,chex in g,color lice n pcolopche;while(!lice n)couti

15、 nput your lice nse,chex in g,color lice n pcolopche;/判断车库是否已经满了int i;for(i=0;i6;i+)if(carsi.empty=1)carsi.ptime +=5;elsecarsi.p nu mber =i+1;carsi.ptime=5;carsi.empty=1;strcpy(carsi.lice nse,lice n);return; /如果使用break,则只能跳出单层循环,2) 取车void Leavepark(Car carsFLOORPNUMBER,char license,int &floor,int &p

16、number,int& ptime,char n ote100)/判断车位是否已空if(lsEmpty(cars)=1)cout停车场已没有车停放!请确定您是否停车。endl;return;/查找车位int sig n=1;标志位,车库有该车为1,没有赋值为零,初始值为0int i,j;while(sig n)for(i=0;iFLOOR;i+)for(j=0;jPNUMBER;j+)if(strcmp(carsij.lice nse,lice nse)=0)sig n=0;floor=i;pnu mber=j;ptime=carsij.ptime;if(sig n)cout您刚才输入的车牌号

17、不存在!endl;cout lice nse;if(sig n=0)cout车已找到,请稍等。endl;strcpy(no te,OOOOOOOOOO);floor+=1;pnu mber+=1;/system (cls);for(i=0;i100000000;i+);carsfloor-1p nu mber-1.floor =0;carsfloor-1p nu mber-1.p nu mber =0;carsfloor-1p nu mber-1.ptime=0;carsfloor-1p nu mber-1.empty=0;strcpy(carsfloor-1p nu mber-1.lice

18、nse,);3) 添加管理员的信息到User.txt中void SaveUsers(User users6)FILE* fp = fope n(user.txt,wb);if(fp=NULL) coutCa n not ope n this filee ndl; return;User user;int j=0;while(j6)if(usersj.empty =1)strcpy(user. name ,usersj. name );strcpy(user.id ,usersj.id );strcpy(user.password ,usersj.password);user.q in gjia

19、 =usersj.q in gjia;fwrite(&user,sizeof(user),1,fp);j+;fclose(fp);4) 登录界面int UsertestAdd()/simple登陆验证和注册用户功能默认用户User UserArr10=031010216, 神 1,031010216;int coun t=0;统计输入用户名和密码错误次数int i=0;遍历变量或找到用户的IDint k=1;表示已存在的用户数while(1)int n=0;标识是否匹配,若匹配,则退出外循环cout请输入您的管理账号 id;cout请输入密码 password;for(i=0;i10;i+)i

20、f(!strcmp(UserArri.id,id )&! strcmp(UserArri.password,password)n=1;break;if(n)break;i=0;coun t+;cout密码或账号错误,;if(cou nt=2|k=2)cout您今天已累计输错count 次-;cout您是否要注册用户?(否则您将自动退出系统) endl;coute ndl;cout输入数字1表示同意注册,其他则表示不同意条款 tip;if(tip=1)if(k=2)cout很遗憾,系统管理员用户总数达到上限,无法注册,若需注册,请联系管理员e ndl;return 0;elsecout请输入要注

21、册账号 id;strcpy(UserArrk+1.id ,id);cout请输入您的姓名endl;char n ame10;cinn ame;strcpy(UserArrk+1. name ,n ame);cout请输入您的密码 password;strcpy(UserArrk+1.password ,password);cout注册成功,系统正在为您跳转到登陆界面endl;int j=0;while(j1OOOOOOOOO)j+;coute ndl;+k;else return 0;coute ndl;cout*e ndl;e ndl;cout*e ndl;cout欢迎进UserArri.n

22、ame 入停车场后台管理系统coute ndl;return 1;5) 顾客界面void Customer(Car cars6)+ / *停车场*e ndl;while(1)存车endl;cout1cout2 取车endl;cout3 返回上一级endl;cout i;if(i3)cout您的操作非法!endl;con ti nue;if(i=1|i=2)switch(i)case 1:system (cis);cout*停车场*e ndl;En terpark(cars);Savecars(cars);cout退出? ( Y:是,N:不)endl;cout请输入:;cina;Brea ;ca

23、se 2:system (cls);cout*停车场*e ndl;int pnu mber,ptime;int pco un t=0;float cost;char note100;cout lice n pchepcolo;Leavepark(cars,l icen, pche,pcolo,p nu mber,ptime,cost ,no te);CarOutMe nu(lice n,pche,pcolo,p nu mber,ptime,cost, no te); system (cis);SearchCust(cl,lice n,cost,pco un t);Savecars(cars);

24、break;if(a=Y)system (cls); break;elsesystem (cls); break;6) 后台程序void Man age(Car cars6)coutWelcome!e ndl;while(1)cout1 初始停车场endl;cout2显示所有车辆信息e ndl;cout3输入管理员信息e ndl;cout4显示官理员信息 e ndl;cout5退出endl;cout i;if(i4)cout您的操作非法!endl;con ti nue;if(i=1|i=2|i=3|i=4)switch(i)case 1: system (cis);FourCarl n( ca

25、rs);cout退出? ( Y:是,N:不)endl;cout a;break;case 2:system (cis);Showcars(cars);break;case 3:system (cis);FourUserl n( users);break;case 4:system (cis);Showusers(users);break;if(a=Y)system (cis);break;elsesystem (cis);break;7) 主函数int mai n() UsertestAdd();Car cars6;int j;for(j=0;j6;j+)carsj.p nu mber=O;c

26、arsj.ptime=O;carsj.empty=0;strcpy(carsj.lice nse ,); /CustList *cl;/In itCustList(cl);Load(cars);while(1)cout*停车场*e ndl;cout1 客户界面endl;cout2 车管界面endl;cout3 退出endl;cout i;if(i3)cout您的操作非法!endl;con ti nue;system (cls);switch(i)case 1:Customer(cars);break;case 2:Ma nage(cars);break;case 3:exit(-1);五系统测

27、试(1 )登陆界面(2 )客户界面*匚User5;Aclmini5tratarXDe5ktopDebug sd.exeS30;&車.卡色不停号:颜N:R牌型的一 =ft-勺= 斗一 =& AAA?入输一工垦垦屈青 fse rsAd mini stratorDesktopDe bugXsd -eMe18s的is出 i-退 AM-1 输选輩1-(5 )车管界面8 *8 e-: o卡车黑Fl 1 CzXUsersXAd mi ni strato rDffsktopDebij gsd ,exe 息對贝员理e*停更暑:1C初显输显退选六总结这次通过课程设计首先加深啦对对C+程序设计这一课程所学内容进一步

28、理解和巩固,特别是对顺序进栈以及链式队列的结构还有保存程序到文件着几块,一次停车场系统的设计开发主要用的就是这几种,在进行系统开发的准备阶段,也就是进行需求分析阶段,对系统功能进行分析,并设计合理的模块化结构,提高了对问题分析和设计的能力。在进行系统开发的阶段能运用合理的控制流程编写 清晰高效的程序,也训练了 C+语言程序的调试能力,能将一个小型各级组织系统联调通过,基本上可 以完成每一项功能。 汽车进入停车场的信息、 离开停车场的信息以及通道上的信息都可以在程序上一一 实现。但是,该程序也有不足的地方,就是管理员账号无法修改登录密码还有一些兼容性不是很好, 过为了简便代码,所以未实现这一功能

29、。同时我觉得这一系统也一点可改进的方面在于还应该增加时间 的判断功能,即停车场内有可能有车辆停放时间超过一天。总之,在这次对于停车场管理系统的课程设计中。我的收获还是挺多的,在系统开发中,使得我将计算机课程所学知识与实际问题很好的相联接在了一起。七参考文献1 数据结构理论与实践杨永斌主编天津科学技术出版社2 Visual C+课程设计与系统开发案例伍俊良编著清华大学出版社3 C+程序设计谭浩强编著清华大学出版社4 求实科技.数据库通用模块及典型系统开发M. 人民邮电出版社,2006.5 陈刚.CSS标准网页布局开发指南M.清华大学出版社,2007. 尹堃.浅谈ASP.NET技术的应用J.硅谷动

30、力,2009,(07).7 蔡义忠在ASP.NET应用开发中验证码的设计J.黄冈职业技术学院学报,2009,(01).8 徐安凤,黄河涛.基于ASP.NET 2.0的文件上传研究J.福建电脑,2009,(03).9 胡晓庆.多层架构在 WE醉序设计中的应用J.兵工自动化,2007,(03).10 廖作斌,徐智.基于ASP.NET技术的数据库访问通用类设计J.福建电脑,2006,(11).11 程宴,徐征.ASP.NET的网站新闻管理系统的设计与开发J.舰船电子工程,2008,(08).附录:#in elude #in elude #in elude #in elude #in elude #d

31、efi ne PNUMBER 6using n amespaee std;struet Carchar lice nse10;char pehex in g10;char pcolor2;int pnu mber;int ptime;int empty;/标志位,有车为 1,无车为0;/顾客信息节点struct Customer char licen se10;车牌号char pchexi ng10;车的型号char pcolor2;车的颜色char date64; 停车的时刻 in t ptimecou nt;本次停车总时间顾客留言float cost;char no te1OO; Cust

32、omer *n ext;/顾客信息链表typedef Customer CustList;/管理员struct Userchar id10; 编号char name10;姓名char password10;留言int qin gjia;int empty;/ 标志位,有车为 1,无车为0;User users6;int UsertestAdd();void SaveUsers(User users6);void loa(User users6);void FourUserI n( User users6);void Load(Car cars6);qin gjia,i ntpnu mber,i

33、 ntvoid Showusers(User users6);void loafile(User users6,char n ame10,char id10,char password10, i nt empty);void Loadfile(Car cars6,charlicense10,charpchexing10,charpcolor2,intptime,i nt empty);void FourCarI n(Car Cars6);void En terpark(Car cars6);void Showcars(Car cars6);void Savecars(Car cars6);bo

34、ol lsEmpty(Car cars 6);void Prin t(char lice nse10,char pchex in g10,char pcolor2,i nt pnu mber,i nt ptime,float&cost);void Leavepark(Car cars6,char lice nse,char pchex in g,char pcolor,i nt &pnu mber,i nt& ptime,float & cost,char n ote100);void CarOutMe nu (char lice nse,char pchex in g,char pcolor

35、,i nt &pnu mber,i nt &ptime,float &cost,char no te100);void Man age(Car cars 6);void Ini tCustList(CustList *&cl);void CreateCustList(CustList *&cl,char *lice nse,char *pchex in g,char *pcolor);void GetDate(char tmp64);cost,i ntvoid SearchCust(CustList*&cl,char*lice nse,char*pchex in g,char*pcolor,f

36、loatpco un t);void Customer(Car cars6);void CustomerNote(char no te1OO);void EachGuide In for(Car c);/游客个人信息的自我查询void EachGuideI nfor(Car c)cout.setf(ios:left);cout.width(10);cout车牌号;cout.width(8);cout颜色;cout.width (8);cout车型;cout.width(8);cout车位号;cout.width(8);cout停车开始时间endl;cout.setf(ios:left);cou

37、t.width(10);coutc .licen se;cout.width(2);coutc.pcolor ;cout.width (10);coutc.pchex ing;cout.width(8);coutc.p nu mber;cout.width(8);coutc.ptimee ndl;/顾客留言void CustomerNote(char no te1OO)cout请留言:;cinno te;/存车void En terpark(Car cars6)char licen 10,pche10,pcolo2;cout lice n;cout pche;cout pcolo;while(

38、!lice n)cout lice n;cout pche;cout pcolo;/判断车库是否已经满了int i;for(i=0;i6;i+)if(carsi.empty=1)carsi.ptime +=5;elsecarsi.p nu mber =i+1;carsi.ptime=5;carsi.empty=1;strcpy(carsi.lice nse,lice n);return; /如果使用break,则只能跳出单层循环,/取车&pnu mber,i ntvoid Leavepark(Car cars6,charlicense,charpchexing10,charpcolor2,in

39、t& ptime,float & cost,char n ote100)/判断车位是否已空if(lsEmpty(cars)=1)cout停车场已没有车停放!请确定您是否停车。endl;return;/查找车位int sig n=1;标志位,车库有该车为 1,没有赋值为零,初始值为0int j;while(sig n)for(j=0;j6;j+)if(strcmp(carsj.lice nse,lice nse)=O) sig n=0;pnu mber=j;ptime=carsj.ptime;if(sig n)cout您刚才输入的车牌号不存在!endl;cout lice nse;if(sig

40、n=0)cout车已找到,请稍等。endl;pnu mber+=1;/system (cls);/延时for(j=0;j1000000000;j+);/车出库,将车位空出carsp nu mber-1.p nu mber =0;carsp nu mber-1.ptime=0;carsp nu mber-1.empty=0;strcpy(carsp nu mber-1.lice nse,);/由于floor,pnumber 与实际的二位数组有区别,加1/取车的菜单项&pnu mber,i ntvoid CarOutMe nu (char lice nse,charpchex in g10,cha

41、rpcolor2,i nt& ptime,float & cost,char n ote100)cout1输出凭据endl;cout2 留言endl;cout3 直接退出endl;while(1)couti;if(i3)cout您的操作非法!endl;con ti nue;switch(i)case 1:cout 现有汽车停车信息 endl;Prin t(lice nse,pchex in g,pcolor,p nu mber,ptime,cost);break; case 2:CustomerNote( no te);break;case 3:break;if(i=1|i=2) contin

42、ue;else break;/得到当前时间void GetDate(char tmp64)time_t t = time( 0 );strftime(tmp, sizeof(tmp), %Y/%m/%d %X %A,localtime(&t);bool lsEmpty(Car cars6)int j;for(j=1;j6;j+)if(carsj.empty=1) retur n false;return true;/逐条添加记录到 car.dat中void Savecars(Car cars6)FILE* fp = fope n(car.txt,wb);if(fp=NULL)coutCa n

43、not ope n this filee ndl; return;/to fileCar car;int j=0;while(j6)if(carsj.empty =1)strcpy(car.lice nse ,carsj.lice nse ); car.p nu mber =carsj.p nu mber ; car.ptime =carsj.ptime ;car.empty=carsj.empty ;/fwrite(&cars,sizeof(car),1,fp); /如果写成这样,每次都从 car00地址开始写入,回报原来的内容覆盖掉,加深了我对fwrite ()的理解fwrite(&car

44、,sizeof(car),1,fp);j+;fclose(fp);void SaveUsers(User users6)FILE* fp = fope n(user.txt,wb);if(fp=NULL)coutCa n not ope n this filee ndl;return;/to fileUser user;int j=0;while(j6)if(usersj.empty =1)strcpy(user. name ,usersj. name );strcpy(user.id ,usersj.id );strcpy(user.password ,usersj.password);us

45、er.q in gjia =usersj.q in gjia;/fwrite(&cars,sizeof(car),1,fp); /如果写成这样,每次都从 car00地址开始写入,回报原来的内容覆盖掉,加深了我对fwrite ()的理解fwrite(&user,sizeof(user),1,fp);j+;fclose(fp);void Load(Car cars6)FILE* fp = fope n(car.txt,rb);if(fp=NULL)coutca n not ope n this filee ndl; return;Car car;int n;while(!feof(fp)/read one car in formati onn = fread(&car,sizeof(car),1,fp);

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论