欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载  

    数据结构课程设计停车场模拟管理系统报告.doc

    • 资源ID:2396751       资源大小:1.17MB        全文页数:19页
    • 资源格式: DOC        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    数据结构课程设计停车场模拟管理系统报告.doc

    计算机科学技术学院数据结构课程设计报告专 业: 计算机科学与技术 班 级: 计13-1 学 号: 24、25 姓 名: 王莹、肖林英 课设题目: 停车场模拟管理系统 指导教师: 姜卓 2014-12-23目 录 一、设计题目1二、设计目的1三、总体设计1(一)问题描述1(二)设计要求1(三)数据结构1四、详细设计2(一)分析与实现2(二)系统模块设计2(三)界面设计3五、设计结果与分析4六、总结(收获和不足)5(一)课设的不足5(二)课设的收获5附录 程序源码5参考文献:16指导教师意见16一、设计题目停车场模拟管理系统。二、设计目的利用所学的知识,模拟设计一个停车场管理系统。通过程序设计,了解停车场的工作情况以及是怎么实现停车的,模拟车辆的进入停车场、离开停车场的情况,和收费情况。三、总体设计(一)问题描述假设停车场可以停放n辆车的狭长通道,而且只有一个入口出口,汽车进入停车场的停放按照先进先放的顺序,依次排满车道。当停车场已经停满时(已存放了n辆汽车),想进入停车场的车就只能在便道上等待,等到停车有车离开时,便道上的第一辆车进入停车场。当停车场内的某辆车要离开时,在它后面的车必须离开让出一条道路来,待车开走后,让路的车依次进入停车场,车辆离开时,按时间缴纳费用。(二)设计要求用栈模拟停车场,用队列模拟停车场外面的等车便道,按照终端输入数据的方式进行模拟管理。输入1,表示车辆到达;输入2,表示车辆离开;输入3,表示列表显示停车场内外情况;输入4,表示系统帮助;输入5,表示查询车辆;输入0,表示退出程序。车辆进入停车时,要输入车牌号码和到达时间;车辆离开时,要输入停车场车位号和离开时间,并显示应收费额;车辆查询时,要输入车牌号码;系统帮助,则是一些关于本系统的操作介绍。(三)数据结构本课程设计使用的数据结构有:顺序栈和链式队列。四、详细设计(一)分析与实现1、模拟停车场的车辆进出需要输入车辆的信息,比如车辆的车牌号码、到达时间、离开时间,因此,可以定义一个车辆信息结点类型和一个时间节点类型,在顺序栈和链式队列中定义结点类型为车辆信息结点类型。2、车辆离开时,需要打印输出车辆的车位号、到达时间、离开时间以及应缴纳的费用。定义print()函数实现。3、车辆到达时要输入车辆的信息,并以此存放在停车场内;没进入一辆车,要判断停车场(顺序栈)是否已经停满,若已满,则提示该车要在便道上等待;若未满,则进行进栈操作。4、车辆的离开,要另外设计一个栈,当一辆汽车要离开时,在其后的车辆要给其让路,让路的汽车就暂时停放在这个栈中。车辆离开后,要判断便道上是否有车辆在等待,若有则进行入栈操作,即将车辆的信息结点进行入栈操作,这时要输入当前时间,今儿进行出队操作,表示车辆已经离开便道进入停车场。5、系统帮助则只需设计一个函数,将要说明的东西写进去,可以直接调用。6、车辆的查询,既可以查询停车场内的车辆,也可以查询便道上等待的车辆,查询时要输入正确的车牌号码,并显示车辆的当前情况。(二)系统模块设计主函数用户操作界面车辆停靠车辆离开车辆到达退出程序(三)界面设计1、主菜单界面2、 车辆到达界面 3、 车辆离开界面 4、 车辆停靠界面 停车场情况便道停车情况5、退出系统 五、设计结果与分析测试结果已达到我们预期的结果,可以模拟实现车辆的进入、离开停车场,可以大体上让人了解到停车场的工作情况。六、总结(收获和不足)(一)课设的不足本次课程设计完成的系统,只能简单的模拟停车场的车辆进出、收费情况和查询功能,没有将进入停车场的车辆信息进行存盘保存。而且功能单一,有车离开时,还有可能要其他的车退出停车场让车(不够人性化);模拟的停车场只是一个狭长的通道,存放的车辆只能是一种类型的,即占地面积是一样的;按道理停车场可以存放各种类型的车,各种车的收费标准也应该不一样,这都应该是要完善的。(二)课设的收获本次课设,我们组选了停车场模拟管理系统来做,在这个题目里,只用到了两个数据结构:顺序栈和链式队列。顺序栈模拟停车场,队列模拟便道。通过这次课设,确实对我们的水平提高了很多,至少再次熟悉了本学期所学的栈和队列的使用和应用。记得在刚开始的时候,看到课设指导书上面的题目,感觉自己什么都做不出来,所以迟迟不敢动手。当时间一天天逼近时,不能再拖了,就只能开工了。抱着试一试的心态,我们参考着资料上面的指示,一步一步地做,居然做出了一个简单的系统;最后,对系统做了些完善(虽然还不是很完善),在此对同组的小伙伴表示感谢!通过这次课设,我们再次强烈的感受到:只要敢于尝试,很多我们自己认为做不到的事情都是可能做到的。勇于尝试,定有收获!附录 程序源码#include<iostream>#include<string>#include <stdlib.h>#include <stdio.h>#include <graphics.h>#include <conio.h>using namespace std;#define MAX 3 /停车场车位数#define price 0.05 /每分钟收取的费用typedef struct time int hour; int min;Time;/定义时间结点typedef struct node string num; Time reach; Time leave;CarNode;/定义每辆车的牌号,进入时刻,开出时刻typedef struct NODE CarNode *stackMAX+1; int top;SeqStackCar;/用栈定义,构造停车场typedef struct car CarNode *data; struct car *next;QueueNode;/用队列结点定义,构造停车场外的单个等候车辆typedef struct Node QueueNode *head; QueueNode *rear;LinkQueueCar;/用队列定义,构造停车场外的等候便道void InitStack(SeqStackCar *); /初始化堆栈函数声明int InitQueue(LinkQueueCar *); /初始化队列头结点函数声明int Arrival(SeqStackCar *,LinkQueueCar *); /车辆进入时登记函数声明void Leave(SeqStackCar *,SeqStackCar *,LinkQueueCar *);/车辆离开时函数声明void List(SeqStackCar,LinkQueueCar); /查看停车场内车辆情况及便道上车辆情况的函数声明void myouttextxy(int x, int y, LPCTSTR s); /绘制滚动文字void myouttextxy(int x, int y, LPCTSTR s)static IMAGE tmp;/ 用来保存被文字覆盖的区域背景if (s = NULL)/ 恢复区域putimage(x, y, &tmp);elseint w = textwidth(s);/ 获取字符串占用的宽度int h = textheight(s);/ 获取字符串占用的高度/ 保存区域getimage(&tmp, x, y, w, h);/ 文字输出outtextxy(x, y, s); /车辆进入int Arrival(SeqStackCar *Enter,LinkQueueCar *W) CarNode *p; QueueNode *t; p=new CarNode; cout<<"-"<<endl; cout<<"车辆到达登记开始:"<<endl; cout<<endl<<"请输入车牌号:" cin>>p->num; if(Enter->top<MAX)/如果车位未满则进停车场内 Enter->top+; cout<<endl<<"车辆在车场第"<<Enter->top<<"位置."<<endl; cout<<endl<<"车辆到达时间:"cout<<"(例:11 11)"<<endl; cin>>p->reach.hour>>p->reach.min; cout<<endl<<"车辆到达登记完毕!"<<endl; cout<<"-"<<endl; Enter->stackEnter->top=p; return 1; else /如果车位已满,则停靠在便道上 cout<<"-"<<endl; cout<<endl<<"车位已满,请稍等"<<endl; t=new QueueNode ; t->data=p; t->next=NULL; W->rear->next=t; W->rear=t; return 1; void InitStack(SeqStackCar *s) /堆栈初始化 s->top=0; s->stacks->top=NULL;int InitQueue(LinkQueueCar *Q)/队列初始化 Q->head=new QueueNode ; if(Q->head!=NULL) Q->head->next=NULL; Q->rear=Q->head; return 1; else return -1;void PRINT(CarNode *p,int room) /输出离开停车场的车辆情况 int A,B,C,D; cout<<"n车辆离开的时间:" cout<<"(例:11 11)"<<endl; cin>>p->leave.hour>>p->leave.min; cout<<"离开车辆的车牌号为:" cout<<p->num; cout<<endl<<"其到达时间为: "<<p->reach.hour<<":"<<p->reach.min; cout<<"离开时间为: "<<p->leave.hour<<":"<<p->leave.min; A=p->reach.hour; B=p->reach.min; C=p->leave.hour; D=p->leave.min; cout<<endl<<"应交费用为: "<<(C-A)*60+(D-B)*price<<"元"<<endl;delete p;void Leave(SeqStackCar *Enter,SeqStackCar *Temp,LinkQueueCar *W) int room; CarNode *p,*t; QueueNode *q; if(Enter->top>0) while(1) cout<<"-"<<endl; cout<<"车辆离开登记开始:"<<endl; cout<<endl<<"请输入车在车场的位置/1-"<<Enter->top<<"/:" cin>>room; if(room>=1&&room<=Enter->top) break;while(Enter->top>room)/从停车场堆栈向中转堆栈移动车辆,直到要离开车辆的位置停止 Temp->top+; Temp->stackTemp->top=Enter->stackEnter->top; Enter->stackEnter->top=NULL; Enter->top-; p=Enter->stackEnter->top; Enter->stackEnter->top=NULL; Enter->top-;while(Temp->top>=1)/将中转堆栈中的车辆移回停车场堆栈 Enter->top+; Enter->stackEnter->top=Temp->stackTemp->top; Temp->stackTemp->top=NULL; Temp->top-;cout<<"-"<<endl;cout<<"车辆离开登记结算:"<<endl;PRINT(p,room);if(W->head!=W->rear)&&Enter->top<MAX) q=W->head->next; t=q->data; Enter->top+; cout<<endl<<"便道的"<<t->num<<"号车进入车场第" cout<<Enter->top<<"位置."<<endl; cout<<"请输入"<<t->num<<"号车进入车场的时间:" cin>>t->reach.hour>>t->reach.min; W->head->next=q->next; if(q=W->rear) W->rear=W->head; Enter->stackEnter->top=t; delete q;else cout<<endl<<"便道里没有车"<<endl;else cout<<endl<<"车场里没有车."<<endl; void List1(SeqStackCar *S) /查看停车场内车辆情况的函数定义 int i;if(S->top>0) cout<<"-"<<endl; cout<<endl<<"车场内部车辆停靠情况:"<<endl; cout<<endl<<"位置 到达时间 车牌号"<<endl; for(i=1;i<=S->top;i+) cout<<i; cout<<" "<<S->stacki->reach.hour<<":"<<S->stacki->reach.min; cout<<" "<<S->stacki->num<<endl;else cout<<endl<<"车场里没有车"<<endl; cout<<"-"<<endl;void List2(LinkQueueCar *W) /查看便道上停靠车辆情况的函数定义 QueueNode *p; p=W->head->next; if(W->head!=W->rear) cout<<"-"<<endl; cout<<endl<<"便道停靠车辆情况:"<<endl;while(p!=NULL) cout<<endl<<"车辆牌号:" cout<<p->data->num<<endl; p=p->next; else cout<<endl<<"便道里没有车."<<endl; cout<<"-"<<endl;void List(SeqStackCar S,LinkQueueCar W) /车辆列表显示函数 int flag,tag; flag=1;while(flag) cout<<"-"<<endl; cout<<"车辆停靠查询开始:"<<endl; cout<<endl<<"请选择 1|2|3:"<<endl; cout<<"1.车场列表"<<endl<<"2.便道列表"<<endl<<"3.返回主菜单"<<endl;while(1) cin>>tag; if(tag>=1|tag<=3) break; else cout<<endl; cout<<"错误,请选择 13任意数字:"switch(tag) case 1:List1(&S); cout<<"车辆停靠查询结束!"<<endl;break; case 2:List2(&W); cout<<"车辆停靠查询结束!"<<endl;break; case 3:flag=0;break; default: break;cout<<"-"<<endl;/主函数int main( ) system("color 5F"); / 创建绘图窗口initgraph(640, 480);/ 定义字符串TCHAR s = _T(" 制作人:王莹 肖林英");TCHAR ss = _T(" 请按“Esc”键进入管理系统 ");TCHAR ssss = _T(" 计算机科学与技术专业13-1班");TCHAR sss = _T("数据结构课程设计:停车场管理系统");/ 创建绘图窗口 / 初始化int w = textwidth(s);/ 获取字符串占用的宽度int h = textheight(s);/ 获取字符串占用的高度IMAGE tmp;/ 定义临时对象,保存被文字破坏的背景/ 绘制背景for(int i = 0; i < 640; i+)setlinecolor( HSLtoRGB(float)i, 1.0, 0.3) );line(i, 0, i, 479);/ 设置文字效果settextcolor(WHITE);/ 设置文字颜色为白色setbkmode(TRANSPARENT);/ 设置文字背景为透明色/ 绘制移动的文字 for(int j = 0; j < 600; j+)/ 绘制文字myouttextxy(j, 200, s); myouttextxy(j, 250, ss);myouttextxy(j, 150, ssss);myouttextxy(j, 100, sss);Sleep(10);/ 擦掉文字myouttextxy(j, 200, NULL);myouttextxy(j, 250, NULL);myouttextxy(j, 150, NULL);myouttextxy(j, 100, NULL);/ 退出_getch();closegraph(); SeqStackCar Enter,Temp;/初始栈,中转栈 LinkQueueCar Wait;/便道队列 int a; InitStack(&Enter); InitStack(&Temp); InitQueue(&Wait);/初始化while(1) cout<<"*"<<endl;cout<<"* (_)欢迎光临停车场()*"<<endl;cout<<"* .-. *"<<endl;cout<<"* *"<<endl;cout<<"* / *"<<endl;cout<<"* _(.-. _._ .-.)_ *"<<endl;cout<<"* (_)-' _()_ -'(_) *"<<endl;cout<<"* (._|LESTER|_.) (_)欢迎光临停车场() *"<<endl; cout<<"* | | | | *"<<endl; cout<<"* -' -' *"<<endl; cout<<"* *"<<endl;cout<<"* *"<<endl; cout<<" *"<<endl;cout<<"* *"<<endl;cout<<"* *"<<endl;out<<"*"<<endl; cout<<endl<<" 车辆到达登记->请按 1 "<<endl; cout<<"n 车辆离开登记->请按 2 "<<endl; cout<<"n 车辆停靠查询->请按 3 "<<endl; cout<<"n 退 出 系 统 ->请按 4 "<<endl; cout<<"*"<<endl; /系统选项设置 while(1) cin>>a; if(a>=1&&a<=4) break; else cout<<endl<<"输入错误,请选择: 14." switch(a) case 1:Arrival(&Enter,&Wait);break;/调用入停车场函数 case 2:Leave(&Enter,&Temp,&Wait);break;/调用出停车场函数 case 3:List(Enter,Wait);break;/调用查看函数 case 4:exit(0); default: break; 参考文献:1 谭浩强. C程序设计(第三版). 清华大学出版社.2 马春江,付勇智,孟繁军. 数据结构与程序构建. 清华大学出版社.3 滕国文. 数据结构课程设计. 清华大学出版社. 指导教师意见第 15 页 共 19 页

    注意事项

    本文(数据结构课程设计停车场模拟管理系统报告.doc)为本站会员(laozhun)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开