指针写的数据怎么样整体写入输出文件?
#include<stdio.h>#include<malloc.h>
#include<string.h>
#include<stdlib.h>
typedef struct{
char name[5];
char sex[5];
char ID[20];//身份证号码
char V[5]; //VIP客户
char number[5]; //房间号
char come[15];
char day[5]; //入住天数
char type[5]; //入住房间档次
char price[5]; //收取费用
char leave[15];
}typedata;
typedef struct node{
typedata data;
struct node *next;
}Listnode;
typedef Listnode *Linklist;
Linklist head;
Listnode *p;
void save(Linklist );
void read(Linklist );
//客户信息的建立
Linklist Creat(int a)
{ int i=1;
Linklist head=(Listnode*)malloc(sizeof(Listnode));
Listnode *p,*q;
q=head;
while(a--)
{
p=(Listnode*)malloc(sizeof(Listnode));
printf("请输入第%d客户的姓名:\n",i);
scanf("%s",p->data.name);
printf("请输入客户的性别:\n");
scanf("%s",p->data.sex);
printf("请输入客户的省份证号:\n");
scanf("%s",p->data.ID);
if(strlen(p->data.ID)!=18)
{printf("省份证号码输入错误!!请您重新输入:\n");
scanf("%s",p->data.ID);}
printf("请输入客户是否为VIP客户(0/1表示是与否!):\n");
scanf("%s",p->data.V);
printf("请输入客户所住的房间号:\n");
scanf("%s",p->data.number);
//客户入住的时间格式判断
printf("请输入客户入住的日期:\n");
scanf("%s",p->);
if((p->[4]!='-')&&(p->[7]!='-')&&(strlen(p->)!=10))
{ printf("输入日期的格式错误!!请重新输入:\n");
scanf("%s",p->);}
//以上是客户入住时间格式的判断
printf("请输入客户入住的天数:\n");
scanf("%s",p->data.day);
printf("请输入客户入住房间的档次(1.普通房间(general)2.贵宾房间(visitant)3.高档房间(deluxe)):\n");
scanf("%s",p->data.type);
printf("请输入应该收取的费用:\n");
scanf("%s",p->data.price);
//客户离开的时间格式判断
printf("请输入客户离开的时间:\n");
scanf("%s",p->data.leave);
while(p->data.leave[4]!='-'&&p->data.leave[7]!='-')
{printf("输入的时间格式错误!!请重新输入:\n");
scanf("%s",p->data.leave);
}
//以上是客户离开时间格式的判断
q->next=p;
q=p;
i++;
}
q->next=NULL;
save(head);
return head;
}
//宾馆信息的添加
void Add(Linklist head,int b)
{ int i=1;
Listnode *m,*n,*p;
m=head;
n=m->next;
while(n->next!=NULL)
{
m=n;
n=m->next;
}
while(b--)
{
p=(Listnode*)malloc(sizeof(Listnode));
printf("请输入第%d客户的姓名:\n",i);
scanf("%s",p->data.name);
printf("请输入客户的性别:\n");
scanf("%s",p->data.sex);
printf("请输入客户的省份证号:\n");
scanf("%s",p->data.ID);
if(strlen(p->data.ID)!=18)
{printf("省份证号码输入错误!!请您重新输入:\n");
scanf("%s",p->data.ID);}
printf("请输入客户是否为VIP客户(0/1表示是与否!):\n");
scanf("%s",p->data.V);
printf("请输入客户所住的房间号:\n");
scanf("%s",p->data.number);
//客户入住的时间格式判断
printf("请输入客户入住的日期:\n");
scanf("%s",p->);
if(p->[4]!='-'&&p->[7]!='-')
{ printf("输入日期的格式错误!!请重新输入:\n");
scanf("%s",p->);}
//以上是客户入住时间格式的判断
printf("请输入客户入住的天数:\n");
scanf("%s",p->data.day);
printf("请输入客户入住房间的档次(1.普通房间(general)2.贵宾房间(visitant)3.高档房间(deluxe)):\n");
scanf("%s",p->data.type);
printf("请输入应该收取的费用:\n");
scanf("%s",p->data.price);
//客户离开的时间格式判断
printf("请输入客户离开的时间:\n");
scanf("%s",p->data.leave);
if(p->data.leave[4]!='-'&&p->data.leave[7]!='-')
{printf("输入的时间格式错误!!请重新输入:\n");
scanf("%s",p->data.leave);
}
//以上是客户离开时间格式的判断
n->next=p;
n=p;
i++;
}
n->next=NULL;
save(head);
}
//按姓名查找客户信息
Linklist Findname(Linklist head)
{
Linklist p;
char name[5];
int i;
printf("***************************************************\n");
printf("***************************************************\n");
printf("请按1开始查询\n");
p=head->next;
scanf("%d",&i);
if(i==1)
{
printf("请输入要查询的姓名:\n");
scanf("%s",&name);
while((p&&strcmp(p->data.name,name))==1)
p=p->next;
if(p==NULL||strcmp(p->data.name,name)!=0)
p=NULL;
}
return p;
}
//按性别查找客户信息
Linklist Findsex(Linklist head)
{
Linklist p;
char sex[5];
int i;
printf("***************************************************\n");
printf("***************************************************\n");
printf("请按1开始查询:\n");
p=head->next;
scanf("%d",&i);
if(i==1)
{
printf("请输入客户的性别:\n");
scanf("%s",&sex);
while((p&&strcmp(p->data.sex,sex))==1)
p=p->next;
if(p==NULL||strcmp(p->data.sex,sex)!=0)
p=NULL;
}
return p;
}
//按房间号查找客户信息
Linklist Findfang(Linklist head)
{
Linklist p;
char number[5];
int i;
printf("***************************************************\n");
printf("***************************************************\n");
printf("请按1开始查询:\n");
p=head->next;
scanf("%d",&i);
if(i==1)
{
printf("请输入客户的房间号:\n");
scanf("%s",&number);
while((p&&strcmp(p->data.number,number))==1)
p=p->next;
if(p==NULL||strcmp(p->data.number,number)!=0)
p=NULL;
}
return p;
}
//按客户入住的时间查询
Linklist Findcome(Linklist head)
{
Linklist p;
char come[15];
int i;
printf("***************************************************\n");
printf("***************************************************\n");
printf("请按1开始查询:\n");
p=head->next;
scanf("%d",&i);
if(i==1)
{
printf("请输入客户的入住时间:\n");
scanf("%s",&come);
while((p&&strcmp(p->,come))==1)
p=p->next;
if(p==NULL||strcmp(p->,come)!=0)
p=NULL;
}
return p;
}
//客户信息的修改
Linklist Alter(Linklist head)
{
Linklist p;
p=Findname(head);
if(p==NULL)
{
printf("该客户的信息不存在!!\n");
//return;
}
else
{
printf("请输入客户的姓名:\n");
scanf("%s",p->data.name);
printf("请输入客户的性别:\n");
scanf("%s",p->data.sex);
printf("请输入客户的省份证号:\n");
scanf("%s",p->data.ID);
if(strlen(p->data.ID)!=18)
{printf("省份证号码输入错误!!请您重新输入:\n");
scanf("%s",p->data.ID);}
printf("请输入客户是否为VIP客户(0/1表示是与否!):\n");
scanf("%s",p->data.V);
printf("请输入客户所住的房间号:\n");
scanf("%s",p->data.number);
//客户入住的时间格式判断
printf("请输入客户入住的日期:\n");
scanf("%s",p->);
if(p->[4]!='-'&&p->[7]!='-')
{ printf("输入日期的格式错误!!请重新输入:\n");
scanf("%s",p->);}
//以上是客户入住时间格式的判断
printf("请输入客户入住的天数:\n");
scanf("%s",p->data.day);
printf("请输入客户入住房间的档次(1.普通房间(general)2.贵宾房间(visitant)3.高档房间(deluxe)):\n");
scanf("%s",p->data.type);
printf("请输入应该收取的费用:\n");
scanf("%s",p->data.price);
//客户离开的时间格式判断
printf("请输入客户离开的时间:\n");
scanf("%s",p->data.leave);
if(p->data.leave[4]!='-'&&p->data.leave[7]!='-')
{printf("输入的时间格式错误!!请重新输入:\n");
scanf("%s",p->data.leave);
}
//以上是客户离开时间格式的判断
printf("客户信息已修改!!\n");
}
save(head);
}
//客户信息的删除
Linklist Delete(Linklist head)
{
Linklist p,q;
int i;
p=Findname(head);
if(p==NULL)
{
printf("该客户的信息不存在!!\n");
// return;
}
else{
printf("如果要删除的话请按1:\n");
scanf("%d",&i);
if(i==1)
{
q=head;
while(q!=NULL&&q->next!=p)
q=q->next;
q->next=p->next;
free(p);
printf("信息已删除!!\n");
}
}
save(head);
}
//宾馆信息的输出
void Show(Linklist head)
{ read(head);
/* Listnode *p,*q;
q=head;
p=q->next;
printf("姓名 性别 身份证号 是否是VIP 入住的时间 入住的天数 如住房的档次 离开的时间\n");
printf("**********************************************\n");
while(q->next!=NULL)
{
printf("%4s%4s%20s%4s%4s%15s%4s%4s%4s%15s",p->data.name,p->data.sex,p->data.ID,p->data.V,p->data.number,p->,p->data.day,p->data.type,p->data.price,p->data.leave);
p=p->next;
}*/
//read(head);
}
void save(Linklist head)
{
Linklist p,q;
FILE *fp;
p=head;
p=p->next;
if((fp=fopen("jiu.txt","wb"))==NULL)
{
printf("The file can not open\n");
return;
}
for(q=p;q!=NULL;q=q->next)
if(fwrite(q,sizeof(struct node),1,fp)!=1)
{
printf("file write error!\n");
return;
}
fclose(fp);
}
void read(Linklist head)
{
Linklist p,q;
FILE *fp;
p=head;
p=p->next;
if((fp=fopen("jiu.txt","rb"))==NULL)
{
printf("The file can not open\n");
return;
}
while(!feof(fp))
{
q=p;q=q->next;
fread(q,sizeof(struct node),1,fp);
printf("\t\t客户的姓名:%s\n",q->data.name);
printf("\t\t客户的性别:%s\n",q->data.sex);
printf("\t\t客户的身份证:%s\n",q->data.ID);
printf("\t\t客户是否为VIP:%s\n",q->data.V);
printf("\t\t客户的入住房间号:%s\n",q->data.number);
printf("\t\t客户的入住的时间:%s\n",q->);
printf("\t\t客户的入住的天数:%s\n",q->data.day);
printf("\t\t客户的入住房间的档次:%s\n",q->data.type);
printf("\t\t客户的费用:%s\n",q->data.price);
printf("\t\t客户的离开的时间:%s\n",q->data.leave);
}
fclose(fp);
}
int menu()
{ int i;
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(" 7.客户信息的修改 \n");
printf(" 8.客户信息的删除 \n");
printf(" 9.酒店信息的输出 \n");
printf(" 0.退出 \n");
printf("**********************************************\n");
printf("**********************************************\n");
printf(" 请选择0--9 \n");
for(;;)
{
scanf("%d",&i);
if(i<0||i>9)
printf("输入错误!!\n");
else
break;
}
return i;
}
int main()
{
for(;;)
{
switch(menu())
{case 1: printf("**************客户信息的新建!**************\n");
int i;
printf("请输入客户的数目:\n");
scanf("%d",&i);
head=Creat(i);
break;
case 2: printf("**************客户信息的添加****************\n");
int a;
printf("请输入你想要输入的人数:\n");
scanf("%d",&a);
Add(head,a);
break;
case 3: printf("***************按客户的姓名查询**************\n");
p=Findname(head);
if(p!=NULL)
{ printf("********************************************\n");
printf("\t\t客户的姓名:%s\n",p->data.name);
printf("\t\t客户的性别:%s\n",p->data.sex);
printf("\t\t客户的身份证:%s\n",p->data.ID);
printf("\t\t客户是否为VIP:%s\n",p->data.V);
printf("\t\t客户的入住房间号:%s\n",p->data.number);
printf("\t\t客户的入住的时间:%s\n",p->);
printf("\t\t客户的入住的天数:%s\n",p->data.day);
printf("\t\t客户的入住房间的档次:%s\n",p->data.type);
printf("\t\t客户的费用:%s\n",p->data.price);
printf("\t\t客户的离开的时间:%s\n",p->data.leave);
printf("********************************************\n");
printf("\n");
}
else
printf("该客户的信息不在!!\n");
break;
case 4: printf("****************按客户的性别查询**************\n");
p=Findsex(head);
if(p!=NULL)
{ printf("*********************************************\n");
printf("\t\t客户的姓名:%s\n",p->data.name);
printf("\t\t客户的性别:%s\n",p->data.sex);
printf("\t\t客户的身份证:%s\n",p->data.ID);
printf("\t\t客户是否为VIP:%s\n",p->data.V);
printf("\t\t客户的入住房间号:%s\n",p->data.number);
printf("\t\t客户的入住的时间:%s\n",p->);
printf("\t\t客户的入住的天数:%s\n",p->data.day);
printf("\t\t客户的入住房间的档次:%s\n",p->data.type);
printf("\t\t客户的费用:%s\n",p->data.price);
printf("\t\t客户的离开的时间:%s\n",p->data.leave);
printf("*********************************************\n");
printf("\n");
}
else
printf("该客户的信息不在!!\n");
break;
case 5: printf("*****************按房间号查询*****************\n");
p=Findfang(head);
if(p!=NULL)
{printf("******************************************\n");
printf("\t\t客户的姓名:%s\n",p->data.name);
printf("\t\t客户的性别:%s\n",p->data.sex);
printf("\t\t客户的身份证:%s\n",p->data.ID);
printf("\t\t客户是否为VIP:%s\n",p->data.V);
printf("\t\t客户的入住房间号:%s\n",p->data.number);
printf("\t\t客户的入住的时间:%s\n",p->);
printf("\t\t客户的入住的天数:%s\n",p->data.day);
printf("\t\t客户的入住房间的档次:%s\n",p->data.type);
printf("\t\t客户的费用:%s\n",p->data.price);
printf("\t\t客户的离开的时间:%s\n",p->data.leave);
printf("*********************************************\n");
printf("\n");
}
else
printf("该客户的信息不在!!\n");
break;
case 6: printf("*************按客户入住时间查询***************\n");
p=Findcome(head);
if(p!=NULL)
{ printf("*********************************************\n");
printf("\t\t客户的姓名:%s\n",p->data.name);
printf("\t\t客户的性别:%s\n",p->data.sex);
printf("\t\t客户的身份证:%s\n",p->data.ID);
printf("\t\t客户是否为VIP:%s\n",p->data.V);
printf("\t\t客户的入住房间号:%s\n",p->data.number);
printf("\t\t客户的入住的时间:%s\n",p->);
printf("\t\t客户的入住的天数:%s\n",p->data.day);
printf("\t\t客户的入住房间的档次:%s\n",p->data.type);
printf("\t\t客户的费用:%s\n",p->data.price);
printf("\t\t客户的离开的时间:%s\n",p->data.leave);
printf("*********************************************\n");
printf("\n");
}
else
printf("该客户的信息不在!!");
break;
case 7: printf("*************客户信息的修改********************\n");
Alter(head);
break;
case 8: printf("*************客户信息的删除********************\n");
Delete(head);
break;
case 9: printf("**************酒店信息的输出*******************\n");
Show(head);
break;
case 0: break;
}
}
}