C图书管理系统课程设计.docx

上传人:b****3 文档编号:26421317 上传时间:2023-06-19 格式:DOCX 页数:19 大小:357.60KB
下载 相关 举报
C图书管理系统课程设计.docx_第1页
第1页 / 共19页
C图书管理系统课程设计.docx_第2页
第2页 / 共19页
C图书管理系统课程设计.docx_第3页
第3页 / 共19页
C图书管理系统课程设计.docx_第4页
第4页 / 共19页
C图书管理系统课程设计.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

C图书管理系统课程设计.docx

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

C图书管理系统课程设计.docx

C图书管理系统课程设计

 

课程设计实验报告

 

课程设计题目:

小型图书购销管理系统

所属院系:

信息科学与工程学院

专业:

电气信息类

班级:

1205

姓名:

 

Ø系统描述:

小型图书购销管理系统

1、需要处理的基础数据

✧图书资料基本信息:

图书编号、书名、作者、出版社、出版日期、定价等。

✧图书库存信息:

图书编号、书名、作者、库存数量等。

✧图书采购信息:

采购单号、图书编号、采购日期、采购数量、单价、采购金额等。

✧图书销售信息:

销售单号、图书编号、销售日期、销售数量、单价、销售金额等。

2、系统的基本功能

✧图书基本信息的录入和查询

✧图书采购

(1)输入要采购的图书编号,自动从图书基本资料中把相关信息提取出来。

(2)根据采购数量和单价,自动计算采购金额。

(3)根据采购数量,增加图书库存量。

✧图书销售

(1)输入要采购的图书编号(或书名)、销售数量,从图书库存信息中查找是否合法,合法时进行销售,否则报错。

(2)根据采购数量和单价,自动计算销售金额。

(3)销售时,从库存中减去相应的数量。

✧利润计算:

根据全部的采购金额和销售金额,计算书店的利润情况。

Ø功能模块结构:

本系统使用MVC结构框架,ModelViewController,是模型(model)-视图(view)-控制器(controller)的缩写。

使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式。

如图1。

图1MVC结构框架图解

M(model):

系统的中的图书资料,采购销售账单,查询,以及交易记录写成4个类Book,Bill,Query,TRADE分别执行各自功能。

为后台程序。

V(view):

将视图集中写入一个类Interface,使用以上4个类中的函数,分5种情况反馈输出。

为前台程序。

C(control):

编主函数main使用视图类Interface,控制将其显示。

 

Ø主要模块的算法说明:

Model:

Book类:

包含图书基本资料:

书名,图书编号,作者,出版社,出版日期,价格及库存stringtitle,no,writer,publisher,date,doubleprice,intcount,声明一个无参的构造函数,以下会使用空的Book类的对象,声明一个有参的构造函数并将构造函数初始化。

以下Query类中信息录入,以及界面显示时查询时将会使用此Book类。

Bill类:

包含交易编号(采购和销售一起),图书编号,交易日期,交易数量,交易价格,stringno,order,indate;intcount,doubleprice;声明一个无参的构造函数,以下会使用空的Bill类的对象,声明一个有参的构造函数并将构造函数初始化。

以下TRADE类中采购销售以及利润计算时将会使用Bill类。

Query类:

声明一个Query类(包含信息录入和查询图书是否存在以及库存增减问题解决)

1.验证书号是否存在于:

书店Book类的对象放入名为lib的容器里书籍资料存储,用函数exsist:

给一个书号stringn验证它是否存在于lib[i].no中,若存在返回true,不存在返回false

2.Book类的对象a的存储:

编一个函数add,将输入的Book类的对象a插入到lib容器末端存储。

3.库存变化增减:

函数count给一个交易量intc和书号stringn,先判断图书编号n是否存在于lib[i].no中。

存在则库存count+c。

TRADE类:

声明一个TRADE类,定义Bill类的容器buy,sell采购和销售订单存储。

1.判断采购图书是否存在:

函数add1:

验证账单所对应书籍是否存在,若不存在,返回false;若存在将采购增加的书籍的量加入到lib[i].count中,将Bill类的对象a插入buy类的末端

2.判断销售图书是否存在并判断库存是否满足销售:

函数add2:

验证给的Bill类的对象a的图书编号是否存在,若不存在,返回false,若存在,验证库存是否足够,若足够,将账单对象a中销售的量a.count在书库lib[i].count中减少,将账单对象a插入sell类的末端保存,并返回true,若不足够返回false。

