一、需求分析
问题分析:
随着商务规模的不断扩大,商品个数和种类快速增长,超市管理者需要花费大量的时间才能获取商品基本信息,工作非常繁琐且麻烦。
项目目标:
商品信息管理系统旨在为管理员提供更方便的管理手段,为超市提供方便快捷的存货体系,让超市的管理和运行工作更加完善,帮助商家高效率提升管理能力,并提升销售能力,在激烈的竞争中扩大销售额、降低经营成本提高效益。
适用于各种小型超市,使杂乱的超市数据能够具体化、直观化、合理化等。
功能分析:
通过管理系统方便快捷进行商品基本信息的增、删、查、改这四项基本操作
1.增添商品:实现增加商品功能,将商品名,价格,生产日期等信息录入
2.查询商品:通过商品名查询商品信息
3.修改商品:将已添加的商品进行修改管理
4.删除商品:删除指定商品信息
5.退出管理程序
二、系统设计
(一)系统的概要设计
Main.cpp文件:
#include"goods.h"
//定义主菜单函数
int menu()
{
cout<<"****************************************\n";
cout<<"****************************************\n";
cout<<"***** 商店信息管理系统 *****\n";
cout<<"****************************************\n";
cout<<"****************************************\n";
cout<<"***** 1 . 增加商品信息 *****\n";
cout<<"***** 2 . 修改商品信息 *****\n";
cout<<"***** 3 . 删除商品信息 *****\n";
cout<<"***** 4 . 查找商品信息 *****\n";
cout<<"***** 5 . 显示所有商品 *****\n";
cout<<"****************************************\n";
cout<<"****************************************\n";
cout<<"***** 0 . 退出系统 *****\n";
cout<<"****************************************\n";
cout<<"**************************************** \n";
cout<<endl;
int instruct;
for(;;)//控制输入条件,错误的输入需要从新输入
{
cout<<"请输入指令(1-11):";
cin>>instruct;//接受从键盘输入的指令
return instruct;
break;
}
}
void select(good &g,int k)
{
switch(k)
{
case 1://添加商品信息
{
g.add();
system("cls");
break;
}
case 2:
{
g.search();
system("cls");
break;
}
case 3:
{
g.clear();
getchar();
system("cls");
break;
}
case 4:
{
g.search();
system("cls");
break;
}
case 5://显示所有商品信息
{
g.show();
getchar();
getchar();
system("cls");
break;
}
case 0://退出程序并清除当前占用的内存
{
g.free();
cout<<"欢迎下次使用!"<<endl;
system("pause");
exit(0);
}
}
}
//主函数
int main()
{
good g;
int k;
k=menu();
for(;;)
{
select(g,k);
k=menu();
}
system("pause");
}
三、系统实现、测试和维护
(一)系统开发相关资源
- 系统的核心数据结构和算法
struct node
{
float pri;//货物价格price
int Y;//进货时间year month date
int M;
int D;
string name;//货物名称;
string code;
node *next;
};
添加商品信息新建节点:
void add()
{
for(;;)
{
cout<<"当前货物数量:"<<num<<"件\n"<<endl;
node *p=new node();//给新加入的节点分配空间
//商品信息录入部分
cout<<"货物名称:";
cin>>p->name;
cout<<"货物价格:";
cin>>p->pri;
cout<<"货物编码:";
cin>>p->code;
cout<<"进货时间:(年:)";
cin>>p->Y;
cout<<"月:";
cin>>p->M;
cout<<"日:";
cin>>p->D;
p->next=NULL;//将新建的节点指向空
if(head==NULL)//当对首为空的时候直接将head指向新建节点,否则将节点连接在end后面,并end指向该节点
{
head=p;
end=p;
}
else
{
end->next=p;
end=p;
}
num++;//商品数量加1
break;
}
cout << "添加成功" << endl;
system("pause");
system("cls");
}
检索遍历线性表:
void search()
{
cout<<"按照货物名称查找";
string k;
cin>>k;
if(k=="1")//按商品名称来搜索
{
for(;;)
{
string s;
cout<<"\n请输入货物名称:";
cin>>s;
int i=0;
node *p=head;
while(p!=NULL)
{
if(p->name==s)//检索整个线性表
{
i=1;
cout<<"\n货物名称:"<<p->name
<<"\n货物价格:"<<p->pri<<"元"
<<"\n货物编码:"<<p->code
<<"\n进货时间:"<<p->Y<<"年"<<p->M<<"月"<<p->D<<"日"<<endl;
cout<<"是否对货物信息进行修改?(y or n)";
string c;
cin>>c;
if(c=="y"||c=="Y")
{
input(p);
cout<<"\n 信息更新完毕!";
system("pause");
system("cls");
break;
}
else
{
break;
}
}
p=p->next;
}
if(i==1)
{
break;
}
if(p==NULL)
{
cout<<"\n没有符合信息的货物在库!";
break;
}
}
}
else//按照商品编码来搜索
{
for(;;)
{
string s;
cout<<"请输入货物编码:";
cin>>s;
node *p=head;
int i=0;
while(p!=NULL)
{
if(p->code==s)//检索整个线性表
{
i=1;
cout<<"\n货物名称:"<<p->name
<<"\n货物价格:"<<p->pri<<"元"
<<"\n货物编码:"<<p->code
<<"\n进货时间:"<<p->Y<<"年"<<p->M<<"月"<<p->D<<"日"<<endl;
cout<<"是否对货物信息进行修改?(y or n)";
string c;
cin>>c;
if(c=="y"||c=="Y")
{
input(p);
cout<<"信息修改成功!";
system("pause");
break;
}
else
{
break;
}
}
p=p->next;
}
if(i==1)
{
break;
}
if(p==NULL)
{
cout<<"没有符合信息的货物在库!";
system("pause");
break;
}
}
}
}
堆区数据的清理与删除,释放动态分配的内存:
void free()
{
node *p=head;
while(p!=NULL)
{
head=head->next;
delete(p);
p=head;
}
}
- 系统各模块具体实现
核心算法部分代码:
class good
{
private:
node *head;//对首元素
node *end;//对尾元素
int num;//商品总数
public:
//默认构造函数
good()
{
head=NULL;
end=NULL;
num=0;
}
//添加货物信息
void add()
{
for(;;)
{
cout<<"当前货物数量:"<<num<<"件\n"<<endl;
node *p=new node();//给新加入的节点分配空间
//商品信息录入部分
cout<<"货物名称:";
cin>>p->name;
cout<<"货物价格:";
cin>>p->pri;
cout<<"货物编码:";
cin>>p->code;
cout<<"进货时间:(年:)";
cin>>p->Y;
cout<<"月:";
cin>>p->M;
cout<<"日:";
cin>>p->D;
p->next=NULL;//将新建的节点指向空
if(head==NULL)//当对首为空的时候直接将head指向新建节点,否则将节点连接在end后面,并end指向该节点
{
head=p;
end=p;
}
else
{
end->next=p;
end=p;
}
num++;//商品数量加1
break;
}
cout << "添加成功" << endl;
system("pause");
system("cls");
}
//显示目前存货的信息
void show()
{
node *p=head;
int n=0;
while(n<num)
{
cout<<"\n第"<<n+1<<"件货物:"
<<"\n货物名称:"<<p->name
<<"\n物编码:"<<p->code
<<"\n货物价格:"<<p->pri<<"元"
<<"\n进货时间:"<<p->Y<<"年"<<p->M<<"月"<<p->D<<"日"<<endl;
p=p->next;
n++;
}
cout<<"按任意键返回主菜单";
}
//释放动态分配的内存
void free()
{
node *p=head;
while(p!=NULL)
{
head=head->next;
delete(p);
p=head;
}
}
//查找和修改货物信息
void search()
{
cout<<"按照货物名称查找";
string k;
cin>>k;
if(k=="1")//按商品名称来搜索
{
for(;;)
{
string s;
cout<<"\n请输入货物名称:";
cin>>s;
int i=0;
node *p=head;
while(p!=NULL)
{
if(p->name==s)//检索整个线性表
{
i=1;
cout<<"\n货物名称:"<<p->name
<<"\n货物价格:"<<p->pri<<"元"
<<"\n货物编码:"<<p->code
<<"\n进货时间:"<<p->Y<<"年"<<p->M<<"月"<<p->D<<"日"<<endl;
cout<<"是否对货物信息进行修改?(y or n)";
string c;
cin>>c;
if(c=="y"||c=="Y")
{
input(p);
cout<<"\n 信息更新完毕!";
system("pause");
system("cls");
break;
}
else
{
break;
}
}
p=p->next;
}
if(i==1)
{
break;
}
if(p==NULL)
{
cout<<"\n没有符合信息的货物在库!";
break;
}
}
}
else//按照商品编码来搜索
{
for(;;)
{
string s;
cout<<"请输入货物编码:";
cin>>s;
node *p=head;
int i=0;
while(p!=NULL)
{
if(p->code==s)//检索整个线性表
{
i=1;
cout<<"\n货物名称:"<<p->name
<<"\n货物价格:"<<p->pri<<"元"
<<"\n货物编码:"<<p->code
<<"\n进货时间:"<<p->Y<<"年"<<p->M<<"月"<<p->D<<"日"<<endl;
cout<<"是否对货物信息进行修改?(y or n)";
string c;
cin>>c;
if(c=="y"||c=="Y")
{
input(p);
cout<<"信息修改成功!";
system("pause");
break;
}
else
{
break;
}
}
p=p->next;
}
if(i==1)
{
break;
}
if(p==NULL)
{
cout<<"没有符合信息的货物在库!";
system("pause");
break;
}
}
}
}
//删除货物信息
void delete0()
{
cout<<"按照货物名称查找(1)";
string k;
cin>>k;
if(k=="1")//按商品名称来搜索
{
for(;;)
{
string s;
cout<<"\n请输入货物名称:";
cin>>s;
int i=0;
node *p=head;
while(p!=NULL)
{
if(p->name==s)//检索整个线性表
{
i=1;
cout<<"\n货物名称:"<<p->name
<<"\n货物价格:"<<p->pri<<"元"
<<"\n货物编码:"<<p->code
<<"\n进货时间:"<<p->Y<<"年"<<p->M<<"月"<<p->D<<"日"<<endl;
cout<<"是否删除此货物信息?(y or n)";
string c;
cin>>c;
if(c=="y"||c=="Y")
{
num=0;
head=NULL;
cout<<"删除成功!";
system("pause");
system("cls");
break;
}
else
{
break;
}
}
p=p->next;
}
if(i==1)
{
break;
}
if(p==NULL)
{
cout<<"没有此货物!";
system("pause");
break;
}
}
}
}
//商品信息录入函数
void input(node *p)
{
cout<<"\n货物名称:";
cin>>p->name;
cout<<"\n货物价格:";
cin>>p->pri;
cout<<"\n货物编码:";
cin>>p->code;
cout<<"\n进货时间:(年:)";
cin>>p->Y;
cout<<"\n月:";
cin>>p->M;
cout<<"\n日:";
cin>>p->D;
}
//清空当前商品信息
void clear()
{
free();
num=0;
head=NULL;
cout<<"\n信息全部清空!"<<endl;
system("pause");
system("cls");
}
};