C语言编写酒店管理系统

C语言编写酒店管理系统,第1张

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=0flag&&i<4i++)

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 )/*检查身份z号长度*/

{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:YES0: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.同一个客户在同一天两次住进宾馆(全表搜索!身份z号和入住日期相同)

4.同一身份z号,姓名和性别不同(全表搜索!)

另外,应该完成的任务有:

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 namesex 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 namesex 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 namesex 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 namesex 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 namesex 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 namesex 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 namesex 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 namesex 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=3i>-1i--)

{j=year%10

temp[i]=j+'0'

year=year/10

}

for(i=1i>-1i--)

{j=month%10

temp[4+i]=j+'0'

month=month/10

}

for(i=1i>-1i--)

{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

intflag=1

clr()

if(NULL==head_room) {printf("head_room=0\n")getch()clr()return 0}

printf("Please input CLIENT ID(18bytes)!\n")/*mode=1表示根据身份z号查找特定客户*/

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表示根据身份z号查找特定客户*/

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 namesex 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表示根据身份z号查找特定客户*/

scanf("%s",name)

}

pc->fee=fee

pc->cost=cost

pc->time=time

strcpy(pc->collect,name)

printf("Account end! Thank you!\n")

return 1

}

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

struct customers_node{

char id[18]

int days

int money

char roomnumber[3]

struct customers_node *next

}

struct customers_node * p0,* head

//#define N 100

struct customers_node * Create_Cust_Doc() //新建

struct customers_node * InsertDoc(struct customers_node * head,char id[ ]) //插入

struct customers_node * DeleteDoc(struct customers_node * head,char id[ ]) //删除

struct customers_node * searchDoc(struct customers_node * head,char id[ ]) //查询御掘姿

void Print_Cust_Doc(struct customers_node * head) //调用信息函数

struct customers_node * customers(struct customers_node * p0) //需要为p0分配动态存储空间吗

int main(void)

{

struct customers_node * head

int choice

char id[18]

do{

printf("本系统功能:\n")

printf("1.Create(新建) 2.search(查询) 3.Insert(添加) 4.Delete(删除) 5.print 0:Exit(退出)\n")

printf("请选择:")

scanf("%d",&choice)

switch(choice){

case 1:

head=Create_Cust_Doc()

break

case 2:

printf(" 请您输入您的身镇绝份证号码:\n")

scanf("%s",id)

head=searchDoc(head,id)

break

case 3:

printf(" 请您输入您的身份z号码:\n")

scanf("%s"散迹,id)

head=InsertDoc(head,id)

break

case 4:

printf(" 请您输入您的身份z号码:\n")

scanf("%s",id)

head=DeleteDoc(head,id)

break

case 5:

Print_Cust_Doc(head)

break

case 0:

break

}

}while(choice!=0)

return 0

}

struct customers_node * customers(struct customers_node * p0)

