
管理信息系统课程设计说明书.doc
23页课 程 设 计销售订单信息系统刘 宇2011 年 1 月 设计题目学 号 20071103专业班级 工业工程 07-1 班 学生姓名指导教师 王跃飞- 1 -合肥工业大学课程设计任务书设 计题 目 销售订单信息系统 成绩主要内容⒈ 正确运用《管理信息系统》课程的基本理论和知识,结合实际信息系统的开发,初步掌握管理信息系统的系统分析、方案设计、论证和开发方法2.了解在 Windows 环境下,使用 Visual C++6.0、SQL Server 开发管理信息系统所需的计算机软、硬件环境3. 熟悉可视化编程工具 Visual C++6.0,熟练掌握 Visual C++6.0 编程的方法和步骤4. 理解 SQL Server 中数据库和表的概念,能根据题目的要求设计并建立数据库,建立数据库中表与表之间的关系5. 通过编程和上机调试,进一步提高计算机的操作水平,提高解决实际问题的能力 6. 逐步树立正确的程序设计思想,培养分析问题、解决问题的能力,提高查询资料和撰写书面文件的能力指导教师意见签名: 20 年 月 日目录第 1 章 系统功能1.1 概述 ┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄21.2 需求分析 ┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄2 1.3 销售管理信息系统管理用例图 ┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄2 1.4 数据库访问技术和系统开发环境 ┄┄┄┄┄┄┄┄┄┄┄┄┄┄2第 2 章 数据库设计2.1 数据库需求分析 ┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄32.2 数据库逻辑结构设计和实现 ┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄4第 3 章 功能模块的建立 3.1 生成程序框架 ┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄53.2 树控件(CTreeCtrl)的使用 ┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄6 3.3 建立数据库连接 ┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄73.4 从数据库中读出所有的销售单号及序号并在树中显示 ┄┄┄┄┄┄73.5 建立对话框类 ┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄83.6 建立菜单资源 ┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄113.7 为树控件添加右键弹出菜单 ┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄11 3.8 基于右视图销售单信息的浏览、添加、修改、删除。
┄┄┄┄┄┄12第四章 查询功能的实现4.1 按客户统计查询功能的实现┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄264.2 按产品统计查询功能的实现┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄28 4.3 按业务员统计查询功能的实现┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄29- 1 -管理信息系统课程设计说明书销售订单信息系统概述:该设计主要是设计一个销售订单信息系统,实现销售订单资料的录入、修改、删除、查询等功能,是企业销售部门的管理信息系统第 1 章 系统功能1.1 需求分析1、销售订单的录入、修改、删除,在输入客户信息、物料信息、付款方式时能查询这些信息,选取输入,若是新信息则应能输入新的信息2、实现按客户统计查询某一段时间所销售的产品及数量3、实现按产品查询某一段时间的销售数量,价格及金额4、实现按业务员统计查询某一段时间所销售的产品种类、数量情况1.2 销售管理信息系统管理用例图图 1-1 销售管理信息系统管理用例图销售管理信息系统管理用例图如图 1-1 所示,其中订单的录入、修改、删除功能主要是对销售订单基本项目,销售订单物料明细表,销售订单付款约定表的录入、修改、删除。
订单的查询功能则是对整个系统的数据,分为按客户查询,按产品查询和按业务员查询,查询各种数据在一定时间范围之内的一些基本信息,包括这段时间内销售的产品及其数量、销售的价格及其金额等1.3 VC 开发环境介绍Visual C++是一个功能强大的可视化软件开发工具Visual C++6.0 不仅是一个 C++编译器,而且是一个基于 Windows 操作系统的可视化集成开发环境(integrated development environment,IDE) Visual C++6.0 由许多组件组成,包括编辑器、调试器以及程序向导AppWizard、类向导 Class Wizard 等开发工具 这些组件通过一个名为 Developer Studio 的组件集成为和谐的开发环境Visual C++可以分成三个主要的部分:Developer Studio、MFC、 Platform SDK订单录入订单修改订单删除订单查询- 2 -第二章 数据库设计2.1 数据库访问技术采用 ADO 机制访问数据库ADO 包含了连接对象(Connection) 、命令对象(Command) 、记录集对象(Recordset) 、字段对象(Filed ) 、参数对象(Parameter)、错误对象(Error) 、属性对象(Property)和集合与事件对象。
本次课程设计只使用了连接对象(Connection) 、记录集对象(Recordset )来完成所有的数据库操作为了使用的方便分别对连接对象(Connection)和记录集对象(Recordset)进行了封装2. 1. 1 Class CADODatabase 是对连接对象(Connection 的封装主要功能是:(1) 与数据源建立连接(2) 关闭与数据源之间的连接void CADODatabase::Close()( 3 ) 执行不返回记录集的 SQL 语句(如插入、更新、删除)BOOL CADODatabase::Execute(LPCTSTR lpstrExec)2. 1. 2 Class CADORecordset 是记录集对象(Recordset)的封装类主要功能是得到查询过程中得到的结果集1)查询语句的执行 BOOL CADORecordset::Open(ADODB::_ConnectionPtr mpdb, LPCTSTR lpstrExec, int nOption/* CADORecordset::openUnknown */)(2) 得到指定字段的值BOOLGetFieldValue(int nIndex,CString&strValue,CString strDateFormat/*_T(“”)*/)(3) 记录集的遍历 BOOL IsEOF() //判断是否已到记录集结尾BOOL IsBof() //判断是否已到记录集开头2.2 数据库需求分析表 1-1 销售单基本项目表销售单号 销售单期 客户代号 客户名称 客户地址 采购员varchar varchar varchar varchar varchar varchar 付款方式 交货地址 运输方式 联系人 联系varchar varchar varchar varchar varchar varchar部门代号 部门名称 业务员号 业务员名varchar varchar varchar varchar表 1-2 销售单物料明细表序号 销售单号 产品代号 产品名称 单位varchar varchar varchar varchar varchar订购量 需求日期 承诺日期 无税定价 税率varchar varchar varchar varchar varchar含税定价 报价金额 折扣率 折扣金额 已出量varchar varchar varchar varchar varchar- 3 -表 1-3 销售单付款约定表序号 销售单号 预定时间 百分比 金额 备注varchar varchar varchar varchar varchar varchar2.3 数据库逻辑结构设计和实现2. 2. 1 建立数据库:根据数据库需求分析中的表 1-1,表 1-2,表 1-3 三张表的内容和数据类型要求的数据项在 SQLServer 2000 中建立数据库“销售信息子系统” ,然后建立如图1-1,图 1-2,图 1-3 所示的三张表,表中所有字段为 varchar 类型。
结果如下:图 2-1 销售单基本项目表图 2-2 销售单物料明细表图 2-3 销售单付款约定表2. 2. 2 建立关系图:按照数据库中各表主外键约束关系,建产 E-R 图,如下:- 4 -图 2-4 销售信息关系图- 5 -第三章 功能模块的建立3.1 生成程序框架3. 1. 1 生成单文档程序框架从 VC++6.0 的文件菜单选择新建,然后,单击对话框中的工程选项卡确认选中了MFCAppWizard(exe) ,输入工程名称和工程文件的位置后单击确定按钮确认选中了单个文档选项接受下面四个屏幕的默认设置 确认将 BaseClass 改为 CFromView,点击完成后,在随后出项的对话框中点击确定3. 1. 2 为了实现窗口的分割必须创建一个基于 CView 的视图类插入菜单选择新建类,出现新建类对话框,确认 Base Class 选择了 CView 点击 OK 按钮完成 CLeftTreeView 类的创建3. 1. 3 切分窗口(将主窗口切分成左右两个视图 )在 CMainFrame 类中添加变量 CSplitterWnd m_wndSplitter;//实现切分窗口类通过建立类向导,分别在 classname 和 ObjectIDs 栏中选择 CMainFrame,在 Messages 栏中选择 OnCreateClient, 点击 AddFunction 按钮。
完成添加 OnCreateClient 函数在 OnCreateClient 中添加如下代码:BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext) {if(!m_wndSplitter.CreateStatic(this,1,2)) return 0;if(!m_wndSplitter.CreateView(0,0,RUNTIME_CLASS(CLeftTreeView),CSize(180,100),NULL)) return 0;if(!m_wndSplitter.CreateView(0,1,RUNTIME_CLASS(CPersonnelView),CSize(50,100),NULL)) return 0;return 1;//CFrameWnd::OnCreateClient(lpcs, pContext);}删除 CPersonnelView 中的 CSaleDoc* GetDocument();函数在 CMainFrame 类的.cpp 中开始位置包含类 CLeftTreeView 和 CPersonnelView 的头文件#inlude ” LeftTreeView.h”、 #inlude”Personnel View.h”3.2 树控件(CTreeCtrl)的使用3. 2. 1 创建树控件函数,virtual BOOL Create( DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID)3. 2. 2 添加树中的节点HTREEITEM ParentItem=m_tree.InsertItem("销售子系统信息",1,0); HTREEITEM sonIte。






![河南新冠肺炎文件-豫建科[2020]63号+豫建科〔2019〕282号](http://img.jinchutou.com/static_www/Images/s.gif)





