数据库课程设计报告(仓库管理系统)
三 概要设计
3.1
E—R 图和相关说明
类别(类别编号,类别名称,上级类别)
仓库(仓库编号,隶属单位,备注)
用户(用户名,密码,权限类型);
客户(客户编号,联系人,单位,联系电话,传真,通信地址,邮政编码)
产品(编号,名称,规格,计算单位,参考价格,数量下限,数量下限,有效期,警告
出库(出库类型,产品类型,单价,数量,总价格,客户单位,出库仓库,经办用户,出库日
期)
入库(入库类型,产品名称,生产日期,单价,数量,总价格,客户单位,入库仓库,经办用
户,入库日期)
库存(产品入库单价,库存数量,生产日期)
四 逻辑设计
(一)、表的定义如下 :
Client 表(客户信息表)
Product(产品信息表)
ProinStore(库存信息表)
Takeout(出库表)
StoreIn(入库表)
Users(用户表)
ProType(产品类型表)
Storehouse(仓库信息表)
(二)、视图定义如下:
一、report2(报表视图)
Report2
CREATE VIEW
AS
SELECT SiType, Pid, Pprice, Pnum, (Pprice * Pnum) As Amount,
Cid, Sid, EmpName, OptDate FROM StoreIn
UNION
SELECT Ttype, Pid, Pprice, Pnum, (Pprice * Pnum) As Amount, Cid, Sid,
EmpName, OptDate FROM TakeOut
二、 库存统计视图
CREATE VIEW
AS
SELECT dbo.ProInStore.Pid, SUM(dbo.ProInStore.Pnum) AS Total
FROM dbo.ProInStore INNER JOIN
Total_Num
dbo.Product ON dbo.ProInStore.Pid = dbo.Product.Pid
GROUP BY dbo.ProInStore.Pid
三、库存视图
CREATE VIEW dbo.v_ProInStore
AS
SELECT p.Pid, SUM(s.Pnum) AS SumNum
FROM dbo.Product p INNER JOIN
dbo.ProInStore s ON p.Pid = s.Pid
GROUP BY p.Pid
四、入库视图
CREATE VIEW dbo.v_storein
AS
SELECT p.Pid, SUM(i.Pnum) AS SumNum, SUM(i.Pnum * i.Pprice)
AS SumPrice
FROM dbo.Product p INNER JOIN
dbo.StoreIn i ON p.Pid = i.Pid
GROUP BY p.Pid
五、出库视图
CREATE VIEW dbo.v_takeout
AS
SELECT p.Pid, SUM(t.Pnum) AS SumNum, SUM(t.Pnum * t.Pprice)
AS SumPrice
FROM dbo.Product p INNER JOIN
dbo.TakeOut t ON p.Pid = t.Pid
GROUP BY p.Pid
六、失效期统计视图
CREATE VIEW dbo.Valid
AS
SELECT dbo.ProInStore.SpId AS 库存记录编号, dbo.Product.Pname AS 产
品名称,
dbo.ProInStore.Pprice AS 产品价格, dbo.ProInStore.Pnum AS 产
品数量,
dbo.ProInStore.MakeDate AS 生产日期, dbo.Storehouse.Sname AS
仓库名称,
ROUND(DATEDIFF(day, DATEADD(day, dbo.Product.Valid,
dbo.ProInStore.MakeDate),
GETDATE()), 0) AS 距离失效期的天数
FROM dbo.ProInStore INNER JOIN
dbo.Product ON dbo.ProInStore.Pid = dbo.Product.Pid AND
DATEDIFF(day,
GETDATE(), dbo.ProInStore.MakeDate)
>= dbo.Product.Valid - dbo.Product.AlarmDays INNER JOIN
dbo.Storehouse ON dbo.ProInStore.Sid = dbo.Storehouse.Sid
五 详细设计
总体模块设计如下:
模块一(基本信息管理)(由本人完成)
准备工作:
一完成对数据库连接和操作的类
#import "c:\Program Files\Common Files\System\ado\msado15.dll"
no_namespace
rename("EOF","adoEOF") rename("BOF","adoBOF")
class ADOConn
{// 定义变量
public:
_variant_t
void ExitConnect();
void Backup();
void Restore();//恢复数据库};
//备份数据库
一、用户登陆:
_ConnectionPtr m_pConnection; //添加一个指向 Connection 对象的指针:
_RecordsetPtr m_pRecordset; //添加一个指向 Recordset 对象的指针:
public: // 定义方法
ADOConn();
virtual ~ADOConn();// 初始化—连接数据库
void OnInitADOConn();
_RecordsetPtr& GetRecordSet(_bstr_t bstrSQL); // 执行查询
BOOL ExecuteSQL(_bstr_t bstrSQL); // 执行 SQL 语句,Insert Update
//{{AFX_DATA(CLoginDlg)
enum { IDD = IDD_LOGIN_DIALOG };
CEdit m_control_username;
CEdit m_control_password;
int count;
int seconds;
CSMButton m_ok;
CSMButton m_cancel;
CString m_Pwd;
CString m_UserName;
COLORREF m_clrText;
COLORREF m_clrBkgnd;
CBrush m_brBkgnd;
CBrush m_brControlBkgnd1;
CBrush m_brControlBkgnd2;
protected:
virtual void DoDataExchange(CDataExchange* pDX);
support
nCtlColor);
virtual void OnOK();
afx_msg BOOL OnEraseBkgnd(CDC* pDC);
afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT
// DDX/DDV
实现代码如下:
class CLoginDlg : public CDialog
{
// Construction
public:
CLoginDlg(CWnd* pParent = NULL);
~CLoginDlg();
// standard constructor
// Dialog Data
afx_msg void OnTimer(UINT nIDEvent);
virtual BOOL OnInitDialog();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
void CLoginDlg::OnOK()
{UpdateData(TRUE);
if (m_UserName == ""){
MessageBox("请输入用户名");
return;}
if (m_Pwd == ""){
MessageBox("请输入密码");
return;}