1、C语言客房管理系统课程设计姓名:*班级:1320603学号:*专业:电子信息工程学院:机械与电子工程学院*一、题目要求设计客房管理系统,要求由菜单进行管理。(1)有人住宿时,首先检查是否还有空位,无则拒绝要求。(2)还有空位置时,运行键入,并记录下房间号与身份证号,入住时间。(3)退房时,根据其入住时间进行收费。二、总体设计1.数据录入模块主要是登记函数,它包括记录客户的姓名、性别、年龄、身份证号码、入住时间、电话号码,以及房间号和房间单价。2.数据查询模块主要是查询在住的客户信息,也有查询退房后的客户住房记录。3.数据修改模块主要是修改已知的客户信息,它又有两个子模块,分别按照人名查询修改、
2、按照日期查询修改。此外,系统的退房模块和计费都基于数据修改,但是基本数据不会删除,会留下备份。四、源代码#include#include#include#include#define N 100struct client char name20; int sex; int age; char ID_card18;/*居民身份证*/ int year,month,day;/*入住时间*/ int reyear,remonth,reday;/*退房时间*/ int room_ID;/*房间号*/ char tel11; int price;/*住房单价*/ int sign;/*是否有人居住的标志
3、*/roomN;int r=0;/*r为全局变量*/void menu();void search();void search_one();void search_day();void search_historyday();void modify();void modify_one();void modify_day();void modify_s(int i);void save();void load_room();void regist();void printf_p(int i);void check_out();/*main函数*/int main() system(color 3
4、F); puts(nnnt*客房管理系统*n); puts(tt欢迎进入本系统.); puts(tt按任意键继续.); puts(nnnnnnnnnnnttttttBy曾学贵n); getch(); menu(); return 0;/*菜单函数*/void menu() system(cls); int n,w; do puts(nnnt*主菜单*nn); puts(ttt |(1).登记 |n); puts(ttt |(2).查询 |n); puts(ttt |(3).修改 |n); puts(ttt |(4).退房 |n); puts(ttt |(5).退出 |n); puts(nt*n
5、); printf(t请按下你选择的数字(1-5):); scanf(%d,&n); while(n5) printf(t输入错误,请重新输入:); scanf(%d,&n); w=0; while(w=1); switch(n) case 1:regist();break; case 2:search();break; case 3:modify();break; case 4:check_out();break; case 5:exit(0); /*注册函数*/void regist() system(cls); int n,i; printf(nnnn); printf(t要几间房?);
6、 scanf(%d,&n); for(i=r;ir+n;i+) printf(nt房间号:); scanf(%d,&roomi.room_ID); printf(t电话:); scanf(%s,roomi.tel); printf(t房间价格:); scanf(%d,&roomi.price); roomi.sign=1; printf(t名字:);scanf(%s,roomi.name); printf(t性别 (1 男|0 女);scanf(%d,&roomi.sex); printf(t年龄:);scanf(%d,&roomi.age); printf(t身份证号码:);scanf(%s
7、,roomi.ID_card); printf(t年:);scanf(%d,&roomi.year); printf(t月:);scanf(%d,&roomi.month); printf(t日:);scanf(%d,&roomi.day); r=r+n; save(); menu();/*保存函数*/void save() FILE *fp; int i; if(fp=fopen(Hotel.out,wb)=NULL) printf(ntt不能打开文件!n); return; for(i=0;i4|n1) printf(tt输入错误,请重新输入:); scanf(%d,&n); m=0; w
8、hile(m=1); switch(n) case 1:search_one();break; case 2:search_day();break; case 3:search_historyday();break; case 4:menu(); void search_one()/*查询个人*/ system(cls); int i,l,m,w=0; char s20; printf(nnnntt请输入要查询的人名:); scanf(%s,s); load_room(); for(i=0;ir;i+) if(strcmp(roomi.name,s)=0&roomi.sign=1) w=1;m
9、=i; if(w=1) printf_p(m); else printf(ntt这里没有记录!n); printf(ntt家下来你想做什么?n); printf(tt1).继续查询t2).返回n); printf(tt输入你的选择:); scanf(%d,&l); while(l2) printf(tt输入错误,请重新输入:); scanf(%d,&l); switch(l) case 1:search_one();break; case 2:search();break; default:break; void search_day()/*查询某日的使用情况*/ system(cls); i
10、nt i,l,m,a,b,c,w=0; printf(nnnntt请输入要查询的日期:n); printf(ntt年:);scanf(%d,&a); printf(tt月:);scanf(%d,&b); printf(tt日:);scanf(%d,&c); load_room(); for(i=0;ir;i+) if(roomi.year=a)&(roomi.month=b)&(roomi.day=c)&(roomi.sign=1) w=1;m=i;printf_p(m); if(w=0) printf(tt今天没有记录!n); printf(ntt接下来你想要做什么?n); printf(t
11、t1).继续查询t2).返回n); printf(tt请输入你的选择:); scanf(%d,&l); while(l2) printf(tt输入错误,请重新输入:); scanf(%d,&l); switch(l) case 1:search_day();break; case 2:search();break; default:break; void search_historyday()/*查询某日的历史使用情况*/ system(cls); int i,l,m,a,b,c,w=0; printf(nnnntt请输入要查询的日期: n); printf(ntt年:);scanf(%d,&
12、a); printf(tt月:);scanf(%d,&b); printf(tt日:);scanf(%d,&c); load_room(); for(i=0;ir;i+) if(roomi.year=a)&(roomi.month=b)&(roomi.day=c) w=1;m=i;printf_p(m); if(w=0) printf(tt今天没有记录!n); printf(ntt接下来你想要做什么?n); printf(tt1).继续查询t2).返回n); printf(tt请输入你的选择:); scanf(%d,&l); while(l2) printf(tt输入错误,请重新输入:); s
13、canf(%d,&l); switch(l) case 1:search_historyday();break; case 2:search();break; default:break; /*修改函数*/void modify() system(cls); int n,m; do puts(nntt*子菜单*n); puts(tttt1).按人名修改n); puts(tttt2).按日期修改n); puts(tttt3).返回主菜单n); puts(tt*n); puts(tt请按下你的选择(1-3):t); scanf(%d,&n); while(n3) printf(tt输入错误,请重新
14、输入:); scanf(%d,&n); m=0; while(m=1); switch(n) case 1:modify_one();break; case 2:modify_day();break; case 3:menu(); void modify_one()/*修改个人信息*/ system(cls); int i,m,l,w=0; char s20; puts(nnnntt请输入姓名:); scanf(%s,s); load_room(); for(i=0;ir;i+) if(strcmp(roomi.name,s)=0&roomi.sign =1) w=1;m=i; ; if(w=
15、1) printf_p(m); modify_s(m); save(); else printf(ntt这儿没有记录!n); printf(tt接下来你想要做什么?n); printf(tt1).继续修改t2).返回n); scanf(%d,&l); while(l2) printf(tt输入错误,请重新输入:); scanf(%d,&l); switch(l) case 1:modify_one();break; case 2:modify();break; default:break; void modify_day()/*修改某日信息*/ system(cls); int i,l,m,a
16、,b,c,w=0; printf(tt请输入日期:); printf(ntt年:);scanf(%d,&a); printf(tt月:);scanf(%d,&b); printf(tt日:);scanf(%d,&c); for(i=0;ir;i+) if(roomi.year=a)&(roomi.month=b)&(roomi.day=c)&roomi.sign=1) w=1;m=i; ; if(w=1) printf_p(m); modify_s(m); save(); else printf(tt今天没有记录!n); printf(tt接下来你想要做什么?n); printf(tt1).继
17、续修改t2).返回n); scanf(%d,&l); while(l2) printf(tt输入错误,请重新输入:); scanf(%d,&l); switch(l) case 1:modify_day();break; case 2:modify();break; default:break; void modify_s(int i)/*修改执行项*/ int a,q; char s20; printf(n输入你想要修改的选项:t); printf(tt1).姓名ntt2).性别ntt3).年龄ntt4).身份证号码ntt5).年ntt6).月ntt7).日ntt8).房间号ntt9).电话
18、ntt10).房间价格ntt11).不修改n); printf(tt请按下你的选择(1-11):t); scanf(%d,&q); while(q11) printf(tt输入错误,请重新输入:); scanf(%d,&q); switch(q) case 1:printf(tt请输入姓名:t);scanf(%s,s);strcpy(roomi.name,s);break; case 2:printf(tt请输入性别(1男0女):t);scanf(%d,&a);roomi.sex=a;break; case 3:printf(tt请输入年龄:t);scanf(%d,&a);roomi.age=
19、a;break; case 4:printf(tt请输入身份证号码:t);scanf(%s,s);strcpy(roomi.ID_card,s);break; case 5:printf(tt请输入年:t);scanf(%d,&a);roomi.year=a;break; case 6:printf(tt请输入月:t);scanf(%d,&a);roomi.month=a;break; case 7:printf(tt请输入日:t);scanf(%d,&a);roomi.day=a;break; case 8:printf(tt请输入房间号:t);scanf(%d,&a);roomi.room_ID=a;break; case 9:printf(tt请输入电话:t);scanf(%s,s);strcpy(roomi.tel,s);break; case 10:printf(tt请输入房间价格:t);scanf(%d,&a);roomi.price=a;break; case 11:modify();break; default:break; /*退房函数*/vo