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-删除,Skim
2、-浏览,Balance-结算。5源程序可运行以后,将其数据、信息输入到文档中,使其能存档,能够写入文件和读出文件。6对程序进行修改、完善。写函数四、算法步骤图联络文件开始 定义结构体Hotel-Info 修改、完善建立选择菜单写主函数,实现选择功效结束 图1 算法步骤图五、算法设计分析1.这是一个小型管理系统,使用结构体数组存放客房信息。2通常管理系统全部应该含有插入,修改,查询,删除,浏览等功效,经过使用一个简易菜单进行实施动作选择。3.用函数实现模块化设计,调理清楚,使程序易读写。4.把程序和文件联络,使数据能存放在磁盘中,更具实用性。六、源代码1结构体struct Hotel_Infoc
3、har 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);fscanf(
4、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=i-1;int m;doprintf(n);printf( *n);printf( 1登记。n);printf
5、( 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) ;break;case 7:break;def
6、ault: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;while(flag)flag=0;for(int ii
7、=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);fprintf(fp, 客房类型:%s,Infoi.type);pr
8、intf(客房价格:);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, 预付款:%d,Infoi.ad_payment);printf(入住时间:);sc
9、anf(%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_timeN;printf(请输入要修改数据编号:);scanf(%d,&num);
10、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); printf(客人姓名:); scanf(%s,name); printf(身份证:);scan
11、f(%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_time,leave_time);Infoi.ad_payment=payment;FILE *fp; f
12、p=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, 身份证:%s,Infoi.ID_card);fprintf(fp, 预付款:%d,Infoi.ad_payment)
13、;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=in_num)tag=1;printf(客房号:%dn,Infoi.num); printf(空闲情况:%sn,I
14、nfoi.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;if(!tag)printf(没有查询到!);void Del(int *count) /定义4删除函数int i,j,nu
15、m,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(Info*count-1.idly,);strcpy(Info*count-1.in_time,);strcpy(Info*count-1.leave_time,);strcpy(Info*count-1.na
16、me,);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=0;in;i+) fprintf(fp,%d,i+1);fprintf(fp, 客房号:%d,Infoi.num);fprintf(fp, 空闲情况:%s,Infoi.idly);fprintf(fp, 客房类
17、型:%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);fclose(fp);void Skim(int count) /定义5浏览函数int i,flag=1;printf(n);for(i=0;in
18、;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,Infoi.ID_card);printf(退房时间:%sn,Infoi.in_time);printf(预付费用:%sn,Infoi.leave_time);pri
19、ntf(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=Infoi.ad_payment-time*Infoi.prize;printf(结余金额为%d,fee);break;elseprintf(编号输入错误,请重新输入:);re
20、turn;七、运行结果分析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:hotel manage system.txt 中查询到。八、收获及体会对C语言在编写程序时用处有了更明确认识,知道了编写C程序通常法方步骤。最大收获是,编写程序时一定要有信心和勇气,要相信自己一定能够把这个程序编写出来。分析问题做出算法,想好思绪,在心里有个大致框架,然后按部就班记下自己想到每一点内容,把写下东西认真整理,查缺补漏,把部分细节地方补上,就这么一个貌似极难程序就写出来了(其实编程并不难,关键是要投入,要钻到里面去)。下一步就是读程序了,读程序时一定要小心仔细,一条语句、一条语句读,看是否能输出自己想要输出结果,假如发觉错误要立即改过来,再接着向下读,直到把程序调试完美无缺为至。