最新要闻
- 班主任请全班女生喝奶茶:高考前还要请学生吃寓意为“高中”粽子
- 当前资讯!空乘招聘排队7小时面试3分钟 空姐空少挤满现场:有航空公司给年薪33万
- 【世界新要闻】七彩虹进军元宇宙!推出首款免费NFT、神秘实体权益
- 每日简讯:14.5英寸杜比视界大屏!联想拯救者Y900屏幕参数公布
- 张颂文回应沙漠捡垃圾被剧组丢下:临时租车司机行为
- 【独家焦点】三星Galaxy Tab S9系列平板曝光:Ultra机型首上IP67防尘防水
- 天天通讯!女足U20国青6-0横扫菲律宾,一场大胜,往往只需要简单的战术
- 世界即时看!匈牙利舞曲第五号_匈牙利舞曲
- 2月汽车销量前8名油车仅剩2个 比亚迪宋力压特斯拉Model Y
- 每日速递:1100万元的捐赠没给 中国矿业大学起诉90后校友
- 东北大熊猫着急下班 哐哐敲铁门:网友心酸想起在美丫丫 蜂花将认养?
- 世界观点:民族品牌蜂花将认养大熊猫丫丫 官方回应属实:加快与美国办理手续
- Android 14首个公测版要来!Google I/O 2023定档5月10日
- 环球要闻:AMD狂堆缓存!锐龙9 7950X3D游戏性能遥遥领先
- 天天最新:核聚变之后 美国团队宣布突破常温超导技术:颠覆物理学
- 天天快看点丨国内手游一哥出海!腾讯《王者荣耀》正式于巴西上线
广告
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
【C++】购书系统问题测试&功能补充
代码来源:舍友大一的C++作业【代码存在的问题】
(资料图片)
在菜单界面选择对应序号时,若输入值非数字,而是字母等其它符号,会导致程序陷入循环,无法正常进入功能的下一步
原代码展示:
int main() { system("color 8E"); int k,i,choose,orderflag=1; double t_sum; book* head = new book; trolley* head2 = new trolley; layfolk* l_head = new layfolk; member* m_head = new member; honoured_guest* h_head = new honoured_guest; historyorder* o_head = new historyorder; head->Loaddata(head); l_head->loaddata(l_head); m_head->loaddata(m_head); h_head->loaddata(h_head); string ch; while (1) { system("color 8E"); system("cls"); printf("\n\n\n"); printf("\t\t\t\t+-----------TouhouBookStore-----------+\n"); printf("\t\t\t\t|--------------东方铃奈庵-------------|\n"); printf("\t\t\t\t+-------------网上购书系统------------+\n"); printf("\t\t\t\t+-------------------------------------+\n"); printf("\t\t\t\t|\t1 查看历史订单\t\t |\n"); printf("\t\t\t\t|\t2 查看个人会员信息\t |\n"); printf("\t\t\t\t|\t3 查看店内书籍\t\t |\n"); printf("\t\t\t\t|\t4 搜索店内书籍\t\t |\n"); printf("\t\t\t\t|\t5 购买书籍\t\t |\n"); printf("\t\t\t\t|\t6 结算\t\t\t |\n"); printf("\t\t\t\t|\t7 退出\t\t\t |\n"); printf("\t\t\t\t+-------------------------------------+\n"); printf("\n\n\n"); printf("\t\t\t\t请输入你想实现的功能前的代号:\n"); printf("\t\t\t\t"); cin >> k;switch(k) { case 1: { cout<<"您的身份是:"<>choose; switch(choose) { case 1: { o_head->m_display(head2,m_head);break; } case 2: { o_head->h_display(head2,h_head);break; } case 3: { o_head->l_display(head2,l_head);break; } default:break; } break; } case 2: { system("cls"); cout<<"\n请选择您的会员身份:\n"< >k; while(!k) { cin.clear(); cin.sync(); k=-1; break; } system("cls"); if(k==1) { m_head->find(m_head);system("pause"); } else if(k==2) { h_head->find(h_head);system("pause"); } else if(k==3) { l_head->find(l_head);system("pause"); } else { cout<<"请输入正确的序号!"< display(head);system("pause");break; case 4: { cout<<"请选择搜索方式:"<<"\n\n"; cout<<"1.按照书名搜索\t2.按照作者名字搜索\t3.按关键字搜索"<<"\n\n"; cout<<"请输入你想要选择的方式序号:"; cin>>k; while(!k) { cin.clear(); cin.sync(); k=-1; break; } system("cls"); if(k==1) { head->find_name(head);system("pause"); } else if(k==2) { head->find_author(head);system("pause"); } else if(k==3) { head->find_critical(head);system("pause"); } else { cout<<"请输入正确的序号!"< Addbook(head2,head);system("pause");break; case 6: { t_sum=head2->count(head2); if(t_sum==-1) { system("pause"); break; } cout<<"您的身份是:"< >choose; switch(choose) { case 1: { orderflag=o_head->m_storage(head2,m_head,t_sum); if(orderflag!=-1) { cout<<"请进行下一步支付步骤"<<"\n\n"; system("pause"); head2->pay(); head2->remake(head2); } break; } case 2: { orderflag=o_head->h_storage(head2,h_head,t_sum); if(orderflag!=-1) { cout<<"请进行下一步支付步骤"<<"\n\n"; system("pause"); head2->pay(); head2->remake(head2); } break; } case 3: { orderflag=o_head->l_storage(head2,l_head,t_sum); if(orderflag!=-1) { cout<<"请进行下一步支付步骤"<<"\n\n"; system("pause"); head2->pay(); head2->remake(head2); } break; } default:break; } break; } case 7: head->Savedata(head);return 0; case 8: head->Addbook(head);break; case 9: { system("cls"); cout<<"\n请选择要进行添加的顾客信息:\n\n"; cout<<"1.添加新会员\t2.添加新贵宾\t3.添加普通顾客信息\n\n"; cout<<"请输入对应序号:"; cin>>k; while(!k) { cin.clear(); cin.sync(); k=-1; break; } system("cls"); if(k==1) { m_head->addm(m_head);m_head->savedata(m_head);system("pause"); } else if(k==2) { h_head->addh(h_head);h_head->savedata(h_head);system("pause"); } else if(k==3) { l_head->addl(l_head);l_head->savedata(l_head);system("pause"); } else {cout<<"请输入正确的序号!"< 【问题产生的原因】
由于接收数值的变量k为int类型,在接收字母或其它字符等char类型时,导致程序出现问题
【解决方案】
应用cin.clear()更改cin的异常状态标识,再用cin.sync()函数对缓冲区中的数据流进行清理,然后给变量k赋值为-1,进入switch选择后将跳转至default一列,随后结束此次循环。后续代码运行将恢复正常。
//将这几行代码嵌入至给变量k赋值的 cin>>k; 之后即可while(!k) { cin.clear(); cin.sync(); k=-1; break; }【修改后的代码】
int main() { system("color 8E"); int k,i,choose,orderflag=1; double t_sum; book* head = new book; trolley* head2 = new trolley; layfolk* l_head = new layfolk; member* m_head = new member; honoured_guest* h_head = new honoured_guest; historyorder* o_head = new historyorder; head->Loaddata(head); l_head->loaddata(l_head); m_head->loaddata(m_head); h_head->loaddata(h_head); string ch; while (1) { system("color 8E"); system("cls"); printf("\n\n\n"); printf("\t\t\t\t+-----------TouhouBookStore-----------+\n"); printf("\t\t\t\t|--------------东方铃奈庵-------------|\n"); printf("\t\t\t\t+-------------网上购书系统------------+\n"); printf("\t\t\t\t+-------------------------------------+\n"); printf("\t\t\t\t|\t1 查看历史订单\t\t |\n"); printf("\t\t\t\t|\t2 查看个人会员信息\t |\n"); printf("\t\t\t\t|\t3 查看店内书籍\t\t |\n"); printf("\t\t\t\t|\t4 搜索店内书籍\t\t |\n"); printf("\t\t\t\t|\t5 购买书籍\t\t |\n"); printf("\t\t\t\t|\t6 结算\t\t\t |\n"); printf("\t\t\t\t|\t7 退出\t\t\t |\n"); printf("\t\t\t\t+-------------------------------------+\n"); printf("\n\n\n"); printf("\t\t\t\t请输入你想实现的功能前的代号:\n"); printf("\t\t\t\t"); cin >> k; while(!k) { cin.clear(); cin.sync(); k=-1; break; }switch(k) { case 1: { cout<<"您的身份是:"<>choose; switch(choose) { case 1: { o_head->m_display(head2,m_head);break; } case 2: { o_head->h_display(head2,h_head);break; } case 3: { o_head->l_display(head2,l_head);break; } default:break; } break; } case 2: { system("cls"); cout<<"\n请选择您的会员身份:\n"< >k; while(!k) { cin.clear(); cin.sync(); k=-1; break; } system("cls"); if(k==1) { m_head->find(m_head);system("pause"); } else if(k==2) { h_head->find(h_head);system("pause"); } else if(k==3) { l_head->find(l_head);system("pause"); } else { cout<<"请输入正确的序号!"< display(head);system("pause");break; case 4: { cout<<"请选择搜索方式:"<<"\n\n"; cout<<"1.按照书名搜索\t2.按照作者名字搜索\t3.按关键字搜索"<<"\n\n"; cout<<"请输入你想要选择的方式序号:"; cin>>k; while(!k) { cin.clear(); cin.sync(); k=-1; break; } system("cls"); if(k==1) { head->find_name(head);system("pause"); } else if(k==2) { head->find_author(head);system("pause"); } else if(k==3) { head->find_critical(head);system("pause"); } else { cout<<"请输入正确的序号!"< Addbook(head2,head);system("pause");break; case 6: { t_sum=head2->count(head2); if(t_sum==-1) { system("pause"); break; } cout<<"您的身份是:"< >choose; switch(choose) { case 1: { orderflag=o_head->m_storage(head2,m_head,t_sum); if(orderflag!=-1) { cout<<"请进行下一步支付步骤"<<"\n\n"; system("pause"); head2->pay(); head2->remake(head2); } break; } case 2: { orderflag=o_head->h_storage(head2,h_head,t_sum); if(orderflag!=-1) { cout<<"请进行下一步支付步骤"<<"\n\n"; system("pause"); head2->pay(); head2->remake(head2); } break; } case 3: { orderflag=o_head->l_storage(head2,l_head,t_sum); if(orderflag!=-1) { cout<<"请进行下一步支付步骤"<<"\n\n"; system("pause"); head2->pay(); head2->remake(head2); } break; } default:break; } break; } case 7: head->Savedata(head);return 0; case 8: head->Addbook(head);break; case 9: { system("cls"); cout<<"\n请选择要进行添加的顾客信息:\n\n"; cout<<"1.添加新会员\t2.添加新贵宾\t3.添加普通顾客信息\n\n"; cout<<"请输入对应序号:"; cin>>k; while(!k) { cin.clear(); cin.sync(); k=-1; break; } system("cls"); if(k==1) { m_head->addm(m_head);m_head->savedata(m_head);system("pause"); } else if(k==2) { h_head->addh(h_head);h_head->savedata(h_head);system("pause"); } else if(k==3) { l_head->addl(l_head);l_head->savedata(l_head);system("pause"); } else {cout<<"请输入正确的序号!"< 【二次开发所添加的功能】
在功能5购买书籍中,用户在使用的过程体验并不佳,因为无法直观看到自己已经选中了哪些书籍,故在此添加一个“购物车”形式的展示功能
【代码实现】
void trolley::display(trolley* t){ if (t->next == NULL) { cout << "目前购物车内无信息!\t\t" << endl; cout << "—————————————————————————————————————————————————————————\n"; } else { cout << "\n您的购物车中目前有以下书籍:" << endl; cout << "—————————————————————————————————————————————————————————\n"; t = t->next; int n = 1; while (1) { cout << "NO." << n << ":" << "\t" << endl; cout << "—————————————————————————————————————————————————————————\n"; cout << "书号:" << t->book_ID << "\t"; cout << "书名:《" << t->book_name << "》" << "\t"; cout << "作者:" << t->author << "\t"; cout << "出版社:" << t->publishing << "\t"; cout << "定价:" << t->price << "\t"; cout << "购买份数:" << t->num << endl; cout << "—————————————————————————————————————————————————————————\n"; if (t->next == NULL) break; else { t = t->next; n++; } } }}void trolley::Addbook(trolley* t, book* m){ trolley* hd = t; book* hd2 = m; trolley* p; trolley* p1; string t_name, ch; int n=0, flag = 0; while (1) { system("cls"); flag = 0; t->display(hd); cout << "\n是否继续添加书籍?\n"; cout << "Y)继续添加\tN)返回主菜单\tD)删除订单" << endl; cin >> ch; if (ch == "Y" || ch == "y"); else if (ch == "N" || ch == "n")return; else if (ch == "D" || ch == "d") { hd->Delete_t(hd); system("pause"); continue; } else { cout << "请输入正确指令" << endl; system("pause"); continue; } while (t->next != NULL) { t = t->next; } p = new trolley; t->next = p; p->next = NULL; cout << "请输入想购买的书名:" << endl; cin >> t_name; m = hd2; while (1) { if (m->book_name == t_name) { ++n; cout << "NO." << n << ":" << "\t" << endl; cout << "—————————————————————————————————————————————————————————\n"; cout << "书号:" << m->book_ID << "\t"; cout << "书名:《" << m->book_name << "》" << "\t"; cout << "作者:" << m->author << "\t"; cout << "出版社:" << m->publishing << "\t"; cout << "定价:" << m->price << "\n"; cout << "—————————————————————————————————————————————————————————\n\n"; cout << "请问是否确认购买该书籍?" << "\n\n"; cout << "1)Y\t2)N" << "\n\n"; cin >> ch; if (ch == "N" || ch == "n") { t->next = t->next->next; } if (ch == "Y" || ch == "y") { cout << "请输入您想要购买的份数:"; cin >> n; p1 = hd; while (p1 != t) { if (p1->next->book_name == t_name) { p1->next->num += n; t->next = t->next->next; flag = 1; break; } p1 = p1->next; } if (flag == 1)break; p->book_ID = m->book_ID; p->book_name = t_name; p->author = m->author; p->publishing = m->publishing; p->price = m->price; p->num = n; t = p; } } if (m->next == NULL && n == 0) { cout << "没有名为《" << t_name << "》的书籍" << endl; break; } if (m->next == NULL) { break; } m = m->next; } cout << "是否继续购买?" << endl; cout << "Y)继续购买\tN)返回主菜单" << endl; cin >> ch; if (ch == "Y" || ch == "y"); if (ch == "N" || ch == "n")break; }}如此一来,用户便能够清楚地看到自己所购买的书籍内容了关键词:
环球消息!0.vim常用命令
【C++】购书系统问题测试&功能补充
环球热门:Celery框架的基本使用与介绍
班主任请全班女生喝奶茶:高考前还要请学生吃寓意为“高中”粽子
当前资讯!空乘招聘排队7小时面试3分钟 空姐空少挤满现场:有航空公司给年薪33万
通用表表达式
【全球独家】关于docker镜像IMAGE的备份和还原操作
【世界新要闻】七彩虹进军元宇宙!推出首款免费NFT、神秘实体权益
每日简讯:14.5英寸杜比视界大屏!联想拯救者Y900屏幕参数公布
张颂文回应沙漠捡垃圾被剧组丢下:临时租车司机行为
【独家焦点】三星Galaxy Tab S9系列平板曝光:Ultra机型首上IP67防尘防水
天天通讯!女足U20国青6-0横扫菲律宾,一场大胜,往往只需要简单的战术
世界即时看!匈牙利舞曲第五号_匈牙利舞曲
2月汽车销量前8名油车仅剩2个 比亚迪宋力压特斯拉Model Y
每日速递:1100万元的捐赠没给 中国矿业大学起诉90后校友
东北大熊猫着急下班 哐哐敲铁门:网友心酸想起在美丫丫 蜂花将认养?
世界观点:民族品牌蜂花将认养大熊猫丫丫 官方回应属实:加快与美国办理手续
Android 14首个公测版要来!Google I/O 2023定档5月10日
全球速讯:内网穿透的高性能的反向代理应用FRP-自定义404错误页【实践可行版】
明解Redis(一)概述
环球要闻:AMD狂堆缓存!锐龙9 7950X3D游戏性能遥遥领先
天天最新:核聚变之后 美国团队宣布突破常温超导技术:颠覆物理学
天天快看点丨国内手游一哥出海!腾讯《王者荣耀》正式于巴西上线
【环球热闻】日本双胞胎姐妹身高相差75厘米 获吉尼斯纪录认证
提升国民平均寿命25岁?创维汽车:让每位车主实现基本百岁人生
全球微速讯:Node 非服务脚本调试
分享一个可以早点下班的开发小技巧
【环球报资讯】SpringBoot启动控制台的banner是怎么回事
环球新资讯:AppUploader教程:如何注册账号并激活AppUploader
全球快看点丨Android工程接入UnityLibrary工程
【聚看点】存储一哥扛不住了!三星在售最旗舰SSD 990 PRO降至史低价
天天速看:15万买特斯拉 那得多“毛坯”?成本降50%是文字游戏
原生PCIe 5.0更安全!酷冷至尊GX1250 GOLD电源评测:满载电压偏移<0.1%
环球今热点:不再烧主板!ROG 2023系列内置环境光传感器:见光自动断电
索尼PS中国发文祝4位游戏女角节日快乐:蒂法、希里等出镜
全球微头条丨潍坊市寒亭区举行庆“三八”专场招聘会
k8s-安全机制
Docker全家桶入门到进阶教程,Docker快速上手
焦点滚动:Docker入门到高级教程(一)Docker 的用途
当前热议!卡车
前沿热点:小心上当 国外免费软件被不良人士玩坏:收费299
环球消息!比亚迪开通苹果NFC数字车钥匙功能 两款车型已支持
魅族换新Logo了!魅族20系列官宣定档3月30日
每日速讯:未获版号就擅自出版网络游戏 重庆一公司被罚45万元
在鸡面前画条直线为何它呆住不动 科普:只是在装死
每日报道:qiankun 的使用
当前热议!Linux常用的20个命令(下)
【天天播资讯】Linux网卡驱动程序
讯息:(数据库系统概论|王珊)第十一章并发控制-第一节:并发控制概述
【环球速看料】如何轻松学习网页设计和网页编程?
当猛男遇上脱毛仪:用前抗拒、用后真香
终身质保成笑话?女车主购入威马新车三年维保无配件
Win11不支持拖动任务栏 强行修改注册表后:画面尴尬了
快播:爱吃辣的人不容易得糖尿病?是真的吗?
天天观焦点:你的护照又升值了!我国与马尔代夫互免签生效 浏览量暴增200%
环球时讯:凌云B股(900957)3月8日主力资金净卖出558.00元
全球观察:跨境电商卖家如何应对拒付、盗卡
热推荐:前端设计模式——观察者模式
热消息:代码审计之旅之百家CMS
环球头条:Paxos算法理解与java实现
环球消息!5、Redis慢日志和key有效期
今日聚焦!锐龙7000无缘单条48GB DDR5内存!点亮后却无法启动
每日热门:卖断货!湖北最强汽车补贴火了 有人“从业十年没见过”
每日热门:4.5级后广东河源再次发生3.4级地震:官方科普地震来了怎么办
全球观察:全年出货量仅2.6亿 PC电脑透心凉:复苏要等Win12
全球通讯!ChatGPT版佛祖爆火出圈:施主、说出你的烦恼
GO语言学习笔记-数据篇 Study for Go ! Chapter four - Data
全球速读:Go 数据结构
精彩看点:如何搞定MySQL锁(全局锁、表级锁、行级锁)?这篇文章告诉你答案!太TMD详细了!!!
最新资讯:vue组件更新引起组件更新的原因,如何引发组件的更新
播报:【JavaScript UI库和框架】上海道宁与Webix为您提供用于跨平台Web应用程序开发的JS框架及UI小部件
全球速看:平板电脑怎么连接wifi
8元保号没了!中国移动广东出手:最便宜4G套餐撤掉 同步下架5G全家享套餐
319元 小米米家智能直流变频塔扇2上市:吹一夏天电费仅0.65元
快看点丨燃油、纯电、混动:买轻卡你会选择谁?
柳宗元最著名的十首诗是什么?柳宗元在柳州的故事
天天通讯!基德谈欧文末节独砍17分:这就是他 他喜欢帮助他的球队赢球
天天微速讯:3张思维导图读懂 《钢铁是怎样炼成的》
VUE定时器任务(每天12点执行)
信息:mysql invalid conn排查
全球观速讯丨CNStack 多集群服务:基于 OCM 打造完善的集群管理能力
即时看!关于docker中-容器的管理操作-删除
韩国西江大学留学条件和费用是什么?韩国西江大学怎么样?
代课老师的养老保险什么时候启动?代课教师养老保险政策有哪些?
焦点热门:可抵抖音干半年!TVB淘宝直播间首播销售额达2350万
全球看点:一年脱轨1000次!美国俄亥俄州再发生铁路事故 卡车撞上火车
满满正能量!小学生拾得价值16万黄金后续:物归原主、获助学礼包
向残疾熊猫福菀泼水3游客身份未确定:初步断定为3女娃
一键开盖 耐热抗摔:哈尔斯Tritan材质单手开盖水杯15.9元发车
光棍节的由来和含义是什么?光棍节活动策划书
办公室副主任是什么级别?办公室副主任年度述职报告
手机厂商钟情的黄色配色 原来诺基亚十年前就有了
大小仅3.7GB:大佬基于Win10魔改经典WinXP系统
每日快报!为眼睛降低ISO感光度!万新偏光太阳镜大促:39.4到手 原价139元
焦点速递!跑车底盘+大电池!开了两天哪吒S 想把我的油车卖了
行走的27寸超大平板!小度推出添添闺蜜机 首发4999元
win7电脑怎么开启telnet命令?telnet命令的作用是什么?
暖暖环游世界怎么看收集度?暖暖环游世界兑换码2023
Win10系统怎么安装杜比音效驱动?杜比音效和普通音效有什么区别
中兴天机7哪个版本音质最好?中兴天机7手机参数