数据结构—停车场管理系统.doc

上传人:scccc 文档编号:13426124 上传时间:2021-12-25 格式:DOC 页数:14 大小:336KB
返回 下载 相关 举报
数据结构—停车场管理系统.doc_第1页
第1页 / 共14页
数据结构—停车场管理系统.doc_第2页
第2页 / 共14页
数据结构—停车场管理系统.doc_第3页
第3页 / 共14页
亲,该文档总共14页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《数据结构—停车场管理系统.doc》由会员分享,可在线阅读,更多相关《数据结构—停车场管理系统.doc(14页珍藏版)》请在三一文库上搜索。

1、理工大学华夏学院课程设计报告书课程名称:数据结构与算法分析课程设计实训名称:停车场管理系统姓 名:航院(系):信息工程系专业班级:软件1141学 号:指导教师:王云华成 绩:时间:2015年6月29日至2015年7月3日实训任务书一、题目1. 停车场管理二、实训的性质和任务数据结构实训是在完成理论课程学习之后安排的综合实践训练,要求学生能 根据数据结构中所讲到的各种数据类型以及它们顺序和链式存储,在具体的应用 中能运用并实现各种数据的各种不同操作。通过一周的综合实训,使学生加深对 如何将逻辑关系的数据按一定的存储方式存储在计算机。并为以后的编程打好基 础。三、实训的基本要求1、熟悉各种数据类型

2、及它们在计算机中的存储方式;2、熟悉各种数据类型的基本操作,各基本操作的实现。3、能综合运用各种数据类型实现一些具体的问題。四、考核指标及成绩评定实训成绩由下面构成:平时成绩(10%) +作品(70%) +实训报告(20%)二总评成绩作品成绩评定标准:1、全部完成90-1002、主要功能完成70-903、部分功能完成60-704、少部分完成40-605、几乎没做0-40完成期限:年 月 日指导教师签章:专业负责人签章:教学院长签章需求说明仅仅认识到栈和队列是两种特殊的线性表是远远不够的,本次实习的目的 在于使读者深入了解栈和队列的特征,以便在实际问题背景下灵活运用它们; 同时还将巩固这两种结构

3、的构造方法,接触较复杂问题的递归算法设计。以栈 模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行 模拟管理。每一组输入数据包括三个数据项:汽车“到达”或“离去”信息、 汽车牌照及到达或离去的时刻,对每一组输入数据进行操作后的输出数据为: 若是车辆到达,则输出汽车在停车场或便道上的停车位置;若是车离去;则输 出汽车在停车场停留的时间和应交纳的费用(在便道上停留的时间不收费)o 栈以顺序结构实现,队列以链表实现。设停车场只有一个可停放n辆汽车的狭长通道,且只有一个大门可供汽车 进出。汽车在停车场按车辆到达时间的先后顺序,依次由北向南排列(大门在 最南端,最先到达的第一辆车停放在

4、车场的最北端),若车场已停满n辆汽车, 则后来的汽车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一 辆车即可开入;当停车场某辆车要离开时,在它之后开入的车辆必须先退岀车 场为它让路,待该辆车开出大门外,其它车辆再按原次序进入车场,每辆停放 在车场的车在它离开停车场时必须按它停留的时间长短交纳费用。试为停车场 编制按上述要求进行管理的模拟程序。二、功能描述停车场管理系统主要有以下几个功能:1、汽车进入车场添加车辆信息:车牌号、进车时间,如果停车场已满,则将车辆停入临时 便道。2、汽车退出车场根据退出车辆的车牌号,进行优先退出,再根据退出时间计算停车费用。 并将临时便道中的车辆停入停车场

5、。3、退出系统三、系统设计及实现软件规格要求合理,基于c语言程序设计,在有限空间达到效果最优化。3. 1设计要求用C语言实现'停车场管理系统”。3.2系统功能(1)系统启动后,岀现用户界面,人机交互。(2)根据提示输入选项h汽车进入车场2、汽车退出车场3、退出系统(3)进入车场时录入车辆牌号、和入场时间,输出停靠的停车位置,当停 车场车位满时则停靠在临时停车便道。(4)退出车场时录入车辆牌号、和出场时间,输出停车总时间,和所停的 费用。3.3系统性能:(1)时间特性需求在网络连接正常的情况下,查询响应时间为秒级。(2)灵活性当需求发生某些变化时,机票管理应用软件操作方式、数据结构、运

