住宿结帐管理系统.docx

上传人:b****5 文档编号:8365064 上传时间:2023-01-30 格式:DOCX 页数:24 大小:28.67KB
下载 相关 举报
住宿结帐管理系统.docx_第1页
第1页 / 共24页
住宿结帐管理系统.docx_第2页
第2页 / 共24页
住宿结帐管理系统.docx_第3页
第3页 / 共24页
住宿结帐管理系统.docx_第4页
第4页 / 共24页
住宿结帐管理系统.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

住宿结帐管理系统.docx

《住宿结帐管理系统.docx》由会员分享,可在线阅读,更多相关《住宿结帐管理系统.docx(24页珍藏版)》请在冰豆网上搜索。

住宿结帐管理系统.docx

住宿结帐管理系统

C语言课程设计

设计题目:

住宿结帐管理系统

 

专业计算机科学与技术、软件工程

班级计053、软件051、软件052

学生郭凌瑞张亮方宇

指导教师王晓帆

2005-2006年2学期

 

设计任务:

试设计一个住宿结帐管理系统,住宿结帐管理信息包括:

顾客姓名、入住时间、住宿房间、顾客数量、每日价格、住宿天数、折扣率、实收金额。

系统包括以下功能:

住宿信息的录入、修改、删除功能;住宿信息的排序、浏览功能;按住宿天数查询、按住宿房间号码查询;住宿信息的统计:

总人数、总收入、空房数。

建议:

一人负责信息的录入、修改、删除;一人负责文件的读取与写入操作;一人负责排序、查询。

教师评语:

 

目录

1、试验目的及内容……………………………3

2、系统总体模块图……………………………3

3、小组任务分工………………………………4

4、子系统设计方案……………………………4

(1)信息的录入、修改、删除;………………4

(2)文件的读取与写入、统计、主函数;……4

(3)信息的排序、浏览、查询;………………4

5、子系统主要程序流程图……………………4

(1)信息读取模块流程图………………………5

(2)信息修改模块流程图………………………6

(3)信息修改模块流程图……………………7

(4)按住宿时间查询模块流程图………………8

(5)按房间号码查询模块流程图………………9

6、个人设计小结与心得体会…………………10

7、小组设计总结………………………………11

8、系统源代码…………………………………12

 

试验目的:

(1)加深对C语言的理解,将在书本上掌握的知识点运用到实际的系统编程中去,为以后的学习打下基础。

(2)通过简单的系统设计,增强面对复杂问题的处理能力,为以后实际中解决问题打下基础。

实验内容:

试设计一个住宿结帐管理系统,住宿结帐管理信息包括:

顾客姓名、入住时间、住宿房间、顾客数量、每日价格、住宿天数、折扣率、实收金额。

系统包括以下功能:

住宿信息的录入修改、删除功能;住宿信息的排序浏览功能;按住宿天数查询、按住宿房间号码查询;住宿信息的统计:

总人数、总收入、空房数。

系统总体模块图:

住宿结帐管理系统

主程序模块

信息保存模块

按住宿房间号码查询模块

按住宿天数查询模块

按住宿天数浏览模块

信息统计模块

信息删除模块

信息修改模块

信息读取模块

信息录入模块

按住房间号码浏览模块

按房间号码排序模块

按住宿天数排序模块

小组任务分工

(1)由郭凌瑞负责住宿信息的录入、修改、删除功能;

(2)由张亮负责文件的读取与写入操作,统计及主函数;

(3)由方宇负责排序、浏览、查询功能;

子系统设计方案:

(1)信息的录入、修改、删除;

信息的录入、修改与删除通过对信息的标志的判断与修改,执行信息录入的地址、修改的目标及删除功能的实现。

(2)文件的读取与写入、统计、主函数;

文件的读取与写入可用已知的库函数来完成,统计工作可由已有信息通过计算获得,主函数可由swith语句来达到菜单选折功能的目的。

(3)信息的排序、浏览、查询;

排序功能可通过冒泡法来实现,浏览实现排序然后显示即可,查询时,根据“==”来达到找到匹配信息的目的。

 

子系统主要程序流程图

N为所有房间数,NN为非空房间数

信息读取模块流程图

开始

0=>i

i+1=>i

i

N

Y

P[i].flang==1?

Y

N

输入一个信息P[i]

1=>P

[i].flang

NN+1=>NN

i+1=>i

