收藏 分销(赏)

住宿结帐管理系统c语言课程设计学士学位论文.doc

上传人:可**** 文档编号:9902886 上传时间:2025-04-12 格式:DOC 页数:23 大小:168KB 下载积分:8 金币
下载 相关 举报
住宿结帐管理系统c语言课程设计学士学位论文.doc_第1页
第1页 / 共23页
住宿结帐管理系统c语言课程设计学士学位论文.doc_第2页
第2页 / 共23页


点击查看更多>>
资源描述
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 ? 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 ? 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 ? 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? 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? 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<stdio.h> #include<string.h> #define N 3 //总房间数 int NN=0; //非空房间数 //类定义区 struct Date{ //入住时间 int year; int month; int day; }; struct Payroll{ //顾客信息列表 int flang; //用来标志该顾客信息是否存在 char Name[15]; //顾客姓名 Date date; //入住时间 int Rome; //房间号 int Number; //顾客数量 int Price; //每日价格 int Days; //住宿天数 float Discountrate; //折扣率 float Money; //实收金额 }; //子函数声名区 void Imput(Payroll P[],FILE *fp); //结帐信息的录入 void Read(Payroll P[],FILE *fp); //结账信息的读取 void Save(Payroll P[],FILE *fp); //信息保存为文件 void Reput(Payroll P[],FILE *fp); //结账信息的修改 void Delete(Payroll P[],FILE *fp); //结账信息的删除 void Stat(Payroll P[],FILE *fp); //信息统计 void Timeread(Payroll P[],FILE *fp); //按住宿天数浏览 void Romenumber(Payroll P[],FILE *fp); //按住宿房间浏览 void Time(Payroll P[],FILE *fp); //按住宿天数查询 void Rome(Payroll P[],FILE *fp); //按住宿房间查询 void DAY(Payroll P[],FILE *fp); //按住宿天数排序 void ROME(Payroll P[],FILE *fp); //按房间号码排序 //以下为主函数 void main() { FILE *fp; struct Payroll P[N]; fp=fopen("accout.dat","ab+"); int select; 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) { case 1:Imput(P,fp); //信息录入 break; case 2:Reput(P,fp); //修改信息 break; case 3:Delete(P,fp); //删除信息 break; case 4:Stat(P,fp); //统计信息 break; case 5:Timeread(P,fp); //按住宿天数浏览 break; case 6:Time(P,fp); //按住宿天数查询 break; case 7:Romenumber(P,fp); //按放房间号码浏览 break; case 8: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"); } //子函数定义区 void Imput(Payroll P[],FILE *fp) //结帐信息的录入 { int i; char ch; printf("姓名 入住时间 房间 顾客数量 每日价格 住宿天数 折扣率\n"); printf("=============================================\n"); for(i=0;i<N;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("是否继续录入?(y or n) "); getchar(); ch=getchar(); if(ch!='n') { printf("姓名 入住时间 房间 顾客数量 每日价格住宿天数 折扣率\n"); printf("======================================\n"); } else break; } } if(i==N-1) printf("抱歉,所有房间已满!\n\n"); } void Save(Payroll P[],FILE *fp) //信息保存为文件 { int i; for(i=0;i<N;i++) if(P[i].flang==1) fwrite(&P[i],sizeof(struct Payroll),1,fp); fclose(fp); } void Read(Payroll P[],FILE *fp) //结账信息的读取 { int i; for(i=0;i<N;i++) fread(&P[i],sizeof(struct Payroll),1,fp); } void Reput(Payroll P[],FILE *fp) //结账信息的修改 { int i; int n,j=NN; char ch; printf(" 姓名 住宿时间 房间 顾客数量 每日价格 住宿天数 折扣率 实收金额\n"); printf("=========================================================================\n"); for(i=0;i<N;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<N;i++) { if(P[i].flang==1) { if(P[i].Rome==n) { printf("确认要修改吗?(y or n) "); 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); } } void Delete(Payroll P[],FILE *fp) //住宿信息的删除 { int i,n; int k=NN,j=NN; int NO=NN; char ch; printf(" 姓名 入住时间 房间 顾客数量 每日价格 住宿天数 折扣率 实收金额\n"); printf("=============================================================================\n"); for(i=0;i<N;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<N;i++) { if(P[i].flang==1) { if(P[i].Rome==n) { printf("确认要删除吗?(y or n) "); getchar(); ch=getchar(); if(ch=='y') { if(k==1) //此时删除所有住宿信息 for(i=0;i<N;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; } void Timeread(Payroll P[],FILE *fp) //按天数浏览 { int i; //Read(P,fp); DAY(P,fp); printf(" 姓名 入住时间 房间 顾客数量 每日价格 住宿天数 折扣率 实收金额\n"); printf("============================================ =======================\n"); for(i=0;i<N;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"); } void Romenumber(Payroll P[],FILE *fp) //按住宿房间浏览 { int i,j=NN; ROME(P,fp); printf(" 姓名 入住时间 房间 顾客数量 每日价格 住宿天数 折扣率 实收金额\n"); printf("================================================ =================\n"); for(i=0;i<N;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"); } void Stat(Payroll P[],FILE *fp) //信息统计 { int i,n=N; int Sumperson=0; //总人数 float Sum=0; //总收入 struct Payroll t; //Read(P,fp); for(i=0;i<N;i++) { if(P[i].flang==1) { Sumperson+=P[i].Number; Sum+=P[i].Money; n--; } } printf("入住总人数:%d\n空房数:%d\n 总收入:%.2f\n\n\n",Sumperson,n,Sum); } void Time(Payroll P[],FILE *fp) //按住宿时间查询 { Date time; int i,j=N
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 学术论文 > 毕业论文/毕业设计

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服