图书销售系统综合设计报告.docx

上传人:小飞机 文档编号:1978788 上传时间:2022-12-29 格式:DOCX 页数:69 大小:1.97MB
返回 下载 相关 举报
图书销售系统综合设计报告.docx_第1页
第1页 / 共69页
图书销售系统综合设计报告.docx_第2页
第2页 / 共69页
图书销售系统综合设计报告.docx_第3页
第3页 / 共69页
图书销售系统综合设计报告.docx_第4页
第4页 / 共69页
图书销售系统综合设计报告.docx_第5页
第5页 / 共69页
点击查看更多>>
资源描述

《图书销售系统综合设计报告.docx》由会员分享,可在线阅读,更多相关《图书销售系统综合设计报告.docx(69页珍藏版)》请在三一办公上搜索。

1、*交通大学信息科学与工程学院程序设计实训I综合设计报告图 书 销 售 系 统学号:631206050*姓名:* 专业:计算机科学与技术(软件开发)班级:软件2班 实验室(中心):专业机房指导老师:* 完成时间:2013年12月18日目 录一、任务书.4 二、需求分析.5三、系统设计.6四、编程与实现.14五、测试内容与结果.56六、存在的问题与不足及对策.67七、对这门课的建议.68八、参考文献.68教师评阅意见: 签名: 年 月 日成绩:以下为设计报告正文内容*交通大学信息科学与工程学院综合设计任务书课 程程序设计实训I班级软件二班指导教师*题 目图书销售系统完成时间2013年12月18日主

2、要内容图书销售系统应主要包括以下一些内容:1.用户信息管理;2.图书信息管理;3.客户信息管理;4.销售信息管理;5.统计信息;设计报告要求设计报告要求格式规范、内容完整。主要包括:(1) 需求分析;(2) 系统设计;(3) 编程实现:本部分主要写实现的过程或步骤,以及关键代码(必须附上自己添加的源代码并加上注释)(4) 测试与分析;(5) 存在的问题与不足及对策;(6) 对这门课的建议;(7) 参考文献等说明:设计报告要求打印上交。版面要求1 题目用黑体三号,段后距18磅(或1行),居中对齐;2 标题用黑体四号,段前、段后距6磅(或0.3行);3 正文用小四号宋体,行距为1.25倍行距;4

3、标题按“一”、“”、“1”、“”顺序编号。备注原则上一人一题,部分题目允许多人一题,分工协作,独立完成。(多人协作完成,要注明分工情况)每位同学单独演示自己的程序并现场回答提问。成绩评定详见评分标准说明二、需求分析(一) 图书销售管理系统体系结构图书销售管理系统是该系统软件的重要内容之一,该系统为书店的库存书籍的动态调整提供了决策依据,有利于及时对有大量需求的新书进行订货入库。它的主要功能包括:图书的管理,图书销售管理,图书退货管理和销售统计,退货统计以及进货商信息管理,顾客信息管理,用户信息管理等。系统管理,帮助等功能。(二)图书销售系统整体概述1.图书信息管理l添加图书信息l修改图书信息l

4、查询图书信息l删除图书信息2.销售信息管理l添加销售信息l修改销售信息l查询销售信息l删除销售信息3.退货信息管理l添加退货信息l修改退货信息l查询退货信息l删除退货信息4.统计信息管理l销售信息统计l退货信息统计l图书库存信息统计5.顾客信息管理l添加顾客信息l修改顾客信息l查询顾客信息l删除顾客信息6.供应商信息管理l添加供应商信息l修改供应商信息l查询供应商信息l删除供应商信息7.用户信息管理l添加用户信息l修改用户密码l退出系统8.系统帮助l图书销售系统简介三、系统设计(一)系统结构1.系统总体结构图书销售系统用户登录用户信息管理供应商信息管理顾客信息管理统计信息管理退货信息管理销售信

5、息管理图书信息管理系统帮助2.图书信息管理结构图图书信息管理查询图书信息删除图书信息修改图书信息添加图书信息按条件查询图书查询所有图书3.销售信息管理结构图销售信息管理查询销售信息删除销售信息修改销售信息添加销售信息4.退货信息管理退货信息管理查询退货信息删除退货信息修改退货信息添加退货信息5.统计信息管理统计信息管理退货信息统计销售信息统计库存信息统计6.顾客信息管理顾客信息管理查询顾客信息删除顾客信息修改顾客信息添加顾客信息7.供应商信息管理供应商信息管理删除供应商信息查询供应商信息添加供应商信息修改供应商信息8.用户信息管理用户信息管理退出系统修改用户密码添加用户信息(二)数据库设计1.

