停车场管理系统C++课程设计

上传人:1888****888 文档编号:37210174 上传时间:2021-11-02 格式:DOC 页数:30 大小:320KB
收藏 版权申诉 举报 下载
停车场管理系统C++课程设计_第1页
第1页 / 共30页
停车场管理系统C++课程设计_第2页
第2页 / 共30页
停车场管理系统C++课程设计_第3页
第3页 / 共30页
资源描述:

《停车场管理系统C++课程设计》由会员分享,可在线阅读,更多相关《停车场管理系统C++课程设计(30页珍藏版)》请在装配图网上搜索。

1、计算机学院信息管理与信息系统专业 程序设计综合课程设计报告 - 停车场收费管理 (2011/2012学年 第一学期)学生姓名: 学生班级: 学生学号: 指导教师: 2011年 12月30日停车场收费管理目录 第一章课程设计目的和要求11.1课程设计的目的11.2课程设计的要求1第二章 课程设计任务内容22.1课程设计任务内容22.2课程设计任务内容阐述2第三章 课程设计详细说明33.1程序模块描述33.2性能描述33.3输入和输出43.4程序算法43.5流程逻辑53.5.1主体程序53.5.2用户登陆63.5.3信息查询73.6接口函数描述83.7数据文件存储说明83.8注释设计83.9程序运

2、行限制条件93.10测试计划9第四章 程序使用说明17第五章 课程设计心得与体会18附录1 参考文献19附录2程序清单:2027程序设计综合课程设计第一章 课程设计目的和要求1.1课程设计的目的C+程序设计是计算机科学与技术专业的基础课程,其实践性、应用性很强。实践教学环节是必不可少的一个重要环节。课程设计的目的是加深对理论教学内容的理解和掌握,使学生较系统的掌握程序设计及其在网络开发中的广泛应用,基本方法及技巧,为学生综合运用所学知识,利用软件工程为基础进行软件开发、并在实践应用方面打下一定基础。要求学生在设计指导教师的帮助下自行完成各个操作环节,并能实现且达到举一反三的目的,完成一个项目解

3、决一类问题。要求学生能够全面、深入理解和熟悉掌握所学内容,并能够用其分析、设计和解答类似问题;对此能够较好的理解和掌握,能够进行简单分析和判断;能编写出良好风格的程序;掌握C+程序设计的基本技能和面向对象的概念和方法。培养学生进行设计分析、设计方法、设计操作与测试、设计过程的观察、理解和归纳能力的提高。1.2课程设计的要求功能要求:用c/c+设计一个程序实现停车场管理系统,要求如下:1)用C语言实现系统;2)函数功能要划分好(结构化程序设计);3)界面友好(良好的人机交互),加必要的注释;4)提供程序测试方案。第2章 课程设计任务内容2.1课程设计任务内容设计一个程序实现停车场管理系统,管理人

4、员根据口令进入系统。 管理车位信息(车位编号,状态)和每小时的收费费率(货车7元/小时,客车5元/小时,轿车4元/小时,其他3元/小时,由停车时开始计时选择录入)。 停车时,建立对象,录入信息(车牌号,停泊位置,停泊开始时间);停车位第一个为空的位置,由程序查询自动给出车位号,如果车位已满要给出提示。 取车时,需要根据车辆停泊时间自动计算费用(半小时内以半价计算,超出半小时不足一小时按一小时计算)并显示在屏幕上。 可以随时根据车牌查询是否入库。可以随时根据车位查询该位置上的相关信息。 补充:要求可以将录入的信息储存到文件内并且能够随时查询信息。2.2课程设计任务内容阐述本程序为一个停车场计时收

5、费系统,它能实现的功能是将进入定义的车库的车辆信息存储,根据车辆类型(货车,客车,轿车,其他)来进行不同的计时收费,以及随时根据车牌查询是否入库,随时根据车位查询该位置上的相关信息,最后还要能够将保存的数据读取查询。程序需要我们做一个良好的人机交互界面,以及安全性等问题。第3章 课程设计详细说明3.1程序模块描述本程序主要有一下几个模块构成:1)用户登陆模块。此程序中先定义一个用户名和密码(无选择项可以改变,只有修改程序才能修改,用户名和密码事先存入文档“用户名和密码.txt”中),用户名和密码共有三次输入机会,正确则登陆停车场系统,错误则提示重新输入,如果三次都错误则自动退出停车场系统。2)

