《软件工程课程设计-停车管理系统(包含源代码)》由会员分享,可在线阅读,更多相关《软件工程课程设计-停车管理系统(包含源代码)(25页珍藏版)》请在金锄头文库上搜索。
1、学年设计课程名称:软件工程学年设计实验项目:停车场收费管理系统姓名:XXX专 业:计算机科学与技术班级:XXX学号:XXXX指导教师XXX计算机科学与技术学院实验教学中心XXXX年XX月XX日摘要目前,我国经济逐渐发达,自行车王国逐步向汽车进军。因此,大量的停车场也随之而至。 虽然某些大型停车场在工作中已经开始向计算机化靠拢, 但仍不够完善。 而中小型停车场更为稀少, 陈旧的管理手段给顾客带来极大的不便, 同时为了提高工作效率及服务质量, 一套完整的停车厂管理系统的出现就十分必要了。本次设计,仅为一个简单的小型停车场管理系统。采用 C语言编写,为dos界面。 主要强调车辆的进站和出站操作, 以
2、及车场和通道之间的相互关系。 根据车场内车道狭长且为一边开口的特点, 将车道用先进后出的栈结构来描述。 外面狭长的通道,为先进先出,可采用队列结构,为方便起见,采用链式队列结构来描述。 本程序中的数据对象是汽车, 为使操作更方便, 将给每辆进车道的汽车编号,根据编号出场。其中,还包括入场时间、出厂时间、收取费用等项。关键字:停车场管理系统栈结构 队列结构软件工程目录1 需求分析 错误!未定义书签。引言 错误!未定义书签。设计目的 错误!未定义书签。任务概述 错误!未定义书签。基本要求 错误!未定义书签。系统用户分析 错误!未定义书签。用数据流程图描述 错误!未定义书签。2 概要设计 错误!未定
3、义书签。设计思想 错误!未定义书签。实现方法 错误!未定义书签。主要模块 错误!未定义书签。各模块的主要功能及实现 错误!未定义书签。车辆到达模块 错误!未定义书签。车辆离开模块 错误!未定义书签。停车场内与通道停放车辆的信息模块 错误!未定义书签。获取时间 错误!未定义书签。函数间调用关系 错误!未定义书签。3 详细设计 错误!未定义书签。界面及各模块详细设计 错误!未定义书签。4 系统测试 错误!未定义书签。功能测试 错误!未定义书签。车进站时车牌号的测试 错误!未定义书签。5 总结 错误!未定义书签。用户手册 错误!未定义书签。设计体会 错误!未定义书签。参考文献 错误!未定义书签。附
4、错误!未定义书签。1 需求分析1.1 引言1.1.1 设计目的a.通过课程设计,加深对软件工程思想的理解,能对系统功能进行分析,并设计合理的模块化结构。b. 通过课程设计,提高程序开发功能,能运用合理的控制流程编写清晰高效的程序。通过课程设计,训练C程序调试能力,能将一个中小型各级组织系统联调通过。c. 通过课程设计,开发一个中小型系统,掌握运用软件工程思想研来发系统全过程。d. 通话课程设计,培养分析问题、解决实际问题的能力。1.1.2 任务概述设有一个可以停放20 辆汽车的狭长停车场,它只有一个大门可以供车辆进出。 车辆按到达停车场时间的早晚依次从停车场最里面向大门口处停放 (最先到达的第
5、一辆车放在停车场的最里面) 。 如果停车场已放满20 辆车, 则后来的车辆只能在停车场大门外的通道上等待, 一旦停车场内有车开走, 则排以便道上的第一辆车就进入停车场。 停车场内如有某辆车要开走, 在它之后进入停车场的车都必须先退出停车场为它让路, 待其开出停车场后, 这些辆再依原来的次序进场。 每辆车在离开停车场时, 都应根据它在停车场内停留的时间长短交费。如果停留在便道上的车未进停车场时,允许其离去,不收停车费,并且仍然保持在通道上等待的车辆的次序。编制一程序模拟该停车场的管理。要求程序输出每辆车到达后的停车位置(停车场或便道上) ,以及某辆车离开停车场应交纳的费用和它在停车场内停留的时间
6、。1.2 基本要求要求程序输出每辆车到达后的停车位置(停车场),以及某辆车离开停车 场应交纳的费用和它在停车场内停留的时间。系统用户分析停车场管理系统”主要是针对车辆存取工作而开发的应用软件。通常有系统 管理员、停车场车辆管理员和顾客三种用户,他们的使用权限如下: 系统管理员:计算机人员,对系统进行维护。图书管理员:对停车信息进行数据操作。顾客:仅限于查阅。用数据流程图描述图1-1是根据操作流程建立的流程图。表1-1是车能否进停车场的判定表。图1 -1停车场流程图表1-1进站停车判定表车场内车数202020车牌号位数52 且 552 且 5进站V进通道V2 概要设计2.1 设计思想此停车场管理
7、系统是在一个狭长的通道上的, 而且只有一个大门可以供车辆进出, 并且要实现停车场内某辆车要离开时, 在它之后进入停车场的车都必须先退出停车场为它让路,待其开出停车场后,这些辆再依原来的次序进场的功能,就可以设计两个堆栈, 其中一个堆栈用来模拟停车场, 另一个堆栈用来模拟临时停车场, 该临时停车场用来存放当有车辆离开时, 原来停车场内为其让路的车辆。至于当停车场已满时, 需要停放车辆的通道可以用一个链队列来实现。 当停车场内开走一辆车时, 通道上便有一辆车进入停车场, 此时只需要改变通道上车辆结点的连接方式就可以了, 使通道上第一辆车进入停车场这个堆栈, 并且使通道上原来的第二辆车成为通道上的第
8、一辆车, 此时只需将模拟通道的链队列的头结点连到原来的第二辆车上就可以了。实现方法对于此停车场管理系统的实现, 就是用两个堆栈来分别模拟停车场以及停车场内车辆为其它车辆让路时退出停车的临时停放地点。 至于通道上车辆的停放则用一个链队列来实现,此时,通道上车辆的离开或者进入停车场只需改变此链队列上的结点而已。 对于要对停车场内的车辆根据其停放时间收取相应的停车费用,可以记录下车辆进入以及离开停车场的时间,再用时间差乘以相应的单价并且打印出最后的费用就可以实现了。主要模块此停车场管理系统,主要分为以下若干模块:首先定义用来模拟停车场的堆栈以及用来模拟通道的链队列为全局变量,然后编写主函数,在此主函
9、数中实现对其它各个模块的调用。在主函数中首先打印出此停车场管理系统选择页面,在用户的选择过程中,程序又分别调用车辆的到达、车辆的离开、停车场内与通道停放车辆的信息以及获取时间这四个函数模块。其中,在车辆的离开那个模块函数中又调用了打印离开车辆信息的函数,在停车场内停放车辆信息的那个模块函数中,又分别调用了显示停车场上车辆信息的函数以及显示便道上车辆信息的函数。最后,从调用的这四个函数中回到主函数结束整个程序的运行。2.4 各模块的主要功能及实现2.2.1 车辆到达模块此模块主要实现车辆进入停车场功能, 通过判断合法性决定车辆能否进入停车场。实现伪码:If 车场内车数2 and 5 and 无重
10、复车牌then车牌号码合法End if2.2.2 车辆离开模块此模块主要实现车辆离开停车场功能,并能打印出车辆停留时间及费用。实现伪码:If 车场不为空and 序号存在 then车辆出停车场并打印出进出时间及费用End if2.2.3 停车场内与通道停放车辆的信息模块此模块主要实现车场车辆的停放及通道的利用,是本设计的核心。就是用两个堆栈来分别模拟停车场以及停车场内车辆为其它车辆让路时退出停车的临时停放地点。 至于通道上车辆的停放则用一个链队列来实现, 此时, 通道上车辆 的离开或者进入停车场只需改变此链队列上的结点。模块中出现的函数:void init (SeqStack *s;)int i
11、semptystack (SeqStack *s;)int isfullstack (SeqStack *s;)int isfullstack (SeqStack *s;)void push(SeqStack *s;)struct car pop (SeqStack *s,struct car x;)car gettop (SeqStack *s;)void initq(linkq*q) ;void addq(linkq*q,struct car x);struct car delq(linkq *q) ;int isemptyq(linkq *q) ;void printout(struct
12、 car *x) ;void printq(linkq *q) ;void review(SeqStack*s,linkq*q);2.2.4 获取时间该模块主要获取车辆时间信息,用以计算车辆停车费用。函数间调用关系如下图2-1所示结束图2-1函数调用关系图图中函数解释:review 查看车站内及通道内停车情况函数。incar 车进站函数。outcar 车出站函数。clear定义数组函数。printstack车进站时输入信息显示,及提示站内情况函数printq 进过道信息函数。gettime获取时间函数。printout 出站时的信息函数3详细设计3.1界面及各模块详细设计进入界面后如下图所示。
13、图3- 1首界面测试要点:各选项与相应的功能能否成功连接。1 .车进站(1) .功能:添加车牌号排序后进站。(2) .输入项:车牌号。(3) .输出项:车在车站内的“位置” “车牌”“进站时间” “站内状况”(4) .测试要点:注意不合法的车牌号能否在系统通过。2 .车出站( 1) 能:实现收费后出车站。( 2) .输入项:车序号。( 3) .输出项:车的“车牌” “进站时间” “进 / 出站”状态“出站时间” “原来位置” “停留时间” “费用” 。( 4) .测试要点:要出站的车序号是否存在。3 .查看车站及过道中的情况( 1) .功能:查看车站及过道中车辆情况。( 2) .输入项:查看提
14、示。( 3) .输出项:车场内状态即停车数量,以及通道内停车数量。( 4) .测试要点:能否正确显示车的数量。4 .获取帮助( 1) .功能:放回到开始界面。( 2) .测试要点:能否正确返回。5 .结束( 1) .功能:结束程序。4系统测试4.1功能测试车进站时车牌号的测试1 .划分等价类及测试用例如下表所示。假设此时站内有一辆编号为 ABC的车表4-1车牌号等价类划分表输入条件合理等价类不合理等价类长度(1)小于5个字符,大于2个字符(3)小于2个字符(4)大于5个字符字符(2)与站内车牌不重复(5)与站内车牌相同表4-2车牌号测试用例测试结果期望结果覆盖范围ddd后效(1) (2)A无效(3)123456无效(4)ABC无效(5)2 .车出站时的序号测试1.划分等价类及测试用例如下表所示假设此时站内有一辆编号为 ABC的车,车的序号为1表4-3车序号的合理等价类输入条件合理等价类不合理等价类存在性(1)存在(2) /、存在表4-4车序号的测试用例测试结