酒店管理系统
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <stdlib.h>
#include <windows.h>
#define ROOM_NUM 3
typedef struct room{
int num;
int kind;
char flag[10];
int price;
int sum;
}ROOM;
typedef struct tourist{
int num;
char name[20];
char sex[4];
int ID[19];
int day ;
int sum;
struct tourist *next;
}TOURIST;
char Menu(void)
{
system("CLS");
char ch;
printf("\n酒店管理系统");
printf("\n------------");
printf("\n1.旅客\n");
printf("\n2.经理\n");
printf("\n0.退出\n");
printf("\n请选择您的身份:");
scanf(" %c", &ch);
return ch;
}
char Menu1(void)
{
char ch;
printf("\n旅客系统");
printf("\n--------");
printf("\n1.入住信息总览\n");
printf("\n2.登记入住\n");
printf("\n3.退房\n");
printf("\n0.退出系统\n");
printf("\n请输入您的选择:");
scanf(" %c", &ch);
return ch;
}
char Menu2(void)
{
char ch;
printf("\n经理系统");
printf("\n--------");
printf("\n1.初始化房间基本信息\n");
printf("\n2.查询旅客的信息\n");
printf("\n3.所有房间的营业额排序\n");
printf("\n4.入住信息总览\n");
printf("\n0.退出系统\n");
printf("\n请输入您的选择:");
scanf(" %c", &ch);
return ch;
}
void registerroom(ROOM *room)
{
int i;
for(i=0;i<ROOM_NUM;i++){
room[i].num=i+1;
printf("\n%d号房间类别:",i+1);
scanf("%d",&room[i].kind );
printf("\n%d号房间单价:",i+1);
scanf("%d",&room[i].price );
strcpy(room[i].flag,"空房");
room[i].sum=0;
}
}
void SearchRoom(TOURIST *head)
{
int i,num;
TOURIST *p;
char name[10];
printf("\n1.按房间号查询\n");
printf("\n2.按姓名查询\n");
printf("\n请输入选项:");
scanf("%d",&i);
if(i==1){
printf("\n请输入房间号: ");
scanf("%d",&num);
for(p=head;p!=NULL;p=p->next){
if(p->num==num){
printf("\n查询成功\n");
printf("\n 房间号\t旅客姓名\t入住天数\t营业额\n");
printf(" %d\t\t%s\t\t%d\t\t%d\n",p->num,p->name,p->day,p->sum);
break;
}
}
if(p==NULL){
printf("\n此房间无人居住,查询失败\n");
}
}else if(i==2){
printf("\n请输入姓名: ");
scanf("%s",name);
for(p=head;p!=NULL;p=p->next){
if(strcmp(p->name,name)==0){
printf("\n查询成功\n");
printf("\n 房间号\t旅客姓名\t入住天数\t营业额\n");
printf(" %d\t\t%s\t\t%d\t\t%d\n",p->num,p->name,p->day,p->sum);
break;
}
}
if(p==NULL){
printf("\n人员信息错误,查询失败\n");
}
}else
printf("\n抱歉,房间不存在\n");
}
void sumroom(ROOM *room,TOURIST *head)
{
TOURIST *p;
int i;
for(p=head;p!=NULL;p=p->next){
for(i=0;i<ROOM_NUM;i++){
if(p->num==room[i].num){
room[i].sum=p->day * room[i].price;
p->sum=room[i].sum;
break;
}
}
}
}
void SortSum(ROOM *room, int n)
{
int i,j,k;
ROOM temp;
for(i=0;i<n-1;i++){
k = i;
for(j=i+1;j<n;j++){
if((room+j)->sum > (room+k)->sum)
{
k=j;
}
}
if(k!=i)
{
temp=*(room+k);
*(room+k)=*(room+i);
*(room+i)=temp;
}
}
for(i=0;i<ROOM_NUM;i++){
printf("\n 房间号\t类别\t单价\t入住情况\t总营业额\n");
printf(" %d\t\t%d\t%d\t%s\t\t%d\n",room[i].num,room[i].kind,room[i].price,room[i].flag,room[i].sum);
}
}
void PrintScore(ROOM *room)
{
int i;
for(i=0;i<ROOM_NUM;i++){
printf("\n 房间号\t类别\t单价\t入住情况\t\n");
printf(" %d\t\t%d\t%d\t%s\t\t",room[i].num,room[i].kind,room[i].price,room[i].flag);
}
}
void registercust(ROOM *room,TOURIST *head)
{
int i;
TOURIST *p,*q;
for(p=head;p->next!=NULL;p=p->next){
}
q=(TOURIST*)malloc(sizeof(TOURIST));
p->next=q;
q->next=NULL;
printf("\n选择房间号:");
scanf("%d",&(q->num) );
for(i=0;i<ROOM_NUM;i++){
if(q->num==room[i].num )
{
strcpy(room[i].flag,"已订");
break;
}
}
printf("\n姓名:");
scanf("%s",q->name);
printf("\n性别:");
scanf("%s",q->sex);
printf("\n身份证号:");
scanf("%d",&q->ID);
printf("\n入住天数:");
scanf("%d",&q->day);
}
void deletecust(ROOM *room,TOURIST *head)
{
int num,i;
TOURIST *p,*pre;
printf("请输入所退房间号:\n");
scanf("%d",&num);
for(p=head;p->num!=num;p=p->next){
}
for(pre=head;pre->next!=p;pre=pre->next){
}
for(i=0;i<ROOM_NUM;i++){
if(num==room[i].num ){
strcpy(room[i].flag,"空房");
room[i].sum=0;
break;
}
}
pre->next=p->next;
free(p);
printf("退房成功\n");
printf("您的房费为%d,请缴纳!\n",p->sum);
}
int main(void)
{
ROOM Room[ROOM_NUM];
TOURIST *head=(TOURIST*)malloc(sizeof(TOURIST));
char ch;
head->next=NULL;
while(1){
ch=Menu();
system("CLS");
if(ch=='1'){
do{
ch=Menu1();
system("CLS");
switch(ch){
case'1':
PrintScore(Room);
Sleep(4500);
system("CLS");
break;
case'2':
registercust(Room,head);
system("CLS");
break;
case'3':
sumroom(Room,head);
deletecust(Room,head);
system("CLS");
break;
}
}while(ch!='0');
}else if(ch=='2'){
do{
ch=Menu2();
system("CLS");
switch(ch){
case'1':
registerroom(Room);
system("CLS");
break;
case'2':
sumroom(Room,head);
SearchRoom(head);
Sleep(5000);
system("CLS");
break;
case '3':
sumroom(Room,head);
SortSum(Room,ROOM_NUM);
system("CLS");
break;
case '4':
PrintScore(Room);
Sleep(4500);
system("CLS");
break;
}
}while(ch!='0');
}else
exit(0);
}
return 0;
}