资源预览内容
第1页 / 共66页
第2页 / 共66页
第3页 / 共66页
第4页 / 共66页
第5页 / 共66页
第6页 / 共66页
第7页 / 共66页
第8页 / 共66页
第9页 / 共66页
第10页 / 共66页
亲,该文档总共66页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
停车管理系统设计方案 1、 问题简述 用于停车场管理收费的一个应用型系统,主要功能如下 主要功能如图,需引用系统时间存储至链表中,并能够持久化,能通过时间计算出车辆 出库时应该缴纳的费用,需要通过时间计算费用 2、 问题分析和程序结构 停车管理系统 数据处理 数据持久化 用户交互 信息检索 定义 信息输出 定义 F3:GlobalVariable 存储所有引用头文件, 以及全局变量初始数据 F2:mytype 定义数据储存结构体, 和时间结构体 1 时间结构体命名为:T_Time,内含存储空间:秒分,时,日,月,年。 数据结构体命名为:T_Parking,内含储存空间:编号,车牌,停车类型, 停车时间,费用。 节点结构体命名为:T_ParkingNode, 全局变量 7 个:总车位数,车位使用数,零停单价,日结单价,包月单价, 包年单价,最新时间 命名为:MaxCar, Nowcar, RetailPrice, DayPrice, MonPrice, YearPrice 新增车辆信息包括:编号,车牌号 一级菜单含有,程序主要功能选项(UI) ,表头,表尾,制作者信息 停车登记菜单样式: 修改停车费菜单样式: 用户交互 F5 menu: 一级主菜单 F4 NewNodeCar: 新增车辆信息,从 键盘输入车辆信息 F6 Amenu: 停车登记菜单 F7 Hmenu: 修改停车费菜单 2 Newtime:通过函数更新全局变量里面存储的时间数据 Carcost:通过节点时间与最新时间相减计算费用 EditCost:更改全局变量 Delete: 删除某个节点 车辆信息保存二进制文件为:车场在停车辆信息.pan 计价费用保存二进制文件为:全局变量储存.pan 收费历史保存二进制文件为:历史记录.pan F12 EditCost 修改车场停车费用 F9:InsertIntoLink: 将车辆节点加入链 表 F13 Delete 车辆出库 F10 Newtime: 获取最新时间 F8 toupper: 进行大小写字符转 换 F14 FreeLink 释放链表 F11 CarCost 计算某辆零停汽车 费用 数据处理 数据持久化 F15 save: 保存车辆信息到二进 制文件中 F16CreateLinkFromFile 从文件读车辆信息创 建链表 F18 Readvariable 读取全局变量 F17 Saveglovariable 全局变量的持久化 F19 Savehistory 记录历史记录链表 3 检索不到车辆需提示 PrintAll 里面需打印计价表,现在时间,剩余车位个数 PrintAllcar:如果有数据,需要打印表头,表尾 计价表样式: 信息输出 F23 PrintAll 打印所有存储信息 F24 PrintAllCar: 打印每个节点的车 辆信息 F25 PrintoneCar: 打印特定车辆信息 F26 PrintCost 打印计价表 F27 readhistory 显示历史收费 F22 PrintSomeCar 打印出某个时间段 停车的车辆 信息检索 F20 SearchByCodeCar 检索给定代号的车辆 F21 SearchByNameCar 检索给定车牌号的车 辆 4 PrintSomeCar:其中输入时间时按年月日输入, 把全部时间化为分钟或者 化为小时进行计算,如有数据需显示需打印表头,无数据需提示 Readhistory:只储存车辆信息至二进制文件中,储存顺序为:编号, 车牌号,停车时间,出库时间,停车类型(转换为文字) ,费用。 每增加一条记录,累加车辆收费 整个系统包含的函数汇总(不含常用函数) 代号代号 功能说明功能说明 自定义自定义 函数原型函数原型 源文件源文件 F1 主函数 Y 主函数 Course.c F2 定义数据储存结构体 Y T_ParkingNode mytype.c F3 储存引用头文件,定义全 局变量 Y 无 GlobalVariable.c F4 新增车辆信息 Y NewNodeCar() NewNodeCar.c F5 一级菜单 Y menu() menu.c F6 二级停车登记菜单 Y Amenu() Amenu.c F7 二级停车费菜单 Y Hmenu() Hmenu.c F8 大小写转换 Y toupper() toupper.c F9 车辆节点插入链表 Y InsertIntoLink() InsertIntoLink.c F10 获取最新时间 Y Newtime() Newtime.c F11 计算车辆停车费用 Y CarCost() CarCost.c F12 修改车场停车费用 Y EditCost() EditCost.c F13 车辆出库 Y Delete() Delete.c F14 释放链表 Y FreeLInk() FreeLInk.c 5 F15 车辆信息持久化 Y Save() Save.c F16 从二进制文件读车辆信 息,创建链表 Y CreateLinkFromFile() CreateLinkFromFile.c F17 全局变量持久化 Y Saveglovariable() Saveglovariable.c F18 读取二进制文件全局变量 Y Readvariable() Readvariable.c F19 记录历史记录链表 Y Savehistory() Savehistory.c F20 检索给定代号的车辆 Y SearchByCodeCar() SearchByCodeCar.c F21 检索给定车牌号的车辆 Y SearchByNameCar() SearchByNameCar.c F22 打印出时间区间内的车辆 信息 Y PrintSomeCar() PrintSomeCar.c F23 打印所有储存信息 Y PrintAll() PrintAll.c F24 打印每个节点的车辆信息 Y PrintAllCar() PrintAllCar.c F25 打印特定车辆信息 Y PrintoneCar() PrintoneCar.c F26 打印计价表 Y PrintCost() PrintCost.c F27 显示历史记录 Y readhistory() readhistory.c F28 读取系统时间 N Time() F29 转换时间为结构体数据 N Localtime() F30 比较字符串 N Strcpy() 程序主要结构: F1:主函数 函数:Course 流程:下图 开始 读取存储的 二进制文件 CreateLinkFr omFile Readvariable 显示主菜单C:修改套餐 B:车辆出库 A:停车登 记 D:打印计 价表,车辆 信息 E:打印特定 区间的车辆 F:编号查询 G:车位号 查询 H:历史收 费查询 X:退出 特定字符 否 结束 6 3、 子程序(功能)流程图 3.2.2、F2 函数:mytype 参数:无 返回:无 求解: 时间结构体命名为:T_Time,内含存储空间:秒 分,时,日,月,年。 数据结构体命名为:T_Parking,内含储存空间:编号 ,车牌,停车类型,停车时间,费用。 节点结构体命名为:T_ParkingNode, 流程图:右图 3.2.3、F3 函数:GlobalVariable 参数:无 返回:无 求解:引入所有头文件,定义全局变量 流程图:右图 3.2.4、F4 函数:NewNodeCar 参数:无 返回:新节点的地址 求解:创建新的车辆信息 流程图:左图 开始 定义时间结构体 定义数据存储结构 体 定义节点结构体 结束 开始 引入基本函数,结 构体函数 定义全局变量 引入其余函数 结束 开始 超出停放最大 值? 返回节点地址 结束 输入新停靠 车数据 申请动态内存 否 提示超出最大值 是 7 3.2.5、F5 函数:menu 参数:无 返回:函数 toupper(A-I 或 xX,a-i) 求解: 特定字符指:A-I 和 a-i 和 x,X 流程图:右图 3.2.6、F6 函数:Amenu 参数:无 返回:函数 toupper 的返回 返回值 求解:特定字符指 A-D 或 a-d 或 x,X。 流程图:左图 开始 显示菜单 输入字符x x是特定字符? x输入toupper函数 返回函数值 是 结束 否 开始 定义变量 letter 显示可选择套 餐方案 输入字 符 特定字符? 否 值输入 toupper函数 是 放回toupper 函数的值 结束 8 3.2.7、F7 函数:Hmenu 参数:无 返回:toupper 返回的值 求解:特定字符指 1-4 和 x,X 流程图:右图 3.2.8、F8 函数:toupper 参数:大小写字符 a-i 和 x 返回:大写字符 求解:略 流程图:右图 开始 显示菜单 输入字 符letter 特定字符? Letter输入 toupper函数 是 结束 返回toupper 否 开始 Letter为a 与 z之间或 = x? Letter小写转换为 大写 返回letter 结束 Letter 否 是 9 3.2.9、F9 函数:InsertIntoLink 参数:链表首地址,新节点地址 返回:新的链表首地址 求解:插入链表时,按照编号做遍历储存, 不能插入时,显示提示 流程图:右图 3.2.10、F10 函数:Newtime 参数:无 返回:无 求解:略 流程图:右图 开始 输入链表首节点 地址pHead 输入新节点p 首节点为空? 结束 将p插入链表中 pHead = p p以存在链表 中? 否 提示不能插入 开始 更新最新时间 将时间信息导入时 间结构体 结束 10 3.2.11、F11 函数:CarCost 参数:车辆信息节点 返回:车辆的费用 求解:略 流程图:右图 3.2.12、F12 函数:EditCost 参数:无 返回:无 求解:略 流程图:右图 开始 输入节点p 更新时间nowtime 套餐? Moneytime = nowtime减p储存 time(计算时间 差) Moneytime * 套餐 价格 = 价格money 输出money 结束 开始 显示修改的四个套 餐 修改全局变量里的 套餐值 结束 11 3.2.13、F13 函数:Delete 参数:首地址 删除的编号 返回:删除后的新首节点 求解:略 流程图:左图 3.2.14、F14 函数:FreeLInk 参数:链表首地址 返回:无 求解:略 流程图:右图 开始 引入链表 首地址地 址pHead 编号i 存在pHead? 是 结束 P-score.ID = i? 是 从链表中删除此节 点,释放节点 p动态指向链表 否 p到尾部? 否 未找到该节点否 提示:没有任何信 息! 是 开始 链表首地址 p为空? 释放p 否 p动态指向链表 结束 是 12 3.2.15、F15 函数:Save 参数:链表的首地址 返回:正确返回 1,错误放回 0 求解:略 流程图:右图 3.2.16、F16 函数:CreateLinkFromFile 参数: 停车车辆信息.pan 返回:新创建的链表首地址 求解:略 流程图:右图 开始 p动态指向链表 p空? P-score储存于二 进制文件中 否 Wb:车场在停 车辆信息.pan 结束 是 储存是否错误 否 Return 0 是 Return 1 开始 打开车场在停车 辆信息.pan Pan文件存在? 申请动态内存 是 以到尾部或发 生错误? p指针指向信 息.pan流 End 流内容拷贝至动态 内存 返回NULL 否 释放动态内存 将节点插入链表 是 13 3.2.17、F17 函数:Saveglovariable 参数:全局变量储存.pan 返回:无 求解:略 流程图:右图 3.2.18、F18 函数:Readvariable 参数:无 返回:无 求解:略 流程图:左图 将
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号