《数据库系统原理》课程设计——平面设计公司业务管理系统

更新时间:2023-09-03 06:21:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

数据库系统设计

《数据库系统原理》课程设计报告

-----平面设计公司业务管理系统

姓 名:

学 号:

指导教师:

起始时间:

截止时间:

数据库系统设计

目录

概述 ................................................................................................................................................... 2 第一章 需求分析 ........................................................................................................................... 3 §1.1信息要求 ...................................................................................................................................... 3 第二章 结构设计 ........................................................................................................................... 4 §2.1概念结构设计 .............................................................................................................................. 4 §2.2逻辑结构设计 .............................................................................................................................. 6 第三章 主要模块设计及代码 ........................................................................................................ 7 §3.1数据库连接模块 .......................................................................................................................... 7 §3.2认证登录模块 .............................................................................................................................. 9 §3.3查询显示模块 .............................................................................................................................. 9 §3.4添加,修改,删除模块 ............................................................................................................ 12 第四章 总结 ................................................................................................................................. 14 第五章 参考文献 ......................................................................................................................... 15

数据库系统设计

概述

编写目的

本报告作为软件使用的重要指南,可以方便用户使用。同时,也是一份重要的技术文档,方便开发人员继续完善各项功能,更新软件。为了更好地管理平面设计公司的各项工作,撰写此文档。

项目背景

订单管理是每所公司或工厂必须面对的工作,大量的订单管理给企业带来了沉重的负担。传统人手方式管理文件档案,已经无法满足当前业务量的正常需求。这种管理方式存在许多缺点:效率低,保密性差,另外随着进货数量的增加,这必然增加了订单管理者的工作量和劳动强度。同时,将产生大量的文件和数据,这给订单信息的查找,更新和维护都带来了不少困难。管理机制已经不能适应时代发展的需求,其管理方法将浪费人力物力。随着科技的不断提高,计算机科学与技术日渐成熟,这种传统的手工管理模式必然被以计算机为物质基础的信息管理方式所取代。

软件定义

图形化界面:人性化的界面,方便了员工的使用,对操作员技术要求不高。

数据存取:系统地保存数据,可以加快数据处理,提高工作量。可以同时进行多人对数据的操作,保证数据存取不出错。

开发环境

在Windows XP SP3 操作系统下,使用Visual C++进行开发。数据存取使用SQL Server 2000平台。

数据库系统设计

第一章 需求分析

§1.1信息要求

通过软件,可以查看,添加,保存,修改,删除各种业务信息。如登录账户的信息,员工的信息,客户的信息,订单信息,送货单信息,历史单信息。

§1.2处理要求

软件要灵活实现各种管理功能间的切换,减少麻烦的操作。对于数据的修改,保证不会出错,确保数据的正确性。在必要的地方,给予一定的提示,以防止误操作导致的数据异常。

数据库系统设计

图 1.1 功能模块图

§1.3安全性与完整性要求

登录安全:采用用户名,密码方式登录系统。不同职工具有的使用权限不同,管理员拥有最高权限。其他员工根据职务需要规定所需权限。

完整性要求:对于一些必须的信息,不能留空值。如编号,名称,日期等信息

第二章 结构设计

§2.1概念结构设计

各实体E-R图:

图 2.2

数据库系统设计

图 2.4

图 2.5

图 2.6

数据库系统设计

§2.2逻辑结构设计

图2.7 实体联系图

图2.7 数据关系表

数据库系统设计

第三章 主要模块设计及代码

§3.1数据库连接模块

为连接模块独自建立一个类,方便每次访问数据库时可以调用。类命名为ADOConn。采用ADO技术实现程序与数据库的连接。

用#import语句来引用支持ADO的组件类型库(*.tlb),其中类型库可以作为可执行程序(DLL、EXE等)的一部分被定位在其自身程序中的附属资源里,如:被定位在msado15.dll的附属资源中,只需要直接用#import引用它既可。直接在Stdafx.h文件中加入下面语句来实现:

#import "c:\programfiles\commonfiles\system\ado\msado15.dll" no_namespace

rename ("EOF", "adoEOF") //实际上两行代码是在同一行显示,由于排版原因,分行显示//

以下为ADOConn类里重要成员函数的代码: //////////////////////////////////////////////////////////////////////////// //函数名称:ADOConn //功能:初始化COM环境

///////////////////////////////////////////////////////////////////////////// void C ADOConn::ADOConn() { ::CoInitialize(NULL); try { pConn.CreateInstance("ADODB.Connection"); // 创建Connection对象 //设置字符连接字符串,必须是BSTR型或者_bstr_t类型 _bstr_t strConnect="Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;User ID=sa;Initial Catalog=DsnCompany;Data Source=BEN-PC;"; //连接数据库的代码语句 pConn->Open(strConnect,"","",adConnectUnspecified);

