当前位置:文档之家› 数据结构实验二:停车场管理问题.doc

数据结构实验二:停车场管理问题.doc

数据结构实验二:停车场管理问题.doc
数据结构实验二:停车场管理问题.doc

HUNAN UNIVERSITY 课程实习报告

题目:停车场管理问题

学生姓名

学生学号

专业班级

指导老师李晓鸿

完成日期2015年 11月 25日

一、需求分析

1.输入的形式的输入的范围:

①.选择功能: 1 停车 2 离开停车场 3 离开过道

②.若输入1(停车),输入当前车牌号和当前的时间;

若输入 2(离开停车场),输入车票号和当前时间;

若输入 3(离开过道),输入车牌号。

2.输出的形式:

①.提示选择功能“ 1. 停车 2 离开停车场 3 离开过道”。

②.若输入1(停车),并且输入当前车牌号和当前的时间后,

停入停车场,停车场内有n 辆车,过道上有m辆车等候”

车场已满,请在过道等候”。

若停车场未满,输出“成功; 若停车场满,输出“停

若输入 2(离开停车场),输入车票号和当前时间,输出“存车总计时间,收费 q 元,停车场内有 n 辆车,过道上有 m辆车等候”;如果进停车场和出停车场时间错误,输出“时间输入有误,请重新输入”;如果停车场没有此车,输出“车牌号有误,请重新输入”。

若输入 3(离开过道),输入车牌号,输出“此车已成功离开过道”;

“停车过道为空”。

若无此车,输出若输入其他,则提示选择功能“ 1. 停车2 离开停车场 3 离开过道”。

3.程序所能达到的功能:

有一个可以停放n 辆汽车的狭长停车场,它只有一个大门可以供车辆进出。车辆按到达停车场时间的早晚依次从停车场最里面向大门口处停放( 最先到达的第一辆车放在停车场的

最里面 ) 。如果停车场已放满n 辆车,则后来的车辆只能在停车场大门外的便道上等待,一

旦停车场内有车开走,则排在便道上的第一辆车就进入停车场。停车场内如有某辆车要开走,

在它之后进入停车场的车都必须先退出停车场为它让路,待其开出停车场后,这些车辆再依原来的次序进场。每辆车在离开停车场时,都应根据它在停车场内停留的时间长短交费。如果停留在便道上的车未进停车场就要离去,允许其离去,不收停车费,并且仍然保持在便道

上等待的车辆的次序。

4.测试数据:①正常的进入停车场,出停车场,离开过道的模拟输入 1

1(车牌)

1(当前时间)

输入 1

2(车牌)

2(当前时间)

输入 2

2(车牌)

3(当前时间)

输入 1

3(车牌)

4(当前时间)

输入 1

4(车牌)

5(当前时间)

输入 3

4(车牌)

②.停车场里没有车出停车场的模拟

输入 2

1(车牌)

③.过道没车出过道的模拟

输入 3

1(车牌)

④.进入停车场时间与出停车场时间的模拟

输入 1

1(车牌)

1(进停车场的时间)

输入 2

1(车牌)

0(出停车场的时间)

⑤.停车场模拟系统功能输入错误

输入 4

二 . 概要设计

抽象数据类型:

①.由于该停车场只有一个门供出入,并且最先进的停在停车场的最末,最先进的车辆要出停车场需要之后进入的车先出,满足先进后出的结构,其限制是仅允许在表的一端进行插入和删

除运算,所以用栈来模拟停车场。

②.由于这是一个模拟的车库,车辆出停车场,后面车辆不得不被动跟着出停车场,我

们需要对这些车辆进行管理,将第一辆被动出停车场的放置到一个队伍的前端,接下来被动出停车场的车辆依次放到第一辆车之后,当需要离开的车出栈后,对被动出停车场的车辆进

行管理,又队伍的前端依次进入停车场,由于满足只允许在表的前端进行删除操作,而在表的后端进行插入操作,所以用队列来模拟被动出停车场车辆的管理。

基本思想

1.给定一个 size 为停车场的容量。

2.每一辆车进栈前,储存车辆编号和进栈的时间。

3.对于栈满的情况,再来的车辆不进栈,只记录编号。

4. 对于出栈的车辆,先将出栈车辆之前的停车场内车辆由后往前依次进入队列中,将进栈和出栈时间相比较算出需要付的金额,之后再将队列中的元素由前往后依次进栈。

程序的流程

程序由三个模块组成:

输入模块:按照提示输入

计算模块:计算(出栈时间- 进栈时间) * 每小时金额。

输出模块:首先提示" 请选择: 1、停车; 2、离开停车场; 3、离开过道; "

选择提示 " 请输入车牌号和现在的时间:"

选择 3 提示“请输入车牌号”

基本 ADT

①.栈空判别算法

int Empty_SeqStack(queue *s)

{

if (s->top == -1)

return 0;

else

return 1;

}

②.入栈算法

void Push_SeqStack(queue *s, Datatype x) {

s->top++;

s->data1[s->top] = x;

return;

}

③.出栈算法

void Pop_SeqStack(queue *s, Datatype *x) {

*x = s->data1[s->top];

s->top--;

return;

}

④.列队初始化

C_SeQueue *Init_SeQueue()

{

C_SeQueue *q;

q = new C_SeQueue;

q->front = q->rear = MAXSIZE - 1;

q->num = 0;

return q;

}

⑤.入队算法

void In_SeQueue(C_SeQueue *q, Datatype x) {

q->rear = (q->rear + 1) % MAXSIZE;

q->data2[q->rear] = x;

q->num++;

return;

}

⑥.出队算法

void Out_SeQueue(C_SeQueue *q, Datatype *x) {

q->front = (q->front + 1) % MAXSIZE;

*x = q->data2[q->front];

q->num--;

return;

}

算法流程图(进入车库和出车库)

三.详细设计

1.数据类型

用 Int型整数储存车辆的信息. 车辆进出时间. 收取的费用

2.算法的具体步骤

①车进入停车场的基本操作

void Arrive(queue *s, C_SeQueue *q, int x, double t)

