图书销售系统.docx
- 文档编号:3750142
- 上传时间:2022-11-25
- 格式:DOCX
- 页数:20
- 大小:240.96KB
图书销售系统.docx
《图书销售系统.docx》由会员分享,可在线阅读,更多相关《图书销售系统.docx(20页珍藏版)》请在冰豆网上搜索。
图书销售系统
编号XX
学生实训报告
2010~2011学年第二学期
实习类别
开发实训
学生姓名
某某某
专业
软件开发与测试
学号
091311XXX
指导教师
陈纯毅
学院
软件学院
2011年7月
起止周
17~19
周数
3
实习地点
软件学院专业实验室
实训目的:
通过一些实际的开发案例,培养学生分析和解决实际问题的能力,培养学生综合应用基本概念,基本原理,和技术方法的能力,真正做到学以致用,使课本上抽象的理论,方法与具体的实践应用相结合。
实训要求:
实践设计以实际应用中的小型题目为主,要求学生独立完成或合作完成。
要求学生能根据不同的题目类型选择一种或两种开发模式,完成从系统定义,指定开发计划,需求分析,设计,编码/测试,直至运行/维护的软件生存期的全过程。
实训进度安排及主要内容:
第一周:
(1)需求分析;
(2)数据库设计(使用SQLServer);
(3)总体设计;模块定义、模块结构图,各模块功能描述、模块流程图(使用Visio画图);
第二周:
(4)详细设计:
要求有数据录入、修改、删除、查询、汇总、报表功能;第第第三周:
(5)运行测试,测试用例、结果;
(6)撰写开发文档,含总结;
成绩:
指导教师/带队教师(签字)
年月日
图书销售管理系统
摘要
信息时代的来临,世界贸易组织的加入,中国现代图书流通市场竞争的愈演愈烈,如何以一种新的管理方式提高图书流通信息的反馈速度,降低存储占用,加速资金周转,提高工作效率,已经成为图书企业提高竞争力的关键所在,运用计算机管理系统就是不错的选择。
图书管理系统可以方便图书销售过程中的各个环节,有利于图书类企业流动资金加快,有利于企业成本降低,更有利于他们即使掌握各种销售与库存信息,然而现在大多数的系统设计时都没有考虑到将来的需要,设计接口不够灵活,以至于当前环境变化后不能很好的适应新环境,造成软件寿命的简短,要想实现软件寿命的延长,就必须在设计软件的全过程中灌入一种动态的有预见性的设计,只要这样,将来条件发生了改变,软件只需局部做一些调整就能够适应新环境。
目录
一、绪论----------------------------------3
二、需求分析----------------------------4
三、总体设计-----------------------------8
四、详细设计----------------------------9
界面设计--------------------------------------------------------------9
进退货类--------------------------------------------------------------11
销售类-----------------------------------------------------------------12
查询类-----------------------------------------------------------------14
统计类-----------------------------------------------------------------15
所用的SQL语句----------------------------------------------------16
Update函数-----------------------------------------------------------17
五、小结--------------------------------19
六、测试---------------------------------20
六、致谢--------------------------------20
七、参考文献---------------------------20
(一)、绪论
图书销售系统是一个用来辅助图书销售活动,销售管理和销售决策的工具。
图书市场的快速变化和日益复杂,需要一个有效的工具来捕捉市场状态和相关变化。
目前,图书销售信息系统的应用和开发尚处于起步阶段,虽然取得了一定的经济和社会效益,但是也存在着许多问题,影响了企业在市场上的竞争力。
因此,研究和开发满足图书销售需求的销售信息系统具有重要意义。
本程序使用MicrosoftAccess作为数据库载体,使用MFC和VC++作为语言工具编写而成,是图书销售管理系统的一个雏形。
VC++由于与Windows系统结合紧密,不需要额外的运行库,运行操作方便不需要其他配置,是图书销售管理系统合适的语言载体。
而使用Access作为数据源,有轻量,易用,等诸多特性,考虑到此系统没有太多的复杂功能,因此弃用Oracle,SQLServer,MySQL等安装、使用复杂的数据库软件。
本程序具有数据封闭性,易操控性,数据备份简易等特点。
(二)、需求分析
调查新华书店图书销售业务,设计的图书销售系统主要包括进货、退货、销售、统计功能。
进货:
根据某种书籍的库存量及销售情况确定进货数量,根据供应商报价选择供应商。
输出一份进货单并自动修改库存量,把本次进货的信息添加到进货库中。
退货:
顾客把已买的书籍退还给书店。
输出一份退货单并自动修改库存量,把本次退货的信息添加到退货库中。
统计:
根据销售情况输出统计的报表。
一般内容为每月的销售总额、销售总量及排行榜。
销售:
输入顾客要买书籍的信息,自动显示此书的库存量,如果可以销售,打印销售单并修改库存,同时把此次销售的有关信息添加到日销售库中。
综述:
此系统要求用VC++6.0开发作为一种现代的编程语言,提供了完善的指令控制语句、类与对象的支持及丰富的数据类型,给开发高性能系统提供了保障。
为开发满足客户要求的系统,保证了代码的模块化要求,而代码模块化的提高,有利于以后对新系统的扩展与修改。
MicrosoftOfficeAccess是由微软发布的关联式数据库管理系统。
它结合了MicrosoftJetDatabaseEngine和图形用户界面两项特点,是MicrosoftOffice的系统程式之一。
综上所述,本系统的设计与开发在技术上和硬件设备上的条件都是满足的,因此在技术上是可行的。
·
·数据库设计
数据库设计使用Access,可以建立四个表,分别用来保存供应商处的图书信息、库房图书信息、进退货记录、和销售记录。
具体如下:
[经销商]
[库存]
[进退货记录]
[销售记录]
·E-R图:
(三)、总体设计
·总体框图:
(四)、详细设计
·界面设计(MFC):
程序主界面采用CDialog类,取消边框,大小调整等特性。
classCLibDlg:
publicCDialog
{
//Construction
public:
CLibDlg(CWnd*pParent=NULL);//standardconstructor
//DialogData
//{{AFX_DATA(CLibDlg)
enum{IDD=IDD_LIB_DIALOG};
CStringm_DSNName;
//}}AFX_DATA
//ClassWizardgeneratedvirtualfunctionoverrides
//{{AFX_VIRTUAL(CLibDlg)
protected:
virtualvoidDoDataExchange(CDataExchange*pDX);//DDX/DDVsupport
//}}AFX_VIRTUAL
//Implementation
protected:
HICONm_hIcon;
//Generatedmessagemapfunctions
//{{AFX_MSG(CLibDlg)
virtualBOOLOnInitDialog();
afx_msgvoidOnSysCommand(UINTnID,LPARAMlParam);
afx_msgvoidOnPaint();
afx_msgHCURSOROnQueryDragIcon();
virtualvoidOnOK();
afx_msgvoidOnImport();
afx_msgvoidOnExport();
afx_msgvoidOnButton1();
afx_msgvoidOnSell();
afx_msgvoidOnButton6();
afx_msgvoidOnButton5();
afx_msgvoidOnButton7();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
·进/退货类:
classImport:
publicCDialog
{
public:
voidUpdate();
intm_nitem;
Import(CWnd*pParent=NULL);//standardconstructor
//DialogData
//{{AFX_DATA(Import)
enum{IDD=IDD_IMPORT};
CListCtrlm_list;
intm_edit;
//}}AFX_DATA
//Overrides
//ClassWizardgeneratedvirtualfunctionoverrides
//{{AFX_VIRTUAL(Import)
public:
virtualBOOLDestroyWindow();
protected:
virtualvoidDoDataExchange(CDataExchange*pDX);//DDX/DDVsupport
//}}AFX_VIRTUAL
//Implementation
protected:
//Generatedmessagemapfunctions
//{{AFX_MSG(Import)
virtualBOOLOnInitDialog();
virtualvoidOnOK();
afx_msgvoidOnClickList(NMHDR*pNMHDR,LRESULT*pResult);
afx_msgvoidOnIm();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
·销售类
classCSell:
publicCDialog
{
//Construction
public:
voidUpdate();
intm_nitem;
CSell(CWnd*pParent=NULL);//standardconstructor
//DialogData
//{{AFX_DATA(CSell)
enum{IDD=IDD_EXPORT1};
CListCtrlm_list;
intm_edit;
//}}AFX_DATA
//Overrides
//ClassWizardgeneratedvirtualfunctionoverrides
//{{AFX_VIRTUAL(CSell)
public:
virtualBOOLDestroyWindow();
protected:
virtualvoidDoDataExchange(CDataExchange*pDX);//DDX/DDVsupport
//}}AFX_VIRTUAL
//Implementation
protected:
//Generatedmessagemapfunctions
//{{AFX_MSG(CSell)
virtualBOOLOnInitDialog();
afx_msgvoidOnClickList(NMHDR*pNMHDR,LRESULT*pResult);
afx_msgvoidOnIm();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
·查询类
classCMonth:
publicCDialog
{
//Construction
public:
voidUpdate(CListCtrl&m_list2,_RecordsetPtrm_pRecordset);
CMonth(CWnd*pParent=NULL);//standardconstructor
//DialogData
//{{AFX_DATA(CMonth)
enum{IDD=IDD_MONTH};
CListCtrlm_list2;
CListCtrlm_list;
intm_edit;
CStringm_ste;
//}}AFX_DATA
//Overrides
//ClassWizardgeneratedvirtualfunctionoverrides
//{{AFX_VIRTUAL(CMonth)
protected:
virtualvoidDoDataExchange(CDataExchange*pDX);//DDX/DDVsupport
//}}AFX_VIRTUAL
//Implementation
protected:
//Generatedmessagemapfunctions
//{{AFX_MSG(CMonth)
afx_msgvoidOnRequest();
virtualvoidOnOK();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
·统计类
classCSum:
publicCDialog
{
//Construction
public:
CSum(CWnd*pParent=NULL);
voidCSum:
:
Update(CListCtrl&m_list2,_RecordsetPtrm_pRecordset);//standardconstructor
//DialogData
//{{AFX_DATA(CSum)
enum{IDD=IDD_SUM};
CListCtrlm_list;
CStringm_static;
//}}AFX_DATA
//Overrides
//ClassWizardgeneratedvirtualfunctionoverrides
//{{AFX_VIRTUAL(CSum)
protected:
virtualvoidDoDataExchange(CDataExchange*pDX);//DDX/DDVsupport
//}}AFX_VIRTUAL
//Implementation
protected:
//Generatedmessagemapfunctions
//{{AFX_MSG(CSum)
virtualBOOLOnInitDialog();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
·所用的SQL语句
进货:
("UPDATE[产品]SET[Left]=[Left]+%dWHEREID=%s",m_edit,szBuf);
进货("INSERTINTO[Record](ID,[类别],[书名],[数量],[单价]\n)VALUES(%s,'进货','%s',%d,%s)",szBuf,bookname,m_edit,price);
退货:
("UPDATE[产品]SET[Left]=[Left]+%dWHEREID=%s",m_edit,szBuf);
cs.Format("INSERTINTO[Record](ID,[类别],[书名],[数量],[单价]\n)VALUES(%s,'退货','%s',%d,%s)",szBuf,bookname,m_edit,price);
查询进货/退货记录:
(theApp.m_pRecordset)->Open("Record",
theApp.m_pConnection.GetInterfacePtr(),
adOpenDynamic,
adLockOptimistic,
adCmdTable);
Update();
查询销售记录:
("SELECT[订单ID],[BookName],[订购日期],[数量],%dAS[月份]FROM订单WHEREMonth([订购日期])=%d;",m_edit,m_edit);
销售排行(数量):
("SELECTBookNameAs书名,SUM([数量])As销售数量,SUM([获利])As获利金额FROM[订单]GROUPBYBookNameORDERBYSUM([数量])DESC");
销售排行(金额):
("SELECTBookNameAs书名,SUM([数量])As销售数量,SUM([获利])As获利金额FROM[订单]GROUPBYBookNameORDERBYSUM([获利])DESC");
销售总额:
("SELECTSUM([获利])AS总获利FROM[订单];");
·附:
Update函数
Update语句用于修改表中的数据。
voidUpdate(CListCtrl&m_list2,_RecordsetPtrm_pRecordset)
{
//清空ControlList表头
m_list2.SetExtendedStyle(LVS_EX_FULLROWSELECT);
m_list2.DeleteAllItems();
intnc=m_list2.GetHeaderCtrl()->GetItemCount();
for(intk=0;k m_list2.DeleteColumn(0); } //重新建立表头 FieldsPtrflds=m_pRecordset->GetFields(); _variant_tIndex; Index.vt=VT_I2; for(inti=0;i<(int)flds->GetCount();i++){ Index.iVal=i; m_list2.InsertColumn(i+1,(LPSTR)(flds->GetItem(Index)->GetName()), LVCFMT_LEFT,140); } //获取数据并填充表格 _bstr_tstr,value; intnItem=0; CStringstrItem; while(! m_pRecordset->adoEOF){ m_list2.InsertItem(nItem,strItem); for(i=0;i<(int)flds->GetCount();i++){ Index.iVal=i; str=flds->GetItem(Index)->GetName(); try { value=m_pRecordset->GetCollect(str); } catch(...) { break; } m_list2.SetItemText(nItem,i,(LPCSTR)value); } m_pRecordset->MoveNext(); nItem++; } //捕捉错误防止程序崩溃 try { m_pRecordset->MoveFirst(); } catch(...) { } } (五)、小结 在这三个星期的课程设计中,我们回顾了很多以前的东西,也发现了很多的问题,以前都没遇见过的,收获很大,在对不同的功能代码是不一定可以完整的执行的,不过大概都是一样的,只有一些小的细节。 看着自己做的系统,自己就会又欣慰又难过,欣慰的是自己终于把它做出来了,而且,做的还好,难过的是自己知道还有很多的不足,但是,由于认识的有限,无法去完善,才知道“书到用时方恨少”! 此次图书销售系统的设计让我们对数据库的了解更深入,可以把它同实际相结合,同时,又让我们学会了一个新的应用软件。 在整个设计过程中,通过怎样对把各个管理信息连接起来的分析,锻炼了我们对事情的分析能力,通过怎样解决过程中出现的问题,提高了我们查找文献的能力、对网络资源的利用能力和和其他同学的交流沟通能力。 而且,经历这次的课程设计,我们也学会了自学和分工协作。 我们觉得每一次的课程设计,都是让我们对原有的知识从了解表面到深入本质,从个体学习到整体把握的跳跃,对新知识的汲取,更是让我们把课本的知识应用到实际中,让我们了解了我们的学习有什么用,能够解决什么样的问题,增加我们的自信和学习的动力。 总之,通过这次的课程设计,我们收获匪浅。 (六)、测试与运行 经测试与运行,各部分功能均能实现。 (七)、致谢 在整个程序的设计过程中,长春理工大学计算机学院陈纯毅老师给予了我们极大的帮助与支持,在此向他致以最诚挚的敬意。 (八)、参考文献 数据库应用教程俞海英刘建东等主编清华大学出版社 C++Primer中文版李师贤蒋爱军等编译人民邮电出版社 Windows程序设计王艳平张铮主编人民邮电出版社 VisualC++应用教程郑阿奇丁有和主编人民邮电出版社 XX知道
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 图书 销售 系统