6、程序登陆后的选择模块以及信息存储模块。该模块给出四个选项(1.泊车操作 2.取车操作 3.查询信息 4. 退出 ),所以在本模块中添加对录入信息的储存模块,其中加入记录系统时间的模块(要求没有提到,方便信息查询自己添上的),在用户的选择中进入下一个模块的操作,其中第一个操作的信息将存储并保存进“车辆信息.txt”。3)信息查询模块。在这个模块中要将之前存储的信息“车辆信息.txt”中的信息输出到运行界面中,我利用二维数组来将信息从文件中输出,该模块中其他的选项为输出当前的车位状态以及根据车牌查询信息。4)计时收费模块。该模块中,定义系统时间函数,在本模块之前定义车辆分类收费模块,将这两个模块结

7、合求出车费输出到界面,其中小于30分钟的按半小时计算,大于30小于60分钟按一小时算。3.2性能描述1) 因为任务书中对该模块的要求不是很详细,所以我简单处理了一下,自己事先定义用户名和密码,设置三次输入机会,用户名和密码事先用文档存储,供使用者进入系统。2) 这个模块比较复杂,基本的用户登陆模块设计基本完善,在信息录入和存储方面也符合要求,本模块选项的功能也都能实现,而且后来加入的查询历史停车信息的模块也和程序要求符合。3) 该模块其实是最复杂的模块,由于刚开始没有建立查询历史信息的模块,所以不算完善,在建立历史信息查询模块后,完全符合要求,能够实现将第一个为空的位置,由程序查询自动给出车位

8、号,如果车位已满要给出提示。可以随时根据车牌查询是否入库。可以随时根据车位查询该位置上的相关信息。唯一的不足就是读取的信息量有限,因为时间紧迫,没找到合适的解决办法。4) 本模块的算法设计比较简单,基本的switch函数就能实现对车型的分类,时间则是导入的系统时间,时间差乘以单价就是最后收费,其中取车时,需要根据车辆停泊时间自动计算费用(半小时内以半价计算,超出半小时不足一小时按一小时计算)并显示在屏幕上,也顺利实现。3.3输入和输出1) 该模块中定义了全局变量,输入的信息即为事先设置的用户名和密码,输出的是停车场系统。2) 该模块中输入输出项都较多,在停车模块中要输入车牌号,车辆类型,自动输

9、出停车位以及停车时的系统时间;在取车模块中,因为任务书要求为根据车牌号取车,所以输入的为任意车牌号,输出的为停车费;在查询模块中,根据任务书要求,可以输入车牌号或者车位号,输出的为车位号或者车牌号;其余选项无输入项,输出项为回到系统或跳出系统(退出)。3) 该模块可以看着第二个模块的子模块,输入输出项也是第二个模块所陈述的。4) 该模块中处理信息都是自动的。其中输入项是开始的时间,为自动计时,输出的就是车辆收费。3.4程序算法本程序的的主函数就是一个美化的界面,主要功能靠其他的功能函数的调用来实现。下面具体说明:登陆函数中比较麻烦的用户名和密码做了提前的处理,用if语句判断函数,continu

10、e函数进入程序界面。在这个模块中,涉及的算法和函数比较多,首先是ofstream 函数存储停车信息,以及后面的ifstream 函数读取存储的信息;用string函数导入了系统时间,用if函数做选择项以及车辆类型的选择,以及数组定义time1在ifstream函数中导出时间。这个模块中的函数与第二模块相同,不再详说。这个模块中,主要是用position将时间设置为空,建立新的时间函数hour1和min1,用struct tm *newtime获取新的系统时间,再做判断。3.5流程逻辑3.1主体程序开始用户登陆退出查询信息泊车操作取车操作退出查询历史信息车牌号车牌号查询车位查询车牌号图3.1-主

11、体程序流程图3.2用户登陆开始输入用户名判断用户名NY输入密码N判断密码Y进入停车系统结束图3.2-用户登录流程图3.3信息查询开始选择输入1/2/3/44321查询历史信息退出查询车位查询车牌号导入存储的信息从录入信息中输出输出信息结束图3.3-信息查询流程图3.6接口函数描述此部分程序有一个主函数和一下子函数:1 int main 主函数2 void putcar(); 停车函数3 void takecar(); 取车函数4 string time1 时间函数5 ofstream和ifstream 存储和读取信息函数6 int juge 判断车位函数7 double charge 收费函数

