停车场管理系统—C语言课程设计
- 格式:doc
- 大小:287.50 KB
- 文档页数:12
c语言停车场 课程设计一、课程目标知识目标:1. 理解C语言中数组、函数和指针的基本概念,并能运用这些知识解决实际问题。
2. 学会使用C语言编写简单的停车场管理系统,掌握基本的编程技巧和逻辑思维能力。
3. 了解停车场管理系统的基本功能,如车位分配、查询、车辆进出等。
技能目标:1. 能够运用数组、函数和指针等C语言知识,设计并实现一个简单的停车场管理系统。
2. 培养学生分析问题、解决问题的能力,以及编程实践和调试技巧。
3. 提高学生的团队协作能力和沟通能力,通过小组合作共同完成课程项目。
情感态度价值观目标:1. 培养学生对计算机编程的兴趣和热情,激发学生主动探索新知识的精神。
2. 引导学生认识到编程在实际生活中的应用价值,提高学生对信息技术的重视程度。
3. 培养学生的责任感和使命感,使他们认识到停车场管理系统在现代社会中的重要性。
课程性质:本课程为实践性较强的学科,结合实际生活中的停车场管理系统,培养学生运用C语言编程解决问题的能力。
学生特点:考虑到学生所在年级,已具备一定的C语言基础,对数组、函数和指针等概念有初步了解,但实际应用能力有待提高。
教学要求:注重理论与实践相结合,强调动手实践,培养学生实际编程能力。
通过小组合作,提高学生的团队协作能力和沟通能力。
在教学过程中,关注学生的个体差异,因材施教,确保每个学生都能在课程中学有所获。
二、教学内容1. C语言基础知识回顾:数组、函数和指针的基本概念及其应用。
2. 停车场管理系统需求分析:介绍停车场管理系统的基本功能,如车位分配、查询、车辆进出等。
3. 系统设计:- 数据结构设计:数组、结构体等。
- 函数设计:功能模块划分,如车位分配、查询、车辆进出等。
- 指针应用:动态内存分配、函数指针等。
4. 编程实践:- 编写主程序框架,实现系统初始化。
- 编写功能模块,如车位分配、查询、车辆进出等。
- 整合各功能模块,形成完整的停车场管理系统。
5. 调试与优化:分析程序运行过程中可能出现的错误,进行调试和优化。
停车场管理系统c语言- 第二学期《高级语言程序设计》课程设计报告题目:停车场管理系统专业:计算机科学与技术班级:15级计科<1>班姓名:胡玉玉指导教师:陈广宏成绩:计算机学院年 4月 25 日目录1. 设计内容及要求 (1)1.1 课程设计内容 (1)1.2 课程设计的要求 (2)2 概要设计 (3)2.1 设计思路 (3)2.2 程序基本框架结构图 (4)3 设计过程或程序代码 (5)3.1 主要程序代码及解释 (5)4 设计结果与分析 (13)4.1 程序运行结果截图与分析 (13)5参考文献 (16)1.设计内容及要求1.1 课程设计内容①经过本次课程设计,强化上级动手能力,在理论和实践的基础上巩固《C语言程序设计》课程的学习内容。
掌握软件设计的基本方法。
②熟悉C语言的基本内容从而掌握C语言的基本知识以及了解C语言的基本编写及运行。
③了解程序的分模块编写并对程序的每个模块进行详细的设计而且能理解一般C语言编写的程序。
④掌握书写程序设计说明文档的能力。
⑤熟悉C程序设计的开发环境及C程序的调试过程1.2 课程设计的要求①分析课程设计题目的要求。
②写出详细设计说明。
③编写程序代码,调试程序使其能正确运行。
④设计完成的软件要便于操作和使用。
⑤设计完成后提交课程设计报告。
2.概要设计2.1设计思路停车场是一个可停放n辆汽车的狭长通道,并只有一个大门可供汽车进出,汽车在停车场内按车辆到达的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车停放在车场的最北端),如车长内已停满n辆汽车,则后来的汽车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即可开入;当停车场内某辆车要离开时,在它后进入的车辆必须先退出车场为它让路,待该辆车开出大门外,其它车辆再按原次序进入车场,每辆停放在车场的车在它离开停车场时必须按它停留的时间长短交纳费用,以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理.每一组输入数据包括三个数据项:汽车”到达”或”离去”信息,汽车牌照号码以及到达或离去的时刻(到达或离去的时刻也可用计算机控制).对每一组输入数据进行操作后的输入信息为:如是车辆到达,则输入汽车在停车场。
C语言课程设计实习报告目录一. 题目要求二. 需求分析三.总体设计四. 具体程序页脚内容1五. 上机操作及使用说明六. 存在问题与不足七. 学习心得停车场管理一. 题目要求1.设计一个停车场用长度为N的堆栈来模拟。
由于停车场内如有某辆车要开走,在它之后进来的车都必须先退出为它让道,待其开出停车场后,这些车再依原来的顺序进入。
2.程序输出每辆车到达后的停车位置,以及某辆车离开停车场时应交纳的费用和它在停车场内停留的时间。
二. 需求分析页脚内容2根据题目要求首先设计一个堆栈,以堆栈来模拟停车场,又每辆汽车的车牌号都不一样,这样一来可以根据车牌号准确找到汽车位置,所以堆栈里的数据元素设计成汽车的车牌号。
当停车场内某辆车要离开时,在它之后进入的车辆必须先退出车场为它让路,待该辆车开出大门外,其他车辆再按原次序进入停车场。
这是个一退一进的过程,而且让道的汽车必须保持原有的先后顺序,因此可再设计一个堆栈,以之来暂时存放为出站汽车暂时让道的汽车车牌号。
当停车场满后,继续进来的汽车需要停放在停车场旁边的便道上等候,若停车场有汽车开走,则按排队的先后顺序依次进站,最先进入便道的汽车将会最先进入停车场,这完全是一个先进先出模型,因此可设计一个队列来模拟便道,队列中的数据元素仍然设计成汽车的车牌号。
另外,停车场根据汽车在停车场内停放的总时长来收费的,在便道上的时间不计费,因此必须记录车辆进入停车场时的时间,车辆离开停车场时的时间不需要记录,当从终端输入时可直接使用。
由于时间不像汽车一样需要让道,可设计了一个顺序表来存放时间。
又用顺序表用派生法设计了一个堆栈,恰好满足上面模拟停车场的需要。
三. 总体设计页脚内容3页脚内容4四. 具体程序#include <stdio.h> #include <malloc.h> #define SIZE 3#define NULL 0 typedef struct{ int hour;int min;} time;typedef struct{ int num;页脚内容5int position;time t;float money;} Car;typedef struct{ Car elem[SIZE+1];int top;} Stack;typedef struct Node{ Car data;struct Node *next;}CQueueNode;typedef struct{ CQueueNode *front;CQueueNode *rear;}LinkQueue;void InitStack(Stack *S)页脚内容6{ S->top=0; }void Push(Stack *S,Car *r){ S->top++;S->elem[S->top].num=r->num;r->position=S->elem[S->top].position=S->top;S->elem[S->top].t.hour=r->t.hour;S->elem[S->top].t.min=r->t.min;}int IsEmpty(Stack* S){ return(S->top==0?1:0); }int IsFull(Stack *S){ return(S->top==SIZE?1:0); }int GetTop(Stack *S,Car *n){ n->num=S->elem[S->top].num;n->position=S->elem[S->top].position;n->t.hour=S->elem[S->top].t.hour;n->t.min=S->elem[S->top].t.min;return 1;}void InitQueue(LinkQueue *Q)页脚内容7{ Q->front=(CQueueNode*)malloc(sizeof(CQueueNode));if(Q->front!=NULL){ Q->rear=Q->front;Q->front->next=NULL; }}int EnterQueue(LinkQueue *Q,Car *t){ CQueueNode *NewNode;NewNode=(CQueueNode*)malloc(sizeof(CQueueNode));if(NewNode!=NULL){NewNode->data.num=t->num;NewNode->data.t.hour=t->t.hour;NewNode->data.t.min=t->t.min;NewNode->next=NULL;Q->rear->next=NewNode;Q->rear=NewNode;return 1;}else return 0;}int DeleteQueue(LinkQueue *Q,Car *x)页脚内容8{ CQueueNode *p;if(Q->front==Q->rear)return 0;p=Q->front->next;Q->front->next=p->next;if(Q->rear==p)Q->rear=Q->front;x->num=p->data.num;x->t.hour=p->data.t.hour;x->t.min=p->data.t.min;free(p);return 1;}void print1(Stack *S){int tag;Car x;printf("停车场停车情况:\n");if(IsEmpty(S))printf("无车!");for(tag=S->top;S->top>0;S->top--)页脚内容9if(GetTop(S,&x))printf("车牌号%d,所在位置%d,到达/离开时间%d:%d\n",x.num,x.position,x.t.hour,x.t.min); S->top=tag;}void print2(LinkQueue *Q){ CQueueNode *p;p=Q->front->next;for(;p!=NULL;p=p->next)printf("等待车牌号%d, 到达/离开时间%d:%d",p->data.num,p->data.t.hour,p->data.t.min); }void TaM(Car *r,int h,int m){ if(m>r->t.min){r->t.min+=60;r->t.hour-=1;}h=r->t.hour-h;m=r->t.min-m;printf("\n停车%d小时%d 分钟\n",h,m);printf("每小时收费30元\n");h=h*60;m=h+m;r->money=0.5*m;printf("请支付金额%.2f元\n",r->money);页脚内容10}void In(Stack *S,LinkQueue *Q,Car*r){if(IsFull(S)){ printf("车库已满,请等待!");EnterQueue(Q,r);}else{Push(S,r);printf("\n您现在所在位置%d",r->position);}}void Out(Stack *S,Stack *S0,Car *r,LinkQueue *Q){ int tag=S->top;Car x;if(IsEmpty(S)) printf("没有此车!");else{ for(;r->num!=S->elem[tag].num&&tag>0;tag--){ Push(S0,&S->elem[tag]);S->top--;}页脚内容11if(r->num==S->elem[tag].num){ TaM(r,S->elem[tag].t.hour,S->elem[tag].t.min);S->top--;for(;S0->top>0;S0->top--)Push(S,&S0->elem[S0->top]);if(S->top<SIZE && Q->front!=Q->rear){ DeleteQueue(Q,&x);Push(S,&x);}}else if(tag==0){ printf("未进入停车场应支付金额0元!");for(;S0->top>0;S0->top--)Push(S,&S0->elem[S0->top]);}}}void print(){printf("\n***********************************欢迎光临*************************************\n");printf("\n 请选择:\n");页脚内容12printf("\n 1 :到达");printf("\n 2 :离开");printf("\n 3 :搜索");printf("\n 4 :退出\n");printf("\n");}int main(){ int n,m,i=1,j,flag=0;Car c[10];Car x;Stack S,S0;LinkQueue Q;InitStack(&S);InitStack(&S0);InitQueue(&Q);while(1){ print();scanf("%d",&m);switch(m){case 1:printf("\n请输入车牌号:");页脚内容13scanf("%d",&c[i].num);printf("\n请输入到达/离开时间:");scanf("%d:%d",&c[i].t.hour,&c[i].t.min);In(&S,&Q,&c[i]);i++;break;case 2:printf("\n请输入车牌号:");scanf("%d",&n);for(j=0;j<10;j++)if(n==c[j].num) break;printf("\n请输入到达/离开时间:");scanf("%d:%d",&c[j].t.hour,&c[j].t.min);Out(&S,&S0,&c[j],&Q); break;case 3: print1(&S);print2(&Q);break;case 4: flag=1; break;default:printf("\n输入错误,请输入1,2,3 或4");}if(flag)break;} return 0;}五. 上机操作及使用说明页脚内容14运行Microsoft Visual C++,进入运行状态:1.主菜单:根据页面提示,输入相应数字。
重庆科技学院《面向对象程序设计》课程设计报告学院:电气与信息工程学院专业班级:计科2012-05学生姓名:蒋鑫学号: 2012442101设计地点(单位)_____I313________设计题目:_ 停车场管理系统 ___完成日期: 2014 年 1月 8 日指导教师评语: ______________________ _______________ ___________________________________________________________________________ ___________________________________________________________________________ ___________________________________________________成绩(五级记分制):______ __________指导教师(签字):________ ________重庆科技学院课程设计任务书设计题目:停车场管理系统设计学生姓名蒋鑫课程名称面向对象课程设计专业班级计科12-5班地点I313 起止时间12月30日~1月10日设计内容及要求1)问题描述定义车辆类,属性有车牌号、颜色、车型(小汽车、小卡、中卡和大卡)、到达的时间和离开的时间等信息和相关的对属性做操作的行为。
定义一个管理类,完成对停车场的管理。
停车场的具体要求:设停车场是一个可停放n辆汽车的狭长通道,且只有一个大门可供汽车进出。
汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车停放在车场的最北端),若车场内已停满n辆汽车,则后来的汽车只能在门外的便道上等待,一旦有车开走,则排在便道上的第一辆车即可开入;每辆停放在车场的车在它离开停车场时必须按它停留的时间长短交纳费用。
2)功能要求(1)添加功能:程序能够添加到达停车场的车辆信息,要求车辆的车牌号要唯一,如果添加了重复编号的记录时,则提示数据添加重复并取消添加。
C语言课程设计报告目录一、题目要求,需求分析二、总体设计思路与功能模块划分三、程序设计四、程序运行测试五、总结前言计算机科学技术的发展,不仅极大地促进了整个科学技术的发展,而且明显地加快了经济信息化和社会信息化的进程。
因此,计算机教育在全国备受重视,计算机知识与能力已成为21世纪人才素质的基本要素之一。
如今,高等教育的计算机教育发展十分迅速。
十多年前,只有部分理工科专业开设计算机课程。
今天,几乎所有高校的所有专业都开设了程度不同的计算机课程。
人们已经认识到,计算机知识已成为当代知识分子知识结构中不可缺少的重要组成部分。
而除了掌握计算机的基础知识和操作的基本能力外,掌握一门高级编程语言,并可以熟练运用它,已成为当代大学生综合能力必要组成。
计算机技术发展如此迅猛,计算机应用如此广泛,需要学习的东西愈来愈多,而我们的总学时是有限的。
一般来说,计算机课程学习可以分为两部分:一部分是理论课程学习,一部分是上机应用实习。
根据我们专业的性质和要求,则应侧重于上机操作运用。
为此,学校特意在本学期最后安排了32个学时的上机实习。
现将一星期的实习内容及结果分析分列如下:一、题目要求:27.停车场管理21、有一个两层的停车场,每层有6个车位,当第一层车停满后才允许使用第二层,(停车场可用一个二维数组实现,每个数组元素存放一个车牌号)每辆车的信息包括车牌号,层号,车位号,停车时间共4项,其中停车时间按分钟计算。
2、假设停车场初始状态为第一层已经停有4辆车,其车位号依次为1-4,停车时间依次为20,15,10,5。
即先将这四辆车的信息存入文件“car.dat"中(数组的对应元素也要进行赋值)。
3、停车操作:当一辆车进入停车场时,先输入其车牌号,再为它分配一个层号和一个车位号(分配前先查询车位的使用情况,如果第一层有空则必须停在第一层),停车时间设为5,最后将新停入的汽车的信息添加文件"car.dat"中,并将在此之前的所有车的停车时间加5。
中国地质大学(武汉)设计名称:班级序号:姓名:学号:指导老师:C语言程序设计报告前言设计目的:通过设计一个停车场管理系统,进一步消化和巩固已学过的C 语言程序设计基础理论,学习和实践程序设计的各种技能,利用C 语言来设计各种应用程序和管理系统,为社会提供各种现代化的管理工具,同时也掌握与数组有关的算法、函数的调用、结构体类型变量的定义和使用;文件打开、关闭、读、写等文件操作函数的使用,提高实际运用能力。
设计内容题目要求:27题:停车场管理2内容:1.有一个两层的停车场,每层有6个车位,当第一层车位停满后才允许使用第二层(停车场可用一个二维数组实现,每个数组元素存放一个车牌号)每辆车的信息包括车牌号,层号,车位号,停车时间共四项,其中停车时间按分钟计算。
2.假设停车场初始状态为第一层已经有四辆车,其车位号依次为1-4,停车时间依次为20,15,10,5。
即先将这四辆车的信息存入文件“car.dat”中(数组的对应元素也要进行赋值)3.停车操作:当一辆车进入停车场时,先输入其车牌号,再为它分配一个层号和一个车位号(分配前先查询车位的使用情况,如果第一层有空位则必须停在第一层),停车时间设为5,最后将新停入的汽车的信息添加文件“car.dat”中,并将在此之前的停车时间加5。
(此题简化时间的处理:当有一辆车进入时才对别的车加时间5分钟)4.收费管理(取车):当有车开走时,输入其车牌号,先按其停车时间计算费用,每5分钟2毛钱。
同时从文件“car.dat”k 删除该车的信息,并将该车对应的车位设置为可使用状态(即二维数组清零)。
按用户的选择来判断是否要输出停车收费的总计。
5.输出停车场中全部车辆的信息。
6.退出系统。
需求分析车辆信息要用文件存储,提供文件的输入输出操作;当车开走时要删除文件中该车的信息,因而要提供文件的删除操作;另外还要用键盘式菜单实现功能选择。
总体设计整个管理系统可设计为停车模块、取车模块、车辆信息浏览模块。
2014-2015学年第二学期《高级语言程序设计》课程设计报告题目:停车场管理系统的设计专业:计算机科学与技术班级:13级(3)班姓名:指导教师:**成绩:计算机与信息工程系二0一五年月日目录1、设计内容及要求2、整体设计停车模块车辆信息浏览模块取车模块3、运行与测试报告4、设计感想5、源程序代码设计目的:通过设计一个停车场管理系统,进一步消化和巩固已学过的C 语言程序设计基础理论,学习和实践程序设计的各种技能,利用C 语言来设计各种应用程序和管理系统,为社会提供各种现代化的管理工具,同时也掌握与数组有关的算法、函数的调用、结构体类型变量的定义和使用;文件打开、关闭、读、写等文件操作函数的使用,提高实际运用能力。
设计内容:1.有一个两层的停车场,每层有6个车位,当第一层车位停满后才允许使用第二层(停车场可用一个二维数组实现,每个数组元素存放一个车牌号)每辆车的信息包括车牌号,层号,车位号,停车时间共四项,其中停车时间按分钟计算。
2.假设停车场初始状态为第二层已经有四辆车,其车位号依次为1-4,停车时间依次为20,15,10,5。
即先将这四辆车的信息存入文件“car.dat”中(数组的对应元素也要进行赋值)3.停车操作:当一辆车进入停车场时,先输入其车牌号,再为它分配一个层号和一个车位号(分配前先查询车位的使用情况,如果第一层有空位则必须停在第一层),停车时间设为5,最后将新停入的汽车的信息添加文件“car.dat”中,并将在此之前的停车时间加5。
(此题简化时间的处理:当有一辆车进入时才对别的车加时间5分钟)4.收费管理(取车):当有车开走时,输入其车牌号,先按其停车时间计算费用,每5分钟2毛钱。
同时从文件“car.dat”k 删除该车的信息,并将该车对应的车位设置为可使用状态(即二维数组清零)。
按用户的选择来判断是否要输出停车收费的总计。
5.输出停车场中全部车辆的信息。
6.退出系统。
需求分析车辆信息要用文件存储,提供文件的输入输出操作;当车开走时要删除文件中该车的信息,因而要提供文件的删除操作;另外还要用键盘式菜单实现功能选择。
算法与数据结构课程设计题目:停车场管理专业班级:软件四班姓名:学号:指导教师:成绩:______________目录一、题目及要求 (2)二、题目分析 (3)三、数据结构说明 (4)四、各函数算法分析 (5)(1)主函数 (5)(2)车辆到达函数 (7)(3)车辆离开函数 (8)(4)列表显示函数 (10)五、程序测试 (14)(1)测试信息对错误的处理 (14)(2)列表显示 (15)(3)同时输出等待的提示作息 (16)(4)计算它们的应交费用 (17)六、课程设计感悟与收获 (18)七、源代码 (19)八、参考文献 (25)一、题目及要求[要求]设有一个可以停放n辆汽车的狭长停车场,它只有一个大门可以供车辆进出。
车辆按到达停车场时间的早晚依次从停车场最里面向大门口停放(最先到达的第一辆车放在停车场的最里面)。
如果停车场已放满n辆车,则后来的车辆只能在停车场大门外的便道上等待,一旦停车场内有车开走,则排在便道上的第一辆国就进入停车场。
停车场内如有某辆车要走,在它之后进来的车都必须退出停车场为它让路,待其开出停车场后,这些车辆再依原来的次序进场。
每辆车在离开停车场时,都应根据它在停车场内停留的时间长短交费。
如果停留在便道上的车未进停车场就要离去,允许其离去,不收停车费,并且其他在便道上等待的车辆的次序不变。
编制一程序模拟停车场管理。
[提示]汽车的模拟输入信息格式可以是:(到达/离去,汽车牌照号码,到达/离去时刻)。
例如:(’A’,1,5)表示1号牌照车在5这个时刻到达,而(’D’,5,20)表示5号牌照车在20这个时刻离去,整个程序可以在输入信息为(’E’,0,0)时结束。
基本要求:要求程序输出每辆车到达后的停车位置(停车场或便道上),以及某辆车离开停车场时应交的费用和它在停车场内停留的时间。
根据题目要求,停车场可以用一个长度为n的堆栈来模拟。
由于停车场内如有某辆车要开走,在它之后进来的车都必须先退出停车场为它让路,待其开出停车场后,这些车辆再依原来的次序进场。
停车场管理系统1题目要求设有一个可以停放n辆汽车的狭长停车场,它只有一个大门可以供车辆进出。
车辆按到达停车场时间的早晚依次从停车场最里面向大门口处停放(最先到达的第一辆车放在停车场的最里面)。
如果停车场已放满n辆车,则后来的车辆只能在停车场大门外的便道上等待,一旦停车场内有车开走,则排在便道上的第一辆车就进入停车站。
停车站内如有某辆车要开走,在它之后进入停车场的车都必须先退出停车站为它让路,待其开出停车场后,这些车辆再依原来的次序进场。
每辆车在离开停车场时,都应根据它在停车场内停留的时间长短交费。
如果停留在便道上的车未进停车场就要离去,允许其离去,不收停车费,并且仍然保持在便道上等待的车辆的次序。
编制一程序模拟该停车场的管理。
【基本要求】要求程序输出每辆车到达后的停车位置(停车场或便道上),以及某辆车离开停车场是的停车时间及它应该交的费用。
2需求分析根据题目要求,因为停车场是一个单条的序列,可以用结构体实现;在程序中,需要知道每辆来车的具体停放位置,应提供提示、查找、标记工作。
车辆离开要计时计费。
另外,每天开始时,停车场要初始化。
3总体设计这个系统可以分为:初始化、有车进入、有车离开、退出四个模块。
4详细设计main()函数体内包含了界面选则部分menu(),并单独Array抽出来作为一个独立函数,目的在于系统执行每部分模块后能够方便返回到系统界面。
即main()函数写为如下:void main()/*主函数*/{menu();/*菜单函数*/}菜单函数:void menu(){int n,w;do{puts("\t\t**************MENU**************\n\n");puts("\t\t\t 1.初始化");puts("\t\t\t 2.有车进入");puts("\t\t\t 3.有车离开");puts("\t\t\t 4.退出");puts("\n\n\t\t*********************************\n");printf("Please choice your number(1-4): [ ]\b\b");scanf("%d",&n);if(n<1||n>4)/*对选择的数字作判断*/{w=1;getchar();}else w=0;}while(w==1);switch(n){case 1:chushi();break;/*初始化函数*/case 2:jinru();break;/*车辆进入函数*/case 3:likai();break;/*车辆离开函数*/case 4:exit(0);/*退出*/}}初始化模块设计:【需求分析】该模块是将每一天开始的停车场内和便道车位清零。
停车场c语言课程设计一、课程目标知识目标:1. 学生能理解C语言在现实问题解决中的应用,特别是停车场管理系统中的编程实现。
2. 学生能够掌握C语言中数组、结构体、函数等基本概念,并将其应用于停车场系统的设计。
3. 学生能够运用C语言中的条件语句和循环语句,实现对停车场车位的管理逻辑。
技能目标:1. 学生能够运用所学知识,设计并编写一个简单的停车场管理系统。
2. 学生通过课程实践,培养问题分析、程序设计、编码调试的能力。
3. 学生能够进行团队合作,共同完成课程设计任务,提高沟通与协作技巧。
情感态度价值观目标:1. 学生在课程实践中,培养对编程的兴趣,增强解决实际问题的信心。
2. 学生通过课程学习,认识到编程在现代社会中的重要作用,激发对计算机科学的热爱。
3. 学生在学习过程中,培养认真负责、严谨细致的学习态度,树立正确的价值观。
课程性质:本课程为信息技术学科的高年级课程,以C语言编程为核心,结合停车场管理系统实例,旨在提高学生的编程能力和实际问题解决能力。
学生特点:学生已具备一定的C语言基础,具有较强的逻辑思维能力,对实际应用有较高的兴趣。
教学要求:课程设计需贴近实际,引导学生主动探究,注重培养学生的动手能力和团队协作精神,提高学生的编程综合素质。
通过分解课程目标为具体学习成果,使学生在实践中达成预期目标,为后续教学设计和评估提供依据。
二、教学内容1. C语言基础知识回顾:数组、结构体、函数、指针、文件操作等。
- 教材章节:第二章数组、第三章函数、第四章结构体与联合、第六章指针、第七章文件操作。
2. 停车场管理系统需求分析:- 功能要求:车位管理、车辆进出管理、费用计算等。
- 教学大纲:第一节介绍停车场管理系统背景,第二节分析系统需求。
3. 停车场管理系统设计与实现:- 教学内容:系统架构设计、模块划分、代码编写与调试。
- 教材章节:第五章项目设计与实现。
4. C语言编程实践:- 教学内容:编写停车场管理系统相关功能模块,如车位分配、车辆查询、费用支付等。
停车场管理系统1题目要求设有一个可以停放n辆汽车的狭长停车场,它只有一个大门可以供车辆进出。
车辆按到达停车场时间的早晚依次从停车场最里面向大门口处停放(最先到达的第一辆车放在停车场的最里面)。
如果停车场已放满n辆车,则后来的车辆只能在停车场大门外的便道上等待,一旦停车场内有车开走,则排在便道上的第一辆车就进入停车站。
停车站内如有某辆车要开走,在它之后进入停车场的车都必须先退出停车站为它让路,待其开出停车场后,这些车辆再依原来的次序进场。
每辆车在离开停车场时,都应根据它在停车场内停留的时间长短交费。
如果停留在便道上的车未进停车场就要离去,允许其离去,不收停车费,并且仍然保持在便道上等待的车辆的次序。
编制一程序模拟该停车场的管理。
【基本要求】要求程序输出每辆车到达后的停车位置(停车场或便道上),以及某辆车离开停车场是的停车时间及它应该交的费用。
2需求分析根据题目要求,因为停车场是一个单条的序列,可以用结构体实现;在程序中,需要知道每辆来车的具体停放位置,应提供提示、查找、标记工作。
车辆离开要计时计费。
另外,每天开始时,停车场要初始化。
3总体设计这个系统可以分为:初始化、有车进入、有车离开、退出四个模块。
4详细设计main()函数体内包含了界面选则部分menu(),并单独Array抽出来作为一个独立函数,目的在于系统执行每部分模块后能够方便返回到系统界面。
即main()函数写为如下:void main()/*主函数*/{menu();/*菜单函数*/}菜单函数:void menu(){int n,w;do{puts("\t\t**************MENU**************\n\n");puts("\t\t\t 1.初始化");puts("\t\t\t 2.有车进入");puts("\t\t\t 3.有车离开");puts("\t\t\t 4.退出");puts("\n\n\t\t*********************************\n");printf("Please choice your number(1-4): [ ]\b\b");scanf("%d",&n);if(n<1||n>4)/*对选择的数字作判断*/{w=1;getchar();}else w=0;}while(w==1);switch(n){case 1:chushi();break;/*初始化函数*/case 2:jinru();break;/*车辆进入函数*/case 3:likai();break;/*车辆离开函数*/case 4:exit(0);/*退出*/}}初始化模块设计:【需求分析】该模块是将每一天开始的停车场内和便道车位清零。
首先建立场内场外的结构体,结构体内成员即车位的状态。
用循环实现车位的致零即可。
struct changnei/*场内车道信息*/{int neikong;}chn[N-1];struct changwai/*场外车道信息*/{int waikong;}chw[M-1];N和M分别是停车场和便道的车位预设值,用宏定义。
用户可根据实际情况改变。
#define N 100/*预设停车场有100个车位*/#define M 100/*预设便道有100个出位*/void chushi()/*初始化函数*/{int i,j;for(i=0;i<=N-1;i++)chn[i].neikong=0;/*将场内车道设置为空*/for(j=0;j<=M-1;j++)chw[i].waikong=0;/*将便道车道设置为空*/printf("\n\n\t\t已初始化\n\n");menu();}函数出示化后将回到菜单界面。
车辆进入函数:【需求分析】车辆到达后,要指定车辆的停车位置。
用户根据菜单函数进入车辆进入模块。
按照每辆车的到达次序给予车辆次序号,由0号开始。
车辆信息也建立结构体。
struct car/*车辆信息*/{int car_num;/*车辆次序号*/int car_arr;/*车辆到达时间*/int car_lef;/*车辆离开时间*/int car_stay;/*车辆停放位置*/}car[CIXUHAO];其中,CIXUHAO 是车辆次序号的宏定义:#define CIXUHAO 1000/*预设车辆次序号。
不管车辆到达时停在场内或便道,均依次设置一个次序号,由0开始*/给予车辆次序号之后,用循环判断停车场是否停满,再分别给予选择:void jinru()/*车辆进入函数*/ {int i,a; int h=0;printf("\n\n 请输入该车次序号(从0号开始):"); scanf("%d",&a); for(i=0;i<N;i++) { if(chn[i].neikong==0);/*无车标记0*/ if(chn[i].neikong==1)/*有车标记1*/ h=h+1; } if(h==N) printf("停车场内已停满,请停在便道上\n"); else { car[a].car_stay=h; chn[h].neikong=1; printf("该车应该停在停车场内第道%d (从0道开始记)\n",h); printf("请输入该车进停车场时刻(24小时整点计时):\n"); scanf("%d",&car[a].car_arr); }便道上还有车吗?menu(); }程序执行完后回到菜单。
车辆离开函数:【需求分析】若有一辆车要离开,则需要记 录该车的离开时间,以计算出该车 在停车场内的停车时间和应该缴纳 的费用。
该车离开后,要判断便道 上是否有车等待进入,如有,则将 便道上第一辆车停放在停车场内最后的位置并记录好进场时间;若无,则返回菜单。
void likai()/*车辆离开函数*/ { int i,k,choi,time; double fee;printf("请输入离开车辆次序号[ ],并将此车之后的车先全部退出停车场!"); scanf("%d",&i);printf("\n 请输入离开车辆的离开时刻(24小时整点计时):\n"); scanf("%d",&car[i].car_lef);fee=D*(car[i].car_lef-car[i].car_arr); time=car[i].car_lef-car[i].car_arr;printf("次序号为%d 的车停车时间%d 小时,应收费%f 元\n",i,time,fee); printf("\n\n\n 请让场内退出的车再依次进场!\n\n\n");printf("便道上现在有车吗?(请选择1或2)\n1.有\n2.没有\n");/*因便道上可能没有车,因此要做选择*/ scanf("%d",&choi); if(choi==2) { menu(); }if(choi==1) { printf("请让便道上的第一辆车进场\n");printf("该车次序号为:\n");scanf("%d",&k);printf("请输入该车进场时间:\n");scanf("%d",&car[k].car_arr);menu();}}D为预设停车场单位小时费用,用宏定义,便于以后修改。
#define D 1.2/*预设车辆停车费为1.2元每小时*/5上机操作(1)主菜单函数(2)初始化操作(3)有车进入以上分别举例0,1,2三个车的进场情况(4)有车离开若便道上没车,则退回到主菜单若便道上有车6总结通过该实例的实习,要求大家进一步理解和运用结构化程序设计的思想和方法,初步掌握开发一个小型实用系统的基本方法,学会调试较长的程序,学会利用流程图表示算法,进一步掌握和提高利用C语言进行程序设计的能力。
7原程序代码#include<stdio.h>#include<stdlib.h>#include<string.h>#define N 100/*预设停车场有100个车位*/#define M 100/*预设便道有100个出位*/#define D 1.2/*预设车辆停车费为1.2元每小时*/#define CIXUHAO 1000/*预设车辆次序号。
不管车辆到达时停在场内或便道,均依次设置一个次序号,由0开始*/void menu();void chushi();void jinru();void likai();struct car/*车辆信息*/{int car_num;/*车辆次序号*/int car_arr;/*车辆到达时间*/int car_lef;/*车辆离开时间*/int car_stay;/*车辆停放位置*/}car[CIXUHAO];struct changnei/*场内车道信息*/{int neikong;}chn[N-1];struct changwai/*场外车道信息*/{int waikong;}chw[M-1];void main()/*主函数*/{menu();/*菜单函数*/}void menu(){int n,w;do{puts("\t\t**************MENU**************\n\n");puts("\t\t\t 1.初始化");puts("\t\t\t 2.有车进入");puts("\t\t\t 3.有车离开");puts("\t\t\t 4.退出");puts("\n\n\t\t*********************************\n");printf("Please choice your number(1-4): [ ]\b\b");scanf("%d",&n);if(n<1||n>4)/*对选择的数字作判断*/{w=1;getchar();}else w=0;}while(w==1);switch(n){case 1:chushi();break;/*初始化函数*/case 2:jinru();break;/*车辆进入函数*/case 3:likai();break;/*车辆离开函数*/case 4:exit(0);/*退出*/}}void chushi()/*初始化函数*/{int i,j;for(i=0;i<=N-1;i++)chn[i].neikong=0;/*将场内车道设置为空*/for(j=0;j<=M-1;j++)chw[i].waikong=0;/*将便道车道设置为空*/printf("\n\n\t\t已初始化\n\n");menu();}void jinru()/*车辆进入函数*/{int i,a;int h=0;printf("\n\n请输入该车次序号(从0号开始):");scanf("%d",&a);for(i=0;i<N;i++){if(chn[i].neikong==0);/*无车标记0*/if(chn[i].neikong==1)/*有车标记1*/h=h+1;}if(h==N)printf("停车场内已停满,请停在便道上\n");else{car[a].car_stay=h;chn[h].neikong=1;printf("该车应该停在停车场内第道%d(从0道开始记)\n",h);printf("请输入该车进停车场时刻(24小时整点计时):\n");scanf("%d",&car[a].car_arr);}menu();}void likai()/*车辆离开函数*/{ int i,k,choi,time;double fee;printf("请输入离开车辆次序号[ ],并将此车之后的车先全部退出停车场!");scanf("%d",&i);printf("\n请输入离开车辆的离开时刻(24小时整点计时):\n");scanf("%d",&car[i].car_lef);fee=D*(car[i].car_lef-car[i].car_arr);time=car[i].car_lef-car[i].car_arr;printf("次序号为%d的车停车时间%d小时,应收费%f元\n",i,time,fee);printf("\n\n\n请让场内退出的车再依次进场!\n\n\n");printf("便道上现在有车吗?(请选择1或2)\n1.有\n2.没有\n");/*因便道上可能没有车,因此要做选择*/scanf("%d",&choi);if(choi==2){menu();}if(choi==1){printf("请让便道上的第一辆车进场\n");printf("该车次序号为:\n");scanf("%d",&k);printf("请输入该车进场时间:\n");scanf("%d",&car[k].car_arr);menu();}}。