{

int y;

int a = s->top;

while (a != -1)法的时空分析和改进设想

每次进栈的时间复杂度为O( 1),当要出车辆后有n 辆车时,出栈时间复杂度为O( n),也许对于一个车库来说n 并不会很大,但是考虑实际这个停车场的设计非常不合理。

4.输入和输出格式

输入:功能选择输入为整数1-3 ,输入车牌号为大于零的整数,时间为大于零的整数。

输出:输出整数型的应收的价格

四.调试分析

1. 为了简化程序,采用手动输入进栈车辆的排序. 进栈时间 . 出栈时间。

2. 同时因为需要输入多组数据,在程序完工后又加上许多引导性的话,例如提示停车场内有几辆车 . 停车场外有多少车. 车辆是否进入车库成功. 车辆是否在车库外等候。

3.对于时间的处理过于简陋,只用了一位数表示时间,与实际情况不太符合。

4.对于车牌处理也过于简单,可以在车的储存信息加入车牌号。

五.测试结果

情况 1 测试结果

情况 2测试

情况 3测试

情况 4测试

情况 5测试

六.试验心得

1.书上对栈的实现太少不详细,查阅了许多栈的各类实现怎么写。

2. 存车取车问题比较简单,在程序完成后发现程序的容错率为 0,当不小心输入了相同车牌时程序直接报错,不得不添加了许多容错代码,容错程序代码很是让人费神,现在容错已完善再完善了,但还是未能完全解决问题,例如,在过道停的车辆不能保证其中没有相同车牌号的车,还有

时间处理的比较简单原始化,这些都有待以后提高,继续完善。

3. 这道题过于死板,完全是为了栈强行设计了一道门的停车场,每次有车出来后面的车都要移动位置,这种车库,不停也罢。

七.代码

#include

using namespace std;

#define MAXSIZE10

#define MINSIZE 2

typedef int Datatype ;

typedef struct {

Datatype data1[ MINSIZE];

int top;

double time[MINSIZE];

} queue;

queue *Init_SeqStack()

// 栈的初始化;

{

queue *s;

s =new queue;

if (!s){

cout << " 空间不足 " << endl;

return NULL;

}

else {

s->top = -1;

return s;

}

}

int Empty_SeqStack( queue * s)// 栈空判别算法;

{

if ( s->top == -1)

return 0;

else

return 1;

}

void Push_SeqStack( queue * s, Datatype x )// 入栈算法;

{

s->top++;

s->data1[ s->top] =

x;

return ;

}

int Push_SeqStack1( queue * s, Datatype x , double t ) // 入栈算法1;{

if ( s->top ==MINSIZE - 1)

return 0;

else {

s->top++;

s->data1[ s->top] = x;

s->time[ s->top] = t ;

return 1;

}

}

void Pop_SeqStack( queue * s, Datatype * x )// 出栈算法;{

*x = s->data1[ s->top];

s->top--;

return ;

}

typedef struct

{

Datatype data2[ MAXSIZE];

int rear, front;

int num;

} C_SeQueue;

C_SeQueue*Init_SeQueue()// 列队初始化;

{

C_SeQueue*q;

q =new C_SeQueue;

q->front = q->rear =MAXSIZE- 1;

q->num = 0;

return q;

}

void In_SeQueue( C_SeQueue* q, Datatype x) // 入队算法;

{

MAXSIZE;

q->rear = (q->rear + 1) %

q->data2[ q->rear] =x;

q->num++;

return ;

}

void

Out_SeQueue( C_SeQueue* q, Datatype * x) // 出队算法;

{

MAXSIZE;

q->front = (q->front + 1) %

*x = q->data2[ q->front];

q->num--;

return ;

}

void show( queue * s, C_SeQueue* q) // 显示停车情况;

{

cout << " 停车场内有 " << s->top + 1 << " 辆车。 " << endl;

cout << " 通道上有 " << q->num << " 辆车在等候。" << endl;

}

void Arrive( queue * s, C_SeQueue* q, int x, double t ) // 停车;{

int y;

int a =s->top;

while (a != -1)// 判断将要存的车是否已存在于停车场,防止出现有相同车牌号的车出现在停车场内;

{

if ( s->data1[a] ==x)

{

cout << " 成功停入车场 " << endl;

return ;

}

else

a--;

}

if (Push_SeqStack1( s, x,t ))

cout << " 成功停入车场。 " << endl;

else

{

cout << " 停车场已满,后来车辆请在便道等候。" << endl;

In_SeQueue(q, x);

}

show(s,q);

}

void Leave( queue * s, C_SeQueue* q, int x, double t ) // 离开停车场;

{

int y;

int i = 1;

double d;

queue *s1;

s1 = Init_SeqStack();

while ( s->data1[ s->top] !=x&&!Empty_SeqStack( s))

{

Pop_SeqStack(s, &y);

Push_SeqStack(s1, y);

}

if ( s->data1[ s->top] == x)

{

while (i)

{

if ( t >= 1 && t <= 24 && t >s->time[ s->top])

{

d = t - s->time[s->top];

Pop_SeqStack(s, &y);

cout << " 存车时间总计: " << d << " 小时 " << endl

<< " 收费为: " << d << " 元" << endl;

i = 0;

}

else

{

cout << " 时间输入有误,请重新输入。" << endl;// 时间容错处理;

i = 1;

cin >> t ;

}

}

}

else

{

cout << " 车牌号有误,停车场中无此车。" << endl;// 容错,离开时也要输入正确车牌号,否则无此车,也不耽误程序执行;

}

while (Empty_SeqStack(s1) != 0)

{

Pop_SeqStack(s1, &y);

Push_SeqStack(s, y);

}

if ( q->num != 0 && s->top !=MINSIZE - 1)

{

Out_SeQueue(q, &y);

Push_SeqStack1( s, y,t );

}

show(s,q);

return ;

}

void Leave1( queue * s, C_SeQueue* q, int x) // 离开过道;

{

if ( q->num == 0)

{

cout << " 停车过道为空。 " << endl;

return ;

}

int a =q->rear;

while ( q->data2[a] !=x && (a + MAXSIZE) % MAXSIZE!=q->front) a--;

if ( q->data2[(a +MAXSIZE) % MAXSIZE] == x)

{

while ((a + MAXSIZE) % MAXSIZE!=q->rear - 1)

{

q->data2[a] =q->data2[a + 1];

a++;

}

q->num--;

cout << " 此车已成功离开过道。" << endl;

}

else

cout << " 此车不在过道中。 " << endl;

show(s,q);

}

