C图书管理系统课程设计.docx
- 文档编号:26421317
- 上传时间:2023-06-19
- 格式:DOCX
- 页数:19
- 大小:357.60KB
C图书管理系统课程设计.docx
《C图书管理系统课程设计.docx》由会员分享,可在线阅读,更多相关《C图书管理系统课程设计.docx(19页珍藏版)》请在冰豆网上搜索。
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:
vector
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: vector 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文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 图书管理系统课程设计 图书 管理 系统 课程设计
![提示](https://static.bdocx.com/images/bang_tan.gif)