1、整理药品进销存系统药品进销存系统 编辑整理:尊敬的读者朋友们:这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望(药品进销存系统)的内容能够给您的工作和学习带来便利。同时也真诚的希望收到您的建议和反馈,这将是我们进步的源泉,前进的动力。本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快 业绩进步,以下为药品进销存系统的全部内容。 药品进销存系统需求分析:设计药品进销存系统并分为六个功能模块.主要用来管理一个小型的药品销售公司。主要有药品的入库、出库,供货商的管理,客户管理以及必要
2、的库存检索。系统用orcal管理数据库,通过MFC实现软件界面可视化,通过函数连接数据库,实现对数据库的基本操作,下面具体分析每个功能模块:药品清单:可以建立一张表用于存放药品相关信息。药品的相关信息包括:货号、药品名称、类型、进价、售价、生产日期以及有效期至。可以添加一条记录到药品清单中,也可以删除一条记录,也可以显示药品清单中所有的记录项,实现对这张表的简单管理。供货商清单:可以建立一张表存放供货商的相关信息。供货商清单的相关数据项包括:供货商号、供货商名称、供货商地点、联系电话。可以添加一条记录到供货商清单表中,也可以删除掉一条记录,也可以显示供货商清单中的所有记录,实现对供货商信息的简
3、单管理。客户清单:可以建立一张表存放客户的相关信息。客户清单的相关数据项包括:客户编号、客户名称、地点、电话。可以添加一条记录到客户清单表中,也可以删除掉一条记录,也可以显示客户清单中的所有记录,实现对客户信息的简单管理.进货单:当有药品入库时,进货单中要增加一条相关记录,以记录药品入库信息。进货单包括的数据项有:编号、供货商号、货号、仓库、进货数量以及进货日期,进货单中可以增加上一条记录,但是不可以删除一条记录,可以显示进货单中的所有记录,实现对进货单的相关管理. 售货单:当有药品出库时,售货单中要增加一条相关记录,以记录药品出库信息。售货单包括的数据项有:编号、客户编号、货号、仓库、销售数
4、量以及销售日期,售货单中可以增加上一条记录,但是不可以删除一条记录,可以显示售货单中的所有记录,实现对售货单的相关管理.库存库: 当有药品入库时,库存库要增加相关记录或修改相关记录,当有药品出库时,库存库要修改相关记录或当出库不成功时给出相关警告信息。库存库包括以下数据项:货号、仓库、库存数量、库存单价、库存金额。概念结构设计:实体间E_R图关系模型:(带下划线的表示表的主键)药品清单(货号,药品名称,类型,进价,售价,生产日期,有效期至)供货商清单(供货商号,供货商名称,供货商地点,联系电话)客户清单(客户编码,客户简称,地址,电话)进货单(编号,供货商号,货号,仓库,进货数量,进货日期)售
5、货单(编号,客户编号,货号,仓库,销售数量,销售日期)库存库(货号,仓库,库存数量,库存单价,库存金额)建表:增加药品清单表create table 药品清单( 货号 varchar(15), 药品名称 varchar(20), 类型 varchar(6), 进价 number(3,1), 售价 number(3,1), 生产日期 date, 有效期至 date, constraint PK_药品清单 primary key (货号));增加供货商清单表create table 供货商清单( 供货商号 varchar(15), 供货商名称 varchar(20), 供货商地点 varchar(
6、20), 联系电话 varchar(15), constraint PK_供货商清单 primary key(供货商号));增加客户清单表create table 客户清单( 客户编码 varchar(15), 客户简称 varchar(15), 地址 varchar(15), 电话 varchar(15), constraint PK_客户清单 PRIMARY KEY (客户编码));增加进货单表create table 进货单( 编号 varchar(15), 供货商号 varchar(20), 货号 varchar(20), 仓库 varchar(10), 进货数量 number(5),
7、check(进货数量=0), 进货日期 date, constraint PK_进货单 PRIMARY KEY (编号), constraint FK_进货单_To_药品清单 FOREIGN KEY (货号) REFERENCES 药品清单(货号), constraint FK_进货单_To_供销商清单 FOREIGN KEY (供货商号) REFERENCES 供货商清单(供货商号));增加售货单表create table 售货单( 编号 varchar(15), 客户编号 varchar(20), 货号 varchar(15), 仓库 varchar(10), 销售数量 number(5)
8、, 销售日期 date, constraint PK_售货单 primary key (编号), constraint FK_售货单_To_药品清单 FOREIGN KEY (货号) REFERENCES 药品清单(货号), constraint FK_售货单_To_客户清单 FOREIGN KEY (客户编号) REFERENCES 客户清单(客户编码);增加库存库create table 库存库( 货号 varchar(15), 仓库 varchar(15), 库存数量 number(5), 库存单价 number(3,1), 库存金额 number(7));数据库实施与维护:整个系统的操
9、作过程:首先进入登陆界面,用户名和密码都为空,直接单击确认即进入操作界面,单击六个模块中的任意一个按钮进入与其有关的操作界面,再选择所要进行的操作即可弹出相关的对话框,输入用户名和密码后就可实现一系列功能如增加记录,删除和显示记录。在操作失误的时候系统会给出相应的提示和警告,以提示用户输入规范的数据和进行当前可以进行的操作。系统优点就是实现了操作并运行成功了,缺点是没有一个人性化的操作界面,操作也让人感到困倦,总的原因还是道行不深,不愿花费太大的精力,属于注重实现,忽略细节的类型。MFC的代码实现部分:登陆界面实现代码void CMedicineProjectView::OnButton1()
10、 / TODO: Add your control notification handler code here CZhuyemian zhuyemian; CADMINSET adminset; CString yonghuming; CString mima; UpdateData(TRUE); /CCzhuyemian dlg; adminset.Open(); GetDlgItem(IDC_EDIT1)GetWindowText(yonghuming); GetDlgItem(IDC_EDIT2)-GetWindowText(mima); if(adminset.m_SA_NAME!=
11、yonghuming|adminset.m_SA_VALUE!=mima) MessageBox(”用户名或密码错误!”); else zhuyemian.DoModal(); /zhuyemian。EndDialog(IDD_MEDICINEPROJECT_FORM); /EndDialog(GetSafeHwnd( ),IDD_MEDICINEPROJECT_FORM);主界面操作代码void CZhuyemian::OnButton2() / TODO: Add your control notification handler code here CClientZhujiemian c
12、lientzhujiemian; clientzhujiemian.DoModal();void CZhuyemian:OnButton3() / TODO: Add your control notification handler code here CProviderzhujiemian providerzhujiemian; providerzhujiemian。DoModal();void CZhuyemian::OnButton1() / TODO: Add your control notification handler code here CMedicinezhujiemia
13、n medicinezhujiemian; medicinezhujiemian.DoModal();void CZhuyemian::OnButton5() / TODO: Add your control notification handler code here CInlistzhujiemian inlistzhujiemian; inlistzhujiemian。DoModal();void CZhuyemian:OnButton4() / TODO: Add your control notification handler code here COutlistzhujiemia
14、n outlistzhujiemian; outlistzhujiemian。DoModal();void CZhuyemian::OnButton6() / TODO: Add your control notification handler code here CKucunkuzhujiemian kucunkuzhujiemian; kucunkuzhujiemian.DoModal();客户操作的实现代码(药品清单、供货商操作代码类似,在此省略)/ ClientZhujiemian.cpp : implementation file/#include ”stdafx。h”#inclu
15、de ”MedicineProject.h#include ClientZhujiemian。h”include ”Clientitems。h”#include ClientSet.hifdef _DEBUGdefine new DEBUG_NEWundef THIS_FILEstatic char THIS_FILE = _FILE_;#endif/ CClientZhujiemian dialogCClientZhujiemian::CClientZhujiemian(CWnd pParent /=NULL/) : CDialog(CClientZhujiemian::IDD, pPare
16、nt) /AFX_DATA_INIT(CClientZhujiemian) /AFX_DATA_INITvoid CClientZhujiemian::DoDataExchange(CDataExchange* pDX) CDialog:DoDataExchange(pDX); /AFX_DATA_MAP(CClientZhujiemian) DDX_Control(pDX, IDC_LIST1, m_Listbox); /AFX_DATA_MAPBEGIN_MESSAGE_MAP(CClientZhujiemian, CDialog) /AFX_MSG_MAP(CClientZhujiemi
17、an) ON_BN_CLICKED(IDC_BUTTON1, OnButton1) ON_BN_CLICKED(IDC_BUTTON3, OnButton3) ON_BN_CLICKED(IDC_BUTTON2, OnButton2) /AFX_MSG_MAPEND_MESSAGE_MAP()/ CClientZhujiemian message handlersvoid CClientZhujiemian::OnButton1() / TODO: Add your control notification handler code here CClientitems clientitems;
18、 clientitems.DoModal();void CClientZhujiemian::OnButton3() / TODO: Add your control notification handler code here m_Listbox。Invalidate(FALSE); int n=m_Listbox。GetCount(); while(n=0) m_Listbox.DeleteString(n); n-; UpdateData(FALSE); CClientSet clientshow; m_Listbox。SetHorizontalExtent(100); clientsh
19、ow。Open(); clientshow.MoveFirst(); while(!clientshow。IsEOF() m_Listbox。AddString(clientshow.m_column1+” +clientshow。m_column2+” ”+ clientshow。m_column3+ ”+clientshow.m_column4); clientshow。MoveNext(); clientshow。MoveFirst(); clientshow。Close(); UpdateData(TRUE); m_Listbox.Invalidate(FALSE);void CCli
20、entZhujiemian::OnButton2() / TODO: Add your control notification handler code here CClientSet clientdelete; int n; n=m_Listbox.GetCurSel()+1; char s10; itoa(n,s,10); MessageBox(s); clientdelete.Open(); clientdelete。MoveFirst(); if(n=1) clientdelete。Delete(); else while(n1) clientdelete。MoveNext(); n
21、=n-1; clientdelete.Delete(); clientdelete.Close();进货单操作界面代码(售货单操作界面代码类似,省略)void CInlistzhujiemian:OnButton1() / TODO: Add your control notification handler code here CInlistitems inlistitems; inlistitems。DoModal();void CInlistzhujiemian::OnButton3() / TODO: Add your control notification handler code
22、 here m_listbox.Invalidate(FALSE); int n=m_listbox.GetCount(); while(n=0) m_listbox。DeleteString(n); n-; UpdateData(FALSE); CInlistSet1 inlistshow; CString a,b; inlistshow.Open(); inlistshow.MoveFirst(); m_listbox.SetHorizontalExtent(100); while(!inlistshow.IsEOF()) a=(CString)inlistshow.m_column5;
23、b=inlistshow。m_column6。Format(A B %d Y); m_listbox。AddString(inlistshow。m_column1+ +inlistshow。m_column2+ ”+ inlistshow.m_column3+” +inlistshow.m_column4+ +a+” +b); inlistshow.MoveNext(); inlistshow。MoveFirst(); inlistshow。Close(); UpdateData(TRUE); m_listbox。Invalidate(FALSE);增加进货单相关信息代码void CInlis
24、titems::OnButton1() / TODO: Add your control notification handler code here CInlistSet1 addrecordset;/定义进货单和库存库对象 CKucunkuset3 addtokucunkuset; CString a,b,c,d; CString e; addrecordset.Open(); addtokucunkuset。Open(); e=(CString)m_inlistshuliang; if(addrecordset.GetRecordCount() addrecordset。MoveLast
25、(); GetDlgItem(IDC_EDIT1)GetWindowText(a);/CString类型的变量a得到IDC_EDIT1控件中的内容 GetDlgItem(IDC_EDIT2)-GetWindowText(b); GetDlgItem(IDC_EDIT3)-GetWindowText(c); GetDlgItem(IDC_EDIT4)-GetWindowText(d); GetDlgItem(IDC_EDIT5)-GetWindowText(e); if(a。IsEmpty()|b。IsEmpty()|c。IsEmpty()d。IsEmpty()) MessageBox(信息不能
26、为空!”); else addrecordset.AddNew();/和售货单不同,只要进货就要往库存库中做记录,而且库存库记录依赖于 addrecordset。m_column1=a;/进货单相应记录的不同变化而出现不同情况,所以先插入进货单,再 addrecordset。m_column2=b;/插入或变更库存库的记录 addrecordset。m_column3=c; addrecordset。m_column4=d; addrecordset。m_column5=e; addrecordset。m_column6=m_inlistdate; int n=0;/(n的值为什么一直是一呢,
27、不,是反复无常啊!)用n来得到库存库中的记录个数 char nn2; if(addtokucunkuset.GetRecordCount()) addtokucunkuset。MoveFirst(); while(!addtokucunkuset.IsEOF()) addtokucunkuset.MoveNext(); n+; n+; itoa(n,nn,10); MessageBox(nn);/验证n的大小 /*int n;/这种情况下n总是一 char nn2; n=addtokucunkuset。GetRecordCount(); itoa(n,nn,10); MessageBox(nn
28、);/ if(n1) addtokucunkuset.MoveFirst(); while(n0) if(addtokucunkuset。m_column1=c&addtokucunkuset.m_column2=d) break; else if(addtokucunkuset.IsEOF()) n; break; else addtokucunkuset。MoveNext(); n-; if(n)/如果有相应的记录,做更改操作 float price,sum,sum0; int number,number0; CString summ; CString jiage; CString num
29、berr; CMedicineSet medicineset; medicineset.Open(); medicineset.MoveFirst(); while(medicineset。m_column1!=c) medicineset.MoveNext(); price=atof(medicineset。m_column4); number=atoi(e); number0=atoi(addtokucunkuset。m_column3); number0=number0+number; sum=price*number; sum0=atof(addtokucunkuset.m_column5); s
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1