3.计算利润:

函数count,当采购时总利润sum-采购总价格,输入时总利润sum+=销售总价格。

View:

Interface类:

1.欢迎界面显示及5种选择

2.选择函数chose:

输入123456中6种情况

输出所得到的结果,反馈运行。

Control:

主函数main:

构造Interface类I,构造while死循环输出欢迎界面及选择函数。

Ø运行结果

系统界面如下

 

图书基本信息的录入如下

图书基本资料的查询如下:

 

图书的采购如下:

 

图书的销售如下:

书店获得的利润如下

退出系统:

 

Ø课程设计总结

一开始连构架都不知道从何想起,建立Query类,TRADE类不知道逻辑该往哪方面想,对于容器vector不知道如何使用。

通过本次编程,加强了自己的自学能力,学会自己学习,自己查找资料,比如学习到了容器vector的使用,mvc的构架。

也加强了自己面对困难合理解决的能力,当遇到困难时,变得善于思考善于与同学讨论,得出正确解答。

逻辑思维能力得到提高。

提高自信心,慢慢从小问题到大问题的解决,不再是自暴自弃,学会了正确面对,当正确面对后,认真思考,自主学习,得出结论,发现c++本次的课程设计也没有那么困难,踏出第一步,就是踏好了最后一步。

加油!

一个程序的开发是一个漫长的过程,需要把用户的所需变成C++编程所对的方向,再把这些内容变成c++语言编译,系统最初的结构构造也是十分重要的,需要有构架才能把各部分结合起来成为一个完整的程序,各部分的分工分开来写,不要出现交叉的现象,当程序出现问题是便于修改。

 

Ø参考文献

1.mvc框架

2.vector容器的使用

 

Ø附录

#include

#include

#include

#include

usingnamespacestd;

classBook//声明一个Book类

{

public:

stringtitle,no,writer,publisher,date;

doubleprice;

intcount;//包含stringtitle,no,writer,publisher,date,intprice,count.

Book(){}//声明无参的构造函数

Book(stringt,stringn,stringw,stringpu,stringd,doublep):

title(t),no(n),writer(w),publisher(pu),date(d),price(p)

{

count=0;

}//定义一个有参的构造函数,用参数的初始化表对数据成员初始化

};

classBill//声明一个Bill类

{

public:

stringno,order,indate;

intcount;

doubleprice;//包含stringno,order,indate;intcount,doubleprice;

Bill(){}

Bill(stringn,stringo,stringid,doublep,intc):

no(n),order(o),indate(id),price(p),count(c)

{

}//定义一个有参的构造函数,用参数的初始化表对数据成员初始化

};

classQuery//声明一个Query类

