目录。1 实习目的 2
2 问题描述 2
3 概要设计 3
3.1 整体设计 3
3.2 结构体说明数据库设计 6
3.3 函数及功能要求 6
3.4 模块调用关系 7
4 详细设计 7
4.1采用c语言定义相关的数据类型: 7
4.2写出各模块的伪码算法 8
5 调试与测试结果分析 10
5.1 调试分析 10
5.2 测试结果 11
6 使用说明 13
七总结 14
八参考文献 14
九附录 14
模拟停车场管理。
数据结构课程设计是一项综合性设计活动,要求在教师的指导下,利用本课程内的以及到目前为止所学到的有关知识和技术解决一些不太复杂但却是综合性的问题。从规模来说,课程设计是在平时作业的基础上进一步扩大的大作业。在设计中,要求学生要全面考虑相互联系的各个方面及问题。
通过实习,实现对学生数据结构知识的全面综合训练,加深对《数据结构》这一课程所学内容的进一步理解与巩固。加深对结构化设计的理解,能对系统进行分析,并设计合理的模块化结构,初步具备根据应用需求选择合理数据结构并进行算法设计的能力,把书上学到的知识用于解决实际问题、培养今后软件开发工作所需的动手实践能力,包括问题分析、总体结构设计,用户界面的设计、程序设计时的基本技能和技巧,能运用合理的控制流程编写清晰高效的程序,训练c程序调试能力,能将一个中小型各级组织系统联调通过以及一整套软件工作规范的训练和团体协作精神的培养。并训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风。
还可以提升文档编写作能力。
设停车场是一个可停放n辆车的狭长通道,且只有一个大门可供汽车进出。在停车场内,汽车按到达的先后次序,由北向南依次排列(假设大门在最南端)。若停车场内已停满n辆车,则后来的汽车需在门外的便道上等候,当有车开走时,便道上的第一辆车即可开入。
当停车场内某辆车要离开时,在它之后进入的车辆必须先退出停车场为它让路,待该辆车开出大门后,其他车辆再按原次序返回车场。每辆车离开停车场时,应按其停留时间的长短交费(在便道上停留的时间不收费)。
设计要求:1.模拟上述管理过程。要求以顺序栈模拟停车场,以链队列模拟便道。
2.从终端读入汽车到达或离去的数据,每组数据包括三项:
1)是“到达”还是“离开”;
2)汽车牌照号码;
3)“到达”或“离开”的时刻。
3.与每组输入信息相应的输出信息为:如果是到达的车辆,则输出其在停车场中或便道上的位置;如果是离去的车辆,则输出其在停车场中停留的时间和应交的费用。
4.遇到的难题,当进入4辆车,假如需要出车的序列为2,就必须按照栈出栈序列出车,先出4,3,2然后3,4又入桟,这里的程序相对比较麻烦,通过和组员交流终于做出来了。
3.1 整体设计。
1.功能模块说明:停车场管理系统含有四个模块,即:车辆到达、车辆离开、列表显示、退出系统。如图1。
图1 停车场系统主流程图。
2.主模块的流程及各子模块的主要功能:
1)车辆到达:int arrival(seqstackcar *enter,linkqueuecar *w)首先定义一个栈和队列的结构体指针为:*p , t 。
然后申请一个车辆信息的内存空间,并把它赋给栈指针。 车辆到达时就输入车牌号,并通过if(enter->top(2)车辆离开void le**e(seqstackcar *enter,seqstackcar *temp,linkqueuecar *w)定义一个整型变量room 记录要离开车辆的位置,定义两个栈指针和一个队列指针,用个if(enter->top>0) 确保栈不空,然后用个while(1) 确保输入的车辆离开位置的合法性。如果不和法,显示输入有误,要重新输入。
通过while(enter->top>room) 判断离开车辆的位置,如果是中间位置,就要再用一个栈前面临时开出来的车,等要开出的车开出后,再把临时栈的车看进车场内,并要调用print(p,room); 这个函数计算显示费用。然后还要用 if((w->head!=w->rear)&&enter->top图2 停车场系统具体流程图。
3.2 结构体说明数据库设计。
1、本程序所用的抽象数据类型的定义:
typedef struct time
int hour;
int min;
time; /时间结点。
typedef struct node
char num[10];
time reach;
time le**e;
carnode; /车辆信息结点。
typedef struct node
carnode *stack[max+1];
int top;
seqstackcar;//狭道的堆栈顺序存储。
typedef struct car
carnode *data;
struct car *next;
queuenode;//队列的链式存储。
typedef struct node
queuenode *head;
queuenode *rear;
linkqueuecar;//便道上等候的队列定义
3.3 函数及功能要求。
*);初始化栈。
*);初始化便道。
*,linkqueuecar *)车辆到达。
*,seqstackcar *,linkqueuecar *)车辆离开。
显示信息 *p,int room);/输出离开车辆的信息清单。
*s) ;列表显示车辆信息。
*w);/列表显示便道信息。
s,linkqueuecar w);/列表界面。
3.4 模块调用关系。
各程序模块之间的调用关系(子程序编号见上):
主函数可调用子程序。
子程序可调用子程序。
子程序可调用子程序。
子程序可调用子程序。
子程序9可调用子程序 。
4.1采用c语言定义相关的数据类型:
#define max 5 //车库容量最大为5,便于观察。
#define price 0.01 //一辆车每分钟的费用,可变。
typedef struct time{ /定义时间结构体。
int hour;
int min;
time;typedef struct node{ /定义车辆信息结构体。
char num[10];
time reach;
time le**e;
carnode;
4.2写出各模块的伪码算法。
1)void print(carnode *p,int room车辆收费。
int a1,a2,b1,b2;
printf("车辆离开的时间:")
scanf("%d:%d",&p->>
printf("离开车辆的车牌号为:")
puts(p->num);
printf("其到达停车位时间);
printf("离开停车位时间为:);
a1=p->
a2=p->
b1=p->
b2=p->
printf("应交费用为: %2.1f元",(b1-a1)*60+(b2-a2))*price+printe(p,room));
free(p);
2)int arrival(seqstackcar *enter,linkqueuecar *w) /进入便道或者狭道
carnode *p;
queuenode *t;
p=(carnode *)malloc(sizeof(carnode));
flushall();
printf("请输入车牌号(例:a1234):");
gets(p->num);
if(enter->top {
enter->top++;
printf("车辆在车场第%d位置!",enter->top);
printf("请输入到达时间:(小时:分钟)");
scanf("%d",&p->
while(p-><0||p->>23) /控制时间格式正确。
printf("输入错误!");
printf("请重输入到达时间的时(0-23)!");
scanf("%d",&p->
数据结构课程设计
课程设计说明书 题目哈夫曼编码问题的设计和实现。课程名称数据结构课程设计。院 系 部 中心。专业。班级。学生姓名。学号。设计地点。指导教师。设计起止时间 2008 年6月 2日至 2008 年 6月 6 日。目录。1 问题描述 2 1.1 题目内容 2 1.2 基本要求 2 1.3 测试数据 2 2...
数据结构课程设计
数据结构 课程设计。实验报告。学院 信息工程学院。班级 姓名 学号 指导老师 题目2 一元多项式的计算。1 实验目的。1 掌握链表的灵活运用 2 学习链表初始化和建立一个新的链表 3 知道怎样去实现链表删除结点操作与插入结点 4 理解链表的基本操作 包括数据域数据的相加 并能灵活运用。2 实验内容。...
数据结构课程设计
班级 信计 1102 姓名 李娜娜。学号 1108060209 设计日期 2013.07.15 西安科技大学计算机学院 1.实验题目 编制一个演绎扫雷游戏的程序。2.问题描述。做一个n x m的扫雷游戏,每个方格包含两种状态 关闭 closed 和打开 opened 初始化时每个方格都是关闭的,一个...