void main()

{

double time;

int x, a;

queue *s;

C_SeQueue*q;

s = Init_SeqStack();

q = Init_SeQueue();

while (1)

{

cout << " 请选择: 1、停车; 2、离开停车场; 3、离开过道; " << endl;

cin >> a;

switch (a)

{

case 1:{

cout <<" 请输入车牌号和现在的时间:" << endl;

cin >> x >> time;

Arrive(s, q, x, time);

} break ;

case 2:{

cout <<" 请输入车牌号和现在的时间:" << endl;

cin >> x >> time;

Leave(s, q, x, time);

} break ;

case 3:{

cout <<" 请输入车牌号: " << endl;

cin >> x;

Leave1(s, q, x);

cout << endl;

} break ;

case 0: return ;

}

}

}

智能停车场管理系统方案

第一章系統總體概述 1.1 前言 傳統停車場管理存在著管理成本高、勞動強度大、服務效率低、資金流失和車輛失竊嚴重等各種弊端,無法保障投資者的收益及停放車輛的安全,因而嚴重制約了停車場事業的發展。 本圖像型感應卡停車場管理系統借鑒了國際上發達國家同行業的先進管理模式,采用了國際上最先進的感應式IC 卡、單片及微型計算機技術,結合本國實際情況開發了具有完全自主知識產權及核心技術的停車場管理系統。 該系統采用非接觸式操作,具有方便快捷、收費準確、穩定可靠、適合國情、安全性好、形式靈活、功能強大等眾多優點。 GAGGAGAGGAFFFFAFAF

該系列產品能夠有效地解決人工管理停車場所存在的問題,深受業主、車主雙方好評。幾年來,在國內同行的努力下,已成功地替代了國外紙帶式條碼卡、磁卡、接觸式IC卡等落后的收費系統而成為當今停車場設備的主流,對中國停車場事業的發展起到了十分重要的作用。 1.2 系統概述 采用感應卡停車場管理系統,在停車場的出入口設置一套出入口管理設備,使停車場形成一個相對封閉的場所,進出車只需將IC卡在讀卡箱前輕晃一下,系統即能瞬時完成檢驗、記錄、核算、收費等工作,擋車道閘自動啟閉,方便快捷地進行著停車場的管理。 進場車主和停車場的管理人員均持有一張具有自己私人密碼的非接觸IC卡,作為個人的身份識別,只有通過系統檢 GAGGAGAGGAFFFFAFAF

驗認可的IC卡才能進行操作(管理卡)或進出(停車卡),充分保證了系統的安全性、保密性,有效地防止車輛失竊,免除車主后顧之憂。 管理卡分級發行、確定權限,以杜絕管理人員作弊。任何一張管理卡持有者上機操作前均要憑卡進行操作登記。對出口值班員來講,操作登記完畢后則可進入收費管理,期間該出口所有收費均自動記入該值班員名下并存入電腦數據庫。由于值班員持操作卡受權限限制,不能進入系統中更高的軟件菜單項,所以對電腦所記錄的數據無法干涉;上級管理者可以憑卡隨時查詢,核對或打印一個值班段或任何一段時間乃至整個停車場的工作記錄。這樣就從根本上杜絕了停車費用流失和財務統計的失誤,同時系統自動運行,杜絕了人情車、霸王車造成的經濟損失。 停車卡可根據需求不同,分別發行月租卡(月票卡)、儲 GAGGAGAGGAFFFFAFAF

(完整版)数据结构实验报告全集

数据结构实验报告全集 实验一线性表基本操作和简单程序 1 .实验目的 (1 )掌握使用Visual C++ 6.0 上机调试程序的基本方法; (2 )掌握线性表的基本操作:初始化、插入、删除、取数据元素等运算在顺序存储结构和链表存储结构上的程序设计方法。 2 .实验要求 (1 )认真阅读和掌握和本实验相关的教材内容。 (2 )认真阅读和掌握本章相关内容的程序。 (3 )上机运行程序。 (4 )保存和打印出程序的运行结果,并结合程序进行分析。 (5 )按照你对线性表的操作需要,重新改写主程序并运行,打印出文件清单和运行结果 实验代码: 1)头文件模块 #include iostream.h>// 头文件 #include// 库头文件------ 动态分配内存空间 typedef int elemtype;// 定义数据域的类型 typedef struct linknode// 定义结点类型 { elemtype data;// 定义数据域 struct linknode *next;// 定义结点指针 }nodetype; 2)创建单链表

nodetype *create()// 建立单链表,由用户输入各结点data 域之值, // 以0 表示输入结束 { elemtype d;// 定义数据元素d nodetype *h=NULL,*s,*t;// 定义结点指针 int i=1; cout<<" 建立一个单链表"<> d; if(d==0) break;// 以0 表示输入结束 if(i==1)// 建立第一个结点 { h=(nodetype*)malloc(sizeof(nodetype));// 表示指针h h->data=d;h->next=NULL;t=h;//h 是头指针 } else// 建立其余结点 { s=(nodetype*) malloc(sizeof(nodetype)); s->data=d;s->next=NULL;t->next=s; t=s;//t 始终指向生成的单链表的最后一个节点

收费停车场管理系统数据库设计

东方学院 实验(实训)报告 项目名称收费停车场管理系统 所属课程名称数据库原理及应用 项目类型设计、综合型 实验(实训)日期 班级 09信息2班 学号0920400204,0920400211姓名曹欢欢林婉怡 指导教师严素蓉

目录 1. 需求分析 (4) 1.1引言 (4) 1.2任务 (4) 1.2.1需求分析阶段的目标 (4) 1.2.2具体任务 (4) 1.2.3 结果 (5) 2. 概念设计 (11) 2.1目标 (11) 2.2设计过程 (11) 2.3阶段成果 (11) 3. 逻辑设计 (12) 3.1目标 (12) 3.2任务与结果 (12) 3.2.1数据组织 (12) 图9.系统功能模块图 (15) 4. 物理设计 (16) 4.1目标 (16) 4.2任务 (16) 4.2.1数据存取方面 (16) 4.2.2功能模块图 (16) 4.3结果 (18) 4.3.1 存储过程 (18) 4.3.2 触发器 (18) 5. 数据库实施阶段 (19) 5.1目标 (19) 5.2任务与结果 (19) 5.2.1建立数据库 (19) 6. 数据库调试与测试 (20)

