停车场管理系统设计.docx

上传人:牧羊曲112 文档编号:3284284 上传时间:2023-03-12 格式:DOCX 页数:33 大小:48.40KB
返回 下载 相关 举报
停车场管理系统设计.docx_第1页
第1页 / 共33页
停车场管理系统设计.docx_第2页
第2页 / 共33页
停车场管理系统设计.docx_第3页
第3页 / 共33页
停车场管理系统设计.docx_第4页
第4页 / 共33页
停车场管理系统设计.docx_第5页
第5页 / 共33页
亲,该文档总共33页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《停车场管理系统设计.docx》由会员分享,可在线阅读,更多相关《停车场管理系统设计.docx(33页珍藏版)》请在三一办公上搜索。

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

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

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

4、车牌号的唯一性。 删除功能:主要实现对已添加的车辆记录进行删除。如果当前系统中没有相应的人员记录,则提示“记录为空!”并返回操作。 统计功能:能统计停车场中车辆的总数、按车型、按到达时间进行统计等。 保存功能:可将当前系统中各类人员记录和休假记录存入文件中,存入方式任意。 读取功能:可将保存在文件中的信息读入到当前系统中,供用户进行使用。 3系统运行环境 (1)硬件环境。联想 双核处理器,2G内存,2G独立显卡,80G硬盘。 (2)软件环境。Microsoft Visual C+6.0,WindosXP系统。 - - 2 三 总体设计 设计思想 本停车场n个车位, 所以可以用数组表示,每辆车用

5、一结构体表示,包括车牌号、颜色、车型、 车位号、停车时间和停车标志位。当车入库时,将更改信息,当车出库时,将信息写入car.dat中。再次进入该系统时,还用这个该数组,来接受car.dat数据的读入,便于用户以后的操作,防止停车信息的流失。此外,由于需要显示所有汽车的停车信息,所以我们又加了一个顾客结构体,一个顾客链表,当存车时,新建用户节点,并使用头插法,插于链表,填写用户的相关信息。当出库时,查找相应节点,补充完整用户信息,包括。当退出系统后,将已出库的汽车的车主信息,写入历史文件list.dat中,便于管理员的查询。将还未取走车的车主的信息存入临时文件temp.dat中,防止系统关闭后数

6、据信息的丢失,车主取车时找不到车。同时,还要将成员信息写入临时文件user.dat; 数据结构 结构体Car,保存每个车位的停车信息。 结构体 Gustomer,保存每个客户的信息。 结构体User,保存管理员信息。 数组Cars,保存整个停车状况。 数组 user; 链表CustList,保存所有客户的信息,包括车已取走,和车未取走的。 程序模块 此停车场管理系统,主要分为以下若干模块: 首先定义用来模拟停车的数组,用来保存顾客信息的链表,保存管理员信息的结构以及全局变量,然后编写主函数,在此主函数中实现对其它各个模块的调用。在主函数中首先调用option函数,出现欢迎用户使用的界面,然后提

7、示用户进入此停车场管理系统后,再出现一个供用户选择的主界面。当用户选择顾客界面时,跳入到顾客界面,再次界面,用户可以选择存车、取车及返回主页面。在用户的选择过程中,程序又分别存车,取车函数调用以及退出程序这三个函数模块。其中,当存车时,调用了显示空闲车位状态的信息函数,并调用了保存car.dat的函数;当取车时,调用显示本次停车情况以及消费金额的函数, 并调用了保存car.dat的函数。建立user.dat存放管理人员的信息。最后,在主界面选择“退出”,保存历史文件list.dat和临时文件temp.dat。当用户选择车管系统时,调用管理员身份验证函数,从而跳入车管界面,然后相应的功能函数,实

