酒店管理系统(C语言)

news2024/11/15 13:39:04

系统分析

本系统分为以下6大模块:顾客登记模块、查询顾客信息模块、查询空房间模块、预订房间模块、退订房间模块、保存并退出模块,如下图所示。

1. 顾客结构体
2. 主菜单的设计及实现
3. 登记顾客模块的实现
4. 查询顾客信息功能的实现
5. 查询空房间功能的实现
6. 预订房间功能的实现
7. 退订房间功能的实现
8. 保存功能的实现

 具体代码

#include<string.h>  
#include<stdlib.h>
#include<stdio.h>  
//#include<conio.h>  
typedef struct tagCustomer
{
  char m_ID[19];     /*身份证号码*/
  char m_name[10];   /*顾客姓名*/
  int  m_age;        /*顾客年龄*/
  char  m_sex[6];    /*顾客性别*/
  int num;
}Customer;/*顾客结构*/

typedef struct tagRoom
{
  int m_num;         /*房间号*/
  int m_floor;       /*楼层*/
  int m_price;       /*价格*/
  int m_use;         /*是否已入住*/
}Room;/*房间结构*/
int i,j=0,age,num,floor,price,use,n;
int reg =0;
Customer cus[5];
Room    r[5];
int count=5;
char ID[18],name[10],sex[6];
FILE *fproom;
FILE *fpcustomer;

