酒店预订管理小系统c语言,酒店管理系统有些问题,求c语言大佬帮忙
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
这是从我的酒店管理系统截取出来的一部分,旅客入住这一块有问题,只能储存一个房间的入住信息,如果再输入新的入住信息,旧的房间信息就会被顶掉,也就是说它只能储存一个最新的房间信息
#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语言大佬帮忙相关推荐
- c语言工资管理系统输出错误,求c语言工资管理系统的源代码?
该程序输入职工工号和应发工资,由系统对其完成的实发工资实现计算. 其中职工信息包括职工号.姓名.性别.应发工资.税金.实发工资等(职工号不重复). 功能要求及说明: 系统以菜单方式工作 职工基本信息和 ...
- Python迷你停车场管理小系统-学习版
迷你停车场管理小系统 项目说明:有一个3层停车场,每一层共有5个车位,每层车位按照车牌号码尾号停入 预先数据: cars=[['京A8E381','京A8E383','京A8E385','京A8E38 ...
- 保险后台管理系统/订单管理/保单管理/客户管理/咨询管理/保险原型/保单详情/客户详情/权限管理/部门管理/账号管理/保险系统原型/汽车保险后台管理系统/角色管理/咨询详情/axure原型/需求文档
保险后台管理系统/订单管理/保单管理/客户管理/咨询管理/保险原型/保单详情/客户详情/权限管理/部门管理/账号管理/保险系统原型/汽车保险后台管理系统/角色管理/咨询详情/axure原型/需求文档 ...
- 基于javaee的酒店预订管理系统设计与实现、ssh框架+mysql数据库
课题要求 酒店预订系统主要内容有: 用户注册登录.酒店搜索.平价酒店预定.定时特价酒店预定.会员个人中心.用户评价.管理员登录.用户管理.评价管理.预约管理.基本功能:数据进行录入.修改.删除.查询. ...
- 基于Android的酒店预订管理系统设计与实现
21世纪的今天,随着社会的不断发展与进步,人们对于信息科学化的认识,已由低层次向高层次发展,由原来的感性认识向理性认识提高,管理工作的重要性已逐渐被人们所认识,科学化的管理,使信息存储达到准确.快速. ...
- 酒店客房管理设计与开发java_java471 酒店客房管理信息系统设计与开发
摘 要 随着互联网的日益普及和计算机技术快速发展,越来越多的企事业单位通过互联网平台对外宣传自己,同时也为那些有信息需求的人提供所需的信息以及方便快捷的服务. 本系统是一个基于B/S结构电子商务网站 ...
- python民宿房间预订管理平台系统django549
民宿管理平台系统,主要的模块包括管理员:首页.个人中心.用户管理.商家管理.民宿信息管理.房间类型管理.房间信息管理.房间预订管理.房间退订管理.投诉反馈管理.我的收藏管理.系统管理,用户:首页.个人 ...
- 大学生学科竞赛管理网站系统、学科竞赛管理系统
摘 要 随着科学技术的飞速发展,各行各业都在努力与现代先进技术接轨,通过科技手段提高自身的优势:大学生学科竞赛管理网站系统当然也不能排除在外,随着网络技术的不断成熟,带动了大学生学科竞赛管理网站系统 ...
- 药店零售管理php系统,小型药店销售管理系统
小型药店销售管理系统 在互联网技术快速发展的情况下,药店管理部门也纷纷提出使用信息技术,来改变传统工作效率低下的问题.企业之间的互相联系,需要解决电子商务流程一系列的问题,困扰着企业管理者,这些问题亟 ...
- c语言火车票管理系统源代码2000行,C语言教务管理系统[2000行代码].doc
专业资料 精心整理 C语言教务管理系统 一.程序结构图 二.程序运行截图 1. 个人信息简介 2. 修改颜色 3. 注册界面 4. 信息保存至文件 5. 登录界面 6. 管理员录入信息 7. 学生信息 ...
最新文章
- 【django轻量级框架】HTML上传文件拦截到本地
- MySQL—创建数据表
- [源码和文档分享]基于C++实现的运动会统分系统
- react api_使用Java EE 8中的React式API加速服务
- html页面tableview,用JS写的一个TableView控件代码
- linux路由器实际配置案例
- 网络启动安装linux客户机nfs设置,NFS服务端和客户端安装配置
- Python生成强密码字典文件
- Docker学习总结(55)——Google和Facebook为什么不用Docker?
- mongoDB简单介绍及安装
- 精确选择识别png图片有像素的区域(使用方法)
- Unity 粒子特效相对位置和大小的调整
- 【记录】在Windows上使用MinGW.Thread.h等文件测试C++11多线程;及异常解方:error To use the MinGW-std-threads library;
- GitHub 用户专属福利,实际到账 3K+,Namebase Airdrop
- linux dot命令,DOT语言使用笔记(1)
- 敏捷实践 | 分不清Kanban和看板的人只剩你了
- MySQL 批量插入数据,一次插入多少行数据效率最高?
- firewalld 指定IP访问某端口
- vs2013怎么清理解决方案_vs2010/2013项目所在文件夹越来越大如何解决?
- 软件测试:Alpha测试与beta测试区别