1、 目 录 一、 课程设计题目3二、 运行环境( 软、 硬件环境) 3三、 算法设计的思想3四、 算法的流程图3五、 算法设计分析4六、 源代码4七、 运行结果分析10八、 收获及体会13一、 课程设计题目宾馆客房管理系统。二、 运行环境( 软、 硬件环境) 中文版Windows XP和Microsoft Visual C+ 6.0。三、 算法设计的思想1定义宾馆客房管理信息结构体Hotel-Info。2建立一个简易的选择菜单, 经过输入选择执行的动作。3主函数中, 用switch case 实现选择功能, 7项功能经过7个分支实现, 每个对应一个函数。4写函数, 包括Insert-插入, Am
2、end-修改, Demand-查询, Del-删除, Skim-浏览, Balance-结算。5源程序可运行之后, 将其数据、 信息输入到文档中, 使其能存档, 能够写入文件和读出文件。6对程序进行修改、 完善。写函数四、 算法的流程图联系文件开始 定义结构体Hotel-Info 修改、 完善建立选择菜单写主函数, 实现选择功能结束 图1 算法流程图五、 算法设计分析1.这是一个小型的管理系统, 使用结构体数组存储客房的信息。2一般的管理系统都应该具备插入, 修改, 查询, 删除, 浏览等功能, 经过使用一个简易菜单进行执行动作的选择。3.用函数实现模块化设计, 调理清晰, 使程序易读写。4.
3、把程序与文件联系, 使数据能存储在磁盘中, 更具实用性。六、 源代码1结构体struct Hotel_Infochar nameN,typeN,ID_cardN,in_timeN,leave_timeN;char idlyN; int prize,num,ad_payment;InfoN;2主函数int main()FILE *fp; int i=0; fp=fopen(d:hotel manage system.txt,r); /fscanf(fp,%d,&n);/for(i=0;in;i+)while(!feof(fp)int a;fscanf(fp,%d,&a);fscanf(fp, 客
4、房号: %d,&Infoi.num);fscanf(fp, 空闲情况: %s,Infoi.type);fscanf(fp, 客房类型: %s,Infoi.idly);fscanf(fp, 客房价格: %d,&Infoi.prize);fscanf(fp, 客户姓名: %s,Infoi.name);fscanf(fp, 身份证: %s,Infoi.ID_card);fscanf(fp, 预付款: %d,&Infoi.ad_payment);fscanf(fp, 入住时间: %s,Infoi.in_time);fscanf(fp, 退房时间: %s,Infoi.leave_time);i+;fcl
5、ose(fp);n=i-1;int m;doprintf(n);printf( *n);printf( 1登记。n);printf( 2修改。n);printf( 3查询。n);printf( 4删除。n);printf( 5浏览。n);printf( 6结算。n);printf( 7退出。n);printf( *n);scanf(%d,&m);switch(m)case 1: Insert(&count); break;case 2:Amend(count) ;break;case 3:Demand(count) ;break;case 4:Del(&count) ;break;case 5
6、:Skim(count) ;break;case 6:Balance(count) ;break;case 7:break;default:printf(错误选择! 请重选);break;while(m!=7);return 0;3 函数void Insert(int *count) /定义1插入函数int i=0,in_num;n=n+1;if(*count=N)printf(overflow!);return;FILE *fp; fp=fopen(d:hotel manage system.txt,a); fprintf(fp,%d,n);for(i=*count;iN;i+) print
7、f(编号: );scanf(%d,&in_num);int flag = 1;while(flag)flag=0;for(int ii=0;ii=N;ii+)if(Infoii.num=in_num)printf(已经有相同编号! n);scanf(%d,&in_num);flag=1;break; Infoi.num=in_num;printf(客房号: );scanf(%d,&Infoi.num);fprintf(fp, 客房号: %d,Infoi.num);printf(空闲情况: );scanf(%s,Infoi.idly);fprintf(fp, 空闲情况: %s,Infoi.idl
8、y);printf(客房类型: );scanf(%s,Infoi.type);fprintf(fp, 客房类型: %s,Infoi.type);printf(客房价格: );scanf(%d,&Infoi.prize);fprintf(fp, 客房价格: %d,Infoi.prize);printf(客户姓名: );scanf(%s,Infoi.name);fprintf(fp, 客户姓名: %s,Infoi.name);printf(身份证: );scanf(%s,Infoi.ID_card);fprintf(fp, 身份证: %s,Infoi.ID_card);printf(预付款: );
9、scanf(%d,&Infoi.ad_payment);fprintf(fp, 预付款: %d,Infoi.ad_payment);printf(入住时间: );scanf(%s,Infoi.in_time);fprintf(fp, 入住时间: %s,Infoi.in_time);printf(退房时间: );scanf(%s,Infoi.leave_time);fprintf(fp, 退房时间: %sn,Infoi.leave_time);break;fclose(fp);(*count)+;void Amend(int count) /定义2修改函数int i,num,payment,ta
10、g=0;char idlyN,nameN,ID_cardN,in_timeN,leave_timeN;printf(请输入要修改数据的编号: );scanf(%d,&num);for(i=0;in;i+)if(Infoi.num=num)tag=1;printf(空闲情况:%s,Infoi.idly);printf( 客人姓名:%s,Infoi.name);printf( 身份证:%s,Infoi.ID_card);printf( 入住时间:%s,Infoi.in_time);printf( 退房时间:%s,Infoi.leave_time);printf( 预付费用:%dn,Infoi.ad
11、_payment);printf(空闲情况:);scanf(%s,idly); printf(客人姓名:); scanf(%s,name); printf(身份证:);scanf(%s,ID_card); printf(入住时间:);scanf(%s,in_time); printf(退房时间:);scanf(%s,leave_time); printf(预付费用:);scanf(%d,&payment); strcpy(Infoi.idly,idly);strcpy(Infoi.name,name); strcpy(Infoi.ID_card,ID_card); strcpy(Infoi.i
12、n_time,in_time);strcpy(Infoi.leave_time,leave_time);Infoi.ad_payment=payment;FILE *fp; fp=fopen(d:hotel manage system.txt,w); for(i=0;in;i+)fprintf(fp,%d,i+1);fprintf(fp, 客房号: %d,Infoi.num);fprintf(fp, 空闲情况: %s,Infoi.idly);fprintf(fp, 客房类型: %s,Infoi.type);fprintf(fp, 客房价格: %d,Infoi.prize);fprintf(fp
13、, 客户姓名: %s,Infoi.name);fprintf(fp, 身份证: %s,Infoi.ID_card);fprintf(fp, 预付款: %d,Infoi.ad_payment);fprintf(fp, 入住时间: %s,Infoi.in_time);fprintf(fp, 退房时间: %sn,Infoi.leave_time); fclose(fp);if(!tag)printf(没有查询到可修改的数据! );void Demand(int count) /定义3查询函数int in_num,i=0,flag=1; printf(请输入要查询的客房号: );scanf(%d,&i
14、n_num);int tag=0;for(i=0;in;i+)if(Infoi.num=in_num)tag=1;printf(客房号:%dn,Infoi.num); printf(空闲情况:%sn,Infoi.idly);printf(客房类型:%sn,Infoi.type);printf(客房价格:%dn,Infoi.prize);printf(客人姓名:%sn,Infoi.name);printf(身份证:%sn,Infoi.ID_card);printf(入住时间:%sn,Infoi.in_time);printf(退房时间:%sn,Infoi.leave_time);printf(预
15、付费用:%dn,Infoi.ad_payment);flag=0;break;if(!tag)printf(没有查询到! );void Del(int *count) /定义4删除函数int i,j,num,flag=1,tag=0;printf(请输入要删除的客房号信息: );scanf(%d,&num);for(i=0;i*count&flag;i+)if(Infoi.num=num)for(j=i;j*count&flag;j+)Infoj=Infoj+1;Info*count-1.ad_payment = 0;strcpy(Info*count-1.ID_card,);strcpy(I
16、nfo*count-1.idly,);strcpy(Info*count-1.in_time,);strcpy(Info*count-1.leave_time,);strcpy(Info*count-1.name,);Info*count-1.num = 0;Info*count-1.prize = 0;strcpy(Info*count-1.type,);flag=0,tag=1;(*count)-;break;if(!tag)printf(没有查询到能够删除的信息! );n=n-1;FILE *fp; fp=fopen(d:hotel manage system.txt,w); for(i
17、=0;in;i+) fprintf(fp,%d,i+1);fprintf(fp, 客房号: %d,Infoi.num);fprintf(fp, 空闲情况: %s,Infoi.idly);fprintf(fp, 客房类型: %s,Infoi.type);fprintf(fp, 客房价格: %d,Infoi.prize);fprintf(fp, 客户姓名: %s,Infoi.name);fprintf(fp, 身份证: %s,Infoi.ID_card);fprintf(fp, 预付款: %d,Infoi.ad_payment);fprintf(fp, 入住时间: %s,Infoi.in_time
18、);fprintf(fp, 退房时间: %sn,Infoi.leave_time);fclose(fp);void Skim(int count) /定义5浏览函数int i,flag=1;printf(n);for(i=0;in;i+)printf(第%d条记录: n,i+1);printf(客房号:%dn,Infoi.num);printf(客房类型:%sn,Infoi.type);printf(%客房价格:%dn,Infoi.ad_payment);printf(空闲情况:%dn,Infoi.prize);printf(客人姓名:%sn,Infoi.idly);printf(客人身份证号
19、:%sn,Infoi.name);printf(入住时间:%sn,Infoi.ID_card);printf(退房时间:%sn,Infoi.in_time);printf(预付费用:%sn,Infoi.leave_time);printf(n);flag=0;/return; void Balance(int conut) /定义6结算函数int i,x,fee,time;printf(请输入要结算的客房号: );scanf(%d,&x);for(i=0;in;i+)if(Infoi.num=x)printf(住房时间为%s%s。n请输入住房时间: ,Infoi.in_time,Infoi.l
20、eave_time);scanf(%d,&time);fee=Infoi.ad_payment-time*Infoi.prize;printf(结余金额为%d,fee);break;elseprintf(编号输入错误, 请重新输入: );return;七、 运行结果分析1.运行程序后, 按提示选择相应功能。( 1) 。功能1登记。(图2)图2 登记数据( 2) 。功能2修改。(图3)图3 修改数据( 3) 功能3查询。(图4)图4查询信息( 3) 功能4删除。(图5)图5 删除信息( 5) 功能5浏览。(图6)图6 浏览信息( 6) 功能6结算。( 图7) 图7 结算余额2进入相应功能后, 进
21、行数据处理。处理后的数据会保存在磁盘中便于系统的运作和数据的存储。图83.信息能够在d:hotel manage system.txt 中查询到。八、 收获及体会对C语言在编写程序时的用处有了更明确的认识,懂得了编写C程序的一般法方步骤。最大的收获是, 编写程序时一定要有信心和勇气, 要相信自己一定能够把这个程序编写出来。分析问题做出算法, 想好思路, 在心里有个大致的框架, 然后按部就班的记下自己想到的每一点内容, 把写下的东西认真整理, 查缺补漏, 把一些细节的地方补上, 就这样一个貌似很难的程序就写出来了( 其实编程并不难, 关键是要投入, 要钻到里面去) 。下一步就是读程序了, 读程序时一定要小心仔细, 一条语句、 一条语句的读, 看是否能输出自己想要输出的结果, 如果发现错误要马上改过来, 再接着向下读, 直到把程序调试的完美无缺为至。