收藏 分享(赏)

软件工程课程设计_停车管理系统(包含源代码).doc

上传人:tangtianxu1 文档编号:2938522 上传时间:2018-09-30 格式:DOC 页数:26 大小:188.85KB
下载 相关 举报
软件工程课程设计_停车管理系统(包含源代码).doc_第1页
第1页 / 共26页
软件工程课程设计_停车管理系统(包含源代码).doc_第2页
第2页 / 共26页
软件工程课程设计_停车管理系统(包含源代码).doc_第3页
第3页 / 共26页
软件工程课程设计_停车管理系统(包含源代码).doc_第4页
第4页 / 共26页
软件工程课程设计_停车管理系统(包含源代码).doc_第5页
第5页 / 共26页
点击查看更多>>
资源描述

1、I学 年 设 计课程名称: 软件工程学年设计实验项目: 停车场收费管理系统姓 名: XXX专 业: 计算机科学与技术班 级: XXX学 号: XXXX指导教师 XXXII计算机科学与技术学院实验教学中心XXXX 年 XX 月 XX 日摘要 目前,我国经济逐渐发达,自行车王国逐步向汽车进军。因此,大量的停车场也随之而至。虽然某些大型停车场在工作中已经开始向计算机化靠拢,但仍不够完善。而中小型停车场更为稀少,陈旧的管理手段给顾客带来极大的不便,同时为了提高工作效率及服务质量,一套完整的停车厂管理系统的出现就十分必要了。本次设计,仅为一个简单的小型停车场管理系统。采用 C 语言编写,为dos 界面。

2、主要强调车辆的进站和出站操作,以及车场和通道之间的相互关系。根据车场内车道狭长且为一边开口的特点,将车道用先进后出的栈结构来描述。外面狭长的通道,为先进先出,可采用队列结构,为方便起见,采用链式队列结构来描述。本程序中的数据对象是汽车,为使操作更方便,将给每辆进车道的汽车编号,根据编号出场。其中,还包括入场时间、出厂时间、收取费用等项。关键字:停车场管理系统 栈结构 队列结构 软件工程 III目录1 需求分析 .11.1 引言 11.1.1 设计目的 11.1.2 任务概述 11.2 基本要求 11.3 系统用户分析 .21.4 用数据流程图描述 .22 概要设计 .42.1 设计思想 42.

3、2 实现方法 42.3 主要模块 42.4 各模块的主要功能及实现 52.2.1 车辆到达模块 52.2.2 车辆离开模块 52.2.3 停车场内与通道停放车辆的信息模块 52.2.4 获取时间 62.5 函数间调用关系 .63 详细设计 .83.1 界面及各模块详细设计 84 系统测试 .104.1 功能测试 104.1.1 车进站时车牌号的测试 105 总结 .125.1 用户手册 125.2 设计体会 12参考文献 13附 1401 需求分析1.1 引言1.1.1 设计目的a.通过课程设计,加深对软件工程思想的理解,能对系统功能进行分析,并设计合理的模块化结构。b. 通过课程设计,提高程

4、序开发功能,能运用合理的控制流程编写清晰高效的程序。通过课程设计,训练 C 程序调试能力,能将一个中小型各级组织系统联调通过。c. 通过课程设计,开发一个中小型系统,掌握运用软件工程思想研来发系统全过程。d. 通话课程设计,培养分析问题、解决实际问题的能力。1.1.2 任务概述设有一个可以停放 20 辆汽车的狭长停车场,它只有一个大门可以供车辆进出。车辆按到达停车场时间的早晚依次从停车场最里面向大门口处停放(最先到达的第一辆车放在停车场的最里面) 。如果停车场已放满 20 辆车,则后来的车辆只能在停车场大门外的通道上等待,一旦停车场内有车开走,则排以便道上的第一辆车就进入停车场。停车场内如有某