1.需求分析 1.1引言 需求分析是设计数据库的起点,需求分析的结果是否准确地反映了用户的实际要求,将直接影响到后面各个阶段的设计,并影响到设计结果是否合理和实用。 目前停车场的管理方式比较落后,已经不能适应现代社会的实际需求,本系统的开发能给管理上带来新鲜的活力,提高管理的效率,具有较高的实用性和开发价值。 1.2任务

1.2.1需求分析阶段的目标 通过调查了解分析停车管理的现状,弄清用户对开发的数据库应用系统的确切要求,以及停车场管理的流程,系统的具体功能和数据库中数据信息。 1.2.2具体任务 (1)处理对象 系统处理的对象包括车辆信息、固定车位信息、自由车位信息、停车车辆信息以及收费记录等五个方面。即 固定车位信息:车位编号、车位位置、车牌号码、车主姓名、车辆品牌、车辆颜色、车辆照片、联系地址、联系方式、车位余额; 自由车位信息:车位编号、车位位置; 车辆信息:车牌号码、车辆品牌、车辆颜色; 停车信息:车位编号、车牌号码、进入时间、离开时间、时间段、车位类型、在位情况、收费费率; 收费记录:车位编号、车牌号码、停车时间、停车费用、发票编号。 (2)处理功能要求 整个系统具体包括三个子系统,分别为:停车处理子系统、车位综合管理子系统以及收费子系统。 处理的功能包括:车辆信息的查询以及更新;空闲车位信息的查询;固定车位信息的查询;进出车辆记录的更新和收费信息的查询与更新等。 (3)安全性与完整性要求 安全性可以通过视图机制来完成,对不同用户设置不同权限,不同的用户只能访问授权的视图,这样可以提高一定的程度的安全性。还可以通过存取控制机制:即定义用户权限,并将用户权限登记到数据字典中以及合法的权限检查来保障安全性。 完整性可以通过声明完整性,即在定义表时声明数据完整性和过程完整性,在服务器端编写触发器来实现。 1.2.3 结果 (1)体会和收获 通过对现在的停车场管理状况的调查,发现停车场管理缺少合适的管理系统,并了解了一下管理的大致流程。与此同时通过网络搜索查找现行的停车场管理系统,根据这两者综合来进行需求分析。调查时需要较强的信息捕捉能力以及事后的总结与思考,同时学会用网络较快较准确地搜索到需要的资料是很关键的。

数据结构实验答案1

重庆文理学院软件工程学院实验报告册 专业:_____软件工程__ _ 班级:_____软件工程2班__ _ 学号:_____201258014054 ___ 姓名:_____周贵宇___________ 课程名称:___ 数据结构 _ 指导教师:_____胡章平__________ 2013年 06 月 25 日

实验序号 1 实验名称实验一线性表基本操作实验地点S-C1303 实验日期2013年04月22日 实验内容1.编程实现在顺序存储的有序表中插入一个元素(数据类型为整型)。 2.编程实现把顺序表中从i个元素开始的k个元素删除(数据类型为整型)。 3.编程序实现将单链表的数据逆置,即将原表的数据(a1,a2….an)变成 (an,…..a2,a1)。(单链表的数据域数据类型为一结构体,包括学生的部分信息:学号,姓名,年龄) 实验过程及步骤1. #include #include #include #define OK 1 #define ERROR 0 #define TRUE 1 #define FALSE 0 #define ElemType int #define MAXSIZE 100 /*此处的宏定义常量表示线性表可能达到的最大长度*/ typedef struct

{ ElemType elem[MAXSIZE]; /*线性表占用的数组空间*/ int last; /*记录线性表中最后一个元素在数组elem[ ]中的位置(下标值),空表置为-1*/ }SeqList; #include "common.h" #include "seqlist.h" void px(SeqList *A,int j); void main() { SeqList *l; int p,q,r; int i; l=(SeqList*)malloc(sizeof(SeqList)); printf("请输入线性表的长度:"); scanf("%d",&r); l->last = r-1; printf("请输入线性表的各元素值:\n"); for(i=0; i<=l->last; i++) { scanf("%d",&l->elem[i]); } px(l,i); printf("请输入要插入的值:\n");

停车场管理系统源代码

//停车场管理系统 #include #include #define OVERFLOW 0 #define ERROR 0 #define OK 1 #define STACKSIZE 2 //车库容量 //时间节点 typedef struct time{ int hour; int min; }Time; //车辆信息 typedef struct{ char CarNum; float time; int pos_a; //车在停车场中的位置 int pos_b; //车在便道上的位置 int flag; }Car,Car2; //车库信息(顺序栈) typedef struct{ Car *top; Car *base; int stacksize; }SqStack; //初始化 int InitStack(SqStack &S){ S.base=new Car[STACKSIZE]; if(!S.base) exit(OVERFLOW); S.top=S.base; S.stacksize=STACKSIZE; return OK; } //判空 int StackEmpty(SqStack S){ if(S.top==S.base) return OK; else return ERROR; }

//判满 int StackFull(SqStack S){ if(S.top-S.base>=S.stacksize) return OK; else return ERROR; } //入栈 int Push(SqStack &S,Car e){ if(S.top-S.base==S.stacksize) return ERROR; *S.top++=e; return OK; } //出栈 int Pop(SqStack &S,Car &e){ if(S.top==S.base) return ERROR; e=*--S.top; return OK; } //遍历栈 int StackTraverse(SqStack S) { Car *p=S.top; Car *q=S.base; int l=1; if(StackEmpty(S)){ for(int j=1;j<=STACKSIZE;j++){ printf("\t车牌:"); printf("\t\t到达时间:"); printf("\t位置%d:空空",j); printf("\n"); } return OK; } while(p!=q){ Car car=*(q); printf("\t车牌: %d",car.CarNum); printf("\t\t到达时间:%5.2f",car.time); printf("\t\t位置:%d",l++); printf("\n");

数据结构实验报告

