资源描述
C语言酒店管理系统设计
20
2020年4月19日
文档仅供参考
《C++程序设计》课程设计报告
班级 计科101班 学号 37 姓名 毛翔 得分
一 目的
加深对C++/C语言知识的理解,扩大相关知识面,培养对这些知识的应用能力。经过一个实际问题的C++/C语言源程序的编写和调试,提高综合运用C++/C语言、程序设计技术的能力,并为后续相关课程的学习打下基础。
二 题目及要求
题目:酒店房间登记与计费管理系统
功能:1、屏幕上出现一个界面,让操作员能够方便的选择所需要进行的操作,包括登记入住、查询房间的入住情况、查询当前费用、结账退房等操作。
2、对不同标准的房间实施不同的收费标准,也能够按天收费或按小时收费,可根据顾客需要在登记的入住的时候进行选择。
3、在结账退房时,根据入住的时间,计费方式和房间单价计算出总费用。
分步实施:
1、初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数;
2、完成最低要求:建立房间列表,完成登记入住、查询房间入住情况功能。
3、进一步要求:完成计费和费用查询功能。
要求:1、用C语言实现系统;
2、函数功能要划分好(结构化程序设计);
3、界面友好(良好的人机交互),加必要的注释;
4、要提供程序测试方案,程序一定要经得起测试,宁可功能少一些,也要能运行起来,不能运行的程序是没有价值的。
三 程序设计思想及流程图
正确定义所要用到的变量,运用结构体存放房间的信息,用函数实现各个功能, 对不同标准的房间实施不同的收费标准用,在结账退房时,根据入住的时间,计费方式和房间单价计算出总费用,用switch语句实现旅客对所需要的操作的选择,其它具体操作的实现用循环、顺序、选择结构语句实现。
四 源程序
#include "stdafx.h"
#include <iostream>
using namespace std;
#define ROOMNUM 10
#define DAYFEE 100
#define HOURFEE 10
typedef struct room
{
int id;//房间编号
int num;//床位数
float fee;//费率
int type;//0 代表按天,1代表安小时
float time;//时间
char startTime[50];//入住时间
char name[30];//旅客姓名
bool status;//房间状态 false 代表空闲 true 代表已经有旅客
}ROOM;
bool InitRoom(ROOM *roomList,int len)
{
//printf("请分别输入 编号 床位数 ");
for(int i=0;i<len;i++)
{
//cin>>roomList[i].id>>roomList[i].num;
roomList[i].id = 100+i;
roomList[i].num = 2;
roomList[i].type = 0;
roomList[i].status = false;
roomList[i].time = 0;
roomList[i].fee = DAYFEE;
}
return true;
}
void InitRoom(ROOM &r)//重载
{
r.type = 0;
r.status = false;
r.time = 0;
r.fee = DAYFEE;
}
int RegRoom(ROOM *roomList,int len)
{
bool flag = false;
for(int i=0;i<len;i++)
{
if(!roomList[i].status)
{
flag = true;
break;
}
}
if(flag)
{
cout<<"请分别输入:客户名称 起始时间 租住方式(0/1) \n";
cin>>roomList[i].name>>roomList[i].startTime>>roomList[i].type;
if(roomList[i].type == 1)
{
roomList[i].fee = HOURFEE;
}
roomList[i].status = true;
}
if(flag)
return i;
else
return -1;
}
bool SearchRoom(ROOM *roomList,int len,int roomId)
{
bool flag = false;
for(int i=0;i<len;i++)
{
if(roomList[i].id == roomId)
{
flag = true;
break;
}
}
if(flag)
{
if(roomList[i].status)
{
cout<<"该房间已经被旅客:"<<roomList[i].name<<" 租住!"<<endl;
}
else
{
cout<<"该房间还是空闲的!"<<endl;
}
}
else
{
cout<<"该房号不存在!"<<endl;
}
return flag;
}
void DispalyCountInfo(ROOM &r)
{
cout<<"房号:"<<r.id<<" 客户名:"<<r.name<<"起始时间:"<<r.startTime<<" 费用:"<<r.fee*r.time<<endl<<endl;
}
void DispalyAllRoom(ROOM *roomList,int len)
{
cout<<"房号 "<<"状态 "<<"客户名 "<<"入住时间"<<endl;
for(int i=0;i<len;i++)
{
cout<<roomList[i].id;
if(roomList[i].status)
{
cout<<" 入住 "<<roomList[i].name<<" "<<roomList[i].startTime;
}
else
{
cout<<" 空闲 ";
}
cout<<endl;
}
}
bool CountRoom(ROOM *roomList,int len,int roomId)
{
bool flag = false;
for(int i=0;i<len;i++)
{
if(roomList[i].id == roomId)
{
flag = true;
break;
}
}
if(flag)
{
if(roomList[i].status)
{
if(roomList[i].type == 0)
{
cout<<"该旅客按天租住:\n";
}
else
{
cout<<"该旅客按小时租住:\n";
}
cout<<"请输入入住时间:" ;
cin>>roomList[i].time;
DispalyCountInfo(roomList[i]);//显示结账信息
InitRoom(roomList[i]);//初始化该房间
}
else
{
cout<<"该房间还是空闲的,不能结账!"<<endl;
}
}
else
{
cout<<"该房号不存在!"<<endl;
}
return flag;
}
bool RequireRoom(ROOM *roomList,int len,int roomId,float time)
{
bool flag = false;
for(int i=0;i<len;i++)
{
if(roomList[i].id == roomId)
{
flag = true;
break;
}
}
if(flag)
{
if(roomList[i].status)
{
if(roomList[i].type == 0)
{
cout<<"该旅客按天租住:\n";
}
else
{
cout<<"该旅客按小时租住:\n";
}
float t = roomList[i].time;
roomList[i].time = time;
DispalyCountInfo(roomList[i]);//显示结账信息
roomList[i].time = t;
}
else
{
cout<<"该房间还是空闲的,不能结账!"<<endl;
}
}
else
{
cout<<"该房号不存在!"<<endl;
}
return flag;
}
int main(int argc, char* argv[])
{
ROOM roomList[ROOMNUM];
InitRoom(roomList,ROOMNUM);
int roomId;
float time;
int ret = -1;
int regId = 0;
while(ret != 0)
{
cout<<"请输入一个整数:\n 1. 登记入住;\n 2. 查询房间;\n 3. 查询当前费用;\n 4. 结账退房; \n 5.显示所有房间信息 \n 0. 退出系统。\n";
cout<<"请输入:";
cin>>ret;
switch(ret)
{
case 1:
regId = RegRoom(roomList,ROOMNUM);
if(regId>=0)
{
cout<<"登记成功!房间号为:"<<roomList[regId].id<<endl;
}
else
{
cout<<"房间已经满!"<<endl;
}
break;
case 2:
cout<<"请输入房间ID:";
cin>>roomId;
SearchRoom(roomList,ROOMNUM,roomId);
break;
case 3:
cout<<"请输入旅客房间ID以及已经入住时间长度:";
cin>>roomId>>time;
RequireRoom(roomList,ROOMNUM,roomId,time);
break;
case 4:
cout<<"请输入旅客房间ID:";
cin>>roomId;
CountRoom(roomList,ROOMNUM,roomId);
break;
case 5:
DispalyAllRoom(roomList,ROOMNUM);
break;
}
cout<<endl;
}
return 0;
}
五 设计体会
经过这次课程设计,我发现我们所学的知识还是远远不够的.我们不但要牢牢掌握课本上的知识,还要进行课外探索,对知识点进行深入研究,加深对知识点的理解.还有更重要的一点是,在学好知识的同时,多去实践一下,做到学以致用,这样才能更好的提高自己的能力,真正成为这方面的人才.
(报告以此为模板,打印装订后上交)
展开阅读全文