基于c的超市进销存系统.docx
《基于c的超市进销存系统.docx》由会员分享,可在线阅读,更多相关《基于c的超市进销存系统.docx(17页珍藏版)》请在冰点文库上搜索。
基于c的超市进销存系统
《面向对象程序设计》课程设计报告
超市进销存系统
姓名:
班级:
学号:
指导教师:
成绩:
完成时间:
08年6月15日
完成地点:
一、设计题目(问题)描述和要求
1某小型超市,完成超市进销存管理:
公司内有若干种商品:
✓商品代码(num)
✓商品名称(name)
✓产地(address)
✓单价(price)
✓该类商品的库存数量(count)
要求:
(1)商品基本信息管理:
商品的增加、修改和删除等。
(2)商品的查询与统计:
按商品名称查询基本信息、统计库存商品数量及总价值等。
2系统分析与模块设计
根据问题描述和要求,系统要求能够实现商品基本信息管理和商品的查询与统计。
确定程序至少应该具备如下功能:
“商品的增加”、“商品的修改”、“商品的删除”等基本模块。
“增加商品”模块的作用是向商品链中增加商品;
“修改信息”模块的作用是修改商品链中的商品信息;
“删除商品”模块的作用是删除商品链中的商品;
“查询信息”模块的作用是把商品链中的所有商品信息输出到显示器上;
“商品清单”模块的作用是把所有商品的名称输出到显示器上;
“数据存盘”模块的作用是保存录入内存中的商品信息;
“数据读入”模块的作用是把商品信息读入内存中。
经综合考虑系统具有下面7项功能模块:
商品增加,修改商品信息,删除商品,查询商品信息,商品清单,数据存盘,数据读入……。
二、系统设计
1.系统总体框架
超市管理系统主要涉及2个大类:
goods类、complay类。
(1)goods类:
包含商品代码(num)商品名称(name)商品产地(address)商品单价(price)商品的库存量(count)要完成输出操作,需要设计output成员函数。
(2)complay类:
考虑到如果要实现商品的增加,商品的删除,商品信息的修改,总价值的查询,数据的存盘,数据的读入等操作,complay类应包含:
Add(),Delete(),Modify(),Query(),Save(),Load()等函数作为成员函数。
2.类的层次图
Goods
{Num,name,address,price,count,next,Output()}
Complay
{gla,clear(),Add(),Delete(),Modify(),Query(),List(),Save(),Load()}
其中:
Add函数是用于增加商品;
Delete函数是用于删除商品;
Modify函数是用于修改商品信息;
Query函数是用于查询商品总价值;
List函数是用于列出所有商品的名称;
Save函数是用于将商品信息存入磁盘文件;
Load函数是用于将磁盘文件的内容读入内存。
3.系统关键算法流程图
(1)主函数流程
(2)成员函数(Add)
成员函数(delete)
成员函数(modify)
4、源程序清单
见附录
三、系统测试及结果
系统可以用于简单的超市管理,商品的增加,删除,修改等基本操作,不足的是当删除商品后不能使ID从1开始重新累计增加,及不能控制ID。
四、小结
(设计过程心得体会)
程序开始时不知道从哪开始,因为自己从没写过这么大的程序,所以自己到图书馆看了有关的大型程序,然后自己从简单开始写,先让程序完成最简单的初始化操作,然后在附加增加商品操作,删除商品操作,修改商品信息操作,数据存盘操作,数据装入操作。
不知不觉的就将程序给写完了。
感觉不是挺难的,但是如果一下把程序给写了,出现了很多的错误,自己不知从哪改起,以后写程序时先从大的方面写,然后在逐步细化。
附录:
源程序
#include
#include
#include
#include
intID;
classgoods
{
protected:
intnum;
charname[20];
charaddress[20];
doubleprice;
doublecount;
goods*next;
public:
goods(intnum,char*name,char*address,doubleprice,doublecount)
{
this->num=ID;
this->num=num;
strcpy(this->name,name);
strcpy(this->address,address);
this->price=price;
this->count=count;
}
voidoutput()
{
cout<<"ID:
"<"<<<"产地:
"<
"
<"<}
friendclasscomplay;
};
classcomplay
{
private:
goods*gla;
voidclear();
public:
complay()
{
gla=0;
}
~complay()
{
goods*p;
p=gla;
while(p)
{
p=p->next;
deletegla;
gla=p;
}
gla=0;
}
voidAdd();
voidDelete();
voidModify();
voidQuery();
voidlist();
voidSave();
voidLoad();
};
voidcomplay:
:
clear()
{
goods*p=gla;
while(p)
{
gla=p->next;
deletep;
p=gla;
}
}
voidcomplay:
:
Add()
{
ID++;
charname[20];
charaddress[20];
doubleprice;
doublecount;
goods*p;
cout<<"\n**新增商品**\n";
cout<<"输入商品名:
";cin>>name;
cout<<"输入商品产地:
";cin>>address;
cout<<"输入单价:
";cin>>price;
cout<<"输入数量:
";cin>>count;
p=newgoods(ID,name,address,price,count);
p->next=0;
if(gla)
{
goods*p2;
p2=gla;
while(p2->next)
{
p2=p2->next;
}
p2->next=p;
}
else
{
gla=p;
}
}
voidcomplay:
:
Delete()
{
charname[20];
cout<<"\n***删除商品***\n";
cout<<"商品名称:
";
cin>>name;
goods*p1,*p2;
p1=gla;
while(p1)
{
if(!
strcmp(name,p1->name))
break;
else
{
p2=p1;
p1=p1->next;
}
}
if(p1!
=NULL)
{
if(p1==gla)
{
gla=p1->next;
deletep1;
}
else
{
p2->next=p1->next;
deletep1;
}
cout<<"找到并删除\n";
}
else
cout<<"未找到\n";
}
voidcomplay:
:
Modify()
{
charname[20];
charaddress[20];
doubleprice;
doublecount;
cout<<"\n修改商品\n";
cout<<"商品名字:
";
cin>>name;
goods*p1,*p2;
p1=gla;
while(p1)
{
if(!
strcmp(name,p1->name))
break;
else
{
p2=p1;
p1=p1->next;
}
}
if(p1!
=NULL)
{
p1->output();
cout<<"调整商品信息:
";
intc;
cout<<"修改信息(1-地址2-价钱3-数量4-return):
";cin>>c;
switch(c)
{
case1:
cout<<"修改地址:
";cin>>address;
strcpy(p1->address,address);break;
case2:
cout<<"修改价钱:
";cin>>price;p1->price=price;
break;
case3:
cout<<"修改数量:
";cin>>count;p1->count=count;
break;
case4:
cout<<"return:
";break;
}
cout<<"修改成功\n";
}
else
cout<<"未找到\n";
}
voidcomplay:
:
Query()
{
cout<<"查询商品总价值\n";
doublesum=0;
goods*p=gla;
while(p)
{
sum+=p->count*p->price;
p=p->next;
}
cout<<"总价值"<}
voidcomplay:
:
list()
{
charname[20];
goods*p=gla;
if(!
p)
cout<<"\n没有商品\n";
else
cout<<"\n商品清单\n";
while(p)
{
cout<name<<"\t";
p=p->next;
}
cout<}
voidcomplay:
:
Save()
{
ofstreamfgood,fbase;
charc;
cout<<"\n保存数据,是否继续?
[Y/N]";cin>>c;
if(toupper(c)!
='Y')return;
fgood.open("goods.txt",ios:
:
out);
goods*p=gla;
while(p)
{
fgood<num<<"\t"<name<<"\t"<address<<"\t"<price<<"\t"<count<<"\t";
fgood<p=p->next;
}
fgood.close();
cout<<"\n保存商品信息已经完成...\n";
}
voidcomplay:
:
Load()
{
clear();
ifstreamfgood;
goods*p=gla;
intnum;
charname[20];
charaddress[20];
doubleprice;
doublecount;
fgood.open("goods.txt",ios:
:
in);
fgood>>num>>name>>address>>price>>count;
while(fgood.good())
{
p=newgoods(num,name,address,price,count);
p->next=0;
if(gla)
{
goods*p2;
p2=gla;
while(p2->next)
{
p2=p2->next;
}
p2->next=p;
}
else
{
gla=p;
}
fgood>>num>>name>>address>>price>>count;
}
ID=num;
fgood.close();
cout<<"\n商品信息已经读入完成...\n";
}
intmain()
{
complaya;
charc;
do
{
cout<<"\n***超市进销存管理系统***\n";
cout<<"1-增加商品\n";
cout<<"2-修改商品信息\n";
cout<<"3-删除商品\n";
cout<<"4-查询商品信息\n";
cout<<"5-商品清单\n";
cout<<"6-数据存盘\n";
cout<<"7-数据读入\n";
cout<<"8-退出\t请选择(1-8):
";
cin>>c;
switch(c)
{
case'1':
a.Add();break;
case'2':
a.Modify();break;
case'3':
a.Delete();break;
case'4':
a.Query();break;
case'5':
a.list();break;
case'6':
a.Save();break;
case'7':
a.Load();break;
}
}while(c!
='8');
return0;
}