i==N-1?

Y

N

“y”or“n”

Y

N

i==N-1?

N

Y

输入信息房间已满

结束

信息修改模块流程图

开始

输出所有住宿信息

输入修改的房间号n

0=>i,NN=>j

n==0?

Y

N

i

N

i+1=>i

N

Y

P[i].flang==1?

N

j--

Y

Y

P[i].Rome==n?

N

Y

“y”or“n”

N

Y

重新输入该信息P[i]

“y”or“n”

i==N-1?

i==N-1?

i==N-1?

j==0?

N

Y

未找到要修改的信息

“y”or“n”

输入修改的房间号n

输入一个信息P[i]

输入一个信息P[i]

输入一个信息P[i]

输入一个信息P[i]

输入一个信息P[i]

输入一个信息P[i]

输入一个信息P[i]

结束

信息删除模块流程图

开始

输出所有住宿信息

输入要删除的房间号n

0=>i,NN=>j

n==0?

Y

i

N

i+1=>i

Y

P[i].flang==1?

N

j--

P[i].Rome==n?

Y

N

“y”or“n”

Y

N

Y

1=>P[i].flang

j==0?

N

Y

未找到要删除的信息

输入删除的房间号n

结束

按住宿时间查询模块

开始

输出所有住宿信息

输入要查询的日期(年月日)

0=>i,NN=>j

i

N

i+1=>i

Y

P[i].flang==1?

N

j--

Y

i+1=>i

日期是否相等

N

Y

输出要查询的信息P[i]

j==0?

Y

N

Y

未找到要查询的信息

结束

按房间号码查询模块

开始

输出所有住宿信息

输入要查询房间号码no

0=>i,NN=>j

i

N

i+1=>i

Y

P[i].flang==1?

N

j--

Y

i+1=>i

房间号码是否相等

N

Y

输出要查询的信息P[i]

j==0?

N

Y

未找到要查询的信息

结束

0=>i,NN=>j

0=>i,NN=>j

个人设计小结及心得体会:

(1)在我设计的子系统部分,包含很多细节问题,如果稍有不慎,往往导致模块无法运行,在设计中,我尝试了很多方法,对思维能力有了很大锻炼,提高了解决复杂问题的能力,同时,也很大程度上锻炼了耐心,做到不急不弃是系统最终成功的保证。

计053郭凌瑞

(2)我的工作比较简单,但在书写代码时,发现了自己的问题:

文件无法顺利操作!

文件是很重要的一个知识点,很兴庆在这次实践中我及时弥补了以前的缺憾,为以后的继续学习和面对复杂问题打下了坚实的基础,问题在实践中才能被更好地发现和解决,在今后的学习中要更加重视实践的作用!

软051张亮

(3)在我设计的模块中,主要是对已有信息的处理,对排序算法有了一个新的认识,从深层次理解了排序函数的思想,突破了以前是似而非的局限。

查询模块的书写,注意了很多细节,使模块在整体上有了很大优化,给了用户一个人性化的界面。

软052方宇

 

小组设计总结:

本次课程设计,我们做了一个简单管理系统,系统的功能较以前的小程序有了很大加强,对个人及团队的能力有了更大的要求,事实上,在本次课设中的确出现了很多以前没有遇到的问题,这是一次自我提高的过程,从中我们弥补了以前遗漏的很多东西,使自己的知识结构更加完善和牢固;同时,这也是一次实践的机会,是增加面对复杂问题处理经验的机会,对以后做一些比较大的系统有一定的借鉴。

在本次试验的整个过程中,组员之间的合作起到了很大作用,共同解决了很多关键性难题,最终,在我们的共同努力下,我们的第一个系统正常运行了,巨大成就感促使我们有一种挑战更高目标的欲望!

 

#include

#include

#defineN3//总房间数

intNN=0;//非空房间数

//类定义区

structDate{//入住时间

intyear;

intmonth;

intday;

};

structPayroll{//顾客信息列表

intflang;//用来标志该顾客信息是否存在

charName[15];//顾客姓名

Datedate;//入住时间

intRome;//房间号

intNumber;//顾客数量

intPrice;//每日价格

intDays;//住宿天数

floatDiscountrate;//折扣率

floatMoney;//实收金额

};

//子函数声名区

voidImput(PayrollP[],FILE*fp);//结帐信息的录入

voidRead(PayrollP[],FILE*fp);//结账信息的读取

