《数据库系统原理》课程设计报告-----平面设计公司业务经管系统姓名:学号:指导教师:起始时间:截止时间:目录概述1第一章需求分析2§1.1信息要求2第二章结构设计4§2.1概念结构设计4§2.2逻辑结构设计6第三章主要模块设计及代码7§3.1数据库连接模块7§3.2认证登录模块9§3.3查询显示模块9§3.4添加,修改,删除模块12第四章归纳总结13第五章参考文献14概述编写目的本报告作为软件使用的重要指南,可以方便用户使用。
同时,也是一份重要的技术文档,方便开发人员继续完善各项功能,更新软件。
为了更好地经管平面设计公司的各项工作,撰写此文档。
工程背景订单经管是每所公司或工厂必须面对的工作,大量的订单经管给企业带来了沉重的负担。
传统人手方式经管文件档案,已经无法满足当前业务量的正常需求。
这种经管方式存在许多缺点:效率低,保密性差,另外随着进货数量的增加,这必然增加了订单经管者的工作量和劳动强度。
同时,将产生大量的文件和数据,这给订单信息的查找,更新和维护都带来了不少困难。
经管机制已经不能适应时代发展的需求,其经管方法将浪费人力物力。
随着科技的不断提高,计算机科学与技术日渐成熟,这种传统的手工经管模式必然被以计算机为物质基础的信息经管方式所取代。
软件定义图形化界面:人性化的界面,方便了员工的使用,对操作员技术要求不高。
数据存取:系统地保存数据,可以加快数据处理,提高工作量。
可以同时进行多人对数据的操作,保证数据存取不出错。
开发环境在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 CADOConn::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 hereUpdateData()。
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 herecn.ADOConn()。
//连接数据库Display()。
//设置列表框控件的扩展风格//整行选择/有表格线/表头/单击激活DWORDdwExStyle=LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES|LVS_EX_HEADERDRAGD ROP|LVS_EX_ONECLICKACTIV A TE。
//报表风格/单行选择/高亮显示选择行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)。