模拟超市收银系统
课程设计超市收银系统

课程设计超市收银系统一、教学目标本课程旨在让学生了解和掌握超市收银系统的基本原理和操作方法。
通过本课程的学习,学生将能够:1.知识目标:理解超市收银系统的工作原理,包括商品扫描、价格查询、支付方式等。
2.技能目标:熟练操作超市收银系统,包括商品扫描、价格查询、支付操作等。
3.情感态度价值观目标:培养学生的实际操作能力,提高他们对信息技术在商业领域应用的认识,增强他们对学习的兴趣和主动性。
二、教学内容本课程的教学内容主要包括以下几个部分:1.超市收银系统的基本原理:介绍超市收银系统的工作原理,包括商品扫描、价格查询等。
2.超市收银系统的操作方法:讲解如何使用超市收银系统进行商品扫描、价格查询、支付操作等。
3.超市收银系统的应用场景:介绍超市收银系统在商业领域的应用,以及其对商业运营的影响。
三、教学方法为了提高学生的学习兴趣和主动性,本课程将采用多种教学方法,包括:1.讲授法:讲解超市收银系统的基本原理和操作方法。
2.案例分析法:分析实际案例,让学生了解超市收银系统在商业领域的应用。
3.实验法:安排实际操作实验,让学生亲身体验超市收银系统的操作。
四、教学资源为了支持教学内容和教学方法的实施,我们将选择和准备以下教学资源:1.教材:选用合适的教材,详细介绍超市收银系统的基本原理和操作方法。
2.多媒体资料:制作多媒体课件,生动展示超市收银系统的工作原理和操作方法。
3.实验设备:准备超市收银机等实验设备,供学生进行实际操作实验。
五、教学评估为了全面、客观地评估学生的学习成果,我们将采取以下评估方式:1.平时表现:观察学生在课堂上的参与度、提问回答等情况,了解他们的学习状态。
2.作业:布置相关作业,检查学生对超市收银系统的理解和掌握程度。
3.考试:安排期末考试,测试学生对超市收银系统知识的掌握和实际操作能力。
评估结果将以分数或等级形式呈现,以便学生和教师了解学生的学习情况。
同时,我们将针对学生的薄弱环节进行有针对性的辅导,以提高他们的学习成果。
c语言课程设计超市收银系统

c语言课程设计超市收银系统一、教学目标本课程旨在通过超市收银系统的设计与实现,让学生掌握C语言编程的基本语法、数据结构及算法,培养学生的实际编程能力和问题解决能力。
通过本课程的学习,学生应能熟练运用C语言进行简单应用程序的开发,理解面向对象编程的基本概念,掌握基本的调试技巧。
在技能目标方面,学生应掌握C语言的基本语法,包括数据类型、运算符、控制结构等;能运用函数进行模块化编程;了解并使用面向对象编程思想,包括类、对象、继承、封装等;掌握基本的算法设计和分析方法,能够编写并调试简单的C 语言程序。
在情感态度价值观目标方面,通过超市收银系统的设计与实现,使学生体验到编程的乐趣,增强对计算机科学的兴趣;培养学生的团队合作意识,提高学生解决实际问题的能力;培养学生勇于探索、创新的精神,以及对编程工作的敬业精神和责任感。
二、教学内容本课程的教学内容主要包括C语言的基本语法、数据结构、面向对象编程和算法设计。
具体包括以下几个部分:1.C语言基本语法:数据类型、变量、运算符、控制结构(循环、分支)、函数等。
2.数据结构:数组、链表、栈、队列等。
3.面向对象编程:类与对象、继承与封装、多态性等。
4.算法设计与分析:排序算法、查找算法、常用算法思想等。
5.超市收银系统的设计与实现:需求分析、系统设计、编码实现、测试与调试等。
三、教学方法为了提高学生的学习兴趣和主动性,本课程将采用多种教学方法相结合的方式进行教学。
1.讲授法:用于讲解C语言的基本语法、数据结构、面向对象编程和算法设计等理论知识。
2.案例分析法:通过分析具体的编程案例,使学生更好地理解编程思想和方法。
3.实验法:让学生通过动手实践,完成超市收银系统的各个模块的设计与实现,提高实际编程能力。
4.小组讨论法:在课程进行过程中,学生进行小组讨论,培养团队合作精神和问题解决能力。
四、教学资源为了支持本课程的教学内容和教学方法的实施,我们将准备以下教学资源:1.教材:《C程序设计语言》(K&R)、《C++ Primer》等。
超市收银系统说明书

