模拟超市收银系统
- 格式:doc
- 大小:164.50 KB
- 文档页数:26
课程设计超市收银系统一、教学目标本课程旨在让学生了解和掌握超市收银系统的基本原理和操作方法。
通过本课程的学习,学生将能够:1.知识目标:理解超市收银系统的工作原理,包括商品扫描、价格查询、支付方式等。
2.技能目标:熟练操作超市收银系统,包括商品扫描、价格查询、支付操作等。
3.情感态度价值观目标:培养学生的实际操作能力,提高他们对信息技术在商业领域应用的认识,增强他们对学习的兴趣和主动性。
二、教学内容本课程的教学内容主要包括以下几个部分:1.超市收银系统的基本原理:介绍超市收银系统的工作原理,包括商品扫描、价格查询等。
2.超市收银系统的操作方法:讲解如何使用超市收银系统进行商品扫描、价格查询、支付操作等。
3.超市收银系统的应用场景:介绍超市收银系统在商业领域的应用,以及其对商业运营的影响。
三、教学方法为了提高学生的学习兴趣和主动性,本课程将采用多种教学方法,包括:1.讲授法:讲解超市收银系统的基本原理和操作方法。
2.案例分析法:分析实际案例,让学生了解超市收银系统在商业领域的应用。
3.实验法:安排实际操作实验,让学生亲身体验超市收银系统的操作。
四、教学资源为了支持教学内容和教学方法的实施,我们将选择和准备以下教学资源:1.教材:选用合适的教材,详细介绍超市收银系统的基本原理和操作方法。
2.多媒体资料:制作多媒体课件,生动展示超市收银系统的工作原理和操作方法。
3.实验设备:准备超市收银机等实验设备,供学生进行实际操作实验。
五、教学评估为了全面、客观地评估学生的学习成果,我们将采取以下评估方式:1.平时表现:观察学生在课堂上的参与度、提问回答等情况,了解他们的学习状态。
2.作业:布置相关作业,检查学生对超市收银系统的理解和掌握程度。
3.考试:安排期末考试,测试学生对超市收银系统知识的掌握和实际操作能力。
评估结果将以分数或等级形式呈现,以便学生和教师了解学生的学习情况。
同时,我们将针对学生的薄弱环节进行有针对性的辅导,以提高他们的学习成果。
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语言课程设计一、课程目标知识目标: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、下班时关闭软件账目结算完成记帐完毕后先关闭大洋超市收银系统前台销售界面出现关闭前台零售不做然和选项直接点击确定然后在关闭大洋超市收银系统在关闭大洋超市收银系统是弹出的退出系统界面选择备份退出然后在关闭电脑。
超市收银员模拟器攻略
超市收银员模拟器是一款模拟经营类游戏,玩家扮演收银员的角色,在超市中完成顾客购物结账的任务。
以下是一些攻略建议:
1. 快速扫描商品:学会迅速而准确地扫描商品条形码,可以提高结账效率。
熟悉常见商品的条形码,可以减少错误扫描的概率。
2. 掌握找零技巧:当顾客支付现金时,需要准确计算找零金额。
建议掌握快速计算找零的技巧,例如使用心算或者快速计算器。
3. 处理特殊情况:在游戏中,可能会遇到一些特殊情况,例如商品价格错误、退货等。
对于这些情况,需要冷静处理,可以与顾客进行沟通,或者寻求上级的帮助。
4. 提高服务质量:尽量保持友好和专业的态度,及时回答顾客的问题,提供帮助。
如果有需要,可以向顾客介绍促销活动或者推荐相关商品。
5. 管理时间和队列:合理安排时间,尽量减少顾客等待时间。
如果有多个顾客排队,可以优化队列,快速处理结账,避免长时间等待。
举例:当你遇到一个顾客购买了一个商品,但条形码无法被扫描时,你可以询问顾客商品的价格,并手动输入价格完成结账。
希望以上攻略对你在超市收银员模拟器中取得好成绩有所帮助!。
**软件工程职业学院毕业论文题目:校园便利店超市收银系统专业:软件技术系年级:*****班级:0701班学生姓名:******指导教师:******目录摘要前言第一章绪论1.1管理信息系统概述1.2超市收银系统介绍第二章数据库简介2.1数据库的基本概念2.2关系数据库标准语言-SQL 第三章应用程序开发工具简介3.1Java简介3.2MySql简介3.3Hibernate简介第四章超市收银系统分析4.1需求分析4.2详细设计4.3数据库设计第五章程序设计第六章总结摘要在现代商业社会中,用纯手工方式和客户进行交付结账已经非常不方便,迫切需要一种新的管理方式来简化管理和提升效率,而这方面正是计算机所能解决的问题.本文以超市收银系统为例,介绍了开发该系统所必备的相关知识,着重讲解在Java编程环境和MySql数据库管理系统以及MVC思想和Hibernate框架下的实际开发。
关键词信息管理系统,数据库,MVC,Hibernate。
前言在开发超市收银系统之前必须先了解管理信息系统,数据库,Java编程环境的相关知识,然后对超市收银系统进行分析,最后对该系统编码,本文正是以该顺序编写。
第一章绪论一直以来人们使用传统的手工结账,这种管理方式存在着许多缺点,如效率低,出错率高等,而且时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了巨大的困难,而超市收银系统能够为用户提供充足的信息和快捷的查询手段以及准确的支付明细,具有人工管理无法相比的优势,所以超市收银系统是不可缺少的部分,而开发一个超市收银系统是非常必要的。
1.1 管理信息系统概述管理信息系统简称为MIS(Management Information System),它是计算机应用领域的一个重要分支。
管理信息系统帮助人们完成原来需要手工处理的复杂工作,它不仅能明显地提高工作效率,减小劳动强度,而且能提高信息管理的质量和管理水平。
因而,管理信息系统不是在模拟手工劳动,它要更合理地组织数据和更科学地管理数据,为控制事务发展提供控制信息,为预测事务变化的状态提供事务发展趋势信息和变化规律的信息。
接口课程设计报告计算机0216班程伟012002014808一.目的和给定的条件1、掌握接口硬件开发平台的使用方法,利用现有的实验平台和PC机,组成一个微机模拟应用系统;2、掌握基本接口电路的综合应用3、掌握接口电路的驱动程序和界面软件的设计与编制,学会调试与测试接口软件的一般方法4、微机接口技术及接口芯片的综合应用二。
设计任务及要求本次试验我们小组选择的题目是:超市收费系统(添加了条形码检测)超市商品条形码检测,客户端通过串行通信连接主机,主机识别商品ID,给出价格发送到客户端。
客户端付帐完成后有声光提醒。
试验要求达到的目的是下位机向上位机发送商品的条形码,上位机通过查询将该商品的名称以及价格返还下位机,下位机若受到顾客付账则声光报警提醒。
三。
总体方案设计1。
总体方案设计结构图2。
设计的硬件,逻辑连线图此为下位机逻辑连线图,其中涉及到8251,8253,8255之间的连接,8255在声光报警系统中起到调节灯亮顺序以及声音频率作用,在条形码输入过程中起到暂时存储条形码内容的作用,8253则为整个系统提供统一时钟频率。
至于主控机与下位机大致一样,只是少了声光系统以及条形码输入系统,相对简单一些,故不再赘述。
四。
系统概述1. 系统硬件由主控机(其中一台微机)、下位机和执行部件条形码输入设备组成。
主控机与下位机通过串行通信线连接。
2. 条形码输入设备:由拨码开关来表示所执行的操作,通过接口电路将接收的数据送入到下位机。
3. 下位机:与主控机通信,接受条形码输入设备的信息。
4、选用语言汇编语言。
5、系统功能概述:系统的功能主要是下位机不停的来监视,即读取用户的操作,也就是是否有顾客前来购买商品,若有则将商品的条形码发送给主控机。
主控机接受下位机发送过来的8位数据以后,进行数据分析,来确定用户所需要的商品的条形码,或者是顾客已付钱,然后将相应的商品的名称以及价格发送给下位机。
下位机在接到主控机发送的信息以后进行对应的操作,即输出商品的相关信息以提示顾客付账。
(店铺管理)模拟超市的收银系统模拟超市的收银系统一、系统分析与设计。
随着计算机的发展,计算机技术已经融入到社会生活的各个角落,把人们从以前繁琐的手工操作中解放出来,从而使信息的管理大大简便起来。
超市日常有大量的数据需要进行处理,包括收银员收银时输入的消费者购买信息、管理员输入的入库商品信息、管理员输入的人员信息、日常销售额的统计等等。
面对如此大的信息量,就需要有相应的计算机管理系统来提高工作的效率和系统管理的安全性。
通过这样的系统,超市就可以由收银员方便的在收银柜台进行销售额的录入,管理员也可以方便地进行管理,从而减小手工操作的工作量,本设计就是为了模拟超市的收银系统。
从需求分析的角度来看,这个超市管理系统的需求如下所示:该系统的功能主要是模拟超市的收银的过程,所以不需要设计数据库,当进入根据系统需求,这个版本的超市管理系统是一个简单的管理系统,三、主要程序清单(见附录)//************************************************************************//*main.cpp 系统主文件//************************************************************************#include"counter.h"//创建一个商店CStore*PrepareStore(){//创建一个空商店CStore*pStore=newCStore();// 为商店配货CGoods*pGoods=newCGoods(1,"西瓜",4.50);pStore->AddGoods(pGoods,1000);pGoods=newCGoods(2,"鸡蛋",5.00);pStore->AddGoods(pGoods,1000);pGoods=newCGoods(3,"牛肉",12.00);pStore->AddGoods(pGoods,1000);pGoods=newCGoods(4," 香蕉 ",4.10);pStore->AddGoods(pGoods,1000);pGoods=newCGoods(5,"空调",3000.00);pStore->AddGoods(pGoods,100);pGoods=newCGoods(6," 大米 ",1.00);pStore->AddGoods(pGoods,10000);pGoods=newCGoods(7," 葡萄 ",5.00);pStore->AddGoods(pGoods,1000);pGoods=newCGoods(8," 面包 ",6.00);pStore->AddGoods(pGoods,1000);pGoods=newCGoods(9,"火腿",15.00);pStore->AddGoods(pGoods,1000); returnpStore;}voidusage(){ cout<<"\n\n"; cout.width(35);cout.fill('*');cout<<right<<"USAGE";cout.width(35);cout<<left<<"*"<<endl;cout<<"*请您按照请示来购买商品,祝您消费愉快!\n"; cout<<"*输入\"-1\",完成购买,去收银台\n"; cout.width(35);cout.fill('*');cout<<right<<"USAGE";cout.width(35);cout<<left<<"*"<<endl;cout.fill('');cout<<"\n\n";}voidmain(){//准备超市储藏室、购物篮、收银台CStore*pStore=PrepareStore();//给超市配货CStore*pBasket=newCStore();CCounterCounter(pBasket);doubledCash=0.0;cout<<"------------------------欢迎光临\"美特好\"超市------------------------\n\n"<<endl;cout<<"******************* 本超市共有以下商品,欢迎您的选购*******************"<<endl;//打印商店的现有商品pStore->Print();usage();//iIndex---用户欲购买商品的索引,iNum ---- 用户欲购买商品的数目intiIndex=0,iNum=0;do{cout<<"请输入商品索引号:";//非法输入if(!(cin>>iIndex)){cout<<"\n\n 你键入了非法的索引号,程序即将退出\n\n";gotoCELEAN;}//购买完毕,退出if(iIndex==-1){ break;}//获取 iIndex 所对应的商品PSTOREELEMENTpSE=pStore->GetGoods(iIndex);//没有此类商品if(pSE==NULL){cout<<"\n 很抱歉,本商店没有索引号为\""<<iIndex<<"\"的商品\n\n";continue;}//购买数量cout<<"请输入要购买数量:";//非法输入if(!(cin>>iNum)){cout<<"\n\n 你键入了非法的购买数目,程序即将退出\n\n";gotoCELEAN;}//商品查询intiStoreNum=pStore->QueryGoods(iIndex);if(iStoreNum<=0){cout<<"很抱歉,你要购买的\""<<pSE->pGoods->GetName()<<"\"商品已经售完,请下次再来购买!\n";}else{ if(iNum>iStoreNum){cout<<"很抱歉,本商店目前仅有\""<<pSE->pGoods->GetName()<<"\""<<iStoreNum<<"件,暂时先购买这么多吧\n";CGoods*pMyGoods=pSE->pGoods->Clone();pBasket->AddGoods(pMyGoods,iStoreNum);//加入购物篮pSE->iNum=0;//卖光了}else{cout<<"恭喜你,成功购买:\n";cout<<"商品:"<<pSE->pGoods->GetName()<<"件数:"<<iNum<<"\n"<<endl;CGoods*pMyGoods=pSE->pGoods->Clone();pBasket->AddGoods(pMyGoods,iNum);//加入购物篮pSE->iNum=iStoreNum-iNum;//超市剩余}}}while(true);if(pBasket->GetAllGoods()->size()==0){ cout<<"\n\n 嗨,什么都没买到,白来一趟;(\n\n"; gotoCELEAN;}else{cout<<"\n\n 购买完毕,今天收获不小啊,购买了如下商品:\n\n";pBasket->Print();}cout<<"\n\n 您好,您本次共计消费"<<Counter.Bill()<<"元\n";cout<<"请交钱:";cin>>dCash;while(Counter.Count(dCash)<0){cout<<"还差:"<<-Counter.Count(0)<<"元\n";cout<<"请交钱:";cin>>dCash;}cout<<"\n\n 共收取您现金:"<<Counter.GetCash()<<"元\n";cout<<"应交纳金额:"<<Counter.Bill()<<"元\n";cout<<" 应找零 :"<<Counter.Count(0)<<" 元 \n\n";cout<<"**********************欢迎您再次光临本店**********************\n"; CELEAN:deletepStore;deletepBasket;return;//counter.cpp:implementationofthesupermarketclass.////////////////////////////////////////////////////////////////////////#include"counter.h"#include<assert.h>//************************************************************************ //*商品类的成员函数定义//************************************************************************ CGoods::CGoods(intiIndex,stringstrName,doubledUnitPrice){//初始化商品m_iIndex=iIndex;m_strName=strName;m_dUnitPrice=dUnitPrice;}CGoods::~CGoods(){}//attributesandoperationsintCGoods::GetIndex(void)const{ returnm_iIndex;}stringCGoods::GetName(void)const{ returnm_strName;}doubleCGoods::GetUnitPrice(void)const{ returnm_dUnitPrice;}voidCGoods::SetUnitPrice(doubledUnitPrice){ m_dUnitPrice=dUnitPrice;}CGoods*CGoods::Clone(){ returnnewCGoods(m_iIndex,m_strName,m_dUnitPrice );}//************************************************************************ //*商品类的成员函数定义结束//************************************************************************ //************************************************************************ //*储藏室类的成员函数定义//************************************************************************ CStore::CStore(){}CStore::~CStore(){DeleteAllGoods();}//往储藏室种添加货物boolCStore::AddGoods(CGoods*pGoods,intiNum){ assert(pGoods!=NULL);intsize=m_vStore.size();boolbIsExist=false;for(inti=0;i<size;i++){PSTOREELEMENTpSE=m_vStore[i];assert(pSE!=NULL);//假如已经有了同类商品在储藏室,那么增加此商品的数目if(pSE->pGoods!=NULL&&pSE->pGoods->GetIndex()==pGoods->GetIndex()){ bIsExist=true;pSE->iNum+=iNum;break;}}//储藏室没有同类商品,直接增加此类商品if(!bIsExist){ PSTOREELEMENTp=newSTOREELEMENT;p->pGoods=pGoods;p->iNum=iNum;m_vStore.push_back(p);}returntrue;}//清空整个储藏室voidCStore::DeleteAllGoods(){intsize=m_vStore.size();for(inti=0;i<size;i++){ PSTOREELEMENTpSE=m_vStore[i];assert(pSE!=NULL);if(pSE->pGoods!=NULL){ deletepSE->pGoods;//删除商品pSE->pGoods=NULL;}deletepSE;//删除储藏室元素pSE=NULL;}}//删除名为 strName 的货物,iNum 为删除数量intCStore::DeleteGoods(conststring&strName,intiNum){intsize=m_vStore.size();for(inti=0;i<size;i++){ PSTOREELEMENTpSE=m_vStore[i]; assert(pSE!=NULL);if(pSE->pGoods!=NULL&&pSE->pGoods->GetName()==strName){ if(iNum<=-1||pSE->iNum<=iNum){ deletepSE->pGoods;pSE->iNum=0;deletepSE;//删除储藏室元素pSE=NULL;return0;}else{pSE->iNum-=iNum;returnpSE->iNum;}}}return0;}//删除索引号为 iIndex 的货物,iNum 为删除数量intCStore::DeleteGoods(intiIndex,intiNum){ intsize=m_vStore.size();for(inti=0;i<size;i++){ PSTOREELEMENTpSE=m_vStore[i]; assert(pSE!=NULL);if(pSE->pGoods!=NULL&&pSE->pGoods->GetIndex()==iIndex){ if(iNum<=-1||pSE->iNum<=iNum){ deletepSE->pGoods;pSE->iNum=0;deletepSE;//删除储藏室元素pSE=NULL;return0;}else{pSE->iNum-=iNum;returnpSE->iNum;}}}return0;}//获取货物清单vector<PSTOREELEMENT>*CStore::GetAllGoods(void){ return&m_vStore;}//获取某类货物PSTOREELEMENTCStore::GetGoods(intiIndex){intsize=m_vStore.size();for(inti=0;i<size;i++){ PSTOREELEMENTpSE=m_vStore[i]; assert(pSE!=NULL);if(pSE->pGoods!=NULL&&pSE->pGoods->GetIndex()==iIndex){ returnpSE;}}returnNULL;}//获取某类货物PSTOREELEMENTCStore::GetGoods(conststring&strName){ in tsize=m_vStore.size();for(inti=0;i<size;i++){ PSTOREELEMENTpSE=m_vStore[i]; assert(pSE!=NULL);if(pSE->pGoods!=NULL&&pSE->pGoods->GetName()==strName){ returnpSE;}}returnNULL;}//查询货物intCStore::QueryGoods(conststring&strName){ i ntsize=m_vStore.size();for(inti=0;i<size;i++){ PSTOREELEMENTpSE =m_vStore[i]; assert(pSE!=NULL);if(pSE->pGoods!=NULL&&pSE->pGoods->GetName()==strName){ returnpSE->iNum;}}return0;}//查询货物intCStore::QueryGoods(intiIndex){intsize=m_vStore.size();for(inti=0;i<size;i++){ PSTOREELE MENTpSE=m_vStore[i];assert(pSE!=NULL);if(pSE->pGoods!=NULL&&pSE->pGoods->GetIndex()==iIndex){ returnpSE->iNum;}}return0;}//打印水单voidCStore::Print(){stringstrTitle[4];strTitle[0]="索引号";strTitle[1]="商品名";strTitle[2]=" 数量 ";strTitle[3]=" 单价 ";for(inti=0;i<4;i++){cout.width(16);cout<<left<<strTitle[i];}cout<<"\n"<<endl;//获取商品种类intsize=m_vStore.size();for(i=0;i<size;i++){ cout.width(16);cout<<left<<m_vStore[i]->pGoods->GetIndex();cout.width(16);cout<<m_vStore[i]->pGoods->GetName();cout.width(16);cout<<m_vStore[i]->iNum;cout.width(16);cout.precision(2);cout<<fixed<<m_vStore[i]->pGoods->GetUnitPrice()<<"\n";}}//************************************************************************ //*储藏室类的成员函数定义结束//************************************************************************ //************************************************************************ //*收银台类的成员函数定义//************************************************************************ CCounter::CCounter(CStore*pBasket){m_pBasket=pBasket;m_dCash=0.0;}CCounter::~CCounter(){}//获取帐单doubleCCounter::Bill(void){doubledTotalPrice=0.0;vector<PSTOREELEMENT>*pvSE=m_pBasket->GetAllGoods();//获取商品种类intsize=pvSE->size();for(inti=0;i<size;i++){PSTOREELEMENTpSE=(*pvSE)[i];dTotalPrice+=pSE->pGoods->GetUnitPrice()*pSE->iNum;}returndTotalPrice;}//收钱及找零doubleCCounter::Count(doubledCash){m_dCash+=dCash;doubledTotal=Bill();returnm_dCash-dTotal;}//收取的现金数doubleCCounter::GetCash(){returnm_dCash;}//************************************************************************//*收银台类的成员函数定义结束//************************************************************************}四、运行结果五、试验体会在这次的设计过程中,我采用的是 VC++,不仅使我对课程有了进一步的强化,还使我的开发能力得到了提高。
超市收银系统技术方案引言:随着社会的发展和科技的进步,超市收银系统已经成为了现代商业运营不可或缺的一部分。
超市收银系统主要用于处理商品销售、库存管理和财务报表等业务,并且提供方便、高效的服务给消费者。
本文将探讨超市收银系统技术方案,包括硬件设备、软件系统以及数据安全等几个方面。
一、硬件设备超市收银系统的硬件设备包括收款机、扫码枪、打印机、电子秤等。
收款机是核心设备,用于录入商品信息、计算金额、打印小票等功能。
扫码枪用于快速扫描商品条码,打印机用于打印小票,电子秤用于称量商品重量。
此外,还应考虑系统的稳定性和扩展性,如冗余设备、备用电源等。
二、软件系统超市收银系统的软件系统主要包括前台收银软件和后台管理软件。
前台收银软件用于处理销售业务,包括商品录入、计算金额、打印小票等功能。
后台管理软件用于库存管理、财务报表、销售数据分析等功能。
软件系统需要具备用户友好的界面设计、数据实时更新、快速响应等特点,并且应支持多语言、多货币等功能。
三、数据库管理超市收银系统的数据库管理是保证数据安全和系统性能的关键。
数据库管理应具备数据备份和恢复功能,以防数据丢失或损坏。
此外,还应具备权限管理和数据加密功能,以保护敏感信息的安全和隐私性。
同时,应有合理的数据库设计和索引优化,以提高系统的性能和响应速度。
四、网络通信五、数据安全和防护超市收银系统的数据安全和防护是至关重要的。
首先,应采用合理的用户权限管理机制,实现不同用户对系统的访问权限控制。
其次,应定期对系统进行安全审计和漏洞扫描,及时修补漏洞和强化系统防护能力。
最后,应建立健全的数据备份和灾备机制,确保数据的可靠性和可恢复性。
六、系统集成和适应性结论:超市收银系统的技术方案应综合考虑硬件设备、软件系统、数据库管理、网络通信、数据安全和防护、系统集成和适应性等多个方面。
通过合理的设计和实施,可以实现高效、安全、便捷的超市收银服务,提升超市运营效率和用户体验。
超市收银系统(流程图+摘要+任务超市收银系统(流程图+摘要+任务书+开题报告+ER图+源程序)1.1课题背景及目的随着社会经济的迅速发展和科学技术的全面进步,计算机事业的飞速发展,以计算机与通信技术为基础的信息系统正处于蓬勃发展的时期。
随着经济文化水平的显著提高,人们对生活质量及工作环境的要求也越来越高。
为了管理大量的超市商品,超市智能化的实现,超市的管理问题也就提上了日程。
随着超市商品的大量增加,其管理难度也越来越大,如何优化超市的日常管理也就成为了一个大众化的课题。
功能简洁、实用,价格平实:根据客户功能需要的不同,制定相应的版本、相应的价格,让客户最实惠、钱花到实处。
目前,许多连锁超市企业将总部信息系统与连锁超市配送中心信息系统合二为一,即以连锁超市配送中心信息系统为中心与各分店信息系统合起来形成连锁超市企业的信息系统。
总体构成及功能如下:系统的逻辑结构从横向分为营销中心、人员管理中心、库存管理中心和会员管理中心四大模块,他们之间既紧密联系,也可相对独立运作,自成一体。
从纵向看,每个模块又可分为三个层次,即数据管理层、业务处理层和决策分析层。
数据管理层有效保存业务有关的所有原始数据,并对这些数据进行有效的分类管理。
业务处理层主要支持日常业务,解决遇到的日常业务问题。
其主要功能为数据采集、查询、统计及对数据的适当处理,并对业务过程监控优化。
决策分析层主要为业务部门提供决策分析的支持,帮助建立计划机制及控制机制,辅助业务部门进行决策。
收银管理系统是小型超市商品销售及货物管理的主要控制部分,直接影响销售的方便性及管理的规范性。
随着信息时代的发展,对效率的要求日益提高,因而软件控制销售和管理已经取代了传统全手工方式。
小型超市具有自身的特点:商品要求一般齐全,进出货关系较为简单,员工人数种类不多;在软件角度看,数据较少,对存储和速度要求不高。
但正由于员工较少,使用软件控制成为必须。
本系统针对商品销售管理的业务范围及工作特点,设计了基于智能客户端架构的超市收银系统,可以全面实现对商品销售、付款、收款和库存等业务的计算机管理,大大减轻了超市收银工作人员的工作量,全面提高了超市收银管理的管理效率以及服务质量,使管理水平和业务水平跃上了一个新的台阶。
收银系统操作流程 Document serial number【KKGB-LBS98YT-BS8CB-BSUT-BST108】“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、下班时关闭软件账目结算完成记帐完毕后先关闭大洋超市收银系统前台销售界面出现关闭前台零售不做然和选项直接点击确定然后在关闭大洋超市收银系统在关闭大洋超市收银系统是弹出的退出系统界面选择备份退出然后在关闭电脑。
二、项目开发计划1.引言 (1)1.1编写目的 (1)1.2项目背景 (2)1.3定义 (2)1.4参考资料 (3)2.项目概述 (3)2.1工作内容 (3)2.2条件与限制 (4)2.3产品 (5)2.4运行环境 (5)2.5服务 (5)2.6验收标准 (5)3.实施计划 (6)3.1任务分解 (6)3.2进度 (6)3.3预算 (6)3.4关键问题 (7)4.人员组织及分工 (7)5.交付期限 (7)6.专题计划要点 (8)1.引言1.1编写目的超市管理系统是超市商品销售及货物管理的主要控制部分,直接影响销售的方便性及管理的规范性。
超市具有自身的特点:商品要求一般齐全,进出货关系较为简单,员工人数种类不多;在软件角度看,数据较少,对存储和速度要求不高。
但正由于员工较少,使用软件控制成为必须。
如果只用人工的方法去处理这些结算和计算的数据将是一件很繁琐的事情,将投入大量的人力物力,为了解决这个问题,实现科学化、现代化的超市收银管理,我们就必须设计开发超市收银系统,并用于实践。
【阐明编写开发计划的目的,指明读者对象。
】1.2项目背景21世纪,超市的竞争也进入到了一个全新的领域,竞争已不再是规模的竞争,而是技术的竞争、管理的竞争、人才的竞争。
技术的提升和管理的升级是超市业的竞争核心。
零售领域目前呈多元发展趋势,多种业态:超市、仓储店、便利店、特许加盟店、专卖店、货仓等相互并存。
如何在激烈的竞争中扩大销售额、降低经营成本、扩大经营规模,成为超市营业者努力追求的目标。
项目分析单位在接到项目分析员给出的项目可行性分析报告后,在本系统,即仓库进货管理系统开发主管部门的统一下制定用于软件实质开发的软件项目计划,以使软件开发单位理解软件开发要求,进行开发。
【可包括:a.项目的委托单位、开发单位和主管部门;b.该软件系统与其他系统的关系。
】1.3定义超市收银管理系统:是典型的信息管理系统(MIS),其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。
超市POS收银系统方案系统项目概述一、总概述1.概述目前,平价商场、超市日益盛行----在城市普及之后正逐渐向城乡结合部发展。
这些商场、超市因货物品种繁多且购物的人流量大,所以迫切需要一套系统以实现商品的进、销、存,财务及人员等的一体化、自动化管理,以降低管理费用、经营成本,最终达到以最小的投资实现最大的利润目的。
电子信息技术的应用发展,使计算机在各行各业得到普及,在商场,超市等零售行业也充分发挥着作用。
在这一行业,计算机的应用已成为一个专门的行业---POS(收款机)系统。
对于零售业的物品价格管理,销售打单,以及采购销售及库存的各种报表,数据的汇总起着不可替代的作用。
本软件具有这方面的专业技术能力,能够为您提供最佳的解决方案及技术支持。
2.适用对象即将开超市或超市已经营业但缺乏POS软件管理或原POS软件不合适的各类批发及批零兼营的商场、百货超市、医药连锁、书店、化工、五金及化妆品等行业。
3.超市规模可适用于各类中小型超市及大型超市,大中型零售或批零兼营的商品流通企业,如商场、超市、连锁店。
4.工作方式对于各类大中小型超市来说,在局域网内就可以通过前后台连网的方式进行操作,而对于一些连锁经营方式的超市来说,可以通过互联网的方式将前台与后台服务器进行连接,从而将各连锁店的经营数据传送到总部的服务器上。
5. 使用目的提高整体工作效率,节约人工成本,加强内部控制,迅速获取正确的决策信息,以期达到加快资金周转、提高企业经营效益的最终目的。
6.原则规划实用性作为商家,实用性理所当然首先考虑的问题。
要求软件功能齐全,操作方便;且针对不同的用户,最好能满足对方一些特殊需要。
可靠性无论硬件还是软件,可靠性是非常重要的。
硬件的性能配置不一定非常高,但要求非常稳定;同时要求软件不能出错,不能死机。
安全性对商场POS管理信息系统而言,安全保密十分重要。
在系统中要充分利用软件及硬件所提供的各种安全措施,既要保证资料的共享,又要提放秘密的泄露。
课程设计任务书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++面向对象程序设计教程。