首页 c语言课程设计-酒店管理系统

c语言课程设计-酒店管理系统

举报
开通vip

c语言课程设计-酒店管理系统includ<stdioh>includ<stringh>includ<malloch>includ<stdlibh>includ<conioh>dfinLENsizof(structcustomr)结构体定义structroom{ charnum[10]; intpric;};structcustomr{ charnam[20]; charid[18]; chard1[11]; chard2[11]; structroomr; intdays; intm...

c语言课程设计-酒店管理系统
includ<stdioh>includ<stringh>includ<malloch>includ<stdlibh>includ<conioh>dfinLENsizof(structcustomr)结构体定义structroom{ charnum[10]; intpric;};structcustomr{ charnam[20]; charid[18]; chard1[11]; chard2[11]; structroomr; intdays; intmony; structcustomrnxt;};函数声明oidloadrc();从磁盘文件导入入住信息到内存oidcratrc();新建客户入住信息记录oidsarchroom();查询已入住的房间oidwritinfo();保存客户入住信息oidsarchrc();查询房间入住信息记录intcountday(chars1[],chars2[]);计算入住天数intaccount(chars1[],chars2[],int);计算住宿费用intchckdat(chars[]);判断日期是否合法oidstasticmony();统计某段时间内房间产生的住宿费oidxit0();退出oidlook();查看此系统的功能intmnuslct();菜单intchang1(chars[]);将字符格式的年份转换成数值格式的年份intchang2(chars[]);将字符格式的月份转换成数值格式的月份intchang3(chars[]);将字符格式的日转换成数值格式的日intchcknam(chara);判断名字是否合法链 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 操作所用结构体指针structcustomrhad=NULL,p1,p2,p3;定义结构体指针,hnd为头指针,p1为输入数据缓存空间指针,p2为尾指针客户入住信息记录保存标志全局变量intwritinfoflag=0;主函数intmain(){ printf(\n\t\t酒店登记与计费管理课程 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 \n); printf(\n\n\n\t\t\t作者:李义鑫\n); printf(\n\t\t\t班级:T11238\n); printf(\n\t\t\t联系方式:15871095490\n); printf(\n\n\n\t\t\t按车键进入);rwind(stdin); gtchar(); systm(cls); printf(\n\t欢迎使用酒店登记与计费管理系统\n); printf(\n\n\t\t\t按车键进入); rwind(stdin); gtchar(); systm(cls); loadrc(); for(;;) { systm(cls); switch(mnuslct()) { cas1:systm(cls);sarchroom();brak; cas2:systm(cls);cratrc();brak; cas3:systm(cls);sarchrc();brak; cas4:systm(cls);writinfo();brak; cas5:systm(cls);stasticmony();brak; cas6:systm(cls);look();brak; cas0:systm(cls);xit0();rturn0; dfault:{gtchar(); printf(\n选择错误,请正确输入您的选择(05):\n); printf(\n按车键返主菜单\n); gtchar(); gtchar(); systm(cls);清屏 } } } rturn0;}主菜单intmnuslct(){ intc; printf(\t\t菜单\n\n); printf(\t\t\t\t1查询空房间\n\n); printf(\t\t\t\t2新建客户入住信息\n\n); printf(\t\t\t\t3查询房间入住信息记录\n\n); printf(\t\t\t\t4保存客户入住记录\n\n); printf(\t\t\t\t5统计房间产生的费用\n\n); printf(\t\t\t\t6查看此系统的功能\n\n); printf(\t\t\t\t0退出\n\n); printf(\t\t\n\n); printf(\n请输入您的选择(05):); scanf(%d,c); rturnc;}从磁盘文件导入客户入住信息导内存oidloadrc(){ FILEfp; intn=0;p3=(structcustomr)malloc(LEN);开辟一个新单元 if((fp=fopn(c:\\1txt,r))==NULL)打开文件 { printf(\n\n\t\t文件不存在或无法打开\n\n\t\t按车键显示主菜单); rturn; } had=p1=(structcustomr)malloc(LEN);开辟一个新单元 p1>nxt=NULL; whil(fof(fp)) { n++; fscanf(fp,%s%s%s%s%s%d%d%d,p1>nam,p1>id,p1>d1,p1>d2,p1>rnum,p1>rpric,p1>days,p1>mony); if(p1>id[0]<'0'||p1>id[0]>'9') { n; brak; } p2=(structcustomr)malloc(LEN);开辟一个新单元 p1>nxt=p2; p3=p1; p1=p2; p1>nxt=NULL; } fr(p2); p3>nxt=NULL; printf(\n\n\t\t%d信息输入完毕,按车键返主菜单,n); rwind(stdin); gtchar(); systm(cls);清屏 writinfoflag=0;设置保存文件记录标志 if(fclos(fp))关闭文件 { printf(Cannotclosthfil\n); xit(0); }}查询空房间oidsarchroom(){chars1[11]; intyar,month,day;inty,m,d; p1=had; if(p1==NULL) { printf(\n\n客户入住信息记录为空\n); printf(\n按任意键返\n); rwind(stdin); gtchar(); systm(cls); rturn; } printf(\n\n\t\t请输入将要入住的日期(格式如:20120606):); scanf(%s,s1); rwind(stdin); whil(chckdat(s1)) { printf(\n\n入住日期格式输入错误,请重新输入入住日期(格式如20120606)\n); printf(入住日期:); scanf(%s,s1); } y=chang1(s1); m=chang2(s1); d=chang3(s1); printf(\n\t\t\t所有房间号如下:0123456789); printf(\n\t\t\t已入住的房间号如下:\n); whil(p1=NULL) { yar=chang1(p1>d2); month=chang2(p1>d2); day=chang3(p1>d2); if((y==yarm<month)||(y==yarm==monthd<day)) printf(\t\t\t\t\t%s\n,p1>rnum); p1=p1>nxt; } printf(\n\n\t\t\t\t按车键返); rwind(stdin); gtchar();}新建客户入住信息记录oidcratrc(){ if(had=0) { p3=had; whil(p3>nxt=NULL) p3=p3>nxt; gtchar(); printf(\n客户入住信息数据库已存在,新建入住信息将接在信息库的后面,按任意键继续\n); rwind(stdin); gtchar(); systm(cls);清屏 p3>nxt=p1=(structcustomr)malloc(LEN);开辟一个新单元 } ls had=p1=(structcustomr)malloc(LEN);开辟一个新单元 p1>nxt=NULL; 开始新建客户入住信息记录 printf(\n请按照以下格式逐项输入:\n); printf(\n\n\t\t\t客户姓名(nam<=10汉字):); scanf(%s,p1>nam); rwind(stdin);whil(chcknam(p1>nam)==0) { printf(\n\n名字格式错误,请重新输入(小于10汉字)\n); printf(客户名字:); scanf(%s,p1>nam); } whil(strln(p1>nam)>10) { printf(\n\n名字字数过长,请重新输入(小于10汉字)\n); printf(客户名字:); scanf(%s,p1>nam); } printf(\n\t\t\t身份证号(15或18位):); scanf(%s,p1>id); rwind(stdin); whil((strln(p1>id)=15)(strln(p1>id)=18)) { printf(\n\n身份证号格式输入有误,请重新输入身份证号(15或18位)\n); printf(身份证号:); scanf(%s,p1>id); } printf(\n\t\t\t入住日期(格式如20120606):); scanf(%s,p1>d1); rwind(stdin); whil(chckdat(p1>d1)) { printf(\n\n入住日期格式输入错误,请重新输入入住日期(格式如20120606)\n); printf(入住日期:); scanf(%s,p1>d1); } printf(\n\t\t\t退房日期(格式如20120606):); scanf(%s,p1>d2); rwind(stdin); whil(chckdat(p1>d2)) { printf(\n\n退房日期格式输入错误,请重新输入退房日期(格式如20120606)\n); printf(退房日期:); scanf(%s,p1>d2); } printf(\n\t\t\t房间号(09):); scanf(%s,p1>rnum); rwind(stdin); whil((p1>rnum[0]<'0'||p1>rnum[0]>'9')||strln(p1>rnum)=1) { printf(\n\n输入的房间号错误,请重新输入房间号(09)\n); printf(房间号:); scanf(%s,p1>rnum); } printf(\n\t\t\t房间价格(整数):); scanf(%d,p1>rpric);rwind(stdin); p1>nxt=NULL; p1>days=countday(p1>d1,p1>d2); p1>mony=account(p1>d1,p1>d2,p1>rpric); printf(\n\t\t\t入住的天数为:%d\n\n\t\t\t入住的费用为:%d\n,p1>days,p1>mony); printf(\n\n\t\t\t信息输入完毕,按任意键返); rwind(stdin); gtchar(); systm(cls);清屏 writinfoflag=1;清除保存记录标志}判断输入的日期是否合法intchckdat(chars[]){ intl=1,h=1,n=1,i=1,j=1,k=1; inty,m,d; intf; y=chang1(s);m=chang2(s);d=chang3(s); if((strln(s)=10)||(s[4]='')||(s[7]='')) l=0; if(m<=0m>12) h=0; if(((((y%4==0)(y%100=0))||(y%400==0))m==2)(d<=0||d>29)) n=0; if((((y%4=0)(y%400=0))m==2)(d<=0||d>=28)) i=0; if((m==1||m==3||m==5||m==7||m==8||m==10||m==12)(d<=0||d>31)) j=0; if((m==4||m==6||m==9||m==11)(d<=0||d>30)) k=0; f=lhnijk; rturnf;}计算入住天数intcountday(chars1[],chars2[]){ intm1,m2,d1,d2,y; intx,z; y=chang1(s1); m1=chang2(s1); m2=chang2(s2); d1=chang3(s1); d2=chang3(s2); z=m2m1; switch(z) { cas0:x=d2d1;brak; cas1: if((((y%4==0)(y%100=0))||(y%400==0))m1==2) x=(29d1)+d2; if(((y%4=0)(y%400=0))m1==2) x=(28d1)+d2; if(m1==1||m1==3||m1==5||m1==8||m1==10) x=(31d1)+d2; if(m1==4||m1==6||m1==9||m1==11) x=(30d1)+d2; brak; cas2: if((((y%4==0)(y%100=0))||(y%400==0))m1==1) x=(31d1)+29+d2; if(((y%4=0)(y%400=0))m1==1) x=(31d1)+28+d2; if((((y%4==0)(y%100=0))||(y%400==0))m1==2) x=(29d1)+31+d2; if(((y%4=0)(y%400=0))m1==2) x=(28d1)+31+d2; if(m1==3||m1==5||m1==8||m1==10) x=(31d1)+30+d2; if(m1==4||m1==6||m1==9) x=(30d1)+31+d2; if(m1==7) x=(31d1)+31+d2; brak; cas3: if((((y%4==0)(y%100=0))||(y%400==0))m1==1) x=(31d1)+29+31+d2; if(((y%4=0)(y%400=0))m1==1) x=(31d1)+28+31+d2; if((((y%4==0)(y%100=0))||(y%400==0))m1==2) x=(29d1)+31+30+d2; if(((y%4=0)(y%400=0))m1==2) x=(28d1)+31+30+d2; if(m1==3||m1==5||m1==7||m1==8) x=(31d1)+30+31+d2; if(m1==4||m1==9)x=(30d1)+31+30+d2; if(m1==6)x=(30d1)+31+31+d2; brak; cas4: if((((y%4==0)(y%100=0))||(y%400==0))m1==1) x=(31d1)+29+31+30+d2; if(((y%4=0)(y%400=0))m1==1) x=(31d1)+28+31+30+d2; if((((y%4==0)(y%100=0))||(y%400==0))m1==2) x=(29d1)+312+30+d2; if(((y%4=0)(y%400=0))m1==2) x=(28d1)+312+30+d2; if(m1==3||m1==8)x=(31d1)+31+302+d2; if(m1==4||m1==6)x=(30d1)+312+30+d2; if(m1==5||m1==7)x=(31d1)+312+30+d2; brak; cas5: if((((y%4==0)(y%100=0))||(y%400==0))m1==1) x=(31d1)+29+312+30+d2; if(((y%4=0)(y%400=0))m1==1) x=(31d1)+28+312+30+d2; if((((y%4==0)(y%100=0))||(y%400==0))m1==2) x=(29d1)+312+302+d2; if((((y%4==0)(y%100=0))||(y%400==0))m1==2) x=(28d1)+312+302+d2; if(m1==3||m1==5||m1==7)x=(31d1)+312+302+d2; if(m1==4||m1==6)x=(30d1)+313+30+d2; brak; cas6: if((((y%4==0)(y%100=0))||(y%400==0))m1==1) x=(31d1)+29+312+302+d2; if(((y%4=0)(y%400=0))m1==1) x=(31d1)+28+312+302+d2; if((((y%4==0)(y%100=0))||(y%400==0))m1==2) x=(29d1)+313+302+d2; if(((y%4=0)(y%400=0))m1==2) x=(28d1)+313+302+d2; if(m1==3||m1==5)x=(31d1)+313+302+d2; if(m1==4||m1==6)x=(30d1)+313+302+d2; brak; cas7: if((((y%4==0)(y%100=0))||(y%400==0))m1==1) x=(31d1)+29+313+302+d2; if(((y%4=0)(y%400=0))m1==1) x=(31d1)+28+313+302+d2; if((((y%4==0)(y%100=0))||(y%400==0))m1==2) x=(29d1)+314+302+d2; if(((y%4=0)(y%400=0))m1==2) x=(28d1)+314+302+d2; if(m1==3||m1==5)x=(31d1)+313+303+d2; if(m1==4)x=(30d1)+314+302+d2; brak; cas8: if((((y%4==0)(y%100=0))||(y%400==0))m1==1) x=(31d1)+29+314+302+d2; if(((y%4=0)(y%400=0))m1==1) x=(31d1)+28+314+302+d2; if((((y%4==0)(y%100=0))||(y%400==0))m1==2) x=(29d1)+314+303+d2; if(((y%4=0)(y%400=0))m1==2) x=(28d1)+314+303+d2; if(m1==3)x=(31d1)+314+303+d2; if(m1==4)x=(30d1)+314+303+d2; brak; cas9: if((((y%4==0)(y%100=0))||(y%400==0))m1==1) x=(31d1)+29+314+303+d2; if(((y%4=0)(y%400=0))m1==1) x=(31d1)+28+314+303+d2; if((((y%4==0)(y%100=0))||(y%400==0))m1==2) x=(29d1)+315+303+d2; if(((y%4=0)(y%400=0))m1==2) x=(28d1)+314+304+d2; if(m1==3)x=(31d1)+314+304+d2; brak; cas10: if((((y%4==0)(y%100=0))||(y%400==0))m1==1) x=(31d1)+29+315+303+d2; if(((y%4=0)(y%400=0))m1==1) x=(31d1)+28+315+303+d2; if((((y%4==0)(y%100=0))||(y%400==0))m1==2) x=(29d1)+315+304+d2; if(((y%4=0)(y%400=0))m1==2) x=(28d1)+315+304+d2; brak; cas11: if((((y%4==0)(y%100=0))||(y%400==0))m1==1) x=(31d1)+29+315+304+d2; if(((y%4=0)(y%400=0))m1==1) x=(31d1)+28+315+304+d2; brak; } rturnx;}计算住宿费用intaccount(chars1[],chars2[],int){ intmony1,t; t=countday(s1,s2); mony1=t; rturnmony1;}统计某时间段内房间产生的费用oidstasticmony(){ inta,b,c,g,h,i,j,k; inty1,y2; intmony2=0; chars1[10]; chars2[10]; printf(\n\t\t请输入开始统计的时间(格式如:20120606):); rwind(stdin); scanf(%s,s1); whil(chckdat(s1)) { printf(\n\n输入的开始统计时间段有误,请重新输入(格式如:20120606)); printf(\n开始统计时间:); scanf(%s,s1); rwind(stdin); } printf(\n\t\t请输入结束统计的时间(格式如:20120606):); rwind(stdin); scanf(%s,s2); whil(chckdat(s2)) { printf(\n\n输入的结束统计时间段有误,请重新输入(格式如:20120606)); printf(\n结束统计时间:); scanf(%s,s2); rwind(stdin); } y1=chang1(s1); y2=chang1(s2); a=chang2(s1); b=chang2(s2); h=chang3(s1); j=chang3(s2); whil(y1=y2||(y1==y2a>b)||(y1==y2a==bh>j)) { printf(\n输入的开始和统计时间先后有误,请重新输入); printf(\n请输入开始统计的时间(格式如:20120606):); rwind(stdin); scanf(%s,s1); whil(chckdat(s1)) { printf(\n\n输入的开始统计时间段有误,请重新输入(格式如:20120606)); printf(\n开始统计时间:); scanf(%s,s1); rwind(stdin); } printf(\n请输入结束统计的时间(格式如:20120606):); rwind(stdin); scanf(%s,s2); whil(chckdat(s2)) { printf(\n\n输入的结束统计时间段有误,请重新输入(格式如:20120606)); printf(\n结束统计时间:); scanf(%s,s1); rwind(stdin); } y1=chang1(s1); y2=chang1(s2); a=chang2(s1); b=chang2(s2); h=chang3(s1); j=chang3(s2); } p1=had; if(p1==NULL) { printf(\n\n客户入住信息记录为空\n); printf(\n按任意键返\n); rwind(stdin); gtchar(); systm(cls); } whil(p1=NULL) { c=chang2(p1>d1); g=chang2(p1>d2); i=chang3(p1>d1); k=chang3(p1>d2); if(((a>ca<g)(b>g||(b==gj>=k)))||(((a==ca<g)h<i)(b>g||(b==gj>=k)))|| (((a>ca==g)h<k)(b>g||(b==gj>=k)))||(((a==ca==g)h>ih<k)(b>g||(b==gj>=k)))) mony2=mony2+account(s1,p1>d2,p1>rpric); if((a<cb>g)||((a<cb==g)j>k)||((a==cb>g)h<i)||((a==gb==g)h<=ij>=k)) mony2=mony2+p1>mony; if(((b>cb<g)(a<c||(a==ch<=i)))||(((b==cb<g)j>i)(a<c||(a==ch<=i)))|| (((b>cb==g)j<k)(a<c||(a==ch<=i)))||(((b==cb==g)j>ij<k)(a<c||(a==ch<=i)))) mony2=mony2+account(p1>d1,s2,p1>rpric); if(((a>ca<g)(b<g||(b==gj<k)))||(((a==ca<g)h<i)(b<g||(b==gj<k)))|| (((a>ca==g)h<k)(b<g||(b==gj<k)))||(((a==ca==g)h>ih<k)(b<g||(b==gj<k)))) mony2=mony2+account(s1,s2,p1>rpric); p1=p1>nxt; } printf(\n\n\t\t\t该时间段内房间产生的费用为:%d\n,mony2); printf(\n\t\t\t\t按车键返); rwind(stdin); gtchar(); rturn;}查询房间入住信息记录oidsarchrc(){ charnum[5]; intf=0; p1=had; if(p1==NULL) { printf(\n\n客户入住信息为空\n); printf(\n按任意键返\n); rwind(stdin); gtchar(); systm(cls);清屏 rturn; } printf(\n\n\t\t\t请输入房间号(09):); rwind(stdin); scanf(%s,num);rwind(stdin); if(num[0]<'0'||num[0]>'9') { printf(输入的房间号有误,请重新输入房间号(09):); scanf(%s,num); } printf(\n\t\t\t该房间入住信息如下:\n\n); whil(p1=NULL) { if(strcmp(p1>rnum,num)==0) { f=1; printf(\t\t\t房间号:); printf(%s\n,p1>rnum); printf(\t\t\t客户姓名:); printf(%s\n,p1>nam); printf(\t\t\t入住日期:); printf(%s\n,p1>d1); printf(\t\t\t退房日期:); printf(%s\n,p1>d2); printf(\t\t\t房间价格:); printf(%d\n,p1>rpric); printf(\t\t\t入住天数:); printf(%d\n,p1>days); printf(\t\t\t住宿费用:); printf(%d\n,p1>mony); } p1=p1>nxt; } if(f==1) { printf(\n\t\t\t查询完毕,请按任意键返\n);rwind(stdin); gtchar(); } if(p1==NULLf==0) { systm(cls); printf(\n\n\t\t\t该房间入住信息为空\n); printf(\n\t\t\t按任意键返\n); rwind(stdin); gtchar(); systm(cls);清屏 rturn; }}保存客户入住信息记录oidwritinfo(){ FILEfp;定义文件指针 if(had==NULL) { printf(\n数据库中没有入住信息记录,按任意键返\n); rwind(stdin); gtchar(); systm(cls);清屏 rturn; } if(writinfoflag==0) { printf(\n数据库中入住信息记录已保存过,按任意键返\n); rwind(stdin); systm(cls);清屏 rturn; } if((fp=fopn(c:\\1txt,w))==NULL)打开文件指针 { printf(\n数据库中信息记录无法保存,按任意键返\n); rwind(stdin); systm(cls); rturn; } p1=had; whil(p1=NULL) { fprintf(fp,%s%s%s%s%s%d%d%d\n\n,p1>nam,p1>id, p1>d1,p1>d2,p1>rnum,p1>rpric,p1>days,p1>mony); p1=p1>nxt; } fclos(fp); printf(\n数据库中入住信息记录保存完毕,按任意键返\n); rwind(stdin); gtchar(); systm(cls);清屏 writinfoflag=0;设置保存信息记录标志 rturn;}将字符格式日期中的年转化成数字格式intchang1(chars[10]){ inty; y=(s[0]48)1000+(s[1]48)100+(s[2]48)10+(s[3]48)1; rturny;}将字符格式日期中的月年转化成数字格式intchang2(chars[]){ intm; m=(s[5]48)10+(s[6]48)1; rturnm;}将字符格式日期中的日转化成数字格式intchang3(chars[]){ intd; d=(s[8]48)10+(s[9]48)1; rturnd;}检查名字格式是否合法intchcknam(chara){ inti,f; for(i=0;a[i]='\0';i++) if(a[i]>=0) { f=0; brak; } ls f=1; rturnf;}查看此系统的功能oidlook(){ printf(\n\t\t\t此系统可实现的功能如下:\n); printf(\n1从键盘输入入住信息(包括:客户姓名、身份证号、开始入住和退房时间、房间号)\n); printf(\n2输入入住信息时,可根据入住和退房时间,自动计算天数\n); printf(\n3可以根据房间价格自动计算住宿费用\n); printf(\n4可以根据房间号,查询住宿情况\n); printf(\n5可以通过输入日期,查询已入住的房间号\n); printf(\n6由开始和结束时间统计时间段内房间产生的费用\n); printf(\n\n\n\t\t\t\t按车键返); rwind(stdin); gtchar(); rturn;}退出oidxit0(){ if(writinfoflag==1)修改过记录时,先保存,再退出 writinfo(); p1=had; whil(p1=NULL) { p2=p1>nxt; fr(p1); p1=p2; }}
本文档为【c语言课程设计-酒店管理系统】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_297927
暂无简介~
格式:doc
大小:20KB
软件:Word
页数:19
分类:互联网
上传时间:2017-04-14
浏览量:231