客房管理系统C语言.docx
- 文档编号:30658702
- 上传时间:2023-08-19
- 格式:DOCX
- 页数:26
- 大小:206.44KB
客房管理系统C语言.docx
《客房管理系统C语言.docx》由会员分享,可在线阅读,更多相关《客房管理系统C语言.docx(26页珍藏版)》请在冰豆网上搜索。
客房管理系统C语言
三峡大学理学院2010级电子信息科学与技术专业
《高级语言程序设计》课程设计
说明书
设计题目:
客房管理系统
班级:
20101421
学号:
**********
*****
完成日期:
2011-11-23
一、设计任务……………………
(2)
二、需求分析……………………
(2)
三、系统模块图…………………
(2)
四、模块说明……………………(3)
五、用户说明…………………(18)
六、测试结果…………………(18)
七、设计小结…………………(19)
八、参考目录…………………(19)
一、设计任务:
客房管理系统
实现用户登记功能,要提供结构体的输入操作,实现统计功能,要提供相应的统计操作,实现查询功能,要提供查找操作,实现修改功能,要提供修改操作;另外还有提供键盘式菜单实现功能选择。
二、需求分析:
1.总体分析:
整个客房管理系统被设计为用户登记模块,统计模块,查询模块,和修改模块。
2.详细分析:
(1)用户登记模块提示用户输入自身信息以及客房信息,把数据存入Room数组中。
(2)统计模块18设置计数器,顺序遍历ROOM数组来实现,实现对房客数、某一天的房客数的统计。
(3)查询模块通过基本查找算法查找Room数组,可以按房间号、价格、房间标记、用户姓名、居民身份证查询。
(4)修改模块采用基本查找算法在数组找到要修改的数据。
三、系统模块图
根据需求分析,可以对这个系统的设计分为以下几个模块:
四、模块说明:
一个较大的C语言程序不外乎由多个函数组成,本程序也并不例外。
现就本程序中涉及的各个函数的代码和功能分别进行说明。
1、主函数部分:
程序:
voidmain()/**主函数**/
{
intn,w;
menu();
do
{
printf("\t\tPleasechoiceyounumber(1-5)");
scanf("%d",&n);
if(n<1||n>5)
w=1,getchar();
elsew=0;
}while(w==1);
switch(n)
{
case1:
regist();break;
case2:
stati();break;
case3:
search();break;
case4:
modify();break;
case5:
exit(0);
}
}
voidmenu()/**菜单函数**/
{printf("\t\t\t************客房管理系统************\n");
puts("\n\t\t\t
(1).登记\n");
puts("\t\t\t
(2).统计\n");
puts("\t\t\t(3).查询\n");
puts("\t\t\t(4).修改\n");
puts("\t\t\t(5).退出\n");
puts("\n\t***********************************************************\n");
}
voidreturn_confirm(void)
{
printf("\n按任意键返回……\n");
getchar();
}
#include"stdio.h"
#include"string.h"//在使用中要用到的字符串都包含在本文件中
#include"stdlib.h"
#include"math.h"
#defineNUM50
structClient
{
charName[20];
intSex;//famale0,male1;
intAge;
charID_card[20];/*居民身份证*/
intyear;
intmonth;
intdate;/*住店时间*/
};
structHotel
{
charRoom_ID[10];/*房间号*/
charTel[10];
intPrice;/*住房单价*/
intSign;
structClientClient_list;/*实现两个结构体的嵌套*/
}Room[NUM];
注:
menu函数能提供菜单方式选择功能,可以根据用户需要进入到所想要的操作模块中,此外把menu函数独立出来,可以方便随时对它进行调用,容易返回到系统界面。
并用结构体来存放客户信息。
2、各功能模块函数部分:
(1)输入模块:
[需求分析]对信息进行输入
程序:
voidregist()/**登记函数**/
{
voidprintf_one(inti);
voidsave(intn);
voidprintf_back();
intload();
voidprintf_face();
inti,n,c;
n=load();
do
{
for(i=0;i { if(Room[i].Sign==1) { printf("Room[%s]hasbeenfull\n",Room[i].Room_ID); } else { puts("\nregisternewrecord\n"); printf("\nRoom[%s]isempty",Room[i].Room_ID); printf("\npleaseenterRoom[%s]'sinformation",Room[i].Room_ID); puts("\npleaseentercustomer'sName\n"); scanf("%15s",&Room[i].Client_list.Name); printf("\npleaseenterSexandAge\n"); scanf("%3d%3d",&Room[i].Client_list.Sex,&Room[i].Client_list.Age); puts("\npleaseentercustomer'sID_card\n"); scanf("%20s",&Room[i].Client_list.ID_card); printf("\npleaseenteryearandmonthanddate\n"); scanf("%5d%5d%5d",&Room[i].Client_list.year,&Room[i].Client_list.month,&Room[i].Client_list.date); Room[i].Sign=1;//把房间标记为已满 printf_face(); printf_one(i); printf("\n\nAreyousure? \n\n\t1.sure\t2.cancleandagain\t3.Backwithoutsave[]\b\b"); scanf("%d",&c); if(c==1) {save(n); printf_back(); } elseif(c! =2)menu(); } } }while(c==2); return_confirm(); } intload() { FILE*fp; inti; if((fp=fopen("Hotel.txt","r"))==NULL) { printf("\nCannotopenfile\n"); exit(0); } for(i=0;! feof(fp);i++) fscanf(fp,"\n%s%s%d%d%s%d%d%s%d%d%d\n",&Room[i].Room_ID,&Room[i].Tel,&Room[i].Price, &Room[i].Sign,&Room[i].Client_list.Name,&Room[i].Client_list.Sex, &Room[i].Client_list.Age,&Room[i].Client_list.ID_card, &Room[i].Client_list.year,&Room[i].Client_list.month,&Room[i].Client_list.date); fclose(fp); return(i); } voidprintf_one(inti) { printf("\n%-5s%5s%5d%d",Room[i].Room_ID,Room[i].Tel,Room[i].Price,Room[i].Sign); printf("\n%-s%5d%5d%10s",Room[i].Client_list.Name,Room[i].Client_list.Sex,Room[i].Client_list.Age,Room[i].Client_list.ID_card); printf("\n%-5d%5d%5d\n",Room[i].Client_list.year,Room[i].Client_list.month,Room[i].Client_list.date); } voidsave(intn) { FILE*fp; inti; if((fp=fopen("Hotel.txt","w"))==NULL) { printf("\nCannotopenfile\n"); exit(0); } for(i=0;i fprintf(fp,"%-5s%-15s%-5d%-5d%-15s%-5d%-5d%-20s%-5d%-5d%-5d\n", Room[i].Room_ID,Room[i].Tel,Room[i].Price,Room[i].Sign, Room[i].Client_list.Name,Room[i].Client_list.Sex, Room[i].Client_list.Age,Room[i].Client_list.ID_card,Room[i].Client_list.year, Room[i].Client_list.month,Room[i].Client_list.date); fclose(fp); } voidprintf_face() { printf("\nRoom_IDTelPriceSign"); printf("\nNameSexAgeID_card"); printf("\nyearmonthdate"); } voidprintf_back() { intw; printf("\n\n\tSuccessful.^-^\n\n"); printf("Doyouwanttoback? \n\n\t1).Yes\t2).No: []\b\b"); scanf("%d",&w); if(w==1) menu(); } 本函数的功能为登记用户及房间信息,包括姓名、性别、年龄、年份、月份、日期及身份证、。 系统依次分配房间号并定义此房间为非空。 管理员可根据具体情况登记相应用户人数的信息。 在此申明由于本程序并未将用户信息存入磁盘,因此务必先登记用户信息再执行功能菜单中的其他功能。 (2)统计模块: [需求分析]该模块的功能是显示所有客户记录信息。 程序: voidstati()/***统计函数***/ { voidTime_stati(); voidRoom_ID_stati(); voidPrice_stati(); intc; do { puts("\n\nstatisticby=>\n\n1).Time2).Room_ID3)Price"); printf("Whichyouneed<1-3>? : []\b\b"); scanf("%d",&c); if(c>3||c<1) { puts("\nChoiceerrror! Pleaseagain! "); getchar(); } }while(c>3||c<1); switch(c) { case1: Time_stati();break; case2: Room_ID_stati();break; case3: Price_stati();break; } return_confirm(); } voidTime_stati()/******统计入住的时间*****/ { intn,i,k=0,w,w0=1,w2=0; structHotels; n=load(); do { do { w=-1; puts("\npleaseenterthetimethatyouwanttostatistic.\n"); puts("\npleaseentertheyear: "); scanf("%d",&s.Client_list.year); puts("\npleaseenterthemonth: "); scanf("%d",&s.Client_list.month); puts("\npleaseenterthedate: "); scanf("%d",&s.Client_list.date); for(i=0,k=0;i if(s.Client_list.year==Room[i].Client_list.year&&s.Client_list.month==Room[i].Client_list.month&&s.Client_list.date==Room[i].Client_list.date) { w=i; printf_face(); printf_one(i); k++; } printf("\nThereare%drecordersthisday! ",k); if(w==-1) { printf("\nNOexist! please.Entererror! ! "); printf("\nTherearenorecordersthisday! "); printf("\nDoyouwanttoretryanother? \n\n\t1).Yes2).Noandback3).Backtomenu[]\b\b"); scanf("%d",&w0); if(w0==2)stati(); elseif(w0! =1)menu(); } else {printf("\nSuccessful! ^_^^_^.\nEnteranothertime? \n\n\t1).Yes2).Backtomenu\t[]\b\b"); scanf("%d",&w2); if(w2! =1)menu(); } }while(w==-1&&w0==1); }while(w2==1); } voidRoom_ID_stati()/*******统计房间号******/ { intn,i,k=0,w,w0=1,w2=0; structHotels; n=load(); do { do { w=-1; puts("\npleaseentertheRoom_IDthatyouwanttostatistic.\n"); scanf("%s",&s.Room_ID); for(i=0,k=0;i if(strcmp(s.Room_ID,Room[i].Room_ID)==0) { w=i; printf_face(); printf_one(i); k++; } printf("\nThereare%drecordersinthisRoom! ",k); if(w==-1) { printf("\nNOexist! please.Entererror! ! "); printf("\nTherearenorecordersinthisRoom! "); printf("\nDoyouwanttoretryanother? \n\n\t1).Yes2).Noandback3).Backtomenu[]\b\b"); scanf("%d",&w0); if(w0==2)stati(); elseif(w0! =1)menu(); } else {printf("\nSuccessful! ^_^^_^.\nEnteranotherRoom_ID? \n\n\t1).Yes2).Backtomenu\t[]\b\b"); scanf("%d",&w2); if(w2! =1)menu(); } }while(w==-1&&w0==1); }while(w2==1); } voidPrice_stati()/*******统计房间单价******/ { intn,i,k=0,w,w0=1,w2=0; structHotels; n=load(); do { do { w=-1; puts("\npleaseentertheRoom'spricethatyouwanttostatistic.\n"); scanf("%d",&s.Price); for(i=0,k=0;i if(s.Price==Room[i].Price) { w=i; printf_face(); printf_one(i); k++; } printf("\nThereare%drecordersatthisprice! ",k); if(w==-1) { printf("\nNOexist! please.Entererror! ! "); printf("\nTherearenorecordersatthisprice! "); printf("\nDoyouwanttoretryanother? \n\n\t1).Yes2).Noandback3).Backtomenu[]\b\b"); scanf("%d",&w0); if(w0==2)stati(); elseif(w0! =1)menu(); } else {printf("\nSuccessful! .\nEnteranotherRoom'price? \n\n\t1).Yes2).Backtomenu\t[]\b\b"); scanf("%d",&w2); if(w2! =1)menu(); } }while(w==-1&&w0==1); }while(w2==1); } 本函数的功能为输出统计功能菜单选项,包括根据按性别统计、根据年龄统计及根据入住时间统计。 系统根据输入的选项执行相应的函数。 (3)查找模块 程序: voidsearch()/********查找函数********/ { inti,n,k,w1=1,w2,w3; structHotels; n=load(); do { w2=-1; do { k=-1; printf("\n\nEnterID_cardthatyouwanttosearch! ID_card: "); scanf("%s",&s.Client_list.ID_card); for(i=0;i if(strcmp(s.Client_list.ID_card,Room [i].Client_list.ID_card)==0) { k=i; w2=1; printf_one(k); break; } if(k==-1) { printf("\n\nNoexit! Please."); printf("\n\nAreyouagain? \n\t1).again2).Noandback[]\b\b"); scanf("%d",&w1); if(w1! =1)menu(); } }while(k==-1&&w1==1); if(w2==1) { printf("\n\nSuccessful.^_^.\n"); printf("\nWhatdoyouwanttodo? \n\t1).Searchanother2).Backtomenu[]\b\b"); scanf("%d",&w3); if(w3! =1)menu(); } }while(w3==1); } 本函数的功能为输出查询功能菜单选项,包括根据房间号查询、根据姓名查询及根据性别查询。 系统根据输入的选项执行相应的函数。 (4)修改模块 [需求分析]该模块的功能是插入客户记录信息并且不能覆盖原有客户信息。 程序: voidmodify()/********修改函数********/ { intmodify_date(inti,intk); structHotels; inti,n,k,w0=1,w1,w2=0; n=load(); do { k=-1; printf_face(); for(i=0;i { if((i! =0)&&(i%4)==0) { printf("\n\nRememberRoom_IDthatyouneedtomodify! Passanykeytocontinue..."); getchar(); puts("\n\n"); } printf
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 客房 管理 系统 语言