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插入,Amend修改,Demand查询,Del-删除,Ski
2、m浏览,Balance-结算。5源程序可运行之后,将其数据、信息输入到文档中,使其能存档,可以写入文件和读出文件。6对程序进行修改、完善.写函数四、算法的流程图联系文件开始 定义结构体HotelInfo 修改、完善建立选择菜单写主函数,实现选择功能结束 图1 算法流程图五、算法设计分析1.这是一个小型的管理系统,使用结构体数组存储客房的信息.2一般的管理系统都应该具备插入,修改,查询,删除,浏览等功能,通过使用一个简易菜单进行执行动作的选择。3。用函数实现模块化设计,调理清晰,使程序易读写.4。把程序与文件联系,使数据能存储在磁盘中,更具实用性.六、源代码1结构体struct Hotel_In
3、fochar 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,” 客房号:d”,Infoi.num);fscanf(fp, 空闲情况:s,Infoi.type);
4、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+;fclose(fp);n=i1;int m;doprintf(”n);printf(” *n);printf( 1-登
5、记。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:Skim(count) ;break;case 6:Balance(count) ;br
6、eak;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+) printf(编号:);scanf(”d,&in_num);int flag = 1;wh
7、ile(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.idly);printf(”客房类型:);scanf(”%s,Infoi。type);f
8、printf(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(”预付款:);scanf(”d,Infoi。ad_payment);fprintf(fp,” 预付
9、款: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,tag=0;char idlyN,nameN,ID_cardN,in_timeN,leave_t
10、imeN;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_payment);printf(”空闲情况:);scanf(”%s,idly); pri
11、ntf(”客人姓名:); 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。in_time,in_time);strcpy(Infoi.leave_
12、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, 客户姓名:s,Infoi。name);fprintf(fp, 身份证
13、: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,in_num);int tag=0;for(i=0;in;i+)if(Infoi.num
14、=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(”预付费用:dn”,Infoi.ad_payment);flag=0;break;i
15、f(!tag)printf(”没有查询到!);void Del(int *count) /定义4-删除函数int i,j,num,flag=1,tag=0;printf(”请输入要删除的客房号信息:”);scanf(%d,num);for(i=0;icount&flag;i+)if(Infoi。num=num)for(j=i;jcount&flag;j+)Infoj=Infoj+1;Info*count-1。ad_payment = 0;strcpy(Info*count1.ID_card,”);strcpy(Info*count-1.idly,);strcpy(Infocount-1。in_
16、time,”);strcpy(Info*count-1。leave_time,);strcpy(Infocount1.name,);Info*count-1。num = 0;Infocount1.prize = 0;strcpy(Infocount-1。type,”);flag=0,tag=1;(*count);break;if(!tag)printf(没有查询到可以删除的信息!”);n=n1;FILE fp; fp=fopen(”d:hotel manage system.txt”,”w”); for(i=0;in;i+) fprintf(fp,”%d,i+1);fprintf(fp,” 客
17、房号:%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);fprintf(fp,” 退房时间:%sn”,Infoi。leave_time);
18、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(客人身份证号:sn”,Infoi。name);printf(”入住时间:%sn,Inf
19、oi。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。leave_time);scanf(”d”,&time);fee=
20、Infoi。ad_payment-timeInfoi。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进入相应功能后,进行数据处理。处理后的数据会保存在磁盘中便于系统的运作和数据的存储.图83。信息可以在d:ho
21、tel manage system。txt 中查询到。八、收获及体会对C语言在编写程序时的用处有了更明确的认识,懂得了编写C程序的一般法方步骤。最大的收获是,编写程序时一定要有信心和勇气,要相信自己一定可以把这个程序编写出来。分析问题做出算法,想好思路,在心里有个大致的框架,然后按部就班的记下自己想到的每一点内容,把写下的东西认真整理,查缺补漏,把一些细节的地方补上,就这样一个貌似很难的程序就写出来了(其实编程并不难,关键是要投入,要钻到里面去)。下一步就是读程序了,读程序时一定要小心仔细,一条语句、一条语句的读,看是否能输出自己想要输出的结果,如果发现错误要马上改过来,再接着向下读,直到把程序调试的完美无缺为至。