8、现查询所有停车信息。 各模块之间的调用关系以及算法设计 下图是个模块之间的调用关系: - - 3 欢迎页面 进入主页面 客户界面 存 取返车 车 回界 界主面 面 页 退出 退出 输入车 输入车牌号 牌号 否 车牌 显客返有效 示 户回凭 留主据 言 页 是 满 显示车位,客户 选择 退出 停车场管理员界面 初车输显退始辆 入示出 停信管管车息 理理场 员员信信息 息 注: 在取、存操作后,会自动保存信息到car.dat中。 在每次退出系统时,会保存list.dat和temp.dat。 - - 4 函数设计 int UsertestAdd; void SaveUsers(User users6

9、); void loa(User users6); void FourUserIn(User users6); void Load(Car cars6); void Showusers(User users6); void loafile(User users6,char name10,char id10,char password10, int qingjia,int empty); void Loadfile(Car cars6,char license10,char pchexing10,char pcolor2,int pnumber,int ptime,int empty); voi

10、d FourCarIn(Car Cars6); void Enterpark(Car cars6); void Showcars(Car cars6); void Savecars(Car cars6); bool IsEmpty(Car cars6); void Print(char license10,char pchexing10,char pcolor2,int pnumber,int ptime,float &cost); void Leavepark(Car cars6,char license,char pchexing,char pcolor,int &pnumber,int

11、&ptime,float &cost,char note100); void CarOutMenu(char license,char pchexing,char pcolor,int &pnumber,int &ptime,float &cost,char note100); void Manage(Car cars6); void InitCustList(CustList *&cl); void CreateCustList(CustList *&cl,char *license,char *pchexing,char *pcolor); void GetDate(char tmp64)

12、; void SearchCust(CustList *&cl,char *license,char *pchexing,char *pcolor,float cost,int pcount); void Customer(Car cars6); void CustomerNote(char note100); void EachGuideInfor(Car c); - - 5 四 详细设计 实现概要设计中定义的所有数据类型,对主要操作写出实现算法,对主程序和其他模块写出算法,写出函数的调用关系。 数据类型 结构体Car,保存每个车位的停车信息。 struct Car char license

13、8; int pnumber; char pcolor2; char pchexing10; int ptime; int empty;/标志位,有车为1,无车为0 ; struct Customer char license10;/车牌号 char pchexing10;/车的型号 char pcolor2;/车的颜色 char date64;/停车的时刻 int ptimecount;/本次停车总时间 float cost; char note100;/顾客留言 ; struct User char id10;/编号 Customer *next; char name10;/姓名 char

14、 password10;/留言 int qingjia; - - 6 int empty;/标志位,有车为1,无车为0 ; 数组Cars,保存整个停车状况。 数组User,保存整个管理人员的信息。 Car CarsPNUMBER; 链表,保存所有客户的信息,包括车已取走,和车未取走的。 typedef struct Snode CustList; 主要操作 1) 存车 void Enterpark(Car cars6) coutinput your license,chexing,colorlicenpcolopche; while(!licen) coutinput your license

15、,chexing,colorlicenpcolopche; /判断车库是否已经满了 int i; for(i=0;i6;i+) if(carsi.empty=1) carsi.ptime +=5; else carsi.pnumber =i+1; carsi.ptime=5; carsi.empty=1; strcpy(carsi.license,licen); return; /如果使用break,则只能跳出单层循环, - - 7 2) 取车 void Leavepark(Car carsFLOORPNUMBER,char license,int &floor,int &pnumber,in

16、t &ptime,char note100) /判断车位是否已空 if(IsEmpty(cars)=1) cout停车场已没有车停放!请确定您是否停车。endl; return; /查找车位 int sign=1;/标志位,车库有该车为1,没有赋值为零,初始值为0 int 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您刚才输入的车牌

17、号不存在!endl; coutlicense; if(sign=0) - - 8 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.li

18、cense, ); 3)添加管理员的信息到User.txt中 void SaveUsers(User users6) FILE* fp = fopen(user.txt,wb); if(fp=NULL) coutCan not open this fileendl; 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

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

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

