c++课程设计图书销售管理系统.docx

上传人:b****6 文档编号:4828901 上传时间:2022-12-10 格式:DOCX 页数:31 大小:490KB
下载 相关 举报
c++课程设计图书销售管理系统.docx_第1页
第1页 / 共31页
c++课程设计图书销售管理系统.docx_第2页
第2页 / 共31页
c++课程设计图书销售管理系统.docx_第3页
第3页 / 共31页
c++课程设计图书销售管理系统.docx_第4页
第4页 / 共31页
c++课程设计图书销售管理系统.docx_第5页
第5页 / 共31页
点击查看更多>>
下载资源
资源描述

c++课程设计图书销售管理系统.docx

《c++课程设计图书销售管理系统.docx》由会员分享,可在线阅读,更多相关《c++课程设计图书销售管理系统.docx(31页珍藏版)》请在冰豆网上搜索。

c++课程设计图书销售管理系统.docx

c++课程设计图书销售管理系统

 

图书销售管理系统

一、设计目的

本图书销售管理系统,主要用于小型的书店,进行简单的图书的管理,为了能够更好的管理书店的销售的情况和库存的情况书店销售管理系统主要的功能有:

(1)图书入库管理:

维护入库图书信息,图书编号、书名、价格等,自动计算库存。

(2)图书查询统计:

可以根据图书分类、出版社、书名、作者等条件查询图书的详细信息。

(3)销售管理:

销售过的图书都记录在销售列表中,方便统计收入。

图书销售后,要记录图书库存,按每天统计销售额、每个月或季度生成报表,并生成畅销书单。

二、设计内容

(1)图书信息包括书名、书号、作者、出版社、单价、库存数量、进价、售价、利润;

(2)用户登录界面设计

(3)信息维护:

包括子模块有增加图书信息、删除图书信息、修改图书信息

(4)查询功能:

可按书名查询、作者查询、或出版社查询

(5)排序功能:

能实现按图书销售利润进行排序的功

三、设计要求

(1)只能使用C++语言,源程序要有适当的注释,使程序容易阅读

(2)至少采用文本菜单界面(如果能采用图形菜单界面更好)

(3)学生可自动增加新功能模块(视情况可另外加分)

(4)写出课程设计报告,具体要求见相关说明文档

四、设计过程

1、面向对象分析

(1)对象模型设计

(2)各个类设计

系统中说明了4个类,每个类的详细设计如下:

1.Book类