{

struct customers_node * p

int days,money,choice,z

char id[18]

char roomnumber[3]

printf(" 请您输入您的身份z号码:\n")

scanf("%s",id)

printf(" 您已登陆成功!\n")

printf(" 请您选择房间种类:\n")

printf(" 1.单人间/夜150元\n 2.双人间/夜200元\n 3.标准间/夜300元\n 4.总统套房/夜600元\n")

scanf("%d",&choice)

switch(choice) {

case 1:printf(" 请输入预定天数\n")

scanf("%d",&days)

money=days*150

printf(" 请预交款为%d元\n",money)

printf(" 1.确定(预定成功)2.返回(是否重新预定)\n")

scanf("%d",&z)

if(z==1){

printf(" 您已预定成功 ★ 房间号码为: ")

scanf("%s",roomnumber)

}break

case 2:printf(" 请输入预定天数\n")

scanf("%d",&days)

money=days*200

printf(" 请预交款为%d元\n",money)

printf(" 1.确定(预定成功)2.返回(是否重新预定)\n")

scanf("%d",&z)

if(z==1){

printf(" 您已预定成功★房间号码为: ")

scanf("%s",roomnumber)

}break

case 3:printf(" 请输入预定天数: ")

scanf("%d",&days)

money=days*300

printf(" 请预交款为%d元\n",money)

printf(" 1.确定(预定成功)2.返回(是否重新预定)\n")

scanf("%d",&z)

if(z==1){

printf(" 您已预定成功 ★ 房间号码为: ")

scanf("%s",roomnumber)

} break

case 4:printf(" 请输入预定天数\n")

scanf("%d",&days)

money=days*600

printf(" 请预交款为%d元\n",money)

printf(" 1.确定(预定成功)2.返回(是否重新预定)\n")

scanf(" %d",&z)

if(z==1){

printf(" 您已预定成功★房间号码为: ")

scanf("%s",roomnumber)

}break

default :printf(" 您的输入有错,请您重试,谢谢。\n")

break

p=(struct customers_node *)malloc(sizeof(struct customers_node)) //是否能用指针完成结构元素的传送

strcpy(p->id,id)

strcpy(p->roomnumber,roomnumber)

p->days=days

p->money=money

return p

}

struct customers_node * Create_Cust_Doc() //新建

{

struct customers_node * head,* p

int size=sizeof(struct customers_node)

p=(struct customers_node *)malloc(size)

head->next = NULL

customers(* p0) //调用函数

//p=p0

head->next=p

return head

}

struct customers_node * InsertDoc(struct customers_node * head)

{

struct customers_node *q,*temp

q=(struct customers_node *)malloc(sizeof(struct customers_node))

customers(p0)

temp=p0 //未解决元素的插入

q=head->next

if(head->next==NULL){

q=temp

q->next=NULL

}

while(q->next) q=q->next

q->next=temp

return head

}

struct customers_node * searchDoc(struct customers_node * head,char id) //是否只用id能返回结构中的所有元素

{

struct customers_node * p=head->next

p=head->next

if(head->next==null)

printf("无人入住")

else{

while(strcmp(id,p->id)!=0) //如何只用id表示结点(结构)中的数据部分 p=p->next

p=p->next

}

return p

}

struct customers_node * DeleteDoc(struct customers_node * head,char id)

{

struct customers_node * p,* q

p=head->next

q=p->next

if(p==null)

return null

while(p!=null){

if(strcmp(id,p->id)==0){

q=p

free(p)

}

p=p->next

q=p->next

}

return head

}

void Print_Cust_Doc(struct customers_node * head)

{

struct customers_node * q

if(head->next==null){

printf("\n 没有记录\n")

return

}

printf("入住客户记录是:\n")

for(q=head->nextqq=q->next){

printf(" 身份z号码:%s\t",q->id)

printf(" 入住天数:%d\t",q->days)

printf(" 预交款:%d\t",q->money)

printf(" 房间号:%s\n",q->roomnumber)

}

}

#define NULL 0

#define LEN sizeof(struct customer)

#include "string.h"

struct customer

{

int num

char name[20]

long date

struct customer *next

}cus

struct customer *creat(void) /*建立一个链表*/

{

struct customer *head,*p1,*p2

int n=0

p1=(struct customer *)malloc(LEN)

p2=(struct customer *)malloc(LEN)

printf("请输入客户的信息:\n")

printf("\n房间:")

scanf("%d",&p1->num)

printf("\n")

printf("姓名:")

scanf("%s",p1->name)

printf("\n")

printf("入住枝棚时间:")

scanf("%ld",&p1->date)

printf("\n")

head=NULL

while(p1->num!=0)

{

n++

if(n==1)

head=p1

else

p2->next=p1

p2=p1

p1=(struct customer *)malloc(LEN)

printf("请输入客户的信息:\n")

printf("\n房间:")

scanf("%d",&p1->num)

printf("\n")

printf("姓名:")

scanf("%s",p1->name)

printf("\n")

printf("入住时升团间:")

scanf("%ld",&p1->date)

printf("\n")

}

p2->next=NULL

return(head)

}

struct customer *insert(struct customer *head,struct customer *consumer) /*登记新入住的客户的信息*/

{

struct customer *p1,*p2

p1=head

p2=consumer

if(p1->next!=NULL)

p1=p1->next

if(p1->next==NULL)

{

p1->next=p2

p2->next=NULL

}

return(head)

}

struct customer *del(struct customer *head,int num) /*显示退房客户的信息*/

{

struct customer *p1,*p2

if(head==NULL)

{

printf("没有客户的信息\n")

return(head)

}

p1=head

while(num!=p1->num&&p1->next!=NULL)

{

p2=p1p1=p1->next

}

if(num==p1->num)

{

if(p1==head)

head=p1->next

else

p2->next=p1->next

printf("退房客户的信息:\n")

printf("客房:%d\n",&p1->num)

printf("姓名:%s\n",p1->name)

printf("入住时间:%ld\n",&p1->date)

}

else

printf("没有该客户的信猛笑则息\n")

return(head)

}

struct customer *search(struct customer *head,char c_name[]) /*查询客户信息*/

{

struct customer *p

p=head

while(strcmp(p->name,c_name)&&p->next!=NULL)

p=p->next

if(p->name==c_name)

{

printf("该客户的信息为:\n")

printf("房间:%d\n姓名:%S\n入住时间:%ld",p->num,p->name,p->date)

}

if(p->name!=c_name&&p->next==NULL)

printf("没有该客户的信息!\n")

}

void print(struct customer *head) /*打印出现有客户的信息*/

{

struct customer *p

printf("\n现有客户信息为:\n")

p=head

if(head!=NULL)

do

{

printf("客房:%d\n",p->num)

printf("姓名:%s\n",p->name)

printf("入住时间:%ld\n",p->date)

p=p->next

}while(p!=NULL)

}

main()

{

struct customer *head,*p

int m,number

char c_name[20]

printf("\n")

printf(" ******************************\n")

printf(" 欢迎进入旅游信息管理系统\n")

printf(" ******************************\n")

printf(" ******************************\n\n")

printf(" 1:建库\n")

printf(" 2:登记\n")

printf(" 3:退房\n")

printf(" 4:查询\n")

printf(" ******************************\n\n")

printf("请执行 *** 作:\n")

scanf("%d",&m)

if(m==1)

head=creat()

else

if(m==2)

{

printf("请输入要登记得客户的信息:")

p=(struct customer *)malloc(LEN)

scanf("%d %s %ld",&p->num,p->name,&p->date)

head=insert(head,p)

print(head)

}

else

if(m==3)

{

printf("请输入要退房的客户的房间号:")

scanf("%d",&number)

head=del(head,number)

print(head)

}

else

if(m==4)

{

printf("请输入要查询的客户的姓名:")

scanf("%s",c_name)

search(head,c_name)

}

else

printf("执行 *** 作错误!")

}

有5个警告而已,不过已经很不错了


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12476698.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存