课程设计报告影碟租赁系统(编辑修改稿)内容摘要:

数 图 8 出租模块结构流程图 输入待查询影碟的编号,从库存文件中查询相关信息,找到后打印出来,否则库存中不存在,退出。 查询模块结构流程图如图 9 所示。 影碟库存查询 该模块用于实现库存文件的读取,将文件中所有信息打印到给管理员。 影碟出租信息查询 该模块用于出租文件 信息的读取,将文件中出租的信息打印到屏幕上。 面向对象程序设计课程设计 —— 影碟 租赁 系统 10 开 始操 作 选 择 菜 单输 入 选 择 2输 入 待 查 询 编 号库 存 存 在N打 印 影 碟 信 息Y结 束 图 9 查询模块结构流程图 程序设计 各模块的程序设计将分六节进行具体描述。 影碟入库模块(增加影碟信息模块) ( 1) 数据结构设计 用文件的读指针 ReadFile 读取文件中每行的信息,读出后放到数组中暂存,将记录文件行数变量加 1,知道读到文件结尾,开始入库信息初始化。 定义基类的对象指针 p, p2, p 指向当前队列的最后, p2 指向 p 的后继指针,将刚 初始化的空间连接到当前队列最后,实现影碟信息的增加。 检查输入信息错误,若要删除,则将 p2 的后继指针,指向 p 的后继指针, delete p2。 ( 2) 关键 代码设计 及 相关注释 ifstream ReadFile。 //输入流文件 int n=1。 char line[512]。 //用于读取文件内容 (,ios::in)。 //ios::in 表示以只读的方式读取文件 if (!ReadFile) //如果数据文件不存在 ,创建文件 { „„ } else //文件存在 面向对象程序设计课程设计 —— 影碟 租赁 系统 11 { while(!()) //控制读到文件结束就停止 { (line,512,39。 \n39。 )。 //一次读取一行 n++。 } //每读取一行记录行数变量加 1 } cout添加时请从 n号开始编号入库 !endl。 ()。 //关闭文件 cout\n** 增加影碟的相关信息 **\n。 video *p = GL。 //影碟类的对象指针 while(pnext) //将 p 指向当前队列的最后一个,在其后面实现插入。 p = pnext。 char ch。 video *p2。 for(int i = 0。 i 10。 i++) { int s=0。 //用于记录是否修改了输入内容 cout输入影碟分类码 [1=CD, 2=DVD, 3=VCD]:。 cinch。 switch(ch) { case 39。 139。 : p2=new CD。 //用 new 来申请新的空间 break。 case 39。 239。 : „„ } pnext = p2。 //将新申请的空间插入到当前队列的最后 p2Input()。 //对此空间进行初始化 cout是否需要检查当前输入后再入库:( y/n)。 //用于修改输入信息 cinch。 if(ch == 39。 Y39。 || ch == 39。 y39。 ) { „„ //省略 p2Output()。 //输出刚刚输入的信息用来检查输入 cout是否需要删除重写:( y/n)。 //如果输入错误,删除后重新输入 cinch。 if(ch == 39。 Y39。 || ch == 39。 y39。 ) { p2next=pnext。 //将当前队列中最后一个对象指针的后继指针指向自己 delete p2。 //删除刚刚添加进来的需要修改的对象的内容 cout成功删除。 endl。 s=1。 //标记修改,若修改了 ,则为 1,提示后面不需保存 } } if(s==0) //若没有修改,则入库,即写入文件中 面向对象程序设计课程设计 —— 影碟 租赁 系统 12 { ofstream read(, ios::app)。 //ios::app 读取文件并在文件后面进行追加 „„ } p = pnext。 //p 指向当前队列的最后,用来连接继续入队的队列 printf(是否继续输入: (Y/N)?)。 „„ } } 影碟出租模块 ( 1)数据结构设计 定义文件输出流指针 read,将从文件中读出 的影碟编号放到 string 类型的变量中,将待出租的影碟编号同样放到 string 类型的变量中,若匹配相同,则读取该行信息分别放入不同的 string 类型变量中,并打印此行信息,否则 read 指针后移,直到遇到换行符后换行读取下一行的编号,继续匹配 .将待出租的影碟的库存,租价,出租数目用 atoi()转化为整形,进而进行计算。 再将 read 指针回退到库存地址空间, ios::cur 覆盖写入出租后的库存。 ( 2) 关键代码设计及 注释 void Store::sent() //出租 { string sno,sname,stype,sdate,sentNum,sstore,sprice,choice。 //出租的编号,名字,类别,日期,数目,库存,租价 ,将出租的编号 char Day[3]。 double allprice。 //租金 int day。 //租出去的天数 fstream read()。 if(!read) { cout文件打开失败。 exit(1)。 } cout请输入待出租影碟编号:。 cinchoice。 while(!()) //读取文件编号进行匹配 { readsno。 if(choice==sno)break。 else { for(int i=0。 i5。 i++) readsno。 } } 面向对象程序设计课程设计 —— 影碟 租赁 系统 13 if(choice==sno) //若库存中存在将要出租的影碟信息,则打印以确定 { cout所要出租的影碟信息如下: endl。 coutsetw(6)编号 setw(11)影碟名称 setw(11)影碟类 别 setw(10)租价 setw(14)入库日期 setw(9) 库存 \n。 readsname。 readstype。 readsprice。 readsdate。 readsstore。 coutsetw(6)snosetw(11)snamesetw(11)stypesetw(10)sprice setw(14)sdatesetw(9)sstoreendl。 cout请输入库存范围内的出租数目:。 cinsentNum。 while(sentNumsstore) //若要出租的数目大于库存,则提示错误,从新输入 { cout库存不足,请重新输入。 cinsentNum。 } cout请输入出租天数 (最多不超过 3 个月,即 90 天 ):。 //对出租的天数进行限制,最多出租 3 个月 cinDay。 while(numCheck(Day) = 0 || strlen(Day) 3 || atoi(Day) 90) { //如果输入错误,提示重新输入 cout输入错误。 请重新输入:。 cinDay。 } day = numCheck(Day)。 //将检验后的合法输入转换为整形 int i=atoi(())。 //将 string类型转换为整形进行计算 int j=atoi(())。 int s=atoi(())。 allprice=i*j*day。 //计算出租的总价 cout总租价为: allpriceendl。 coutsetw(6)编号 setw(11)影碟名称 setw(11)影碟类别 setw(9)租价 setw(12)数目 setw(10)天数 setw(10)总租金 \n。 coutsetw(6)snosetw(11)snamesetw(11)stypesetw(9)sprice setw(12)sentNumsetw(10)daysetw(10)allpriceendl。 ifstream ReadFile。 (出租 .txt,ios::in)。 //ios::in 表示以只读的方式读取文件 if (!ReadFile) //如果数据文件不存在 { char ch。 //定义一个 char型变量用于接收 用户选择 cout不存在“出租 .txt”文件,请先按‘ y’对库存进行设置。 cinch。 //接收用户选择 面向对象程序设计课程设计 —— 影碟 租赁 系统 14 if (ch == 39。 y39。 ) //如果用户按 Y 键 { //创建数据文件 ofstream creat(出租 .txt, ios::out)。 creatsetw(6)编号 setw(11)影碟名称 setw(11)影碟类别 setw(9)租价 setw(12)数目 setw(10)天数 setw(10)总租金 \n。 coutendl已经成功创建“出租 .txt”文件。 endl。 } } ofstream sen。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。