voidSave(PayrollP[],FILE*fp);//信息保存为文件

voidReput(PayrollP[],FILE*fp);//结账信息的修改

voidDelete(PayrollP[],FILE*fp);//结账信息的删除

voidStat(PayrollP[],FILE*fp);//信息统计

voidTimeread(PayrollP[],FILE*fp);//按住宿天数浏览

voidRomenumber(PayrollP[],FILE*fp);//按住宿房间浏览

voidTime(PayrollP[],FILE*fp);//按住宿天数查询

voidRome(PayrollP[],FILE*fp);//按住宿房间查询

voidDAY(PayrollP[],FILE*fp);//按住宿天数排序

voidROME(PayrollP[],FILE*fp);//按房间号码排序

//以下为主函数

voidmain()

{

FILE*fp;

structPayrollP[N];

fp=fopen("accout.dat","ab+");

intselect;

Read(P,fp);//从文件中读取结账信息

printf("*******************住宿结账管理系统***************\n\n");

printf("~~~~~~~~~~~~~~~~~~~~欢迎使用本系统!

~~~~~~~~~~~~\n\n");

printf("===============菜单===============\n"

"请选择:

\n"

"1--添加新信息\n"

"2--修改信息\n"

"3--删除信息\n"

"4--统计信息\n"

"5--按住宿天数浏览\n"

"6--按住宿天数查询\n"

"7--按放房间号码浏览\n"

"8--按房间号码查询\n"

"9--退出\n");

scanf("%d",&select);

while(select!

=9)//没有退出本系统时,循环提示操作

{

switch(select)

{

case1:

Imput(P,fp);//信息录入

break;

case2:

Reput(P,fp);//修改信息

break;

case3:

Delete(P,fp);//删除信息

break;

case4:

Stat(P,fp);//统计信息

break;

case5:

Timeread(P,fp);//按住宿天数浏览

break;

case6:

Time(P,fp);//按住宿天数查询

break;

case7:

Romenumber(P,fp);//按放房间号码浏览

break;

case8:

Rome(P,fp);//按房间号码查询

break;

}

printf("\n\n");

printf("请选择要进行的操作:

\n"//每完成一次操作选折下一次操作

"1--添加新信息\n"

"2--修改信息\n"

"3--删除信息\n"

"4--统计信息\n"

"5--按住宿天数浏览\n"

"6--按住宿天数查询\n"

"7--按放房间号码浏览\n"

"8--按房间号码查询\n"

"9--退出\n");

scanf("%d",&select);

}

Save(P,fp);//将本次系统运行结果保存为文件

printf("谢谢使用,再见!

\n");

}

//子函数定义区

voidImput(PayrollP[],FILE*fp)//结帐信息的录入

{

inti;

charch;

printf("姓名入住时间房间顾客数量每日价格住宿天数折扣率\n");

printf("=============================================\n");for(i=0;i

{

if(P[i].flang!

=1)//避免覆盖已有信息

{

scanf("%s%d%d%d%d%d%d%d%f",P[i].Name,&P[i].date.year,

&P[i].date.month,&P[i].date.day,&P[i].Rome,&P[i].Number,

&P[i].Price,&P[i].Days,&P[i].Discountrate);

P[i].flang=1;//标示已存信息

NN++;

P[i].Money=P[i].Days*P[i].Discountrate*P[i].Price;

if(i==N-1)

break;

printf("是否继续录入?

(yorn)");

getchar();

ch=getchar();

if(ch!

='n')

{

printf("姓名入住时间房间顾客数量每日价格住宿天数折扣率\n");

printf("======================================\n");

}

else

break;

}

}

if(i==N-1)

printf("抱歉,所有房间已满!

\n\n");

}

voidSave(PayrollP[],FILE*fp)//信息保存为文件

{

inti;

for(i=0;i

if(P[i].flang==1)

fwrite(&P[i],sizeof(structPayroll),1,fp);

fclose(fp);

}

voidRead(PayrollP[],FILE*fp)//结账信息的读取

{

inti;

for(i=0;i

fread(&P[i],sizeof(structPayroll),1,fp);

}

voidReput(PayrollP[],FILE*fp)//结账信息的修改

{

inti;

intn,j=NN;

charch;

printf("姓名住宿时间房间顾客数量每日价格住宿天数折扣率实收金额\n");

printf("=========================================================================\n");

for(i=0;i

if(P[i].flang==1)

printf("%8s%6d%3d%3d%10d%8d%8d%8d%8.2f%8.2f\n",P[i].Name,

P[i].date.year,P[i].date.month,P[i].date.day,P[i].Rome,P[i].Number,

P[i].Price,P[i].Days,P[i].Discountrate,P[i].Money);

printf("请输入要修改的房间号(输入零结束修改!

):

\n");

scanf("%d",&n);

while(n!

=0)

{

for(i=0;i

{

if(P[i].flang==1)

{

if(P[i].Rome==n)

{

printf("确认要修改吗?

(yorn)");

getchar();

ch=getchar();

if(ch=='y')

{

printf("请重新输入该信息:

\n");

printf("姓名入住时间房间顾客数量每日价格住宿天数折扣率\n");

printf("===========================================================\n");

scanf("%s%d%d%d%d%d%d%d%f",P[i].Name,

&P[i].date.year,&P[i].date.month,&P[i].date.day,

&P[i].Rome,&P[i].Number,&P[i].Price,

&P[i].Days,&P[i].Discountrate);

P[i].Money=P[i].Days*P[i].Discountrate*P[i].Price;

}

else

continue;

}

else

j--;

}

else

continue;

}

if(j==0)

printf("没有找到要修改的内容!

请确认后再输入!

\n");

printf("请输入要修改的房间号(输入零结束修改!

):

\n");

scanf("%d",&n);

}

}

voidDelete(PayrollP[],FILE*fp)//住宿信息的删除

{

inti,n;

intk=NN,j=NN;

intNO=NN;

charch;

printf("姓名入住时间房间顾客数量每日价格住宿天数折扣率实收金额\n");

printf("=============================================================================\n");

for(i=0;i

if(P[i].flang==1)

printf("%8s%6d%3d%3d%10d%6d%8d%8d%8.2f%8.2f\n",

P[i].Name,P[i].date.year,P[i].date.month,P[i].date.day,

P[i].Rome,P[i].Number,P[i].Price,P[i].Days,

P[i].Discountrate,P[i].Money);

printf("请输入要删除的房间号(输入零结束删除!

):

\n");

scanf("%d",&n);

while(n!

=0)

{

for(i=0;i

{

if(P[i].flang==1)

{

if(P[i].Rome==n)

{

printf("确认要删除吗?

(yorn)");

getchar();

ch=getchar();

if(ch=='y')

{

if(k==1)//此时删除所有住宿信息

for(i=0;i

P[i].flang=0;

NO--;

P[i].flang=0;//删除该项内容

k--;

}

else

continue;

}

else

j--;

}

}

if(k==0)

break;

if(j==0)

printf("没有找到要删除的内容,请确认!

\n");

printf("请输入要删除的房间号(输入零结束删除!

):

\n");

scanf("%d",&n);

}

NN=NO;

}

voidTimeread(PayrollP[],FILE*fp)//按天数浏览

{

inti;

//Read(P,fp);

DAY(P,fp);

printf("姓名入住时间房间顾客数量每日价格

住宿天数折扣率实收金额\n");

printf("============================================

=======================\n");

for(i=0;i

{

if(P[i].flang==1)

{

printf("%8s%6d%3d%3d%10d%6d%8d%8d%8.2f%8.2f\n",

P[i].Name,P[i].date.year,P[i].date.month,P[i].date.day,

P[i].Rome,P[i].Number,P[i].Price,P[i].Days,

P[i].Discountrate,P[i].Money);

}

}

printf("\n\n");

}

voidRomenumber(PayrollP[],FILE*fp)//按住宿房间浏览

{

inti,j=NN;

ROME(P,fp);

printf("姓名入住时间房间顾客数量每日价格

住宿天数折扣率实收金额\n");

printf("================================================

=================\n");

for(i=0;i

if(P[i].flang==1)

printf("%8s%6d%3d%3d%8d%6d%8d%8d%8.2f%8.2f\n",

P[i].Name,P[i].date.year,P[i].date.month,P[i].date.day,

P[i].Rome,P[i].Number,P[i].Price,P[i].Days,

P[i].Discountrate,P[i].Money);

printf("\n\n");

}

voidStat(PayrollP[],FILE*fp)//信息统计

{

inti,n=N;

intSumperson=0;//总人数

floatSum=0;//总收入

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 工学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1