void Customer_Input()
{
  if(count<=5)
  {
    printf("请输入身份证号(18位数字):");
    scanf("%s",&cus[j].m_ID);
    printf("请输入姓名(10位字符)");
    scanf("%s",&cus[j].m_name);
    printf("请输入年龄(数字型)");
    scanf("%d",&cus[j].m_age);
    printf("请输入性别(男或女):");
    scanf("%s",&cus[j].m_sex);
  }
  else
  {
    printf("\n 存储空间已满!");
  }
  printf("\n\r顾客可以住在:");
  printf("\n\r房间号   楼层   价格   是否空闲(1:空闲0:已使用)");
  for(i=0;i<count;i++)
  {
    if(r[i].m_use==1)
    {
      printf("\n\r%d      %d       %d       %d ",r[i].m_num,r[i].m_floor,r[i].m_price,r[i].m_use);
    }
  }
  printf("\n\r请你输入房间号:");
  scanf("%d",&num);
  reg = 0;
  for(i=0;i<count;i++)
  {
    if(r[i].m_use==1&&r[i].m_num==num)
    {
      r[i].m_use = 0;
      printf("\n 登记成功!\n");
      cus[j].num=r[i].m_num ;
      j=j+1;
      reg=1;
    }
  }
  if(reg==0)
  {
    printf("\n 登记失败!\n");
  }
  
}
void Customer_ListOut()
{
  if(count<=5)
  {
    printf("请输入身份证号(18位数字):");
    scanf("%s",&ID);
    for(i=0;i<count;i++)
    {
      if(strcmp(cus[i].m_ID,ID)==0)
      {
        printf("\n\r顾客身份证号:%s   姓名:%s   年龄:%d   性别:%s \n",cus[i].m_ID,cus[i].m_name,cus[i].m_age,cus[i].m_sex);
      }
    }
  }
  else
  {
    printf("\n \n");
  }
}
void Room_ListOut()
{
  printf("\n\r房间号   楼层   价格   是否空闲(1:空闲0:已使用)");
  for(i=0;i<count;i++)
  {
    if(r[i].m_use==1)
    {
      printf("\n\r%d      %d       %d       %d ",r[i].m_num,r[i].m_floor,r[i].m_price,r[i].m_use);
    }
  }
}
void PerCustomer_Search()
{
  if(count<=5)
  {
    printf("请输入身份证号(18位数字):");
    scanf("%s",&cus[j].m_ID);
    printf("请输入姓名(10位字符)");
    scanf("%s",&cus[j].m_name);
    printf("请输入年龄(数字型)");
    scanf("%d",&cus[j].m_age);
    printf("请输入性别(男或女):");
    scanf("%s",&cus[j].m_sex);
  }
  else
  {
    printf("\n 住房已满!");
  }
  printf("\n\r顾客可以预订:");
  printf("\n\r房间号   楼层   价格   是否空闲(1:空闲0:已使用)");
  for(i=0;i<count;i++)
  {
    if(r[i].m_use==1)
    {
      printf("\n\r%d      %d       %d       %d ",r[i].m_num,r[i].m_floor,r[i].m_price,r[i].m_use);
    }
  }
  printf("\n 请你输入要预订的房间号:");
  scanf("%d",&num);
  reg = 0;
  for(i=0;i<count;i++)
  {
    if(r[i].m_use==1&&r[i].m_num==num)
    {
      r[i].m_use = 0;
      printf("\n 预订成功!\n");
      cus[j].num=r[i].m_num ;
      j=j+1;
      reg=1;
    }
  }
  if(reg==0)
  {
    printf("\n 预订失败!\n");
  }
}
void UnCustomer_Out()
{
  int k;
  printf("\n 请输入要退房顾客身份证:");
		scanf("%s",&ID);
        for(i=0;i<count;i++)
        {
          if(strcmp(cus[i].m_ID,ID)==0)
          {
            printf("\n\r顾客身份证号:%s   姓名:%s   年龄:%d   性别:%s \n\r已经成功退房!",cus[i].m_ID,cus[i].m_name,cus[i].m_age,cus[i].m_sex);
            for(k=0;k<count;k++)
              if(r[k].m_num==cus[i].num)
                r[k].m_use=1;            
            memset(&cus[i],0,sizeof(Customer));

          }
        }
}
void Customer_Goaway()
{
  fproom=fopen("room","wb+");   
  fwrite((void *)&r,sizeof(Room),count,fproom);
  fclose(fproom);
  
  fpcustomer=fopen("customer","wb+");   
  fwrite((void *)&r,sizeof(Room),count,fpcustomer);
  fclose(fpcustomer);	
  exit(0);
  
}
main()
{
  fproom=fopen("room","wb");   
  if(fproom!=NULL)
  {
    for(i=0;i<count;i++)
    {
      int id=100;
      r[i].m_num=i+100;
      r[i].m_floor=1;
      r[i].m_price=100;
      r[i].m_use=1;
    }
    fwrite((void *)&r,sizeof(Room),count,fproom);
    fclose(fproom);
  }
  else
  {
    printf("\n---文件打开失败--");
  }	
  for(;;)
  {
    
    printf("\n");
    printf("/******************************************\\\n");
    printf("*                                          *\n");
    printf("*               酒店管理系统               *\n");
    printf("*                  主菜单                  *\n");
    printf("*                                          *\n");
    printf("*                1.顾客登记                *\n");
    printf("*                2.查询顾客信息            *\n");
    printf("*                3.查询空房间              *\n");
    printf("*                4.预订房间                *\n");
    printf("*                5.退订房间                *\n");
    printf("*                6.保存并退出系统          *\n"); 
    printf("*                                          *\n");
    printf("\\******************************************/\n\n");
    printf("请输入选择项(1-6):");
    scanf("%d",&n);
    printf("\n\n\n\n");
    if(n>0&&n<=6)
    {
      switch(n)
      {
      case 1:Customer_Input();break;
      case 2:Customer_ListOut();break;/*查询顾客信息*/
      case 3:Room_ListOut();break;/*查询空房间*/
      case 4:PerCustomer_Search();break;/*预订房间*/
      case 5:UnCustomer_Out();break;/*退订房间*/
      case 6:Customer_Goaway();  /*保存退出*/
      }
    }
    else 
    {
      printf("***********************************************************************\n");
      printf("*                                                                      *\n");
      printf("*                              输入错误!                               *\n");
      printf("*                              请退出!                                 *\n");
      printf("*                                                                      *\n");
      printf("***********************************************************************\n");
      break;
    }
  }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1940930.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ubuntu系统vscode调试c/c++大中型项目

文章目录 1. 插件2. 项目工程3. vsode的配置setting.jsonc_cpp_properties.json 4. 启动调试 前置阅读 vscode调试第一篇 1. 插件 c/c, cmake, cmake tools 2. 项目工程 对于我的项目需要用到很多的三方库&#xff0c;三方库的版本又会有很多&#xff0c;一般都是用cmake编译…

建图,链式前向星,拓扑排序

建图&#xff0c;链式前向星&#xff0c;拓扑排序 建图的三种方式1.邻接矩阵2.邻接表3.链式前向星 拓扑排序练习题-课程表字典序最小的拓扑排序拓扑排序模板题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 提示 例题1.火星字典2.戳印序列 建图的三种方式 1.邻接矩阵 …

485,Modbus,开关量,UART,I2C,4-20mA,0-5V,TTL接口区别

工业和电子通信中最常见的几种类型&#xff0c;它们在数据传输方式、信号类型、通信协议、应用领域和物理特性上有所不同。下面分别解释这些接口的区别&#xff1a; 1. RS-485 类型&#xff1a;半双工差分信号传输。用途&#xff1a;用于长距离、多点通信场合&#xff0c;如楼…

Redis--12--1--分布式锁---java

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 Redis与分布式锁Jedis实现1.RedisConfig2.RedisDistLock3.应用4.加上看门狗逻辑 RedisDistLockWithDog redisson实现1.依赖2.代码 Redis与分布式锁 Jedis实现 1.Re…

spring security如何适配盐存在数据库中的密码

19.token认证过滤器代码实现_哔哩哔哩_bilibili19.token认证过滤器代码实现是SpringSecurity框架教程-Spring SecurityJWT实现项目级前端分离认证授权-挑战黑马&尚硅谷的第20集视频&#xff0c;该合集共计41集&#xff0c;视频收藏或关注UP主&#xff0c;及时了解更多相关视…

【学习笔记】无人机系统(UAS)的连接、识别和跟踪(六)-无人机直接C2通信

目录 引言 5.4 直接C2通信 5.4.1 概述 5.4.2 A2X直接C2通信服务的授权策略 5.4.3 USS使用A2X直接C2通信服务的C2授权程序 5.4.4 直接C2通信建立程序 引言 3GPP TS 23.256 技术规范&#xff0c;主要定义了3GPP系统对无人机&#xff08;UAV&#xff09;的连接性、身份识别…

手动构建线性回归(PyTorch)

import torch from sklearn.datasets import make_regression import matplotlib.pyplot as plt import random #1.构建数据 #构建数据集 def create_dataset():x,y,coefmake_regression(n_samples100,n_features1,random_state0,noise10,coefTrue,bias14.5)#将构建数据转换为张…

AI大模型的风过去了?不,是离我们越来越近了

OpenAI摊牌了。不再掩藏锋芒&#xff0c;拿年初预测的2亿美元收入做挡箭牌&#xff0c;“我们的年营收达到了13亿美元。”10月中旬Sam Altman终于透露出来。13亿美元&#xff0c;同比增长4500%。 国内。资本和公众的视线越来越多地放在局势变幻、芯片和造车上。 △三季度融资行…

学习系列一:YOLO系列目标检测框架之间介绍及对比

YOLO系列目标检测框架之间介绍及对比 华为HCIP AI高级工程师证书&#xff0c; 华为HCIA AI证书&#xff0c;目前从事视觉算法工作 文章目录 YOLO系列目标检测框架之间介绍及对比前言一、YOLOv1二、YOLOv2三、YOLOv3四、YOLOv4五、YOLOv5及后续算法 前言 YOLO系列算法 YOLO 创…

《0基础》学习Python——第十七讲__正则表达式(requests)

一、什么是正则表 正则表达式是一种用于匹配和操作字符串的强大工具。它可以用于检索、替换和验证字符串。正则表达式使用特定的语法来描述字符串的模式&#xff0c;然后用于查找符合该模式的字符串。 在Python中&#xff0c;可以使用re模块来使用正则表达式。re模块提供了一组…

启动流程和切换流程

启动流程 #mermaid-svg-iUWGw8xl1SyAmoo9 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-iUWGw8xl1SyAmoo9 .error-icon{fill:#552222;}#mermaid-svg-iUWGw8xl1SyAmoo9 .error-text{fill:#552222;stroke:#552222;}#…

3D培训大师创新培训体验,加速空调关键组件的高效精准安装

如今&#xff0c;空调系统的复杂性和精密性与日俱增&#xff0c;对专业技术人员的要求也日益提高。尤其是决定空调是否能平稳运行的空调关键组件的装配培训&#xff0c;不再局限于传统的理论讲解和实体模型演示&#xff0c;而是更注重数字化、沉浸式学习。 案例背景 某空调公…

代码随想录算法训练营Day26 | 491.递增子序列 | 46.全排列 | 47.全排列 II | 332.重新安排行程 | 51.N皇后 | 37.解数独

今日任务 491.递增子序列 题目链接&#xff1a; https://leetcode.cn/problems/non-decreasing-subsequences/description/题目描述&#xff1a; Code class Solution { public:vector<vector<int>> findSubsequences(vector<int>& nums) {vector&l…

[PM]数据分析

概览 数据的定义 运营数据 分析的目的 数据分析流程 1.明确目标 2.数据来源 3.采集数据 4.数据整理 5.数据分析 趋势分析 当数据出现异常&#xff0c;一般从3个角度去查找问题&#xff1a; 1.技术层面&#xff0c;是不统计出错&#xff0c;或者产品出现bug 工 2.产品层面&am…

haproxy服务介绍

haproxy 搭建使用开启HAProxy的界面UI配置负载均衡配置web代理 HAProxy&#xff08;High Availability Proxy&#xff09;是一个高性能的TCP/HTTP负载均衡器和代理服务器&#xff0c;广泛用于提升Web应用的可用性和性能。[官网说明](https://docs.haproxy.org/2.8/intro.html#3…

羊大师:户外狂欢羊奶滋养,年轻人的活力养生新潮流

在这个快节奏的时代&#xff0c;年轻人正以他们独有的方式&#xff0c;重新定义着健康与养生的概念。他们深知&#xff0c;气血不足不应是青春的代名词&#xff0c;而应是活力四射的前奏。于是&#xff0c;一群年轻人以“发癫式”打卡的创意方式&#xff0c;将户外活动的乐趣推…

[保姆级教程]uniapp安装使用uViewUI教程

文章目录 创建 UniApp 项目下载uView UI下载安装方式步骤 1: 安装 uView UI步骤 2: 查看uView UI是否下载成功步骤 3: 引入 uView 主 JS 库步骤 4: 引入 uView 的全局 SCSS 主题文件步骤 5: 引入 uView 基础样式步骤 6: 配置 easycom 组件模式注意事项 NPM方式步骤 1: 安装 uVi…

跟代码执行流程,读Megatron源码(二)训练入口pretrain_gpt.py

Megatron-LM默认支持GPT、T5、BERT等多个常见模型的预训练&#xff0c;当下大模型流行&#xff0c;故以pretrain_gpt.py为例做源码的走读。 一. 启动pretrain_gpt.py pretrain_gpt.py为GPT类模型的训练入口&#xff0c;它通过命令行形式被调用&#xff0c;其精确执行路径位于M…

n7.Nginx 第三方模块

Nginx 第三方模块 第三模块是对nginx 的功能扩展&#xff0c;第三方模块需要在编译安装Nginx 的时候使用参数–add-modulePATH指定路径添加&#xff0c;有的模块是由公司的开发人员针对业务需求定制开发的&#xff0c;有的模块是开 源爱好者开发好之后上传到github进行开源的模…

初学Linux之常见指令(上)

初学Linux之常见指令&#xff08;上&#xff09; 文章目录 初学Linux之常见指令&#xff08;上&#xff09;1. Linux下的小技巧热键man 指令 2. ls 指令3. pwd 指令4. cd 指令5. tree 指令6. touch 指令7. mkdir 指令8. rmdir 和 rm 指令9. cp 指令10. mv 指令 1. Linux下的小技…