超市收银系统设计说明书摘要:随着小超市规模的发展不断扩大,商品数量急剧增加,有关商品的各种信息量也成倍增长。
本文的系统分析了软件开发的背景以过程;首先介绍了软件的开发环境,其次介绍了本软件的详细设计过程:数据库的设计、各个模块的设计和实现,以及具体界面的设计和功能。
系统采用.net+ SQL Server 实现,有良好的人机界面,简单易操作。
关键词:数据库;超市收银系统;序言中小型超市在我国经济发展中具有重要地位,目前我国的中小型超市数量多,地区分布广泛,行业分布跨度大。
随着全球经济一体化的发展和电子商务的兴起,中小型超市之间的竞争将越来越激烈。
网络及电子商务的迅猛发展突破了时间、空间的局限性,给中小型超市带来了更多的发展机会,同时也增大了超市行业间的竞争强度。
这就要求中小型超市必须改变营业管理模式,提高运营效率。
目前,我国中小型超市的信息化水平还很低。
随着技术的发展电脑操作及管理日趋简化,电脑知识日趋普及,同时市场经济快速多变,竞争激烈,超市行业采用电脑管理进货、库存、销售等诸多环节也已成为必然趋势。
总体设计一、设计思想本系统综合了根据大中型超市的实际情况的特点,从界面的设计到系统的使用都是从方便用户使用的角度出发,具有很强的使用性。
本系统可以运行在多种操作系统平台上(Windows xp/Windows2003/Windows 2007)。
数据库管理系统采用主流的MS SQL Server 2005数据库。
用户界面人性化突出,操作简单,使用方便。
符合超市收银的流程需要。
主要功能包括商品入库、商品销售、商品查询、小工具等。
二、需求分析1、可行性分析1.1 技术可行性通过大学二年的计算机基础课程的学习,学生对C语言、数据结构、数据库以及其他计算机方面的知识有了初步了解。
设计一个小型的超市收银系统,从开发工具上来说是可行的。
1.2 操作可行性本网络平台支持Windows 2000、Windows2003、Windows XP和windows7等多种操作系统,客户端能够利用多种浏览器浏览,所以本系统在操作上是可行的。
超市收银c语言课程设计

超市收银c语言课程设计一、课程目标知识目标:1. 学生能理解C语言在超市收银系统中的应用,掌握基本的数据类型、变量、运算符和语法结构。
2. 学生能掌握结构体和数组的使用,实现对商品信息和收银数据的存储与管理。
3. 学生能运用函数和模块化编程思想,实现超市收银系统的各个功能模块。
技能目标:1. 学生能运用C语言编写简单的超市收银系统程序,具备基本的编程能力。
2. 学生能通过调试和修改程序,解决超市收银系统中的常见问题,提高问题解决能力。
3. 学生能运用所学知识,对超市收银系统进行优化和扩展,提高系统性能。
情感态度价值观目标:1. 学生通过课程学习,认识到编程在现实生活中的应用价值,激发对计算机编程的兴趣和热情。
2. 学生在团队协作中学会沟通、分享和合作,培养良好的团队精神。
3. 学生在课程实践中,体验编程带来的成就感,增强自信心,培养积极向上的学习态度。
本课程针对高年级学生,结合C语言学科特点,注重理论与实践相结合。
在教学过程中,关注学生的个体差异,激发学生的兴趣和潜能,培养学生编程思维和实际操作能力。
课程目标明确,分解为具体学习成果,便于后续教学设计和评估。
通过本课程的学习,使学生能够掌握C语言编程技能,为实际应用打下坚实基础。
二、教学内容1. C语言基础语法:数据类型、变量定义、运算符、表达式、输入输出语句。
- 教材章节:第一章至第三章- 进度安排:2课时2. 控制结构:顺序结构、选择结构、循环结构。
- 教材章节:第四章- 进度安排:3课时3. 函数:函数定义、调用、参数传递、递归。
- 教材章节:第五章- 进度安排:3课时4. 结构体与数组:结构体定义、数组应用、结构体数组。
- 教材章节:第六章、第七章- 进度安排:4课时5. 文件操作:文件打开、读写、关闭。
- 教材章节:第十章- 进度安排:2课时6. 超市收银系统设计:需求分析、模块划分、代码编写、系统测试。
- 教材章节:综合应用- 进度安排:5课时教学内容依据课程目标进行选择和组织,注重科学性和系统性。
超市收银系统操作流程

