c语言酒店管理
Ⅰ 请问高手 用c语言怎样编程酒店管理系统!
用C# java之类的做啊!!!这样简单多了!
有C语言做酒店管理系统==!
要崩溃的!!!
Ⅱ c语言酒店管理系统
20分?我倒
给个建构你,至于怎么实现自己想办法了
struct Hotel
{
int index;//客房编号;
int type;//客房类型内;
int position;//客房位置;
int area;//面积;
int bedsOfRoom;//床位数;
int price;//价格容
Hotel*next;
};
Ⅲ 求一篇C语言程序设计酒店管理系统,要求如下
要求对文件操作
可以做一个简单的文件操作接口
通过使用结构体做为数据将所有信息保存在文件里
添加数据时将结构体写入文件
查询时可以循环将文件中的数据读取到结构体中进行比对查询
当然如果使用一个数组或链表做缓冲区对数据进行缓冲的话会更好一点
完成操作时通过将链表数据保存到文件内或者也可以延时保存
如果代码不想自己写的话
我可以有偿代劳
Ⅳ C语言编写酒店管理系统
int CheckRoom(struct room *pr)
{char phonenu[4][12]={"110","119","120","122"};/*非法私人电话号码*/
char type[3][2]={"2","t","T"};
int flag=1,i;
static int pass=1;
if(NULL==pr) {printf("Error:Null point! Can't check the datas:\n");return 0;}
printf("Start to part Maintain:about room\n");
while( strlen(pr->roomnu)>5 )/*检查数据长度,防止保存二进制数据错误*/
{pr->roomnu[5]=0;
printf("ERROR:the roomnu: %s is longer than 5 bytes.\n",pr->roomnu);
printf("Please select another shorter roomnu:\n");
scanf("%s",pr->roomnu);
}
while( strlen(pr->cleaner)>19 )/*检查数据长度,防止保存二进制数据错误*/
{pr->cleaner[19]=0;
printf("ERROR:the cleaner:%s is longer than 19 bytes.\n",pr->cleaner);
printf("Please select another shorter name:\n");
scanf("%s",pr->cleaner);
}
while(flag||strlen(pr->phonenu)>11)/*检查数据内容(由flag控制)和长度,防止保存二进制数据错误*/
{
while( strlen(pr->phonenu)>11 )/*检查长度*/
{pr->phonenu[11]=0;
printf("ERROR:the phonenu:%s is longer than 11 bytes.\n",pr->phonenu);
printf("Please select another shorter phonenu:\n");
scanf("%s",pr->phonenu);
}
while(flag)/*检查内容*//*这个算法也有问题,如果内容非法,但长度通过怎么办呢?*/
{for(i=0;flag&&i<4;i++)
if( 0==strcmp(pr->phonenu,phonenu[i]) )/*内容非法*/
{printf("ERROR:illegal phonenu:%s!\n",pr->phonenu);
flag=0;/*检测到内容非法*/
}
if(flag) flag=0;/*内容检查通过*/
else {flag=1;
printf("Please input a legal phonenu:\n");
scanf("%s",pr->phonenu);/*内容检查未通过,重新收入*/
}
}
}
flag=1;
while(flag||strlen(pr->type)>1)/*检查数据内容(由flag控制)和长度,此例和上例不同*/
{
while( strlen(pr->type)>1 )/*检查长度*/
{pr->type[1]=0;
printf("ERROR:the type:%s is longer than 1 byte.\n",pr->type);
printf("Please select another shorter type:\n");
scanf("%s",pr->type);
}
while(flag)/*检查内容*/
{if(strcmp(pr->type,type[0])&&strcmp(pr->type,type[1])&&strcmp(pr->type,type[2]) )/*内容非法*/
{printf("ERROR:illegal type:%s!\n",pr->type);
flag=0;/*检测到内容非法*/
}
if(flag) flag=0;/*内容检查通过*/
else {flag=1;
printf("Please input a legal type:\n");
scanf("%s",pr->type);/*内容检查未通过,重新收入*/
}
}
}
while( pr->maximum<pr->currentclient )/*检查数据间的联系*/
{printf("ERROR:the room's capacity does not fit for the number of current clients.\n");
printf("Please alter the maximum:\n");
scanf("%d",&(pr->maximum));
}/*检查房间最大容量和当前已住顾客人数是否相容,如果前者小于后者则写入错误报告文件 */
printf("Congratulations: ROOM Check pass %d!\n",pass++);
return 1;
}
int CheckClient(struct client *pc)
{ int flag=1,i;
char sex[4][2]={"m","M","f","F"};
static int pass=1;
if(NULL==pc) {printf("Error:Null point! Can't check the datas:\n");return 0;}
printf("Start to part Maintain:about client\n");
while( strlen(pc->roomnu)>5 )/*检查房间长度*/
{pc->roomnu[5]=0;
printf("ERROR:the roomnu: %s is longer than 5 bytes.\n",pc->roomnu);
printf("Please select another shorter roomnu:\n");
scanf("%s",pc->roomnu);
}
while( strlen(pc->identity_card)!=18 )/*检查身份证号长度*/
{pc->identity_card[18]=0;
printf("ERROR:the identity_card:%s is not 18 bytes.\n",pc->identity_card);
printf("Please check the length and input it again:\n");
scanf("%s",pc->identity_card);
}
while(strlen(pc->name)>19)/*检查姓名长度*/
{pc->name[19]=0;
printf("ERROR:the name:%s is longer than 19 bytes.\n",pc->name);
printf("Please select another shorter phonenu:\n");
scanf("%s",pc->name);
}
while(flag||strlen(pc->sex)>1)/*检查性别内容(由flag控制)和长度*/
{
while( strlen(pc->sex)>1 )/*检查长度*/
{pc->sex[1]=0;
printf("ERROR:the sex:%s is longer than 1 byte.\n",pc->sex);
printf("Please select another shorter sex:\n");
scanf("%s",pc->sex);
}
while(flag)/*检查内容*/
{if(strcmp(pc->sex,sex[0])&&strcmp(pc->sex,sex[1])&&strcmp(pc->sex,sex[2])&&strcmp(pc->sex,sex[3]) )/*内容非法*/
{printf("ERROR:illegal sex:%s!\n",pc->sex);
flag=0;/*检测到内容非法*/
}
if(flag) flag=0;/*内容检查通过*/
else {flag=1;
printf("Please input a legal sex:\n");
scanf("%s",pc->sex);/*内容检查未通过,重新收入*/
}
}
}
while( strlen(pc->date)!=8 )/*检查日期长度*/
{pc->date[8]=0;
printf("ERROR:the date:%s is not 8 bytes.\n",pc->date);
printf("Please check the length and input it again:\n");
scanf("%s",pc->date);
}
while( strlen(pc->collect)>5 )/*检查收款人长度*/
{pc->collect[5]=0;
printf("ERROR:the collect:%s is not 5 bytes.\n",pc->collect);
printf("Please check the length and input it again:\n");
scanf("%s",pc->collect);
}
while(pc->time<0)/*检查入住天数*/
{printf("ERROR:illegal input of time: %f!\n",pc->time);
printf("Please check and input it again:\n");
scanf("%f",&pc->time);
}
while(pc->cost<0)/*检查应缴费用*/
{printf("ERROR:illegal input of cost: %f!\n",pc->cost);
printf("Please check and input it again:\n");
scanf("%f",&pc->cost);
}
while(pc->fee<0)/*检查实缴费用*/
{printf("ERROR:illegal input of cost: %f!\n",pc->fee);
printf("Please check and input it again:\n");
scanf("%f",&pc->fee);
}
if( pc->fee>pc->cost )/*检查数据间的联系,实缴费用应小于应缴用*/
{printf("It may be a error:fee=%f > cost=%f\n",pc->fee,pc->cost);
printf("Do you like to alter them?(1:YES;0:NO)\n");
scanf("%d",&flag);
while(flag)
{printf("Please input the values:cost and fee\n");
scanf("%f%f",&pc->cost,&pc->fee);
if(pc->fee>pc->cost)
{printf("Error again!!\n");flag=1;}
else flag=0;
}
}
printf("Congratulations: CLIENT Check pass %d!\n",pass++);
return 1;
}
int CheckAll(struct room *head_room)
{struct client *pc;
struct room *pr;
if(NULL==head_room) {printf("head_room=0\n");return 0;}
printf("Start to part Maintain:about room and client\n");
pr=head_room;
while(pr)
{CheckRoom(pr);
pc=pr->head;
while(pc)
{CheckClient(pc);
pc=pc->next;
}
pr=pr->next;
}
return 1;
}
/**该函数为内部数据维护,不提供输入数据服务。实体完整性,参照完整性,用户自定义完整性
出现错误则将错误输出到doc文档。
错误范围暂时定义如下:
1.同一房间的客户房间号不同(同房搜索!)
2.实缴费用大于应缴费用。(同房搜索!)
3.同一个客户在同一天两次住进宾馆(全表搜索!身份证号和入住日期相同)
4.同一身份证号,姓名和性别不同(全表搜索!)
另外,应该完成的任务有:
5.计算客户的应缴费用->对cost操作,需要用到:time,unit_price
6.计算客房的总住户人数(包括当前住户)->对totalclient操作,需要用到:没有
7.重新修订当前住户数->对currentclient进行操作,需要用到:time
8.计算客房的总计收入->对income进行操作,需要用到:fee
9.当前住户的实缴费用清零->对fee进行操作,需要用到:time
完成这些操作的先后顺序为:7->6->5->9->8->2->1->3->4*/
int Consistency(struct room *head_room)
{struct room *pr,*tpr;
struct client *pc,*tpc;
char file[12]="error.doc";
int i=0;/*i用于错误计数*/
static int count=0;
FILE *fp;
if(NULL==head_room) {printf("head_room=0\n");return 0;}
printf("Start to part Maintain:Consistency!\n");
pr=head_room;
while(pr)
{pr->currentclient=0;
/*pr->totalclient=0;*/
pr->income=0;
pc=pr->head;
while(pc)
{if(!pc->time) pr->currentclient++;/*完成........7.....*/
/*pr->totalclient++;*/ /*完成........6.....*/
pc->cost=(pc->time)*(pr->unit_price); /*完成........5.....*/
if(!pc->time) pc->fee=0; /*完成........9.....*/
pr->income=pr->income+pc->fee; /*完成........8.....*/
pc=pc->next;
}
pr=pr->next;
}
if(NULL==( fp=fopen(file,"wt") ) )
{printf("Cannot open file:%s!\n",file);
return 0;
}
pr=head_room;
while(pr)
{pc=pr->head;
while(pc)
{if(pc->fee>pc->cost)
{fprintf(fp,"Error %d:fee=%f > cost=%f\n",++i,pc->fee,pc->cost);
fprintf(fp,"roomnu identity_card name sex date clt time cost fee\n");
fprintf(fp,"%-6s %-18s %-15s %-3s %-8s %-3s %-4.1f %-5.1f %-5.1f\n\n",pc->roomnu,pc->identity_card,pc->name,pc->sex,pc->date,pc->collect,pc->time,pc->cost,pc->fee);
/*完成........2.....*/
}
if( strcmp(pr->roomnu,pc->roomnu) )
{fprintf(fp,"Error %d:the client's roomnu:%s != the room's roomnu:%s",++i,pc->roomnu,pr->roomnu);
fprintf(fp,"roomnu cleaner phonenu type max area price clientNO\n");
fprintf(fp,"%-6s %-16s %-12s %-4s %-3d %-6.1f %-6.1f %-2d\n",pr->roomnu,pr->cleaner,pr->phonenu,pr->type,pr->maximum,pr->area,pr->unit_price,pr->currentclient);
fprintf(fp,"roomnu identity_card name sex date clt time cost fee\n");
fprintf(fp,"%-6s %-18s %-15s %-3s %-8s %-3s %-4.1f %-5.1f %-5.1f\n\n",pc->roomnu,pc->identity_card,pc->name,pc->sex,pc->date,pc->collect,pc->time,pc->cost,pc->fee);
/*完成........1.....*/
}
pc=pc->next;
}
pr=pr->next;
}
/*这个要全表搜索,搜索一次全表过掉一个客户*/
pr=head_room;
while(pr)
{pc=pr->head;
while(pc)
{
if(pc->next)
{tpc=pc->next;
while(tpc)
{if(0==strcmp(pc->identity_card,tpc->identity_card) && 0==strcmp(pc->date,tpc->date) )
{fprintf(fp,"Error %d:the same client:%s lived in our hotel in the same day:%s\n",++i,pc->identity_card,pc->date);
fprintf(fp,"roomnu identity_card name sex date clt time cost fee\n");
fprintf(fp,"%-6s %-18s %-15s %-3s %-8s %-3s %-4.1f %-5.1f %-5.1f\n",pc->roomnu,pc->identity_card,pc->name,pc->sex,pc->date,pc->collect,pc->time,pc->cost,pc->fee);
fprintf(fp,"%-6s %-18s %-15s %-3s %-8s %-3s %-4.1f %-5.1f %-5.1f\n\n",tpc->roomnu,tpc->identity_card,tpc->name,tpc->sex,tpc->date,tpc->collect,tpc->time,tpc->cost,tpc->fee);
}/*完成........3.....*/
if(0==strcmp(pc->identity_card,tpc->identity_card) && (strcmp(pc->name,tpc->name)||strcmp(pc->sex,tpc->sex)) )
{fprintf(fp,"Error %d:the same client:%s have the different name or sex in our hotel.\n",++i,pc->identity_card);
fprintf(fp,"roomnu identity_card name sex date clt time cost fee\n");
fprintf(fp,"%-6s %-18s %-15s %-3s %-8s %-3s %-4.1f %-5.1f %-5.1f\n",pc->roomnu,pc->identity_card,pc->name,pc->sex,pc->date,pc->collect,pc->time,pc->cost,pc->fee);
fprintf(fp,"%-6s %-18s %-15s %-3s %-8s %-3s %-4.1f %-5.1f %-5.1f\n\n",tpc->roomnu,tpc->identity_card,tpc->name,tpc->sex,tpc->date,tpc->collect,tpc->time,tpc->cost,tpc->fee);
}/*完成........4.....*/
tpc=tpc->next;
}/*while(tpc) exit */
/*当前房间比较结束,进入下一个房间*/
tpr=pr->next;
while(tpr)
{tpc=tpr->head;
while(tpc)
{if(0==strcmp(pc->identity_card,tpc->identity_card) && 0==strcmp(pc->date,tpc->date) )
{fprintf(fp,"Error %d:the same client:%s lived in our hotel in the same day:%s\n",++i,pc->identity_card,pc->date);
fprintf(fp,"roomnu identity_card name sex date clt time cost fee\n");
fprintf(fp,"%-6s %-18s %-15s %-3s %-8s %-3s %-4.1f %-5.1f %-5.1f\n",pc->roomnu,pc->identity_card,pc->name,pc->sex,pc->date,pc->collect,pc->time,pc->cost,pc->fee);
fprintf(fp,"%-6s %-18s %-15s %-3s %-8s %-3s %-4.1f %-5.1f %-5.1f\n\n",tpc->roomnu,tpc->identity_card,tpc->name,tpc->sex,tpc->date,tpc->collect,tpc->time,tpc->cost,tpc->fee);
}/*完成........3.....*/
if(0==strcmp(pc->identity_card,tpc->identity_card) && (strcmp(pc->name,tpc->name)||strcmp(pc->sex,tpc->sex)) )
{fprintf(fp,"Error %d:the same client:%s have the different name or sex in our hotel.\n",++i,pc->identity_card);
fprintf(fp,"roomnu identity_card name sex date clt time cost fee\n");
fprintf(fp,"%-6s %-18s %-15s %-3s %-8s %-3s %-4.1f %-5.1f %-5.1f\n",pc->roomnu,pc->identity_card,pc->name,pc->sex,pc->date,pc->collect,pc->time,pc->cost,pc->fee);
fprintf(fp,"%-6s %-18s %-15s %-3s %-8s %-3s %-4.1f %-5.1f %-5.1f\n\n",tpc->roomnu,tpc->identity_card,tpc->name,tpc->sex,tpc->date,tpc->collect,tpc->time,tpc->cost,tpc->fee);
}/*完成........4.....*/
tpc=tpc->next;
}/*while(tpc) exit */
tpr=tpr->next;
}/*while(tpr) exit */
}
else/*当前客户下一节点为空的情况搜索*/
{tpr=pr->next;
while(tpr)
{tpc=tpr->head;
while(tpc)
{if(0==strcmp(pc->identity_card,tpc->identity_card) && 0==strcmp(pc->date,tpc->date) )
{fprintf(fp,"Error %d:the same client:%s lived in our hotel in the same day:%s\n",++i,pc->identity_card,pc->date);
fprintf(fp,"roomnu identity_card name sex date clt time cost fee\n");
fprintf(fp,"%-6s %-18s %-15s %-3s %-8s %-3s %-4.1f %-5.1f %-5.1f\n",pc->roomnu,pc->identity_card,pc->name,pc->sex,pc->date,pc->collect,pc->time,pc->cost,pc->fee);
fprintf(fp,"%-6s %-18s %-15s %-3s %-8s %-3s %-4.1f %-5.1f %-5.1f\n\n",tpc->roomnu,tpc->identity_card,tpc->name,tpc->sex,tpc->date,tpc->collect,tpc->time,tpc->cost,tpc->fee);
}/*完成........3.....*/
if(0==strcmp(pc->identity_card,tpc->identity_card) && (strcmp(pc->name,tpc->name)||strcmp(pc->sex,tpc->sex)) )
{fprintf(fp,"Error %d:the same client:%s have the different name or sex in our hotel.\n",++i,pc->identity_card);
fprintf(fp,"roomnu identity_card name sex date clt time cost fee\n");
fprintf(fp,"%-6s %-18s %-15s %-3s %-8s %-3s %-4.1f %-5.1f %-5.1f\n",pc->roomnu,pc->identity_card,pc->name,pc->sex,pc->date,pc->collect,pc->time,pc->cost,pc->fee);
fprintf(fp,"%-6s %-18s %-15s %-3s %-8s %-3s %-4.1f %-5.1f %-5.1f\n\n",tpc->roomnu,tpc->identity_card,tpc->name,tpc->sex,tpc->date,tpc->collect,tpc->time,tpc->cost,tpc->fee);
}/*完成........4.....*/
tpc=tpc->next;
}/*while(tpc) exit */
tpr=tpr->next;
}/*while(tpr) exit */
}
pc=pc->next;/*搜索一次全表过掉一个客户*/
}/*while(pc) exit */
pr=pr->next;
}/*while(pr) exit */
printf("Maintain NO. %d\n",++count);
fclose(fp);
return 1;
}
int ToDate(char *date,int year,int month,int day)/*将年月日转换为字符串*/
{int i,j;
char temp[9];
for(i=3;i>-1;i--)
{j=year%10;
temp[i]=j+'0';
year=year/10;
}
for(i=1;i>-1;i--)
{j=month%10;
temp[4+i]=j+'0';
month=month/10;
}
for(i=1;i>-1;i--)
{j=day%10;
temp[6+i]=j+'0';
day=day/10;
}
temp[8]=0;
strcpy(date,temp);
return 1;
}
int Account(struct room *head_room)
{struct room *pr;
struct client *pc;
char temp[20],date[9],name[6];
float cost,fee;
int time,year,month,day;
int flag=1;
clr();
if(NULL==head_room) {printf("head_room=0\n");getch();clr();return 0;}
printf("Please input CLIENT ID(18bytes)!\n");/*mode=1表示根据身份证号查找特定客户*/
scanf("%s",temp);
while(strlen(temp)!=18)
{printf("Error:the client(ID=%s) is not 18 bytes!",temp);
printf("Please check and input CLIENT ID(18bytes),again!\n");/*mode=1表示根据身份证号查找特定客户*/
scanf("%s",temp);
}
/*查找客户*/
pr=head_room;
flag=1;
while(flag&&pr)
{pc=pr->head;
while(flag&&pc)
{if( !strcmp(pc->identity_card,temp)&&!pc->time)
{printf("roomnu identity_card name sex date clt time cost fee\n");
PrintClient(pc);
flag=0;
}
if(flag) pc=pc->next;
}
pr=pr->next;
}
if(NULL==pc) {printf("Error:the client(ID=%s) does not exist in out hotel!\n",temp);getch();clr();return 0;}
/*获取日期*/
year =GetTime(0,1);
month=GetTime(0,2);
day =GetTime(0,3);
ToDate(date,year,month,day);
time=CountDays(pc->date,date);
cost=time*pr->unit_price;
printf("The client ID=%s who have lived %d days should pay %6.1f $!\n",temp,time,cost);
printf("Please input how much you get from him and your name!\n");
printf("The money is:");
scanf("%f",&fee);
printf("Your name(collect) is:");
scanf("%s",name);
while(strlen(name)>5)
{printf("Error:the name=%s is longer than 5 bytes!",name);
printf("Please check and input ,again!\n");/*mode=1表示根据身份证号查找特定客户*/
scanf("%s",name);
}
pc->fee=fee;
pc->cost=cost;
pc->time=time;
strcpy(pc->collect,name);
printf("Account end! Thank you!\n");
return 1;
}
Ⅳ 请高手帮忙用C语言做一个酒店管理系统
////////////////////////////
//Hotel manager system
//Design by WongSwoon
//08.11.9
////////////////////////////
#include<stdio.h>
#include<string.h>
#include<time.h>
//////////////////////////
struct Customer{
char name[10];
int id;
int tel;
int roomnum;
struct tm time;
}Customer[5][301];
//////////////////////////
struct Room{
int price;
int num;
int remain_num;
}room[5];
///////////////////////////
void InitRoom_Customer()
{
int i,j;
room[1].price=2000;
room[1].num=room[1].remain_num=5;
room[2].price=1000;
room[2].num=room[2].remain_num=100;
room[3].price=700;
room[3].num=room[3].remain_num=300;
room[4].price=400;
room[4].num=room[4].remain_num=200;
for(i=1;i<=4;i++)
for(j=1;j<=room[i].num;j++)
{
strcpy(Customer[i][j].name,"NULL");
Customer[i][j].id=0;
Customer[i][j].tel=0;
Customer[i][j].roomnum=1000*i+j;
Customer[i][j].time.tm_mon=1;
Customer[i][j].time.tm_mday=1;
}
}
///////////////////////////////////
int Isempty(struct Customer c)
{
if(!strcmp(c.name,"NULL"))
return 1;
else
return 0;
}
//////////////////////////////////
void OrderRoom(char c)
{
int i,n;
printf("roomnumber\tname\tID\ttel-num\ttime\n");
switch (c)
{
case 'a':
{
if(room[1].remain_num==0)
printf("Rooms has all been full of\n");
for(i=1;i<=room[1].num;i++)
printf("%d\t\t%s\t%d\t%d\t%d.%d\n",Customer[1][i].roomnum,Customer[1][i].name,
Customer[1][i].id,Customer[1][i].tel,Customer[1][i].time.tm_mon,Customer[1][i].time.tm_mday);
printf("Select the roomnumber and input the information:");
scanf("%d",&n);
for(i=1;i<=room[1].num;i++)
if(Customer[1][i].roomnum==n&&Isempty(Customer[1][i]))
break;
scanf("%s%d%d%d.%d",Customer[1][i].name,&Customer[1][i].id,
&Customer[1][i].tel,&Customer[1][i].time.tm_mon,&Customer[1][i].time.tm_mday);
room[1].remain_num--;
}break;
case 'b':
{
if(room[2].remain_num==0)
printf("Rooms has all been full of\n");
for(i=1;i<=room[2].num;i++)
printf("%d\t\t%s\t%d\t%d\t%d.%d\n",Customer[2][i].roomnum,Customer[2][i].name,
Customer[2][i].id,Customer[2][i].tel,Customer[2][i].time.tm_mon,Customer[2][i].time.tm_mday);
printf("Select the roomnumber and input the information:");
scanf("%d",&n);
for(i=1;i<=room[2].num;i++)
if(Customer[2][i].roomnum==n&&Isempty(Customer[2][i]))
break;
scanf("%s%d%d%d.%d",Customer[2][i].name,&Customer[2][i].id,
&Customer[2][i].tel,&Customer[2][i].time.tm_mon,&Customer[2][i].time.tm_mday);
room[2].remain_num--;
}break;
case 'c':
{
if(room[3].remain_num==0)
printf("Rooms has all been full of\n");
for(i=1;i<=room[3].num;i++)
printf("%d\t\t%s\t%d\t%d\t%d.%d\n",Customer[3][i].roomnum,Customer[3][i].name,
Customer[3][i].id,Customer[3][i].tel,Customer[3][i].time.tm_mon,Customer[3][i].time.tm_mday);
printf("Select the roomnumber and input the information:");
scanf("%d",&n);
for(i=1;i<=room[3].num;i++)
if(Customer[3][i].roomnum==n&&Isempty(Customer[3][i]))
break;
scanf("%s%d%d%d.%d",Customer[3][i].name,&Customer[3][i].id,
&Customer[3][i].tel,&Customer[3][i].time.tm_mon,&Customer[3][i].time.tm_mday);
room[3].remain_num--;
}break;
case 'd':
{
if(room[4].remain_num==0)
printf("Rooms has been full of\n");
for(i=1;i<=room[4].num;i++)
printf("%d\t\t%s\t%d\t%d\t%d.%d\n",Customer[4][i].roomnum,Customer[4][i].name,
Customer[4][i].id,Customer[4][i].tel,Customer[4][i].time.tm_mon,Customer[4][i].time.tm_mday);
printf("Select the roomnumber and input the information:");
scanf("%d",&n);
for(i=1;i<=room[4].num;i++)
if(Customer[4][i].roomnum==n&&Isempty(Customer[4][i]))
break;
scanf("%s%d%d%d.%d",Customer[4][i].name,&Customer[4][i].id,
&Customer[4][i].tel,&Customer[4][i].time.tm_mon,&Customer[4][i].time.tm_mday);
room[4].remain_num--;
}break;
}
}
//////////////////////////
void FindCustomer()
{
char c;
int i,j,flag;
flag=0;
printf("enter the customer's name\n");
scanf("%s",&c);
for(i=4;i>=1;i--)
{
for(j=1;j<=room[i].num;j++)
if(!strcmp(Customer[i][j].name,&c))
{
flag=1;
break;
}
if(flag)
break;
}
if(i==0)
printf("This gay is not found!\n");
else
{
printf("The Customer's info\n");
printf("roomnumber\tname\tID\ttel-num\ttime\n");
printf("%d\t\t%s\t%d\t%d\t%d.%d\n",Customer[i][j].roomnum,
Customer[i][j].name,Customer[i][j].id,Customer[i][j].tel,
Customer[i][j].time.tm_mon,Customer[i][j].time.tm_mday);
}
}
///////////////////////////////////
struct Customer * Find_With_RoomKey(int n)
{
/* int i,j,flag;
flag=0;
for(i=4;i>=1;i--)
{
for(j=1;j<=room[i].num;j++)
if(Customer[i][j].roomnum==n)
{
flag=1;
break;
}
if(flag)
break;
}
return &Customer[i][j];*/
return &Customer[n/1000][n%1000];//Hash method better!
}
//////////////////////////////////
long Checkout()
{
struct tm nowtime;
long sum,s_m,s_d;
int n;
printf("Input nowtime\n");
scanf("%d.%d",&nowtime.tm_mon,&nowtime.tm_mday);
printf("Enter the roomnumber\n");
scanf("%d",&n);
Find_With_RoomKey(n);
if(nowtime.tm_mday>Find_With_RoomKey(n)->time.tm_mday)
{
s_d=nowtime.tm_mday-Find_With_RoomKey(n)->time.tm_mday;
s_m=nowtime.tm_mon-Find_With_RoomKey(n)->time.tm_mon;
}
else
{
s_d=nowtime.tm_mday-Find_With_RoomKey(n)->time.tm_mday+31;
s_m=nowtime.tm_mon-Find_With_RoomKey(n)->time.tm_mon-1;
}
printf("The Room-%d Customer's info\n",Find_With_RoomKey(n)->roomnum);
printf("%d\t\t%s\t%d\t%d\t%d.%d\n",Find_With_RoomKey(n)->roomnum,
Find_With_RoomKey(n)->name,Find_With_RoomKey(n)->id,Find_With_RoomKey(n)->tel,
Find_With_RoomKey(n)->time.tm_mon,Find_With_RoomKey(n)->time.tm_mday);
sum=room[Find_With_RoomKey(n)->roomnum/1000].price*(s_m*31+s_d-2);
room[Find_With_RoomKey(n)->roomnum/1000].remain_num++;
strcpy(Find_With_RoomKey(n)->name,"NULL");
Find_With_RoomKey(n)->id=0;
Find_With_RoomKey(n)->roomnum=0;
Find_With_RoomKey(n)->tel=0;
Find_With_RoomKey(n)->time.tm_mon=1;
Find_With_RoomKey(n)->time.tm_mday=1;
return sum;
}
////////////////////////////////////////////
void Evaluate()
{
float rate;
rate=(float)(1.0-(float)( room[1].remain_num+room[2].remain_num+room[3].remain_num+room[4].remain_num)/
(room[1].num + room[2].num + room[3].num + room[4].num) );
//printf("%f",rate);
if( rate>0.8)
printf("★★★ Perfect\n");
else if(rate>0.6)
printf("★★☆ Good\n");
else
printf("★☆☆ Bad\n");
}
///////////////////////////////
void InitCmd()
{
int select;
printf("\t---------宾馆管理系统v1.0 A Hotel Managerment System-----------\n");
printf("\t\t订房-1\t查询顾客-2\t退房-3\t每日评估-4\n");
scanf("%d",&select);
switch(select)
{
char ch;
case 1:
printf("总统套房 a \n");
printf("豪华间 b \n");
printf("标准双人间 c \n");
printf("标准单人间 d \n");
printf("请选择房间类型 \n");
getchar();
scanf("%c",&ch);
OrderRoom(ch);
break;
case 2:
FindCustomer();
break;
case 3:
printf("The total cash is %ld YuanRMB\n",Checkout());
printf("Checkout the room successfully!\n");
break;
case 4:
Evaluate();
}
}
//////////////////////////////
int main()
{
InitRoom_Customer();
while(1)
InitCmd();
}
Ⅵ 帮忙写一个c语言课程设计—— 酒店管理系统
C语言程序设计题目:学生信息管理系统设计 求救:C语言程序课程设计(学生就你说道的实训报告书面内容如何书写我有以下几点内容建议供你参考:从以下几
Ⅶ 求C语言编程,关于酒店管理程序设计
不知道你的要求是什么,把我以前的关于酒店管理的代码发给你参考下吧。
#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;
}
}
}
Ⅷ C语言课程设计 酒店管理程序
没有时间写,只有一点,朋友给的!
酒店管理
#include<stdio.h>
void xx();
void search();
main()
{ int f;
printf(" ▲***********************▲\n");
printf(" △ 欢迎来到XXX饭店△\n");
printf(" ▲************************▲\n");
printf("1.进入. 2退出.\n");
scanf("%d",&f);
if(f==1)
search();
else
printf("输入错误");
}
void search()
{
int d[15],g[3],a,b,c,x,y,h;
printf("请选择您需要的号码:\n1.预定房间\n2.退定房间\n");
scanf("%d",&a);
if(a>3 || a<1)
{printf("您输入有误请您重试!\n");
}
else switch(a)
{ case 1:
{ printf("请您输入您的身份证号码\n");
scanf("%d",&d[15]);
printf("您已登陆成功^-^\n");
printf("请您选择退定种类:\n");
printf("1.单人间/夜150元\n2.双人间/夜200元\n3.标准间/夜300元\n4.总统套房/夜600元\n");
scanf("%d",&b);
switch(b)
{ case 1:printf("请输入预定天数\n");
scanf("%d",&x);
printf("请预交款为%d元\n",x*150);
printf("1.确定 2.返回");
scanf("%d",&h);
printf("您已预定成功★房间号码为202.\n");break;
case 2:printf("请输入预定天数\n");
scanf("%d",&x);
printf("请预交款为%d元\n",x*200);
printf("1.确定 2.返回");
scanf("%d",&h);
printf("您已预定成功★房间号码为305.\n");break;
case 3:printf("请输入预定天数\n");
scanf("%d",&x);
printf("请预交款为%d元\n",x*300);
printf("1.确定 2.返回");
scanf("%d",&h);
printf("您已预定成功★房间号码为208.\n");break;
case 4:printf("请输入预定天数\n");
scanf("%d",&x);
printf("请预交款为%d元\n",x*600);
printf("1.确定 2.返回");
scanf("%d",&h);
printf("您已预定成功★房间号码为306.\n");break;
default :printf("您的输入有错请您重试");
}
}break;
case 2:
{printf("请您输入您的身份证号码\n");
scanf("%d",&d[15]);
printf("您已登陆成功^-^\n");
printf("请您选择退订服务种类:\n");
printf("1.单人间/夜150元\n2.双人间/夜200元\n3.标准间/夜300元\n4.总统套房/夜600元\n");
scanf("%d",&c);
switch(c)
{case 1:printf("请您输入要退定的房间号码\n");
scanf("%d",&g[3]);
printf("请您输入要退订的天数\n");
scanf("%d",&y);
printf("我们将退您%d元\n",y*150);
printf("您退定成功: 谢谢您的光临 !\n");break;
case 2:printf("请您输入要退定的房间号码\n");
scanf("%d",&g[3]);
printf("请您输入要退订的天数\n");
scanf("%d",&y);
printf("我们将退您%d元\n",y*200);
printf("您退定成功.谢谢您的光临 !");break;
case 3:printf("请您输入要退定的房间号码\n");
scanf("%d",&g[3]);
printf("请您输入要退订的天数\n");
scanf("%d",&y);
printf("我们将退您%d元\n",y*300);
printf("您退定成功:谢谢您的光临 !\n");break;
case 4:printf("请您输入要退定的房间号码\n");
scanf("%d",&g[3]);
printf("请您输入要退订的天数\n");
scanf("%d",&y);
printf("我们将退您%d元\n",y*600);
printf("您退定成功:谢谢您的光临 !\n");break;
default:printf("您的输入有错请您重试");}
}break;}
{
int n;
printf("谢谢光顾\n是否要再预定? 1.是2.否");
scanf("%d",&n);
if(n==1)
search();
else
printf("再见");
}
}