21、dl; return 0; else cout请输入要注册账号id; strcpy(UserArrk+1.id ,id); cout请输入您的姓名name; strcpy(UserArrk+1.name ,name); cout请输入您的密码password; strcpy(UserArrk+1.password ,password); cout注册成功,系统正在为您跳转到登陆界面endl; int j=0; while(j1000000000)j+; coutendl; +k; else return 0; coutendl; cout*endl; - - 11 cout欢迎进 UserAr

22、ri.name 入停车场后台管理系统endl; cout*endl; coutendl; return 1; 5)顾客界面 void Customer(Car cars6) cout*停车场*endl; while(1) cout1 存车endl; cout2 取车endl; cout3 返回上一级endl; couti; if(i3) cout您的操作非法!endl; continue; if(i=1|i=2) switch(i) case 1: system (cls); cout*停车场*endl; Enterpark(cars); Savecars(cars); cout退出?endl

23、; couta; Brea; - - 12 case 2: system (cls); cout*停车场*endl; int pnumber,ptime; int pcount=0; float cost; char note100; coutlicenpchepcolo; Leavepark(cars,licen,pche,pcolo,pnumber,ptime,cost,note); CarOutMenu(licen,pche,pcolo,pnumber,ptime,cost,note); system (cls); /SearchCust(cl,licen,cost,pcount); S

24、avecars(cars); break; if(a=Y) system (cls); break; else system (cls); break; 6)后台程序 void Manage(Car cars6) coutWelcome!endl; while(1) - - 13 cout1 初始停车场endl; cout2 显示所有车辆信息endl; cout3 输入管理员信息 endl; cout4 显示管理员信息endl; cout5 退出endl; couti; if(i4) cout您的操作非法!endl; continue; if(i=1|i=2|i=3|i=4) switch(i

25、) case 1: system (cls); FourCarIn(cars); cout退出?endl; couta; break; case 2: system (cls); Showcars(cars); break; case 3: system (cls); FourUserIn(users); - - 14 break; case 4: system (cls); Showusers(users); break; if(a=Y) system (cls); break; else system (cls); break; 7)主函数 int main UsertestAdd; Ca

26、r cars6; int j; for(j=0;j6;j+) carsj.pnumber=0; carsj.ptime=0; carsj.empty=0; - - 15 strcpy(carsj.license , ); /CustList *cl; /InitCustList(cl); Load(cars); while(1) - - 16 cout*停车场*endl; cout1 客户界面endl; cout2 车管界面endl; cout3 退出endl; couti; if(i3) cout您的操作非法!endl; continue; system (cls); switch(i) c

27、ase 1:Customer(cars); break; case 2:Manage(cars); break; case 3:exit(-1); 五 系统测试 登陆界面 客户界面 - - 17 存车 取车 - - 18 车管界面 - - 19 六 总结 这次通过课程设计首先加深啦对对C+程序设计这一课程所学内容进一步理解和巩固,特别是对顺序进栈以及链式队列的结构还有保存程序到文件着几块,一次停车场系统的设计开发主要用的就是这几种,在进行系统开发的准备阶段,也就是进行需求分析阶段,对系统功能进行分析,并设计合理 的模块化结构,提高了对问题分析和设计的能力。在进行系统开发的阶段能运用合理的控制流

28、程编写清晰高效的程序,也训练了C+语言程序的调试能力,能将一个小型各级组织系统联调通过,基本上可以完成每一项功能。汽车进入停车场的信息、离开停车场的信息以及通道上的信息都可以在程序上一一实现。但是,该程序也有不足的地方,就是管理员账号无法修改登录密码还有一些兼容性不是很好,不过为了简便代码,所以未实现这一功能。同时我觉得这一系统也一点可改进的方面在于还应该增加时间的判断功能,即停车场内有可能有车辆停放时间超过一天。 总之,在这次对于停车场管理系统的课程设计中。我的收获还是挺多的,在系统开发中,使得我将计算机课程所学知识与实际问题很好的相联接在了一起。 - - 20 七 参考文献 1数据结构理论

