《2022年c语言课程设计--客房管理 .pdf》由会员分享,可在线阅读,更多相关《2022年c语言课程设计--客房管理 .pdf(26页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、* 实践教学* 兰州理工大学计算机与通信学院2011 年春季学期C 程序设计课程设计题目:宾馆客房管理系统专业班级:姓名:学号:指导教师:成绩:_名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 26 页 - - - - - - - - - 摘要此次 C语言课程设计我选择的是客房管理系统设计,系统设计采用 C语言在Visual C+ 6.0下编译而成。客房管理系统包括客户基本信息的录入、统计、查询、修改功能。系统开发由分析、 设计、实施、调试和测试等阶段组成, 其中信息管理
2、为开发的重点。在程序设计中结构体的调用与文件的读写为编译的重点部分。关键词 :C 语言、信息管理、结构体、编译名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 26 页 - - - - - - - - - 目录一、需求分析 . 1 二、总体设计 . 2 三、详细设计 . 3 1、数据定义 . 3 2、算法流程图 . 4 四、编码 . 8 五、测试 . 9 六、 设计总结 .13 致谢. 14 参考文献 . 15 附录.16名师资料总结 - - -精品资料欢迎下载 - - -
3、 - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 26 页 - - - - - - - - - 1 一、需求分析随着信息技术的发展和人们对酒店客房的要求越来越高,各大酒店客房传统的手工已经不能适应当前酒店客房管理发展的需要,而采用全新的计算机化的管理可以有效提高酒店客房管理的水平和工作效率。各酒店为了提高管理水平,增强竞争力和降低成本,为客户提供更优质的服务,有必要开发一个全新的计算机酒店客房管理系统,进行准确、快捷、方便地管理。使用该酒店客房管理系统可以提高酒店客房管理水平, 把大量繁琐的工作简单化, 能够有效地减少人力物
4、力资源 ,具体有以下好处:电脑收银、打印帐单:快速准确,减少宾客等待时间,并可杜绝收银过程中的舞弊现象。高效的客房管理: 客户可以预订客房, 酒店的管理人员可以随时查看酒店内客房的入住情况、修改客房信息等操作。提高决策依据:管理者可以随时了解经营情况,以制定相应的经营方针。减轻员工的工作负担:从而使员工把更多的精力放在提高为宾客服务的质量上。简单、方便地保存和查询历史资料。树立良好的酒店形象。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 26 页 - - - - - -
5、 - - - 2 二、总体设计根据需求分析,可以对这个系统的设计分为以下几个模块:核心数据流程图维修信息客房信息客房信息客房状态客人信息入住登记帐务信息入住信息客户信息管理系统数据输入数据统计数据查询数据修改数据删除客人房间现开预定退房入住财务调整房间提醒维修 /报修名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 26 页 - - - - - - - - - 3 三、详细设计1、数据定义int z81=0; int j,s; FILE *fp; struct date i
6、nt month; int day; int year;struct hotel int price; int room_ID; struct client char name20; int sex; int age; char ID_card20; int count; struct date start; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 26 页 - - - - - - - - - 4 2、算法流程图1)保存函数 Save() 的算法流程图:FILE
7、*fp; (fp=fopen(outfile,wb)=NULL printf(nSaving file.n); printf(can not open filen); p!=NULL fclose(fp); fwrite(p,sizeof(SALARY),1,fp); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 26 页 - - - - - - - - - 5 2)入住登记功能流程图 : 顾客订房了?是否输入顾客姓名和身份证,查询该记录取得该顾客的住房编号取得该顾客的
8、预定住房天数,并根据住房编号计算住房费用收费,设置该顾客的住房费,修改该住房为已入住状态(state=2) 构造一个新的顾客对象,设置住房天数和住房标准根据该住房标准查询到一个空的房间,然后设置该顾客的住房编号,房间状态为已入住状态 (state=2) ,同时收取住房费顾客数加1 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 26 页 - - - - - - - - - 6 3)退房结算功能流程图 : 退房输入客户姓名和身份证号获取该客户实际入住天数获取客户的实际费用预
9、 交 费 用 是 否 够 支付?退还余款退房完成入住客户数减1补齐欠款账目核算完毕名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 26 页 - - - - - - - - - 7 4)信息查询功能流程图 : 询查息信选择内容查询进 入 客 户 信 息查询进 入 房 间 信 息查询获取客户相关信息获取客房预定、入 住 和 空 余 信息显示预定、入住和空房对应的房号按姓名查询按身份证号查询输入客户姓名输入身份证号显 示 客 户 相 关信息查完退出查询名师资料总结 - - -精
10、品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 26 页 - - - - - - - - - 8 四、编码struct hotel int price; int room_ID; struct client char name20; int sex; int age; char ID_card20; int count; struct date start; personal; roomM; /定义全局结构体变量,且里面又调用两个结构体int fflush( fp); /声明刷新函数fflush
11、( fp), 且指向指针变量指向的位置void save(); void search_situ( ); /声明查看客房入住情况函数void regist_infor( ); /声明客房登记入住函数void modify_infor( ); /声明客房信息修改函数函数void modify_one( ); /声明修改客房信息函数中的修改个人函数void modify_hotel( ); /声明修改客房信息函数中的修改客房函数void disp_money( ); /声明显示入住费用函数int fflush( fp); /声明刷新函数fflush( fp), 且指向指针变量指向的位置void s
12、ave(); void search_situ( ); /声明查看客房入住情况函数void regist_infor( ); /声明客房登记入住函数void modify_infor( ); /声明客房信息修改函数函数void modify_one( ); /声明修改客房信息函数中的修改个人函数void modify_hotel( ); /声明修改客房信息函数中的修改客房函数void disp_money( ); /声明显示入住费用函数名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第
13、11 页,共 26 页 - - - - - - - - - 9 五、测试1. 主菜单名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 26 页 - - - - - - - - - 10 2.登记入住信息3.查看客房入住情况名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 26 页 - - - - - - - - - 11 4.修改客房信息1.5.修改
14、客户信息名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 14 页,共 26 页 - - - - - - - - - 12 6.显示入住费用名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 15 页,共 26 页 - - - - - - - - - 13 六、设计总结通过这一个多星期的课程设计,我学到了很多很多。 不仅是在知识上, 也表现在了各个方面。首先,在设计的过程中,我发
15、现我已经遗忘了很多上星期学习过的C 语言知识,也发现了原来学习中的不少漏洞。有不少地方的树叶还是新的,那方面的知识自然还没有吃透。 比如结构体的定义已经不是很熟,字符串数组也不太能熟练运用了, 还有就是指向数组和字符串的指针也不是很熟了。在编写项目程序的过程中, 我不断的发现自己的不足并努力提高,在原来的基础上对C语言有了更进一步的理解。其次就是我发现学习不是一个人的事儿。在与同学们的讨论中我常常会在一个函数的处理上出现新颖的点子, 比如最后那个让一段字符串晃来晃去的小功能就是我在和同学讨论在主界面何时使用刷屏时的意外的收获。还有有时用gets() 会读入一个空串。然后在它前面加个getcha
16、r()来获取走这个空串也是同学无心插柳的结果。当然这个后来被老师(fflush(stdin)清除输入缓冲区函数)更好的方法所取代。再有就是我们编程不能光是一个或者几个人在那儿空想。还有有时想一个复杂的算法, 迷茫了三四天只想出了大致结构。最后决定上网找资料, 不查不知道,一查大吃一惊, 不但自己的想法比比皆是, 比自己的想法更完美更合理的多得看都看不完。此时真是自愧不如,如早从网上借鉴,集大家之所成,加上自己的修改完善, 早已做出了更好的算法和系统了。现在才知道, 一个人的智慧敌不过千万人智慧的集成,能借鉴的尽量借鉴, 然后再修改完善, 增加自己所需的功能。完成设计后, 我觉得收获不少, 而且
17、这是自己首次应用所学知识做出了这个宾馆客房管理系统, 以前从未做过这样大 (这是对我而言, 在专业人仕看来是小菜一碟)的程序,多少心里有点甜美的感觉名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 16 页,共 26 页 - - - - - - - - - 14 致谢这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,最后在老师的辛勤指导下,终于游逆而解。同时,在老师的身上我学得到很多实用的知识,在次我表示感谢! 同时,对给过我帮助的所有同学和指导老师再次表示忠心的感谢!名师资料总
18、结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 17 页,共 26 页 - - - - - - - - - 15 参考文献1姜灵芝,余健 . C 语言课程设计案例精编 . 北京: 清华大学出版社 ,2008 2王新,孙雷 . C 语言课程设计 . 北京: 清华大学出版社 ,2009 3游洪跃、彭骏、谭斌 .C 语言程序设计实验与课程设计教程. 北京: 清华大学出版社 ,2011 4王连相 .C/C+程序设计上机指导与测试 . 北京: 中国铁道出版社, 2006 5C语言函数手册,机械工业出版社
19、,1999 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 18 页,共 26 页 - - - - - - - - - 16 附录:#include #include /在使用中要用到的字符串都包含在本文件中#include /exit() 函数就包含在此文件中#define M 81 int z81=0; /定义一个数组存放使用的房间的标记的信息,且初始化为0 int j,s; /定义两个全局变量FILE *fp; /定义一个指向文件的指针变量struct date int mon
20、th; int day; int year; final; struct hotel int price; int room_ID; struct client char name20; int sex; int age; char ID_card20; int count; struct date start; personal; roomM; /定义全局结构体变量,且里面又调用两个结构体int fflush( fp); /声明刷新函数fflush( fp) ,且指向指针变量指向的位置void save(); void search_situ( ); /声明查看客房入住情况函数void re
21、gist_infor( ); /声明客房登记入住函数void modify_infor( ); /声明客房信息修改函数函数void modify_one( ); /声明修改客房信息函数中的修改个人函数void modify_hotel( ); /声明修改客房信息函数中的修改客房函数void disp_money( ); /声明显示入住费用函数int main() int menu(); /声明主菜单函数void print_star(); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - -
22、第 19 页,共 26 页 - - - - - - - - - 17 void print_message(); printf(nnnnn); print_star(); printf(n); print_message(); printf(n); print_star(); menu(); /把主菜单用函数来实现save(); return 0; void print_star() int i; for(i=1;i30;i+) printf(t*); void print_message() printf(tttt欢迎使用客房管理系统n); menu() int n; do printf(n
23、); printf(tt*菜单 *nnn); printf(tttt1: 查看客房入住情况nnn); printf(tttt2: 登记入住信息 nnn); printf(tttt3: 修改客房信息 nnn); printf(tttt4: 显示入住费用 nnn); printf(tttt5: 退出 nnn); printf(tttt6: 返回 nnn); printf(tt*菜单 *n); printf(nnttt 请选择输入选项123456:n); scanf(%d,&n); while(n6) printf( 请重新输入选项!); scanf(%d,&n); 名师资料总结 - - -精品资料
24、欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 20 页,共 26 页 - - - - - - - - - 18 switch(n) case 1:search_situ();break; /调用查看函数case 2:regist_infor();break; /调用登记函数case 3:modify_infor();break; /调用修改函数case 4:disp_money();break; /调用显示入住费用函数case 5:exit(0); case 6:break; while(n!=6); scanf
25、(%d,&n); return 0; void search_situ( ) /查看函数 int g,count=0; for(g=1;g=80;g+) if(zg=0) +count; else if(zg=1) printf(n 正在使用的房间号:%d,g); printf(nn未使用的房间数 :%d,count); /通过循环输出未使用的房间数printf(nn); printf(n 请输入需查询的房间号:n); /查询输入的房间号的信息,且输出该房间的相关信息scanf(%d,&s); if(zs=1) printf( 姓名 :%s,rooms.personal.name); prin
26、tf(n 性别 (其中: 1 表示男, 2 表示女 !):%d,rooms.personal.sex); printf(n 年龄 :%d,rooms.personal.age); printf(n 身份证号 :%s,rooms.personal.ID_card); printf(n 入住年份 :%d,rooms.personal.start.year); printf( 月:%d,rooms.personal.start.month); printf( 日:%d,rooms.personal.start.day); printf(n 房间号 :%d,rooms.room_ID); printf
27、(n 客房单价 :%d,rooms.price); printf(n入住人数 :%d,rooms.personal.count); menu(); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 21 页,共 26 页 - - - - - - - - - 19 else printf( 该房间未被使用!); save(); /调用保存函数 void regist_infor( ) / 登记函数 printf( 请输入登记相关信息:n); printf(n 房间号: ); scanf(
28、%d,&j); roomj.room_ID=j; printf(n 姓名: ); scanf(%s,&roomj.personal.name); printf(n 性别 (其中: 1 表示男, 2 表示女 !):); scanf(%d,&roomj.personal.sex); printf(n 年龄: ); scanf(%d,&roomj.personal.age); printf(n 身份证号: ); scanf(%s,&roomj.personal.ID_card); printf(n 入住年份: ); scanf(%d,&roomj.personal.start.year); prin
29、tf( 月:); scanf(%d,&roomj.personal.start.month); printf( 日:); scanf(%d,&roomj.personal.start.day); printf(n 客房单价: ); scanf(%d,&roomj.price); printf( 请输入入住人数 n); scanf(%d,&roomj.personal.count); zj=1; /标记使用的房间为1 save(); void modify_infor( ) /修改函数 int r,m; do printf(ttt *菜单 *nnn); printf(ttttt 1:修改客户信息
30、 nnn); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 22 页,共 26 页 - - - - - - - - - 20 printf(ttttt 2:修改客房信息 nnn); printf(ttttt 3:menu()nnn); printf(ttttt4:退出 nnn); printf(ttt *nnn); printf(ttt 请选择输入选项 1234:n); scanf(%d,&m); if(m3) r=1;getchar(); else r=0; while(r=1)
31、; switch(m) case 1:modify_one();break; case 2:modify_hotel();break; case 3:menu(); case 4:exit(0); save(); void modify_one() /修改个人信息函数 int q; char a20; printf(n 请选择您要修改的个人选项n); printf(1: 姓名 2:性别 (其中: 1 表示男, 2 表示女 !) 3: 年龄4:身份证号5:入住年份6:入住月份7入住日8:入住人数 n); printf(t请选择输入选项 12345678:nbb); scanf(%d,&q); s
32、witch(q) int t,p; char k; case 1:printf( 请输入新名字 n); for(t=0;t20;t+)scanf(%s,&at); strcpy(roomj.personal.name,a);break; case 2:printf( 请选择新性别 (其中: 1 表示男, 2 表示女 !)n); scanf(%d,&k);roomj.personal.sex=k;break; case 3:printf( 请输入新年龄 n); scanf(%d,&p);roomj.personal.age=p;break; 名师资料总结 - - -精品资料欢迎下载 - - -
33、- - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 23 页,共 26 页 - - - - - - - - - 21 case 4:printf( 请输入新身份证号n); scanf(%d,&p);roomj.personal.ID_card20=p;break; case 5:printf( 请输入新年份 n); scanf(%d,&p);roomj.personal.start.year=p;break; case 6:printf( 请输入新月份 n); scanf(%d,&p);roomj.personal.start.month=
34、p;break; case 7:printf( 请输入新日子 n); scanf(%d,&p);roomj.personal.start.day=p;break; case 8:printf( 请输入新入住人数n); scanf(%d,&p);roomj.personal.count=p;break; menu(); void modify_hotel() /修改客房信息函数 int l; printf(ntttt请选择您要修改的客房信息nn); printf(tttt1: 房间号 nn tttt2: 客房单价 nn tttt3: 入住人数 nn tttt4: 返回nn); printf(tt
35、t请选择输入选项 1234:nbb); scanf(%d,&l); switch(l) case 1:printf( 请输入旧房号 n); scanf(%d,&j); printf( 请输入新房号 n); scanf(%d,&s); strcpy(rooms.personal.name,roomj.personal.name); rooms.personal.sex=roomj.personal.sex; roomj.personal.sex=0; rooms.personal.age=roomj.personal.age; roomj.personal.age=0; strcpy(rooms
36、.personal.ID_card,roomj.personal.ID_card); rooms.personal.start.year=roomj.personal.start.year; roomj.personal.start.year=0; rooms.personal.start.month=roomj.personal.start.month; roomj.personal.start.month=0; rooms.personal.start.day=roomj.personal.start.day; roomj.personal.start.day=0; rooms.room_
37、ID=s; rooms.price=roomj.price; rooms.personal.count=roomj.personal.count; zs=1; zj=0; break; case 2:printf( 请输入房号 n); scanf(%d,&s); printf( 请输入新单价 n); scanf(%d,&s);rooms.price=s;break; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 24 页,共 26 页 - - - - - - - - - 22 ca
38、se 3:printf( 请输入房号 n); scanf(%d,&s); printf( 请输入新入住人数n); scanf(%d,&s); rooms.personal.count=s;break; case 4:break; save(); menu(); void disp_money( ) /显示入住费用函数 int i,sum; printf( 请输入房间号 ;n); scanf(%d,&roomj.room_ID); printf(n 入住年份 :%d,roomj.personal.start.year); printf( 月:%d,roomj.personal.start.mon
39、th); printf( 日:%d,roomj.personal.start.day); printf( 房间单价为 :); printf(%d,roomj.price); printf(n 请输入退房时间:n); printf( 请输入年份 :); scanf(%d,&final.year); printf( 请输入月份 :); scanf(%d,&final.month); printf( 请输入日 :); scanf(%d,&final.day); printf(n 请输入住房天数:n); scanf(%d,&i); sum=roomj.price*i; printf( 总费用 sum=
40、%dn,sum); save(); menu(); void save() /保存函数 FILE *fp; int i; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 25 页,共 26 页 - - - - - - - - - 23 if(fp=fopen( 客房管理 .txt,w+)=NULL) /打开输出文件 客房管理 .txt printf(cannot open filen); exit(0); for(i=0;iM;i+) if(fwrite(&roomi), sizeof(roomM),1,fp)!=1) printf(file write errorn); fflush(fp); fclose(fp); /关闭文件 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 26 页,共 26 页 - - - - - - - - -