超市收银系统操作流程
1.准备收银台:开启电源、检查扫描枪、打印机、电脑及其他相关设备,确保能正常工作。
2.扫描商品:拿出顾客选择的商品,将商品依次扫描到扫描枪上,系统自动计算出价格并显示在电脑上。
3.输入商品数量:对于数量不止一件的商品,需要输入数量,通过扫描枪自动计算出总价。
4.输入优惠信息:若有优惠信息,如满减、折扣等,需要在电脑上输入对应折扣码或者扫描优惠码。
5.输入会员信息:如有会员卡,需要通过读卡器或者输入会员卡号来获得折扣等优惠。
6.结算:确认商品信息和价格无误后,点击结算,系统自动计算出需要支付的总金额。
7.收款:顾客选择支付方式,如现金、刷卡、支付宝、微信等,超市工作人员完成收款操作。
8.打印小票:收款完成后,打印机自动打印出小票,内容包括商品信息、价格、订单号、支付方式等。
9.清台:收银完毕后,将售出商品和找零全部放好,打扫干净收银台,清除前台屏幕数据和订单信息。
10.下一单:重复以上步骤,处理下一个客户的结算需求。
收银系统操作流程

收银系统操作流程文件编码(GHTU-UITID-GGBKT-POIU-WUUI-8968)“Mu多丫呀”收银系统操作流程1、打开电脑双击电脑桌面“大洋超市收银系统”运行程序2、输入自己的工号和密码进行登陆3、登陆成功后按F2进入大洋超市收银系统前台零售界面4、零售时先按F1鼠标光标到扫条码状态使用扫描枪扫描物品条码按“*”星号更改销售数量鼠标光标到数量栏输入相应的销售数量如遇到条码无法扫描需手动输入条码下边条码数字来选择销售商品销售商品扫描完毕按回车键“ENTER”进入实收金额状态按照顾客实际付款金额输入相应钱数在按“ENTER”回车键将进入需要找零界面钱箱自动打开找完零钱在按“ENTER”回车键销售完成5、销售折扣如同时销售多件商品其中一件需要打折先按照步骤4扫描完商品然后用鼠标单击需要打折的商品次商品整行变成蓝色然后按“F10”选择需要打折的折扣然后按“F2”确定然后继续按照步骤4操作结账6、整单折扣如同时销售多件商品次单需要全部打折需要在扫描商品之前按“F11”设定整单折扣然后确定在开始扫描商品根据步骤4操作结账销售7、删除商品如销售时顾客选择多件商品商品已经扫描到电脑但是顾客有其中一件不想要了用鼠标点击不需要的商品然后按“F3”删除次商品而对整单无影响8、赠送商品按照不走4扫描商品后点击销售界面“赠送商品”然后在弹出的界面点击确定然后结算完成销售9、取消销售如已经扫描商品但是因顾客原因取消此单交易按“F4”出现提示是否确认要取消此次交易按确定此次交易将取消10、在没有销售的情况下打开钱箱按“F5”出现大洋超市收银系统权限验证输入自己的工号和密码点击进入将打开钱箱11、会员卡需要添加新会员时需要在大洋超市收银系统界面选择最下边的会员信息然后弹出会员信息界面根据需要想填写的信息栏填入相应信息如:会员卡号、姓名、会员折扣、证件号为身份证号、手机号码、会员类别等信息然后点击此界面下边的添加完成新会员添加12、会员销售会员销售时先在前台零售界面按“F12”输入会员卡号然后确定在开始扫描商品根据步骤4操作13、所有查询在大洋超市收银系统界面左上角点击查询报表然后根据需要查询的项目进行详细选择14、下班时关闭软件账目结算完成记帐完毕后先关闭大洋超市收银系统前台销售界面出现关闭前台零售不做然和选项直接点击确定然后在关闭大洋超市收银系统在关闭大洋超市收银系统是弹出的退出系统界面选择备份退出然后在关闭电脑。
超市自动收银系统课件

