CC语言程序报告课程设计.doc_第1页
CC语言程序报告课程设计.doc_第2页
CC语言程序报告课程设计.doc_第3页
CC语言程序报告课程设计.doc_第4页
CC语言程序报告课程设计.doc_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

湖北汽车工业学院电气与信息工程学院 语言程序设计 C 语言程序设计 实训报告 实训题目: 实训题目: 酒店房间登记与计费管理 专业: 专业: 班级: 班级: 姓名: 姓名: 成绩: 成绩: 计算机科学与技术 T9231 T9231 李洋 吴卿 一,需求分析 1,问题 根据需求,该系统所应包含的信息有以下一些: 酒店房间登记与计费管理基本信息 客户姓名,身份证,入住时间,离开时间,房间号,房间价格 根据需求,该系统所应实现的功能有以下一些: 各种基本数据的录入.如:客户基本信息录入. 基于各种数据的查询.例如输入客户信息,然后查询. 2,系统 采用 C 语言实现,开发环境为 VC,可以运行在操作系统 windows98 及以上皆可. 3,运行要求 能不受限制的录入通讯录信息 界面友好,操作方便,例如删除前需要提示用户是否删除 容错性强,例如数据导出时,如果文件不存在需要提示用户. 二,总体设计 1,系统流程设计 根据系统要求,设计如下的系统流程菜单显示 用户输入操作 退出 判断用户选择的操作 执行相应的操作 退出 2,系统模块设计 根据系统的功能设计,如下模块 酒店管理与登记 主界面模块:完成系统菜单的显示 主 界 面 显 示 择 选 能 功 入 客输 户入 信客 息户 录信 息 况 客 客 户 户 入 入 住 住 情 情 况 入 客 户 信 息 导 功能选择模块:根据用户的选择,完成其相应的功能 客户信息录入界面输入客户信息,保存入系统的功能 客户住宿情况:判别客户能否入住 三,详细设计 1,数据结构设计 根据系统要求,系统中需要保存的数据有通讯录的信息,其结构如下: 数据项名称 姓名 身份证 入住(退房)时间 费用 数据项系统表示 name Id date Expensive 数据类型 字符串 Double 型 整型 整型 数据长度 20 18 10 6 备注 所住时间 房间价格 房间序号 time Price Number 字符型 整形 整形 10 6 6 2,界面设计 主界面: 在每个菜单前显示该菜单项对应的数字 用户输入菜单项前面的数字,主菜单消失,进入该模块的相应界面,进行相应的操作,完成后,回到 主界面. 运行此程序后得到此界面: 主界面 输入所要进行的操作: (所输入的选择为 1) 输 入 2 : 按提示执行: 没有其他的客户入住,则按 0 即可根据提示退出. 返回主界面: 按 3 后 : 根据提示后返回,到达主界面: 后 按 4 : 输 入 2010 后 得 到 此 界 面 : 根据提示进行操作即可退出 以进行以后的操作: /*当输入错误时*/ (01) 身份证错误 所出现的界面 (02) 时间输入错误 所出现的界面 (03) 房间号输入错误 所出现的界面 (4) 房间号输入错误 所出现的界面 3,模块实现 主界面实现:调用 printf()函数,在屏幕上打印需要显示的字符信息,需 功能选择模块实现: 接受从键盘输入的菜单选择,判断并调用相应的功能函数,完成其对应的功能.实现功能选择. 客户信息录入模块实现: 模块说明:从键盘接收输入的客户信息,在动态存储区中创建通讯录的节点,遍历链表,将其插入 到通讯录链表的最后位置. 模块流程: 清屏 遍历链表 找到最后一个节点 创建一个新节点 从键盘给新节点赋值 将新节点连接到链表 的最后一个节点上 模块流程: 清屏 输入需要修改的姓名 遍历链表 将每个节点与输入的姓名比较相等 显示该节点信息 输入新信息给该节点 改变标识变量 判断标识,显示是否 修改成功客户信息输入模块实现: 模块说明:略 模块流程:略 对应的链表:struct kehu_information *creat() 客户费用查询: 模块说明:略 模块流程:略 对应函数:void allprice(int number,struct time begin,struct time end,struct kehu_information *head) 客户信息查询模块实现: 模块说明:略 模块流程:略 对应函数: 四,测试结果 1,录入通讯录测试 测试数据: 输入张三 1234567890123456789 01 90 2010-03-12 测试结果: 程序运行出现错误,如下 测试数据: 输入张三 测试结果: 程序运行正常,正确的插入到链表的最后位置 测试数据: 输入:张三 测试结果: 程序运行不正常,可以将张三 1234567889901234546 012 90 入 1234567889901234546 012 90 1234567889901234546 012 90 五,实训总结 实训感想 对系统开发的总结(设计亮点,存在的不足,需要改进的地方 对系统开发的总结(设计亮点,存在的不足,需要改进的地方) 这是第一次非常正式的接触大程序,并且以合作的方式编写大程序,开始的时候接触它, 这是第一次非常正式的接触大程序,并且以合作的方式编写大程序,开始的时候接触它,面对如此大 式的接触大程序 的一个程序(题目很长,提示也很长) 有胆怯和畏惧的心理,真不知道从何处下手.然而, ,有胆怯和畏惧的心理 的一个程序(题目很长,提示也很长) 有胆怯和畏惧的心理,真不知道从何处下手.然而,在第 13 周的 , 星期二,经过张吴波老师的讲解后有一点点的信心,知道了首先应该写出整体的构思和框架图, 星期二,经过张吴波老师的讲解后有一点点的信心,知道了首先应该写出整体的构思和框架图,于是和同 伴一起分析,思考,论证.当然其间也遇到了不少的困难和小小的阻力,却得到了老师们的讲解和引导, 伴一起分析,思考,论证.当然其间也遇到了不少的困难和小小的阻力,却得到了老师们的讲解和引导, 困难和小小的阻力 和引导 在此感谢老师. 第十四到第十六周去编写程序时 首先,我们的方法是先编写小的程序段, 在此感谢老师.在第十四到第十六周去编写程序时,首先,我们的方法是先编写小的程序段,后将这些小 到第十六 的方法是先编写小的程序段 的程序加以整合,构成一个大的程序,最后系统的构成一个大的程序(既符合题目要求的程序段) 的程序加以整合,构成一个大的程序,最后系统的构成一个大的程序(既符合题目要求的程序段) 这算 的程序 目要求的程序段 . 是一个编写大的实训的基本的经过吧! 是一个编写大的实训的基本的经过吧! 通过此次和伙伴一起编写大的程序,收获颇多,感想也是颇多,获益同样是颇多. 通过此次和伙伴一起编写大的程序,收获颇多,感想也是颇多,获益同样是颇多.首先我们基本上可 以说将以前的知识进行了又一次的复习和回味,将书本再过了一遍.第二, 以说将以前的知识进行了又一次的复习和回味,将书本再过了一遍.第二,我们从此次的编写大程序中明 白了编写大的程序的过程和一些基本的流程先分析后编程-最后检验.第三, 白了编写大的程序的过程和一些基本的流程先分析后编程-最后检验.第三,从此 先分析后编程-最后检验 次实际的编写中我们也发现了自身的一些问题-知识上的一些缺乏,打字速度的缓慢, 次实际的编写中我们也发现了自身的一些问题-知识上的一些缺乏,打字速度的缓慢,分析错误和修改 -知识上的一些缺乏 错误的能力的局限性. 错误的能力的局限性. 在编写大的程序的时候,总会遇到一些困难和阻力的,首先要正视它,然后在藐视它,不应该惧怕它, 在编写大的程序的时候,总会遇到一些困难和阻力的,首先要正视它,然后在藐视它,不应该惧怕它, 最重要的是编写大的程序要注意和伙伴的紧密的配合.另外要注意当程序出现错误,后修改程序的方法 最重要的是编写大的程序要注意和伙伴的紧密的配合.另外要注意当程序出现错误,后修改程序的方法 先看出错的位置,加以修改,若正确则表明修改正确,若未出现所希望得到的程序, 先看出错的位置,加以修改,若正确则表明修改正确,若未出现所希望得到的程序,则需要用调试 先看出错的位置 则表明修改正确 的方法加以分析,归纳,在加以判断修改.当然修改程序的时间花的较长,也较为枯燥,需要忍耐, 的方法加以分析,归纳,在加以判断修改.当然修改程序的时间花的较长,也较为枯燥,需要忍耐,在此 谢谢伙伴的支持与陪伴. 谢谢伙伴的支持与陪伴. 希望以后还有这样的机会和时间, 和同伴一起编写程序, 以此对这类题目加深对这类题目熟悉与熟练, 希望以后还有这样的机会和时间, 和同伴一起编写程序, 以此对这类题目加深对这类题目熟悉与熟练, 语言代码. 能在以后能快速而熟练的编写此类的 C 语言代码. 六,附录 程序源代码 #include #include #include #include struct hotel_list int number; int price; room10= 2001,60,2002,65, 2003,70,2004,75, 2005,80,2006,85, 2007,90,2008,95, 2009,100,2010,105 ; struct struct time int year; int month; int day; ; struct kehu_information char name20; char ID20; struct time begin; struct time end; int num; int daytime; int price; int expense; struct kehu_information * next; ; /*定义一个结构体保存客户的信息*/ /*定义一个结构体保存客户的信息*/ 定义一个结构体保存客户的信息 /定义日期结构 /定义日期结构 /定义房间结构并赋除值 /定义房间结构并赋除值 int menu_show(); 单显示*/ 单显示*/ struct /*创建链表,输入客户信息*/ /*创建链表,输入客户信息*/ 创建链表 void check(int number,struct kehu_information kehu_information kehu_information /*菜 /*菜 *creat(); *head); /*查询房间入住情况*/ /*查询房间入住情况*/ 查询房间入住情况 void allprice(int number,struct time begin,struct time end,struct kehu_information *head); end,struct 统计客户所付的总费用*/ 统计客户所付的总费用*/ int tiannum(struct time begin); 询某月份的具体天数*/ 询某月份的具体天数*/ int yanzheng(struct kehu_information *p,struct kehu_information *head); /*求 /*求 /*验证该房间是否有人住*/ /*验证该房间是否有人住*/ int yue(struct time p); 某月份的天数*/ 某月份的天数*/ xianshi()/*显示房间号和价格 void xianshi()/*显示房间号和价格 */ int i; printf( 房间信息); printf(n 房间信息); printf( printf(n for(i=0;i10;i+) printf( /主函数 /主函数 main() /*定义链表的头节点 定义链表的头节点*/ struct kehu_information * head=NULL; /*定义链表的头节点*/ int i,num,chioce; char c1,c2,c3,c4; struct time p1,p2; system(cls); system(cls); /*清屏*/ /*清屏*/ 清屏 %4d %6d %6dn,roomi.number,roomi.price); 房间号 房间价格 房间价格n); /*查 /*查 /* /*无限循环 无限循环*/ while(1) /*无限循环*/ chioce=menu_show(); switch(chioce) case 1: system(cls); xianshi(); break; case 2: system(cls); head=creat(); break; case 3: system(cls); system(cls); printf( 查询房间信息); printf(n 查询房间信息); printf( 请输入要查询的房间号: printf(n 请输入要查询的房间号: ); scanf(%d,&num); for(i=0;i0&n9) n=n/10; i+; return i; begin)/*计算天数 计算天数*/ int tian(struct time begin)/*计算天数*/ int k,leap1,day1; int tab213= 0,31,28,31,30,31,30,31,31,30,31,30,31, 0,31,28,31,30,31,30,31,31,30,31,30,31, 0,31,29,31,30,31,30,31,31,30,31,30,31 ; leap1=(begin.year)%4=0&(begin.year)%100!=0|(begin.year)%400=0); day1=begin.day; for(k=1;k(begin.month);k+) day1=day1+tableap1k; return day1; int yue(struct time p) int i,leap,n; int tab213= 0,31,28,31,30,31,30,31,31,30,31,30,31, 0,31,29,31,30,31,30,31,31,30,31,30,31 ; leap=(p.year)%4=0&(p.year)%100!=0|(p.year)%400=0); if(leap=1) for(i=1;i13;i+) if(p.month=i) if(p.month=i) n=tab1i; else for(i=1;iname,name); printf(n 请输入客户的身份证号: ); rintf( 请输入客户的身份证号: scanf(%s,s); n=strlen(s); while(n!=15&n!=18) printf(身份证号输入有误! 请重新输入: printf(身份证号输入有误!n 请重新输入: ); 身份证号输入有误 scanf(%s,s); n=strlen(s); strcpy(pstrcpy(p-ID,s); printf(请输入客户的开始入住时间: printf(请输入客户的开始入住时间: ); 请输入客户的开始入住时间 scanf(%d%c%d%c%d,&m1.year,&e1,&m1.month,&f1,&m1.day); scanf(%d%c%d%c%d,&m1.year,&e1,&m1.month,&f1,&m1.day); n=len(m1.year)+len(m1.month)+len(m1.day)+2; while(n!=10)|(e1!=while(n!=10)|(e1!=-) printf(输入开始时间格式有误! 请重新输入: printf(输入开始时间格式有误!n 请重新输入: ); 输入开始时间格式有误 scanf(%d%c%d%c%d,&m1.year,&e1,&m1.month,&f1,&m1.day); n=len(m1.year)+len(m1.month)+len(m1.day)+2; while(m1.dayyue(m1)|m1.dayyue(m1)|m1.daybegin=m1; printf(请输入客户的退房时间: printf(请输入客户的退房时间: ); 请输入客户的退房时间 scanf(%d%c%d%c%d,&m2.year,&e2,&m2.month,&f2,&m2.day); n=len(m2.year)+len(m2.month)+len(m2.day)+2; n=len(m2.year)+len(m2.month)+len(m2.day)+2; while(n!=10)|(e2!=while(n!=10)|(e2!=-) printf(输入结束时间格式有误! 请重新输入: printf(输入结束时间格式有误!n 请重新输入: ); 输入结束时间格式有误 scanf(%d%c%d%c%d,&m2.year,&e2,&m2.month,&f2,&m2.day); n=len(m2.year)+len(m2.month)+len(m2.day)+2; while(m2.dayyue(m2)|m2.dayend=m2; printf(请输入客户的入住房间号: printf(请输入客户的入住房间号: ); 请输入客户的入住房间号 scanf(%d,&num); while(num2010) printf(输入房间号有误! 请重新输入: printf(输入房间号有误!n 请重新输入: ); 输入房间号有误 scanf(%d,&num); p-num=num; if(yanzheng(p,head)=1) printf(该房间在此段时间内没人住! printf(该房间在此段时间内没人住!n); 该房间在此段时间内没人住 else while(yanzheng(p,head)!=1) printf(对不起,该房间在此段时间内有人住! 请重新输入: printf(对不起,该房间在此段时间内有人住!n 请重新输入: ); 对不起 scanf(%d,&num); p-num=num; printf(该房间在此段时间内没人住! printf(该房间在此段时间内没人住!n); 该房间在此段时间内没人住 for(i=0;iprice=roomi.price; p-daytime=(tian(p-end)-tian(p-begin); daytime=(tian(p-end)-tian(pn=pn=p-daytime; i=pi=p-price; num=n*i; p-expense=num; p-next=NULL; if(head=NULL) head=p; head=p; else tail=p; printf( 该客户入住成功! printf(n 该客户入住成功!n); printf( 请输入客户的姓名: printf(n 请输入客户的姓名: ); scanf(%s,name); return head; void check(int number,struct kehu_information *head) struct kehu_information *ptr; int n1,n2,n=0; if(head=NULL) printf(该房间没人住! printf(该房间没人住!n); 该房间没人住 return; for(ptr=head;ptr;ptr=ptrfor(ptr=head;ptr;ptr=ptr-next) if(number=ptrif(number=ptr-num) break; if(ptr=NULL) printf(该房间没人住! printf(该房间没人住!n); 该房间没人住 return; else for(ptr=head;ptr;ptr=ptrfor(ptr=head;ptr;ptr=ptr-next) if(number=ptrif(number=ptr-num) printf(该房间入住的客人是: %sn,ptrprintf(该房间入住的客人是: %sn,ptr-name); 该房间入住的客人是 printf(客人的身份证号是: %sn,ptrprintf(客人的身份证号是: %sn,ptr-ID); 客人的身份证号是 printf( printf( 客 客 人 人 的 开 的 始 结 入 束 住 时 时 间 间 %d-%d-%dn,ptr-begin.year,ptr-begin.month,ptr是: %d-%d-%dn,ptr-begin.year,ptr-begin.month,ptr-begin.day); %d-%d-%dn,ptr-end.year,ptr-end.month,ptr是: %d-%d-%dn,ptr-end.year,ptr-end.month,ptr-end.day); n1=tian(ptrn1=tian(ptr-begin); n2=tian(ptrn2=tian(ptr-end); printf(客人入住天数为: %dn,n2printf(客人入住天数为: %dn,n2-n1); 客人入住天数为 printf(客人入住房间价格为: %dn,ptrprintf(客人入住房间价格为: %dn,ptr-price); 客人入住房间价格为 /*实现指针的挂链*/ /*实现指针的挂链*/ 实现指针的挂链 tailtail-next=p; printf(客人入住总费用为是: %d n,ptrprintf(客人入住总费用为是: %dnn,ptr-expense); 客人入住总费用为是 n+; printf(共查询到%d 条记录! printf(共查询到%d 条记录!n,n); 共查询到 number,struct void allprice(int number,struct time begin,struct time end,struct kehu_information *head) struct kehu_information *ptr; int i,n1,n2,n3,n4,sum,price,sum2=0; n1=tian(begin); n2=tian(end); for(i=0;inext) if(number=ptrif(number=ptr-num) n3=tian(ptrn3=tian(ptr-begin); n4=tian(ptrn4=tian(ptr-end); if(n1n4|n2n3) sum=0; else if(n2=n3) sum=price*(n2sum=price*(n2-n1); if(n2=n4&n1=n4&n1=n3) sum=price*(n4sum=price*(n4-n3); else if(n1=n3&n2begin); n2=tian(pn2=tian(p-end); if(head=NULL) result=1; else for(ptr2=head;ptr2;ptr2=ptr2for(ptr2=head;ptr2;ptr2=ptr2-next) if(p-num=ptr2if(p-num=ptr2-num) break; if(ptr2=p) if(ptr2=p) result=1; else for(ptr2=head;ptr2;ptr2=ptr2for(ptr2=head;ptr2;ptr2=ptr2-next) if(p-num=ptr2if(p-num=ptr2-num) n3=tian(ptr2n3=tian(ptr2-begin); n4=tian(ptr2n4=tian(ptr2-end); if(n3n2)|(n1n4) result=1; continue; else result=0; break; return result; 问题描述 已知在酒店中有 10 个房间, 每个房间的信息包括房间号, 每天住宿价格, 设计一程序, 完成以下功能: 1) 从键盘输入客户的入住信息(包括:客户姓名,身份证号,开始入住时间,退房

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论