12、8 void search_pos 车位查询函数3.7数据文件存储说明由于任务要求不是很详细,本程序只用到了两个数据文件:“用户名和密码.txt”、“车辆信息.txt”,其中“用户名和密码.txt”文档中的信息为提前输入的,使用者用于输入账号和密码进入系统,“车辆信息.txt”文档为系统自动生成的文档,用于存放和读取车辆信息,进行查询使用。3.8注释设计注释主要是利于自己和别人来了解程序编写的思路以及运行方法,下面说一下本程序中的注释:1) 在登陆模块加的注释为了提醒大家开始了用户登陆界面的设计,以及其中用户名和密码的定义。2) 主程序开始时用注释提示了一下,在录入信息模块是用到了系统信息,加

13、入了注释,方便理解,以及保存车辆信息时的函数也加入注释,方便自己改错和理解。3) 在查询信息模块里,主要注释提示了存储数据的输出形式,用到了二维数组,以及查询历史信息的函数。4) 最后的模块中用注释解释了全局变量的清空以及停车时间和车费计算函数的提示,最后是查询函数的注释。3.9程序运行限制条件本程序在硬件方面的要求比较低,软件要求环境为Microsoft Visual C+6.0。在程序设计时,感觉程序在用户登陆时不够完善,不能灵活输入用户名,只能用事先存好的用户名和密码;再就是在信息输入时不够智能,当然这个很难;再就是存储信息时不能加入汉字,如果加入会导致读取数据时异常麻烦,最后是读取数据

14、时,由于用的数组,信息量有限,超出不能继续存储和读取。3.10测试计划在程序测试阶段,主要是看程序能不能运行以及能不能达到任务书所要求的功能,所以要对出现的错误进行分析和改正,并且完善自己的程序,下面为程序运行截图: 图3.4为用户名或者密码输入错误截图 图3.5为用户名和密码正确进入系统的截图 图3.6为输入车牌号的界面图3.7为车辆类型选择界面 图3.8为查询信息界面图3.9为按车牌查询界面图3.10为按车位查询界面图3.11为历史信息查询界面图3.12为查询信息的退出界面图3.13为不同时间的收费界面 图3.14为存储信息的文档的截图第4章 程序使用说明程序说明如下:1) 登陆系统时先打

15、来“用户名和密码.txt”文档浏览用户名和密码,输入其中的用户名和密码进入系统。2) 在进入系统以后,严格按照系统要求来使用。第5章 课程设计心得与体会经过一个学期对C+程序设计的学习,我学习到了基本的理论知识,了解到了C+语言程序设计的思想,这些知识都为我的课程实践和进一步的学习打下了坚实的基础。通过C+课程设计,一方面是为了检查这一个学期来计算机语言的学习成果,另一方面也是为了让我们进一步掌握和熟练地运用它,与此同时,也能够让我们认清自己在C+学习方面的不足之处和薄弱环节,并加以弥补和巩固。通过对教学管理系统的程序设计,进一步的巩固了用C+语言编写程序的能力,并且利于更好的掌握C+语言!在

16、为期近两周的C+课程设计中,我体会颇多,学到了很多东西。我懂得了用Microsoft Visual C+ 6.0对程序进行调试,我加强了对C+程序设计这门课程的认识,并且复习了自己以前学习到的知识,自己的逻辑思考能力也提高不少。这些都使得我对计算机语言的学习有了更深入的认识!总之,通过这次课程设计,我收获颇丰,相信会为自己以后的学习和工作带来很大的好处。最重要的还是激发了我编程的兴趣和热情,让我从一个只懂理论变成了能做一些小型程序。整体地评价这次课程设计,我认为收获很大,正如上面所说的那样,通过课程设计,既复习了以前的旧知识,又学到了一些新的知识。像停车场管理系统这样的应用程序的设计和创建,经

17、历了平时在课堂和考试中不会出现的难题和考验。而这些问题,又都是课本上很少提到的、更深一层的实践与知识相结合的问题,这并不是我们平时只靠课本,就可以轻易解决的。所以,锻炼了我们面对难题,学会用已掌握的知识去解决具体问题的能力,进一步培养了独立思考问题和解决问题的能力。特别是学会了在Visual C+中如何调试程序的方法。当然,老师的指导和同学的帮助也是不可忽视的,他们给了我许多提示和帮助,教会了我编译复杂程序的方法。总而言之,这次C+程序设计实践让我收获很大。附录1 参考文献 1 谭浩强.c+程序设计.清华大学出版社.出版于2004年6月. 2 谭浩强.C程序设计(第三版).清华大学出版社.出版

