该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

这是从我的酒店管理系统截取出来的一部分,旅客入住这一块有问题,只能储存一个房间的入住信息,如果再输入新的入住信息,旧的房间信息就会被顶掉,也就是说它只能储存一个最新的房间信息

#include

#include

#include

#include

#define LOGIN_USER_MAX 10

#define LOGIN_PASSWORD_MAX 10

#define INPUT_USER_MAX 16

#define INPUT_PASSWORD_MAX 16

#define ROOM_NUMBER_MIN 1//房间号的最小值

#define ROOM_NUMBER_MAX 30//房间号的最大值

#define LEN sizeof(struct Hotel) //用LEN代替结构体的"长度"

typedef struct Hotel//定义结构体变量

{

unsigned int iRoomNumber;

char Name[20];

char Sex[2];

char ID[10];

float Paid;

unsigned int iRegeistYear ;

unsigned int iRegeistMonth ;

unsigned int iRegeistDay ;

struct Hotel *next ;

}*HotelPtr;

char MainMenu(void); //主菜单

int Regeist(void); //登记旅客入住的函数

int CheckNumber(int n); //检查房间是否已经入住的函数

HotelPtr Load(void);

char MainMenu(void)//MainMenu函数,完成菜单功能

{

char select ;

printf ("\n--------------------------欢迎使用旅店信息管理系统---------------------------\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 ("\n-----------------------------------------------------------------------------\n");

select = getch();

return select ;

}

int Regeist (void)//Regeist函数,完成旅客入住功能

{

FILE *fpCustomerInformation;//定义文件指针 fpCustomerInformation

char Choice[2];//储存有一个空字符 , 不然就是char型的数组了 ,而不是字符串

unsigned int iTempNumber;

HotelPtr LinklistPtr;

LinklistPtr = (HotelPtr)malloc(LEN);

if (LinklistPtr == NULL)

{

printf ("动态内存分配失败!\n");

getch();

return -1;

}

if((fpCustomerInformation = fopen("CustomerInformation.dat", "a+")) == NULL)

{

printf ("无法打开文件!\n");

getch();

return -1;

}

while(1)

{

printf ("\n请登记入住信息 : \n");

printf ("RoomNumber( %d ~ %d ):", ROOM_NUMBER_MIN, ROOM_NUMBER_MAX);

scanf ("%d", &iTempNumber);

if(iTempNumber < ROOM_NUMBER_MIN || iTempNumber > ROOM_NUMBER_MAX)//检查房间号的正确性

{

printf ("\a\nError !");

return -1;

}

CheckNumber(iTempNumber);//检查该房间是否已经入住

LinklistPtr->iRoomNumber = iTempNumber ;//在该房间没有旅客时,登记入住

printf("Name:\t");

scanf("%s", &LinklistPtr->Name);

printf("Sex:\t");

scanf("%s", &LinklistPtr->Sex);

printf("ID ( <10位 ):\t");

scanf("%s", &LinklistPtr->ID);

printf("Paid:\t");

scanf("%f", &LinklistPtr->Paid);

printf("Date (年月日空格隔开):");

scanf("%d %d %d", &LinklistPtr->iRegeistYear, &LinklistPtr->iRegeistMonth, &LinklistPtr->iRegeistDay);

/*

if(scanf("%d %d %d", &LinklistPtr->iRegeistYear, &LinklistPtr->iRegeistMonth, &LinklistPtr->iRegeistDay) != 3)

{

printf("\a\nError !");

getch();

exit(0);

}

当你输入的整形数据大于3个时 ,这样是检测不到错误的 ,因为scanf()确实成功读入了3个数 ,只是留下一个在缓冲区而已,将要被其他语句取走

*/

LinklistPtr->next = NULL ;

fwrite(LinklistPtr, LEN, 1, fpCustomerInformation); //将链表信息保存到磁盘文件

printf ("\n请选择是否继续登记信息 ( y ): ");

scanf("%s",Choice);

if((strcmp(Choice, "Y") != 0) && (strcmp(Choice, "y") != 0))

{

fclose (fpCustomerInformation);

printf ("\nOk !");

return 0;

}

}

return 0;

}

int CheckNumber(int n) //CheckNumber函数,检查登指定的房间是否已经有旅客入住

{

int iTempNumber = n;

HotelPtr LinklistPtr = Load();

while(LinklistPtr)

{

if (LinklistPtr->iRoomNumber == n)

{

printf ("\n%d号房间已经有旅客入住了!\n",n);

getch();

exit(0);

}

LinklistPtr = LinklistPtr->next ;

}

return 0;

}

HotelPtr Load(void)//定义Load函数读取当前的信息,并存到链表中

{

FILE *fpCustomerInformation;

HotelPtr head, LinklistPtr, TempPtr;

LinklistPtr = (HotelPtr)malloc(LEN);

TempPtr = (HotelPtr)malloc(LEN);

if((LinklistPtr == NULL) || (TempPtr == NULL))

{

printf ("内存分配失败!\n");

getch();

return 0;

}

head = LinklistPtr;

if((fpCustomerInformation = fopen("CustomerInformation.dat","rb")) == NULL)

{

printf ("无法打开文件!\n");

getch();

return 0;

}

while(fread (TempPtr, LEN, 1, fpCustomerInformation)) //读取当前的信息,并存到链表中

{

LinklistPtr->next = TempPtr;

LinklistPtr = TempPtr;

}

LinklistPtr->next = NULL;

return head ;//返回链表的头指针

}

int main () //主函数部分,调用若干子函数完成相应的功能

{

char choice ;

//Login();//登录系统

while(1)

{

system("cls");

choice = MainMenu();

switch(choice)

{

case '6':Regeist();break;

}

printf ("\n\n请按任意键继续 !\n");

getch();

system("cls");

}

return 0 ;

}

酒店预订管理小系统c语言,酒店管理系统有些问题,求c语言大佬帮忙相关推荐

  1. c语言工资管理系统输出错误,求c语言工资管理系统的源代码?

    该程序输入职工工号和应发工资,由系统对其完成的实发工资实现计算. 其中职工信息包括职工号.姓名.性别.应发工资.税金.实发工资等(职工号不重复). 功能要求及说明: 系统以菜单方式工作 职工基本信息和 ...

  2. Python迷你停车场管理小系统-学习版

    迷你停车场管理小系统 项目说明:有一个3层停车场,每一层共有5个车位,每层车位按照车牌号码尾号停入 预先数据: cars=[['京A8E381','京A8E383','京A8E385','京A8E38 ...

  3. 保险后台管理系统/订单管理/保单管理/客户管理/咨询管理/保险原型/保单详情/客户详情/权限管理/部门管理/账号管理/保险系统原型/汽车保险后台管理系统/角色管理/咨询详情/axure原型/需求文档

    保险后台管理系统/订单管理/保单管理/客户管理/咨询管理/保险原型/保单详情/客户详情/权限管理/部门管理/账号管理/保险系统原型/汽车保险后台管理系统/角色管理/咨询详情/axure原型/需求文档 ...

  4. 基于javaee的酒店预订管理系统设计与实现、ssh框架+mysql数据库

    课题要求 酒店预订系统主要内容有: 用户注册登录.酒店搜索.平价酒店预定.定时特价酒店预定.会员个人中心.用户评价.管理员登录.用户管理.评价管理.预约管理.基本功能:数据进行录入.修改.删除.查询. ...

  5. 基于Android的酒店预订管理系统设计与实现

    21世纪的今天,随着社会的不断发展与进步,人们对于信息科学化的认识,已由低层次向高层次发展,由原来的感性认识向理性认识提高,管理工作的重要性已逐渐被人们所认识,科学化的管理,使信息存储达到准确.快速. ...

  6. 酒店客房管理设计与开发java_java471 酒店客房管理信息系统设计与开发

    摘  要 随着互联网的日益普及和计算机技术快速发展,越来越多的企事业单位通过互联网平台对外宣传自己,同时也为那些有信息需求的人提供所需的信息以及方便快捷的服务. 本系统是一个基于B/S结构电子商务网站 ...

  7. python民宿房间预订管理平台系统django549

    民宿管理平台系统,主要的模块包括管理员:首页.个人中心.用户管理.商家管理.民宿信息管理.房间类型管理.房间信息管理.房间预订管理.房间退订管理.投诉反馈管理.我的收藏管理.系统管理,用户:首页.个人 ...

  8. 大学生学科竞赛管理网站系统、学科竞赛管理系统

    摘  要 随着科学技术的飞速发展,各行各业都在努力与现代先进技术接轨,通过科技手段提高自身的优势:大学生学科竞赛管理网站系统当然也不能排除在外,随着网络技术的不断成熟,带动了大学生学科竞赛管理网站系统 ...

  9. 药店零售管理php系统,小型药店销售管理系统

    小型药店销售管理系统 在互联网技术快速发展的情况下,药店管理部门也纷纷提出使用信息技术,来改变传统工作效率低下的问题.企业之间的互相联系,需要解决电子商务流程一系列的问题,困扰着企业管理者,这些问题亟 ...

  10. c语言火车票管理系统源代码2000行,C语言教务管理系统[2000行代码].doc

    专业资料 精心整理 C语言教务管理系统 一.程序结构图 二.程序运行截图 1. 个人信息简介 2. 修改颜色 3. 注册界面 4. 信息保存至文件 5. 登录界面 6. 管理员录入信息 7. 学生信息 ...

最新文章

  1. 【django轻量级框架】HTML上传文件拦截到本地
  2. MySQL—创建数据表
  3. [源码和文档分享]基于C++实现的运动会统分系统
  4. react api_使用Java EE 8中的React式API加速服务
  5. html页面tableview,用JS写的一个TableView控件代码
  6. linux路由器实际配置案例
  7. 网络启动安装linux客户机nfs设置,NFS服务端和客户端安装配置
  8. Python生成强密码字典文件
  9. Docker学习总结(55)——Google和Facebook为什么不用Docker?
  10. mongoDB简单介绍及安装
  11. 精确选择识别png图片有像素的区域(使用方法)
  12. Unity 粒子特效相对位置和大小的调整
  13. 【记录】在Windows上使用MinGW.Thread.h等文件测试C++11多线程;及异常解方:error To use the MinGW-std-threads library;
  14. GitHub 用户专属福利,实际到账 3K+,Namebase Airdrop
  15. linux dot命令,DOT语言使用笔记(1)
  16. 敏捷实践 | 分不清Kanban和看板的人只剩你了
  17. MySQL 批量插入数据,一次插入多少行数据效率最高?
  18. firewalld 指定IP访问某端口
  19. vs2013怎么清理解决方案_vs2010/2013项目所在文件夹越来越大如何解决?
  20. 软件测试:Alpha测试与beta测试区别

热门文章

  1. 不动产 - 权属性质代码
  2. 中小银行传统数据仓库向大数据平台迁移探索
  3. Java web 使用页面压缩
  4. 用于黑客渗透测试的 21 个最佳 Kali Linux 工具
  5. IBM要推POWER9,来了解一下POWER处理器的前世今生
  6. 2021微信小程序UI组件库合集
  7. 【物联网】12.物联网服务器发送方式(HTTP,WebSocket ,MQTT )
  8. flash乱码解决方案
  9. qlistview 自定义控件,是否可以在QListView中添加自定义窗口小部件?
  10. Unity_手机上查看日志的插件LogViewer