还剩25页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
数据库课程设计报告书计算机学院06级
一、概述
1、项目背景数据库原理课程设计
2、编写目的掌握数据库设计原理及相关软件的使用
3、软件定义公司贸易管理系统
4、开发环境WINXP-SP2MicrosoftSQLServer2000MicrosoftVisualC++
6.0
二、需求分析
1、问题的提出企业对外的信息管理,即贸易管理,属于“开源”的手段,对于一个成熟的企业来说,不但要做到节流,更要做到开源,这才是发展的根本开发一个良好的贸易管理系统能充分体现公司在贸易活动整个过程中的关键流程要求除了拥有基本的“用户管理”之外,对供货商、合同方以及自身的要求都提供友好的设定界面,并且依据历史信息提供方便的查询功能要求应用该系统可以有效地提高贸易活动的效率,减少成本,积累经验,让企业的管理工作更加快捷和精确
2、需完成的功能1进入系统前需要身份验证,待用户名、密码,输入正确后方可进入2用户可以定义及编辑自身产品信息3用户可以定义及编辑供货商信息4用户可以定义及编辑销售商信息5用户可以定义及编辑顾客信息
三、数据表通过对系统功能的分析,客户关系管理系统需要包含以下数据库信息1用户信息包括用户ID和密码2顾客信息因为本系统为企业级的管理系统,它对应的顾客都是公司,所以这里的信息包括公司名称、联系人姓名、地址、城市、地区、邮政编码、电话号码、传真号、公司主页和备忘录3供应商信息因为本系统为企业级的管理系统,它对应的供应商都是公司,所以这里的信息包括公司名称、联系人姓名、地址、城市、地区、邮政编码、电话号码、传真号、公司主页和备忘录4产品信息包括的内容有产品名称、产品规格、计量单位及产品备注5销售订单包括的内容是顾客姓名、产品名称、产品规格、计量单位、数量、单价、订单日期、折扣、订单备注等6进货信息涵盖的内容包括供货商姓名、产品名称、产品规格、计量单位、数量、单价、日期及备注具体数据表如下所示1用户信息表用户信息表user_info包含了系统中用户的信息,包括用户名、密码和用户描述3部分,其结构如表9-1所示表9-1用户信息表字段名称数据类型可否为空约束条件说明User_IDVARCHAR15NOTNULL主键成员IDUser_PWDVARCHAR10NULL无用户密码User_DesVARCHAR10NULL无用户描述2顾客信息表顾客信息表customers包含了公司活动中所有商品购买者的信息,其结构如表9-2所示表9-2顾客信息表字段名称数据类型可否为空约束条件说明IDIntNOTNULL主键顾客IDCompanyNameVARCHAR40NOTNULL主键客户公司名称ContactNameVARCHAR30NULL无客户联系人AddressVARCHAR60NULL无客户地址CityVARCHAR15NULL无客户所在城市RegionVARCHAR15NULL无客户所在地区PostalCodeVARCHAR10NULL无邮政编码PhoneVARCHAR24NULL无电话号码FaxVARCHAR20NULL无传真号码HomepageVARCHAR50NULL无公司主页CustomerMemoVARCHAR16NULL无顾客备注3供货商信息表供货商信息表supplier包含了公司活动中所有供货商的信息,其结构如表9-3所示表9-3供货商信息表字段名称数据类型可否为空约束条件说明IDintNOTNULL主键顾客IDCompanyNameVARCHAR40NOTNULL主键供货商公司名称ContactNameVARCHAR30NULL无供货商联系人AddressVARCHAR60NULL无供货商地址CityVARCHAR15NULL无供货商所在城市续表字段名称数据类型可否为空约束条件说明RegionVARCHAR15NULL无供货商所在地区PostalCodeVARCHAR10NULL无邮政编码PhoneVARCHAR24NULL无电话号码FaxVARCHAR20NULL无传真号码HomepageVARCHAR50NULL无公司主页SupplierMemoVARCHAR16NULL无供货商备注4产品信息表产品信息表product存储了公司所有代理产品的基本信息,其结构如表9-4所示表9-4用户信息表字段名称数据类型可否为空约束条件说明ProductNameVARCHAR40NOTNULL主键产品名称SpecVARCHAR20NULL无产品规格unitVARCHAR20NULL无计量单位Productmemotext160NULL无产品备注5销售订单信息表销售订单信息表order存储了公司和客户之间的销售记录,是公司业务数字化的产物,其结构如表9-5所示表9-5销售订单信息表字段名称数据类型可否为空约束条件说明IDintNOTNULL主键订单IDCustomerNameVARCHAR40NOTNULL主键客户公司名称ProductNameVARCHAR40NOTNULL主键产品名称SpecVARCHAR20NULL无产品规格UnitVARCHAR20NULL无计量单位QuantityVARCHAR20NULL无销售数量UnitPriceFLOATNULL无产品单价OrderDateDATETIMENULL无订单日期DiscountFLOATNULL无折扣OrdermemoTEXT160NULL无订单备注6进货信息表进货信息表sstock存储了公司关于产品买入的交易信息,可以作为公司库存的凭证,其结构如表9-6所示表9-6进货信息表字段名称数据类型可否为空约束条件说明IDintNOTNULL主键进货信息IDProviderNameVARCHAR40NOTNULL主键供货商公司名称ProductNameVARCHAR40NOTNULL主键产品名称SpecVARCHAR20NULL无产品规格UnitVARCHAR20NULL无计量单位QuantityVARCHAR20NULL无销售数量UnitPriceFLOATNULL无产品单价OrderDateDATETIMENULL无进货日期OrdermemoTEXT160NULL无订单备注
四、数据库代码--创建表customersCREATETABLE[dbo].[customers][CompanyName][varchar]40COLLATEChinese_PRC_CI_ASNOTNULL[ContactName][varchar]30COLLATEChinese_PRC_CI_ASNULL[Address][varchar]60COLLATEChinese_PRC_CI_ASNULL[City][varchar]15COLLATEChinese_PRC_CI_ASNULL[Region][varchar]15COLLATEChinese_PRC_CI_ASNULL[PostalCode][varchar]10COLLATEChinese_PRC_CI_ASNULL[Phone][varchar]24COLLATEChinese_PRC_CI_ASNULL[Fax][varchar]24COLLATEChinese_PRC_CI_ASNULL[Homepage][varchar]50COLLATEChinese_PRC_CI_ASNULL[CustomerMemo][text]COLLATEChinese_PRC_CI_ASNULL[ID][int]IDENTITY11NOTNULLON[PRIMARY]TEXTIMAGE_ON[PRIMARY]GO--创建表ordersCREATETABLE[dbo].[orders][CustomerName][varchar]40COLLATEChinese_PRC_CI_ASNOTNULL[ProductName][varchar]40COLLATEChinese_PRC_CI_ASNOTNULL[Spec][varchar]20COLLATEChinese_PRC_CI_ASNULL[Unit][varchar]20COLLATEChinese_PRC_CI_ASNULL[Quantity][varchar]20COLLATEChinese_PRC_CI_ASNULL[UnitPrice][float]NULL[OrderDate][datetime]NULL[Discount][float]NULL[Ordermemo][text]COLLATEChinese_PRC_CI_ASNULL[ID][int]IDENTITY11NOTNULLON[PRIMARY]TEXTIMAGE_ON[PRIMARY]GO--创建表productsCREATETABLE[dbo].[products][ProductName][varchar]40COLLATEChinese_PRC_CI_ASNOTNULL[Spec][varchar]20COLLATEChinese_PRC_CI_ASNULL[Unit][varchar]20COLLATEChinese_PRC_CI_ASNULL[Productmemo][text]COLLATEChinese_PRC_CI_ASNULL[ID][int]IDENTITY11NOTNULLON[PRIMARY]TEXTIMAGE_ON[PRIMARY]GO--创建表sstockCREATETABLE[dbo].[sstock][ProviderName][varchar]40COLLATEChinese_PRC_CI_ASNOTNULL[ProductName][varchar]40COLLATEChinese_PRC_CI_ASNOTNULL[Spec][varchar]20COLLATEChinese_PRC_CI_ASNULL[Unit][varchar]20COLLATEChinese_PRC_CI_ASNULL[Quantity][varchar]20COLLATEChinese_PRC_CI_ASNULL[UnitPrice][float]NULL[OrderDate][datetime]NULL[Ordermemo][text]COLLATEChinese_PRC_CI_ASNULL[ID][int]IDENTITY11NOTNULLON[PRIMARY]TEXTIMAGE_ON[PRIMARY]GO--创建表suppliersCREATETABLE[dbo].[suppliers][CompanyName][varchar]40COLLATEChinese_PRC_CI_ASNOTNULL[ContactName][varchar]30COLLATEChinese_PRC_CI_ASNULL[Address][varchar]60COLLATEChinese_PRC_CI_ASNULL[City][varchar]15COLLATEChinese_PRC_CI_ASNULL[Region][varchar]15COLLATEChinese_PRC_CI_ASNULL[PostalCode][varchar]6COLLATEChinese_PRC_CI_ASNULL[Phone][varchar]24COLLATEChinese_PRC_CI_ASNULL[Fax][varchar]24COLLATEChinese_PRC_CI_ASNULL[HomePage][varchar]50COLLATEChinese_PRC_CI_ASNULL[SupplierMemo][text]COLLATEChinese_PRC_CI_ASNULL[ID][int]IDENTITY11NOTNULLON[PRIMARY]TEXTIMAGE_ON[PRIMARY]GO--创建表user_infoCREATETABLE[dbo].[user_Info][user_ID][varchar]15COLLATEChinese_PRC_CI_ASNOTNULL[user_PWD][varchar]10COLLATEChinese_PRC_CI_ASNULL[user_Des][varchar]10COLLATEChinese_PRC_CI_ASNULLON[PRIMARY]GO--初始化系统用户INSERTuser_Infouser_IDuser_PWDVALUESadminadminGO
五、建立数据库的详细过程记录请按照下面的步骤来建立数据库,否则可能会出现程序无法连接数据库的情况
1、创建新用户控制面板-管理工具-计算机管理,点左边的“本地用户和组”,创建一个新的用户dbaccess密码是sa(创建该用户主要是方便本程序的测试,可以不用修改代码,并可以按照后续的步骤来正常测试程序,如果不想建立新用户,可以直接修改Trade_MIS.cpp的代码,相关代码是ADOConn-OpenDSN=Trade;Provider=MSDASQLdbaccesssaadConnectUnspecified;),如下图所示
2、赋予该用户管理员的权限右键点dbaccess,选“属性”,“隶属于”,点左下角的“添加”,在弹出的“选择组”的窗口中,点左下角的“高级”,在弹出的窗口中点“立即查找”,选中“Adminstrators”,点“确定”,如下图所示退回上级窗口后,点“确定”如下图所示点“确定”退出对话框
3、创建数据库打开MSSQLServer2000的“企业管理器”,创建一个名为“trade”的数据库如下图所示然后点“工具”-“SQLServer属性配置”,身份验证一栏选择“SQLServer和windows”,如下图所示
4、授予dbaccess权限点trade数据库的“用户”,添加新的用户,并授予相应的权限,如下所示
5、打开SQLServer2000的“查询分析器”,复制上面第四部分的“数据库代码”到查询代码框(注意数据库要选“trade”),如下图所示
6、创建数据源打开“控制面板”-“管理工具”-运行“数据源ODBC”,点“添加”,在弹出的窗口中拖动滚动条到最下面,选择“SQLServer”,点“完成”,弹出新窗口填写相关的信息,如下图所示
7、至些,数据库的相关操作已完成,下面就要开始程序的编写了
六、系统的功能分析
1、系统的功能模块根据上面的功能要求,列出功能模块1用户管理是系统的重要组成部分,在这个系统中,该部分主要包含了登录验证、修改密码和添加用户3个功能2供应商信息管理即供应商信息的添加、删除、修改、查询,其中供应商信息包括的内容有公司名称、联系人姓名、联系地址、城市名称、地区名称、邮政编码、联系电话、传真号码、公司主页3顾客信息管理即顾客信息的添加、删除、修改、查询,具体内容与供应商信息类似,这里不再复述4进货信息管理即进货信息的添加、删除、修改、查询,包括的内容有进货活动的数量、单价、日期以及备注信息5销售信息管理与进货信息类似,不同的是在销售信息里有折扣这一选项6产品信息管理包括产品信息的添加、设定和删除,其内容主要有名称、规格、计量单位等信息划分出如下图所示的功能模块图
2、系统的使用流程图
7、程序设计及其代码运行VisualC++
6.0,选择“File”|“new”命令,打开“new”对话框,从“Projects”列表中选择MFCAppWizardexe向导,在“Location”文本框中选择项目工程的目录E:\Trade_MIS\,在“Projectname”文本框中输入工程文件的名称Trade_MIS,如下图所示点击“DataSource”,选择数据源如下图所示退回原窗口后点“finish”就行了可以双击更改属性及变量名,最终改为修改Trade_MIS.cpp,加上数据库连接的相关代码连接数据库时采用ADO方式,这种方式连接数据库需要两个步骤,首先要产生一个ADOConn的实例,然后通过这个实例来打开具体的数据源代码如下BBOOLCTrade_MISApp::InitInstance{AfxEnableControlContainer;//初始化登录数量m_iLoginCount=0;//创建ADO连接ifFAILED::CoInitializeNULL{AfxMessageBoxADOInitfailed;returnfalse;}try{ADOConn.CreateInstance__uuidofConnection;ADOConn-OpenDSN=Trade;Provider=MSDASQLdbaccesssaadConnectUnspecified;}//异常处理catch_com_errore{CStringerr;err.Format%schar*e.Description;AfxMessageBoxerr;}catch...{AfxMessageBoxUnknownError...;}//初始化ADORecordSetm_pADOSet.CreateInstance__uuidofRecordset;SetRegistryKey_TLocalAppWizard-GeneratedApplications;LoadStdProfileSettings;//读入INI配置文件//弹出登录对话窗CLoginDLGdlg;ifIDOK!=dlg.DoModalreturnfalse;CSingleDocTemplate*pDocTemplate;pDocTemplate=newCSingleDocTemplateIDR_MAINFRAMERUNTIME_CLASSCTrade_MISDocRUNTIME_CLASSCMainFrame//主窗口框架RUNTIME_CLASSCTrade_MISView;AddDocTemplatepDocTemplate;m_nCmdShow=SW_SHOWMAXIMIZED;//最大的窗口尺寸//传入命令行参数CCommandLineInfocmdInfo;ParseCommandLinecmdInfo;//处理命令行参数if!ProcessShellCommandcmdInforeturnFALSE;//唯一的窗口初始化,并显示m_pMainWnd-ShowWindowSW_SHOW;m_pMainWnd-SetWindowText_T贸易管理信息系统;m_pMainWnd-UpdateWindow;returnTRUE;}该函数首先对记录用户登录次数的变量清零,然后用上面介绍的方法获得一个数据源的ADO连接,接着打开登录对话框如果成功登录,设置主界面的信息并显示,如果失败则返回其余窗口的设计分别如下所示(代码可以过长这里不提供了,可以去看src文件夹)
八、系统程序使用测试运行SRC/DEBUG/Trade_MIS.exe,运行后的登录界面下图所示输入用户名及密码admin/admin(这个是管理员帐号,只有这个帐号才能使用“添加用户”的命令,如果想添删改管理员帐号,可以编辑MainFrm.cpp,在页面的最下面有“pCmdUI-EnabletheApp.m_sCurrentUser==admin;//设置管理员帐号”),进入系统界面如下图所示
1、添加用户
1、测试客户信息管理选择“客户信息管理”|“供应商信息管理”|“修改供应商信息”命令,可以更改供应商的信息,如下图所示供应商的信息查询测试
2、测试产品管理信息
3、测试营销信息管理
4、其余功能就不一一测试了基本上是很容易试验的
九、总结 通过这次数据库的课程大设计,让我意识到学习真是永无止境,原以为对C++已算熟悉了,在这次编程过程中还是发现了很多问题首先就是第一次接触MFC界面,一连几天几夜都在网上找资料来学习如何使用(晚上断网好惨……),现在也只能说是粗通皮毛,VC++的确是一个非常了不起的程序,越使用得多就越对其功能的强大感到惊叹这次的程序设计也让我学到了很多东西,比如把程序与数据库进行连接原来尝试过ASP+SQLSERVER,PHP+MYSQL,Delphi+SQLSERVER,还有JAVA+SQLSERVER,均在开始没多久就遇到了困难,后来决定用VC++结合SQLSERVER进行程序设计时就咬着牙,把遇到的困难一个个地解决了果然畏难不前,浅尝辄止是很浪费时间的真的很感谢这次课程设计,让我学到了很多东西,不止是书本上的,也能让我学以致用。