cout<<"输入任意字符!
继续……";
getch();
}
private:
Supermarket*Head,*End;
ifstreamin;
ofstreamout;
Supermarket*FindItem(char*name)
{
for(Supermarket*p=Head;p->Next!
=End;p=p->Next)//匹配成功则返回上一个指针,不成功就返回空
if(!
strcmp(p->Next->name,name))
returnp;
returnNULL;
}
Supermarket*FindNum(char*Num)
{
for(Supermarket*p=Head;p->Next!
=End;p=p->Next)//匹配成功则返回上一个指针,不成功就返回空
if(!
strcmp(p->Next->Num,Num))
returnp;
returnNULL;
}
Supermarket*FindAdd(char*Add)
{
for(Supermarket*p=Head;p->Next!
=End;p=p->Next)//匹配成功则返回上一个指针,不成就返回空
if(!
strcmp(p->Next->Add,Add))returnp;
returnNULL;
}};
六、模块分析
模块分析表-1
函数
功能
VoidDisplay()
输出模块信息
Supermarket()
构造函数
~Supermarket()
析构函数
VoidAddItem()
增加商品
VoidRemoveItem()
删除商品
VoidModifyItem()
修改商品
Voidfind()
查找商品
IntListCount()
统计商品
Voidsave()
基础数据存盘
Supermarketmassage
构造函数
七、比较有特色的函数
Supermarket*FindItem(char*name)//按照姓名查找商品
{
for(Supermarket*p=Head;p->Next!
=End;p=p->Next)//匹配成功则返回上一个指针,不成功就返回空
if(!
strcmp(p->Next->name,name))
returnp;
returnNULL;
}
Supermarket*FindNum(char*Num)//按照编号查找
{
for(Supermarket*p=Head;p->Next!
=End;p=p->Next)//匹配成功则返回上一个指针,不成功就返回空
if(!
strcmp(p->Next->Num,Num))
returnp;
returnNULL;
}
Supermarket*FindAdd(char*Add)
{
for(Supermarket*p=Head;p->Next!
=End;p=p->Next)//匹配成功则返回上一个指针,不成就返回空
if(!
strcmp(p->Next->Add,Add))returnp;
returnNULL;
voidSupermarketmassage:
:
Save()
{out.open("sort.txt");
for(Supermarket*p=Head->Next;p!
=End;p=p->Next)
out<<"商品名称:
"<name<<"\t\t"<<"商品编号:
"<Num<<"\t\t"
<<"进货总数:
"<Cnum<<"\t\t"<<"销售数目:
"<Mnum<<"\t\t"
<<"剩余库存:
"<Enum<<"\t\t"<<"商品产地:
"<Add<<"\t\t"
<<"商品单价:
"<Price<<"\t\t"<<"销售额:
"<Sum<<'\n';
out.close();
}
八、运行结果
1.运行界面
2.增加
4.显示
5.查找
6.删除
7.修改
8.保存
九、存在的不足与对策
于设计者水平有限及时间等方面的原因,该系统的功能比较简单,只有基础的功能,增删改查,我还添加了几个在我能力范围之内的应用,比如文件,还有就是统计,这些在我能力之内的内容,这个程序我真的把我所学的知识都用上了,所以还有很多待完善的地方,比如登陆界面的密码,还划分管理员与普通用户,这些都是我欠缺的知识,所以我希望在以后的学习中能学到更多的知识,弥补自己不足。
十、程序源代码
#include
#include//文件的使用
#include
#include//用getch();
usingnamespacestd;
classSupermarket//定义超市类
{
public:
charname[20];
charNum[20];
intCnum;
//进货总数
intMnum;
//销售数目
intEnum;
//剩余库存数目
doublePrice;
//单价
charAdd[20];
//产地
doubleSum;
//销售额
Supermarket*Next;
voidInput()
{
cout<<"\t\t请输入商品名:
";
cin>>name;
cout<<"\t\t请输入商品编号:
";
cin>>Num;
cout<<"\t\t请输入商品进货总数:
";
cin>>Cnum;
cout<<"\t\t请输入商品销售数目:
";
cin>>Mnum;
cout<<"\t\t请输入商品剩余库存数目:
";
cin>>Enum;
cout<<"\t\t请输入商品产地:
";
cin>>Add;
cout<<"\t\t请输入商品单价:
";
cin>>Price;
Sum=Mnum*Price;
}
voidReadFile(istream&in)//文件指针
{
cin>>name>>Num>>Cnum>>Mnum>>Enum>>Add>>Price>>Sum;
}
voidShow()//显示模块
{
cout<<"商品名:
"<<<"商品编号:
"<<<"进货总数:
"<<<"销售数目:
"<<<"剩余库存:
"<<<"产地:
"<<<"单价:
"<<<"销售额:
"<}
};
classSupermarketmassage//定义超市各功能模块类
{public:
Supermarketmassage();
~Supermarketmassage();
voidShowMenu();//显示模块
voidFind();//查找模块
voidSave();
voidModifyItem();//修改模块
voidRemoveItem();//删除模块
intListCount();//voidAverage();//统计模块
voidDisplay()//显示
{
for(Supermarket*p=Head->Next;p!
=End;p=p->Next)
p->Show();
cout<<"输入任意字符!
继续……";
getch();
}
voidAddItem()//添加
{
End->Input();
End->Next=newSupermarket;
End=End->Next;
cout<<"添加成功!
"<cout<<"输入任意字符!
继续……";
getch();
}
private:
Supermarket*Head,*End;
ifstreamin;
ofstreamout;
Supermarket*FindItem(char*name)//按照姓名查找商品
{
for(Supermarket*p=Head;p->Next!
=End;p=p->Next)//匹配成功则返回上一个指针,不成功就返回空
if(!
strcmp(p->Next->name,name))
returnp;
returnNULL;
}
Supermarket*FindNum(char*Num)//按照编号查找
{
for(Supermarket*p=Head;p->Next!
=End;p=p->Next)//匹配成功则返回上一个指针,不成功就返回空
if(!
strcmp(p->Next->Num,Num))
returnp;
returnNULL;
}
Supermarket*FindAdd(char*Add)
{
for(Supermarket*p=Head;p->Next!
=End;p=p->Next)//匹配成功则返回上一个指针,不成就返回空
if(!
strcmp(p->Next->Add,Add))returnp;
returnNULL;
}};
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌构造函数﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
Supermarketmassage:
:
Supermarketmassage()
{
Head=newSupermarket;
Head->Next=newSupermarket;
End=Head->Next;
in.open("sort.txt");
if(!
in)
cout<<"这是一个新系统,无商品信息。
请先输入。
"<else
{while(!
in.eof())
{End->ReadFile(in);
if(End->name[0]=='\0')
break;
End->Next=newSupermarket;
End=End->Next;
}
in.close();
cout<<"\t\t读取商品信息成功!
"<}
}
Supermarketmassage:
:
~Supermarketmassage()
{Save();
for(Supermarket*temp;Head->Next!
=End;)
{
temp=Head->Next;
Head->Next=Head->Next->Next;
deletetemp;
}
deleteHead,End;
}
voidSupermarketmassage:
:
ShowMenu()
{cout<<"〒〒〒〒〒〒〒〒〒〒☆超市商品管理系统☆〒〒〒〒〒〒〒〒〒〒"<cout<<"〒〒〒〒〒〒〒★★★★★★★★★★★★★★★★★★〒〒〒〒〒〒〒"<cout<<"〒〒〒〒〒〒〒〒〒★☆1.增加商品信息☆★〒〒〒〒〒〒〒〒〒"<cout<<"〒〒〒〒〒〒〒〒〒★☆2.显示商品信息☆★〒〒〒〒〒〒〒〒〒"<cout<<"〒〒〒〒〒〒〒〒〒★☆3.查找商品信息☆★〒〒〒〒〒〒〒〒〒"<cout<<"〒〒〒〒〒〒〒〒〒★☆4.删除商品信息☆★〒〒〒〒〒〒〒〒〒"<cout<<"〒〒〒〒〒〒〒〒〒★☆5.修改商品信息☆★〒〒〒〒〒〒〒〒〒"<cout<<"〒〒〒〒〒〒〒〒〒★☆0.保存文件退出☆★〒〒〒〒〒〒〒〒〒"<cout<<"\n\t\t\n\t\t请选择:
";}
voidSupermarketmassage:
:
Find()//查找模块
{charname[20],Num[10];
intx;
Supermarket*p=NULL;
cout<<"\n\t\t*********************************\n";
cout<<"\t\t※1.按商品的名称查找\n\t\t※2.按商品编号查找";
cout<<"\n\t\t*********************************\n请选择:
";
cin>>x;
switch(x)
{case1:
{cout<<"\t\t请输入要查找的商品的名称:
";
cin>>name;
if(p=FindItem(name))
{p->Next->Show();
cout<<"输入任意字符!
继续……";
getch();
}
else
{cout<<"\t\t没有找到该商品信息!
"<<'\n'<cout<<"输入任意字符!
继续……";
getch();
}
}break;
case2:
{cout<<"\t\t请输入要查找的商品编号:
";
cin>>Num;
if(p=FindNum(Num))
{p->Next->Show();
cout<<"输入任意字符!
继续……";
getch();
}
else
{cout<<"\t\t没有找到该编号的商品!
"<<'\n'<cout<<"输入任意字符!
继续……";
getch();
}
}
break;
}
}
voidSupermarketmassage:
:
ModifyItem()//修改信息
{charname[20];
Supermarket*p=NULL;
cout<<"\t\t请输入要修改的商品名:
";
cin>>name;
if(p=FindItem(name))
{
cout<<"\t\t已找到商品的信息,请输入新的信息!
"<p->Next->Input();
cout<<"修改成功!
"<cout<<"输入任意字符!
继续……";
getch();
}
else
{cout<<"\t\t没有找到!
"<cout<<"输入任意字符!
继续……";
getch();
}}
voidSupermarketmassage:
:
RemoveItem()//删除信息
{charname[20];
Supermarket*p=NULL,*temp=NULL;
cout<<"\t\t请输入要删除的商品名:
"<>name;
if(p=FindItem(name))
{temp=p->Next;
p->Next=p->Next->Next;
deletetemp;
cout<<"\t\t删除成功!
"<cout<<"输入任意字符!
继续……";
getch();
}
else
{cout<<"\t\t没有找到!
"<cout<<"输入任意字符!
继续……";
getch();
}
}
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌统计﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
intSupermarketmassage:
:
ListCount()//统计当前链表的记录总数,返回一个整数
{if(!
Head)
return0;
intn=0;
for(Supermarket*p=Head->Next;p!
=End;p=p->Next)
{
n++;
}
returnn;
}
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌保存函数﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
voidSupermarketmassage:
:
Save()
{out.open("sort.txt");
for(Supermarket*p=Head->Next;p!
=End;p=p->Next)
out<<"商品名称:
"<name<<"\t\t"<<"商品编号:
"<Num<<"\t\t"
<<"进货总数:
"<Cnum<<"\t\t"<<"销售数目:
"<Mnum<<"\t\t"
<<"剩余库存:
"<Enum<<"\t\t"<<"商品产地:
"<Add<<"\t\t"
<<"商品单价:
"<Price<<"\t\t"<<"销售额:
"<Sum<<'\n';
out.close();
}
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌主函数﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