数据结构实验报告 一.题目要求 1)编程实现二叉排序树,包括生成、插入,删除; 2)对二叉排序树进行先根、中根、和后根非递归遍历; 3)每次对树的修改操作和遍历操作的显示结果都需要在屏幕上用树的形状表示出来。 4)分别用二叉排序树和数组去存储一个班(50人以上)的成员信息(至少包括学号、姓名、成绩3项),对比查找效率,并说明在什么情况下二叉排序树效率高,为什么? 二.解决方案 对于前三个题目要求,我们用一个程序实现代码如下 #include #include #include #include "Stack.h"//栈的头文件,没有用上 typedefintElemType; //数据类型 typedefint Status; //返回值类型 //定义二叉树结构 typedefstructBiTNode{ ElemType data; //数据域 structBiTNode *lChild, *rChild;//左右子树域 }BiTNode, *BiTree; intInsertBST(BiTree&T,int key){//插入二叉树函数 if(T==NULL) { T = (BiTree)malloc(sizeof(BiTNode)); T->data=key; T->lChild=T->rChild=NULL; return 1; } else if(keydata){ InsertBST(T->lChild,key); } else if(key>T->data){ InsertBST(T->rChild,key); } else return 0; } BiTreeCreateBST(int a[],int n){//创建二叉树函数 BiTreebst=NULL; inti=0; while(i

数据库设计作业 智能停车场管理系统 数据库设计(总14页)

数据库设计作业智能停车场管理系统数据库设计(总14 页) -CAL-FENGHAI.-(YICAI)-Company One1 -CAL-本页仅作为文档封面,使用请直接删除

数据库应用技术 期末作业 题目:智能停车场管理系统 学院:电子工程学院 学号: 姓名: 电话: 2014年12月28日

智能停车场管理系统 一、题目概述 随着21世纪的到来,信息化、智能化已变得越来越重要。在停车场的智能化中,涉及停车场车位管理的智能化、车主管理的智能化、停车信息管理的智能化。做好这些工作有利于提高停车场的管理效率,提升停车场的竞争力。 随着汽车工业的迅猛发展和人民生活水平的不断提高,我国汽车拥有量急剧增加。建设部统计数据显示,我国私人汽车拥有量年均增长20%左右,大大快于经济增速。截至2007年6月,全国汽车保有量达5356万辆,其中私人汽车3239万辆。停车场作为交通设施的组成部分,随着交通运输的繁忙和不断发展,人们对其管理的要求也不断提高,都希望管理能够达到方便、快捷以及安全的效果。停车场的规模各不相同,对其进行管理的模式也有不同之处,管理者需要根据自身的条件,选择应用经济、稳定的管理程序,以免选择了高成本的管理系统。本智能停车场管理系统旨在设计一个简洁、稳定、实用的停车场管理信息系统,希望在容错性、实用性、易操作性等方面具有自己的特色,并且保持一定的可扩展性,以满足不同停车场的信息管理需求。 一个简洁、稳定、高效的智能停车场管理系统需要具备以下功能: 1.停车场员工个人信息记录、数据库访问权限设定; 2.停车场车位状况实时监控,能够得知某一时刻某车位是否空闲,如果停放了车辆,能获取车辆相关信息; 3.对于临时车辆,根据车辆进出时间差进行人工收费并记录; 4.车主可以通过手机客户端访问停车场网页,查询停车场停车信息、一段时间的停车记录、收费记录等。 二、需求分析 1 功能需求 一个典型的智能停车场管理信息系统需要包括车辆进出管理及收费功能、停车场车位及车辆信息查询功能和系统设置及管理功能。 1.1 停车场车位划分 首先将停车场划分为固定车位和自由车位两部分。固定车位又可以称为专用车位或内部车位,它的特点是使用者固定,交费采用包月制或包年制,平时进出停车场时不再交费。对于固定车位的车辆,系统有着详细的信息记录,包括车辆信息和车主信息。自由车位又可以称为公用车位或公共车位,它的特点是使用者不固定,针对临时性散客服务,车辆每次出停车场时,根据停车时间和车型交纳停车费用。固定车位的车辆总是停放在自己的车位上,而不停放在自由车位上。不同类型停车场的固定车位和自由车位数目比例是不同的,比如商场、车站、机场类停车场的自由车位数目相对较多,而住宅小区、单位自用类停车场的固定车位数目相对较多。停车场的固定车位和自由车位数目一般情

数据结构实验二11180

理工学院实验报告 系部计算机系班级学号 课程名称数据结构实验日期 实验名称链表的基本操作成绩 实验目的: (1)掌握线性表的链式存储结构的特点; (2)掌握线性表的基本操作:初始化、插入、删除、查找数据元素等运算在链式存储结构上的实现。 实验条件:计算机一台,vc++6.0 实验容与算法思想: 容: 建立一有序的链表,实现下列操作: 1.把元素x插入表中并保持链表的有序性; 2.查找值为x的元素,若找到将其删除; 3.输出表中各元素的值。 算法思想:先创建并初始化一个顺序表(void init_linklist(LinkList)),通过循环,输入一串数据void CreateFromTail(LinkList L);创建主函数;编写算法,完成子函数(查找locate,插入insList,删除DelList,输出output)模块;调用子函数,完成实验要求 运行结果:

附:源程序: #include #include #define OK 1 #define ERROR 0 typedef char ElemType; typedef struct Node { ElemType data; struct Node* next; }Node,*LinkList; void init_linklist(LinkList *l) { *l=(LinkList)malloc(sizeof(Node)); (*l)->next=NULL; } void CreateFromTail(LinkList L) { Node *r, *s; char c; int flag =1; r=L; while(flag) { c=getchar(); if(c!='$') {

停车场系统管理软件

深圳市德立达科技有限公司 TCP200停车场管理系统 Version 使 用 说 明 书 2014年4月23日 目录

TCP200停车场管理系统使用说明书........................ 错误!未定义书签。第一章概述.......................................... 错误!未定义书签。 系统特点........................................ 错误!未定义书签。 系统主要功能.................................... 错误!未定义书签。第二章配置系统...................................... 错误!未定义书签。 安装包相关说明.................................. 错误!未定义书签。 软件安装说明.................................... 错误!未定义书签。 登陆后台管理系统................................ 错误!未定义书签。 后台管理界面详解................................ 错误!未定义书签。 配置服务器IP 地址............................... 错误!未定义书签。 配置收费电脑IP地址.............................. 错误!未定义书签。 配置车库........................................ 错误!未定义书签。 获取和设置控制器IP地址.......................... 错误!未定义书签。 配置入口、出口控制器IP地址及车库等.............. 错误!未定义书签。 基本设置相关.................................... 错误!未定义书签。第三章账户管理...................................... 错误!未定义书签。 添加账户........................................ 错误!未定义书签。 账户管理........................................ 错误!未定义书签。 权限设置........................................ 错误!未定义书签。第四章费率设置...................................... 错误!未定义书签。 设置费率........................................ 错误!未定义书签。 添加节假日...................................... 错误!未定义书签。

