客房管理系统

C语言课程实习报告所在院系: 一— 一班级学号: 姓 名: 程序已存档:□是 □否扌旨导老师: 赵 曼 评 分: 二零一四年七月目录1. 题目与要求 ( 1)2. 功能实现设计 (2)2.1总体设计 (2)2.2详细设计 (2)2.2.1保存函数 (2)2.2.2读取函数 (3)2.3功能模块设计 (4)2.3.1 注册模块 (4)2.3.2统计模块 (5)2.3.3查询模块 (7)2.3.4修改模块 (9)2.4主函数 (11)3. 上机操作 ( 12)4. 结束语 (16)实习课题:客房管理系统1. 题目与要求:实现登记功能,要提供结构体的输入操作, 实现统计功能,要提供相应的统计操作, 实现查询功能,要提供查找操作, 实现修改功能,要提供修改操作; 另外还有提供键盘式菜单实现功能选择头文件:#include
其主要功能为:注册,统计,查询,修改功能'客房管理、系统系统系注册统计查询修改退出2.2详细设计:程序中需要用到的函数2.2.1保存函数用于将输入的数据保存到文本文件客户信息.txt文件中,实现数据的保存void save()FILE *fp;int i;if ((fp=fope n(" 客户信息.txt","a+"))==NULL) /*a+表示以读和追加方式打开文件客户信息.txt */{pri ntf("ca nnot ope n file\n");return;}for(i=0;i void read(){FILE *fp;int i;if((fp=fope n("客户信息.txt","r"))==NULL){pri ntf("\nCannot ope n file\n");return;}for(i=0;!feof(fp);i++) //!feof(fp) 文件读到结束时读取停止fsca nf(fp,"%s %s%d%s%d%d%d%d%s%d%s\n",&Room[i]. name,&Room[i].sex,& Room[i].age,&Room[i].ID_card,&Room[i].year,&Room[i].mo nth,&Room[i].date,&Room[i].Room」D,&Room[i].Tel,&Room[i].Price,&Room[i].Sig n,&now_ no);fclose(fp);}2.3 功能模块设计 2.3.1 注册模块 用于完成客户个人信息的输入功能并保存 本函数的功能为登记用户及房间 信息,包括姓名、性别、年龄、身份证、年份、月份、日期、房间电话及房间价 格系统依次分配房间号并定义此房间为非空void input(){int i=0,right,num;char as,sex[10];printf(" 顾客人数: ");seanf("%d人",&num); /输入顾客的人数do{printf("\t\t\t\t1. 录入宾客信息\n输入第%d宾客的信息\n",i+1);printf("\n 输入宾客姓名 :");gets(Room[i].name);do{printf("\n 输入宾客性别 :"); seanf("%s",&sex);if(strcmp(sex," 男")!=0&&strcmp(sex," 女")!=0) /* 判断输入的字符是否为“男”或“女” ,否则输出“输入有误! ”*/{printf(" 输入有误! ");right=1; getchar();} else right=0;strcpy(Room[i].sex,sex);} while(right==1);printf("\n 输入宾客的年龄 :");scanf("%d",&Room[i].age); printf("\n 输入宾客身份证号 :");scanf("%s",&Room[i].ID_card);printf("\n 输入宾客入住时间 :"); scanf("%d",&Room[i].year);scanf("%d",&Room[i].month); scanf("%d",&Room[i].date);printf("\n 输入宾客房间号 :"); scanf("%d",&Room[i].Room_ID);printf("\n 输入宾客房间电话 :"); scanf("%s",&Room[i].Tel);printf("\n 输入宾客房间价格 :"); scanf("%d",&Room[i].Price);printf("\n 输入该房间是否入住 (yes/no):"); scanf("%s",&Room[i].Sign); // 输入客户的个人信息 printf("\n\n");i++;now_no=i;printf(" 是否继续输入 ?(Y/N)"); // 判断是否继续输入 as=getch();system("cls");save();}while(as!='n'&&as!='N'); system("cls"); // 清屏}2.3.2 统计模块 用于统计总共入住的人数,并且可以统计某一天住了多少人以及收入多少 void record(){int i,j,y,m,d,s=0,money=0;char as;int n=0;read();do{printf("\n 客房入住总数 : ");fflush(stdin);for(j=0;Room[j].age!=0;j++)n=n+1;printf("%d 间 \n",n); // 统计一共入住的人数printf(" 输入查询日期 : "); // 按照日期统计入住人数及收入scanf("%d%d%d",&y,&m,&d);fflush(stdin);for(i=0;i<=NUM;i++)if(((Room[i].year==y)&&(Room[i].month==m)&&(Room[i].date==d)))// 判断输入的日期与数据库中的哪些日期相同{s=s+1;money=money+Room[i].Price;printf("\n 姓名:%s\n性别:%s\n年龄:%d\n身份证号:%s\n入住时间:%旳%4月%d0\n房间号码:%d\n电话号码:%s\n价格:%d\n是否入 住: %s\n",Room[i].name,Room[i].sex,Room[i].age,Room[i].ID_card,Room[i ].year,Room[i].month,Room[i].date,Room[i].Room_ID,Room[i].Tel,Room[i] .Price,Room[i].Sign);}printf("\n 该天客房入住总数:%d人\n",s);printf("该天共收入 %d%\n",money);printf("\t 按任意键返回主菜单 .");as=getch();system("cls");}while(!as);system("cls");}2.3.3 查询模块本函数的功能为输出查询功能菜单选项, 包括根据房间号查询、 根据姓名查 询。 系统根据输入的选项执行相应的函数void find(){int i,a,b;char str[20],as;read ();do{printf("\n 按以下条件查询: 1. 姓名 2. 房间号 3. 返回主菜单 \n 请选 择:");scanf("%d",&a);switch(a){case 1:do{printf(" 输入要查询的宾客姓名 :");fflush(stdin);gets(str);for(i=0;i 系统根据输入的选项修改用户相应的信息void modify(){int i,x;char str[20],as;printf(" 输入要修改的宾客姓名 :"); scanf("%s",&str);read ();do{ for(i=0;Room[i].age!=0;i++)if(!strcmp(Room[i].name,str)) {system("cls");printf("\n 姓名:%s\n性别:%s\n年龄:%d\n身份证号:%s\n入住时间:%旳%4月%d0\n房间号码:%d\n电话号码:%s\n价格:%d\n是否入 住: %s\n\n",Room[i].name,Room[i].sex,Room[i].age,Room[i].ID_card,Room [i].year,Room[i].month,Room[i].date,Room[i].Room_ID,Room[i].Tel,Room[ i].Price,Room[i].Sign);printf(" 请选择要修改的内容: \n1. 姓名 \t\t2. 性别 \t\t3. 年龄 \t\t4. 身份证号\n5.入住时间\t6.房间号\t7.客房电话\t8.价格\n请选择:");// 按照不同的选择修改相应的内容scanf("%d",&x);switch(x){case 1:printf("\n\t\t 输入新插入宾客信息 \n");printf("\n 输入宾客姓名 :"); scanf("%s",Room[i].name);break;case 2:printf("\n 输入宾客性别 :"); scanf("%s",&Room[i].sex);break;case 3:printf("\n 输入宾客的年龄 :"); scanf("%d",&Room[i].age);break;case 4:printf("\n 输入宾客身份证号 :");scanf("%s",&Room[i].ID_card);break;case 5:printf("\n 输入宾客入住时间 :"); scanf("%d",&Room[i].year); scanf("%d",&Room[i].month); scanf("%d",&Room[i].date);break;case 6:printf("\n 输入宾客房间号 :"); scanf("%d",&Room[i].Room_ID);break;case 7:printf("\n 输入宾客房间电话 :"); scanf("%s",&Room[i].Tel);break;case 8:printf("\n 输入宾客房间价格 :");scanf("%d",&Room[i].Price);case 9:system("exit");default:system("cls");}prin tf("\n");save();printf("\n 姓名:%s\n性别:%s\n年龄:%d\n身份证号:%s\n入住时间:%d 年%4月%d0\n房间号码:%d\n电话号码:%s\n价格:%d\n是否入住:%s\n",Room[i]. name,Room[i].sex,Room[i].age,Room[i].ID_card,Room[i].year,Room[i].m on th,Room[i].date,Room[i].Room_ID,Room[i].Tel,Room[i].Price,Room[i].Sig n);break;}as=getch();}while(!as);system("cls");}2. 4主函数显示各功能选项+ N输入n判断n是否是0-5Y根据n的值调用各功能模块函数void main() {int as; start:doprintf("\t***********************************");printf("\n\t\t 欢迎使用客房管理系统 \n");printf("\n\t\t| 1. 录入宾客信息 |\n\t\t| 2. 统计宾客信息|\n\t\t| 退出3. 查询宾客信息 |\n\t\t| 4. 修改宾客信息 |\n\t\t| 5.|\n"); printf("\t***********************************\n"); printf("\t\t 选择功能选项 : "); // 选择语句用于选择不同的模块 fflush(stdin);scanf("%d",&as); switch(as){case 1:system("cls");input();break;case 2:system("cls");record();break;case 3:system("cls");find();break;case 4:system("cls");modify();break; case 5:system("exit");exit(0);default:system("cls");goto start;}}while(1);}3. 上机操作下面事各个模块的界面图:3.1 主菜单= *MaJ"匚:' L 注「s\Adm i ni s-trator\D?5 Igo 丁肃谨文件凭\D ebjg i 音寿宜雯垂述.e: 在实习中遇到了许多的调试不出结果出乎意料的问题 在调试的过程中, 得 到了许多以后可以避免错误的经验 也得到了很多没有接触过的知识 这些都使 我获益匪浅C 语言是一门计算机语言, 如同其他计算机语言甚至日常交际中常说的外语 一样需要不断的练习和实践才能逐渐掌握并熟练运用 尤其是对于带有创造性的 编写一个较大 C 语言程序时更能凸现出这一点由于本人学习该语言理论知识 时间仓促加之课下没有进行大量的程序编写练习, 因此在编写及调试本程序过程 中难免遇到了诸多问题现就出现的这些问题及解决办法作简要分析4.1. 设计思路起初对于本程序的思路都是一片空白, 对于题目中要求实现的用户登记、 统 计、查询、修改功能不知如何实现,重新对书中有关循环、数组、结构体、文件 等知识进行了回顾, 并且读了一些相关例题 本程序包含用户登记、 统计、查询、 修改等四大功能其中用户登记功能包含用户姓名、性别、年龄、身份证、入住 年份、入住月份、入住日期、房间号、房间电话及房间价格;统计功能包含按性 别统计、按年龄统计及按入住时间 (年月日) 统计;查询功能包含按房间号查询、 按姓名查询及按性别查询;修改功能包含性别修改、年龄修改、入住年份修改、 入住月份修改及入住日期修改。 按题目的要求, 编写能实现相应功能的函数, 最 后再从主函数中调用这些函数来4.2. 联系实际在上机调试过程中经常出现输入未给出的选项, 此时系统会发生各种难以预 料的结果,为避免此类情况的发生, 又反复对程序代码进行了修改, 以便系统能 对输入的各种选项进行正确处理4.3. 代码细节在程序编译时常常会出现各种或多或少的错误提示, 其原因往往是程序代码 出现了一些细节上的简单错误,或是分号缺失, 或是大括号不对应, 或是未定义 变量等各种常见错误 这些错误虽不是致命性的严重失误但却影响了程序的编译 和连接,最终仍不能使程序正常执行为了能够消除这些错误,必须不断地、反 复地修改程序代码,并且不断的调试运行4.4 改进虽然实习所要求的程序完成了,但是其中仍存在许多不足,比如对于数据的 输入正确与否判断的较少统计模块中, 统计的数据较少,只有按时间统计当天 的入住人数和收入,没有按月,按性别等其他条件统计的功能并且在房间的入 住方面,只考虑了单人间的情况,没有考虑多人间的可能因此程序还有很多地 方有待改进。