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

本文介绍了一项数据结构课程设计项目——立体停车场管理系统。该系统利用数据结构实现高效的空间管理和车辆停放操作。通过改进版的设计,提升了系统性能和用户体验。
摘要由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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值