影碟租赁租赁者管理课程设计(编辑修改稿)内容摘要:

选择的删除方式,输入要删除租赁信息的租赁者名字或编号,进行查找,若查找成功,则删除相关租赁信息,同时对租借者数量进行减操作;查找失败,返回失败信息。  删除租赁者信息 函数 void Del_LinkList(LinkList H)的 实现 : void main() { char ch1。 InitNameList()。 CreateHashList ()。 do { printf(D. 显示哈希表 \nF. 查找 \nQ. 退出 \n 请选择: )。 cinamp。 ch1。 switch(ch1) { case 39。 D39。 :Display()。 coutendl。 break。 case 39。 F39。 :FindList()。 coutendl。 break。 case 39。 Q39。 :exit(0)。 } coute on !(y/n):。 cinamp。 ch1。 }while(ch1!=39。 n39。 )。 } 13 ( 6) 租赁信息的查找  首先提示用户选择相应的查找方式 :按姓名 查找 信息、按编号 编号 信息。  根据用户选择的 查找 方式,输入要 查找 租赁信息的租赁者名字或编号,进行查找,若查找成功,则 输出 相关租赁信息;查找失败,返回失败信息。  查找 租赁者信息 函数 LinkList Search(LinkList H)的 实现 : LinkList Search(LinkList H) //查找功能函数定义 { int k1,x。 LinkList p。 char name[20]。 long int num。 do { p=H。 printf(请选择: \t1,按租赁者姓名查询 \t2,按租赁者编号查询 \t0,退出查询 \n)。 printf(请选择: )。 scanf(%ld,amp。 k1)。 if(k1==1) //按租赁者姓名查询 { printf(请输入租赁者姓名: )。 scanf(%s,name)。 while(p) { if(equal(p,name)==1) //查找租赁者姓名 { printf(查找成功 !\n)。 Printff(p)。 break。 } else p=pnext。 } if(!p) { printf(查找失败,未注册。 \n)。 } } if(k1==2) //按租赁者编码查询 { printf(请输入租赁者编码(数字 ): )。 scanf(%ld,amp。 num)。 while(p) { 14 if(p==num) { printf(查找成功 !\n)。 Printff(p)。 break。 } else p=pnext。 } if(!p) { printf(查找失败,未注册。 \n)。 } } if(k1==0) return(NULL)。 printf(继续查找 8;其他数字退出查找 \n请输入: )。 scanf(%d,amp。 x)。 }while(x==8)。 return p。 } ( 7) 按日期查找租赁信息  根据用户输入的日期,进行查找,若查找到相关日 期有会员注册或者有影碟租赁出去,则返回相关注册信息或者租赁信息  按日期查找函数 void Search_Time(LinkList H)的实现: void Search_Time(LinkList H) //按日期查询租赁信息 { LinkList p。 long int time。 int i=0,x,j=0,k=0。 do { p=H。 printf(请输入日期(格式) :)。 scanf(%ld,amp。 time)。 while(p) //遍历查找 { if(p==time) { i++。 //统计数量 Printff(p)。 } if(p!=time) { 15 while(jp) { if(p[j]==time) {Printff(p)。 k++。 } j++。 } } j=0。 p=pnext。 } printf(共有 %d人在 %ld注册 \n,i,time)。 printf(共有 %d人在 %ld租借影碟 \n,k,time)。 k=0。 i=0。 printf(继续按日期查询 8;其余输入退出查询 \n请输入: )。 scanf(%d,amp。 x)。 }while(x==8)。 } ( 8) 显示所有租赁者的租赁信息  显示出所有租赁者的租赁信息,包括: 租赁者 注册时间、租赁时间、对应时间的租赁影碟的名称、租赁影碟的数量、租赁押金、租赁者的编号。  函数 void browsing(LinkList H)的实现: void browsing(LinkList H) //显示所有租赁者的信息 { LinkList p。 int k8=1。 p=Hnext。 if(p==NULL) printf(表为空 !)。 while(p) { printf(第 %d个租赁人信息: \n,k8)。 Printff(p)。 k8++。 p=pnext。 } } ( 9) 输出函数 函数 void Printff(LinkList p)的实现: void Printff(LinkList p) //输出函数 { int i=0。 printf(租赁者姓名 : %s 租借影碟数量 : %d 押金 : %f\n注册日期 : %ld 租赁者编号 :%ld\n 16 ,p,p,p,p,p)。 while(ip) { printf(租赁日期: %d 对应的 ,p[i])。 printf(影碟名字: %s\n,p[i])。 i++。 } } ( 10) 将内存链表以文本文件的形式写入外存储器 函数 void WriteCDdata(LinkList H)的实现: void WriteCDdata(LinkList H) { LinkList p。 fstream cddata。 (影碟租赁租赁者管理 .txt,ios::out)。 if(!cddata) printf(文件打开失败 !)。 else { p=Hnext。 if(p==NULL) printf(链表为空,无法完成信息存入硬盘 !)。 else { while(p) { ((char*)amp。 (p),sizeof(p))。 ((char*)amp。 (p),sizeof(p))。 ((char*)amp。 (p),sizeof(p))。 ((char*)amp。 (p),sizeof(p))。 ((char*)amp。 (p),sizeof(p))。 ((char*)amp。 (p),sizeof(p))。 ((char*)amp。 (p),sizeof(p))。 p=pnext。 } } } ()。 } ( 11) 人机交互的实现 主函数 void main( )的实现: void main( ) // 主函数,菜单形式 { int key=0。 LinkList H。 17 char l。 H=Creat_LinkList( )。 printf(欢迎使用影碟租赁者管理系统 \n)。 printf(由于现在没会员注册,请先注册会员: \n)。 Add_LinkList(H)。 // 主菜单内容 do { printf( $$$$$$$$$\n)。 printf( * 0 退出系统 *\n)。 printf( * 1 查询租赁者 *\n)。 printf( * 2 添加新租赁 者 *\n)。 printf( * 3 修改租赁数量 *\n)。 printf( * 4 删除租赁者 *\n)。 printf( * 5 查看所有租赁者 *\n)。 printf( * 6 按日期查询 *\n)。 printf( * 7 保存成文件 *\n)。 printf( $$$$$$$$$\n)。 printf(请选择 : )。 scanf(%d,amp。 key)。 printf(\n)。 switch(key) { case 0: printf(你选择退出系统,谢谢使用 !\n)。 return。 break。 case 1: Search(H)。 printf(\n)。 break。 case 2: Add_LinkList(H)。 printf(\n)。 break。 case 3: Revise_LinkList(H)。 printf(\n)。 break。 case 4: Del_LinkList(H)。 printf(\n)。 break。 case 5: browsing(H)。 printf(\n)。 break。 case 6: Search_Time(H)。 printf(\n)。 break。 case 7: WriteCDdata(H)。 printf(\n)。 break。 default: printf(你的选择有误 !\n)。 } printf(继续 Y;退出 N\n)。 printf(请选择 : )。 scanf(%s,amp。 l)。 }while(l==39。 Y39。 ||l==39。 y39。 )。 } 18 函数模块 模块调用关系 程序流程图 本次程序流程图如下 主函数 main 添加信息模块 删除信息模块 修改信息模块 文件写入模块 信息显示模块 按时间查找信息模块 查找信息模块 19 开始 添加成员函数 0 退出 1 查询 2 添加 3 修改 4 删除 5 查看 6. 日期查询 7 存文件 查询信息 添加信息 修改信息 删除信息 按日期查询 显示全部信息 以文件存入 1 2 3 4 5 6 7 8 继续 其他数字,退出 8 8 Y 继续 N 退出 其他数字 Y 结束 N 20 调试中的问题 经过对 影碟租赁和系统的 研究后,即进行程序的设计和编码;将原程序编好后,经过编译,有如下几个问题:  链表的头结点不存放信息,仅作链表的表示起点,因此每次对链表的增加或查找应从第二个结点开始,即从 Hnext 开始。  增加新的租赁者信息的函数 void Add_LinkList(LinkList H)中,采用尾插法插入,因此插入点是最后一个结点,而不是第二个结点,开始以第二个结点作为插入点,在插入后没有将第二个结点后的结点用指针。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。