6、行环境基本不会发生变化,变化只是将对应的数据文件的记录改变,或改 变过滤条件。(3)可用性软件应该尽可能的一目了然,使一般用户能够使用。(4)安全性本套职工信息系统所涉及的数据存放于文件中,在程序中应尽可能的 使用调用存储过程的方法以免使某人反编译软件后或入侵到服务器后对数 据的结构了如指掌,在程序中应该设置访问时的密码,以保证数据不容易 被错改、破坏,而且要经常对数据文件进行备份操作,使得数据一旦受到 破坏或是出错能够保证及时的恢复数据,将损失降低到最低。(5)可维护性(6)应用程序的维护当用户使用本套职工信息系统软件时,遇到了软件本身的逻辑错误时, 应当有软件的维护人员对软件进行修改。(7

7、)可转移、可转换性Visual Studio及C编程语言的兼容性很高,在windows95/98. Windows NT. windows2000. windows XP等操作系统都可以直接运行。输入项:用户通过软件输入必要的信息,然后保存到数据文件,所输入的信息 是经过需求分析限定的容,同时也是数据文件中每个字段中存储的容。输出项:本穆职工信息系统软件会将所有需要浏览的数据显示在屏幕上,以便使用户 能够浏览到数据文件中的数据或用户想要浏览围中的数据算法:1)将用户输入的数据,按字段保存到数据文件中。2)将数据文件中的数据,按字段提取到用户界面中。3)必要的去除重复项的算法。4)保持文件和输出

8、数据的一致性。注释设计:尽可能的将软件中插入注释语句,使语句功能明了。制作的时候应该制作两 分,一份是标有注释语句的代码,用来给维护人员、测试人员和开发人员了解开 发过程所用,另一份是不带有注释语句的代码,用来最后实际应用当中,这样可 以充分的利用有限的时间,降低客户的计算机打开系统功能的时间,提髙客户的 使用速度。限制条件:限制必要的条件,以排除由于用户的误操作造成不必要的错误。测试计划:在软件编辑的工作进行当中,测试人员便要开始制定测试计划,其中要包括 白盒和黑盒的具体测试项目,及其必要的测试数据和出错的信息。每次测试的结 果要写报告,并就发现和怀疑的问题与编辑人员联系。测试的结果要让编辑

9、人员 明白。通过文件存储方式将用户所录入的数据保存妥当,充分地描述了数据间的在 联系,便于数据修改、更新与扩充,同时保证了数据的独立性、可靠性、安全性 与完整性,减少了数据冗余,提高了数据共享程度及数据管理效率。3. 4设计思路及框架停车场的管理流程如下: 当车辆要进入停车场时,检查停车场是否已满,如果未满则车辆进入停车场; 如果停车场已满,则车辆进入便道等候。 当车辆要求出栈时,先让在它之后进入停车场的车辆退出停车场为它让路,再 让该车退岀停车场,让路的所有车辆再按其原来进入停车场的次序进入停车场。之后, 再检查在便道上是否有车等候,有车则让最先等待的那辆车进入停车场。四、各功能模块1、交互

10、菜单2、汽车进入停车场123、汽车退出停车场五、总结短学期的课程设计是一次非常珍贵的机会,这是一次可以让我们 所学的理论与实际相结合的机会。其实个人而言,我体会较深的一点 是团队互相帮助学习的过程,自己看书学习的经验,以及从网上以及 其他各种途径获得信息和知识的经验。理论与实际相结合的设计,锻 炼了我综合运用所学的基础知识,解决实际问题的能力,同时也提高 我查阅文献资料、对程序整体的把握等其他能力水平。而且通过对整 体的掌控,对局部的取舍,以及对细节的斟酌处理,都使我的能力得 到了锻炼,我的各方面经验都得到了极大的丰富。“课程设计是培养 学生综合运用所学知识、发现、提出、分析和解决实际问题锻炼

11、实践 能力的重要环节,是对学生实际工作能力的具体训练和考察过程。”在 这次课程设计的过程中,我深深地体会到了理论与实践结合的过程, 当实践成功时的成就感,从整个过程中我受益匪浅。六、附录#include<stdio. h>#include <stdlib. h>#include<string h>#include<math h>ttdefine size 1 /停车场位置数/模拟停车场的堆栈的性质;typedef struct zanlindint number; /汽车车号float ar_time; /汽车到达时间zanlnode; type

