C语言课程设计-旅店登记系统

需求分析:

1.设计题目:旅店登记系统

2.系统功能需求分析:房间信息的查询。旅客信息的录入及查询。房间费用的查询。

概要设计:

系统总体设计框架:

  • 详细设计:

主要阐述功能模块的算法设计思路

定义顾客结构体

定义房间结构体

编写查询空房间函数

编写顾客信息登记函数

编写查询顾客信息函数

编写退订房间函数

编写费用查询函数

编写保存退出函数

程序代码

#include<string.h>     
#include<stdlib.h>   
#include<stdio.h>     
#include<conio.h>
#include<Windows.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 chaxunkongfangjian()                      /*查询空房间函数部分*/
{   
  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 dengji()                       /*顾客登记部分*/
{   
  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 chaxunxinxi()                   /*顾客信息部分*/
{   
int t;
  if(count<=5)   
  {   
  printf("按身份证查找请按1,按姓名查找请按2\n");
  scanf ("%d",&t);
if(t==1)
   {
    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);   
      }   
    } 
  }
if(t==2)
	 {
	printf("请输入姓名:");   
    scanf("%s",&name);   
    for(i=0;i<count;i++)   
    {   
      if(strcmp(cus[i].m_name,name)==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 tuidingfangjian()                     /*顾客退订函数部分*/
{   
  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 baocuntuichu()                   /*保存退出函数部分*/
{   
  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);   
     
}   
void feiyong()                           /*费用查询部分*/
{
	printf("一楼价格100元每晚    \n");
	printf("二楼价格200元每晚    \n");
	printf("三楼价格300元每晚    \n");
	printf("四楼价格400元每晚    \n");
	printf("很遗憾,我们目前只开放一楼房间\n\n\n");
} 
main()                                   /*主函数*/
{  
 
system("color f4");
  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("║                1.查询空房间              ║\n");   
    printf("║                2.顾客信息登记            ║\n");   
    printf("║                3.查询顾客信息            ║\n");      
    printf("║                4.退订房间                ║\n");   
    printf("║                5.保存并退出系统          ║\n"); 
	printf("║                6.费用查询                ║\n");   
    printf("║                                          ║\n");     
    printf("请输入选择项(1-6):");   
    scanf("%d",&n);   
    printf("\n\n\n\n");   
    if(n>0&&n<=6)   
    {   
      switch(n)   
      {
	  case 1:chaxunkongfangjian();break;            /*查询空房间*/
      case 2:dengji();break;                     /*顾客信息登记*/
      case 3:chaxunxinxi();break;               /*查询顾客信息*/       
      case 4:tuidingfangjian();break;            /*退订房间*/   
      case 5:baocuntuichu();                     /*保存退出*/   
      case 6:feiyong();break;                   /*费用查询*/
      }   
    }   
    else    
    {   
      printf("╔═════════════════════╗\n");   
      printf("║                                          ║\n");   
      printf("║                输入错误!                 ║\n");   
      printf("║                 请退出!                  ║\n");   
      printf("║                                          ║\n");   
      printf("╚═════════════════════╝\n");   
      break;   
    }   
    }
    }

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

X-MTing

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值