classbook{//book基类

protected:

stringname;//名称

floatprice;//价格

intnum;//编号

intkucun,xcl,salel;//库存,现存量,销售量

public:

intgetnum(){

returnnum;}//编号接口函数

stringgetname(){//名称接口函数

returnname;}

floatgetprice(){returnprice;}//价格接口函数

intgetkucun(){returnkucun;}//库存量接口函数

intgetxcl(){returnxcl;}//现存量接口函数

intgetsalel(){returnsalel;}//销售量接口函数

virtualvoidinput()=0;//输入虚函数

virtualvoidoutput()=0;//输出虚函数

说明:

Book类是一个基类,用于定义图书基本的信息。

例如:

其中stringgetname()是一个接口函数,能获得图书的姓名。

2.Yule(娱乐类)

classyule:

publicbook{//娱乐的派生类

public:

voidinput(){//输入

cin>>name;

cin>>num;

cin>>price;

cin>>kucun;

cin>>salel;

cin>>xcl;

}

voidoutput(){//输出

cout<<"Yule:

"<

cout<

}

voidcompute(){//计算售出剩余函数

intcounts;

cout<<"输入售出的图书的本数"<

cin>>counts;

cout<<"售后剩余:

"<

kucun=kucun-counts;//计算库存量

salel=salel+counts;//计算销售量

xcl=xcl-counts;//计算剩余量

说明:

yule类用于定义娱乐图书的信息,它是Book类的公有派生类。

其中:

Compute()是一个计算售出图书数量和剩余的函数,input()和output()函数是对图书信息的输入和输出而且他们是在基类中定义的纯虚函数。

study(学习类图书)

classstudy:

publicbook{//学习类

public:

voidinput(){

cin>>name;

cin>>num;

cin>>price;

cin>>kucun;

cin>>salel;

cin>>xcl;

}

voidoutput(){

cout<<"Learn:

"<

cout<

}

voidcompute1(){

intcounts;

cout<<"输入售出的图书的本数"<

cin>>counts;

cout<<"售后剩余:

"<

kucun=kucun-counts;

salel=salel+counts;

xcl=xcl-counts;

study类用于定义学习类图书的信息,它是Book类的公有派生类。

其中:

Compute1()是一个计算售出图书数量和剩余的函数,input()和output()函数是对图书信息的输入和输出而且他们是在基类中定义的纯虚函数。

operate(功能类)

typedefvectorSTRVEC;//定义stl模版的容器

typedefvectorSTRVEC1;

classoperate{//定义功能类

STRVECstrvec;

STRVEC1strvec1;

public:

voidsearch_yulenum(intm)//娱乐类图书按编号查找

voidsearch_yulename(strings)//查找娱乐类图书按名称

voiddel_yulenum(intn)//删除娱乐类图书按编号

voiddel_yulename(stringp)//按图书名称删除

voidadd_study()//添加学习类图书的基本信息

voidadd_yule()//添加娱乐类图书的基本信息

voidsearch_studynum(intm)//查找学习类图书的编号

voidsearch_studyname(strings)//查找学习类图书的名称

voidxiugai_yule(intm)//修改娱乐类图书的剩余量

voidxiugai_study(intm)//修改学习类图书的剩余量

voiddel_studynum(intn)//删除售完图书

voiddel_studyname(stringp)//按名称删除图书

voidshow_yule()//显示娱乐类图书

voidshow_study()//显示学习类图书

voidsaleamounts()//计算销售额

voidchangxiao1()//娱乐类图书畅销

voidchangxiao()//学习类图书畅销

voidsave()//娱乐类入库单

voidsave1()//学习类入库单

voidload()//读取娱乐类文件

voidload1()//读取学习类文件

voidMenu()//应用菜单

说明:

operate类用来实现图书管理系统的功能,它是用来查找、添加、删除图书的信息的基本点的信息,对系统进行维护,生成入库单、畅销书和一天的销售额。

2、数据结构分析

书店销售管理系统的数据结构:

英文名称

中文名称

Book

图书类

Yule

娱乐类图书

Study

学习类图书

Strvec

娱乐类的STL模版

Strvec1

学习类的STL模版

Operate

运算类

search_yulenum

娱乐类编号查找

search_yulename

娱乐类书名查找

del_yulenum

娱乐类编号删除

del_yulename

娱乐类书名删除

add_study

添加学习类图书

add_yule

添加娱乐类图书

search_studynum

学习类编号查询

search_studyname

学习类书名查询

del_studynum

学习类编号删除

del_studyname

学习类书名删除

show_yule

显示娱乐类信息

show_study

显示学习类信息

save

保存娱乐类文件

load

显示娱乐类文件

Menu

菜单

main

主函数

Save1

保存学习类文件

Load1

显示娱乐类文件

saleamounts

销售量的计算

xiugai_yule

娱乐类图书的修改

xiugai_study

学习类图书的修改

changxiao

娱乐类畅销图书

Changxiao1

学习类畅销图书

3、系统执行流程

(1)主页面流程图如图

(1)

(1)主页面流程图

(2)顾客登陆

简述:

用户在图书销售系统里顾客登陆并查询图书内容。

基本流程:

1顾客:

在图书销售系统画面,选择顾客登陆,显示图书基本信息,按提示内容进行查找

2查询:

顾客在图书销售系统中能查询图书的信息;

3显示:

顾客能在顾客界面能看到最近的图书;

4结束。

流程图如图

(2)

(2)顾客登录流程图

(3)收银员登陆

简述:

收银员在图书销售系统里能看到图书信息并能修改出售图书的数量。

基本流程:

1收银员:

在图书销售系统画面,选择收银员登陆,输入密码,进入收银员界面。

2修改:

收银员在图书销售系统中能修改图书的售出情况;

3显示:

收银员能在顾客界面能看到最近录入的图书;

4结束。

流程图如图(3)

图(3)收银员登录流程图

管理员登陆

简述:

管理员在图书销售系统填加、删除和查找图书信息,并能显示销售额。

基本流程:

1管理员:

在图书销售系统画面,选择管理员登陆,输入密码,进入收银员界面。

2添加:

管理员在图书销售系统中能填加图书的基本情况;

3删除:

管理员在图书销售系统中能删除图书的基本信息;

4查找:

管理员在图书销售系统中能查找图书的基本信息。

5销售额:

管理员在图书销售系统中能看到销售额的输出

6畅销书:

管理员在图书销售系统中能查询畅销书

7结束

流程图如图(4)

图(4)管理员登录流程图

5、程序运行结果

管理员登录

在书店开始售书之前先由管理员添加书籍内容,在管理员将需要添加的书籍添加完毕后顾客还有收银员才能执行自己相应的功能。

选择管理员功能会进入登陆界面;密码输入正确方能进入使用,错误则会返回输入密码界面,直到密码正确,进入使用界面。

按1添加娱乐类的图书及相关内容

添加成功后好可以继续按1添加娱乐类书籍相关内容,也可按5继续添加学习类的图书

添加完毕后可返回主菜单(11选项)

 

收银员登录

 

在主界面按2可进入收银员的登录界面,同管理员一样,收银员也一样需要输入密码,密码对方可进入修改界面,在这里收银员可以对图书的销售情况进行修改,以便以后对图书销售情况便于管理

输入图书编号(娱乐类/学习类)并且输入将要售出的本数,系统将会显示图书(娱乐类/学习类)的售后情况

顾客登录(张海东负责)

在主界面选择1可以进入顾客的使用界面,在这里顾客可以看到所以书籍(娱乐类和学习类),并可以按照编号或者图书名称查询相应图书的详细内容

 

到此顾客使用功能结束。

当然管理员也有对图书查询的功能,对图书的销售情况时时了解

娱乐类图书查询:

 

学习类图书查询:

销售额显示

在一段时间后书籍可能售完,这样管理员需要将此类书籍删除,以免误导顾客,在图书删除后,顾客在查询系统中将不会再查询到相关的内容

娱乐类图书删除

学习类图书删除

管理员在执行完所有的步骤后可以选择回到住界面,也可以选择退出系统

回到主界面选择:

退出系统选择:

6、设计总结

(1)完成本课题花了很长的时间,真正体会了作为一个程序员的辛苦,并且必须具备细心、耐心的品质,想要完成一项出色的项目,必须精益求精,反复操作与实践。

(2)在做了本课程设计以后,我对C++的了解更深了,很多知识得到了巩固,一些不懂的知识也渐渐明了!

这其中主要是对指针的使用收获很多,在指针使用的过程中,对指针的指向以及对各函数中指针的赋值会影响到整个程序的运行;还有就是对文件的输入输出流了解得更透彻了,知道了打开一个文件后必须还要对其关闭,否则程序无法运行,对各种文件的输入输出控制符都能基本融会贯通。

(3)虽然本课题已完成,可是还是存在一些问题,比如说界面还不够好看,为了用户用得舒服,界面是很重要的。

参考文献

郑莉等编著.《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;i

borbook[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;i

if(borbook[i]!

=0)

cout<

cout<<"]"<

}

};

classRDatabase

{

private:

inttop;

Readerread[Maxr];

public:

RDatabase()

{

Readers;

top=-1;

fstreamfile("reader.txt",ios:

:

in);

while

(1)

{

file.read((char*)&s,sizeof(s));

if(!

file)break;

top++;

read[top]=s;

}

file.close();

}

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("reader.txt",ios:

:

out);

for(inti=0;i<=top;i++)

if(read[i].gettag()==0)

file.write((char*)&read[i],sizeof(read[i]));

file.close();

}

};

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("book.txt",ios:

:

in);

while

(1)

{

file.read((char*)&b,sizeof(b));

if(!

file)break;

top++;

book[top]=b;

}

file.close();

}

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("book.txt",ios:

:

out);

for(inti=0;i<=t

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 法律文书 > 辩护词

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1