6、数据库结构设计(1)图书信息E-R图书 名图书编号作 者价 格图书信息出版社数 量(2)销售信息E-R图图书编号书 名销售代码销售价格顾客姓名销售信息销售日期销售数量销售总额(3)退货信息E-R图书 名图书编号备 注退货代码退货价格顾客姓名销售信息退货日期退货数量退货总额(4)顾客信息E-R图顾客编号顾客姓名身份证号年 龄性 别销售信息注册日期联系方式(5)供应商信息E-R图公司名称供应商编号公司地址联系人图书信息联系方式备 注(6)用户信息E-R图用户密码用户名用户信息2.数据库关系模式本系统的E-R图可转化为如下关系模式:图书(图书编号、书名、作者、出版社、价格、数量)顾客(顾客编号、姓名

7、、性别、年龄、身份证号、联系方式、注册日期)供应商(供应商编号、公司名称、公司地址、联系人、联系方式、备注信息)图书销售(销售代码、图书编号、书名、顾客姓名、销售价格、销售数量、销售总额、销售日期)图书退货(退货代码、图书编号、书名、退货价格、退货数量、销退货总额、退货日期、顾客姓名、备注信息)用户(账号、密码)库存(图书编号、书名、数量)四、编程与实现(一)创建单文档应用程序 BSMS1. 用MFC AppWizard 创建一个单文档应用程序 BSMS,在向导步骤中将CBSMSView的基类由CView改为CListView。2.在CBSMSView:PreCreateWindow函数添加下

8、列代码,用来设置列表视图内嵌列表控件的风格:BOOL CBSMSView:PreCreateWindow(CREATESTRUCT& cs)cs.style |= LVS_REPORT;/报表风格return CListView:PreCreateWindow(cs);(二)图书信息管理实现1.在BSMS中添加图书信息表的类CBookadd。2.创建图书信息添加对话框。为对话框类CAddbook添加背景图片,为CAddbook类添加成员函数OnPaint,并添加下列代码:void CAddbook:OnPaint()CPaintDC dc(this); / device context for

9、 painting/ TODO: 在此处添加消息处理程序代码 CDC memdc; memdc.CreateCompatibleDC(&dc);/创建兼容YDC CBitmap bkg; bkg.LoadBitmap(IDB_BITMAP11);/载入位图 BITMAP bkginfo; bkg.GetBitmap(&bkginfo);/获取位图信息 memdc.SelectObject(&bkg); RECT rect; GetWindowRect(&rect);/获取对话框信息dc.SetStretchBltMode(COLORONCOLOR); dc.StretchBlt(0,0,rec

10、t.right-rect.left,rect.bottom-rect.top,&memdc,0,0,bkginfo.bmWidth,bkginfo.bmHeight,SRCCOPY);/ 不为绘图消息调用CDialogEx:OnPaint()3.创建图书信息修改对话框。为对话框类CChangebook添加背景图片,为CChangebook类添加成员函数OnPaint,并添加下列代码:void Changebook:OnPaint()CPaintDC dc(this); / device context for painting/ TODO: 在此处添加消息处理程序代码 CDC memdc; m

11、emdc.CreateCompatibleDC(&dc);/创建兼容YDC CBitmap bkg; bkg.LoadBitmap(IDB_BITMAP4);/载入位图 BITMAP bkginfo; bkg.GetBitmap(&bkginfo);/获取位图信息 memdc.SelectObject(&bkg); RECT rect; GetWindowRect(&rect);/获取对话框信息dc.SetStretchBltMode(COLORONCOLOR); dc.StretchBlt(0,0,rect.right-rect.left,rect.bottom-rect.top,&memd

12、c,0,0,bkginfo.bmWidth,bkginfo.bmHeight,SRCCOPY);/ 不为绘图消息调用CDialogEx:OnPaint()4.实现图书添加、修改、查询、删除功能(1)在CBSMSView类添加成员函数DeleteAllColumn(),用来删除列表视图的标题头,以便能在创建标题头显示不同的信息:void CBSMSView:DeleteAllColumn(void)CListCtrl& m_ListCtrl = GetListCtrl();int nCount =0;CHeaderCtrl* pHeaderCtrl = m_ListCtrl.GetHeaderC