自动辨认商品、计算价格、打印 购物清单和收据、接受付款、找 零、存储交易记录等。
系统的重要性
01
02
03
提高效率
减少人工收银员的工作量 ,加快结账速度,提高深 市的运营效率。
提升顾客体验
顾客可以自行完成结账, 减少等待时间,提高购物 便利性。
降低成本
减少人工收银员的数量, 降低人力成本和管理成本 。
特殊情况处理
03
遇到系统故障或其他特殊情况时,收银员需保持冷静,及时寻
求解决方案。
05
超市自动收银系统的优势与 挑战
提高效率,减少排队时间
自动收银系统能够快速、准确地处理商品扫描和结算,大大提高了收银效率,减少 了顾客在超市的排队时间。
自动收银系统通常配备多台收银机,可以同时为多个顾客服务,进一步缩短了等待 时间。
扫描设备
条形码扫描器
用于扫描商品条形码,快速辨认 商品信息。
RFID扫描器
通过无线射频技术辨认商品,适用 于无条形码商品或需要快速通过的 场景。
重量检测器
对于无法扫描条形码的散装商品, 可通过重量与数据库中预存的重量 信息进行对照,以确定商品种类和 数量。
打印机
收据打印机
打印出收银机操作的详细 收据,包括商品名称、数 量、单价、折扣、总价等 信息。
顾客可以将购买的商品放在收银台上,系统自动扫描商品条 形码并计算总价。
多种支付方式
支持现金、银行卡、移动支付等多种支付方式,满足不同顾 客的需求。
库存管理
实时库存监控
系统实时监控商品库存数量,当库存 不足时自动提醒补货。
智能补货建议
根据历史销售数据和库存情况,系统 自动生成补货建议,提高库存周转率 。
超市收银员模拟器攻略

