产品

钱柜娱乐停车场管理系统C++课程设计(1)

  计算机学院信息管理与信息系统专业《程序设计综合课程设计》报告 停车场收费管理(2011/2012 学年 第一学期) 学生姓名: 学生班级: 学生学号: 指导教师: 2011 第一章课程设计目的和要求....................................................................................... 1.1课程设计的目的 1.2课程设计的要求 第二章课程设计任务内容 2.1课程设计任务内容 2.2课程设计任务内容阐述 第三章课程设计详细说明 3.1程序模块描述 3.2性能描述 3.3输入和输出 3.4程序算法 3.5流程逻辑 3.5.1主体程序 3.5.2用户登陆 3.5.3信息查询 3.6接口函数描述 3.7数据文件存储说明 3.8注释设计 3.9程序运行限制条件 3.10测试计划 第四章程序使用说明 17第五章 课程设计心得与体会 18附录1 参考文献 19附录2 程序清单: 20程序设计综合课程设计 第一章课程设计目的和要求 1.1 课程设计的目的 C++程序设计是计算机科学与技术专业的基础课程,其实践性、应用性很强。 实践教学环节是必不可少的一个重要环节。 课程设计的目的是加深对理论教学内容的理解和掌握,使学生较系统的掌握 程序设计及其在网络开发中的广泛应用,基本方法及技巧,为学生综合运用所学 知识,利用软件工程为基础进行软件开发、并在实践应用方面打下一定基础。要 求学生在设计指导教师的帮助下自行完成各个操作环节,并能实现且达到举一反 三的目的,完成一个项目解决一类问题。要求学生能够全面、深入理解和熟悉掌 握所学内容,并能够用其分析、设计和解答类似问题;对此能够较好的理解和掌 握,能够进行简单分析和判断;能编写出良好风格的程序;掌握C++程序设计的 基本技能和面向对象的概念和方法。培养学生进行设计分析、设计方法、设计操 作与测试、设计过程的观察、理解和归纳能力的提高。 1.2 课程设计的要求 功能要求:用c/c++设计一个程序实现停车场管理系统,要求如下: 语言实现系统;2)函数功能要划分好(结构化程序设计); 3)界面友好(良好的人机交互),加必要的注释; 4)提供程序测试方案。 程序设计综合课程设计 第二章课程设计任务内容 2.1 课程设计任务内容 设计一个程序实现停车场管理系统,管理人员根据口令进入系统。 管理车位信息(车位编号,状态)和每小时的收费费率(货车 元/小时,客车5 元/小时,轿车4 元/小时,其他3 元/小时,由停车时开始计时选择录入)。 停车时,建立对象,录入信息(车牌号,停泊位置,停泊开始时间);停车位第 一个为空的位置,由程序查询自动给出车位号,如果车位已满要给出提示。 取车时,需要根据车辆停泊时间自动计算费用(半小时内以半价计算,超出半小 时不足一小时按一小时计算)并显示在屏幕上。 可以随时根据车牌查询是否入 库。可以随时根据车位查询该位置上的相关信息。 补充:要求可以将录入的信息储存到文件内并且能够随时查询信息。 2.2 课程设计任务内容阐述 本程序为一个停车场计时收费系统,它能实现的功能是将进入定义的车库的 车辆信息存储,根据车辆类型(货车,客车,轿车,其他)来进行不同的计时收 费,以及随时根据车牌查询是否入库,随时根据车位查询该位置上的相关信息, 最后还要能够将保存的数据读取查询。程序需要我们做一个良好的人机交互界 面,以及安全性等问题。 程序设计综合课程设计 第三章课程设计详细说明 3.1 程序模块描述 本程序主要有一下几个模块构成: 1)用户登陆模块。此程序中先定义一个用户名和密码(无选择项可以改变, 只有修改程序才能修改,用户名和密码事先存入文档“用户名和密码.txt”中), 用户名和密码共有三次输入机会,正确则登陆停车场系统,错误则提示重新输入, 如果三次都错误则自动退出停车场系统。 2)程序登陆后的选择模块以及信息存储模块。该模块给出四个选项(1.泊 车操作 2.取车操作 3.查询信息 退出),所以在本模块中添加对录入信息的 储存模块,其中加入记录系统时间的模块(要求没有提到,方便信息查询自己添 上的),在用户的选择中进入下一个模块的操作,其中第一个操作的信息将存储 并保存进“车辆信息.txt”。 3)信息查询模块。在这个模块中要将之前存储的信息“车辆信息.txt”中 的信息输出到运行界面中,我利用二维数组来将信息从文件中输出,该模块中其 他的选项为输出当前的车位状态以及根据车牌查询信息。 4)计时收费模块。该模块中,定义系统时间函数,在本模块之前定义车辆 分类收费模块,将这两个模块结合求出车费输出到界面,其中小于 30 分钟的按 半小时计算,大于30 小于60 分钟按一小时算。 3.2 性能描述 1)因为任务书中对该模块的要求不是很详细,所以我简单处理了一下,自 己事先定义用户名和密码,设置三次输入机会,用户名和密码事先用文档存储, 供使用者进入系统。 2)这个模块比较复杂,基本的用户登陆模块设计基本完善,在信息录入和 存储方面也符合要求,本模块选项的功能也都能实现,而且后来加入的查询历史 停车信息的模块也和程序要求符合。 3)该模块其实是最复杂的模块,由于刚开始没有建立查询历史信息的模块, 程序设计综合课程设计 所以不算完善,在建立历史信息查询模块后,完全符合要求,能够实现将第一个为空的位置,由程序查询自动给出车位号,如果车位已满要给出提示。可以随时 根据车牌查询是否入库。可以随时根据车位查询该位置上的相关信息。唯一的不 足就是读取的信息量有限,因为时间紧迫,没找到合适的解决办法。 4)本模块的算法设计比较简单,基本的 switch 函数就能实现对车型的分 类,时间则是导入的系统时间,时间差乘以单价就是最后收费,其中取车时,需 要根据车辆停泊时间自动计算费用(半小时内以半价计算,超出半小时不足一小 时按一小时计算)并显示在屏幕上,也顺利实现。 3.3 输入和输出 1)该模块中定义了全局变量,输入的信息即为事先设置的用户名和密码, 输出的是停车场系统。 2)该模块中输入输出项都较多,在停车模块中要输入车牌号,车辆类型, 自动输出停车位以及停车时的系统时间;在取车模块中,因为任务书要求为根据 车牌号取车,所以输入的为任意车牌号,输出的为停车费;在查询模块中,根据 任务书要求,可以输入车牌号或者车位号,输出的为车位号或者车牌号;其余选 项无输入项,输出项为回到系统或跳出系统(退出)。 3)该模块可以看着第二个模块的子模块,输入输出项也是第二个模块所陈 4)该模块中处理信息都是自动的。其中输入项是开始的时间,为自动计时,输出的就是车辆收费。 3.4 程序算法 本程序的的主函数就是一个美化的界面,主要功能靠其他的功能函数的调用 来实现。下面具体说明: 登陆函数中比较麻烦的用户名和密码做了提前的处理,用if 语句判断函数, continue 函数进入程序界面。 程序设计综合课程设计 在这个模块中,涉及的算法和函数比较多,首先是ofstream函数存储停车 信息,以及后面的 ifstream 函数读取存储的信息;用 string 函数导入了系统 时间,用if 函数做选择项以及车辆类型的选择,以及数组定义time1 在ifstream 函数中导出时间。 这个模块中的函数与第二模块相同,不再详说。 这个模块中,主要是用position 将时间设置为空,建立新的时间函数hour1 和min1,用struct tm *newtime 获取新的系统时间,再做判断。 3.5 流程逻辑 3.1 主体程序 图3.1-主体程序流程图 开始 用户登陆 3.2用户登陆 图3.2-用户登录流程图 输入用户名 判断用户名 输入密码 判断密码 开始结束 程序设计综合课程设计 3.3信息查询 图3.3-信息查询流程图 选择输入1/2/3/4 输出信息开始 结束程序设计综合课程设计 3.6接口函数描述 此部分程序有一个主函数和一下子函数: intmain 主函数 voidputcar(); 停车函数 voidtakecar(); 取车函数 stringtime1 时间函数 ofstream和ifstream 存储和读取信息函数 intjuge 判断车位函数 doublecharge 收费函数 voidsearch_pos 车位查询函数 3.7 数据文件存储说明 由于任务要求不是很详细,本程序只用到了两个数据文件:“用户名和 密码.txt”、“车辆信息.txt”,其中“用户名和密码.txt”文档中的信息为 提前输入的,使用者用于输入账号和密码进入系统,“车辆信息.txt”文档 为系统自动生成的文档,用于存放和读取车辆信息,进行查询使用。 3.8 注释设计 注释主要是利于自己和别人来了解程序编写的思路以及运行方法,下面说一 下本程序中的注释: 1)在登陆模块加的注释为了提醒大家开始了用户登陆界面的设计,以及其 中用户名和密码的定义。 2)主程序开始时用注释提示了一下,在录入信息模块是用到了系统信息, 加入了注释,方便理解,以及保存车辆信息时的函数也加入注释,方便自己改错 和理解。 3)在查询信息模块里,主要注释提示了存储数据的输出形式,用到了二维 程序设计综合课程设计 数组,以及查询历史信息的函数。4)最后的模块中用注释解释了全局变量的清空以及停车时间和车费计算函 数的提示,最后是查询函数的注释。 3.9 程序运行限制条件 本程序在硬件方面的要求比较低,软件要求环境为 Microsoft Visual C++6.0。 在程序设计时,感觉程序在用户登陆时不够完善,不能灵活输入用户名,只 能用事先存好的用户名和密码;再就是在信息输入时不够智能,当然这个很难; 再就是存储信息时不能加入汉字,如果加入会导致读取数据时异常麻烦,最后是 读取数据时,由于用的数组,信息量有限,超出不能继续存储和读取。 3.10 测试计划 在程序测试阶段,主要是看程序能不能运行以及能不能达到任务书所要求的 功能,所以要对出现的错误进行分析和改正,并且完善自己的程序,下面为程序 运行截图: 图3.4 为用户名或者密码输入错误截图 程序设计综合课程设计 10 图3.5 为用户名和密码正确进入系统的截图 图3.6 为输入车牌号的界面 程序设计综合课程设计 11 图3.7 为车辆类型选择界面 程序设计综合课程设计 12 图3.8 为查询信息界面 图3.9 为按车牌查询界面 程序设计综合课程设计 13 图3.10 为按车位查询界面 图3.11 为历史信息查询界面 程序设计综合课程设计 14 图3.12 为查询信息的退出界面 程序设计综合课程设计 15 图3.13 为不同时间的收费界面 程序设计综合课程设计 16 图3.14 为存储信息的文档的截图 程序设计综合课程设计 17 第四章 程序使用说明 程序说明如下: 1)登陆系统时先打来“用户名和密码.txt”文档浏览用户名和密码,输入 其中的用户名和密码进入系统。 2)在进入系统以后,严格按照系统要求来使用。 程序设计综合课程设计 18 第五章 课程设计心得与体会 经过一个学期对《C++程序设计》的学习,我学习到了基本的理论知识,了 解到了C++语言程序设计的思想,这些知识都为我的课程实践和进一步的学习打 下了坚实的基础。 通过 C++课程设计,一方面是为了检查这一个学期来计算机语言的学习成 果,另一方面也是为了让我们进一步掌握和熟练地运用它,与此同时,也能够让 我们认清自己在C++学习方面的不足之处和薄弱环节,并加以弥补和巩固。通过 对教学管理系统的程序设计,进一步的巩固了用C++语言编写程序的能力,并且 利于更好的掌握C++语言! 在为期近两周的C++课程设计中,我体会颇多,学到了很多东西。我懂得了 MicrosoftVisual 6.0对程序进行调试,我加强了对 C++程序设计这门 课程的认识,并且复习了自己以前学习到的知识,自己的逻辑思考能力也提高不 少。这些都使得我对计算机语言的学习有了更深入的认识!总之,钱柜娱乐通过这次课程 设计,我收获颇丰,相信会为自己以后的学习和工作带来很大的好处。最重要的 还是激发了我编程的兴趣和热情,让我从一个只懂理论变成了能做一些小型程 序。整体地评价这次课程设计,我认为收获很大,正如上面所说的那样,通过课 程设计,既复习了以前的旧知识,又学到了一些新的知识。像停车场管理系统这 样的应用程序的设计和创建,经历了平时在课堂和考试中不会出现的难题和考 验。而这些问题,又都是课本上很少提到的、更深一层的实践与知识相结合的问 题,这并不是我们平时只靠课本,就可以轻易解决的。所以,锻炼了我们面对难 题,学会用已掌握的知识去解决具体问题的能力,进一步培养了独立思考问题和 解决问题的能力。特别是学会了在 Visual C++中如何调试程序的方法。当然, 老师的指导和同学的帮助也是不可忽视的,他们给了我许多提示和帮助,教会了 我编译复杂程序的方法。 总而言之,这次C++程序设计实践让我收获很大。 程序设计综合课程设计 19 附录1 参考文献 谭浩强.C程序设计(第三版).清华大学出版社.出版于2005 谭浩强.c++程序设计实践指导.清华大学出版社.出版于2005 程序设计综合课程设计20 附录2 程序清单: #include

  using namespace std; class car public:char intpos; double fee; void putcar(); void takecar(); classTime public:int hour; int min; void getime(); inti,poi; int position[100]={0};//全局变量 car carin[100]; Time catime[100]; int juge(); int comp(); void search_no(); void search_pos(); void main() /////////////////////////////////////////////用户登录const char ha[10]=wangbing;//管理员用户名 const char hb[10]=1427;//////管理员密码 char cn[10],cm[10]; int ci=0; 程序设计综合课程设计 21 while(1) cout

  cm; if(!strcmp(hb,cm))break; else cout

  carin[i].no; carin[i].putcar(); cout

  tm_hour;min=newtime-

  tm_min; voidsearch_no() intpoi=comp(); if(poi