小型书店进销存管理系统.doc
- 文档编号:104761
- 上传时间:2023-04-28
- 格式:DOC
- 页数:20
- 大小:6.03MB
小型书店进销存管理系统.doc
《小型书店进销存管理系统.doc》由会员分享,可在线阅读,更多相关《小型书店进销存管理系统.doc(20页珍藏版)》请在冰点文库上搜索。
本科学生设计性实验报告
项目组长___学号_0103845_
成员
专业_软件工程班级10软件1班
实验项目名称_小型书店进销存管理系统
指导教师及职称__赵晓平讲师__
开课学期11至_12学年_一_学期
上课时间2011年8月29日
一、实验设计方案
实验名称:
小型书店进销存管理
实验时间:
11.30(三)567节、12.7(三)567节
12.14(三)567节、12.21(三)567节
小组合作:
是√否○
小组成员:
1、实验目的:
通过本程序的设计开发,使学生熟悉和掌握C++程序开发,训练自己分析实际问题和解决问题以及编程的能力;掌握C++程序设计的方法,训练自己分析实际问题和解决问题以及编程的能力,为学生创造分析问题、独立思考的条件,培养学生分析解决实际问题和编程等实际动手能力,为后续课程的学习打下扎实的编程基础。
实验要求:
(1)实现图书进销存的基本管理,包括图书的增加、删除、查询、按某种属性(例如价格、销售量等)的排序输出。
图书的属性包括:
编号、书名、作者、价格、购进数量、销售量、折扣等等。
(2)编制窗体界面美观,输入方式灵活和简便。
(3)程序逻辑清晰,格式规范。
个人独立完成并提交一份实验报告。
要求能熟悉地运用C++语言编写代码实现图书进销存的基本管理;要求输入方式灵活和简便,程序逻辑清晰,格式规范。
2、实验场地及仪器、设备和材料:
软件项目管理实验室(W102)、计算机、SQLServer2000、VC6.0、Office等软件、打印机、打印纸等。
3、实验思路(实验内容、数据处理方法及实验步骤等):
一、实验内容:
学生写明实验的内容(做什么,文字),准备实现的功能
}
/*结果显示:
选择所要进行的操作:
先对书店书进行盘点,确定是否要进购书:
进购书本:
销售书本:
库存不足查询:
再次进行盘点(同时添加书本):
更新记录(将序号1的书本改为序号5,进价改为25,售价改为30):
查询记录:
查询序号为1的书(查询失败,因为序号已被改为5):
查询序号为5的书:
财务统计(所输入的书本序号应为5):
如果输入的序号为1:
输入的序号为5:
重组文件后退出。
*/
二、数据处理方法
MicrosoftVisualStudio2010旗舰版
三、实验步骤
第一步:
,定义书店结构booktype,构建类manage
(1)类manage中定义功能函数
voidAddbook();//进书
voidAdditional();//追加
voidUpdatebook();//更新
voidSellbook();//销售
voidTell();//库存不足
voidcount();//财务统计
voidSearchbook();//查询
voidPack();//删除
(2)编写代码实现各类功能函数
(3)编写程序实行函数Run()
第二步:
定义Main函数
Manageobj;
if(obj.file.fail())throw("打开文件失败¨!
");
if(!
obj.file.fail())
{
obj.Run();
}
return0;
第三步:
修改代码以及运行程序
指导老师对实验设计方案的意见:
指导老师签名:
年月日
二、实验结果与分析
1、实验目的、场地及仪器、设备和材料、实验思路等见实验设计方案
2、实验现象、数据及结果
#include
#include
#include
usingnamespacestd;
structbooktype//书店结构
{
booldelTag;//删除标志
unsignedintseat;//序号
charname[16];//书名
charauthor[16];//作者
floatenter_price;//进价
floatsale_price;//售价
intsale;//销售量
intday;//销售日号
staticfloatday_sum;//当日销售额统计
staticfloatmonth_sum;//当月销售额统计
staticfloatday_Profit;//当日销售盈利
staticdoublediscount;//优惠折扣
intquantity;//书的数量
};
classManage
{
private:
voidAddbook();//进书
voidAdditional();//追加
voidUpdatebook();//更新数据
voidSellbook();//销售
voidTell();//库存不足提示
voidcount();//财务统计
voidSearchbook();//查询
voidPack();//删除作有删除记录标记的记录
public:
Manage();//无参构造函数
virtual~Manage(){file.close();}//析构函数
voidRun();//处理
fstreamfile;//书店文件
};
Manage:
:
Manage()//无参构造函数
{
ifstreamiFile("M.dat");//建立输入文件
if(iFile.fail())//打开文件失败
{
ofstreamoFile("M.dat");//建立输入出文件
if(oFile.fail())throw("打开文件失败!
!
!
");//抛出异常
oFile.close();//关闭文件
}
elseiFile.close();//文件存在,关闭文件
file.open("M.dat",ios:
:
in|ios:
:
out|ios:
:
binary);//以读写方式打开文件
if(file.fail())throw("打开文件失败!
!
!
");//抛出异常
}
//进书
voidManage:
:
Addbook()
{
booktypeM;
M.delTag=false;//正常,未作删除标志
chartag='Y';
while(tag=='Y')
{cout<<"******输入进购书本的信息*******"< cout<<"输入要进购书的序号: "; cin>>M.seat; cout<<"输入该书的书名: "; cin>>M.name; cout<<"输入该书的作者名: "; cin>>M.author; cout<<"输入要进购的数量: "; cin>>M.quantity; cout<<"输入该书的进价: "; cin>>M.enter_price; cout<<"输入该书的售价: "; cin>>M.sale_price; file.write((char*)&M,sizeof(booktype));//写入文件 cout<<"是否继续进购? (是Y,否N): "; cin>>tag; cout< } } //追加(添加书本,显示进货前和进货后的记录) voidManage: : Additional() { booktypeM; unsignedintseat;//序号 intamount;//进购的数量 cout<<"输入要追加书本的序号: "; cin>>seat; file.seekg(0);//定位 file.read((char*)&M,sizeof(booktype));//读记录 while(! file.eof())//文件末结束 { if(M.seat==seat&&! M.delTag)break; //序号相同,记录正常,未作删除标志 file.read((char*)&M,sizeof(booktype));//读记录 } if(! file.eof()) { cout<<"******输出添加前的数据******"< cout<<"该书的序号: "< cout<<"该书的书名: "< cout<<"该书的作者名: "< cout<<"该书的现存数量: "< cout<<"该书的进价: "< cout<<"该书的售价: "< cout< cout<<"输入该书还需添加的数量: "; cin>>amount; M.quantity=M.quantity+amount; cout<<"******输出添加后的数据******"< cout<<"该书的序号: "< cout<<"该书的书名: "< cout<<"该书的作者名: "< cout<<"该书的现存数量: "< cout<<"该书的进价: "< cout<<"该书的售价: "< file.seekg(-sizeof(booktype),ios: : cur);//定位 file.write((char*)&M,sizeof(booktype));//写入记录 } else { cout<<"======本书店没有此书的记录,需要进购该书! ! ! ======"< file.clear(); } } //更新记录(对书本信息记录进行更新,本实验对序号为1的书本进行了更新(将信号更新为5,进价更新为25,售价更新为30) voidManage: : Updatebook() { booktypeM; unsignedintseat;//序号 cout<<"输入要更新书的序号: "; cin>>seat; file.seekg(0);//定位 file.read((char*)&M,sizeof(booktype));//读记录 while(! file.eof())//文件末结束 { if(M.seat==seat&&! M.delTag)break; //序号相同,记录正常,未作删除标志 file.read((char*)&M,sizeof(booktype));//读记录 } if(! file.eof())//查询成功 { cout<<"******输出更新前的数据******"< cout<<"该书的序号: "< cout<<"该书的书名: "< cout<<"该书的作者名: "< cout<<"该书的现存数量: "< cout<<"该书的进价: "< cout<<"该书的售价: "< cout<<"******输入书本更新的数据******"< cout<<"输入该书的序号: "; cin>>M.seat; cout<<"输入书名: "; cin>>M.name; cout<<"输入该书的作者名: "; cin>>M.author; cout<<"输入现存的数量: "; cin>>M.quantity; cout<<"输入该书的进价: "; cin>>M.enter_price; cout<<"输入该书的售价: "; cin>>M.sale_price; file.seekg(-sizeof(booktype),ios: : cur);//定位 file.write((char*)&M,sizeof(booktype));//写入记录 } else { cout<<"======本书店没有此书的记录,请添加该书的记录! ! ! ======"< file.clear(); } } //销售(支持折扣优惠促销,这里将其设置为对一次购5本以上者,可以享受8.5折优惠) floatbooktype: : day_sum=0;//当日销售额统计 floatbooktype: : month_sum=0;//当月销售额统计 floatbooktype: : day_Profit=0;//当日盈利统计 doublebooktype: : discount=0.15;//优惠折扣 voidManage: : Sellbook() { booktypeM; unsignedintseat;//序号 cout<<"输入书的序号: "; cin>>seat; file.seekg(0);//定位 file.read((char*)&M,sizeof(booktype));//读记录 while(! file.eof())//文件末结束 { if(M.seat==seat&&! M.delTag)break;//序号相同,记录正常,未作删除标志 file.read((char*)&M,sizeof(booktype));//读记录 } if(! file.eof())//查询成功 { cout<<"******输出要被售出的书本信息******"< cout<<"该书的序号: "< cout<<"该书的书名: "< cout<<"该书的作者名: "< cout<<"该书的现存数量: "< cout<<"该书的进价: "< cout<<"该书的售价: "< cout<<"输入卖出的数量: "; cin>>M.sale; cout<<"输入该书销售的日号: "; cin>>M.day; if(M.sale<=M.quantity) { floatn=1.0; if(M.sale>5)n=0.85*n;//对一次购5本以上者,还可以享受8.5折优惠 M.day_sum=M.day_sum+n*(1-M.discount)*M.sale*M.sale_price;//该书当日销售额统计 M.day_Profit=M.day_Profit+n*(1-M.discount)*M.sale*(M.sale_price-M.enter_price);//该书当日盈利统计 M.quantity=M.quantity-M.sale; file.seekg(-sizeof(booktype),ios: : cur);//定位 file.write((char*)&M,sizeof(booktype));//写入记录 cout<<"=====销售成功! ! ! ======"< } elseif(M.sale>M.quantity) cout<<"=======库存不足,需要进购该书! ! ! ======="< } else { cout<<"======本书店没有此书的记录! ! ! ======"< file.clear();//清除文件结束标志 } } //库存不足提示(这里设置当书本数量小于10时,库存不足) voidManage: : Tell() { booktypeM; unsignedintseat;//序号 cout<<"输入书的序号: "; cin>>seat; file.seekg(0);//定位 file.read((char*)&M,sizeof(booktype));//读记录 while(! file.eof())//文件末结束 { if(M.seat==seat&&! M.delTag)break;//序号相同,记录正常,未作删除标志 file.read((char*)&M,sizeof(booktype));//读记录 } if(! file.eof())//查询成功 { cout<<"该书的序号: "< cout<<"该书现有的数量: "< if(M.quantity>=10) cout<<"=====无库存不足现象,暂不需进购新书! ! ! ======"< elsecout<<"======该书库存不足,需立即进购! ! ! ======"< file.seekg(-sizeof(booktype),ios: : cur);//定位 file.write((char*)&M,sizeof(booktype));//写入记录 } else { cout<<"======本书店没有此书的记录! ! ! ======"< file.clear();//清除文件结束标志 } } //财务统计(统计该书店当日某书的销售额及其盈利) voidManage: : count() { booktypeM; unsignedintseat;//序号 cout<<"输入书的序号: "; cin>>seat; file.seekg(0);//定位 file.read((char*)&M,sizeof(booktype));//读记录 while(! file.eof())//文件末结束 { if(M.seat==seat&&! M.delTag)break;//序号相同,记录正常,未作删除标志 file.read((char*)&M,sizeof(booktype));//读记录 } if(! file.eof())//查询成功 { cout<<"******对售出书本进行财务统计******"< cout<<"该书的序号: "< cout<<"该书的书名: "< cout<<"该书的作者名: "< cout<<"该书售出的数量: "< cout<<"该书售出的日号: "< cout<<"输出该书当日销售额为: "< cout<<"输出该书当日销售盈利: "< file.seekg(-sizeof(booktype),ios: : cur);//定位 file.write((char*)&M,sizeof(booktype));//写入记录 } else { cout<<"======本书店没有此书的记录! ! ! ======"< file.clear();//清除文件结束标志
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 小型 书店 进销存 管理 系统