《面向对象程序设计》课程设计报告-超市进销存系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《面向对象程序设计》课程设计报告超市进销存系统
姓名:
班级:
学号:
指导教师:
成绩:
完成时间: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<iostream.h>
#include<fstream.h>
#include<stdlib.h>
#include<string.h>
int ID;
class goods
{
protected:
int num;
char name[20];
char address[20];
double price;
double count;
goods *next;
public:
goods(int num,char *name,char *address,double price,double count) {
this->num=ID;
this->num=num;
strcpy(this->name,name);
strcpy(this->address,address);
this->price=price;
this->count=count;
}
void output()
{
cout<<"ID:"<<num<<"\t"<<"名称:"<<name<<"\t"
<<"产地:"<<address<<"\t"<<"价钱:"
<<price<<"\t"<<"数量:"<<count<<endl;
}
friend class complay;
};
class complay
{
private:
goods *gla;
void clear();
public:
complay()
{
gla=0;
}
~complay()
{
goods *p;
p=gla;
while(p)
{
p=p->next;
delete gla;
gla=p;
}
gla=0;
}
void Add();
void Delete();
void Modify();
void Query();
void list();
void Save();
void Load();
};
void complay::clear ()
{
goods *p=gla;
while(p)
{
gla=p->next ;
delete p;
p=gla;
}
}
void complay::Add()
{
ID++;
char name[20];
char address[20];
double price;
double count;
goods *p;
cout<<"\n** 新增商品 **\n";
cout<<"输入商品名:";cin>>name;
cout<<"输入商品产地:";cin>>address;
cout<<"输入单价:";cin>>price;
cout<<"输入数量:";cin>>count;
p=new goods(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;
}
}
void complay::Delete()
{
char name[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;
delete p1;
}
else
{
p2->next=p1->next;
delete p1;
}
cout<<"找到并删除\n";
}
else
cout<<"未找到\n";
}
void complay::Modify()
{
char name[20];
char address[20];
double price;
double count;
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<<"调整商品信息:";
int c;
cout<<"修改信息(1-地址2-价钱3-数量4-return):"; cin>>c;
switch(c)
{
case 1:cout<<"修改地址:";cin>>address;
strcpy(p1->address,address);break;
case 2:cout<<"修改价钱:";cin>>price;p1->price=price;
break;
case 3:cout<<"修改数量:";cin>>count;p1->count=count;
break;
case 4:cout<<"return:";break;
}
cout<<"修改成功\n";
}
else
cout<<"未找到\n";
}
void complay::Query()
{
cout<<"查询商品总价值\n";
double sum=0;
goods *p=gla;
while(p)
{
sum+=p->count*p->price;
p=p->next;
}
cout<<"总价值"<<sum<<endl;
}
void complay::list()
{
char name[20];
goods *p=gla;
if(!p)
cout<<"\n没有商品\n";
else
cout<<"\n商品清单\n";
while(p)
{
cout<<p->name<<"\t";
p=p->next;
}
cout<<endl;
}
void complay::Save()
{
ofstream fgood,fbase;
char c;
cout<<"\n保存数据,是否继续?[Y/N]";cin>>c;
if(toupper(c)!='Y')return;
fgood.open("goods.txt",ios::out);
goods *p=gla;
while(p)
{
fgood<<p->num<<"\t"<<p->name<<"\t"<<p->address<<"\t"
<<p->price<<"\t"<<p->count<<"\t";
fgood<<endl;
p=p->next;
}
fgood.close();
cout<<"\n保存商品信息已经完成...\n";
}
void complay::Load ()
{
clear();
ifstream fgood;
goods *p=gla;
int num;
char name[20];
char address[20];
double price;
double count;
fgood.open("goods.txt",ios::in);
fgood>>num>>name>>address>>price>>count;
while(fgood.good())
{
p=new goods(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";
}
int main()
{
complay a;
char c;
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');
return 0;
}
超市进销存系统。