数据库系统设计

} catch(_com_error e) //捕捉异常信息 { AfxMessageBox(e.ErrorMessage()); } }

//////////////////////////////////////////////////////////////////////////// //名称:OpenRecordset //功能:打开记录集

/////////////////////////////////////////////////////////////////////////////

_RecordsetPtr& CDataSource::OpenRecordset(CString sql) { ASSERT(!sql.IsEmpty()); //判断是否为空集 try { pRs.CreateInstance("ADODB.Recordset"); // 创建Recordset对象

pRs->Open(_bstr_t(sql),_variant_t(pConn,true),adOpenStatic,adLockOptimistic,adCmdText); } catch(_com_error e) { AfxMessageBox(e.ErrorMessage()); } return pRs; }

void CADOConn::FreeData() //释放空间 { if(pConn) { pConn->Close(); pRs.Release(); pConn.Release(); CoUninitialize(); } }

数据库系统设计

§3.2认证登录模块

void CGraphicDsnDlg::OnOK() //确定按钮事件 {

// TODO: Add extra validation here UpdateData(); CMainMngDlg dlg;

CString sql="select * from LogUser where UserName="+m_strUsername+" and PassWord='"+m_strPassword+"' ";

a.pRs=a.OpenRecordset(sql);//将记录加入到记录集

int n=a.pRs->RecordCount; //计算符合条目 if (n>0) {

CDialog::OnOK(); //登陆成功

dlg.DoModal(); } else {

::AfxMessageBox("用户名或密码不正确!"); //登陆失败 return; } }

§3.3查询显示模块

BOOL CTickets::OnInitDialog() //订单管理类初始化函数 { CDialog::OnInitDialog(); // TODO: Add extra initialization here

数据库系统设计

cn.ADOConn(); //连接数据库 Display();

//设置列表框控件的扩展风格 //整行选择/有表格线/表头/单击激活 DWORD

dwExStyle=LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES|LVS_EX_HEADERDRAGDROP|LVS_EX_ONECLICKACTIVATE; //报表风格/单行选择/高亮显示选择行 m_List.ModifyStyle(0,LVS_REPORT|LVS_SINGLESEL|LVS_SHOWSELALWAYS); m_List.SetExtendedStyle(dwExStyle); //设置列表框控件的颜色 // m_List.SetTextColor(RGB(200,200,0)); // m_List.SetBkColor(RGB(240,247,233)); //初始化列表,插入11列 m_ListDoc.InsertColumn(0,"",LVCFMT_CENTER,0,0); m_ListDoc.InsertColumn(1,"稿件名称",LVCFMT_CENTER,120,0); m_ListDoc.InsertColumn(2,"长度*宽度",LVCFMT_CENTER,90,0); m_ListDoc.InsertColumn(3,"规格",LVCFMT_CENTER,65,0); m_ListDoc.InsertColumn(4,"色数",LVCFMT_CENTER,65,0); m_ListDoc.InsertColumn(5,"规格",LVCFMT_CENTER,65,0); m_ListDoc.InsertColumn(7,"输出机型",LVCFMT_CENTER,90,0); m_ListDoc.InsertColumn(8,"页数",LVCFMT_CENTER,65,0); m_ListDoc.InsertColumn(9,"单价",LVCFMT_CENTER,70,0); m_ListDoc.InsertColumn(10,"小计",LVCFMT_CENTER,80,0); m_ListDoc.InsertColumn(11,"客户名称",LVCFMT_CENTER,137,0); return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE }

void CTicketsMngDlg::Show() //输出单据信息到列表控件框 { CString DocName; int index=m_oddno.GetCurSel(); if (index==CB_ERR) { AfxMessageBox(_T("出错!")); return; } m_oddno.GetLBText(index,coursename);

数据库系统设计

CString s="select * from Documents where DocName='"+DocName+"'"; a.pRs=a.OpenRecordset(s); //把数据加到记录集 UpdateData(); CString sql="select * from Documents where CustomerName='"+CustomerName+"'"; a.pRs=a.OpenRecordset(sql); //打开数据到记录集 _variant_t

DocNo,DocName,Length,Format,Color,OutputMacMac,Pagess,Price,,CustomerName; //定义列表名变量 int i=0; a.pRs=a.OpenRecordset(s); int nIndex=m_List.GetItemCount(); LV_ITEM lvItem; lvItem.mask=LVIF_TEXT; lvItem.iItem=nIndex; lvItem.iSubItem=0; //第nIndex行 lvItem.pszText=(char*)(LPCTSTR)DocName1; //第一列参数 for (a.pRs->MoveFirst();!a.pRs->adoEOF;a.pRs->MoveNext()) { m_List.InsertItem(&lvItem); DocName=a.pRs->GetCollect("DocName"); //取数据 Length=a.pRs->GetCollect("Length"); Format=a.pRs->GetCollect("Format"); Color=a.pRs->GetCollect("Color"); Pages=a.pRs->GetCollect("Pages"); Price=a.pRs->GetCollect("Price"); Subtotal=a.pRs->GetCollect("Subtotal"); Color=a.pRs->GetCollect("Color"); design=a.pRs->GetCollect("design"); CustomerName=a.pRs->GetCollect("CustomerName"); OutputMac=a.pRs->GetCollect("OutputMac"); DocName.ChangeType(VT_BSTR); //改变类型 Length.ChangeType(VT_BSTR);

数据库系统设计

}

}