{

public:

vectorlib;//将Book类放入名为lib的容器里书籍资料存储

boolexsist(stringn,Book&a)//函数exsist:

给一个stringn验证它是否存在于lib.no中,

{

inti;

for(i=0;i

if(lib[i].no==n)

{

a=lib[i];

returntrue;//若存在令Booka等于该lib[i],返回true

}

returnfalse;//不存在返回false

}

voidadd(Booka)//函数add:

将Booka插入lib类的末端;图书的录入

{

lib.push_back(a);

}

voidcount(intc,stringn)//函数count:

给一个intc和stringn,先判断图书编号n是否存在于lib[i].no中。

存在则库存count+c

{

inti;

for(i=0;i

if(lib[i].no==n)

{

lib[i].count+=c;

return;

}

}

};

Querylib;//定义一个Query的对象lib

classTRADE//声明一个TRADE类(采购销售算法)

{

public:

vectorbuy,sell;//定义Bill类的容器buy,sell采购和销售订单存储

booladd1(Billa)//函数add1:

验证账单所对应书籍是否存在,若不存在,返回false;

{//若存在将采购增加的书籍的量加入到lib[i].count中,将Billa插入buy类的末端

Bookb;

if(lib.exsist(a.no,b)==true)

{

lib.count(a.count,a.no);//使用对象lib中的count算法

buy.push_back(a);//将Billa存入buy容器中

returntrue;

}

else

returnfalse;

};

 

booladd2(Billa)//函数add2:

验证给的Billa的图书编号是否存在,若不存在,返回false,若存在,验证库存是否足够,

{

Bookb;//若足够,将账单a中销售的量a.count在书库lib[i]。

count中减少,将账单a插入sell类的末端保存,并返回true,若不足够返回false。

if(lib.exsist(a.no,b)==true)

{

if(b.count>=a.count)

{

lib.count(-a.count,a.no);//使用对象lib中的count算法,当销售出去时库存显示减少

sell.push_back(a);//将Billa存入sell容器中

returntrue;

}

else

returnfalse;

}

else

returnfalse;

};

doublecount()//计算利润

{

doublepf=0;

for(inti=0;i

{

pf-=buy[i].price*buy[i].count;

}

for(inti=0;i

{

pf+=sell[i].price*sell[i].count;

}

returnpf;//返回利润

}

};

TRADEtrade;

classInterface//界面设置

{public:

voidshow()//显示内容

{

cout<<"******************************************************************************"<

cout<<"**"<

cout<<"**"<

cout<<"**"<

cout<<"*欢迎进入图书购销管理系统*"<

cout<<"**"<

cout<<"**"<

cout<<"*请输入您想使用的功能:

*"<

cout<<"*1.图书基本信息的录入*"<

cout<<"*2.图书基本信息的查询*"<

cout<<"*3.图书的采购*"<

cout<<"*4.图书的销售*"<

cout<<"*5.书店获得的利润*"<

cout<<"*6.退出系统*"<

cout<<"**"<

cout<<"**"<

cout<<"**"<

cout<<"******************************************************************************"<

}

voidchose()

{

intx;

cout<<"请选择:

"<

cin>>x;

switch(x)//选择结构

{

case1:

entering();break;//反馈1,运行entering函数

case2:

query();break;//反馈2:

运行query函数

case3:

buy();break;//反馈3:

运行buy函数

case4:

sell();break;//反馈4:

运行sell函数

case5:

profit();break;//反馈5:

计算总利润

case6:

Exit();break;

default:

cout<<"输入有误"<

}

}

voidentering()//声明一个entering函数

{

intn;

Booka;//声明一个Book类a

cout<<"请输入:

书名图书编号作者出版社出版日期价格库存"<

cin>>a.title>>a.no>>a.writer>>a.publisher>>a.date>>a.price>>a.count;

lib.add(a);//将信息录入lib容器

}

voidquery()//声明一个query函数

{

stringn;

Booka;//声明一个Book类a

cout<<"请输入图书编号:

"<

cin>>n;

if(lib.exsist(n,a)==true)//判断书籍是否存在

{

cout<<"书名图书编号作者出版社出版日期价格库存"<

cout<<""<

}

else

cout<<"本店没有该图书!

"<

}

voidbuy()//声明一个buy函数

{

Billa;//声明一个Bill类a

Bookb;//声明一个Book类b

cout<<"请输入图书编号图书进价数量"<

cin>>a.no>>a.price>>a.count;

if(trade.add1(a)==true)//判断该书籍是否存在

{

doublesum;

cout<<"该书存在"<

if(lib.exsist(a.no,b)==true)

{

cout<<"书名图书编号作者出版社出版日期价格库存"<

cout<<""<

}//输出该书籍存在时图书信息

sum=a.price*a.count;

cout<<"采购金额为:

"<

}

else

cout<<"该书不存在,不能买入!

"<

}

voidsell()//声明一个sell函数(基本同buy函数)

{

Billa;

Bookb;

cout<<"请输入图书编号售价数量"<

cin>>a.no>>a.price>>a.count;

if(trade.add2(a)==true)

{if(lib.exsist(a.no,b)==true)

{

cout<<"书名图书编号作者出版社出版日期价格库存"<

cout<<""<

}

doublesum;

cout<<"该书存在"<

sum=a.price*a.count;

cout<<"销售金额为:

"<

}

else

cout<<"该书不存在或库存不够!

"<

}

voidprofit()//声明一个profit函数使用类TRADE中count函数计算

{

doublea;//定义变量a

a=trade.count();//再把count函数赋值给a

cout<<"获利为:

"<

}

voidExit()

{

cout<<"谢谢使用"<

exit(0);

}

 

};

intmain()

{

Interfacei;

while

(1){

i.show();

i.chose();

}

return0;

}

 

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

当前位置:首页 > PPT模板 > 动态背景

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

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