C++ 大作业 超市收银系统
#include<iostream> #include<fstream> #include<string> #include<iomanip> #include<ctime> #include<windows.h> using namespace std; string td; class Product //商品类 {private: //私有数据成员 double price; char name[30]; long number; public: //成员函数 double getprice() //获取商品价格 {return price;} char *getname() //获取商品名 {return name;} long getnumber() //获取商品条形码 {return number;} double setprice() //设置价格 { cout<<"请 输 入 价 格 : "; cin>>price; } string setname() //设置商品名 { cout<<"请 输 入 商 品 名 : "; cin>>name; } void setnumber() //设置商品条形码 { cout<<"请 输 入 商 品 条 形 码 : "; cin>>number; } void addproduct(); //增加商品 void search(); //查找商品信息 void change(); // 更改商品信息 void display(); //显示商品信息 int del(int k=0); //删除商品信息 }; void Product::addproduct() //增加商品 { string pnumber,nam; int k=0; cout<<"请 输 入 商 品 条 形 码 : "; cin>>pnumber; nam="D:\\商品\\"+pnumber+".txt"; ifstream infile(nam.c_str()); if(infile) { cout<<" 该商品已存在,请重新选择!"<<endl; k=1; infile.close(); } infile.close(); if(k==0) { ofstream outfile(nam.c_str()); if(!outfile) { cout<<" 系统出现错误,请重新保存!"<<endl; } if(outfile) { outfile<<setw(20)<<"商品条形码:"<<pnumber<<endl; cout<<"请 输 入 商 品 价 格 : "; cin>>price; outfile<<setw(20)<<"商品价格:"<<price<<endl; cout<<"请 输 入 商 品 名 : "; cin>>name; outfile<<setw(20)<<"商品名:"<<name<<endl; outfile.close(); cout<<" 保存商品成功!"<<endl; } } } void Product::search() //查找商品信息 { string pnumber,nam; cout<<"请 输 入 商 品 条 形 码: "; cin>>pnumber; nam="D:\\商品\\"+pnumber+".txt"; ifstream infile(nam.c_str()); if(!infile) { cout<<" 未找到该商品,请核对 !"<<endl; } else { cout<<" 该商品存在,详情请查询所有信息 !"<<endl; infile.close(); } } void Product::change() // 更改商品信息 { string pnumber,nam; int m=0; m=del(1); if(m==1) { nam="D:\\商品\\"+pnumber+".txt"; ofstream outfile(nam.c_str()); if(outfile) { cout<<" 请 输 入 更 改 后 的 商 品 信 息 !"; cout<<" 商 品 名 : "; cin>>name; cout<<" 商 品 条 形 码 : "; cin>>number; cout<<" 商 品 价 格 : "; cin>>price; outfile<<setw(20)<<"商品条形码:"<<number<<endl; outfile<<setw(20)<<"商品价格:"<<price<<endl; outfile<<setw(20)<<"商品名:"<<name<<endl; outfile.close(); } } } void Product::display() //显示商品信息 { string pnumber,nam; cout<<"请 输 入 要 查 找 商 品 条 形 码 :"; cin>>pnumber; nam="D:\\商品\\"+pnumber+".txt"; ifstream infile(nam.c_str()); if(!infile) { cout<<" 该商品不存在,请核对!"<<endl; } else { cout<<" 该商品存在!商品信息如下:"<<endl; string s; while(getline(infile,s)) { cout<<s<<endl; } } infile.close(); } int Product::del(int k) //删除商品信息 { string pnumber,nam; cout<<"请 输 入 商 品 条 形 码 : "; cin>>pnumber; nam="D:\\商品\\"+pnumber+".txt"; ifstream infile(nam.c_str()); if(!infile) { cout<<" 该商品不存在,请核对!"<<endl; return 0; } else { infile.close(); DeleteFile(nam.c_str()); if(k==0) cout<<" 删除成功!"<<endl; return 1; } } class Member //会员类 { private: char name[30]; int number; unsigned long int pnumber; public: void addcustomer(); //增加会员 int search(int k=0); //查找会员 void change(); // 更改会员信息 void display(); //显示会员信息 int del(int k=0); //删除会员信息 }; void Member::addcustomer() //增加会员 { string cnumber,nu; int k=0; cout<<"请 输 入 会 员 卡 号 : "; cin>>cnumber; nu="D:\\会员\\"+cnumber+".txt"; ifstream infile(nu.c_str()); if(infile) { cout<<" 该会员已存在,请重新输入选择!"<<endl; k=1; infile.close(); } infile.close(); if(k==0) { ofstream outfile(nu.c_str()); if(!outfile) { cout<<" 系统出现错误,请重新保存!"<<endl; } if(outfile) { cout<<"请 输 入 会 员 姓 名 : "; cin>>name; outfile<<setw(20)<<"会员名:"<<name <<endl; outfile<<setw(20)<<"会员卡号:"<<cnumber<<endl; cout<<"请 输 入 会 员 手 机 号 : "; cin>>pnumber; outfile<<setw(20)<<"会员手机号:"<<pnumber<<endl; outfile.close(); cout<<" 保存会员成功!"<<endl; } } } int Member::search(int k) //查找会员 { string cnumber,nu; cout<<"请输入会员卡号"; cin>>cnumber; nu="D:\\会员\\"+cnumber+".txt"; ifstream infile(nu.c_str()); if(!infile) { cout<<"未找到该会员,请核对!"<<endl; return 0; } if(infile) { if(k==0) cout<<"该会员存在,详情请查询所有信息 !"<<endl; infile.close(); return 1; } } void Member::change() // 更改会员信息 { string cnumber,nu; int m=1; m=del(1); if(m==1) { cout<<" 请输入更改后的会员信息!"; cout<<"会 员 卡 号: "; cin>>cnumber; nu="D:\\会员\\"+cnumber+".txt"; ofstream outfile(nu.c_str()); if(outfile) { cout<<"会 员 名 : "; cin>>name; cout<<"会 员 手 机 号 :"; cin>>pnumber; outfile<<setw(20)<<"会员姓名:"<<name<<endl; outfile<<setw(20)<<"会员卡号:"<<cnumber<<endl; outfile<<setw(20)<<"会员手机号:"<<pnumber<<endl; outfile.close(); } } } void Member::display() //显示会员信息 { string cnumber,nu; cout<<"请 输 入 要 查 找 会 员 的 会 员 卡 号 :"; cin>>cnumber; nu="D:\\会员\\"+cnumber+".txt"; ifstream infile(nu.c_str()); if(!infile) { cout<<" 该会员不存在,请核对!"<<endl; } else { cout<<" 该会员存在!会员信息如下:"<<endl; string s; while(getline(infile,s)) { cout<<s<<endl; } } } int Member::del(int k) //删除会员信息 { string cnumber,nu; cout<<"请 输 入 会 员 卡 号 : "; cin>>cnumber; nu="D:\\会员\\"+cnumber+".txt"; ifstream infile(nu.c_str()); if(!infile) { cout<<" 该会员不存在,请核对!"<<endl; return 0; } if(infile) { infile.close(); DeleteFile(nu.c_str()); if(k==0) cout<<"删除成功!"<<endl; return 1; } } class Vip:public Member //vip类 { private: char name[30]; int numbervip; unsigned long int pnumber; public: int addvip(); //增加vip void searchvip(); //查找vip void changevip(); // 更改vip信息 void displayvip(); //显示vip信息 int delvip(int k=0); //删除vip信息 void memv(); //member变成VIP }; int Vip::addvip() //增加vip { string vnumber,vn; int k=0; cout<<"请 输 入 VIP 卡 号: "; cin>>vnumber; vn="D:\\VIP\\"+vnumber+".txt"; ifstream infile(vn.c_str()); if(infile) { cout<<" 该VIP已存在,请重新选择!"<<endl; k=1; infile.close(); } if(k==0) { ofstream outfile(vn.c_str()); if(!outfile) { cout<<" 系统出现错误,请重新保存!"<<endl; } if(outfile) { cout<<"请 输 入 VIP 姓 名: "; cin>>name; outfile<<setw(20)<<"VIP姓名:"<<name <<endl; outfile<<setw(20)<<"VIP卡号:"<<vnumber<<endl; cout<<"请 输 入 VIP 手 机 号:"; cin>>pnumber; outfile<<setw(20)<<"VIP手机号:"<<pnumber<<endl; outfile.close(); cout<<" 保存VIP成功!"<<endl; return 1; } } } void Vip::searchvip() //查找vip { string vnumber,vn; cout<<"请 输 入 vip 卡 号 : "; cin>>vnumber; vn="D:\\VIP\\"+vnumber+".txt"; ifstream infile(vn.c_str()); if(!infile) { cout<<" 未找到该vip,请核对"<<endl; } else { cout<<" 该vip存在,详情请查询所有信息 !"<<endl; infile.close(); } } void Vip::changevip() // 更改vip信息 { string vnumber,vn; int m=0; m=delvip(1); if(m==1) { vn="D:\\VIP\\"+vnumber+".txt"; ofstream outfile(vn.c_str()); if(outfile) { cout<<" 请输入更改后VIP信息!"; cout<<"vip 姓 名 : "; cin>>name; cout<<"vip 卡 号 : "; cin>>numbervip; cout<<"vip 手 机 号 码 : "; cin>>pnumber; outfile<<setw(20)<<"VIP姓名:"<<name<<endl; outfile<<setw(20)<<"VIP卡号:"<<numbervip<<endl; outfile<<setw(20)<<"VIP手机号:"<<pnumber<<endl; outfile.close(); } } } void Vip::displayvip() //显示vip信息 { string vnumber,vn; cout<<"请 输 入 要 查 找 vip 的 vip 卡 号:"; cin>>vnumber; vn="D:\\VIP\\"+vnumber+".txt"; ifstream infile(vn.c_str()); if(!infile) { cout<<" 该vip不存在,请核对!"<<endl; } else { cout<<" 该vip存在!vip信息如下:"<<endl; string s; while(getline(infile,s)) { cout<<s<<endl; } infile.close(); } } int Vip::delvip(int k) //删除vip信息 { string vnumber,vn; cout<<"请 输 入 vip 卡 号 : "; cin>>vnumber; vn="D:\\VIP\\"+vnumber+".txt"; ifstream infile(vn.c_str()); if(!infile) { cout<<" 该vip不存在,请核对!"; return 0; } if(infile) { infile.close(); DeleteFile(vn.c_str()); if(k==0) cout<<"删除成功!"<<endl; return 1; } } void Vip::memv() //member变成VIP { int flag=0,flag1=0; Member m; flag=m.search(1); if(flag==1) { cout<<" 该会员存在!请继续!"<<endl; while(flag1==0) flag1=addvip(); m.del(1); } } int charge() //收银员系统 { system("cls"); system("color 5f"); int cchoice; char name[20]; while(cchoice!=0) { if(cchoice!=3) { cout<<" ╭------------< 收银员 >-----------╮"<<endl; cout<<" ∣ ∣"<<endl; cout<<" ├-----------------------------------┤"<<endl; cout<<" ∣ 1.收银员注册 ∣"<<endl; cout<<" ∣ 2.收银员登陆 ∣"<<endl; cout<<" ∣ 3.返 回 ∣"<<endl; cout<<" ╰-----------------------------------╯"<<endl; cout<<" 请选择您要服务的类别:"; cin>>cchoice; if((cchoice!=1)&&(cchoice!=2)&&(cchoice!=3)) { cout<<" 输入有误,请重新输入!"<<endl; continue; } } if(cchoice==1) { string ad,wn; cout<<"请 输 入 工 号 : "; cin>>ad; wn="D:\\收银员\\"+ad+".txt"; ifstream infile(wn.c_str()); if(infile) { cout<<" 已注册!"<<endl; continue; } ofstream outfile(wn.c_str()); if(!outfile) { cout<<" 有错误,请重试!"<<endl; continue; } cout<<"请 输 入 姓 名 : "; cin>>name; outfile<<setw(10)<<"姓名: "<<name<<endl; outfile<<setw(10)<<"工号: "<<ad<<endl; cout<<" 欢迎!注册成功!"<<endl; } if(cchoice==2) { string wn,ad; cout<<"请 输 入 你 的 工 号 : "; cin>>ad; wn="D:\\收银员\\"+ad+".txt"; ifstream infile(wn.c_str()); { if(infile) { cout<<" ☆☆☆☆☆ 欢 迎 光 临 ☆☆☆☆☆"<<endl; return 'a'; } if(!infile) { cout<<" 您的输入有误,请您核对!"<<endl; } } continue; } if(cchoice==3) return 2; } return 0; } int shouying_system() { system("color 3b"); int cho=1; while(cho!=0) { cout<<" ☆☆☆☆☆☆☆☆ 超市收银系统 ☆☆☆☆☆☆☆☆"<<endl; cout<<" ********************************************************"<<endl; cout<<" * 商品支付系统---------------------------1 *"<<endl; cout<<" * 会员管理系统---------------------------2 *"<<endl; cout<<" * VIP 管理系统---------------------------3 *"<<endl; cout<<" * 商品管理系统---------------------------4 *"<<endl; cout<<" * 查看超市收入情况-----------------------5 *"<<endl; cout<<" * 返 回----------------------------------6 *"<<endl; cout<<" ********************************************************"<<endl; cout<<" 请输入您的指令!"<<endl; cin>>cho; if(cho==1){return 1;} if(cho==2){return 2;} if(cho==3){return 3;} if(cho==4){return 4;} if(cho==5){return 5;} if(cho==6){return 6;} } } int productpay_system() { SYSTEMTIME sys; GetLocalTime(&sys); system("color 3c" ); double income=0,total,price,quantity; string pn,pm,mov,s; int f,k,flag=0,flag1=1,flag2=1; while(flag==0) { if(flag1==2) { cout<<" 1.继续支付商品 2.返回收银系统"; cin>>flag2; } if(flag2==2) return 1; if(flag2==1) { cout<<"请 输 入 商 品 条 形 码 :"; cin>>pn; pm="D:\\商品\\"+pn+".txt"; ifstream infile(pm.c_str()); if(!infile) { cout<<" 未找到该商品!"<<endl; cout<<"1.重 新 输 入 2.返 回"; cin>>k; if(k==1) { k=0; continue; } if(k==2) {f=0,flag=0;flag1=2;} } if(infile) { while(getline(infile,s)) { cout<<s<<endl; } cout<<"请输入商品单价:"; cin>>price; cout<<"请输入重量或质量:"; cin>>quantity; cout<<"1:会员 2:VIP 3:普通顾客"<<endl; cout<<"(请询问,若是会员或VIP请输入相应数字进入系统)"; cin>>f; } while(f==1) { string a,mn; cout<<"请 会 员 卡 号 :"; cin>>a; mn="D:\\会员\\"+a+".txt"; ifstream infile(mn.c_str()); if(!infile) { cout<<" 未找到该会员!"<<endl; cout<<"1.重 新 输 入 2.返 回"; cin>>k; if(k==1) { k=0; continue; } if(k==2) {f=0,flag=0;flag1=2;} } if(infile) { string in; string date; total=price*quantity*0.9; income=income+total; cout<<"应 付 金 额 :"<<total<<endl; in="D:\\收入\\会员收入\\"+td+".txt"; ofstream outfile(in.c_str()); outfile<<income<<'\t'<<sys.wSecond<<'/'<<sys.wMinute<<'/'<<sys.wHour<<endl; f=0,flag=0;flag1=2; } } while(f==2) { string b,vn; cout<<"请 输 入 VIP 卡 号 :"; cin>>b; vn="D:\\VIP\\"+b+".txt"; ifstream infile(vn.c_str()); if(!infile) { cout<<" 未找到该vip!"<<endl; cout<<"1.重 新 输 入 2.返 回"; cin>>k; if(k==1) { k=0; continue; } if(k==2) {f=0,flag=0;flag1=2;} } if(infile) { infile.close(); total=price*quantity*0.8; income=income+total; string in; string date; cout<<"应 付 金 额:"<<total<<endl; in="D:\\收入\\VIP收入\\"+td+".txt"; ofstream outfile(in.c_str()); outfile<<income<<'\t'<<sys.wSecond<<'/'<<sys.wMinute<<'/'<<sys.wHour<<endl; f=0,flag=0;flag1=2; } } while(f==3) { total=price*quantity; cout<<"应付金额:"<<total<<endl; income=income+total; string in; string date; in="D:\\收入\\普通收入\\"+td+".txt"; ofstream outfile(in.c_str()); outfile<<income<<'\t'<<sys.wSecond<<'/'<<sys.wMinute<<'/'<<sys.wHour<<endl; f=0,flag=0;flag1=2; } } } return 1; } int member_system() { system("color 1d"); Member m; int choic; while(choic!=0) { { cout<<" 1.增加 2.查找 "<<endl; cout<<" 3.更改 4.显示 "<<endl; cout<<" 5.删除 6.返回 "<<endl; cout<<"请输入您的指令:"; cin>>choic; } if(choic==1) {m.addcustomer();continue;} if(choic==2) {m.search();continue;} if(choic==3) {m.change();continue;} if(choic==4) {m.display();continue;} if(choic==5) {m.del(0);continue;} if(choic==6) {return 1;} } } int vip_system() { system("color 4a"); Vip v; int choic; while(choic!=0) { { cout<<" 1.增加 2.查找 "<<endl; cout<<" 3.更改 4.显示 "<<endl; cout<<" 5.删除 6.返回 "<<endl; cout<<" 7.会员变成VIP "<<endl; cout<<"请输入您的指令:"; cin>>choic; } if(choic==1) {v.addvip();continue;} if(choic==2) {v.searchvip();continue;} if(choic==3) {v.changevip();continue;} if(choic==4) {v.displayvip();continue;} if(choic==5) {v.delvip(0);continue;} if(choic==6) {return 1;} if(choic==7) {v.memv();continue;} } } int productmanage_system() { system("color 5e"); Product p; int ch; while(ch!=0) { cout<<" 1.增加 2.更改 "<<endl; cout<<" 3.查找 4.删除 "<<endl; cout<<" 5.显示 6.返回 "<<endl; cout<<"请输入您的指令: "; cin>>ch; if(ch==1) {p.addproduct();continue;} if(ch==2) {p.change();continue;} if(ch==3) {p.search();continue;} if(ch==4) {p.del(0);continue;} if(ch==5) {p.display();continue;} if(ch==6) return 1; } } int showincome_system() { SYSTEMTIME sys; GetLocalTime(&sys); system("color 2e"); double tincome=0,number; string s,in,date; cout<<"请输入要查询的日期:"; cin>>date; in="D:\\收入\\会员收入\\"+date+".txt"; ifstream infile(in.c_str()); if(!infile) { cout<<"未能统计会员收入" <<endl; } while(getline(infile,s)) { ofstream outfile("d:\\收入\\totalincome.txt",ios::app); outfile<<s<<endl; infile.close(); } string vn; vn="D:\\收入\\VIP收入\\"+date+".txt"; ifstream fin(vn.c_str()); if(!fin) { cout<<"未能统计VIP收入" <<endl; } while(getline(fin,s)) { ofstream outfile("d:\\收入\\totalincome.txt",ios::app); outfile<<s<<endl; fin.close(); } ifstream input_data; string pt; pt="D:\\收入\\普通收入\\"+date+".txt"; input_data.open(pt.c_str()); if(!input_data) { cout<<"未能统计普通顾客收入"<<endl; } while(getline(input_data,s)) { ofstream outfile("d:\\收入\\totalincome.txt",ios::app); outfile<<s<<endl; input_data.close(); } ifstream datafile("d:\\收入\\totalincome.txt",ios::in); if(!datafile) { cout<<"该文件未能正确打开!"<<endl; } while(datafile>>number) { int se,m,h,d,m1,y; char d1,d2,d3,d4,d5; datafile>>se>>d1>>m>>d2>>h>>d3>>d>>d4>>m1>>d5>>y; tincome=tincome+number; } datafile.clear(); cout<<"总收入:"<<tincome<<endl; return 1; } int main() { system("color 06f"); extern string td; cout<<"请输入当前日期(年/月/ 日):"; cin>>td; double income=0,flag1=0,flag2=0; int c=1,cho=1,k,p; cout<<" ********************************************************"<<endl; cout<<" 欢迎使用!收银员系统(!请仔细阅读使用说明!) "<<endl; cout<<" ********************************************************"<<endl; cout<<" please press 1!"<<endl; cout<<" 使用说明 "<<endl; cout<<" 一.请按提示输入要的选项"<<endl; cout<<" 二.请先在D盘建立四个文件夹"<<endl; cout<<" ①收银员 ②会员 ③VIP ④收入"<<endl; cout<<" 三.请在收入文件夹中建立三个文件夹"<<endl; cout<<" ①会员收入 ②VIP收入 ③普通收入"<<endl; cout<<" 四.如需要改变路径,请联系相关技术人员"<<endl; cout<<" 五.系统还在测试阶段,谢谢使用!"<<endl; cin>>c; if(c!=1) { cout<<"please press 1!"<<endl; cin>>c; } while(c!=0) { system("cls"); cout<<" ☆☆☆☆☆ 欢 迎 使 用! ☆☆☆☆☆"<<endl; cout<<" 收银员系统-------------1"<<endl; cout<<" 退 出-----------------2"<<endl; cin>>c; if(c==1) { c=charge(); } if(c=='a') { cout<<" 收银系统----------------1"<<endl; cout<<" 返 回------------------2"<<endl; cout<<" 退 出------------------3"<<endl; cin>>k; if(k==2) {c=2;continue;} while(k==1) { int flag3=0; if(flag1==0) p=shouying_system(); if(p==1) {flag2=productpay_system();} if(p==2) {flag2=member_system();} if(p==3) {flag2=vip_system();} if(p==4) {flag2=productmanage_system();} if(p==5) {flag3=1;flag2=showincome_system();} if(p==6) {k=2; flag1=0; flag2=0; continue;} if(flag2==1) { if(flag3==0) system("cls"); p=shouying_system(); flag1=1; } } if(k==3) exit(1); } if(c==2) exit(1); } return 0; }
超市作为市民日常生活消费的主要场所,随着社会的发展,超市作为信息资源的集散地的现象日趋明显,各种促销方式,各种消费手段,是超市的业务量更大,收入更高,工作量更大。为了管理超市商品和会员和VIP信息以及计算商品价格和统计收入,我们根据超市收银台所需要的实际管理系统进行了全面的分析处理。通过设计合理的函数,通过C++设计出本程序。
系统针对超市收银系统和商品管理系统,面对大量纷繁复杂的管理操作,对不同商品的增加和删除和更改信息,以及消费者信息的维护,需要设计一个合理的系统,它应包括商品类,会员类,和基于会员类的VIP类和超市的收入信息,建立本超市管理系统8的目的是实现无纸化超市收管理,减轻管理员的工作量,实现收银维护和信息上架的一体化管理,并要求对管理员进行身份验证。