C语言程序设计 客房管理系统源码和报告文档格式.docx
- 文档编号:19511338
- 上传时间:2023-01-07
- 格式:DOCX
- 页数:15
- 大小:70.56KB
C语言程序设计 客房管理系统源码和报告文档格式.docx
《C语言程序设计 客房管理系统源码和报告文档格式.docx》由会员分享,可在线阅读,更多相关《C语言程序设计 客房管理系统源码和报告文档格式.docx(15页珍藏版)》请在冰豆网上搜索。
//姓名
intsex;
//性别
intage;
//年龄
charid[20];
//身份证号
intyear;
//入住时间
intmonth;
intdate;
}CLIENT;
//客房结构体
structHotel
introomid;
inttel;
//用户的话
intprice;
//价格
intsign;
//默认标记为空房间
CLIENTclient_list;
//客户信息
}room[M];
voidMenu();
//目录界面
voiddengji(structHotelroom[]);
voidsavefile(structHotelroom[],inti);
intreadfile(structHotelroom[]);
voidtongji(structHotelroom[]);
voidchaxun(structHotelroom[]);
voidprintmessage(structHotelroom[],intn);
voidxiugai(structHotelroom[]);
//主函数
intmain()
intn;
charreply;
Menu();
do{
printf("
请输入选项对应的数字:
\n"
);
scanf("
%d"
&
n);
while(n!
=1&
&
n!
=2&
=3&
=4)
{
请输入各选项对应的数字!
}
switch(n)
case1:
dengji(room);
break;
case2:
tongji(room);
case3:
chaxun(room);
case4:
xiugai(room);
是否还要进入其它选项?
(回复Y或y继续)\n"
%c"
reply);
}while(reply=='
y'
||reply=='
Y'
return0;
}
//系统目录
voidMenu()
************************客房管理系统***************************\n"
printf("
\t\t\t1————登记\n"
);
\t\t\t2————统计\n"
\t\t\t3————查询\n"
\t\t\t4————修改\n"
***************************************************************\n"
//登记客户信息
voiddengji(structHotelroom[])
intx,j,i,flag;
charanswer;
do
i=readfile(room);
flag=0;
输入您想入住的房间号:
(三位数)\n"
%3d"
x);
for(j=0;
j<
i;
j++)
if(room[j].roomid==x)
该房间已经被占用!
flag=1;
}while(flag>
0);
room[i+1].roomid=x;
请输入您的电话:
(仅支持六位数号码~)\n"
room[i+1].tel);
入住价格\n"
room[i+1].price);
请输入您的名字\n"
%s"
room[i+1].client_list.name);
性别:
(1表示女,0表示男)\n"
room[i+1].client_list.sex);
您的年龄:
room[i+1].client_list.age);
您的id:
room[i+1].client_list.id);
请输入入住年月日(格式:
20151111)\n"
%4d%2d%2d"
room[i+1].client_list.year,&
room[i+1].client_list.month,&
room[i+1].client_list.date);
savefile(room,i+1);
是否还要继续登记?
answer);
}while(answer=='
||answer=='
//读取txt中的信息
intreadfile(structHotelroom[])
FILE*fp;
inti;
if((fp=fopen("
room.txt"
"
r"
))==NULL)
printf("
Failuretoopenscore.txt!
exit(0);
for(i=0;
!
feof(fp);
i++)
fscanf(fp,"
%5d"
room[i].roomid);
%6d"
room[i].price);
%15d"
room[i].tel);
%12s"
room[i].client_list.name);
%4d"
room[i].client_list.sex);
room[i].client_list.age);
%20s"
room[i].client_list.id);
%7d"
room[i].client_list.year);
room[i].client_list.month);
room[i].client_list.date);
fclose(fp);
returni;
//保存结构体数组信息到文件
voidsavefile(structHotelroom[],inti)
if((fp=fopen("
a"
{
}
fprintf(fp,"
%5d%6d%15d%12s%4d%6d%20s%7d%5d%5d"
room[i].roomid,
room[i].price,
room[i].tel,
room[i].client_list.name,
room[i].client_list.sex,
room[i].client_list.age,
room[i].client_list.id,
room[i].client_list.year,
room[i].client_list.month,
room[i].client_list.date);
//统计模块
voidtongji(structHotelroom[])
intn,x;
intyear,month,day,j,count=0;
x=readfile(room);
请选择统计方式:
1>
统计房客数,2>
统计某一天的房客数\n"
客房总数为:
%d\n"
x);
请输入具体时间:
%d%d%d"
year,&
month,&
day);
x;
if(room[j].client_list.year==year&
room[j].client_list.month==month&
room[j].client_list.date==day)
count++;
%d年%d月%d号的房客数为%d"
year,month,day,count);
//查询模块
voidchaxun(structHotelroom[])
intn,x,roomid,price,j;
charname[12],id[20];
按房间号查询请按1;
按价格查询请按2;
按用户姓名查询请按3;
按身份证号码查询请按4\n"
switch(n)
请输入房间号:
roomid);
if(room[j].roomid==roomid)
print(room,j);
请输入价格:
price);
if(room[j].price==price)
请输入客户姓名:
name);
if(strcmp(room[j].client_list.name,name)==0)
请输入身份证号码:
id);
if(strcmp(room[j].client_list.id,id)==0)
//打印
voidprint(structHotelroom[],intj)
%5d%6d%15d%12s%4d%6d%20s%7d%5d%5d\n"
room[j].roomid,
room[j].price,
room[j].tel,
room[j].client_list.name,
room[j].client_list.sex,
room[j].client_list.age,
room[j].client_list.id,
room[j].client_list.year,
room[j].client_list.month,
room[j].client_list.date);
voidprintmessage(structHotelroom[],intn)
intj;
n;
room[j].roomid,
room[j].price,
room[j].tel,
room[j].client_list.name,
room[j].client_list.sex,
room[j].client_list.age,
room[j].client_list.id,
room[j].client_list.year,
//修改模块
voidxiugai(structHotelroom[])
inti,m,roomid;
m=readfile(room);
请选择房间号:
for(i=0;
i<
m;
if(room[i].roomid==roomid)
room[i].client_list.year,&
room[i].client_list.month,&
saveall(room,m);
//保存所有信息到txt文件
voidsaveall(structHotelroom[],intm)
w"
for(j=0;
Room[j].client_list.sex,
5、调试与测试
主界面:
1、登记功能测试:
情况1:
客户需要入住的房间号被占用,提示已经被占用,重新选择
情况2:
选择的房间没有被占用,提示用户输入登记信息,登记完成后系统后台执行保存,弹出窗口询问是否继续登记下一个顾客
2、统计功能测试:
选择统计客房总数,系统返回总客房数
选择按日期统计,系统返回具体某天的客房总数
3、查询功能测试:
按房间号查询
按价格查询
情况3:
按用户名查询
情况4:
按身份证号查询
4、修改功能测试:
输入需要修改的房间后,系统提示用户重新写入房间信息
6、总结
本程序可通过键盘选择目录对应的功能,提供登记、查询、统计、修改四大功能。
优点:
客户信息通过txt文件保存,在下次运行程序时仍然能读取保存的信息。
不足:
功能尚不完善,没有添加退房功能;
用户操作界面需要美化,提高可操作性;
可以加入清屏功能,以便在用户在选择相关功能以后,不再显示菜单目录。
个人心得:
这是本学期第一次用C语言编写一个系统,实现比较完整的功能。
1、遇到的部分问题:
程序不能将信息正确从txt文档中读取,出现乱码。
原因:
读取函数和存储函数的读取/存储格式没有对应。
查询功能模块中按日期查询出现错误,只能正确读取最后一组数据的日期
每组数据之间没有空格符号,导致前一组和后一组数据的日期和房间号牵连到一块,导致读取错误。
更改读取和存储函数的格式。
1、通过实践,体会到了需求分析和结构设计流程等编程准备工作的重要性:
一个大的程序,不可能通过大脑的构思,一步就能完成,要想减少程序编写过程中遇到的思路错误,必须要在此之前构思好,清楚该实现什么功能,这个功能怎么实现,需要一些什么途径。
2、分而治之、信息隐藏的思想对于大型程序来说尤为重要,不但能减少程序中重复的代码,还能使程序结构和功能更加清晰,可读性更强。
3、关键地方要加以注释,以便日后能够读懂函数的程序的功能。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C语言程序设计 客房管理系统源码和报告 语言程序设计 客房 管理 系统 源码 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)