1、停车收费管理系统一、 系统分析1、 需求分析1.1功能需求1.1.1 停车场管理系统总目标 在计算机网络,数据库和先进的开发平台上,利用现有的软件,配置一定的硬件,开发一个运行稳定,便于管理、维护的停车场收费管理系统,从而达到有效的管理车辆的出入,费用管理查询,车位查询,以及管理员的设置,会员管理等功能。1.1.2数据流程图系统的功能需求如下: 停车场管理系统的主界面有管理员提供; 系统在启动时要求管理员输入用户名和密码,只有用户名和密码正确,才可 以进入系统的主功能界面; 管理员负责对系统的维护工作,因此系统应赋予管理员对车位信息、用户信息的添加、修改、删除和查询等功能的操作权限。其数据的流
2、程如图1.1,图1.2所表示;管理员应为车辆进行入场登记和离场登记,并结算停车费用;车位信息、VIP用户信息、管理员信息和进出记录保存在对应的数据库表中。1.2性能需求 为了保证系统能够长期、安全、稳定、可靠、高效的运行,停车场管理系统应该满足以下的性能需求:系统处理的准确性和及时性系统处理的准确性和及时性是系统的必要性能。在系统设计和开发过程中,要充分考虑系统当前和将来可能承受的工作量,使系统的处理能力和响应时间能够满足企业对信息处理的需求。系统的开放性和系统的可扩充性 停车管理系统在开发过程中,应该充分考虑以后的可扩充性。例如会员识别系统的方式的改变(射频,IC等),用户查询的需求也会不断
3、的更新和完善。所有这些,都要求系统提供足够的手段进行功能的调整和扩充。而要实现这一点,应通过系统的开放性来完成,既系统应是一个开放系统,只要符合一定的规范,可以简单的加入和减少系统的模块,配置系统的硬件。通过软件的修补、替换完成系统的升级和更新换代。系统的易用性和易维护性 停车场管理系统是直接面对使用人员的,而使用人员往往对计算机并不是非常熟悉。这就要求系统能够提供良好的用户接口,易用的人机交互界面。要实现这一点,就要求系统应该尽量使用用户熟悉的术语和中文信息的界面。系统中涉及到的数据是公司的相当重要的信息,系统要提供方便的手段供系统维护人员进行数据的备份,日常的安全管理,系统意外崩溃的时候数
4、据的恢复等工作。系统的标准性 系统在设计开发使用过程中都要涉及到很多计算机硬件、软件。所有这些都要符合主流国际、国家和行业标准。例如在开发中使用的操作系统、网络系统、开发工具都必须符合通用标准。如规范的数据库操纵界面、作为业界标准的TCP/IP网络协议及ISO9002标准所要求的质量规范等;同时,在自主开发本系统时,要进行良好的设计工作,制订行之有效的软件工程规范,保证代码的易读性、可操作性和可移植性。系统的先进性 目前计算系统的技术发展相当快,作为停车场管理系统工程,应该保证系统在相当的时间仍旧是先进的,在系统的生命周期尽量做到系统的先进,充分完成企业信息处理的要求而不至于落后。这一方面通过
5、系统的开放性和可扩充性,不断改善系统的功能完成。另一方面,在系统设计和开发的过程中,应在考虑成本的基础上尽量采用当前主流且有良好发展前途的产品。1.3数据需求1.3.1数据字典 我们对数据流图的基本成分分析之后确定以下的张表作为数据字典 图1.1 用户名 图1.2 密码名字:密码别名:描述:对管理员及可登录人员的真实性进行验证定义:字符|数字位置:管理员信息表名字:用户名别名:描述:标识系统的登录人员定义:字符、字母位置:管理员信息表 图1.3 车位明细 图1.4 进出记录明细名字:进出记录明细表别名:描述:进出记录的各明细项目定义:字符|数字位置:进出记录表名字:车位明细表别名:描述:车位的
6、各明细项目定义:字符|数字位置:固定车位表、自由车位表1.3.2 E-R图 状态车牌号码车位编号 车位 图1.5车位实体及其属性图图1.5中涉及的实体为车位,其属性有:车位编号,状态,车牌号码。联系地址联系电话租期车辆颜色起始日期车主姓名到期日期车牌号码 费用 用户 图1.6用户实体及其属性图图1.6中涉及的实体为用户,其属性有:车牌号码,车主姓名,车辆颜色,联系电话,联系地址,租期,起始日期,到期日期,费用。 密码 用户名 管理员 图1.7用户实体及其属性图其图1.7中涉及到的实体为管理员,其属性有用户名和密码。车牌号码 状态车位编号 车位 N车主姓名 N 使用车牌号码用户名车辆颜色 密码
7、1联系电话 管理 管理员 N 1 用户联系地址 费用起始日期 租期到期日期 图1.8 完整的实体联系图在1.8的图中有3个实体,他们分别是车位,管理员,用户。他们的联系如下:1:管理员可以对多个用户,多个车位进行管理。用户和车位被一个管理员管理。所以他们之间具有1对多的联系。2:一个用户只能使用一个车位,一个车位可以被多个用户使用。所以他们之间具有1对多的联系。2、 组织结构分析本系统的主要功能分为四个模块:固定车位管理、自由车位管理、进出记录管理和VIP用户管理。1) 固定车位管理包括查询当前的剩余车位以及所有车位的使用情况详情。2) 自由车位管理包括查询当前的剩余车位以及所有车位的使用情况
8、详情。3) 进出记录管理包括存车、取车、查看,主要功能实现如下: A、 存车:当有新的车辆准备入库时,在进出记录管理界面的对话框中,输入要进入车辆的车牌号码,点击“计费单价”,系统将自动生成车辆停车单价根据查询到的车辆信息,然后单击“进入”,系统会自动生成车辆的进入时间,将车辆相关信息导入数据库。 B、取车:当车辆从库中取车时,在对话框中输入车牌号,若是已入库车辆,系统将自动显示出库时间、停车时长以及所需费用,若是未入库车辆,则显示对话框提醒所取车辆不存在。 C、查看: 点击按钮“查看所有”,显示所有车辆进出记录的详情,点击按钮“查看未离开的”,显示所有未离开车辆进出记录的详情。二、 总体设计
9、2.1总体设计目的 在本停车场管理系统项目的前一阶段,也就是需求分析阶段中,已经将系统用户对本系统的需求做了详细的阐述,这些用户需求已经在上一阶段中对停车场的实地调研中获得,并在需求规格说明书中得到详尽得叙述及阐明。本阶段已在系统的需求分析的基础上,对停车场管理系统做概要设计。主要解决了实现该系统需求的程序模块设计问题。包括如何把该系统划分成若干个模块、决定各个模块之间的接口、模块之间传递的信息,以及数据结构、模块结构的设计等。在以下的概要设计报告中将对在本阶段中对系统所做的所有概要设计进行详细的说明。 在下一阶段的详细设计中,程序设计员可参考此概要设计报告,在概要设计对停车场系统所做的模块结
10、构设计的基础上,对系统进行详细设计。在以后的软件测试以及软件维护阶段也可参考此说明书,以便于了解在概要设计过程中所完成的各模块设计结构,或在修改时找出在本阶段设计的不足或错误。2.2 总体流程 系统主界面系统登录界面输入用户名及密码 检查错误信息系统登录界面 功能界面处理功能 图2.1 总体流程图 系统在启动后初始化,进入登陆界面,这时输入用户的名字与用户密码,然后对数据库中的用户名,用户密码进行比对检验。如果密码一致这时候进入到功能操作界面,进行功能的操作。如果密码和数据库中的用户不一致的话则显示错误提示信息,然后再次进入到系统登陆界面。2.3车位处理流程 车位的处理分为2个大的部分来进行处
11、理。首先是车辆的入场登陆:流程如图2.2所示。当车辆进入场地的时候管理员通过对车牌(的判断来区分是不是会员。会员则告知车位的位置,并将其停车信息记录。非会员的话则需要办理手续,同时生成临时的编号,然后告知其车位的位置,记录停车的信息和编号。车辆进场办理手续,生成临时编号 会员判断 NY 进场车位记录信息到数据库 图2.2 车辆入场流程车辆出场结算:如图2.3所示。当车辆出场的时候管理员也还是先通过输入车牌来判断车辆是否是会员车辆。会员和普通用户则按照不同的计费单价计算价格,管理员收费,记录到数据库。 车辆离场结算车位费用信息记录信息到数据库 图2.3 车辆离场流程2.4管理员处理流程 首先管理
12、员凭密码登陆到系统。开始进行会员资料管理,添加会员时首先判断各项要求必须输入的资料是不是没输入,正确进行到下一步,错误则提示。然后判断会员的证号是否有重复的,有则从新输入,无则记录到数据库。会员删除的时候则先判断会员的车辆是不是还停放在停车场中,如果车辆还在停车场中则提示无法删除,反之则直接删除会员的记录。如图2.4管理员登陆系统 会员资料管理会员添加会员查询会员修改会员删除输入车牌号输入车牌号 输入资料输入车牌号N 判断 Y N 判断 Y 资料正确且车牌 号码不重复 Y N 判断 Y删除成功错误提示N错误提示输入修改内容错误提示错误提示显示详细信息成功添加到数据库中修改成功 图2.24 管理
13、员处理流程2.5数据结构设计2.5.1逻辑结构设计 通过把图1.8的E-R图转换为关系,每个关系的码使用斜黑体标出: 用户(车牌号码,车主姓名,车辆颜色,联系电话,联系地址,租期,起始日期,到期日期,费用) 车位(车位编号,状态,车牌号码) 管理员(用户名,密码)进出记录(车牌号码,进入时间,离开时间,计费单价,停车费用,种类,状态)2.5.2物理结构设计 按系统的要求建立以下的数据库:1. 管理员信息表2. VIP用户表3. 进出记录表4. 自由车位表5. 固定车位表2.6出错设计 服务器都必须安装UPS以防止停电或电压不稳造成的数据丢失的损失。在断电后恢复过程可采用SQLSERVER的日志
14、文件,对其进行ROLLBACK处理,对数据进行恢复。2.7安全保密设计 由于本系统所使用的是本机数据库,不存在网络传输中的安全问题,所以系统在做好了病毒的防护工作后。数据库,管理员使用密码登陆就可以很好的实现安全保密功能。三、 详细设计3.1详细设计目的 在前一阶段(概要设计说明书)中,已解决了实现该系统需求的程序模块设计问题。包括如何把该系统划分成若干个模块、决定各个模块之间的接口、模块之间传递的信息,以及数据结构、模块结构的设计等。在以下的详细设计报告中将对在本阶段中对系统所做的所有详细设计进行说明。 在本阶段中,确定应该如何具体地实现所要求的系统,从而在编码阶段可以把这个描述直接翻译成用
15、具体的程序语言书写的程序。主要的工作有:根据在需求分析说明书中所描述的数据、功能、运行、性能需求,并依照概要设计说明书所确定的处理流程、总体结构和模块外部设计,设计软件系统的结构设计、逐个模块的程序描述(包括各模块的功能、性能、输入、输出、算法、程序逻辑、接口等等),解决以下问题: 接受:会员加入,车辆进入停车场; 输出:会员资料显示,车位信息显示,费用结算显示;进行数据库的查询、修改工作; 接受并判断错误,输出相应的出错消息;3.2系统功能模块 系统总功能模块 停车场收费管理系统用户管理进出记录管理固定车位管理自由车位管理图3.1系统总功能模块 自由车位管理模块 自由车位管理查看车位使用详细
16、信息查看车位使用现况 图3.2自由车位管理功能模块 固定车位管理模块 固定车位管理 查看车位使用详细信息 查看车位使用现况 图3.3固定车位管理功能模块 进出记录管理模块 进出记录管理查看进出记录信息离开停车场进入停车场 图3.4进出记录管理功能模块用户管理模块 用户管理删除用户修改用户信息查询用户添加用户 图3.5用户管理功能模块3.3具体模块设计A、系统数据库模块和主体窗口建立系统数据模块,添加两个label和两个textbox控件,在配置文件中写入以下连接字符: 在登录页面中,控件调用数据库中的管理员信息表,通过密码的输入来验证用户的合法性,其登陆窗体如图3.6所示 图3.6 首先系统读
17、出管理员信息表中的用户名,密码。当用户输入密码的时候与管理员信息表的密码对照,正确则进入使用界面,错误的话提示信息,如图3.7所示,然后重新登录。主要代码如下: private void button1_Click(object sender, EventArgs e) string name = textBox1.Text; string pwd = textBox2.Text; Sqlhelper sqlhelper = new Sqlhelper(); if (sqlhelper.ExeSql(select * from 管理员信息 where 管理员编号= + name + and 管
18、理员密码= + pwd + ) / MessageBox.Show(登录成功); this.DialogResult = DialogResult.OK; this.Close(); else MessageBox.Show(登录失败); B、自由车位管理模块设计 本模块主要包括查看车位信息,车位使用详细信息。通过触发click事件,调用自由车位表中的数据,显示总车位,已用车位和剩余车位,还有所有的详细信息。其中已用车位和剩余车位通过表中的字段状态来区分,0表示车位为空,1表示车位已用。而详细信息通过datagridview控件绑定自由车位表来实现的。主要代码如下: private void
19、bt1_Click(object sender, System.EventArgs e) SqlConnection connection = new SqlConnection(); connection.ConnectionString = Data Source=ACER-PC; + Initial Catalog=MPC;Integrated Security=SSPI; connection.Open(); string strSQL = SELECT COUNT( *) c1 FROM 自由车位表 where 状态=1; SqlCommand cmd = new SqlComman
20、d(strSQL, connection); SqlDataReader dr = cmd.ExecuteReader(); if (dr.Read() if (drc1 != null) tb2.Text = drc1.ToString(); tb3.Text =( Convert.ToInt32 (tb1 .Text) -Convert.ToInt32( tb2.Text).ToString (); private void bt2_Click(object sender, System.EventArgs e) SqlConnection connection = new SqlConn
21、ection(); connection.ConnectionString = Data Source=ACER-PC; + Initial Catalog=MPC;Integrated Security=SSPI; connection.Open(); DataSet ds = new DataSet(); SqlDataAdapter da = new SqlDataAdapter(); SqlCommand cmd = new SqlCommand (SELECT * FROM 自由车位表 , connection); da.SelectCommand = cmd; da.Fill(ds
22、); dg1.DataSource = ds.Tables0; C、 固定车位管理模块设计 本模块主要包括查看车位信息,车位使用详细信息。通过触发click事件,调用自由车位表中的数据,显示总车位,已用车位和剩余车位,还有所有的详细信息。其中已用车位和剩余车位通过表中的字段状态来区分,0表示车位为空,1表示车位已用。而详细信息通过datagridview控件绑定自由车位表来实现的。主要代码如下:private void bt4_Click(object sender, System.EventArgs e) SqlConnection connection = new SqlConnectio
23、n(); connection.ConnectionString = Data Source=ACER-PC; + Initial Catalog=MPC;Integrated Security=SSPI; connection.Open(); string strSQL = SELECT COUNT( *) c1 FROM 固定车位表 where 状态=1; SqlCommand cmd = new SqlCommand(strSQL, connection); SqlDataReader dr = cmd.ExecuteReader(); if (dr.Read() if (drc1 !=
24、 null) tb2.Text = drc1.ToString(); tb3.Text = (Convert.ToInt32(tb1.Text) - Convert.ToInt32(tb2.Text).ToString(); D、进出记录管理模块设计 本模块主要包括查询车辆信息,车辆进场,车辆离场,结算停车费用。当管理员输入车牌号码,点击“计费单价”按钮,若车辆已进入停车场,则提示信息,若未进入,则在VIP用户表中查询,若查到,在种类为1,停车单价为0.0,否则种类为2,单价为5.0,并把该信息插入到数据库中,然后单击“进入”按钮,系统会显示当前的时间,并插入到数据库中。在车辆要离开时,管理员
25、输入车牌号码,点击“离开”按钮,若在进出记录表中查询不到,系统会给出提示信息,否则系统会显示当前的时间为离开时间,并插入到数据库中,然后调用该条记录计算停车费用,通过时间差乘以计费单价,在界面中显示结果并把该结果插入到数据库中。其次,也可以查看所有进出记录的详细信息,通过datagridview控件来绑定数据。主要代码如下: private void bt12_Click(object sender, EventArgs e) if (tb1.Text = ) MessageBox.Show(请输入车牌号码); else SqlConnection connection = new SqlCo
26、nnection(); connection.ConnectionString = Data Source=ACER-PC; + Initial Catalog=MPC;Integrated Security=SSPI; connection.Open(); SqlCommand cmd = connection.CreateCommand(); cmd.CommandType = CommandType.Text; cmd.CommandText = SELECT * FROM 进出记录 + WHERE 车牌号码= + tb1.Text + AND 状态 = 0; SqlDataReader
27、 dr = cmd.ExecuteReader(); if (dr.Read() MessageBox.Show(该车还未离开,请核对信息!); else dr.Close(); cmd.CommandText = SELECT * FROM VIP用户表 + WHERE 车牌号码= + tb1.Text + ; SqlDataReader dr1 = cmd.ExecuteReader(); if (dr1.Read() tb2.Text = 1; tb3.Text = 0.0; else tb2.Text = 2; tb3.Text = 5.0; E、用户管理模块设计 本模块主要包括用户查
28、询,用户添加,用户修改,用户删除。管理员输入车牌号码,点击“查询”按钮,若查询成功,则在textbox中和datagridview中显示该用户的详细信息,否则系统提示信息。在添加用户信息时,应先要正确的输入用户的详细信息,点击“添加”按钮,若添加成功,则数据库中会多一条记录,否则系统会提示信息。在修改用户信息时,输入要修改的信息,但单击“修改”的按钮时,系统首先查询该用户是否存在,若存在,则数据库中的信息则会修改,否则系统会提示信息。在删除用户信息时,输入要删除用户的车牌号,单击“删除”按钮时,系统先查询该用户是否存在,若存在,系统则会删除该用户的所有信息,负责系统则会给出提示信息。除此之外,
29、还可查看所有用户的详细信息,通过datagridview控件绑定数据来实现需求。主要代码如下: private void bt7_Click(object sender, EventArgs e) if (tb1.Text = ) MessageBox.Show(请输入车牌号码); else SqlConnection connection = new SqlConnection(); connection.ConnectionString = Data Source=ACER-PC; + Initial Catalog=MPC;Integrated Security=SSPI; connec
30、tion.Open(); DataSet ds = new DataSet(); SqlDataAdapter da = new SqlDataAdapter(); SqlCommand cmd = connection.CreateCommand(); cmd.CommandType = CommandType.Text; cmd.CommandText = SELECT * FROM VIP用户表 + WHERE 车牌号码= + tb1.Text + ; da.SelectCommand = cmd; da.Fill(ds); dg1.DataSource = ds.Tables0; Sq
31、lDataReader dr = cmd.ExecuteReader(); if (dr.Read() if (dr车主姓名 != null) tb2.Text = dr车主姓名.ToString(); 四、 总结本系统基于Visual Studio 2008的停车场收费管理设计,在系统开发过程中积累了基于Visual Studio 2008应用系统的开发经验,同时也开发了一个基于Visual Studio 2008的关于高级语言程序设计的停车场收费管理系统,本系统具有实用价值。在开发过程中,根据软件工程思想,分析了停车场收费管理系统的发展趋势,对在停车场收费管理系统这个概念进行了比较深入和全
32、面的了解,通过阅读大量文献资料,比较各种设计方案的优劣,并结合自身开发条件因素,确定了系统设计方案。在本系统的开发过程中,由于本人是第一次开发单机版的停车管理系统,在知识、经验方面都存在着很多不足,所以,该系统必然会存在一些缺陷和不足。还有一点是,我对单机版的停车管理系统的整个流程不够熟悉,在做需求分析方面有着很多的不足,难免有些地方没有考虑到,所以系统还有许多需要改进的地方。如下所示:(1)本系统仍然使用手工输入所有记录,这样可能出现手工输入错误,并可能会增加进出停车场操作的管理工作效率。 (2)设置的数据表比较多,可能会导致数据流障碍。 (3)本系统固定车位费用只能按小时计算,所以不能根据
33、停车时间的长短或该车车主的级别来设定优惠。这样设计也不能使停车场收费管理者根据实际停车场的使用效率来设定和更改停车费率,达不到鼓励长时间停车的目的;流动车位费用也按小时计算,停车时间不到一小时的时候计算结果是相对的,不是准确的。 通过开发此系统,我在软件的开发能力上有了很大的提高。我不但学会了系统设计也提高了自己的编程能力。也使我对数据库和脚本编程语言思想有了更加深入的了解,对软件工程有了更深刻的认识,使我能从实际上更加了解软件工程。对系统的开发有了形象的认识。也使我掌握了做一个项目所必须经过的过程,也使我更加深入地学习了C#语言,也使我对Visual Studio 2008和SQL Server2005的应用有了更加深入的理解,也为以后工作奠定了基础。总之,今后的停车场收费管理系统将朝着更富交互性、个性化、合作化和智能化的方向发展,我今后的研究工作也将向着这个方向开展,努力完成我所设想的、功能全面的一套完整的“停车场收费管理系统”。