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

/* 
* Copyright (c)2016,烟台大学计算机与控制工程学院 
* All rights reserved. 
* 文件名称:lalala 
* 作    者:臧新晓 
* 完成日期:2016年12月30日 
* 版 本 号:v1.0 
* 问题描述:立体车库管理系统
* 输入描述:无 
* 程序输出:测试数据 
*/  


 

//dingyi.h
#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 ShowStarB();//展示界面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[],Date date);//修改当前的当天的链表 cl  
void SaveListTemp(CustList *cl);//将链表的信息保存到历史文件today.dat中  
void SaveList(CustList *cl);//保存历史信息至文件  
void DeleteAll(CustList *cl);//删除链表  
void LoadList(CustList *clr);//加载历史文件 


 

//main.cpp
#include "dingyi.h"
int main()  
{  
    system("color 71");  
    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)  
    {  
        ShowStarB();  
        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;  
}  


 

//jiemian.cpp
#include"dingyi.h"  
void Welcome()  
{  
    int i;  
    char choice;  
    for(i=1;i<=160;i++)  
        cout<<"\004";  
    cout<<endl;  
    cout<<"                              立体停车场管理系统                        "<<endl;  
    cout<<endl;  
    cout<<"                             制作人:Zang xinxiao               "<<endl;  
    cout<<endl;  
    cout<<"                                班级: 计156-2                          "<<endl;  
    cout<<endl;
	for(i=1;i<=160;i++)  
        cout<<"\003"; 
    cout<<"                             是否进入该系统(Y/N)?                            "<<endl;  
    cin>>choice;  

    while(1)  
    {  
        if(choice=='Y'||choice=='y')  
        {  
            for(i=0;i<100000000;i++);  
            system ("cls");//清屏  
            break;  
        }  
        else  
            if(choice=='N'||choice=='n')  
                exit(0);  
            else  
            {  
            cout<<"请做出正确的选择!"<<endl;  
                cin>>choice;  
            }  
    }  
}  
void ShowStarA()  
{  
    cout<<"********************************************************************************"<<endl;  
    cout<<"                               欢迎进入管理员界面                             "<<endl;  
    cout<<endl;  
    cout<<"********************************************************************************"<<endl;  
}  
void ShowStarB()  
{  
    cout<<"********************************************************************************"<<endl;  
    cout<<"                               欢迎进入停车场系统                             "<<endl;  
    cout<<endl;  
    cout<<"********************************************************************************"<<endl;  
}  
void ShowStarC()  
{  
    cout<<"********************************************************************************"<<endl;  
    cout<<"                                   你好!顾客                                 "<<endl;  
    cout<<endl;  
    cout<<"********************************************************************************"<<endl;  
}  
  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值