3、发与市场需求相符合。关键词:管理系统;汽车零部件;ASP.NETASP.NET一、引言科学技术日新月异,信息化时代的来临,以计算机为基础的信息科学在经济和社会生活各个领域得到了极为广泛的应用,尤其在信息管理方面,计算机已是必不可少的管理工具。谁控制的信息越多,谁利用信息资源的效率越高,谁就会在各方面的竞争中占有一席之地,谁就会有更多的优势。从微观上讲,建立一套管理信息系统能够提高生产效率,从而加强了管理的信息化手段,提高了本单位的经济效益。从宏观上讲,顺应了社会的信息化、社会化潮流,加快了社会的发展速度。据统计,美国在信息管理管理方面80-100%的信息处理由计算机完成;
4、计划管理是8090%;在计算机应用发展较快的国家中,计算机应用于经济管理的占80%;用于科技计算的占8%,用于生产过程控制的占12%;由此可以看出,信息管理是计算机应用的主要领域。目前我国具一定规模的汽车零部件生产厂商有3000多家,汽车维修企业有25万家,汽配经营企业17万家,从业人数达到100万人左右,已形成一批具有相当规模和一定市场占有率的重点零部件企业。现我国汽车零部件产品的供应能力不断提高,零部件的生产和销售呈国际化、高技术化的发展趋势。汽车零部件行业竞争十分激烈,特别是在经济全球化日益加剧的情况下,国际上众多汽车零部件巨头纷纷进入我国市场,国
5、内汽车零部件企业面临着巨大压力。国内汽车零部件企业要把行业内国际一流的标准和企业,作为自己对标追赶的目标,向更高层次发展。对于汽车零部件销售来说,其工作流程的繁杂性、多样化、管理复杂、收缴费用与设备维护繁琐。计算机已完全能够胜任销售工作,而且更加准确、方便、快捷、高效、清晰、透明,它完全可以克服以上所述的不足之处。这将给项目查询和管理带来很大的方便,从而给销售管理工作带来更高的效率,这也是销售管理正规化、现代化的重要标志。因此,开发一套高效率、无差错的汽车零部件销售管理系统软件十分必要。本系统的主要目的是告别帐本,安全、快捷的保存数据信息。汽车零部件销售管理系统涉及到前台网页浏
6、览商品,并可下订单,付款一体化流程,管理员可以在后台系统查询订单并及时发货,还有查询、录入、修改、删除等功能,使客户能够对自己的订单进行实时动态跟踪等情况提供透明化、直观的了解。二、需求分析(一)开发背景随着车辆种类迅速增多,汽车修理及零部件销售行业不断发展,零部件种类已经远不止几十种几百种,与此同时就产生了车辆零部件销售不好管理问题。传统手工的销售信息管理,管理过程繁琐而复杂,执行效率低,并且易于出错。这些问题主要涉及到零部件出入库信息记录、查询、汇总管理、用户管理等。该系统对于一个有零部件仓储销售管理需求的单位来说,不但可以对零部件仓储进行合理的记录管理,而且对零部件的相
7、关情况进行查询、汇总,这对于出入库管理责任到人、账目清晰、避免混乱等一系列相应问题的解决很有帮助。从而帮助企事业单位提高工作效率,并节约开支。通过这样的系统,我们可以做到信息的规范管理和快速查询,实现了仓储销售信息管理的系统化、规范化和自动化。(二)功能需求分析汽车零件销售管理系统是根据汽车零部件销售的过程来分析该系统,系统分为前台和后台,前台主要是汽车零部件产品的展示和网上销售、会员管理等内容,系统的后台主要是产品的采购、销售、订单的处理、仓库管理、库存管理、公司员工、供应商信息的管理。系统的后台主要分为登陆模块、系统用户管理模块、业务管理模块、产品库存模块、部门管理模块、
8、产品信息模块、仓库管理模块、客户管理模块、新闻管理模块、报表管理模块、用户留言信息管理模块。其中登陆模块是用户的登陆。系统用户管理模块主要是用户的信息、密码的查看、添加和修改。业务管理模块主要是对公司主要业务的管理,比如订单信息的维护、订单的处理、产品的销售、产品的采购等等。产品信息管理、部门管理、客户管理、供应商管理等模块主要是对公司的产品、部门、客户、供应商等的基本信息的查询、更新和维护。仓库管理主要是对产品出库的动态查看。产品库存模块的主要功能是与销售模块有很大关系的,如果库存小于安全库存时,就需要公司去采购商品。(三)开发环境需求磁盘空间:250MB。内存:1GB以
9、上。显示:1024*768,256色操作系统:WindowsXP/Windows2003。数据库:SQLServer2005。开发工具:MicrosoftVisualStudio2008辅助开发工具:PhotoshopCS2、Flash8、MacromediaDreamweaver8.0。(四)可行性分析1技术的可行性汽车零部件销售管理系统采用了当前的主流计算结构B/S模式进行开发,前台开发工具选用MicrosoftVisualStudio2008,它是一种可视化的、面向对象的Windows开发语言,MicrosoftVisual
10、Studio2008具有易用、通用和开发效率高的特点。后台的数据库开发工具选用了MicrosoftSQLServer2005,它能够处理大量数据,同时保持数据完整性并提供许多高级管理和数据分配功能。这两种开发工具功能强大,有较好的接口,作为本系统开发工具是可行的。2经济可行性随着计算机技术的飞速发展,计算机在企业管理中应用的普及,利用计算机实现企业人事管理势在必行。21世纪是一个充满竞争和挑战的世纪。在这个世纪中,高效化、系统化、规范化、自动化已成为现代企业的代名词。做为我国支柱产业之一的汽车产业在当今智能化销售的发展的驱动下,在当今信息时代的推动下,拥有自己的
11、一套特色的汽车零部件销售管理系统是非常必要的,与汽车繁多的零部件相比较,传统的手工式的管理方式已经无法适合当今的庞大的数据处理和精确的运算需求,所以一套精美完善的汽车零部件销售管理系统是提高工作效率节省人力物力的有效解决方案。传统的管理方式,对管理人员要求数量多,耗资高,错误率高,工作人员流动和对新人的培训经费也是不小的开支。一套完善的汽车零部件销售管理系统可持续使用并能随着时代和工作的需求不断更新,一期投入终身受用,按长期的使用计算,开发系统的造价平均到每年与传统式的管理方式的年耗资本相对比,性价比是可行的,更可以为企业带来最大的利益。开发这套系统的经济可行性是很高的。三、
12、系统设计(一)系统功能图根据上述系统功能的需求分析,按照结构化程序设计的需求,得到如下的系统模块图。汽车零部件销售管理系统后台模块图,如图3-1所示。汽车零部件销售管理系统后台系统用户管理密码修改用户信息业务管理订单管理订单状态销售管理采购管理订单查询商品库存管理产品库存信息产品出库单查询产品入库单查询部门管理员工信息部门信息产品信息产品信息维护产品分类仓库管理产品入库产品出库客户管理供应商管理客户信息维护企业新闻管理新闻发布报表管理销售报表用户留言信息留言查询系统设置模块管理密码修改注销系统
14、数据库设计在系统设计的开始,我们根据系统具体的需求进行分析,利用“实体联系模型(ER模型)”来描述数据库的结构与语义,ER模型直接从现实世界抽象出了实体类型以及实体与实体之间的联系,然后用ER模型来表示数据模型。数据库的设计经过我们的分析,将系统中涉及的功能表现出来,其中表的建立尤为重要。数据库表的建立不仅是字段的建立,表与表之间的关系也不可或缺。主键、外键的关系需要谨慎建立。创建外键关系即是将各表与表之间联系起来。表与表之间一旦脱离了外键之间的关系而独立,那么系统之间的功能也将难以完成。(一)E-R模型图客户订单零部件销售财务信息留言11nn1享有
15、售后服务111人员1管理服务111反馈11采购仓库11图4-1汽车零部件销售管理系统E-R图(二)数据库模型图图中显示了数据库中的表,各张表在数据库中所存在的联系,即他们之间的主外键的关系,如图4-2所示。ProductsPKIDProductIDSupplierIDCategoryIDPictureSizeDescriptionOriginalPriceWarehouseNoUnitPriceQunatityInStoreQunatityOnOrderReOrderLevelUnitCategoriesPKID
16、CategoryIDCategoryNameWeb_StaffIDTechnologyIDUserNameFullNameEmployeeNoDepartmentIDCodeSexBirthdayIDCardNationPolityPolityDateEducationSchoolDegreeTitleTitleDateTitleLevelWorkingDateTeachingDateOldTechnologyJoinInPropertyCategoryDutyPostSubjectOfficeZipCodeOfficeAddr
17、essOfficeFaxOfficePhoneHomeZipCodeHomeAddressHomeFaxPhoneEmailMobileOICQBargainIsDimissionDimissionDateDimissionCauseDimissionTechnologyNativePlaceResidenceBankIDIsStaffEnabledCanVisitIsVirtualOperatorTypeUserPasswordFirstVisitPreviousVisitLastVisitLoginCountLangThemeVi
18、sibleIsOperatorSortCodeDescriptionCreateStaffIDCreateDateModifyStaffIDModifyDateInputProductsDetailsPKProductIDPKInputProductIDQunatityAmountsPayableAmountPaidDifferenceMoneyRemarkCommpanyNameDepartmentsPKIDDepartmentIDDepartmentNameWarehouseIDWarehouseNoWarehouseNameRemarks
19、T_SequenceIDFullNamePrefixSeparatorSequenceDegressionStepDescriptionDeptCommunicationsPKDeptCommunicationIDSenderDepartmentIDToDepartmentIDContentIsReadSendDateWeb_StaffRightIDSTAFFIDMODULEIDEnabledCreateStaffIDCreateDateModifyStaffIDModifyDateWeb_ModuleIDParentIDFullNam
20、eCodeNavigateUrlTargetWinFormModuleHeightModuleWidthIsGroupSortCodeEnabledIsPublicIsMenuExpandDescriptionCreateStaffIDCreateDateModifyStaffIDModifyDateOrderStatusPKStatusStatusNameInputProductsInfoPKIDInputProductIDMainPersonDateRemarksIsSureShippersPKShipperIDIDCompan
21、yTelephoneAddressProvinceCityCountryEmailPostCodeRemarksOutputProductsDetailsProductIDOutputProductIDQunatityAmountReceivableCollectedDifferenceMoneyCompanyNameRemarkEmployeeMessagePKIDEmployeeIDDepartNoMessageContentDateToUserMessageMessageIDToUsermessageMessageDateTopic
22、ReaderAnonumentorOrderDetailsPKIDOrderIDProductIDQuantityUnitPriceEmployeesPKIDEmployeeNoDepartmentIDNameBirthDateHireDateAddressCityProvincePostCodeCountryTelephoneAppraiseUserMessagesPKIDUserIDLeaveMessagesLeaveDateOutputProductsInfoPKIDOutputProductIDMainPersonDate
23、OrderIDRemarksOrdersPKIDOrderIDUserIDFK2ShipperIDEmployeeIDOrderDateRequireDateShipAddressShipCityShipProvincePostCodeShipCountryPhoneCheckOutTypeFK1StatusSaleDateRemarksUsersInfoPKIDUserIDRealNameLoginNamePasswordAddressEmailPhoneRegistDateStateSuppliersPKIDSupplie
24、rIDCompanyNameAddressCityProvincePostCodeCountryPhoneFax图4-2汽车零部件销售管理系统模型图(三)数据库表设计经过分析,系统中建立了数据库CarAccessories,并创建了如下表,如图4-3所示。图4-3CarAccessories数据库表(四)数据字典表名:表名:EmployeesEmployees(员工表)(员工表)序号序号列名列名数据类型数据类型长度长度小数位小数位标识标识主键主键允许空允许空默认值默认值说明说明1IDint40是是否ID2EmployeeNonvarchar
25、200否员工编号3DepartmentIDnvarchar150是部门编号4Namenvarchar200是员工姓名5BirthDatenvarchar500是生日6HireDatenvarchar500是雇用日期7Addressnvarchar2000是住址8Citynvarchar500是城市(续表)序号序号列名列名数据类型数据类型长度长度小数位小数位标识标识主键主键允许空允许空默认值默认值说明说明9Provincenvarchar500是省份10PostCodenvarchar500是邮政编码11Countrynvarchar500是国家12T
26、elephonenvarchar500是手机号码13Appraisenvarchar160是部门评价表名:表名:InputProductsInfoInputProductsInfo(产品入库表)(产品入库表)序号序号列名列名数据类型数据类型长度长度小数位小数位标标识识主键主键允许空允许空默认值默认值说明说明1IDint40是是否ID2InputProductIDnvarchar200否入库单号3MainPersonnvarchar500是负责人4Datedatetime83是日期5Remarksntext160是备注6IsSurebit10是表名:表名
27、:OrderDetailsOrderDetails(订单信息详表)(订单信息详表)序号序号列名列名数据类型数据类型长度长度小数位小数位标识标识主键主键允许空允许空默认值默认值说明说明1IDint40是是否ID2OrderIDnvarchar500否订单号3ProductIDnvarchar200是产品号4Quantityint40是库数量5UnitPricefloat80是单价表名:表名:OrdersOrders(订单表)(订单表)序号序号列名列名数据类型数据类型长度长度小数小数位位标识标识主键主键允许允许空空默认值默认值说明说明1IDint40是是否
28、ID2OrderIDnvarchar500是订单号3UserIDnvarchar500是客户编号4ShipperIDnvarchar200是供应商ID5EmployeeIDnvarchar200是员工编号6OrderDatedatetime83是订单日期7RequireDatedatetime83是需要日期8ShipAddressnvarchar2000是送货地址9ShipCitynvarchar1000是城市10ShipProvincenvarchar1000是身份11PostCodenvarchar1000是邮政编码12ShipCountrynv
30、tProductIDnvarchar200否出库单号3Qunatityint40是库存数量(续表)序号序号列名列名数据类型数据类型长度长度小数小数位位标识标识主键主键允许允许空空默认默认值值说明说明4AmountReceivablenvarchar500是出库数量5Collectednvarchar500是收集6DifferenceMoneynvarchar500是差价7CompanyNamenvarchar500是公司名称8Remarkntext160是备注表名:表名:OutputProductsInfoOutputProductsInfo(产品出
31、库表)(产品出库表)序号序号列名列名数据类型数据类型长度长度小数位小数位标标识识主主键键允许允许空空默认默认值值说明说明1IDint40是是否ID2OutputProductIDnvarchar200否出库单号3MainPersonnvarchar300是负责人4Datenvarchar500是日期5OrderIDnvarchar500是订单号6Remarksntext160是备注表名:表名:WarehouseWarehouse(仓库表)(仓库表)序号序号列名列名数据类型数据类型长长度度小数位小数位标识标识主主键键允许允许空空默认默认
34、onmySqlConnection=newSqlConnection();mySqlConnection.ConnectionString=strcon;stringsqlQuery=selectproducts.warehouseno,warehousename,productid,categoryname,size,QunatityInStore,unit,unitprice,OriginalPrice,(QunatityInStore*OriginalPrice)asInventoryamountfromproducts,categories,war
35、ehousewherewarehouse.warehouseno=products.warehousenoandcategories.categoryid=products.categoryid;if(paranWarehouse.Length0)sqlQuery+=andproducts.warehouseno=+paranWarehouse+;if(paramProductNo.Length0)sqlQuery+=andproductid=+paramProductNo+;trymySqlConnection.Open();SqlCommandmyS
36、qlCommand=newSqlCommand(sqlQuery,mySqlConnection);SqlDataAdaptermySqlDataAdapter=newSqlDataAdapter();mySqlDataAdapter.SelectCommand=mySqlCommand;mySqlDataAdapter.Fill(myDataTable);catchfinallymySqlConnection.Close();returnmyDataTable;UI层中通过调用BU层中的查询方法BindInventoryInfo(),从而将得到
37、的数据绑定到GridView中显示出来:privatevoidBindInventoryInfo()stringparamWarehouse=this.ddlWarehouse.Text;stringparamProductNo=this.txtProductNo.Text;DataTablemyDataTable=newDataTable();InventoryManagemermyInventoryManagemer=newInventoryManagemer();myDataTable=myInventoryManagemer.Bin
38、dInventoryInfo(paramWarehouse,paramProductNo);this.gvInventory.DataSource=myDataTable;this.gvInventory.DataBind();2.新增部门信息,其中包括部门编号、部门名称等,如图5-4所示。图5-4部门信息在部门信息页面中点击添加按钮,页面跳转到添加部门的页面,添好信息后点击保存即可保存到数据库中,保存成功后返回到部门信息的查询页面即可看到新增部门的信息。主要实现代码如下:UI层:点击保存按钮后触发按钮的Click事件,事件中首先调用CheckInput(
39、)方法查看文本框信息是否输入完整,其次通过GetPageValue()方法获取添加的部门信息,再调用ChechExist()方法检查输入的部门信息是否已存在,最后调用BU层的插入方法AddDptInfo()插入到数据库。protectedvoidbtnConfirm_Click(objectsender,EventArgse)if(!this.CheckInput()return;EmployeesManagermyEmployees=newEmployeesManager();if(this.ID.Length0)myEmployees.Get
40、(null,this.ID);myEmployees=this.GetPageValue(myEmployees);tryif(myEmployees.ChechExist(myEmployees.EmployeeNo.ToString()0)myEmployees.Save(null);this.Clear();this.Alert(保存成功,Saved);elsemyEmployees.AddDptInfo(myEmployees);this.Clear();this.Alert(信息添加成功,Saved);catch(ExceptionmyExce
41、ption)ExceptionManager.Throw(this.OperatorID,维护,myException);this.Alert(保存失败,此次操作无效!,Error);BU层代码:这是添加部门信息的插入方法AddDptInfo(),方法通过实体类传值。publicintAddDptInfo(EmployeesManagermyEmployeesManager)intreturnValue=0;BaseDBConmyBaseDBCon=newBaseDBCon();stringsqlQuery=INSERTINTOCarAc
42、cessories.dbo.Employees(EmployeeNo,DepartmentID,Name,BirthDate,HireDate,Address,City,Province,PostCode,Country,Telephone,Appraise)VALUES(+myEmployeesManager.EmployeeNo+,+myEmployeesManager.DepartmentID+,+myEmployeesManager.Name+,+myEmployeesManager.BirthDate+,+myEmployeesMa
43、nager.HireDate+,+myEmployeesManager.Address+,+myEmployeesManager.City+,+myEmployeesManager.Province+,+myEmployeesManager.PostCode+,+myEmployeesManager.Country+,+myEmployeesManager.Telephone+,+myEmployeesManager.Appraise+);。returnreturnValue;(三)业务管理说明:业务管理包括系统的订单管理、
44、订单状态、销售管理、采购管理、订单查询等几个模块。1采购管理(如图:5-2所示)当系统提示我们的产品库存不足时,我们需要采购产品,这样就能方便公司及时地维护产品的库存,保证业务正常的运营,进入系统的采购管理模块后当我们点击采购入库单,即可进入采购进货单界面,如图5-5所示。图5-5采购进货单当我们需要采购产品时,只要点击添加采购产品按钮即可进入添加采购产品的页面,如图5-6所示。图5-6添加产品信息进入后通过点击gridview中产品信息的行添加产品,确认好采购产品的数量等信息后,最后单击保存跳回到采购进货单页面,我们所添加的采购产品的信息就会显示在
45、进货单中。主要实现代码如下:BU层绑定产品信息方法:publicDataTableBindPurchaseInfo()DataTablemyDataTable=newDataTable();SqlConnectionmySqlConnection=newSqlConnection();mySqlConnection.ConnectionString=strcon;。trymySqlConnection.Open();SqlCommandmySqlCommand=newSqlCommand(sqlQuery,mySqlConnection)
46、;SqlDataAdaptermySqlDataAdapter=newSqlDataAdapter();mySqlDataAdapter.SelectCommand=mySqlCommand;mySqlDataAdapter.Fill(myDataTable);。returnmyDataTable;UI层触发gridview单击事件的代码:首先在gridview的RowDataBound事件中判断当前点击的行是否为数据行,当满足条件时再通过代码来设置gridview的一些属性从而触发gridview的SelectedIndexChange
47、事件取出点击行的值。protectedvoidgvProducts_RowDataBound(objectsender,GridViewRowEventArgse)if(e.Row.RowType=DataControlRowType.DataRow)switch(e.Row.RowType)caseDataControlRowType.DataRow:e.Row.Attributesstyle=cursor:hand;#region/点击行触发SelectedIndexChanged事件PostBackOptionsmyPostBackOptions=
48、newPostBackOptions(this);myPostBackOptions.AutoPostBack=false;myPostBackOptions.PerformValidation=false;myPostBackOptions.RequiresJavaScriptProtocol=true;Stringevt=Page.ClientScript.GetPostBackClientHyperlink(senderasGridView,Select$+e.Row.RowIndex.ToString();e.Row.Attributes.Add
50、BU层添加方法代码:publicintAddOutputProductInfo(stringProductID,stringparamOutputProductID,stringparamQuantity,stringparamPayable,stringparamPaid,stringparamDifference,stringparamCustomer,stringparamRemark,stringparamMainPerson,stringparamDate)intreturnValue=0;SqlConnectionmySqlConnectio
51、n=newSqlConnection();mySqlConnection.ConnectionString=strcon;。sqlQuery+=UPDATEPRODUCTSSETQunatityInStore=QunatityInStore-+paramQuantity+WHEREPRODUCTID=+ProductID+。returnreturnValue;UI层调用代码:当我们点击保存按钮后,首先调用CheckInput()方法判断信息是否填写完整,最后通过for循环检索出gridview中的产品信息并取出赋值后,再调用BU层的添加方法AddOutputProductInfo()批量添加到数据库中。protectedvoidbtnSave_Click(objectsender,EventArgse)this.Alert(确认保存单据信息?,提醒!);if(!CheckInfo()return;。if(this.gvMessage.Rows.Count0)for(inti=0;i0)this.Alert(已处理的订单,系统提示!);return;c