1.程序设计内容
超市中商品分为四类,分别是食品、化妆品、日用品和饮料。每种商品都包含商品名称、价格、 库存量和生产厂家、品牌等信息。主要完成对商品的销售、统计和简单管理。本系统的软件界面是 使用 C++编译生成的一个系统操作菜单。操作菜单界面总共有七个选项可以供用户操作选择,分别 为购买商品、添加商品、删除商品、修改商品、查询商品、统计商品、退出系统。菜单页面下方有 可供用户选择操作项目的指令,当用户选择并输入 0-6 中的任意数字,系统便会进入相应的功能操作;如果输入(0-6)之外的数字则不会进入系统。
2.设计要求
(1)销售功能。购买商品时,先输入类别,然后输入商品名称,并在库存中查找该商品的相 关信息。如果有库存量,输入购买的数量,进行相应计算。如果库存量不够,给出提示信息,结束 购买。
(2)商品简单管理功能。
添加功能:主要完成商品信息的添加。
查询功能:可按商品类别、商品名称、生产厂家进行查询。若存在相应信息,输出所查询的信 息,若不存在该记录,则提示“该记录不存在!”。
修改功能:可根据查询结果对相应的记录进行修改。
删除功能:主要完成商品信息的删除。先输入商品类别,再输入要删除的商品名称,根据查询 结果删除该物品的记录,如果该商品不在物品库中,则提示“该商品不存在”。
*各类课程设计的内容虽然会指示不同的编程语言完成相应的操作,但是程序总体的框架功能以“增、删、改、查”为主。
(3)统计功能。 输出当前库存中所有商品的总数及详细信息;可按商品的价格、库存量、生产厂家进行统计。(可以按照大小输出)
3.程序不同功能的代码展示
1.数据类型
private:
int number; //商品数量
char name[1000][20]; //商品名称
char type[1000][20]; //商品类型
int price[1000]; //商品价格
int num[1000]; //商品库存量
char producer[1000][20];//商品生产产家
char brand[1000][20]; //商品品牌
2.功能函数
(1)购买商品函数
void buy() //购买商品函数
{
cout<<"1.食物 2.饮料 3.日常用品 4.化妆品"<<endl;
char s1[20];
cout<<"请选择所要购买的商品种类(请输入完整名称): "<<endl;
cin>>s1;
cout<<"请选择您所要购买的商品名称:";
int i,flag=0;
char s[20];
cin>>s;
for(i=0;i<number;i++)
{
if(strcmp(type[i],s1)&&strcmp(name[i],s)==0)
{
flag=1;
cout<<"商品种类:"<<type[i]<<endl<<"商品名称:"<<name[i]<<endl<<"商品价格:"<<price[i]<<endl<<"商品库存:"<<num[i]<<endl<<"商品厂家:"<<producer[i]<<endl<<"商品品牌:"<<brand[i]<<endl;
cout<<"请输入购买数量:";
int m;
cin>>m;
if(m<num[i])
{
cout<<"您此次一共花费:"<<m*(price[i])<<endl;
cout<<"购买成功,该商品售出!"<<endl;
num[i]= num[i] -m;
}
else
{
cout<<"库存不足"<<endl;
}
}
}
if(flag==0)
{
cout<<"不存在该商品!"<<endl;
}
}
(2)添加商品函数
void add() //添加商品函数
{
int a;
cout<<"食物 饮料 日常用品 化妆品"<<endl;
cout<<"请选择种类(输入完整名称):"<<endl;
cin>>type[number];
cout<<"请输入名称:"<<endl;
cin>>name[number];
cout<<"请输入价格:"<<endl;
cin>>price[number];
cout<<"请输入库存:"<<endl;
cin>>num[number];
cout<<"请输入品牌:"<<endl;
cin>>brand[number];
cout<<"请输入厂家:"<<endl;
cin>>producer[number];
cout<<"增加商品成功!"<<endl;
number++; //商品总数加一
}
(3)删除商品函数
void del() //删除商品函数
{ char s1[20];
char s2[20]={0};
cout<<"食物 饮料 日常用品 化妆品"<<endl;
cout<<"请输入要删除的商品类别:"<<endl;
cin>>s1;
cout<<"请输入要删除的商品名称:"<<endl;
cin>>s2;
int flag=0;
int i,j;
for(i=0;i<number;i++)
{
if((strcmp(type[i],s1)==0)&&(strcmp(name[i],s2)==0)) //只有当输入要修改的类型和名称同时和文件中所含有的一致时才会执行
{
flag=1;
cout<<"以下是将要删除的商品信息:"<<endl;
cout<<type[i]<<" "<<name[i]<<" "<<price[i]<<" "<<num[i]<<" "<<producer[i]<<" "<<brand[i]<<endl;//把将要删除的商品信息进行输出
for(j=i;j<number-1;j++) //递归删除
{
strcpy(type[j],type[j+1]); //将之前i+1的值传递给原来的i
strcpy(name[j],name[j+1]);
price[j]=price[j+1]; //同上
num[j]=num[j+1];
strcpy(producer[j],producer[j+1]); //字符串的复制函数
strcpy(brand[j],brand[j+1]); //同上
}
break;
}
}
if(flag==0)
{
cout<<"该商品不存在"<<endl;
}
else
{
number--;
cout<<"删除成功"<<endl;
}
}
(4)修改商品函数
void change() //修改商品函数
{
cout<<"食物 饮料 日常用品 化妆品"<<endl;
char s[20];
cout<<"请输入您要修改的商品名称:";
cin>>s;
int a,i,flag=0;
for(i=0;i<number;i++)
{
if(strcmp(name[i],s)==0)
{
cout<<"1.修改价格"<<endl;
cout<<"2.修改库存"<<endl;
cin>>a;
if(a==1)
{
for(i=0;i<number;i++)
{
if(strcmp(name[i],s)==0)
{
flag=1;
cout<<"修改前的商品信息为:"<<endl;
cout<<type[i]<<" "<<name[i]<<" "<<price[i]<<" "<<num[i]<<" "<<producer[i]<<" "<<brand[i]<<endl;
cout<<"请输入修改后的价格: ";
cin>>price[i];
cout<<type[i]<<" "<<name[i]<<" "<<price[i]<<" "<<num[i]<<" "<<producer[i]<<" "<<brand[i]<<endl;
}
}
}
else if(a==2)
{
for(i=0;i<number;i++)
{
if(strcmp(name[i],s)==0)
{
flag=1;
cout<<"修改前的商品信息为:"<<endl;
cout<<type[i]<<" "<<name[i]<<" "<<price[i]<<" "<<num[i]<<" "<<producer[i]<<" "<<brand[i]<<endl;
cout<<"请输入修改后的商品库存: ";
cin>>num[i];
cout<<type[i]<<" "<<name[i]<<" "<<price[i]<<" "<<num[i]<<" "<<producer[i]<<" "<<brand[i]<<endl;
}
}
}
}
if(flag=0)
{
cout<<"没有该商品,是不是输错了?"<<endl;
}
}
}
(5)查询商品函数
void find() //查找商品函数
{
cout<<"1.按商品类别进行查找"<<endl;
cout<<"2.按商品名称进行查找"<<endl;
cout<<"3.按生产厂家进行查找"<<endl;
cout<<"请选择您的查找方式:"<<endl;
int b;
cin>>b;
int flag=0,i;
char s[20]={0};
if(b==1)
{
cout<<"请输入需要查找的商品类型:"<<endl;
cin>>s;
for(i=0;i<number;i++)
{
if(strcmp(type[i],s)==0) //通过字符串比较函数进行查找
{
flag=1; //当匹配到对应的类型时,标签值为1
cout<<type[i]<<" "<<name[i]<<" "<<price[i]<<" "<<num[i]<<" "<<producer[i]<<" "<<brand[i]<<endl;
}
}
if(flag==0) //没有匹配到相应类型,提醒用户“该记录不存在”
{
cout<<"该记录不存在"<<endl;
}
}
else if(b==2)
{
cout<<"请输入所要查找的商品名称:"<<endl;
cin>>s;
for(i=0;i<number;i++)
{
if(strcmp(name[i],s)==0) //通过字符串比较函数进行查找
{
flag=1; //当匹配到对应的类型时,标签值为1
cout<<type[i]<<" "<<name[i]<<" "<<price[i]<<" "<<num[i]<<" "<<producer[i]<<" "<<brand[i]<<endl;
}
}
if(flag==0) //同上
{
cout<<"该记录不存在"<<endl;
}
}
else if(b==3)
{
cout<<"请输入所要查找的商品产家"<<endl;
cin>>s;
for(i=0;i<number;i++)
{
if(strcmp(producer[i],s)==0) //通过字符串比较函数进行查找
{
flag=1; // 当匹配到对应的类型时,标签值为1
cout<<type[i]<<" "<<name[i]<<" "<<price[i]<<" "<<num[i]<<" "<<producer[i]<<" "<<brand[i]<<endl;
}
}
if(flag==0)
{
cout<<"该记录不存在"<<endl;
}
}
}
(6)统计商品函数(此处未进行大小排序)
void state() //统计商品函数
{
int i,s;
cout<<"食物 饮料 日常用品 化妆品"<<endl;
cout<<"商品总数为: "<<number<<endl<<endl<<endl;
cout<<"类型 名称 价格 库存量 生产厂家 品牌"<<endl<<endl;
for(i=0;i<number;i++)
{
cout<<type[i]<<setw(10)<<name[i]<<setw(10)<<price[i]<<setw(10)<<num[i]<<setw(10)<<producer[i]<<setw(10)<<brand[i]<<endl;
}
cout<<"1.对价格统计"<<endl;
cout<<"2.对库存统计"<<endl;
cout<<"3.对厂家统计"<<endl;
cin>>s;
if(s==1)
{
cout<<"名称:"<<setw(20)<<"价格: "<<endl;
for(i=0;i<number;i++)
{
cout<<name[i]<<setw(20)<<price[i]<<endl;
}
}
if(s==2)
{ cout<<"名称:"<<setw(20)<<"库存: "<<endl;
for(i=0;i<number;i++)
{
cout<<name[i]<<setw(20)<<num[i]<<endl;
}
}
if(s==3)
{
cout<<"名称:"<<setw(20)<<"生产产家: "<<endl;
for(i=0;i<number;i++)
{
cout<<name[i]<<setw(20)<<producer[i]<<endl;
}
}
}
界面展示:
(7)主界面函数
int main()
{
class goods g;
while(1) //重复循环
{
cout<<" "<<endl;
cout<<"&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&********************&&&&&&&&&&&&&&&&&&&&&&&&&&&&&"<<endl;
cout<<"&& &&"<<endl;
cout<<"&& ----------欢迎进入超市商品管理系统---------- && "<<endl;
cout<<"&& ******* 1.购买商品 ******* &&"<<endl;
cout<<"&& ******* 2.添加商品 ******* &&"<<endl;
cout<<"&& ******* 3.删除商品 ******* &&"<<endl;
cout<<"&& ******* 4.修改商品 ******* &&"<<endl;
cout<<"&& ******* 5.查询商品 ******* &&"<<endl;
cout<<"&& ******* 6.统计商品 ******* &&"<<endl;
cout<<"&& ******* 0.退出系统 ******* &&"<<endl;
cout<<"&& --------------------------------------------- &&"<<endl;
cout<<"&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&********************&&&&&&&&&&&&&&&&&&&&&&&&&&&&&"<<endl;
cout<<" "<<endl;
cout<<" 请选择您要进行的操作项目(0-6)"<<endl;
int choose;
cin>>choose;
if(choose==1)
{
g.buy();g.save();//当用户选择1购买商品,执行购买函数,并且按照购买数量改变库存量,并进行保存
}
else if(choose==2)
{
g.add();g.save(); //当用户选择2添加商品时,先执行添加商品函数,然后进行保存
}
else if(choose==3)
{
g.del();g.save(); //当用户选择3修改商品时,先执行删除商品函数,然后进行保存
}
else if(choose==4)
{
g.change();g.save(); //当用户选择4改变商品时,先执行修改商品函数,然后进行保存
}
else if(choose==5)
{
g.find(); // 用户选择5查找商品时,执行查找商品函数
}
else if(choose==6)
{
g.state(); //用户选择6统计商品时,执行统计函数
}
else if(choose==0)
{
cout<<"感谢您的使用!" <<endl;
break; //当用户选择0时,退出程序
}
system("pause"); //每执行完一个功能时,会暂停保留当前界面信息
system("cls"); //执行清屏操作,只留下主界面
}
return 0;
}
(8)文件读写函数
number = 0;
ifstream in("商品信息.txt"); //从文件中读取商品信息
if(in==NULL) //如果文件中商品信息是空的
{
cout<<"商品信息为空"<<endl; //打印出“商品信息为空”提醒用户
return ;
}
while(!in.eof()) //eof 表示结束
{
in>>type[number]>>name[number]>>price[number]>>num[number]>>producer[number]>>brand[number];
number++;
}
in.close(); //读取之后关闭文件
(保存商品函数)/(文件写入函数)
void save() //保存商品数据
{
ofstream out("商品信息.txt"); //写入文件
int i;
for(i=0;i<number;i++)
{
out<<type[i]<<" "<<name[i]<<" "<<price[i]<<" "<<num[i]<<" "<<producer[i]<<" "<<brand[i]; //将信息导入文件
if(i!=number-1) //每次成功添加一个商品之后会换一行
out<<endl;
}
out.close(); //保存之后关闭文件
}
如果能力水平达到了一定的高度,或者没有达到,也可以自己尝试去完善和精进程序;可以用QT图形化界面等进行美化。
1.设计主题为超市商品管理系统,一共有七个功能,分为购买商品、添加商品、删除商品、修改商品、查询商品、统计商品、保存商品信息;在主界面中没有单独加保存商品信息的按钮,实际上在涉及到商品信息的改动方面,执行完相应的改变功能之后,就进行了商品信息的保存。
2、考虑到用户输入错误的因素,做了相应的错误提醒和警告;在购买函数中,只有当用户输入的商品类型、商品名称与文件中所保存的一致时,才会执行下一步的购买操作,同时,会根据用户购买的数量和库存量作比较,如果购买量在库存量之上,会提醒用户库存不足;
同理,删除商品时也会在文件中进行比对,对应之可以删除,否则会提醒不存在该商品;查找商品和修改商品也用了类似提醒。
3.读写文件功能,使得每次超市管理系统能够正常读取信息运行,并且保存商品动态信息。
//程序设计参考B站超市商品管理系统进行设计,所用函数与其一致,但某些具体功能因为课题要求做了相应的改变。