12、def struct zan I node *base ; /停车场的堆栈底 zanlnode *top; /停车场的堆栈顶 int stacksize curren;stackhead;堆栈的基本操作;void initstack(stackhead &L) /构造一个空栈 LL. base=(zanlnode*)malloc(size*sizeof(zanlind); if (!L. base) exit (0):/存储分配失败L.top=L base;L stacksize curren=O;void push (stackhead &Lt zanlnode e) /插入

13、元素 e 为新的栈顶元素*L.top+=e;L.stacks i ze_curren+;void pop (stackhead & L, zanlnode &e) /若栈不为空删除L的栈顶元素用e返回其值if (L top=L. base)printfC停车场为空!");return;e=*-L. top;L. stacksize curren-;模拟便道的队列的性质;typedef struct duilieint number; /汽车车号float ar_time; /汽车到达时间struct duilie *next;*queueptr;typedef str

14、uct queueptr front; /便道的队列的对头queueptr rear; /便道的队列的队尾int length;linkqueue;队列的基本操作;void initqueue(1 inkqueue &q) /构造一个空队列 qq. front二q. rear=(queueptr)ma1loc(s i zeof(du i1ie);i f (! q. front 丨丨! q. rear)exit(O);/存储分配失败q. front->next=NULL;q. length二0;void enqueue(1 inkqueue &q, int number,

15、int ar time) /把元素的插入队列尾(属性为 number, ar time)queueptr p;p=(queueptr)malloc(sizeof(dullie);if(!p) exit(0):p->n umbewiinnber;p->ar time=ar time;p->next=NULL;q. rear->next=p;q. rear=p:q.length+;void popqueue (linkqueue &q. queueptr &w) ar_time)queueptr p;if (q. front=二q. rear)printfC

16、'停车场通道为空");return;p二q. front->next;w=p;q. front->next=p->next;q. length-一;if (q. rear=p) q. front=q. rear;/存储分配失败/删除q的队头元素(属性为number >求时间差的子程序float shijiancha(float x,float y) int shixf shiy,fenx,feny; float shijiancha; shix=x;shiy=y;fenx=(int)(x-shix)*100);feny=(int)(y-shiy)*10

17、0);if(fenx>feny)shijiancha= (shiy-shix-l) +(float)(feny+60-fenx) /100;elseshi jiancha=(shiy-shi x) + (float)(feny-fenx)/100; return shijiancha;/对进入停车场的汽车的处理;void jinru(stackhead &st,1 inkqueue &q) int number;float time a;printf ("请输入车牌号:");scanf ('*%d * , &number);printf

18、C请输入您进车场的时间(比如说:8点半则输入8.30):"); scanf C%f" ,&ti me a);if(ststacksize curren<2)zanlnode e;e. number=number;e. ar time=time a;push(st,e);printf (M请把你的车停在%d 号车道nnn, st. stacksize curren):else(enqueue(q,number,time a):printfC停车场已满,请把你的车停在便道的第%d个位置上",q. length);void likai (stackhead

19、 &st, stackhead &si, 1 inkqueue &q)/对离开的汽车的处理;(/st堆栈为停车场,S1堆栈为倒车场int number, flag=l;/q 为便道队列float sh,time dtarrivaltime,money1;printf (M请输入您的车牌号:); scanf ("%dH,ftnumber);printfC'请输入您出车场的时间(比如说:8点半则输入8. 30):"); scanf (叫f ",&time_d); zanlnode e,q to_s;queueptr w;whil

20、e (flag)找到要开出的车,并弹出停车场栈(pop(st,e);push(si,e);if (e. numberHnumber)(flag=0;arrivaltime=e.ar time;sh=shijiancha(arrivaltime,time d);money1=(int)sh*2+(sh-(int)sh)*100/30;pop (si, e);/把临时堆栈的第一辆车(要离开的)去掉;while(sl. stacksize_curren) /把倒车场的车倒回停车场pop(sl.e);push(st,e);if (st. stacksize curren<2&&q

21、. length !=0)/停车场有空位,便道上的车开进入停车场popqueue(q,w):q_to s. ar_time=time d;q to s. numbei'二w-number;push(st,q_to_s);printfC车牌为d的车已从通道进入停车场,所在的停车位 为 %d:n*,q to s.number,ststacksize curren):printf ("n 收据"):printf (n车牌号:%dnwf number);printf(M+nn);printf (M进车场时间:4. 2fnu.arrivaltime);printf (n出车场

22、时间:%4. 2fnw. time d);printf (n停留时间:4. 2fnM, sh):printf (M 应付(元)%4. 2fnn,money 1):printf ('* +nn”);void main()(int m=100;char flag;stackhead sting,siinshi: linkqueue 1ine; initstack(sting); initstack(slinshi); initqueue(line); while(m)/进入或离开的标识;/停车场和临时倒车场堆栈的定义;/队列的定义;/构造停车场堆栈sting/构造倒车场堆栈slinship

23、rintf(Hn* 车 场管理*);/构造便道队列line nt"""ZmZZZZZ:ZZZmZmmZmIZZZZZZmZwZZZm*) printfC'Xn*温馨提示:请车主在24:00之前来取车,给您带来的不便,敬请原谅!*"); printf (Hn* 1 *汽车进车场2 *汽车出车场 3 *退出程序 *"):printf("n*二 printf(nn请输入您需要的服务的代号(1、2、3),! nB);*H);scanf(n%cw,&flag);switch(flag)(汽车进车场/汽车出车场case T: jinru(sting, line) ;break;case 2: 1ikai(sting,siinshi,line):break:case 3: exit(0):m;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1