数据结构实验报告图实验

图实验一,邻接矩阵的实现 1.实验目的 (1)掌握图的逻辑结构 (2)掌握图的邻接矩阵的存储结构 (3)验证图的邻接矩阵存储及其遍历操作的实现 2.实验内容 (1)建立无向图的邻接矩阵存储 (2)进行深度优先遍历 (3)进行广度优先遍历 3.设计与编码 MGraph.h #ifndef MGraph_H #define MGraph_H const int MaxSize = 10;

template class MGraph { public: MGraph(DataType a[], int n, int e); ~MGraph(){ } void DFSTraverse(int v); void BFSTraverse(int v); private: DataType vertex[MaxSize]; int arc[MaxSize][MaxSize]; int vertexNum, arcNum; }; #endif MGraph.cpp

#include using namespace std; #include "MGraph.h" extern int visited[MaxSize]; template MGraph::MGraph(DataType a[], int n, int e) { int i, j, k; vertexNum = n, arcNum = e; for(i = 0; i < vertexNum; i++) vertex[i] = a[i]; for(i = 0;i < vertexNum; i++) for(j = 0; j < vertexNum; j++) arc[i][j] = 0; for(k = 0; k < arcNum; k++) {

停车场管理系统(需求分析)

停车场管理系统应用软件 需求分析 1. 引言 IT 行业的高速发展让计算机技术深入日常生活的每一个细节,在各个领域中,计算机技术的应用帮助人们减少劳动量,提高工作效率,发挥着越来越重要的作用。随着城市化程度的加深,房地产行业日益兴盛,越来越多的停车场散布在城市里,停车场中来往的车辆与日俱增,对停车场的管理也就是非常重要。本讨论组结合此次的课程设计开发以下的停车场管理系统,使停车场里的车辆能得到有序并且相对全面的管理。 2. 数据流程图分析 2.1. 数据流程图基本符号: 数据接口 数据处理 数据存储 数据流 2.2. 入场停车与出场取车。 2.2.1. 入场流程图: (1)入场 根据系统提示的停车场的现有信息控制车辆的入场,停车场在有车位切卡被识别的情况下方能停车。 (2)停车 指定停车位置提示给用户。 2.2.2. 出场流程图: (1)收费 根据车辆信息,卡的类型以及停车的时间等依据收费标准计算收费额度实施审核通过

收费环节。 (2)出场 交费之后在出场的相关信息提示下完成停车管理过程。 3. 数据字典 数据字典的作用就是给数据流程图上的每个成分以定义与说明。停车场管理系统的数据流程图加上数据字典。能给出一个具有详细的、具体的文字内容与图形的系统逻辑模型,形成一个完整的说明。 基于本系统的规模较大,数据字典的内容繁杂等原因,现只对部分具有代表性的给予说明。 表1、1用户名 表1、2密码 属性:实体所具有的某一特性,一个实体可由若干个属性来刻画,如果就是派生属性则用虚线椭圆表示。 联系:联系也称关系,信息世界中反映实体内部或实体之间的联系。实体内部的联系通常就是指组成实体的各属性之间的联系。 4.2. E-R 图及基本符号:

数据结构实验二

洛阳理工学院实验报告 系部计算机系班级学号姓名 课程名称数据结构实验日期 实验名称链表的基本操作成绩 实验目的: (1)掌握线性表的链式存储结构的特点; (2)掌握线性表的基本操作:初始化、插入、删除、查找数据元素等运算在链式存储结构上的实现。 实验条件:计算机一台,vc++6.0 实验内容与算法思想: 内容: 建立一有序的链表,实现下列操作: 1.把元素x插入表中并保持链表的有序性; 2.查找值为x的元素,若找到将其删除; 3.输出表中各元素的值。 算法思想:先创建并初始化一个顺序表(void init_linklist(LinkList)),通过循环,输入一串数据void CreateFromTail(LinkList L);创建主函数;编写算法,完成子函数(查找locate,插入insList,删除DelList,输出output)模块;调用子函数,完成实验要求 运行结果:

附:源程序: #include #include #define OK 1 #define ERROR 0 typedef char ElemType; typedef struct Node { ElemType data; struct Node* next; }Node,*LinkList; void init_linklist(LinkList *l) { *l=(LinkList)malloc(sizeof(Node)); (*l)->next=NULL; } void CreateFromTail(LinkList L) { Node *r, *s; char c; int flag =1; r=L; while(flag) { c=getchar(); if(c!='$') {

智能车牌识别停车场管理收费系统软件操作说明书

智能车牌识别停车场管理收费系统软件操作说明书 2017-05-17 10:56 多奥智能车牌识别停车场管理收费系统软件操作说明书 一、数据库的安装 安装数据库Microsoft SQL Server 2000 1)选择SQL Server 2000文件夹下的应用程序。 2)选择第一项,即安装SQL Server 2000组件(C)。 3)选择安装数据服务器(S)。 4)选择本地电脑(L)。 5)选择创建新的SQL Server实例,或安装客户端工具(C)。 6)选择服务器和客户端工具(S)。 7)选择默认。点击下一步。 8)选择典型,点击下一步。 9)选择使用本地系统账户,点击下一步。 10)选择混合模式与空密码,点击下一步。 11)继续下一步直到安装结束。重启电脑,数据库安装完成后。 二、停车场软件的安装 安装停车场软件 1)打开光盘,运行,根据提示安装完成后出现。