Color.ChangeType(VT_BSTR); Pages.ChangeType(VT_BSTR); Price.ChangeType(VT_BSTR); Subtotal.ChangeType(VT_BSTR); Color.ChangeType(VT_BSTR);

CustomerName.ChangeType(VT_BSTR); OutputMac.ChangeType(VT_BSTR);

DocName=DocName.bstrVal; //调用bstrval Length=Length.bstrVal; Format=Format.bstrVal; Color=Color.bstrVal;

OutputMac1=OutputMac.bstrVal; Pages=Pages.bstrVal; Price=Price.bstrVal; Color=Color.bstrVal;

CustomerName=CustomerName.bstrVal;

§3.4添加,修改,删除模块:

// 打开修改订单

void CTicketsManDlg::OnItemmanButton() { // TODO: Add your control notification handler code here UpdateData(TRUE); if (m_Adodc.GetRecordset().GetEof()) { MessageBox("请选择要修改的订单"); return; } // 设置ListItemManDlg对话框中的变量 CListItemManDlg dlg; dlg.cRegId = m_Datagrid.GetItem(0); // 打开ListItemManDlg对话框 if (dlg.DoModal() == IDOK) RefreshData(); else RefreshData();

数据库系统设计

//删除订单

void CTicketsManDlg::OnDelButton() { // TODO: Add your control notification handler code here UpdateData(TRUE); if (m_Adodc.GetRecordset().GetEof()) { MessageBox("请选择要删除的订单!"); return; } if (MessageBox("是否删除当前记录?","请确认", MB_YESNO + MB_ICONQUESTION) == IDYES) { CTickets reg; reg.SqlDelete(m_Datagrid.GetItem(0)); RefreshData(); } }

数据库系统设计

第四章 总结

通过本次设计,初步掌握了通过Visual C++ 中的MFC功能实现程序的开发。Visual C++提供了大量的控件功能,方便初学者设计程序。阅读了大量的C++编程的相关书籍,对这次设计起到了很大的帮助。尤其是C++语言不熟悉的地方,通过阅读,加深了理解。对于面向对象编程有了更深切的理解。模块化的代码,增加了程序的可移植性。

熟悉了程序通过API来与SQL数据库连接的代码。多种数据库连接技术各有各的优缺点。对于初学者,ADO技术相对简单一点,因为查询语句是可以直接通过函数使用的。这对于熟悉数据库操作的人是很方便的。

在本次试验中,也遇到了各种各样的问题:

由于MFC编程是通过控件的方法生成类代码,所以一个类添加完后,不能继续对其重命名,相关的变量,函数名的改变,将很容易使程序出错。导致编译无法通过,排解问题比较困难。

所以,无论是对数据库的设计,还是程序的设计,都需要先做全局考虑以减少不必要的出错。

在这一点看了,需求分析就显得很重要。它直接明确了设计的目标,要求,使得设计进度大大加快。

由于个人经验跟技术的不足,在开发的过程中遇到困难是很正常的。鉴于此原因,必须要对某些问题进行讨论,或请教别人。有时,请教别人的效率很高的,如果自己苦苦地看书,也不一定能完全解决问题。要勇于提问,积极交流,才能做出好的程序。

数据库系统设计

第五章 参考文献

《程序设计基础—C++》

《数据库系统概论》

《Visual C++ 权威剖析》

《Visual C++ 数据库通用模块》

《Visual C++ SQLServer应用实例》

本文来源:https://www.bwwdw.com/article/w1ri.html

Top