资源描述
目 录
一、 课程设计题目 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-浏览, Balance-结算。
5.源程序可运行之后, 将其数据、 信息输入到文档中, 使其能存档, 能够写入文件和读出文件。
6.对程序进行修改、 完善。
写函数
四、 算法的流程图
联系文件
开始
定义结构体Hotel-Info
修改、 完善
建立选择菜单
写主函数, 实现选择功能
结束
图1 算法流程图
五、 算法设计分析
1.这是一个小型的管理系统, 使用结构体数组存储客房的信息。
2.一般的管理系统都应该具备插入, 修改, 查询, 删除, 浏览等功能, 经过使用一个简易菜单进行执行动作的选择。
3.用函数实现模块化设计, 调理清晰, 使程序易读写。
4.把程序与文件联系, 使数据能存储在磁盘中, 更具实用性。
六、 源代码
1结构体
struct Hotel_Info
{
char name[N],type[N],ID_card[N],in_time[N],leave_time[N];
char idly[N];
int prize,num,ad_payment;
}Info[N];
2主函数
int main()
{
FILE *fp;
int i=0;
fp=fopen("d:\\hotel manage system.txt","r");
//fscanf(fp,"%d",&n);
// for(i=0;i<n;i++)
while(!feof(fp))
{
int a;
fscanf(fp,"%d",&a);
fscanf(fp," 客房号: %d",&Info[i].num);
fscanf(fp," 空闲情况: %s",Info[i].type);
fscanf(fp," 客房类型: %s",Info[i].idly);
fscanf(fp," 客房价格: %d",&Info[i].prize);
fscanf(fp," 客户姓名: %s",Info[i].name);
fscanf(fp," 身份证: %s",Info[i].ID_card);
fscanf(fp," 预付款: %d",&Info[i].ad_payment);
fscanf(fp," 入住时间: %s",Info[i].in_time);
fscanf(fp," 退房时间: %s",Info[i].leave_time);
i++;
}
fclose(fp);
n=i-1;
int m;
do
{
printf("\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: 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;i<N;i++)
{
printf("编号: ");
scanf("%d",&in_num);
int flag = 1;
while(flag)
{
flag=0;
for(int ii=0;ii<=N;ii++)
if(Info[ii].num==in_num)
{printf("已经有相同编号! \n");scanf("%d",&in_num);flag=1;break;}
}
Info[i].num=in_num;
printf("客房号: ");
scanf("%d",&Info[i].num);
fprintf(fp," 客房号: %d",Info[i].num);
printf("空闲情况: ");
scanf("%s",Info[i].idly);
fprintf(fp," 空闲情况: %s",Info[i].idly);
printf("客房类型: ");
scanf("%s",Info[i].type);
fprintf(fp," 客房类型: %s",Info[i].type);
printf("客房价格: ");
scanf("%d",&Info[i].prize);
fprintf(fp," 客房价格: %d",Info[i].prize);
printf("客户姓名: ");
scanf("%s",Info[i].name);
fprintf(fp," 客户姓名: %s",Info[i].name);
printf("身份证: ");
scanf("%s",Info[i].ID_card);
fprintf(fp," 身份证: %s",Info[i].ID_card);
printf("预付款: ");
scanf("%d",&Info[i].ad_payment);
fprintf(fp," 预付款: %d",Info[i].ad_payment);
printf("入住时间: ");
scanf("%s",Info[i].in_time);
fprintf(fp," 入住时间: %s",Info[i].in_time);
printf("退房时间: ");
scanf("%s",Info[i].leave_time);
fprintf(fp," 退房时间: %s\n",Info[i].leave_time);
break;
}
fclose(fp);
(*count)++;
}
void Amend(int count) //定义2————修改函数
{
int i,num,payment,tag=0;;
char idly[N],name[N],ID_card[N],in_time[N],leave_time[N];
printf("请输入要修改数据的编号: ");
scanf("%d",&num);
for(i=0;i<n;i++)
if(Info[i].num==num)
{
tag=1;
printf("空闲情况:%s",Info[i].idly);
printf(" 客人姓名:%s",Info[i].name);
printf(" 身份证:%s",Info[i].ID_card);
printf(" 入住时间:%s",Info[i].in_time);
printf(" 退房时间:%s",Info[i].leave_time);
printf(" 预付费用:%d\n",Info[i].ad_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(Info[i].idly,idly);
strcpy(Info[i].name,name);
strcpy(Info[i].ID_card,ID_card);
strcpy(Info[i].in_time,in_time);
strcpy(Info[i].leave_time,leave_time);
Info[i].ad_payment=payment;
FILE *fp;
fp=fopen("d:\\hotel manage system.txt","w");
for(i=0;i<n;i++)
{
fprintf(fp,"%d",i+1);
fprintf(fp," 客房号: %d",Info[i].num);
fprintf(fp," 空闲情况: %s",Info[i].idly);
fprintf(fp," 客房类型: %s",Info[i].type);
fprintf(fp," 客房价格: %d",Info[i].prize);
fprintf(fp," 客户姓名: %s",Info[i].name);
fprintf(fp," 身份证: %s",Info[i].ID_card);
fprintf(fp," 预付款: %d",Info[i].ad_payment);
fprintf(fp," 入住时间: %s",Info[i].in_time);
fprintf(fp," 退房时间: %s\n",Info[i].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;i<n;i++)
if(Info[i].num==in_num)
{
tag=1;
printf("客房号:%d\n",Info[i].num);
printf("空闲情况:%s\n",Info[i].idly);
printf("客房类型:%s\n",Info[i].type);
printf("客房价格:%d\n",Info[i].prize);
printf("客人姓名:%s\n",Info[i].name);
printf("身份证:%s\n",Info[i].ID_card);
printf("入住时间:%s\n",Info[i].in_time);
printf("退房时间:%s\n",Info[i].leave_time);
printf("预付费用:%d\n",Info[i].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(Info[i].num==num)
{
for(j=i;j<*count&&flag;j++)
Info[j]=Info[j+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].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=0;i<n;i++)
{
fprintf(fp,"%d",i+1);
fprintf(fp," 客房号: %d",Info[i].num);
fprintf(fp," 空闲情况: %s",Info[i].idly);
fprintf(fp," 客房类型: %s",Info[i].type);
fprintf(fp," 客房价格: %d",Info[i].prize);
fprintf(fp," 客户姓名: %s",Info[i].name);
fprintf(fp," 身份证: %s",Info[i].ID_card);
fprintf(fp," 预付款: %d",Info[i].ad_payment);
fprintf(fp," 入住时间: %s",Info[i].in_time);
fprintf(fp," 退房时间: %s\n",Info[i].leave_time);
}
fclose(fp);
}
void Skim(int count) //定义5————浏览函数
{
int i,flag=1;
printf("\n");
for(i=0;i<n;i++)
{
printf("第%d条记录: \n",i+1);
printf("客房号:%d\n",Info[i].num);
printf("客房类型:%s\n",Info[i].type);
printf("%客房价格:%d\n",Info[i].ad_payment);
printf("空闲情况:%d\n",Info[i].prize);
printf("客人姓名:%s\n",Info[i].idly);
printf("客人身份证号:%s\n",Info[i].name);
printf("入住时间:%s\n",Info[i].ID_card);
printf("退房时间:%s\n",Info[i].in_time);
printf("预付费用:%s\n",Info[i].leave_time);
printf("\n");
flag=0;
//return;
}
}
void Balance(int conut) //定义6————结算函数
{
int i,x,fee,time;
printf("请输入要结算的客房号: ");
scanf("%d",&x);
for(i=0;i<n;i++)
if(Info[i].num==x)
{printf("住房时间为%s————%s。\n请输入住房时间: ",Info[i].in_time,Info[i].leave_time);
scanf("%d",&time);
fee=Info[i].ad_payment-time*Info[i].prize;
printf("结余金额为%d",fee);
break;
}
else
{printf("编号输入错误, 请重新输入: ");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.进入相应功能后, 进行数据处理。处理后的数据会保存在磁盘中便于系统的运作和数据的存储。
图8
3.信息能够在d:\\hotel manage system.txt 中查询到。
八、 收获及体会
对C语言在编写程序时的用处有了更明确的认识,懂得了编写C程序的一般法方步骤。最大的收获是, 编写程序时一定要有信心和勇气, 要相信自己一定能够把这个程序编写出来。分析问题做出算法, 想好思路, 在心里有个大致的框架, 然后按部就班的记下自己想到的每一点内容, 把写下的东西认真整理, 查缺补漏, 把一些细节的地方补上, 就这样一个貌似很难的程序就写出来了( 其实编程并不难, 关键是要投入, 要钻到里面去) 。下一步就是读程序了, 读程序时一定要小心仔细, 一条语句、 一条语句的读, 看是否能输出自己想要输出的结果, 如果发现错误要马上改过来, 再接着向下读, 直到把程序调试的完美无缺为至。
展开阅读全文