超市收银员模拟器攻略
超市收银员模拟器是一款模拟经营类游戏,玩家扮演收银员的角色,在超市中完成顾客购物结账的任务。
以下是一些攻略建议:
1. 快速扫描商品:学会迅速而准确地扫描商品条形码,可以提高结账效率。
熟悉常见商品的条形码,可以减少错误扫描的概率。
2. 掌握找零技巧:当顾客支付现金时,需要准确计算找零金额。
建议掌握快速计算找零的技巧,例如使用心算或者快速计算器。
3. 处理特殊情况:在游戏中,可能会遇到一些特殊情况,例如商品价格错误、退货等。
对于这些情况,需要冷静处理,可以与顾客进行沟通,或者寻求上级的帮助。
4. 提高服务质量:尽量保持友好和专业的态度,及时回答顾客的问题,提供帮助。
如果有需要,可以向顾客介绍促销活动或者推荐相关商品。
5. 管理时间和队列:合理安排时间,尽量减少顾客等待时间。
如果有多个顾客排队,可以优化队列,快速处理结账,避免长时间等待。
举例:当你遇到一个顾客购买了一个商品,但条形码无法被扫描时,你可以询问顾客商品的价格,并手动输入价格完成结账。
希望以上攻略对你在超市收银员模拟器中取得好成绩有所帮助!。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程设计任务书2012—2013学年第2学期一、课程设计题目模拟超市收银系统(例子)二、课程设计内容使用文本命令行界面模拟超市收银系统●由收银员输入顾客的会员卡卡号(若有卡)、所购商品的货号等。
从数据库(或文件)中取出有关价格信息,再把这些信息返回给收银台。
同时把该收银台的销售总量和有关种类商品的剩余量以及该持卡顾客的消费情况交数据库(或文件)存储以供查询。
●另外,对没有卡的消费情况不记录该顾客的消费情况等个人信息。
如果一个未持卡顾客一次性购物满200元,可为其发放一张会员卡,以后在该商场购物可获得9折优惠。
要求:建立会员账户类、商品信息类、文件读写类、界面显示类等以及各相关接口类。
三、进度安排(1)1-2学时,选定题目、分析需求、理解需求;(2)3-4学时,程序设计,定义数据类型、数据处理方式;(3)5-10学时,编写程序、调试、测试;(4)11-12学时,编写设计报告;(5)13-16学时,答辩。
四、基本要求(1)只能使用C++语言,源程序要有适当的注释,使程序容易阅读(2)至少采用文本菜单界面(如果能采用图形菜单界面更好)(3)学生可自动增加新功能模块(视情况可另外加分)(4)建立银行账户类、文件读写类、界面显示类等以及各相关接口类。
(例子)(5)写出课程设计报告,应不少于3000字(不含附录),同一组学生只需提交1份,但必须在报告中列明分工。
课程负责人签名:2013年6 月28 日模拟超市收银系统(例子)摘要使用文本命令行界面模拟超市收银系统●由收银员输入顾客的会员卡卡号(若有卡)、所购商品的货号等。
从数据库(或文件)中取出有关价格信息,再把这些信息返回给收银台。
同时把该收银台的销售总量和有关种类商品的剩余量以及该持卡顾客的消费情况交数据库(或文件)存储以供查询。
●另外,对没有卡的消费情况不记录该顾客的消费情况等个人信息。
如果一个未持卡顾客一次性购物满200元,可为其发放一张会员卡,以后在该商场购物可获得9折优惠。
要求:建立会员账户类、商品信息类、文件读写类、界面显示类等以及各相关接口类。
关键词:面向对象;超市收银系统;文件操作目录第一章设计内容 (1)第二章总体设计 (2)2.1模块化设计 (2)2.2程序运行示意图 (2)第三章详细设计 (3)3.1数据结构设计 (4)3.2程序模块设计 (6)第四章调试与测试 (8)4.1调试过程中的主要问题 (8)4.2测试结果 (8)参考文献 (10)心得体会 (21)设计一个模拟超市收银系统操作的程序,输入你需要的操作(选择相对的括号里的阿拉伯数字)程序具体功能有:(1)顾客结账 {付款方式:1.会员结账 2.普通结账}(2)增加商品(3)增加会员(4)查询会员消费记录(0)退出2.1模块化设计为实现系统功能,本程序主要分为五个模块。
它们分别为:顾客结账(内含付款方式:会员结账,普通结账);增加商品;增加会员;查询会员消费记录;退出,这五个函数再通过主函数调用分别得以实现。
主函数,首先提供了程序运行时的友好界面,提供客户选择的菜单。
然后,通过执行多分支选择语句——switch语句,分别实现其它各个函数的调用功能。
其它各个函数的功能分别如下:顾客结账:{1.会员结账 vip_count() 2.普通结账count()}商品入库: input()增加会员: CClientele()查询会员消费记录:Rec.read_record();显示所有商品:all();找零:change();2.2 程序运行示意图否第三章详细设计3. 文件设计本程序中,运用了多种函数。
首先商品入库、加入会员、显示主界面、再按数字输入进行选择性操作。
在主函数中分别调用各项的函数。
//商品入库void Product::input(){cout<<"编号:";cin>>id;ifstream infile("Goods.dat",ios::in|ios::binary); //判断商品是否已存在if(!infile){d_show();exit;}while(infile){int n;infile.read((char*)&G1,sizeof(G1));n=infile.gcount();if(n==sizeof(G1))if(G1.id==id){cout<<"货物已存在,请核实后再输入!"<<endl;return;}}infile.close();cout<<"商品名:";cin>>Goodsname;cout<<"单价:";cin>>price;cout<<"数量:";cin>>number;G1.Setdata(id,Goodsname,price,number);ofstream outfile("Goods.dat",ios::app|ios::binary);if(!outfile){d_show();exit;}outfile.write((char*)&G1,sizeof(G1));outfile.close();b_show();}//增加会员void Clientele::CClientele(){cout<<"输入卡号:";cin>>num;ofstream outfile("Clientele.dat",ios::app|ios::binary); //将文件输出提前定义,为了能创建文件if(outfile){ifstream infile("Clientele.dat",ios::in|ios::binary); //判断会员是否已存在if(!infile){d_show();exit;}while(infile){int n;infile.read((char*)&C1,sizeof(C1));n=infile.gcount();if(n==sizeof(C1))if(C1.num==num){cout<<"该会员以存在,请核实后再输入!"<<endl;return;}}infile.close();}cout<<"输入姓名:";cin>>name;C1.Setdata(num,name);outfile.write((char*)&C1,sizeof(C1));outfile.close();b_show();}3.2 程序模块设计本程序执行的入口是main函数,在main函数中首先调用了界面类中的各项操作的函数,在界面类中选择所需要进行的操作,在switch语句进行界面显示,实现超市收银系统算法的操作while(1){show.a_show();show.b_show();Goods.all();show.b_show();cout<<"1.顾客结账 2.增加商品 3.增加会员 \n\n4.查询会员消费记录 \t0.退出\n";show.b_show();cout<<"请选择:";cin>>i;show.b_show();switch (i){case 1:cout<<"付款方式:1.会员结账 2.普通结账"<<endl<<"请选择:";cin>>n;show.b_show();switch(n){case 1:VIP.SClientele();Goods.vip_count();show.c_show();break;case 2:Goods.count();show.c_show();break;}break;case 2:Goods.input();break;case 3:lientele();break;case 4:Rec.read_record();break;case 0:return 1;}}return 0;}第四章调试与测试4.1 调试过程中的主要问题由于本程序是分界面设计的,所以运行时选择完操作并且执行完操作后,又会继续回到主菜单,供用户继续选择操作并执行操作。
对于本程序的调试运行,总体上情况良好。
但是,其中也出现了一些小问题。
我发现的主要问题有:从文件读取数据到vector时,有时会产生错误;以及保存到文件中时,也存在格式上的问题。
后来这些问题均以通过探究与测试中解决。
4.2 测试结果(1)主菜单(如图)(2)商品入库(3)增加新会员(4)普通结账(5)会员结账(6)查询会员消费记录(如图)第五章超市收银系统程序代码#include<iostream>#include<string>#include<fstream>using namespace std;//显示类class Show{public:void a_show(){cout<<"\t************************************************************** *\n";cout<<"\t** 欢迎来到超级超市**\n";cout<<"\t************************************************************** *\n";}static void b_show(){cout<<"------------------------------------------------------\n";}void c_show(){cout<<"\n\t************************欢迎再次光临!*************************\n\n";cout<<"\t*********************************************************** ***\n\n\n\n";}static void d_show(){cout<<"open error!";}};//会员类class Clientele:public Show{int num; //卡号char name[20]; //会员名public:Clientele(){ //初始化num=0;name[0]=0;}Clientele(int numl,char *namel){Setdata(numl,namel);}~Clientele(){}int Getnum(){return num;}char* Getname(){return name;}void Setdata(int,char*); //对Clientele进行赋值void ShowClientele(); //显示会员信息void SClientele(); //搜索会员void CClientele(); //添加会员};//产品类class Product:public Show{public:void input(); //商品入库void count(); //普通结账void vip_count(); //会员结账void all(); //显示所有商品void change(); //找零void Setdata(int,char*,int,int); //对Product进行赋值void Show(int);void Showl(){cout<<id<<"\t"<<name<<"\t"<<price<<"\t"<<number<<endl;}Product(){ //初始化id=0;name[0]=0;price=0;number=0;}Product(int idl,char *namel,int pricel,int numberl){Setdata(idl,namel,pricel,numberl);}~Product(){}int Getid(){return id;}char* Getname(){return name;}int Getprice(){return price;}int Getnumber(){return number;}private:int id; //商品编号char name[20]; //商品名int price; //单价int number; //数量};//记录会员消费记录类class record:public Clientele,public Product{private:int num,goodsid,goodsprice,goodsnum;char name[20],goodsname[20];public:record(){num=0;name[0]=0;goodsid=0;goodsname[0]=0;goodsprice=0;goodsnum=0;}record(int numl,char*namel,int goodsidl,char*goodsnamel,int goodspricel,intgoodsnuml):Clientele(numl,namel),Product(goodsidl,goodsnamel,goodspricel,go odsnuml){Setdata(numl,namel,goodsidl,goodsnamel,goodspricel,goodsnuml);}~record(){}//赋值void Setdata(int numl,char*namel,int goodsidl,char*goodsnamel,intgoodspricel,int goodsnuml){num=numl;strcpy_s(name,namel);goodsid=goodsidl;strcpy_s(goodsname,goodsnamel);goodsprice=goodspricel;goodsnum=goodsnuml;}void viprecord(); //记录会员消费void read_record(); //查询记录void Show();};//全局变量Clientele C1;Product G1;record R1;int num,i,j,n,id,price,number;char name[20],Goodsname[20];//对Clientele进行赋值void Clientele::Setdata(int numl,char *namel){num=numl;strcpy_s(name,namel);}//Product赋值void Product::Setdata(int idl,char *namel,int pricel,int numberl){ id=idl;strcpy_s(name,namel);price=pricel;number=numberl;}//查询会员信息void Clientele::SClientele(){ cout<<"输入卡号:";cin>>num;b_show();ifstream infile("Clientele.dat",ios::in|ios::binary);if(!infile){d_show();exit;}while(infile){int n;infile.read((char*)&C1,sizeof(C1));n=infile.gcount();if(n==sizeof(C1))if(C1.num==num){C1.ShowClientele();break;}}infile.close();b_show();}//记录新会员void Clientele::CClientele(){ cout<<"输入卡号:";cin>>num;ofstream outfile("Clientele.dat",ios::app|ios::binary); //将文件输出提前定义,为了能创建文件if(outfile){ifstream infile("Clientele.dat",ios::in|ios::binary); //判断会员是否已存在if(!infile){d_show();exit;}while(infile){int n;infile.read((char*)&C1,sizeof(C1)); //从文件中读取C1数据,长度为C1n=infile.gcount(); //gcount()用来获得实际读取的字节数,不出错n是等于C1的长度if(n==sizeof(C1)) //如果n等于C1的长度,就可以执行if(C1.num==num){cout<<"该会员以存在,请核实后再输入!"<<endl;return;}}infile.close();}cout<<"输入姓名:";cin>>name;C1.Setdata(num,name);outfile.write((char*)&C1,sizeof(C1));outfile.close();b_show();}//商品入库void Product::input(){cout<<"编号:";cin>>id;ifstream infile("Goods.dat",ios::in|ios::binary); //判断商品是否已存在if(!infile){d_show();exit;}while(infile){int n;infile.read((char*)&G1,sizeof(G1));n=infile.gcount();if(n==sizeof(G1))if(G1.id==id){cout<<"货物已存在,请核实后再输入!"<<endl;return;}}infile.close();cout<<"商品名:";cin>>Goodsname;cout<<"单价:";cin>>price;cout<<"数量:";cin>>number;G1.Setdata(id,Goodsname,price,number);ofstream outfile("Goods.dat",ios::app|ios::binary);if(!outfile){d_show();exit;}outfile.write((char*)&G1,sizeof(G1));outfile.close();b_show();}//显示所有商品void Product::all(){ifstream infile("Goods.dat",ios::in|ios::binary);if(!infile){ //如果打开文件失败,则创建文件ofstream outfile("Goods.dat",ios::binary);outfile.close();}cout<<"编号\t"<<"名字\t"<<"单价\t"<<"数量\t"<<endl;while(infile){int n;infile.read((char*)&G1,sizeof(G1));n=infile.gcount();if(n==sizeof(G1))G1.Showl();}infile.close();}//普通结账void Product::count(){int s=0,S=0,k;cout<<"结束输入按“0”"<<endl;do{cout<<"商品编号:";cin>>i;cout<<"购买数量:";cin>>j;b_show();ifstream infile("Goods.dat",ios::in|ios::binary);if(!infile){d_show();exit;}while(infile){infile.read((char*)&G1,sizeof(G1));n=infile.gcount();if(n==sizeof(G1))if(G1.id==i){G1.Show(j);b_show();s=G1.price*j; //导入单价和购买数量,进行结算S=S+s;break;}}infile.close();}while(i!=0);cout<<"金额:"<<S<<endl;cout<<"收款:";cin>>k;cout<<"找零:"<<k-S<<endl;if(S>200){ //消费超过200,办理会员cout<<"消费已超过200,可办理会员,“y/n”"<<endl;char l;cin>>l;if(l='y')lientele();}b_show();}//会员结账void Product::vip_count(){int s=0,S=0,k;cout<<"结束输入按“0”"<<endl;do{cout<<"商品编号:";cin>>i;cout<<"购买数量:";cin>>j;ifstream infile("Goods.dat",ios::in|ios::binary);if(!infile){d_show();}while(infile){int n;infile.read((char*)&G1,sizeof(G1));n=infile.gcount();if(n==sizeof(G1))if(G1.id==i){G1.Show(j);b_show();s=G1.price*j; //导入单价和购买数量,进行结算S=S+s;R1.viprecord();break;}}infile.close();}while(i!=0);cout<<"金额:"<<S<<endl;cout<<"会员价:"<<S*0.9<<endl;cout<<"收款:";cin>>k;cout<<"找零:"<<k-(S*0.9)<<endl;b_show();}//将会员消费记录到文档record中void record::viprecord(){ofstream outfile("record.dat",ios::out|ios::app|ios::binary);if(!outfile){d_show();exit;}Setdata(C1.Getnum(),C1.Getname(),G1.Getid(),G1.Getname(),G1.Getprice(), j);outfile.write((char*)&R1,sizeof(R1));outfile.close();}//查询会员消费记录void record::read_record(){int m;ifstream infile("record.dat",ios::in|ios::binary);if(!infile){d_show();exit;}cout<<"输入查询会员号:";cin>>m;b_show();while(infile){int n;infile.read((char*)&R1,sizeof(R1));n=infile.gcount();if(n==sizeof(R1))if(R1.num==m){R1.Show();b_show();}}}//会员显示void Clientele::ShowClientele(){cout<<"会员卡号:"<<num<<endl<<"会员名:"<<name<<endl;}//商品显示void Product::Show(int j){cout<<"编号\t"<<"名字\t"<<"单价\t"<<"余量\t"<<endl<<id<<"\t"<<name<<"\t"<<price<<"\t"<<number-j<<endl; }//显示会员消费记录void record::Show(){cout<<"会员卡号:"<<num<<endl<<"会员名:"<<name<<endl<<"商品编号:"<<goodsid<<endl<<"商品名:"<<goodsname<<endl<<"单价:"<<goodsprice<<endl<<"数量"<<goodsnum<<endl;}//主函数int main(){Clientele VIP;Product Goods;record Rec;Show show;int i,n;while(1){system("cls");show.a_show();show.b_show();cout<<"1.顾客结账 2.增加商品 3.增加会员 \n\n4.查询会员消费记录\t0.退出\n";show.b_show();cout<<"请选择:";cin>>i;show.b_show();switch (i){case 1:cout<<"付款方式:1.会员结账 2.普通结账"<<endl<<"请选择:";cin>>n;show.b_show();switch(n){case 1:system("cls");show.a_show();show.b_show();Goods.all();show.b_show();VIP.SClientele();Goods.vip_count();show.c_show();break;case 2:system("cls");show.a_show();show.b_show();Goods.all();show.b_show();Goods.count();show.c_show();break;}break;case 2:system("cls");Goods.input();break;case 3:system("cls");lientele();break;case 4:system("cls");Rec.read_record();break;case 0:return 1;}getchar();getchar();}return 0;}参考文献[1]曹静C++面向对象程序设计教程。