指针.酒店管理系统

来源:互联网 发布:数据 集合提供商 编辑:程序博客网 时间:2024/05/17 06:26

大面积使用指针,链表,结构体

把它做成一个完整的系统很不错

//

//  main.cpp

//  酒店管理系统

//

//  Created by Mr.Xue on 16/12/28.

//  Copyright © 2016 Mr.Xue. All rights reserved.

//


#include <iostream>

#include <string.h>

#include <stdio.h>

#include <math.h>

struct Room

{

    char id[20];

    float price;

    char state[10];

    structRoom* next;

};

struct RoomDB

{

    int total;

    structRoom* start;

    structRoom* end;

    int (*add)(structRoom*,structRoomDB*);

    structRoom*(*query)(char*,structRoomDB* );

    int (*commit)(structRoomDB*);

    int (*del)(char*,structRoomDB*);

    int (*update)(structRoom*,structRoomDB*);

};

int addRoom(structRoom* room,structRoomDB* db)

{

    if(NULL==room||(*room).id==NULL)

    {

        printf("增加失败,客房信息不能为空//编号不能为空\n");

        return0;

    }

    if(0==(*db).total)

    {

        (*db).start=room;

        (*db).end=(*db).start;

    }

    else

    {

        (*((*db).end)).next=room;

        (*db).end=room;

    }

    (*db).total++;

    printf("当前客房总数%d\n",(*db).total);

    return0;

}

int saveRoom(structRoomDB* db)

{

    FILE* fdb;

    int res;

    structRoom* temp;

    if(0==(*db).total)

    {

        printf("客房为空\n");

        return0;

    }

    fdb=fopen("桌面:\\Room.DOC","wt");

    if(NULL==fdb)

    {

        printf("文件打开失败\n");

        return0;

    }

    temp=(*db).start;

    while(NULL!=temp)

    {

        res=fprintf(fdb,"%s",(*temp).id);

        if(-1==res)

        {

            printf("数据保存失败\n");

            return0;

        }

        temp=(*temp).next;

    }

    fclose(fdb);

    printf("保存文件成功\n");

    return1;

}

struct Room* queryRoom(char *id,structRoomDB* db)

{

    int total=(*db).total;

    int i,isame;

    structRoom* temp=(*db).start;

    for(i=0;i<total;i++)

    {

        isame=strcmp(id,(*temp).id);

        if(isame==0)

        {

            printf("已找到\n");

            return temp;

        }

        temp=(*temp).next;

    }

    printf("不存在\n");

    returnNULL;

    return0;

}

int delRoom(char* id,structRoomDB* db)

{

    int isame;

    structRoom* temp;

    char* nexid;

    if(0==(*db).total)

    {

        printf("删除失败\n");

        return -1;

    }

    nexid=(*(*db).start).id;

    isame=strcmp(id,nexid);

    if(isame==0)

    {

        (*db).start=(*(*db).start).next;

        (*db).total--;

        printf("删除成功\n");

        return1;

    }

    else

    {

        temp=(*db).start;

        while(NULL!=(*temp).next)

        {

            nexid=(*((*temp).next)).id;

            isame=strcmp(id,nexid);

            if(isame==0)

            {

                (*temp).next=(*((*temp).next)).next;

                (*db).total--;

                printf("删除成功\n");

                return1;

            }

            

        }

    }

    printf("删除失败\n");

    return0;

}

int updateRoom(structRoom* room,structRoomDB* db)

{

    char id[20];

    structRoom* iroom;

    strcpy(id,(*room).id);

    iroom=queryRoom(id,db);

    if(NULL==iroom)

    {

        printf("修改失败\n");

        return0;

    }

    strcpy((*iroom).state,(*room).state);

    (*iroom).price=(*room).price;

    printf("修改成功\n");

    return1;

}

int main()

{

    structRoomDB datas;

    structRoom *room;

    datas.total=0;

    datas.add=addRoom;//增加客房

    datas.commit=saveRoom;//保存数据到文件

    datas.query=queryRoom;//查找客房

    datas.del=delRoom;//删除客房

    datas.update=updateRoom;////修改客房

    

    room=(structRoom*)malloc(1*(sizeof(structRoom)));

    strcpy((*room).id,"8008");

    (*room).price=628.00;

    strcpy((*room).state,"空闲");

    (*room).next=NULL;

    

    datas.add(room,&datas);

    datas.commit(&datas);

    datas.query("8008",&datas);

    

    return0;

}

//(a||b)=(!a&&!b)||(a&&b)


0 0