已阅读5页,还剩27页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数据库系统原理及其应用教程数据库系统原理及其应用教程课程设计报告课程设计报告题目名称题目名称:网上图书销售系统网上图书销售系统任课教师:任课教师:姓姓名:名:学学号:号:2010年年12月月30日日目录摘摘要要.311引言引言.322需求分析需求分析.32.1功能需求.32.2数据描述.52.3数据库描述.633概要设计概要设计.63.1系统运行环境.63.2系统功能模块设计.73.3系统处理流程.73.4接口设计.844详细设计详细设计.84.1登录模块及主界面.94.2图书录入模块.104.3图书销售模块.154.4销售统计模块.204.5查询库存模块.2255系统测试系统测试.2566操作手册操作手册.2977结论结论.297.1系统功能.297.2系统不足和改进.297.3总结.30参考文献参考文献.30评评语语3131摘要随着计算机的普及书店规模的不断扩大,使图书销售管理成为书店管理中的一个重要课题。通过图书销售管理系统可以解决书店管理中遇到的各种问题。本系统分析了市场需求和实际需要,利用VC+连接SQL数据库的方式,主要实现了书店的网上图书销售管理,该系统具有处理图书录入、图书销售、销售统计、查询库存等功能。关键词:关键词:图书销售库存11引言引言传统的图书销售管理方法,都是通过人工统计和计算的管理方式进行的。这样的管理方法不但费时费力,也容易产生计算上的错误和疏漏;计算机技术的全面普及,打破了书店管理的传统管理方法,提高了管理效率的同时,克服了传统管理方法中易产生的问题,使管理员能够有序的、全面的对图书销售和库存进行管理。网上图书销售系统可以完成书店的日常管理,如图书录入、图书销售、销售统计、查询库存等功能,迅速准确地对已售图书和剩余库存进行统计和汇总工作,大大提高了书店的管理效率和准确性。22需求分析需求分析2.1功能需求2.1.1待开发软件的功能需求本系统是根据书店的实际需求而开发的,要求稳定、可靠的实现图书销售的自动化管理,通过本系统可以达到以下目标:1.图书录入,包括图书的基本信息,如分类、进价、售价、作者等。2.图书销售,包括图书的售价、折扣、销售日期,并实现对库存量的修改。3.销售统计,包括按图书类型、书名、作者、出版社等进行统计。4.查询库存,对指定的某本图书剩余库存量进行查询。5.售完图书查询,对已售完图书进行查询。2.1.2待开发软件的功能按照用户需求,要满足以上功能,我设计出了图书销售管理系统的系统功能图,如图2.1所示。图书销售管理系统图书录入查询库存图书销售销售统计售完图书查询图2.1图书销售管理系统的系统功能图综合系统要求,对图2.1所示的系统功能解释如下:图书录入,包括图书的基本信息,如分类、进价、售价、作者等。图书销售,包括图书的售价、折扣、销售日期,并实现对库存量的修改。销售统计,包括按图书类型、书名、作者、出版社等进行统计。查询库存,对指定的某本图书剩余库存量进行查询。售完图书查询,对已售完图书进行查询。通过以上分析,可以得到仓库管理系统的数据流图,如图2.2所示。管理员图书信息处理图书管理反馈信息图书信息反馈信息记录数据数据库图2.2图书管理系统的数据流图2.2数据描述2.2.1数据库概要说明数据库中包括管理员信息表、图书基本信息表、图书类型表、图书销售记录表等4个数据表。图2.3所示的即为本系统中数据库中的数据表结构图,该数据表结构图包含系统所有数据表。可以清晰地反应数据库信息。图2.3数据表结构图2.2.22.2.2主要数据表的结构表2.1Pwd(管理员信息表)字段名数据类型字段大小描述ManagerIDint4管理员编号Administratornamenvarchar50r管理员名称Passwordnvarchar50r密码表2.2BookInfo(图书基本信息表)字段名数据类型字段大小描述Librarynamenvarchar50图书名称Serialnumberint图书编号Bookcategorynvarchar50图书类别Authornvarchar50作者Pressnvarchar50出版社Dateofpublicationsmalldatetime出版日期Pricefloat价格Numberint数量Barcodenvarchar50条形码表2.3Staff(员工表)字段名数据类型长度描述Fullnamenvarchar50姓名EmployeenumberInt员工号Sexnvarchar50性别表2.4Warehouse(仓库表)字段名数据类型长度描述Warehousenumbernvarchar50仓库号Addressnvarchar50地址Themeasureofareafloat面积表2.5Purchaseorder(订购单表)字段名数据类型长度描述Ordernumbernvarchar50订购单号Orderdatesmalldatetime订购日期表2.6User(用户表)字段名数据类型长度描述UsernumberInt用户编号Usernamenvarchar50用户姓名UserageInt用户年龄ContacttelephonenumberInt联系电话Usersexnvarchar50用户性别2.3数据库描述本软件采用SQL数据库。3概要设计本系统是根据书店的实际需求而开发的,完全能够帮助书店实现高效、准确的图书销售自动化管理。在分析阶段,我们已经提出了系统的结构和数据字典。本节我们将对系统的使用环境作简要介绍,并对该系统作概要设计。3.1系统运行环境PC机Windows操作系统VisualC+6.03.2系统功能模块设计在前面系统功能分析的基础上,结合VisualC+程序编制的特点,得到如图3.1所示的系统功能模块图。图书销售管理系统图书录入模块(M2)查询库存模块(M5)图书销售模块(M3)销售统计模块(M4)售完图书查询模块(M6)管理员登录模块(M1)图3.1图书销售管理系统功能模块图各模块功能分配如下:(1)用户登陆功能:管理员登陆模块(M1)。(2)图书录入功能:图书录入模块(M2)。(3)图书销售功能:图书销售模块(M3)。(4)销售统计功能:销售统计模块(M4)。(5)查询图书库存功能:查询库存模块(M5)。(6)售完图书查询功能:售完图书查询模块(M6)。3.3系统处理流程(1)系统启动,进入身份验证。(2)初始化系统,导入数据库。(3)录入图书信息。(4)图书销售。(5)统计图书销售信息。(6)查询图书库存信息。(7)查询已售完图书信息。(8)退出系统。3.4接口设计3.4.1外部接口(1)用户界面采用图形用户界面,包含菜单、按钮、对话框等元素。(2)软件接口软件运行于VisualC+6.0平台上。(3)硬件接口运行于PC机上。3.4.2内部接口(1)用户登陆模块(M1):由相应事件驱动消息激活,完成用户登陆功能,之后进入消息循环状态。(2)图书销售模块(M3):由相应事件驱动消息激活,完成图书销售功能,之后进入消息循环状态。(3)销售统计模块(M4):由相应事件驱动消息激活,完成销售统计功能,之后进入消息循环状态。(4)查询库存模块(M5):由相应事件驱动消息激活,完成查询库存功能,之后进入消息循环状态。(5)售完图书查询模块(M6):由相应事件驱动消息激活,完成售完图书查询功能,之后进入消息循环状态。4详细设计该系统采用VC+6.0中的MFC连接SQL数据库的方式,使用图形用户界面,主要实现图书录入、图书销售等功能。下面具体对各模块进行介绍。4.1登录模块及主界面在登录界面(如图4.1所示)中输入用户名和密码,登录成功后进入主界面。登陆框流程图如图4.2所示,系统主界面如图4.3所示,单击某个按钮就能弹出某个功能的界面。图4.1系统登录界面输入用户名开始验证密码是否正确输入密码登录成功进入主界面结束是否选择帐号类型图4.2登录模块流程图4.2图书录入模块4.2.1实现目标添加图书信息,图书录入对话框的设计如图4.4所示。“保存”按钮对应的方法为RAddBookDlg:OnSave(),流程图如图4.5所示。图4.4图书录入对话框开始结束输入图书基本信息判断输入是否正确且完整添加该信息到关联表并写入数据库是否图4.5RAddBookDlg:OnSave()方法的流程图4.2.2设计步骤(1)向项目中添加一个新Dialog资源,资源ID为IDD_ADDBOOK。在IDD_YGTJK对话框资源中单击鼠标右键,执行弹出快捷菜单的“Properties”菜单命令,打开“DialogProperties”对话框。在“DialogProperties”对话框中选择General选项卡,更改其“Caption”文本框内容为“图书信息录入”。(2)从Controls面板上向Dialog资源中添加所需控件,更改资源的属性,并为资源设置相对应的变量,如表4.1所示。表4.1图书录入Dialog资源属性设置MemberVariablesIDPropertiesTypeMemberIDC_BK_CATEGORY默认文本CategoryNameIDC_BK_NAME默认文本BookNameIDC_BK_AUTHOR默认文本AuthorIDC_BK_PUBLISHER默认文本PublisherIDC_BK_DATE默认日期时间PublishDateIDC_BK_PURCHASE默认数字PurchaseIDC_BK_PRICE默认数字PriceIDC_BK_PAYOFF默认数字PriceIDC_BK_STOCK默认数字StockIDC_BK_BARCODE默认文本BarCodeIDC_BK_DISCOUNT默认数字DiscountIDC_RESETCaption重填IDC_SAVECaption添加IDCANCELCaption退出4.2.3代码分析(1)打开ClassWizard窗口,添加在OnInitDialog成员函数,向OnInitDialog添加代码如下:BOOLRAddBookDlg:OnInitDialog()CDialog:OnInitDialog()TODO:AddextrainitializationhereGetBookGategory()returnTRUEreturnTRUEunlessyousetthefocustoacontrolEXCEPTION:OCXPropertyPagesshouldreturnFALSE(2)当用户单击“保存“按钮时,实现添加图书功能,其响应代码如下:voidRAddBookDlg:OnSave()TODO:AddyourcontrolnotificationhandlercodehereUpdateData(TRUE)if(!IsValid()returnif(IDYES!=AfxMessageBox(确定要保存吗MB_YESNO)放弃保存returnif(SaveData()AfxMessageBox(保存成功!)保存后重置数据m_bHasNewBook=trueOnReset()GetDlgItem(IDC_BK_CATEGORY)-SetFocus()elseAfxMessageBox(保存失败!)(3)判断输入信息是否正确的函数是IsValid(),其响应代码如下:boolRAddBookDlg:IsValid()CStringstr=0123456789if(m_strBookCategory.IsEmpty()|m_strBookCategory.FindOneOf(str)!=-1)AfxMessageBox(输入有误!图书类型不能为空或包含数字。)GetDlgItem(IDC_BK_CATEGORY)-SetFocus()returnfalseif(m_strBookName.IsEmpty()AfxMessageBox(输入有误!书名不能为空。)GetDlgItem(IDC_BK_NAME)-SetFocus()returnfalseif(m_strAuthor.IsEmpty()|m_strAuthor.FindOneOf(str)!=-1)AfxMessageBox(输入有误!作者名称不能为空或包含数字。)GetDlgItem(IDC_BK_AUTHOR)-SetFocus()returnfalseif(m_strPublisher.IsEmpty()|m_strPublisher.FindOneOf(str)!=-1)AfxMessageBox(输入有误!出版社名称不能为空或包含数字。)GetDlgItem(IDC_BK_PUBLISHER)-SetFocus()returnfalseif(m_dPurchaseSetFocus()returnfalseif(m_dPriceSetFocus()returnfalseif(m_lDiscount100)AfxMessageBox(图书折扣应为0-100之间正值!)GetDlgItem(IDC_BK_DISCOUNT)-SetFocus()returnfalseif(m_lStockSetFocus()returnfalseif(m_strBarcode.IsEmpty()|m_strBarcode.GetLength()15)AfxMessageBox(条形码应为15位整数!)GetDlgItem(IDC_BK_BARCODE)-SetFocus()returnfalseAfxMessageBox(m_strBookName+rn+m_strBookCategory+rn+m_strAuthor+rn+m_strPublisher+rn+m_strBarcode)returntrue4.3图书销售模块4.3.1实现目标实现图书销售功能,图书销售对话框设计如图4.6所示。“销售”按钮对应的方法为RSaleBookDlg:OnOK(),流程图如图4.7所示。图4.6图书销售对话框开始结束输入书名或条形码判断输入是否正确且FindBook()函数返回值为1添加该信息到关联表并写入数据库是否图4.7RSaleBookDlg:OnOK()方法的流程图4.3.2实现步骤(1)向项目中添加一个新Dialog资源,资源ID为IDD_SALEBOOK。在IDD_YGGONGZITJ对话框资源中单击鼠标右键,执行弹出快捷菜单的“Properties”菜单命令,打开“DialogProperties”对话框。在“DialogProperties”对话框中选择General选项卡,更改其“Caption”文本框内容为“图书销售。”(2)从Controls面板上向Dialog资源中添加相关控件,更改资源的属性,并为资源设置相对应的变量,如表3.2所示:表4.2图书销售添加Dialog资源属性设置MemberVariablesIDPropertiesTypeMemberIDC_SBK_NAME默认文本BookNameIDC_SBK_BARCODE默认文本BarCodeIDC_SBK_PRICE默认数字PriceIDC_SBK_SALEPRICE默认数字SalePriceIDC_SBK_DISCOUNT默认数字DiscountIDC_SBK_DATE默认日期时间SaleDateIDOKCaption销售IDCANCELCaption退出4.3.3代码分析(1)为“销售”按钮添加代码,实现图书销售功能,代码如下:voidRSaleBookDlg:OnOK()TODO:Addextravalidationhereif(!m_bReadySale)m_bReadySale=FindBook()elseUpdateData(TRUE)CStringstrMsgstrMsg.at(是否出售n书名:%sn价格:%.2f”m_strBookNamem_dSalePrice)if(IDYES=AfxMessageBox(strMsgMB_YESNO)ModifyStock()修改图书库存SaveSaleRecord()记录销售记录Init()UpdateData(FALSE)GetDlgItem(IDC_SBK_NAME)-SetFocus()m_editDiscount.EnableWindow(FALSE)CDialog:OnOK()(2)判断销售是否能够成功的函数是RSaleBookDlg:FindBook(),其代码如下:boolRSaleBookDlg:FindBook()TODO:AddyourcontrolnotificationhandlercodehereUpdateData(TRUE)CStringstrSql_variant_tvardoubledPurchaseif(!m_strBookName.IsEmpty()strSql.at(SELECTFROMBookInfoWHEREBookName=%sandStock0m_strBookName)elseif(!m_strBarCode.IsEmpty()strSql.at(SELECTFROMBookInfoWHEREBarCode=%sandStock0m_strBarCode)elseAfxMessageBox(请输入书名或条码!)GetDlgItem(IDC_SBK_NAME)-SetFocus()returnfalseCRBookSaleApppApp=(CRBookSaleApp)AfxGetApp()trypApp-m_pRecordset-Open(strSql.AllocSysString()pApp-m_pConnection.GetInterfacePtr()adLockOptimisticadText)if(pApp-m_pRecordset-adoEOF)AfxMessageBox(查无此书!请输入书名或条码无误。)pApp-m_pRecordset-Close()returnfalsevar=pApp-m_pRecordset-GetCollect(BookID)if(var.vt!=NULL)m_lBookID=var.lValvar=pApp-m_pRecordset-GetCollect(Discount)if(var.vt!=NULL)m_lDiscount=var.lValvar=pApp-m_pRecordset-GetCollect(Price)if(var.vt!=NULL)m_dPrice=var.dblValvar=pApp-m_pRecordset-GetCollect(Purchase)if(var.vt!=NULL)dPurchase=var.dblValvar=pApp-m_pRecordset-GetCollect(CategoryID)if(var.vt!=NULL)m_lCategory=var.lValpApp-m_pRecordset-Close()catch(_com_errore)AfxMessageBox(e-ErrorMessage()m_editDiscount.EnableWindow(m_dPrice=dPurchase)m_lDiscount=(m_dPrice=dPurchase)m_lDiscount:100售价小于进价时不允许打折m_dSalePrice=m_dPrice(double(m_lDiscount)100)计算折后价UpdateData(FALSE)returntrue4.4销售统计模块4.4.1实现目标实现对已销售的图书进行统计的功能,销售统计对话框如图4.8所示。图4.8销售统计对话框4.4.2设计步骤(1)向项目中添加一个新Dialog资源,资源ID为IDD_REPORT。在IDD_REPORT对话框资源中单击鼠标右键,执行弹出快捷菜单的“Properties”菜单命令,打开“DialogProperties”对话框。在“DialogProperties”对话框中选择General选项卡,更改其“Caption”文本框内容为“销售统计”。(2)从Controls面板上向Dialog资源中添加相应控件,更改资源的属性,并为资源设置相应的变量,如表4.3所示:表4.3用户信息管理Dialog资源属性设置MemberVariablesIDPropertiesTypeMemberIDC_RADIO2默认单选框IDC_RADIO3默认单选框IDC_RADIO4默认单选框IDC_RADIO5默认单选框IDC_RADIO6默认单选框IDC_STATIC默认单选框IDOKCaption确定IDCANCELCaption取消4.4.3代码分析查询函数为CRBookSaleView:OnSaleReport(),代码如下:voidCRBookSaleView:OnSaleReport()TODO:AddyourcommandhandlercodehereRReportDlgdlgdlg.m_iReportType=m_iReportTypeif(IDOK=dlg.DoModal()m_iReportType=dlg.m_iReportType设置销售报表标题前2个标题类型为用户模式和书店管理模式故此处加2intiTitleType=0switch(m_iReportType)case0:图书类型统计iTitleType=CATEGORY_REPORT_TITLEbreakcase1:图书名称统计iTitleType=BOOKNAME_REPORT_TITLEbreakcase2:图书作者统计iTitleType=AUTHOR_REPORT_TITLEbreakcase3:出版社统计iTitleType=PUBLISHER_REPORT_TITLEbreakcase4:全部销售记录统计iTitleType=SALE_REPORT_TITLEbreakdefault:breakSetTitle(iTitleType)ShowReport()4.5查询库存模块4.5.1实现目标实现对已销售的图书进行统计的功能,销售统计对话框如图4.9所示。图4.9查询库存对话框4.5.2设计步骤(1)向项目中添加一个新Dialog资源,资源ID为IDD_QUERY。在IDD_QUERY对话框资源中单击鼠标右键,执行弹出快捷菜单的“Properties”菜单命令,打开“DialogProperties”对话框。在“DialogProperties”对话框中选择General选项卡,更改其“Caption”文本框内容为“查询”。(2)从Controls面板上向Dialog资源中添加相应控件,更改资源的属性,并为资源设置相应的变量,如表4.4所示:表4.4库存查询Dialog资源属性设置MemberVariablesIDPropertiesTypeMemberIDC_BOOK_CATEGORY默认组合框IDC_BOOK_NAME默认文本BookNameIDC_BOOK_AUTHOR默认文本AuthorIDC_BOOK_PUBLISHER默认文本PublisherIDOKCaption确定IDCANCELCaption取消4.5.3代码分析(1)“确定”按钮的函数为RQueryDlg:OnOK(),代码如下:voidRQueryDlg:OnOK()TODO:AddextravalidationhereUpdateData(TRUE)单独处理类型为全部的情况0表示选择类型为全部m_ctrlCategory.GetLBText(m_ctrlCategory.GetCurSel()m_strCategory)if(m_strCategory=_T(全部)m_strCategory=_T()CDialog:OnOK()(2)组合框根据图书类型查询的函数为RQueryDlg:GetBookGategory(),代码如下:voidRQueryDlg:GetBookGategory()intnum=0CStringstrSql_variant_tvarm_ctrlCategory.ResetContent()清空组合框中原有数据生成SQL查询语句在数据苦中查找图书类型strSql.at(SQL_SELECT_CATEGORYNAME)CRBookSaleApppApp=(CRBookSaleApp)AfxGetApp()trypApp-m_pRecordset-Open(strSql.AllocSysString()pApp-m_pConnection.GetInterfacePtr()adOpenDynamicadLockOptimisticadText)遍历数据库中BookCategory表获取全部图书类型while(!(pApp-m_pRecordset-adoEOF)var=pApp-m_pRecordset-GetCollect(CategoryName)if(var.vt!=NULL)m_ctrlCategory.AddString(LPCSTR)_bstr_t(var)pApp-m_pRecordset-MoveNext()num+m_ctrlCategory.AddString(全部)pApp-m_pRecordset-Close()catch(_com_errore)AfxMessageBox(e-ErrorMessage()设置当前选择类型为全部m_ctrlCategory.SetCurSel(num)55系统测试系统测试进入VC+6.0,打开工程RBookSale.dsw,然后进入源程序,接着编译和运行即可运行。下面将给出系统运行的过程。(1)打开程序后,选择“使用书店身份登录”,输入密码“111”,进入主对话框,如图5.1。图5.1主对话框(2)在功能菜单下选择图书录入功能,添加一本新的图书信息,如图5.2。图5.2添加图书信息(3)点击“返回”按钮后,系统会自动显示现有图书信息,如图5.3。图5.3系统自动显示现有图书信息(4)在功能菜单下进入图书销售对话框,卖出一本C+教程,如图5.4。点击返回按钮后,系统会显示当前所有图书剩余库存信息,如图5.4。图5.4图书销售(5)点击结束销售后,系统会自动显示当前所有图书的库存信息,C+教程的库存量已减少一本,如图5.5。图5.5完成销售后的库存信息(6)在功能菜单下进入销售统计对话框,查询全部销售清单,并给出已售出图书总本数,如图5.6。图5.6查询所有图书销售清单(7)在功能菜单下进入查询库存对
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 铺面出租定制合同范本
- 灯具施工安全合同范本
- 物业合作销售合同范本
- 续签劳动合同协议范本
- 夏日泛舟海上(教案)-2023-2024学年花城版音乐五年级下册
- 运输货物委托合同范本
- 物业公司租赁合同范本
- 统一杂货租船合同范本
- 高中数学人教A版 (2019)必修 第一册第四章 指数函数与对数函数4.2 指数函数教案设计
- 租凭厂房安全协议合同
- 元宇宙的运营方案
- 中药就业创业方向分析
- 2025年秋季中国南水北调集团青海有限公司招聘42人笔试历年典型考点题库附带答案详解2套试卷
- 安全生产烷基化考试题库及答案解析
- 2025年河北省平山县事业单位公开招聘工作人员考试题含答案
- 金斧子银斧子课件
- 美国总统选举流程
- 2025年国家开放大学(电大)《生命科学导论》期末考试复习试题及答案解析
- 婚姻家庭咨询师培训试题及答案
- 空气能中央热水施工方案
- 2025年初级会计实务(政府会计)真题及答案
评论
0/150
提交评论