2)选择“创建本地数据库”,点击“执行选择”后出现连接数据库的界面, 3)点击“连接数据库”后,创建数据库、备份数据库、还原数据库的按钮会显示出来。 4)点击“创建数据库”,创建数据库成功后,退出。再选择“安装加密狗” 5)点击“执行选择”,出现SoftDog Windows驱动安装和卸载程序界面 6)勾选“USB狗驱动”点击“安装”,安装成功后,退出。加密狗驱动安装完成。 三、停车场软件操作 软件的登陆 1)运行软件的安装包,安装好软件。 2)创建好数据库后,点击图标打开软件 3)出现智能停车场管理系统登录窗口,如图示2,输入用户编号101,点击三次回车,进入软件操作界面。或者输入用户编号101后,直接点击“确定”按钮进入软件操作界面

数据结构实验报告2

数据结构实验报告 二.程序设计相关信息 (1)实验题目:编写一个程序algo2-3.cpp,实现双链表的各种基本运算,并在此基础上设计一个主程序完成如下功能: 1.初始化双链表h; 2.依次采用尾插法插入a,b,c,d,e元素; 3.输出双链表h; 4.输出双链表h长度; 5.输出双链表h是否为空; 6.判断双链表h的第3个元素; 7.输出元素‘a’的位置; 8.在第4个元素位置上插入‘f’元素; 9.输出双链表h; 10.删除L的第3个元素; 11.输出双链表h; 12.释放双链表h。 (2)实验目的:熟悉双链表的基本操作并掌握尾插法建表。 (3)算法描述或流程图

(4)源代码 #include #include

typedef struct DNode { char data; struct DNode *next; struct DNode *prior; }DNode,DLinkList; void initlist(DLinkList *&h) { h=(DLinkList*)malloc(sizeof(DLinkList)) ; h->next=NULL; h->prior=NULL; } void destroylist(DLinkList *&h) { DLinkList *p=h,*q=p->next; while(q!=NULL) {free(p); p=q; q=p->next; } free(p); } int getelem(DLinkList *h,int i,char &e) {int j=0; DLinkList *p=h; while(jnext; } if(p==NULL) return 0; else { e=p->data; return 1; } } int listempty(DLinkList *h) { return(h->next==NULL&&h->prior==NULL); } int listlength(DLinkList *h) { DLinkList *p=h;int n=0; while(p->next!=NULL) {n++; p=p->next; } return (n);

停车场数据库设计.

停车场数据库管理系统 姓名: 学号: 专业:

1.需求分析 背景 现在随着社会的发展,车为了人们出行的必备工具,因为它快捷方便,但在行程中快捷方便的同时,到哪停车成为了人们头疼的事。停车场因此存在了,但有的停车场比较大,车位比较多,管理起来较麻烦,这就需要有计算机的辅助。同时随着计算机的发展,计算机数据库可以很好的帮助人们去管理,管理员的工作变的更加简单程序化,且失误减少,效率变高,停车会更加方便。 停车场数据库实现的功能 1.输入及添加停车位、停车位资料,每个停车位信息包括:停车位编号、停车位地址、停车位类别编号、登记日期、是否被占用。停车证信息包括:客户停车证编号、客户姓名、客户性别、客户种类、登记时间。 2.对已存入的停车位、停车证信息进行插入添加。 3.对已存入的信息进行修改。 4.利用停车证对停车进行租借和退还停车位。 5.利用租借停车位时间向客户收费。 关系模式

2.方案图表设计 E-R图 根据所要实现的功能设计,可能建立它们之间的关系,进而实现逻辑结构功能。 图书管理信息系统可以划分为:停车位类别信息、客户信息实体、停车位信息、租借记录信息,退还记录信息。用E-R图一一描述这些实体。 2.1.1类别E-R图: 图2-1类别E-R图 客户信息E-R图: 图2-2 客户信息E-R图 2.1.3信息实体E-R图:

图2-3停车位信息E-R图2.1.4.记录信息E-R图: 图2-4 记录信息E-R图2.1.5记录信息E-R图: 图2-5记录信息E-R图

付款信息E-R图: 图2-6付款信息E-R图2.1.6总的信息实体E-R图: 图2-7总的信息E-R图

数据结构实验报告

姓名: 学号: 班级: 2010年12月15日

实验一线性表的应用 【实验目的】 1、熟练掌握线性表的基本操作在顺序存储和链式存储上的实现。、; 2、以线性表的各种操作(建立、插入、删除、遍历等)的实现为重点; 3、掌握线性表的动态分配顺序存储结构的定义和基本操作的实现; 4、通过本章实验帮助学生加深对C语言的使用(特别是函数的参数调用、指针类型的 应用和链表的建立等各种基本操作)。 【实验内容】 约瑟夫问题的实现:n只猴子要选猴王,所有的猴子按1,2,…,n编号围坐一圈,从第一号开始按1,2…,m报数,凡报到m号的猴子退出圈外,如此次循环报数,知道圈内剩下一只猴子时,这个猴子就是猴王。编写一个程序实现上述过程,n和m由键盘输入。【实验要求】 1、要求用顺序表和链表分别实现约瑟夫问题。 2、独立完成,严禁抄袭。 3、上的实验报告有如下部分组成: ①实验名称 ②实验目的 ③实验内容:问题描述:数据描述:算法描述:程序清单:测试数据 算法: #include #include typedef struct LPeople { int num; struct LPeople *next; }peo; void Joseph(int n,int m) //用循环链表实现 { int i,j; peo *p,*q,*head; head=p=q=(peo *)malloc(sizeof(peo)); p->num=0;p->next=head; for(i=1;inum=i;q->next=p;p->next=head; } q=p;p=p->next; i=0;j=1; while(i

数据库设计作业 智能停车场管理系统 数据库设计

北京邮电大学 数据库应用技术 期末作业 题目:智能停车场管理系统 学院:电子工程学院 学号: 姓名: 电话:

2014年12月28日

智能停车场管理系统 一、题目概述 随着21世纪的到来,信息化、智能化已变得越来越重要。在停车场的智能化中,涉及停车场车位管理的智能化、车主管理的智能化、停车信息管理的智能化。做好这些工作有利于提高停车场的管理效率,提升停车场的竞争力。 随着汽车工业的迅猛发展和人民生活水平的不断提高,我国汽车拥有量急剧增加。建设部统计数据显示,我国私人汽车拥有量年均增长20%左右,大大快于经济增速。截至2007年6月,全国汽车保有量达5356万辆,其中私人汽车3239万辆。停车场作为交通设施的组成部分,随着交通运输的繁忙和不断发展,人们对其管理的要求也不断提高,都希望管理能够达到方便、快捷以及安全的效果。停车场的规模各不相同,对其进行管理的模式也有不同之处,管理者需要根据自身的条件,选择应用经济、稳定的管理程序,以免选择了高成本的管理系统。本智能停车场管理系统旨在设计一个简洁、稳定、实用的停车场管理信息系统,希望在容错性、实用性、易操作性等方面具有自己的特色,并且保持一定的可扩展性,以满足不同停车场的信息管理需求。 一个简洁、稳定、高效的智能停车场管理系统需要具备以下功能: 1.停车场员工个人信息记录、数据库访问权限设定; 2.停车场车位状况实时监控,能够得知某一时刻某车位是否空闲,如果停放了车辆,能获取车辆相关信息; 3.对于临时车辆,根据车辆进出时间差进行人工收费并记录; 4.车主可以通过手机客户端访问停车场网页,查询停车场停车信息、一段时间的停车记录、收费记录等。 二、需求分析 1 功能需求

数据结构实验二-

实 验 报 告 一、实验目的 1) 加深对图的表示法和图的基本操作的理解,并可初步使用及操作; 2) 掌握用图对实际问题进行抽象的方法,可以解决基本的问题; 3) 掌握利用邻接表求解非负权值、单源最短路径的方法,即利用Dijkstra 算法求最短 路径,同时掌握邻接表的建立以及使用方法,能够解决相关的问题; 4) 学会使用STL 中的map 抽象实际问题,掌握map ,List,,priority_queue 等的应 用。 二、实验内容与实验步骤 (1) 实验内容: 使用图这种抽象的数据结构存储模拟的欧洲铁路路线图,通过Dijkstra 算法求出欧洲旅行最少花费的路线。该实验应用Dijkstra 算法求得任意两个城市之间的最少路费,并给出路费最少的路径的长度和所经过的城市名。 (2) 抽象数据类型及设计函数描述 1) 抽象数据类型 class City : 维护一个城市的信息,包括城市名name ,是否被访问过的标记visted ,从某个城市到达该城市所需的总费用total_fee 和总路径长度total_distance ,求得最短路径后路径中到达该城市的城市名from_city 。 class RailSystem : 用邻接表模拟欧洲铁路系统,该邻接表使用数据结构map 实现,map 的key-value 课程名称:数据结构 班级: 实验成绩: 实验名称:欧洲旅行 学号: 批阅教师签字: 实验编号:实验二 姓名: 实验日期:2013 年6 月 18 日 指导教师: 组号: 实验时间:

