《软件项目开发综合实践》大作业题目:商品库存管理系统专业:09计算机应用技术作者:指导教师:**目录第1章:系统的可行性分析........................................ - 2 -1.1 商品库存管理系统的主要任务.............................. - 2 -1.2 可行性分析.............................................. - 2 -第2章:需求分析................................................ - 3 -2.1 系统的需求分析.......................................... - 3 -2.2 系统功能................................................ - 3 -2.2.1 商品管理模块.................................................................................................. - 3 -2.2.2 商家管理模块................................................................................................ - 4 -2.2.3 入库管理模块.................................................................................................. - 4 -2.2.4 出库管理模块.................................................................................................. - 4 - 第3章:设计过程................................................ - 5 -3.1 商品库存管理系统用例图.................................. - 5 -3.2 数据库操纵.............................................. - 5 -3.3 登录对话框............................................. - 12 -3.3.1 删除无关控件................................................................................................ - 12 -3.3.2 制作登录封面................................................................................................ - 12 -3.3.3 界面设计........................................................................................................ - 12 -3.3.4 编写代码........................................................................................................ - 13 -3.3.5 主界面的实现................................................................................................ - 14 - 第4章:系统总结............................................... - 18 -第1章:系统的可行性分析1.1 商品库存管理系统的主要任务商品库存管理系统是对商品库存进行整理, 使得能方便快捷地对人事档案进行查询、统计、更新并且能按一定要求输出报表。
通过该系统、使企业的商品库存管理工作系统化、规范化、自动化, 从而提高企业人事管理的效率。
1.2 可行性分析(1)技术可行性随着国内软件开发的日益发展壮大,各种中小企事业单位已具备独立开发各种类型的软件的能力,能够满足不同行业的特别的需求。
而这个系统尽管其在组织关系上存在着很大的复杂性,繁琐性,但是就整个系统的技术构成上来看,它还是属于一个数据库应用类的系统。
其基本操作还是对存在数据库进行浏览、添加、删除、修改等。
所以就单纯的数据库应用来看,暂不存在太大的技术问题。
(2)经济可行性对于整个系统而言,在系统未运行之前,初期投资比较大,花费相对而言比较多。
各部门必须配置电脑、服务器、打印机、传真机及相关的网络设备,但是在整个系统投入运行之后,因为现在计算机已经普及了,相关的人员培训费可以减少很多。
而同时又减少了数据的流通环节,不必要花费那么多的时间,也就是说最重要的是就是提高了效率,而又保证了各项数据的准确性,也避免了工作人员的流动造成的收据丢失等问题,适应了当前的发展形式。
(3)管理可行性随着时代的发展,人员素质己逐步提高,不论是对于电脑系统的基本操作还是对于系统的维护都有了一定的基础。
同时还可以配置专业的电脑维护人员来维护电脑,不必担心电脑故障问题。
(4)开发环境可行性Visual C+ + 为用户提供了ODBC (Open Database Connec2 tivity , 开放式数据库连接) 、DAO (Data Access Object , 数据访问对象) 和OLEDB (OL E Data Base , OL E 数据库) 三种数据库访问技术, 它们都具有简单、灵活、访问速度快、可扩展性强的特点, 这些正是Visual C 6 较其它开发工具所具有的优势。
ODBC 是一种使用SQL 的程序设计接口, 它使得编写应用程序避免了与数据源相联的复杂过程。
第2章:需求分析2.1 系统的需求分析伴随着计算机的发展及网络技术的应用,我们正在快速地向信息化社会迈进,信息自动化的作用变得越来越大。
在仓库管理领域中,仓库管理的规模正在不断扩大,仓库管理的复杂度正在急剧地增加,有关仓库管理的各种信息量也成倍地增长。
面对庞大的信息量,就需要有商品库存管理系统来提高库存管理工作的效率。
通过这样的系统,可以方便的查询、添加和修改商品及供货商的基本情况,掌握入库出库的各种情况,实现信息的规范管理、科学统计和快速查询,从而减少管理方面的工作量,同时避免由于人为因素造成数据遗漏和误报等。
商品库存管理系统的功能要求如下:提供仓库各类信息的浏览、添加、删除、修改等操作。
可以进行入库出库操作,并保证安全性。
可进行日志管理,方便事后查看。
系统其他的相关功能。
2.2 系统功能本系统主要模块有4个:商品信息管理、商家管理、入库信息管理、出库管理。
其他模块如预警模块和日志管理都是为了增强系统的安全性和扩展功能而设计的。
下面分别对这4个模块进行介绍(系统的整体设计如图1.1所示)。
2.2.1 商品管理模块仓库管理模块通过此模块来管理商品信息,包括浏览、查询、添加、修改和删除功能。
在进行商品信息的添加时,系统会自动检测所添加的商品信息中的商品号在商品表中是否已经存在,如果存在,会提示用户该商品已经存在。
在进行商品信息的删除时,要首先弹出提示窗口让用户确认是否删除,只有用户确认后才能进行商品信息的删除。
在进行商品信息的修改时,不准用户修改商品号,因为商品号作为数据库中商品表的主键是不同商品的唯一标识,不准修改商品号可以防止不经意将商品号改错;如果确实要修改商品号,可以通过数据库管理员来实现,也可以先将错误商品号信息删除再添加正确的商品信息,这样在删除时会弹出提示窗口,让用户确认是否删除,给用户以提示,防止意外错误。
图1.1 系统整体设计2.2.2 商家管理模块仓库管理员通过此模块来管理商家信息,包括浏览、查询、添加、修改和删除功能。
在进行商家信息的添加时,系统会自动检测所添加的商家信息的商家号在商家表中是否已经存在,如果存在,会提示用户该商家在商家表中已经存在。
在进行商家信息的删除时,要首先弹出提示窗口让用户确认是否删除,只有用户确认后才能进行商家信息的删除。
在进行商家信息的修改时,不准用户修改商家号。
2.2.3 入库管理模块仓库管理员通过此模块来管理入库信息,包括浏览、查询、添加、修改和删除功能。
在进行入库信息的添加时,系统会自动检测所添加的入库信息中的商品号在商品表里是否存在,商家号在商家表中是否存在,只要有一个不存在,就会提示用户输入有误;同时检验所添加的商品号和商家号的组合在入库表中同一时间是否已经存在,如果存在,会提示用户该入库信息在入库表中已经存在。
2.2.4 出库管理模块仓库管理员通过此模块来进行出库操作。
选择相应的商品,系统自动显示被选择商品的数量。
若出库数量大于当前商品数量,则操作不能完成。
第3章:设计过程3.1 商品库存管理系统用例图商品库存管理系统用例图如图3.1所示。
图3.1商品库存管理系统用例图3.2 数据库操纵E-R图:商品编号商品名称当前库存量商品最大库存量最小库存量图3.2 商品信息图3.3 供货商信息图3.4 入库信息图3.5 出库信息图3.6 日志信息图3.7 管理员信息引入数据库链接代码如下:#import"C:\programfiles\commonfiles\System\ado\msado15.dll" no_namespace \rename("EOF","adoEOF") \rename("LockTypeEnum","newLockTypeEnum")\rename("DataTypeEnum","newDataTypeEnum")\rename("FieldAttributeEnum","newFieldAttributeEnum")\rename("EditModeEnum","newEditModeEnum")\rename("RecordStatusEnum","newRecordStatusEnum")\rename("ParameterDirectionEnum","newParameterDirectionEnum")class CGMSApp : public CWinApp{public:CGMSApp();public:_RecordsetPtr m_pRs;bool ADOExecute(_RecordsetPtr &ADOSet, _variant_t &strSQL);CLogManager m_log;// Overrides// ClassWizard generated virtual function overrides//{{AFX_VIRTUAL(CGMSApp)public:virtual BOOL InitInstance();//}}AFX_VIRTUAL// Implementation//{{AFX_MSG(CGMSApp)// NOTE - the ClassWizard will add and remove member functions here.// DO NOT EDIT what you see in these blocks of generated code !//}}AFX_MSGDECLARE_MESSAGE_MAP()private:// Define ADO Database Connnection_ConnectionPtr m_pConn;};BOOL CGMSApp::InitInstance(){AfxEnableControlContainer();// Standard initialization// If you are not using these features and wish to reduce the size// of your final executable, you should remove from the following// the specific initialization routines you do not need.#ifdef _AFXDLLEnable3dControls(); // Call this when using MFC in a shared DLL#elseEnable3dControlsStatic(); // Call this when linking to MFC statically #endif// Create ADO Connectionif( FAILED(::CoInitialize(NULL)) ){AfxMessageBox("ADO Init failed");return false;}try{m_pConn.CreateInstance(__uuidof(Connection));m_pConn->Open("Provider=Microsoft.Jet.OLEDB.4.0;DataSource=GMS.mdb","","",adConnectUnspecified);}// Catch Exceptionscatch(_com_error &e){CString err;err.Format("%s", (char*)(e.Description()) );AfxMessageBox(err);}catch(...){AfxMessageBox("Unknown Error...");}// Init ADO RecordSetm_pRs.CreateInstance(__uuidof(Recordset));CGMSDlg dlg;m_pMainWnd = &dlg;int nResponse = dlg.DoModal();if (nResponse == IDOK){// TODO: Place code here to handle when the dialog is// dismissed with OK}else if (nResponse == IDCANCEL){// TODO: Place code here to handle when the dialog is// dismissed with Cancel}// Since the dialog has been closed, return FALSE so that we exit the// application, rather than start the application's message pump.return FALSE;}bool CGMSApp::ADOExecute(_RecordsetPtr &ADOSet, _variant_t &strSQL) {if ( ADOSet->State == adStateOpen)ADOSet->Close();try{ADOSet->Open(strSQL, m_pConn.GetInterfacePtr(), adOpenStatic, adLockOptimistic, adCmdUnknown);return true;}catch(_com_error &e){CString err;err.Format("ADO Error: %s",(char*)e.Description());AfxMessageBox(err);return false;}}数据库表如图3.8,图3.9, 图3.10, 图3.11, 图3.12, 图3.13,图3.14所示。