客房管理系统C语言.docx

上传人:b****7 文档编号:10672046 上传时间:2023-02-22 格式:DOCX 页数:27 大小:207.65KB
下载 相关 举报
客房管理系统C语言.docx_第1页
第1页 / 共27页
客房管理系统C语言.docx_第2页
第2页 / 共27页
客房管理系统C语言.docx_第3页
第3页 / 共27页
客房管理系统C语言.docx_第4页
第4页 / 共27页
客房管理系统C语言.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

客房管理系统C语言.docx

《客房管理系统C语言.docx》由会员分享,可在线阅读,更多相关《客房管理系统C语言.docx(27页珍藏版)》请在冰豆网上搜索。

客房管理系统C语言.docx

客房管理系统C语言

三峡大学理学院2010级电子信息科学与技术专业

《高级语言程序设计》课程设计

说明书

设计题目:

客房管理系统

班级:

20101421

学号:

2010142139

姓名:

徐晶

完成日期:

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");

}

pr

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 思想汇报心得体会

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1