模拟超市收银系统Word文档下载推荐.docx
- 文档编号:19936795
- 上传时间:2023-01-12
- 格式:DOCX
- 页数:24
- 大小:99.40KB
模拟超市收银系统Word文档下载推荐.docx
《模拟超市收银系统Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《模拟超市收银系统Word文档下载推荐.docx(24页珍藏版)》请在冰豆网上搜索。
1.会员结账2.普通结账}
(2)增加商品
(3)增加会员
(4)查询会员消费记录
〔0〕退出
第二章总体设计
2.1模块化设计
为实现系统功能,本程序主要分为五个模块。
它们分别为:
顾客结账〔内含付款方式:
会员结账,普通结账〕;
增加商品;
增加会员;
查询会员消费记录;
退出,这五个函数再通过主函数调用分别得以实现。
主函数,首先提供了程序运行时的友好界面,提供客户选择的菜单。
然后,通过执行多分支选择语句——switch语句,分别实现其它各个函数的调用功能。
其它各个函数的功能分别如下:
顾客结账:
{1.会员结账vip_count()2.普通结账count()}
商品入库:
input()
增加会员:
CClientele()
查询会员消费记录:
Rec.read_record();
显示所有商品:
all();
找零:
change();
2.2程序运行示意图
是
否
是否
第三章详细设计
3.文件设计
本程序中,运用了多种函数。
首先商品入库、参加会员、显示主界面、再按数字输入进展选择性操作。
在主函数中分别调用各项的函数。
//商品入库
voidProduct:
:
input(){
cout<
<
"
编号:
;
cin>
>
id;
ifstreaminfile("
Goods.dat"
ios:
in|ios:
binary);
//判断商品是否已存在
if(!
infile){
d_show();
exit;
}
while(infile){
intn;
infile.read((char*)&
G1,sizeof(G1));
n=infile.gcount();
if(n==sizeof(G1))
if(G1.id==id){
cout<
货物已存在,请核实后再输入!
endl;
return;
}
infile.close();
商品名:
Goodsname;
单价:
price;
数量:
number;
G1.Setdata(id,Goodsname,price,number);
ofstreamoutfile("
app|ios:
outfile){
outfile.write((char*)&
outfile.close();
b_show();
}
//增加会员
voidClientele:
CClientele(){
输入卡号:
num;
Clientele.dat"
//将文件输出提前定义,为了能创立文件
if(outfile){
ifstreaminfile("
//判断会员是否已存在
if(!
d_show();
exit;
}
while(infile){
intn;
infile.read((char*)&
C1,sizeof(C1));
n=infile.gcount();
if(n==sizeof(C1))
if(C1.num==num){
cout<
该会员以存在,请核实后再输入!
return;
}
infile.close();
输入姓名:
name;
C1.Setdata(num,name);
3.2程序模块设计
本程序执行的入口是main函数,在main函数中首先调用了界面类中的各项操作的函数,在界面类中选择所需要进展的操作,在switch语句进展界面显示,实现超市收银系统算法的操作
while
(1){
show.a_show();
show.b_show();
Goods.all();
cout<
1.顾客结账2.增加商品3.增加会员\n\n4.查询会员消费记录\t0.退出\n"
请选择:
cin>
i;
switch(i){
case1:
cout<
付款方式:
1.会员结账2.普通结账"
endl<
cin>
n;
show.b_show();
switch(n){
case1:
VIP.SClientele();
Goods.vip_count();
show.c_show();
break;
case2:
Goods.count();
break;
case2:
Goods.input();
case3:
VIP.CClientele();
case4:
Rec.read_record();
case0:
return1;
return0;
第四章调试与测试
4.1调试过程中的主要问题
由于本程序是分界面设计的,所以运行时选择完操作并且执行完操作后,又会继续回到主菜单,供用户继续选择操作并执行操作。
对于本程序的调试运行,总体上情况良好。
但是,其中也出现了一些小问题。
我发现的主要问题有:
从文件读取数据到vector时,有时会产生错误;
以及保存到文件中时,也存在格式上的问题。
后来这些问题均以通过探究与测试中解决。
4.2测试结果
〔1〕主菜单〔如图〕
〔2〕商品入库
(3)增加新会员
〔4〕普通结账
(5)会员结账
〔6〕查询会员消费记录〔如图〕
第五章
超市收银系统程序代码
#include<
iostream>
string>
fstream>
usingnamespacestd;
//显示类
classShow{
public:
voida_show(){
\t***************************************************************\n"
\t**欢迎来到超级超市**\n"
staticvoidb_show(){
------------------------------------------------------\n"
voidc_show(){
cout<
\n\t************************欢迎再次光临!
*************************\n\n"
\t**************************************************************\n\n\n\n"
staticvoidd_show(){
openerror!
};
//会员类
classClientele:
publicShow{
intnum;
//卡号
charname[20];
//会员名
Clientele(){//初始化
num=0;
name[0]=0;
Clientele(intnuml,char*namel){
Setdata(numl,namel);
~Clientele(){}
intGetnum(){returnnum;
char*Getname(){returnname;
voidSetdata(int,char*);
//对Clientele进展赋值
voidShowClientele();
//显示会员信息
voidSClientele();
//搜索会员
voidCClientele();
//添加会员
//产品类
classProduct:
voidinput();
//商品入库
voidcount();
//普通结账
voidvip_count();
//会员结账
voidall();
//显示所有商品
voidchange();
//找零
voidSetdata(int,char*,int,int);
//对Product进展赋值
voidShow(int);
voidShowl(){
id<
\t"
name<
price<
number<
Product(){//初始化
id=0;
price=0;
number=0;
Product(intidl,char*namel,intpricel,intnumberl){
Setdata(idl,namel,pricel,numberl);
~Product(){}
intGetid(){returnid;
intGetprice(){returnprice;
intGetnumber(){returnnumber;
private:
intid;
//商品编号
//商品名
intprice;
//单价
intnumber;
//数量
//记录会员消费记录类
classrecord:
publicClientele,publicProduct{
intnum,goodsid,goodsprice,goodsnum;
charname[20],goodsname[20];
record(){
goodsid=0;
goodsname[0]=0;
goodsprice=0;
goodsnum=0;
record(intnuml,char*namel,intgoodsidl,char*goodsnamel,intgoodspricel,intgoodsnuml):
Clientele(numl,namel),Product(goodsidl,goodsnamel,goodspricel,goodsnuml){
Setdata(numl,namel,goodsidl,goodsnamel,goodspricel,goodsnuml);
~record(){}
//赋值
voidSetdata(intnuml,char*namel,intgoodsidl,char*goodsnamel,intgoodspricel,intgoodsnuml){
num=numl;
strcpy_s(name,namel);
goodsid=goodsidl;
strcpy_s(goodsname,goodsnamel);
goodsprice=goodspricel;
goodsnum=goodsnuml;
voidviprecord();
//记录会员消费
voidread_record();
//查询记录
voidShow();
//全局变量
ClienteleC1;
ProductG1;
recordR1;
intnum,i,j,n,id,price,number;
charname[20],Goodsname[20];
//对Clientele进展赋值
voidClientele:
Setdata(intnuml,char*namel){
num=numl;
strcpy_s(name,namel);
//Product赋值
voidProduct:
Setdata(intidl,char*namel,intpricel,intnumberl){
id=idl;
price=pricel;
number=numberl;
//查询会员信息
SClientele(){
ifstreaminfile("
if(!
while(infile){
intn;
if(n==sizeof(C1))
if(C1.num==num){
C1.ShowClientele();
break;
//记录新会员
ofstreamoutfile("
if(outfile){
//从文件中读取C1数据,长度为C1
//gcount()用来获得实际读取的字节数,不出错n是等于C1的长度
if(n==sizeof(C1))//如果n等于C1的长度,就可以执行
return;
if(n==sizeof(G1))
if(G1.id==id){
//显示所有商品
all(){
infile){//如果翻开文件失败,那么创立文件
outfile.close();
编号\t"
名字\t"
单价\t"
数量\t"
G1.Showl();
//普通结账
count(){
ints=0,S=0,k;
完毕输入按“0〞"
do{
商品编号:
购置数量:
j;
b_show();
if(G1.id==i){
G1.Show(j);
b_show();
s=G1.price*j;
//导入单价和购置数量,进展结算
S=S+s;
}while(i!
=0);
金额:
S<
收款:
k;
找零:
k-S<
if(S>
200){//消费超过200,办理会员
消费已超过200,可办理会员,“y/n〞"
charl;
l;
if(l='
y'
)
C1.CClientele();
//会员结账
vip_count(){
if(G1.id==i)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 模拟 超市 收银 系统