c++课程设计图书销售管理系统.docx
《c++课程设计图书销售管理系统.docx》由会员分享,可在线阅读,更多相关《c++课程设计图书销售管理系统.docx(19页珍藏版)》请在冰点文库上搜索。
![c++课程设计图书销售管理系统.docx](https://file1.bingdoc.com/fileroot1/2023-6/15/b3182bc0-bc68-4feb-93bb-c067a3325ed2/b3182bc0-bc68-4feb-93bb-c067a3325ed21.gif)
c++课程设计图书销售管理系统
图书销售管理系统
一、设计目的
本图书销售管理系统,主要用于小型的书店,进行简单的图书的管理,为了能够更好的管理书店的销售的情况和库存的情况书店销售管理系统主要的功能有:
(1)图书入库管理:
维护入库图书信息,图书编号、书名、价格等,自动计算库存。
(2)图书查询统计:
可以根据图书分类、出版社、书名、作者等条件查询图书的详细信息。
(3)销售管理:
销售过的图书都记录在销售列表中,方便统计收入。
图书销售后,要记录图书库存,按每天统计销售额、每个月或季度生成报表,并生成畅销书单。
二、设计内容
(1)图书信息包括书名、书号、作者、出版社、单价、库存数量、进价、售价、利润;
(2)用户登录界面设计
(3)信息维护:
包括子模块有增加图书信息、删除图书信息、修改图书信息
(4)查询功能:
可按书名查询、作者查询、或出版社查询
(5)排序功能:
能实现按图书销售利润进行排序的功
三、设计要求
(1)只能使用C++语言,源程序要有适当的注释,使程序容易阅读
(2)至少采用文本菜单界面(如果能采用图形菜单界面更好)
(3)学生可自动增加新功能模块(视情况可另外加分)
(4)写出课程设计报告,具体要求见相关说明文档
四、设计过程
1、面向对象分析
(1)对象模型设计
(2)各个类设计
系统中说明了4个类,每个类的详细设计如下:
1.Book类
classbook{
C++语言程序设计》.清华大学出版社
郑莉等编著.《C++语言程序设计习题与实验指导》.清华大学出版社
张基温编著.《C++程序设计基础例题与习题》.高等教育出版社
黄明等编著.《面向对象程序设计习题详解》.机械工业出版社
附录
源代码:
#include
#include
#include
#include
usingnamespacestd;
constintMaxr=100;
constintMaxb=100;
constintMaxbor=5;
classReader
{
private:
inttag;
intno;
charname[10];
intborbook[Maxbor];
public:
Reader(){}
char*getname(){returnname;}
intgettag(){returntag;}
intgetno(){returnno;}
voidsetname(charna[])
{
strcpy(name,na);
}
voiddelbook(){tag=1;}
voidaddreader(intn,char*na)
{
tag=0;
no=n;
strcpy(name,na);
for(inti=0;iborbook[i]=0;
}
voidborrowbook(intbookid)
{
for(inti=0;i{
if(borbook[i]==0)
{
borbook[i]=bookid;
return;
}
}
}
intretbook(intbookid)
{
for(inti=0;i{
if(borbook[i]==bookid)
{
borbook[i]=0;
return1;
}
}
return0;
}
voiddisp()
{
cout<[";
for(inti=0;iif(borbook[i]!
=0)
cout<cout<<"]"<}
};
classRDatabase
{
private:
inttop;
Readerread[Maxr];
public:
RDatabase()
{
Readers;
top=-1;
fstreamfile("",ios:
:
in);
while
(1)
{
((char*)&s,sizeof(s));
if(!
file)break;
top++;
read[top]=s;
}
();
}
voidclear()
{
top=-1;
}
intaddreader(intn,char*na)
{
Reader*p=query(n);
if(p==NULL)
{
top++;
read[top].addreader(n,na);
return1;
}
return0;
}
Reader*query(intreaderid)
{
for(inti=0;i<=top;i++)
if(read[i].getno()==readerid&&
read[i].gettag()==0)
{
return&read[i];
}
returnNULL;
}
voiddisp()
{
for(inti=0;i<=top;i++)
read[i].disp();
}
voidreaderdata();
~RDatabase()
{
fstreamfile("",ios:
:
out);
for(inti=0;i<=top;i++)
if(read[i].gettag()==0)
((char*)&read[i],sizeof(read[i]));
();
}
};
voidRDatabase:
:
readerdata()
{
charchoice;
charrname[20];
intreaderid;
Reader*r;
while(choice!
='0')
{
cout<<"******欢迎使用图书销售管理系统终极版******”<cin>>choice;
switch(choice)
{
case'1':
cout<<"******操作菜单******:
";
cin>>readerid;
cout<<"******收银员******";
cin>>rname;
addreader(readerid,rname);
break;
case'2':
cout<<"******管理员******:
";
cin>>readerid;
r=query(readerid);
if(r==NULL)
{
cout<<"******顾客******"<break;
}
cout<<"输入新的姓名:
";
cin>>rname;
r->setname(rname);
break;
case'3':
cout<<"输入图书编号:
";
cin>>readerid;
r=query(readerid);
if(r==NULL)
{
cout<<"该图书不存在"<break;
}
r->delbook();
break;
case'4':
cout<<"读入图书编号:
";
cin>>readerid;
r=query(readerid);
if(r==NULL)
{
cout<<"该图书不存在"<break;
}
r->disp();
break;
case'5':
disp();
break;
case'6':
clear();
break;
default:
cout<<"输入错误,请从新输入:
";break;
}
}
}
classBook
{
private:
inttag;
intno;
charname[20];
intonshelf;
public:
Book(){}
char*getname(){returnname;}
intgetno(){returnno;}
intgettag(){returntag;}
voidsetname(charna[])
{
strcpy(name,na);
}
voiddelbook(){tag=1;}
voidaddbook(intn,char*na)
{
tag=0;
no=n;
strcpy(name,na);
onshelf=1;
}
intborrowbook()
{
if(onshelf==1)
{
onshelf=0;
return1;
}
return0;
}
voidretbook()
{
onshelf=1;
}
voiddisp()
{
cout<<<(onshelf==1?
"缺货")<}
};
classBDatabase
{
private:
inttop;
Bookbook[Maxb];
public:
BDatabase()
{
Bookb;
top=-1;
fstreamfile("",ios:
:
in);
while
(1)
{
((char*)&b,sizeof(b));
if(!
file)break;
top++;
book[top]=b;
}
();
}
voidclear()
{
top=-1;
}
intaddbook(intn,char*na)
{
Book*p=query(n);
if(NULL==p)
{
top++;
book[top].addbook(n,na);
return1;
}
return0;
}
Book*query(intbookid)
{
for(inti=0;i<=top;i++)
if(book[i].getno()==bookid&&book[i].gettag()==0)
{
return&book[i];
}
returnNULL;
}
voidbookdata();
voiddisp()
{
for(inti=0;i<=top;i++)
if(book[i].gettag()==0)
book[i].disp();
}
~BDatabase()
{
fstreamfile("",ios:
:
out);
for(inti=0;i<=top;i++)
if(book[i].gettag()==0)
((char*)&book[i],sizeof(book[i]));
();
}
};
voidBDatabase:
:
bookdata()
{
charchoice;
charbname[40];
intbookid;
Book*b;
while(choice!
='0')
{
cout<<"\n\n\n\t\t\t图书维护"<cin>>choice;
switch(choice)
{
case'1':
cout<<"输入图书编号:
"<cin>>bookid;
cout<<"输入图书书名:
"<cin>>bname;
addbook(bookid,bname);
break;
case'2':
cout<<"输入图书编号:
"<cin>>bookid;
b=query(bookid);
if(b==NULL)
{
cout<<"该图书缺货"<break;
}
cout<<"输入新的书名:
"<cin>>bname;
b->setname(bname);
break;
case'3':
cout<<"读入图书编号:
"<cin>>bookid;
b=query(bookid);
if(b==NULL)
{
cout<<"该图书缺货"<break;
}
b->delbook();
break;
case'4':
cout<<"读入图书编号:
"<cin>>bookid;
b=query(bookid);
if(b==NULL)
{
cout<<"该图书不存在"<break;
}
b->disp();
break;
case'5':
disp();
break;
case'6':
clear();
break;
default:
cout<<"输入错误,请从新输入:
";
}
}
}
voidmain()
{
charchoice;
intbookid,readerid;
RDatabaseReaderDB;
Reader*r;
BDatabaseBookDB;
Book*b;
while(choice!
='0')
{
cout<cin>>choice;
switch(choice)
{
case'1':
cout<<"买书图书编号:
";
cin>>readerid;
cout<<"图书编号:
";
cin>>bookid;
r=(readerid);
if(NULL==r)
{
cout<<"不存在该图书,不能买书"<break;
}
b=(bookid);
if(b==NULL)
{
cout<<"不存在该图书,不能买书"<break;
}
if(b->borrowbook()==0)
{
cout<<"该图书已售完,不能买书"<break;
}
r->borrowbook(b->getno());
break;
case'2':
cout<<"买书\n图书编号:
";
cin>>readerid;
cout<<"图书编号:
";
cin>>bookid;
r=(readerid);
if(r==NULL)
{
cout<<"不存在该图书,不能买书"<break;
}
b=(bookid);
if(b==NULL)
{
cout<<"不存在该图书,不能买书"<break;
}
b->retbook();
r->retbook(b->getno());
break;
case'3':
();
break;
case'4':
();
break;
default:
cout<<"输入错误,请从新输入:
";
}
}
}