5、辆车要开走,在它之后进入停车场的车都必须先退出停车场为它让路,待其开出停车场后,这些辆再依原来的次序进场。每辆车在离开停车场时,都应根据它在停车场内停留的时间长短交费。如果停留在便道上的车未进停车场时,允许其离去,不收停车费,并且仍然保持在通道上等待的车辆的次序。编制一程序模拟该停车场的管理 。要求程序输出每辆车到达后的停车位置(停车场或便道上) ,以及某辆车离开停车场应交纳的费用和它在停车场内停留的时间。1.2 基本要求1要求程序输出每辆车到达后的停车位置(停车场) ,以及某辆车离开停车场应交纳的费用和它在停车场内停留的时间。1.3 系统用户分析“停车场管理系统”主要是针对车辆存取工作而开发

6、的应用软件。通常有系统管理员、停车场车辆管理员和顾客三种用户,他们的使用权限如下:系统管理员:计算机人员,对系统进行维护。图书管理员:对停车信息进行数据操作。顾客:仅限于查阅。1.4 用数据流程图描述图 1-1 是根据操作流程建立的流程图。表 1-1 是车能否进停车场的判定表。图 1 -1 停车场流程图2表 1-1 进站停车判定表车场内车数 20 20车牌号位数 5 2 且5 2 且2 and top=-1;14int isemptystack(SeqStack *s)/判断栈是否为空if(s-top=-1)return 1;else return 0;int isfullstack(SeqS

7、tack *s)/判断栈是否为满if(s-top=Maxsize-1)return 1;elsereturn 0;void push(SeqStack *s,struct car x)/进栈if(!isfullstack(s)s-top+;s-ds-top=x;struct car pop(SeqStack *s)/取栈顶元素,出栈car x;if(s-top!=-1)x=s-ds-top;s-top-;return x;car gettop(SeqStack*s)/取栈顶元素car x;if(s-top!=-1)x=s-ds-top;return x;15typedef struct sln

8、ode/定义链队列的结点性质struct car data;struct slnode *next;slnodetype;typedef struct /定义链的性质slnodetype *head;slnodetype *rear;linkq;void initq(linkq*q)/初始化链队列q-head=(slnodetype*)malloc(sizeof(slnodetype);q-rear=q-head;q-head-next=null;q-rear-next=null;void addq(linkq*q,struct car x)/进队列 slnodetype *p;p=(slno

9、detype*)malloc(sizeof(slnodetype);p-data=x;p-next=null;q-rear-next=p;q-rear=p;struct car delq(linkq *q)/出链队列slnodetype *p;struct car x;if(q-head!=q-rear)p=q-head-next;if(p-next=null)x=p-data;q-rear=q-head;16free(p);elseq-head-next=p-next;x=p-data;free(p);return x;int isemptyq(linkq *q)/判断链队列是否为空if(q

10、-rear=q-head)return 1;elsereturn 0;void printstack(SeqStack *s)/车进站时输入信息显示,及提示站内情况int i;if(isemptystack(s) printf(“车站内没有车。“);elseprintf(“tt 车站内n 位置t 车牌t 进站时间t 站内状况n“);for(i=0;itop;i+)printf(“n“);printf(“%dt“,s-di.position);printf(“%st“,s-di.num);printf(“%st“,s-di.intime);printf(“共%d 辆“,s-top+1);if(s

11、-top=Maxsize-1)printf(“(已满)n“);elseprintf(“(还能放%d 辆)n“,Maxsize-1-s-top);17printf(“n“);void printout(struct car *x)/出站时的信息printf(“车牌 进站时间 进/出站 出站时间 原来位置 停留时间(秒) 费用(角)n“);printf(“%s “,x-num);printf(“%s “,x-intime);printf(“出 “);printf(“%st“,x-outtime);printf(“%dt“,x-position);printf(“%dt“,x-delay);prin

12、tf(“t%dn“,x-expense);void printq(linkq *q) /进过道信息if(!isemptyq(q)slnodetype*p;p=q-head-next;printf(“t 过道:n 车牌:t 进道时间:n“);printf(“%st%sn“,p-data.num,p-data.intime);while(p-next!=null)p=p-next;printf(“%st%sn“,p-data.num,p-data.intime);elseprintf(“n 过道上有没有车在等待n“);void review(SeqStack*s,linkq*q)/查看车站和过道上

13、的情况printf(“*n“);printstack(s);18printq(q);printf(“*n“);void gettime(char a)/获取时间int i;static char nowtime30;time_t t;time(strcpy(nowtime,ctime(for(i=0;i5)printf(“车牌号位数不对!“);for(i=0;itop;i+)if(!(strcmp(k.num,s-di.num)flg=1;while(1)if(flg=1)printf(“车牌号已存在!n“);gets(k.num);19elsebreak;gettime(nowtime1);

14、strcpy(k.intime,nowtime1);/fprintf(fp,“车牌号 %s 时间: %sn“,k.num,k.intime); if (!isfullstack(s)push(s,k);printstack(s);else if(isfullstack(s)|!isemptyq(q)/若过道上还有车,则必须放在过道上printf(“*警告*n 车站已满,请暂时放在过道。n 现在情况如下:n“);k.position=Maxsize;addq(q,k);/放在过道上printstack(s);/输入车站情况printq(q);/同时输入当时过道上的情况printf(“*n“);v

15、oid outcar(SeqStack *s,linkq *q) /车出站SeqStack p; /申请临时放车的地方init(char nowtime10;int i,pos;long cost;int hour,min,sec;20struct car x,b,y1,y2,z;if(isemptystack(s)printf(“车站是空的,不能再出站了!n“);printf(“a“);elseprintf(“现在车站的情况是:n“);printstack(s);printf(“你要出站的车的序号是:n“);scanf(“%d“,if(pos0ipos;i-)x=pop(s);x.posit

16、ion=x.position-1;push(b=pop(s);gettime(nowtime);strcpy(b.outtime,nowtime);hour=(b.outtime0-0)*10+(b.outtime1-0)-(b.intime0-0)*10+(b.intime1-0);min=(b.outtime3-0)*10+(b.outtime4-0)-(b.intime3-0)*10+(b.intime4-0);sec=(b.outtime6-0)*10+(b.outtime7-0)-(b.intime6-0)*10+(b.intime7-0);b.delay=hour*3600+min

17、*60+sec;cost=b.delay;b.expense=cost;printout(/输出车出站时的情况-进入时间,出站时间,原来位置,花的费用等while(!isemptystack(push(s,z);if(!isfullstack(s)21strcpy(y1.intime,nowtime);push(s,y1);while(!isfullstack(s)push(s,y2);else printf(“有没有你要的车号n“);printf(“a“);int main()SeqStack park;linkq q;init(initq(char mess10;/fp=fopen(“ca

18、r_list.text“,“w“);printf(“ttt 车场管理系统 ntttn*nn“);printf(“提示:车站内最多只能放 Maxsize(由系统中定义)辆车,多余的暂时放在过道上。n 车站内收费标准:1 角/秒,过道上不收费。n“);printf(“n 你想进行什么操作?nIN- 车进站nOUT-车出站nLIST-查看车站及过道中的情况nHELP-获取帮助nEND-退出系统n“);printf(“n 操作:“);gets(mess);while(1)if(strcmp(mess,“END“)=0)22printf(“ttt 欢迎下次再来,再见!n“);break;else if(

19、strcmp(mess,“HELP“)=0)printf(“n 你想进行什么操作?nIN-车进站nOUT-车出站nLIST-查看车站及过道中的情况nHELP-获取帮助nEND-退出系统nn“);printf(“操作:“);clear(mess);gets(mess);elseif(strcmp(mess,“LIST“)=0)review(printf(“操作:“);else if(strcmp(mess,“IN“)=0)incar(printf(“操作:“);else if(strcmp(mess,“OUT“)=0)outcar(elseprintf(“操作:“);clear(mess);gets(mess);/问题:车牌号位数且车牌号可以重复

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

当前位置:首页 > 实用文档 > 课程设计

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报