值对的数据类型分别为string和list<*Service>,对应出发城市名和该城市与它能 够到达的城市之间的Service链表。 class Service: 为铁路系统模拟了两个城市之间的直接路线,包括两个城市之间直接到达的费用 fee,两城市之间的直接距离distance。 部分设计函数描述 ●RailSystem(const string& filename) 构造函数,调用load_services(string const &filename)函数读取数据 ●load_services(string const &filename) 读取传入的文件中的数据并建立上述两个map以模拟欧洲铁路路线图 ●reset(void) 遍历cities图,初始化所有城市的信息:visted未访问,total_distance最大 值,total_fee费用最大值,from_city为空 ●~RailSystem(void) 析构函数,用delete将两个map中所有使用new操作符开辟的空间删除 ●void output_cheapest_route(const string& from, const string& to, ostream& out); 输出两城市间的最少费用的路径,调用calc_route(string from, string to)函 数计算最少费用 ●calc_route(string from, string to) 使用Dijkstra算法计算from和to两个城市间的最少费用的路径 (3)采用的存储结构 1)map > outgoing_services 用来保存由一个城市出发可以直接到达的城市名及这两个城市之间的路径信息。 2)list 以service为指针的list表,保存两城市间的路径。 3)map cities 用来保存所有城市信息,通过城市名查找该城市有关信息。 4)priority_queue, Cheapest> candidates 存储候选的遍历城市,City*是优先队列存储的对象类型,vector是该对象的向量集合,Cheapest是比较规则。 三、实验环境 操作系统:Windows 8 调试软件:Microsoft visual studio 2012 上机地点:综合楼311 机器台号:笔记本

停车场系统收费软件使用说明

停车场收费软件 使 用 说 明

第一章概述 系统特点 本系统采用最新编程技术,界面友好,方便易用。 ●功能齐全,使用方便 管理员权限登录后,可以自由组合收费软件功能提供给值班员使用,灵活性强。 ●自动适应不同屏幕分辨率 支持1024×760等屏幕分辨率。分辨率高表示图像精度高,显示内容多。 ●支持脱机使用 支持临时卡脱机收费,联网后收费记录自动上传。 ●WINDOWS 认正规格编程 应用程序在WINDOWS环境中具有一致的界面和行为。只要用户使用过其他应用程序,他就会发现这个应用程序也是容易学会的。 第二章收费软件配置 注意:需要使用管理员账号登陆。普通值班员是不能对收费软件进行配置的。配置本机不会对其他收费软件照成影响。 管理员初始帐户admin 密码123456 2.1基本设置 恢复出场设置:点击[恢复默认设置]按钮后,收费软件设置将恢复默认设置. 应用程序模式: 目前版本仅支持TCP/IP模式。 显示内卡卡号:此模式下,显示在收费软件信息中的卡号为车卡的内码卡号,一般来说,内卡卡号较长,不易记忆。 显示印刷编号:此模式下,显示的卡号为车卡上印刷的编号,前提是在发行车卡的时候,需要将编号一起录入。 收费模式: 出口收费模式:此模式下,临时卡出场收费是在出口完成的,此时收费软件刷卡计费后,此临时卡就算出场,收费后临时卡就直接交由值班员。一般的停车场都是这种模式。 中央收费模式:此模式一般应用在出口没有值班员值守的情况下,临时卡在中央值班室缴费后,此临时卡会返回给车主,车主带着卡到出口,将临时卡插入收卡机中,即可开闸。 岗亭收费立即保存数据:此模式主要用于控制值班员的收费流程。选择此模式后,一旦读卡器读到一张入场的临时卡,并且按照默认车型计算出费用后,不管值班员是否确认放行,费用直接累加。(注意:此模式下无法选车型,所有临时卡都按照默认车型计费)

相关主题
文本预览
相关文档 最新文档