数据结构课程设计~~立体停车场管理系统(改进版)

main.cpp#include"liti.h"int main(){ system("color f3"); Welcome(); //初始化还没有出库的车 Car cars[FLOOR][PNUMBER]; int i,j; for(i=0;i 摘要由CSDN通过智能技术生成
<pre name="code" class="cpp">/*****************************************
*版权所有(C)2015.LiHao
*
*文件名称main.cpp
*文件标识:无
*内容摘要:该项目的主函数文件
*其他说明:无
*当前版本:V1.0
*作者:李浩
*完成日期:20151224
*
*修改记录:无
*修改日期:20151224
*版本号:V1.0
*修改人:lihao
*修改内容:无
*****************************************/
#include"liti.h"
/*****************************************
*功能描述:统筹全局以及全部函数的调用
*输入参数:是否进入系统
*输出参数:系统界面
*返回值:无
*其他声明:无
*****************************************/

int main()
{
    system("color f3");
	Welcome();
	//初始化还没有出库的车
	Car cars[FLOOR][PNUMBER];
	int i,j;
	for(i=0;i<FLOOR;i++)
	{
		for(j=0;j<PNUMBER;j++)
		{
			cars[i][j].floor =0;
			cars[i][j].pnumber=0;
			cars[i][j].ptime=0;
			cars[i][j].empty=0;
			strcpy(cars[i][j].license ,"0");
		}
	}
  Load(cars);//加载最初的四辆车
	//加载历史文件
	CustList *cl,*clr;//cl保存当天的修改信息,clr保存以前的历史信息,当推出程序时,自动把当天信息cl修改的动态历史保存到clr中
	InitCustList1(cl,cars);//cl保存当天的修改信息
	InitCustList(clr);//保留历史文件list.txt的内容
	while(1)
	{
		ShowStarM();
		cout<<"1 客户界面"<<endl;
		cout<<"2 车管界面"<<endl;
		cout<<"3 退出整个程序"<<endl;
		cout<<"请选择:";
		cin>>i;
		if(i<1||i>3)
		{
			cout<<"您的操作非法!!!"<<endl;
			continue;

		}
		system ("cls");
		switch(i)
		{
		case 1:
			{
				Customer(cars,cl);
		    	SaveList(cl);
			    SaveListTemp(cl);
			}
			break;
		case 2:
			{
				LoadList(clr);
				Manage(cars,cl,clr);
			}
			break;
		case 3:
			{
				SaveList(cl);
				SaveListTemp(cl);
			}
			exit(-1);
		}
	}
	return 0;
}
/*****************************************
*版权所有(C)2015.LiHao
*
*文件名称liti.h
*文件标识:无
*内容摘要:该项目定义的各种数据的结构体以及各种函数的定义
*其他说明:无
*当前版本:V1.0
*作者:李浩
*完成日期:20151224
*
*修改记录:无
*修改日期:20151224
*版本号:V1.0
*修改人:lihao
*修改内容:无
*****************************************/
#include <iostream>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>//standard library标准库文件
#include <time.h>//得到当前时间的头文件
#define FLOOR 2 //全局变量定义两层楼
#define PNUMBER 6//全局变量定义每层楼有六个车位
using namespace std;
struct Car//定义每辆车的结构体
{
	char license[8];//车牌号
	int floor;//楼层
	int pnumber;//对应楼层的车位
	int ptime;//停车时间
	int empty;//标志位,有车为1,无车为0
};
struct Date//时间结构体
{
	char day[11];//日期
	char shike[9];//时间
	char weekday[10];//星期几
};
typedef struct Snode//节点的结构体
{
	char license[8];//车牌号
	Date date;//停车的时刻
	Date dateleave;//车离开的的时刻
	int floor;//楼层
	int pnumber;//对应车位
	int ptimecount;//本次停车总时间
	float cost;//停车费
	Snode *next;
}CustList;
struct User//管理员结构体
{
	char id[10];//账户
	char name[10];//姓名
	char password[10];//密码

};
void Welcome();//欢迎界面
void ShowStarA();//展示界面a
void ShowStarM();//展示界面b
void ShowStarC();//展示界面c
int Enterpark(Car cars[FLOOR][PNUMBER],char *license,int &floor,int &pnumber);//存车函数
void Savecars(Car cars[FLOOR][PNUMBER]);//保存车辆信息
bool IsEmpty(Car cars[FLOOR][PNUMBER]);//取车时判断车场是否为空
bool IsFull(Car cars[FLOOR][PNUMBER]);//存车时判断车场是否为空
bool IsSame(Car cars[FLOOR][PNUMBER],char *license);//查看存的车牌号是否存在
void Print(char license[],int floor,int pnumber,int ptime,float &cost);//输出	收费后 个人 凭据
void Leavepark(Car cars[FLOOR][PNUMBER],char license[],int &floor,int &pnumber,int &ptime);//取车函数
int CarOutMenu(char license[],int &floor,int &pnumber,int &ptime,float &cost,char note[100]);//取车的菜单项
void Customer(Car cars[FLOOR][PNUMBER],CustList *cl);//顾客界面
void Manage(Car cars[FLOOR][PNUMBER],CustList *cl,CustList *clr);//后台程序
void GetDate(Date &date);//得到当前时间
int UsertestAdd();//登陆界面或者注册用户
void Load(Car cars[FLOOR][PNUMBER]);//加载初始化的四辆汽车
void Loadfile(Car cars[FLOOR][PNUMBER],char license[8],int floor,int pnumber,int ptime,int empty);//加载每一个停车位的状态
void Showcars(Car cars[FLOOR][PNUMBER],CustList *cl);//展示现有汽车停车信息
void Message(CustList *clr);//历史停车信息
void MessageIntoFile(char note[100],char license[8]);//保存信息至文件
void CheckOneCar(CustList *clr,char *license);//查找某一车辆的停车信息
void InitCustList(CustList *&cl);//初始化链表
void InitCustList1(CustList *&cl,Car cars[FLOOR][PNUMBER]);//建立链表保存信息
void InsertToFirst(CustList *cl,char *license,int floor,int pnumber,Date date);//头插法,插入节点
void InsertToLst(CustList *cl,char *license,int floor,int pnumber,int ptime,float cost,Date date,Date dateleave);//从文件中读出时,尾差法,使得时间降序排列
void SearchUpdate(CustList *&cl,char *license,float cost,int ptimecount,char note[]);//修改当前的当天的链表 cl
void SaveListTemp(CustList *cl);//将链表的信息保存到历史文件today.dat中
void SaveList(CustList *cl);//保存历史信息至文件
void DeleteAll(CustList *cl);//删除链表
void LoadList(CustList *clr);//加载历史文件
/*****************************************
*版权所有(C)2015.LiHao
*
*文件名称liti.cpp
*文件标识:无
*内容摘要:该项目的所有函数的具体内容
*其他说明:无
*当前版本:V1.0
*作者:李浩
*完成日期:20151224
*
*修改记录:无
*修改日期:20151224
*版本号:V1.0
*修改人:lihao
*修改内容:无
*****************************************/
#include"liti.h"
void Welcome()
{
	int i;
	char choice;
	for(i=1;i<=160;i++)
		cout<<"\003";
	cout<<endl;
	cout<<"       ****************       立体停车场管理系统        ****************       "<<endl;
	cout<<endl;
	cout<<"          **********             制作人:李浩              **********         "<<endl;
	cout<<endl;
	cout<<"            ******                班级:146-2                ******           "<<endl;
	cout<<endl;
	cout<<"********************************************************************************"<<endl;
	cout<<"                             是否进入该系统(Y/N)?                            "<<endl;
	cin>>choice;
	while(1)
	{
		if(choice=='Y'||choice=='y')
		{
			for(i=0;i<100000000;i++);
			system ("cls");//清屏
			break;
		}
		else
  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实验二 停车场管理 班级:A0712 学号:12 姓名:冷清淼 成绩:__________ 指导教师签名:__________ 一、问题描述 设停车场是一个可停放n辆车的狭长通道,且只有一个大门可供汽车进出。在停车场 ,汽车按到达的先后次序,由北向南依次排列(假设大门在最南端)。若停车场已停满 n辆车,则后来的汽车需在门外的便道上等候,当有车开走时,便道上的第一辆车即可开 入。当停车场某辆车要离开时,在它之后进入的车辆必须先退出停车场为它让路,待该 辆车开出大门后,其他车辆再按原次序返回车场。每辆车离开停车场时,应按其停留时 间的长短交费(在便道上停留的时间不收费)。 设计要求: 1.模拟上述管理过程。要求以顺序栈模拟停车场,以链队列模拟便道。 2.从终端读入汽车到达或离去的数据,每组数据包括三项: (1)是"到达"还是"离开"; (2)汽车牌照; (3)"到达"或"离开"的时刻。 3.与每组输入信息相应的输出信息为:如果是到达的车辆,则输出其在停车场中或 便道上的位置;如果是离去的车辆,则输出其在停车场中停留的时间和应交的费用。 二、算法说明 1.数据结构说明 (1)用到两个堆栈:一个为车场栈;另一个为临时栈temp typedef struct NODE{ CarNode *stack[MAX+1]; int top; }SeqStackCar; /*模拟车场*/ 一个队列结构,存储便道车辆信息: typedef struct Node{ QueueNode *head; QueueNode *rear; }LinkQueueCar; /*模拟便道*/ 2.算法说明 (1) 功能模块说明:停车场管理系统含有三个模块,即:车辆到达、离开、列表显示 图1 (2)以模块为单位分析算法 1、"到达"模块:到达时有两种情况,即车场是否满,未满则直接进入停车场;满时,到 便道等待。如图2。 图2 2."离开"模块:离开时,当车库为空时,提示没有车,结束;否则车辆离开。如图3。 图3 3. "显示"模块:显示模块有两个显示选项,即:车场与便道。如图4。 图4 三、测试结果 (一)测试用例(说明:测试用例要合理并且足够,既要有正确用例,也要有错误用例 ,同时检验程序的正确性和强壮性) 1.第一组测试用例 (1)测试输入:停车场的车辆离开,如下表: "服务选择 "车牌号/车位 "到达/离开时间 " "1 "QH058 "15:25 " "1 "AB123 "18:45 " "1 "EA642 "23:15 " "2 "2 "0:30 " "2 "1 "0:65(错误) " (2)测试目的:测试离开方法时间格式控制以及费用计算是否正确。 (3)正确输出:第一次离开的是AB123,应交费3.45元。第二次时,当在输入65时, 应该提示输入错误,重输。 (4)实际输出: (5)错误原因:第一个错误是在计算时,一个数字错了;第二个是没有对时间格式 控制。 (6)当前状态:已改正 2.第二组测试用例 (1)测试输入:连续6辆车到达,如下表: " 服务选 " 车牌号 " 到达时间 " "择 " " " "1 "A8828 "7:56 " "1 "S2296 "8:25 " "1 "WW666 "8:45 " "1 "HK456 "15:50 " "1 "GH999 "12:30 " "1 "DD555 "13:40 " 测试目的:测试到达方法与列表显示方法能否正确完成。 (3)正确输出:先到达的五辆车先进入停车场,最后到达的一辆在便道等候。 (4)实际输出: (5)错误原因:没有作出时间先后的判断,而是先输入先进入。 (6)当前状态:待修改 3.第三组测试用例 (1)测试输入:接上一步输入离开信息,下表: "服务选择"离开车位"离开时间"便道车进入时 " " " " "间 " "2 "3 "13:30 "13:40 " (2)测试目的:测试离开方法功能是否成功以及便道进入车场是否正确。 (3)正确输出:输出3号车位的车辆离开信息清单,便道1号车进入停车场。 (4)实际输出: 错误原因:没有错误。 (6)当前状态:通过 (二)测试结果分析 此停车管理系统基本可能实现一个小的停车场的管理,其"到达"与"离开"方法都相对比 较完整,以及结算清单明了。尽管在时间先后上有出现混乱,但当其用到实际应用时, 那个时间先后就可以避免了。但在输入数据时,要按照严格的格式输入,否则有可能出 现死去或崩溃。若本系统能加上保存功能就更好了,因为一个系统在使用过程中总会关 机等,而此系统的缺点却是没有保存功能,关闭之后就要重新建立了。会慢慢完善。 附录:源代码 ///系统说明:本系统适应于小型停车场,且停车时间在一天之的短期停放停车场。 //在此系统中,车库容量设置为5,便于测

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值