29、与实践 杨永斌主编 天津科学技术出版社 2Visual C+课程设计与系统开发案例 伍俊良编著 清华大学出版社 3C+程序设计 谭浩强编著 清华大学出版社 4求实科技.数据库通用模块及典型系统开发M. 人民邮电出版社, 2006. 5陈刚. CSS标准网页布局开发指南M. 清华大学出版社, 2007. 6尹堃.浅谈ASP.NET技术的应用J.硅谷动力, 2009,(07). 7蔡义忠.在ASP.NET应用开发中验证码的设计J.黄冈职业技术学院学报,2009,(01). 8徐安凤,黄河涛.基于ASP.NET 2.0的文件上传研究J.福建电脑, 2009,(03). 9胡晓庆.多层架构在WEB程序

30、设计中的应用J.兵工自动化, 2007,(03). 10廖作斌,徐智.基于ASP.NET技术的数据库访问通用类设计J.福建电脑,2006,(11). 11程宴,徐征. ASP.NET的网站新闻管理系统的设计与开发J.舰船电子工程,2008,(08). - - 21 附录: #include #include #include #include #include #define PNUMBER 6 using namespace std; struct Car char license10; char pchexing10; char pcolor2; int pnumber; int ptim

31、e; int empty;/标志位,有车为1,无车为0 ; / /顾客信息节点 struct Customer char license10;/车牌号 char pchexing10;/车的型号 char pcolor2;/车的颜色 char date64;/停车的时刻 int ptimecount;/本次停车总时间 float cost; char note100;/顾客留言 Customer *next; ; /顾客信息链表 typedef Customer CustList; /管理员 struct User char id10;/编号 char name10;/姓名 char pass

32、word10;/留言 int qingjia; int empty;/标志位,有车为1,无车为0 ; User users6; - - 22 int UsertestAdd; void SaveUsers(User users6); void loa(User users6); void FourUserIn(User users6); void Load(Car cars6); void Showusers(User users6); void loafile(User users6,char name10,char id10,char password10, int qingjia,int

33、 empty); void Loadfile(Car cars6,char license10,char pchexing10,char pcolor2,int pnumber,int ptime,int empty); void FourCarIn(Car Cars6); void Enterpark(Car cars6); void Showcars(Car cars6); void Savecars(Car cars6); bool IsEmpty(Car cars6); void Print(char license10,char pchexing10,char pcolor2,int

34、 pnumber,int ptime,float &cost); void Leavepark(Car cars6,char license,char pchexing,char pcolor,int &pnumber,int &ptime,float &cost,char note100); void CarOutMenu(char license,char pchexing,char pcolor,int &pnumber,int &ptime,float &cost,char note100); void Manage(Car cars6); void InitCustList(Cust

35、List *&cl); void CreateCustList(CustList *&cl,char *license,char *pchexing,char *pcolor); void GetDate(char tmp64); void SearchCust(CustList *&cl,char *license,char *pchexing,char *pcolor,float cost,int pcount); void Customer(Car cars6); void CustomerNote(char note100); void EachGuideInfor(Car c); /

36、游客个人信息的自我查询 void EachGuideInfor(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); cout.width(10); coutc.license; cout.width(2); coutc.pcolor ; cout.width (10); coutc.pchexing

37、; cout.width(8); coutc.pnumber; cout.width(8); coutc.ptimeendl; /顾客留言 void CustomerNote(char note100) - - 23 coutnote; /存车 void Enterpark(Car cars6) char licen10,pche10,pcolo2; coutlicen; coutpche; cout pcolo; while(!licen) coutlicen; coutpche; cout pcolo; /判断车库是否已经满了 int i; for(i=0;i6;i+) if(carsi.

38、empty=1) carsi.ptime +=5; else carsi.pnumber =i+1; carsi.ptime=5; carsi.empty=1; strcpy(carsi.license,licen); return; /如果使用break,则只能跳出单层循环, /取车 void Leavepark(Car cars6,char license,char pchexing10,char pcolor2,int &pnumber,int &ptime,float &cost,char note100) /判断车位是否已空 if(IsEmpty(cars)=1) cout停车场已没有车停放!

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号