13、trl();if(pHeaderCtrl!=NULL)nCount = pHeaderCtrl-GetItemCount();for(int i=0;inCount;i+)m_ListCtrl.DeleteColumn(0);(2) 在CBSMSView类添加成员函数DispBookInfo,用来显示图书信息。void CBSMSView:DispBookInfo(CString strFilter)DeleteAllColumn();CListCtrl& m_ListCtrl = GetListCtrl();CString strHeader=_T(图书编号),_T(书名),_T(作者),_

14、T(价格),_T(数量),_T(出版社);for(int ncol=0;ncolsizeof(strHeader)/sizeof(CString);ncol+)m_ListCtrl.InsertColumn(ncol,strHeaderncol,LVCFMT_LEFT,100);m_ListCtrl.DeleteAllItems();/删除所有的列表项CBookadd bSet;bSet.m_strFilter = strFilter;bSet.m_strSort = bookno;bSet.Open();int nitem = 0;CString str;while(!bSet.IsEOF(

15、)m_ListCtrl.InsertItem(nitem,bSet.m_bookno);m_ListCtrl.SetItemText(nitem,1,bSet.m_bookname);m_ListCtrl.SetItemText(nitem,2,bSet.m_bookauthor);str.Format(_T(%4.2f),bSet.m_bookprice);m_ListCtrl.SetItemText(nitem,3,str);str.Format(_T(%8d),bSet.m_booksum);m_ListCtrl.SetItemText(nitem,4,str);m_ListCtrl.S

16、etItemText(nitem,5,bSet.m_bookpublisher);nitem+;bSet.MoveNext();bSet.Close();(3)为CBSMSView类添加一个成员变量m_strFilter,类型为CString。(4)用MFC ClassWizard在CBSMSView类中映射菜单ID_ADDBOOK的COMMAND消息,并添加下列代码:void CBSMSView:OnAddbook()/ TODO: 在此添加命令处理程序代码CAddbook dlg;CBookadd bSet;if(dlg.DoModal()!=IDOK) return;bSet.Open(

17、);bSet.AddNew();/在表的末尾增加新记录bSet.SetFieldNull(&(bSet.m_bookno),FALSE); /设定m_Bookadd_bookno不能为空bSet.m_bookno = dlg.m_strbookid;bSet.m_bookname = dlg.m_strbookname; bSet.m_bookauthor = dlg.m_strauthor;bSet.m_bookprice = dlg.m_dbookprice;bSet.m_bookpublisher = dlg.m_strpublisher; bSet.m_booksum = dlg.m_

18、bookquantity;/输入新的字段值 bSet.Update(); /将新纪录存入数据库bSet.Requery();/刷新记录集,这在快照集方式下是必须的bSet.Close();MessageBox(_T(图书信息添加成功!),_T(特别提示),MB_OK|MB_ICONINFORMATION);m_strFilter.Format(_T(bookno = %s),dlg.m_strbookid);DispBookInfo(m_strFilter);(5)在CBSMSView类添加成员函数DeleteAllColumn(),用来获取当前选择的列表项索引,其代码如下:int CBSMS

19、View:GetListCtrlCurSel(void)CListCtrl& m_ListCtrl = GetListCtrl();POSITION pos;pos = m_ListCtrl.GetFirstSelectedItemPosition();if(pos=NULL) MessageBox(_T(您还没有选中列表项,请先选中列表项!); return -1; return m_ListCtrl.GetNextSelectedItem(pos);(6)用MFC ClassWizard在CBSMSView类中映射菜单ID_CHANGEBOOK的COMMAND消息,并添加下列代码:void

20、 CBSMSView:OnChangebook()/ TODO: 在此添加命令处理程序代码CChangebook1 dlg1;if(dlg1.DoModal()=IDOK) CBookadd bSet; CChangebook2 dlg2; UpdateData(); dlg1.m_strbookid.TrimLeft(); if(dlg1.m_strbookid.IsEmpty() MessageBox(_T(请输入图书编号!); OnChangebook();return; bSet.m_strFilter.Format(_T(bookno = %s),dlg1.m_strbookid);

21、 bSet.m_strSort = bookno; if(bSet.IsOpen() bSet.Close(); bSet.Open(); if(bSet.m_bookno.IsEmpty() MessageBox(_T(要修改的图书信息不存在!);OnChangebook(); return; else dlg2.m_strauthor = bSet.m_bookauthor; dlg2.m_strbookid = bSet.m_bookno; dlg2.m_strbookname = bSet.m_bookname; dlg2.m_strbookno = bSet.m_booksum; d

22、lg2.m_strprice = bSet.m_bookprice; dlg2.m_strpublisher = bSet.m_bookpublisher; if(dlg2.DoModal()=IDOK) bSet.Edit(); bSet.m_bookauthor = dlg2.m_strauthor; bSet.m_bookno = dlg2.m_strbookid; bSet.m_bookname = dlg2.m_strbookname; bSet.m_booksum = dlg2.m_strbookno; bSet.m_bookprice = dlg2.m_strprice; bSe

23、t.m_bookpublisher = dlg2.m_strpublisher; bSet.Update(); UpdateData(FALSE); MessageBox(_T(图书信息修改成功!);m_strFilter.Format(_T(bookno = %s),dlg2.m_strbookid); DispBookInfo(m_strFilter); bSet.Close(); (7)用MFC ClassWizard在CBSMSView类中映射菜单ID_CONDITIONSEEKBOOK的COMMAND消息,并添加下列代码:void CBSMSView:OnConditionseekb

24、ook()/ TODO: 在此添加命令处理程序代码CCondtionseekbook dlg;CBookadd bSet;int a=1,b=2,c=4,d=8,n;if(dlg.DoModal()=IDOK) dlg.m_strbookid.TrimLeft();dlg.m_strbookname.TrimLeft();dlg.m_strauthor.TrimLeft();dlg.m_strpublisher.TrimLeft(); if(dlg.m_strbookid.IsEmpty()a=0;if(dlg.m_strbookname.IsEmpty()b=0;if(dlg.m_strau

25、thor.IsEmpty()c=0;if(dlg.m_strpublisher.IsEmpty()d=0;n=a+b+c+d;switch(n)case 0:MessageBox(_T(请输入要查询的条件!); OnConditionseekbook();return;case 1:bSet.m_strFilter.Format(_T(bookno = %s),dlg.m_strbookid); bSet.m_strSort = bookno;break;case 2:bSet.m_strFilter.Format(_T(bookname = %s),dlg.m_strbookname); b

26、Set.m_strSort = bookname;break;case 3:bSet.m_strFilter.Format(_T(bookno = %s AND bookname = %s),dlg.m_strbookid,dlg.m_strbookname); bSet.m_strSort = bookno,bookname;break;case 4:bSet.m_strFilter.Format(_T(bookauthor = %s),dlg.m_strauthor); bSet.m_strSort = bookauthor;break;case 5:bSet.m_strFilter.Fo

27、rmat(_T(bookno = %s AND bookauthor = %s),dlg.m_strbookid,dlg.m_strauthor); bSet.m_strSort = bookno,bookauthor;break;case 6:bSet.m_strFilter.Format(_T(bookname = %s AND bookauthor = %s),dlg.m_strbookname,dlg.m_strauthor); bSet.m_strSort = bookname,bookauthor;break;case 7:bSet.m_strFilter.Format(_T(bo

28、okno = %s AND bookname = %s AND bookauthor = %s),dlg.m_strbookid,dlg.m_strbookname,dlg.m_strauthor); bSet.m_strSort = bookno,bookname,bookauthor;break;case 8:bSet.m_strFilter.Format(_T(bookpublisher = %s),dlg.m_strpublisher); bSet.m_strSort = bookpublisher;break;case 9:bSet.m_strFilter.Format(_T(boo

29、kno = %s AND bookpublisher = %s),dlg.m_strbookid,dlg.m_strpublisher); bSet.m_strSort = bookno,bookpublisher;break;case 10:bSet.m_strFilter.Format(_T(bookname = %s AND bookpublisher = %s),dlg.m_strbookname,dlg.m_strpublisher); bSet.m_strSort = bookname,bookpublisher;break;case 11:bSet.m_strFilter.For

30、mat(_T(bookno = %s AND bookname = %s AND bookpublisher = %s),dlg.m_strbookid,dlg.m_strbookname,dlg.m_strpublisher); bSet.m_strSort = bookno,bookname,bookpublisher;break;case 12:bSet.m_strFilter.Format(_T(bookauthor = %s AND bookpublisher = %s),dlg.m_strauthor,dlg.m_strpublisher); bSet.m_strSort = bo

31、okauthor,bookpublisher;break;case 13:bSet.m_strFilter.Format(_T(bookno = %s AND bookauthor = %s AND bookpublisher = %s),dlg.m_strbookid,dlg.m_strauthor,dlg.m_strpublisher); bSet.m_strSort = bookno,bookauthor,bookpublisher;break;case 14:bSet.m_strFilter.Format(_T(bookname = %s AND bookauthor = %s AND

32、 bookpublisher = %s),dlg.m_strbookname,dlg.m_strauthor,dlg.m_strpublisher); bSet.m_strSort = bookname,bookauthor,bookpublisher;break;case 15:bSet.m_strFilter.Format(_T(bookno = %s AND bookname = %s AND bookauthor = %s AND bookpublisher = %s),dlg.m_strbookid,dlg.m_strbookname,dlg.m_strauthor,dlg.m_st

33、rpublisher); bSet.m_strSort = bookno,bookname,bookauthor,bookpublisher;break;if(bSet.IsOpen() bSet.Close(); bSet.Open();if(bSet.m_bookno.IsEmpty()&bSet.m_bookname.IsEmpty()&bSet.m_bookauthor.IsEmpty()&bSet.m_bookpublisher.IsEmpty() MessageBox(_T(要查询的图书信息不存在!);OnConditionseekbook(); return; else Disp

34、BookInfo(bSet.m_strFilter);bSet.Close();(8)用MFC ClassWizard在CBSMSView类中映射菜单D_SEEKALLBOOK的COMMAND消息,并添加下列代码:void CBSMSView:OnSeekallbook()/ TODO: 在此添加命令处理程序代码DispBookInfo(_T();(9)用MFC ClassWizard在CBSMSView类中映射菜单ID_DELETEBOOK的COMMAND消息,并添加下列代码:void CBSMSView:OnDeletebook()/ TODO: 在此添加命令处理程序代码 int nite

35、m = GetListCtrlCurSel();if(nitem0) return;CListCtrl& m_ListCtrl = GetListCtrl();CString stritem,str;stritem = m_ListCtrl.GetItemText(nitem,1);str.Format(_T(确实要删除书名为%s 的列表项(记录)吗?),stritem);if(IDOK != MessageBox(str,_T(确认删除),MB_ICONQUESTION|MB_OKCANCEL)return;CString strbookid = m_ListCtrl.GetItemText

36、(nitem,0);CBookadd iSet;iSet.m_strFilter.Format(_T(bookno = %s),strbookid);iSet.Open();if(!iSet.IsEOF() CRecordsetStatus status;iSet.GetStatus(status);iSet.Delete();if(status.m_lCurrentRecord=0)iSet.MoveNext();elseiSet.MoveFirst();if(iSet.IsOpen()iSet.Close();MessageBox(_T(图书信息删除成功!);DispBookInfo(_T

37、();(三)顾客信息管理实现1.在BSMS中添加图书信息表的类CCustomer。2.创建顾客信息添加对话框。为对话框类CAddcustomer添加背景图片,为CAddcustomer类添加成员函数OnPaint,并添加下列代码:void CAddcustomer:OnPaint()CPaintDC dc(this); / device context for painting/ TODO: 在此处添加消息处理程序代码 CDC memdc; memdc.CreateCompatibleDC(&dc);/创建兼容YDC CBitmap bkg; bkg.LoadBitmap(IDB_BITMAP

38、15);/载入位图 BITMAP bkginfo; bkg.GetBitmap(&bkginfo);/获取位图信息 memdc.SelectObject(&bkg); RECT rect; GetWindowRect(&rect);/获取对话框信息dc.SetStretchBltMode(COLORONCOLOR); dc.StretchBlt(0,0,rect.right-rect.left,rect.bottom-rect.top,&memdc,0,0,bkginfo.bmWidth,bkginfo.bmHeight,SRCCOPY);/ 不为绘图消息调用CDialogEx:OnPaint

39、()3. 创建顾客信息修改对话框。为对话框类CChangecustomer添加背景图片,为CChangecustomer类添加成员函数OnPaint,并添加下列代码:void CChangecustomer:OnPaint()CPaintDC dc(this); / device context for painting/ TODO: 在此处添加消息处理程序代码 CDC memdc; memdc.CreateCompatibleDC(&dc);/创建兼容YDC CBitmap bkg; bkg.LoadBitmap(IDB_BITMAP15);/载入位图 BITMAP bkginfo; bkg.GetBitmap(&bkginfo);/获取位图信息 memdc.SelectObject(&bkg); RECT rect; GetWindowRect(&rect);/获取对话框信息dc.SetStretchBltMode(COLORONCOLOR); dc.StretchBlt(0,0,rect.right-rect.left,rect.bottom-rect.top,&memdc

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号