18、于2005年7月. 3 谭浩强.c+程序设计实践指导.清华大学出版社. 出版于2005年7月. 附录2 程序清单:#include #include #include #include #includeusing namespace std; class car public: char no9; int pos; double fee; void putcar(); void takecar(); ; class Time public: int hour; int min; void getime(); ; int i,poi; int position100=0;/全局变量 car ca

19、rin100; Time catime100; int juge(); int comp(); void search_no(); void search_pos(); void main() /用户登录 const char ha10=wangbing;/管理员用户名 const char hb10=1427;/管理员密码 char cn10,cm10; int ci=0; while(1) coutcn; if(strcmp(ha,cn) cout输入错误!n; ci+; if(ci=3) return; continue; else coutcm; if(!strcmp(hb,cm) b

20、reak; else cout密码错误!n; ci+; if(ci=3) return; continue; /主程序 int k; cout请选择: nnt nnt 1.泊车操作 nnt 2.取车操作 nnt 3.查询信息 nnt 4. 退出 nntnn; ofstream outfile(车辆信息.txt,ios:app);if(! outfile)cerropen error!endl;exit(1);/ifstream infile(车辆信息.txt,ios:in);/if(! outfile)/cerropen error!k) if(k=1) i=juge(); coutcarin

21、i.no; carini.putcar(); cout请选择: nnt nnt 1.泊车操作 nnt 2.取车操作 nnt 3.查询信息 nnt 4. 退出 nntnn;string time1;time_t t; time(&t); time1=ctime(&t); couttime1;/导入系统时间outfilecarini.no time1endl;/保存车辆信息。continue; if(k=2) poi=comp(); carinpoi.takecar(); cout请选择: nnt nnt 1.泊车操作 nnt 2.取车操作 nnt 3.查询信息 nnt 4. 退出 nntnn;c

22、ontinue; if(k=3) int x; while(1) coutnntnnt查询车牌号请选择1,查询车位请选择2,查询历史信息请选择3,退出请选择4: x; if(x=1) search_no();break; else if(x=2) search_pos();break; else if(x=3)string a,time11005;/定义二维数组读取数据int i,j,m,n;ifstream infile(车辆信息.txt,ios:in);if(! infile)cerropen error!a;for(i=0;i5;i+)for(m=0;mtime1mi;cout ;cou

23、ta ;for(j=0;j5;j+)for(n=0;n100;n+)couttime1nj ;/将存储的数据用数组形式输出/查询历史信息else if(x=4)break;else coutt选择错误,请重新选择:; cout请选择: nnt nnt 1.泊车操作 nnt 2.取车操作 nnt 3.查询信息 nnt 4. 退出 nntnn; outfile.close(); int juge() /判断出第一个空的车位 int j=0; while(positionj=1&j100) j+; if(j100) positionj=1; return j; int comp() char ch9

24、; coutch; for(int k=0;k100;k+) if(!strcmp(ch,carink.no) if(positioncarink.pos-1=1) return (carink.pos-1); break; if(k=100) return k; void car:putcar() int t; while(1) coutnntnnt货车请输入1,客车请输入2,轿车请输入3,其他请输入4: t; if(t=1) carini.fee=7.0;break; else if(t=2) carini.fee=5.0;break; else if(t=3)carini.fee=4.0

25、;break; else if(t=4)carini.fee=4.0;break;cout输入错误!请重新输入:n; if(i=100) cout对不起,车位已满!n; carini.pos=i+1; /自动输出车位号 coutnnt;coutnnt车位号:carini.posendl; catimei.getime(); coutnnt现在时间是:catimei.hour:catimei.minendl; coutnntendl; void car:takecar() int hour1,min1; double charge; if(poi100) positionpoi=0;/重新设置为

26、空位 hour1=catimepoi.hour; min1=catimepoi.min; catimepoi.getime(); hour1=catimepoi.hour-hour1; min1=catimepoi.min-min1; if(min130)/计算出停车时间 charge=carinpoi.fee*hour1+carinpoi.fee*0.5; else charge=carinpoi.fee*hour1+carinpoi.fee; coutt车费为:charge元.n; /计算出车费输出 else couttm_hour; min=newtime-tm_min; void search_no() int poi=comp(); if(poi100) coutt此车已入库,车位为:poi+1endl; else coutt此车没有入库。n; /根据车牌号查询是否入库 void search_pos() int loc; coutloc; if(positionloc-1=1) coutt车牌号:carinloc-1.noendl; coutt停车时间:catimeloc-1.hour:catimeloc-1.minendl;/停车直到现在的时间 else coutt此车位无车!; /程序结束。

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

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

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


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