2023年数据结构实验报告模拟停车场管理含代码.pdf
《2023年数据结构实验报告模拟停车场管理含代码.pdf》由会员分享,可在线阅读,更多相关《2023年数据结构实验报告模拟停车场管理含代码.pdf(22页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、模 拟 停 车 场 管 理 班 级:物 联 网 姓 名:XXX 学 号:XXXXXXX 日 期:4月 9 日 一、需 求 分 析 1、程 序 的 功 能 描 述 按 照 从 终 端 输 入 的 数 据 序 列 进 行 模 拟 管 理。1)狭 道 停 车 用 栈 来 实 现,并 且 用 的 顺 序 栈,等 车 位 的 便 道 用 队 列 来 实 现,并 用 链 式 存 储。2)每 一 组 输 入 信 息 包 含 三 个 数 据 项,汽 车 的“到 达”和“拜 别”的 信 息,汽 车 牌 照 号 码,汽 车“到 达”或“拜 别”的 时 刻。3)对 每 一 组 输 入 数 据 进 行 操 作 后 的
2、 输 出 信 息 为:若 是 车 辆 到 达,则 输 出 车 辆 在 停 车 场 内 或 便 道 上 的 停 车 位 置;若 是 车 子 拜 别,则 输 出 车 辆 在 停 车 场 内 停 留 的 时 间 和 缴 纳 的 费 用。(假 设 在 便 道 等 车 的 时 间 不 收 费)4)选 作 内 容:(1)便 道 也 是 要 收 费 的,仅 仅 比 狭 道 收 费 便 宜 点。(2)狭 道 上 的 车 可 以 直 接 开 走。2,输 入/输 出 的 规 定 一 方 面 选 择 操 作 的 模 块,根 据 提 醒 输 入 车 牌 和 到 达 时 间,程 序 会 告 知 是 否 停 满 或 者
3、停 车 车 位。车 牌 为 10个 字 符 以 内 的 字 符 串,时 间 的 输 入 中 间 有 冒 号 把 时 分 隔 开。3、测 试 数 据 1 苏 D 543 1:1 01 苏 Q123 1:201 苏 D145 1:30二、概 要 设 计 1、本 程 序 所 用 的 抽 象 数 据 类 型 的 定 义 typedef s t ru c t NOD E CarNo d e*st a ckMAX+1;i n t top;JSe q S ta c k C a r;/狭 道 的 堆 栈 顺 序 存 储 t y p e def st r uct c ar C a rNode*d ata;str
4、u c tear*n e xt;Queu e N ode;队 列 的 链 式 存 储 ty p e d ef struct N o deQ u eueNod e*h e ad;Q u eu e N o d e*rea r;L i n k QueueC a r;/便 道 上 等 候 的 队 列 定 义 2、主 模 块 的 流 程 及 各 子 模 块 的 重 要 功 能 错 误!车 辆 到 达:in t A r r ival(S eqSt a ckC a r*E n ter,L i n kQ u eueCar*W)一 方 面 定 义 一 个 栈 和 队 列 的 结 构 体 指 针 为:*p,*t。
5、然 后 申 请 一 个 车 辆 信 息 的 内 存 空 间,并 把 它 赋 给 栈 指 针。车 辆 到 达 时 就 输 入 车 牌 号,并 通 过 if(E nter t opV M A X)来 判 断 该 车 是 进 车 场 内 还 是 进 便 道 上,假 如 是 进 车 场 内 就 把 t o p加 1,显 示 在 车 场 内 的 位 置,还 要 输 入 进 车 场 的 时 间,然 后 把 该 节 点 进 栈。假 如 是 e l s e 就 显 示 该 车 要 停 在 便 道 上,并 进 行 进 队 列 的 操 作。错 误!车 辆 离 开:void Le a v e(S e qS t a
6、ck C ar*En t e r,SeqSta c kC a r*Temp,L i n kQueueC a r*W)定 义 一 个 整 型 变 量 ro o m记 录 要 离 开 车 辆 的 位 置,定 义 两 个 栈 指 针 和 一 个 队 列 指 针,用 个 if(Enler-to p 0)保 证 栈 不 空,然 后 用 个 w h i l e(l)保 证 输 入 的 车 辆 离 开 位 置 的 合 法 性。假 如 不 和 法,显 示 输 入 有 误,要 重 新 输 入。通 过 while(Enter-t oproom)判 断 离 开 车 辆 的 位 置,假 如 是 中 间 位 置,就 要
7、 再 用 一 个 栈 前 面 临 时 开 出 来 的 车,等 要 开 出 的 车 开 出 后,再 把 临 时 栈 的 车 看 进 车 场 内,并 要 调 用 PRINT(p,room);这 个 函 数 计 算 显 示 费 用。然 后 还 要 用 i f(W-head!=W-rea r)&En t e r-t o p M A X)语 句 判 断 便 道 上有 没 有 车,假 如 有 车 就 要 显 示 进 车 场 的 车 的 车 牌 号,并 登 记 进 入 时 间。3、模 块 之 间 的 层 次 关 系 主 函 数 中 包 含 着 各 个 函 数 模 块,各 模 块 也 在 互 相 调 用。比
8、如,离 开 函 数 中 要 计 算 停 车 费,故 要 调 取 价 格 函 数。价 格 函 数 计 算 要 用 到 离 开 和 进 入 的 时 间,又 要 调 用 进 入 和 离 开 函 数。三、具 体 设 计 1、采 用 C 语 言 定 义 相 关 的 数 据 类 型#d e f i n e MAX 3/停 车 场 最 大 容 量 为 3 辆,便 于 观 测 ttdefin e p ric e 0.05typ e de f struct t ime/定 义 时 间 结 构 体 i n t h our;i nt min;Time;typ e def s true t node/定 义 车 辆
9、信 息 结 构 体 cha r n um 1 0;Tim e reach;Time lea v e;CarNo d e;2、写 出 各 模 块 的 伪 码 算 法 vo i d PRINT(Ca r N o de*p,i n t ro o m)/车 辆 收 费 oint A1,A2,B1,B2;printf(n 车 辆 离 开 的 时 间:”);s canf&(p-1 eave,h o u r),&(p-le a ve.m i n);printf(n离 开 车 辆 的 车 牌 号 为:);pu t s(pnum);pri n tf(0 n其 到 达 停 车 位 时 间);printf Cn离
10、开 停 车 位 时 间 为:);Al=p-r e ach.h our;A2=p-r e ach.m i n;Bl=p-1 e a ve.hour;B2=p-1 e ave.min;printf(n 应 交 费 用 为:%2.If 元,(B 1 A 1)*6 0+(B 2-A 2)*p r i c+PR I N T E(p,room);f r e e(p);)int Arriv a 1(SeqStac k Ca r*En t er,LinkQueu e Car*W)进 入 便 道 或 者 狭 道 CarNod e*p;Que u e Node*t;p=(Ca r Node*)m a Hoc(si
11、ze o f(CarNode);flushall();printf C n 请 输 入 车 牌 号(例:豫 B 12 3 4):);get s(p-num);f(Ent e r-top t o p+;pr i n t f(n 车 辆 在 车 场 第%d 位 置.Ent e r-t o p);printf(”n车 辆 到 达 时 间:);s c a n f(%d:%d&(p-reach.hour),&(p-r each,min);En t e r-s tack t o p=p;ret u r n(1);0)oelse(printf(n该 车 须 在 便 道 等 待!有 车 位 时 进 入 车 场
12、”);t=(Q u eueNo d e*)mallo c(si z e o f(Qu e ueN o d e);进 入 队 列,调 整 指 针;叩 rintf(请 输 入 进 入 便 道 的 时 间);scan f(d:%d”,&(p r each,hour),&(p-r ea c h.min);retu r n(1);v o i d L e ave(Se q S t a c kCa r*Enter,SeqSta c kCar*Temp,L i n k Q ueueCar*W)车 辆 的 离 开 oin t r o o m;Ca r N o d e*p,*t;Qu e ueNode*q;oif
13、(Ente r-top0)/判 断 车 场 是 否 为 空(whil e(1)6(。叩 rintf(n请 输 入 车 在 车 场 的 位 置/1-%d/:”,Enter t op);scanf(%d,&r oom);i f(room=l&r o o mtop)break;e Ise prin t f(n 输 入 有 误,请 重 输:);)whi 1 e(E nter-toproom)/把 要 删 除 的 车 辆 的 前 面 的 车 开 出 来,进 临 时 栈。00 T emp-top+;TempstackT e mp-top=E n te r s t ac k E n ter-top;E n
14、ter-st a ckEn t er-top=NULL;En t er-t op一;)p=Enter-sta c k En te r-top;把 要 删 除 的 车 辆 节 点 赋 给 p。E n te r-stack E n t e r top=NULL;E n te r-t o p-一;while(T empto p=1)/再 把 临 时 栈 里 德 车 辆 进 停 车 场 0(Ente r-t o p+;E n t e r-sta c k Ente r-top=Temp-s tac k T em p-t o p;T e m p-s t a ckT e m p to p=NULL;T e
15、mp-top一;JoPRINT(p,room);/调 用 计 费 函 数 计 费。if(W h ead!=W-rear)&Enter-top h e ad n e x t;t=q-da t a;Enter-top+;s c a nf(,z%d:%d”,&(t-reach.hour),&(t rea c h.min);/t leav e.hour=t-rea c h.h o ur;。/t-lea v e.min=t-r e ach.min;W-head-n e x t=q-next;r e ar)W-rear=W-h ead;tE n ter-sta c k E n t e r-t o p=t;
16、o PRINTE(t,r oom);free(q);o e 1 se p r i n t f(,z n 便 道 里 没 有 车.n);0oelse prin t f(n车 场 里 没 有 车.);)3、画 出 函 数 的 调 用 关 系 图 到 达 函 数-离 开 函 数-停 车 费 用 主 函 数-显 示 车 场 里 的 情 况 显 示 便 道 里 的 情 况 四、调 试 分 析1、调 试 中 碰 到 的 问 题 及 对 问 题 的 解 决 方 法 由 于 时 间 结 构 体 里 的 小 时,分 钟 都 是 用 的 是 整 型,所 以 假 如 出 现 1:0 1这 个 时 间 的 话,会 导
17、 致 显 示 列 表 是 1:1;这 样 的 话 会 导 致 人 的 误 解,同 时 会 导 致 程 序 对 停 车 缴 纳 的 费 用 计 算 错 误。解 决 方 法 1:可 以 用 数 组 和 或 者 字 符 串 来 表 达 时 间,但 是 问 题 来 了,要 是 用 字 符 串 的 话,算 停 车 费 有 点 问 题,要 废 上 一 段 时 间 的,会 提 高 复 杂 度。解 决 方 案 2:将 输 出 用 右 对 齐 方 式,缺 位 的 用 0 补 齐,这 样 最 快 捷 啦!2、算 法 的 时 间 复 杂 度 和 空 间 复 杂 度 由 于 没 有 进 行 循 环 嵌 套 之 类 的
18、 运 算,只 有 简 朴 的 循 环 语 句,所 以 时 间 复 杂 度 T(0)=0(n),在 数 据 的 存 储 方 面,除 了 车 牌 号 用 的 是 数 组 以 外,便 道 用 的 是 顺 序 栈,这 些 是 提 前 要 申 请 一 定 的 存 储 空 间 的,这 样 非 动 态 分 派 的 存 储 空 间,在 某 些 时 候 是 会 导 致 空 间 的 浪 费,增 长 其 空 间 复 杂 度。其 余 的 都 是 结 构 体 和 链 式 存 储 的 队 列 属 于 动 态 存 储。当 停 车 场 的 规 模 较 小 时,空 间 复 杂 度 较 小,随 着 规 模 的 增 长,动 态 存
19、 储 的 扩 充,空 间 复 杂 度 也 随 之 增 长。五、使 用 说 明 及 测 试 结 果(给 出 程 序 的 使 用 说 明、注 意 事 项 及 不 同 情 况 的 测 试 结 果)时 间 以 2 4进 制 计 算,停 车 时 间 不 能 跨 越 2 4进 制。车 牌 号 是 10个 字 符 串 以 内,不 可 溢 出。ttttttitsitttttttnttttttttttn 3.车 辆 列 表 显 示.*#“#11*#4.退 出 系 统.ititsHttitttitttitititttttttit请 选 择:i请 输 入 车 牌 号 例:豫 B i2 3 4:苏 g 23该 车 须
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2023 数据结构 实验 报告 模拟 停车场 管理 代码
限制150内