《商品销售管理系统的设计与实现毕业论文.doc》由会员分享,可在线阅读,更多相关《商品销售管理系统的设计与实现毕业论文.doc(36页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、毕业论文商品销售管理系统的设计与实现商品销售管理系统的设计与实现摘 要 :随着科学的不断进步,计算机应用已经遍布整个社会的每个角落。计算机在商业管理上的应用,使其逐步系统化、完善化。利用计算机帮助企业高效率完成销售管理的日常事务,是适应现代企业制度要求,也是推动企业销售管理走向科学化、规范化的必要条件。本系统就是基于以上思想而开发的,我们选用C#开发此系统,应用了ADO数据库访问技术。数据库选用目前功能强大的SQL SERVER 2005和Visual Studio 2005,它有存储量大,查询速度快,加之本身支持网络环境,进一步方便数据的传输等优点。由于销售管理是一项琐碎、复杂而又十分细致的
2、工作,在销售的各个环节中不允许出错,实行手工操作,每月就会耗费工作人员大量的时间和精力,该销售系统的使用将可以避免了以上的难题,不但能够保证单价,账目核算准确无误,而且还可以利用该系统对有关销售的各种信息进行统计,服务于财务部门和销售部门等的业务处理。本文通过对商品销售工作流程的深入了解及进行了可行性分析后,对商品销售管理系统作了需求分析、功能模块划分、数据库的设计以及界面设计,并成成了系统的开发。关键词:Visual Studio 2005 ;SQL Server 2005;数据库;商品销售;查询 。目录 引言.1.系统概述.系统研究现状.数据库访问方法.2.系统调研及可行性分析.系统调研.
3、系统总体目标. .可行性分析 .技术可行性.经济可行性.操作可行性.3.商品销售管理系统分析.系统需求分析 .功能需求.性能需求.系统流程图.4.商品销售系统管理系统设计 .10概要设计.10功能模块图.10数据库设计.10数据库需求分析.10数据库备份与恢复114.2.3 E-R模型设计.114.2.4表设计 .125.销售系统应用程序界面设计.13用户登录模块设计 .13销售系统主界面模块设计 .16商品销售录入模块设计.18商品销售查询模块设计.21退货管理模块设计.22商品进货录入模块设计.23库存管理模块设计 .255.8 供应商管理模块设计.26用户管理模块设计.27更改密码模块设
4、计.29结论.32参考文献 .33致 谢.34引言: 传统的商品销售管理在商品的统计和管理上不但麻烦,而且还十分的耗费人力和时间。而商品销售管理系统对商品的进货、退货、存货和销售情况等进行了综合统计和管理,使管理人员能够更快的得到自己想要的信息。一个好的商品销售管理系统首先应具备的是基本的信息管理,而商品销售管理系统不但对商品信息信息、代理商信息、订单信息等都进行了系统的管理,而且管理人员可以直接登陆系统查看所有的信息,也可以根据自己的需要搜索相关的信息。本文对系统开发中面临的问题及其解决方案进行详细的设计及合理安排,根据所掌握的技术对系统的各部分功能进行了实现。 伴随知识经济的发展和现代信息
5、技术的不断改进,人们的生活节奏越来越快,而对信息的要求越来越高,快捷方便已经成为信息的一个重要指标。对于一个好的零售公司,拥有完整全面的信息管理系统变得非常重要。在这种情况下,商品销售管理系统应运而生。通过本系统用户可以更快的获得最全面的信息,而且可以通过本系统查询所有需要的信息,大大的方便了用户的操作。目前的商品销售管理系统已能顺利完成商品的进、销、存工作,多为单机版,网络版还不多见,但网络版应是以后的发展重点。 1. BDE方法:它提供了存取各种文型和客户/服务器型数据库的驱动器程序。该方法直接访问Paradox和Dbase等数据库或通过DOBC(Open DataBase conneci
6、vity,开放数据库)来访问Access和PoxPro等数据库,还可通过内嵌方式访问SQL Servr、Oracle和DB2等大型数据库。2. ADO方法:ADO方法是微软提供的一种数据库访问技术。通过ADO技术可方便的访问各种类型的数据库,尤其对于OLEDB类型的数据库,ADO更是访问数据库的标准接口。Delphi通过ADO技术可让开发者快速访问关系或非关系型数据库,但使用时需安装ADO的数据库引擎。 3. MIDAS方法:MIDAS方法是Delphi用于开发多层应用系统的中间透明引擎。通过MIDAS,开发者可使用相同的组件来存取不同的后台应用程序服务器。这些后台应用服务程序包括COM+/D
7、COM应用程序服务器、MTS中间件或CORBA应用程序服务器。MIDAS方法实现了真正意义上的客户端程序与后台数据库的分离,但MIDAS的灵活性很差,与数据感应控件关联过于密切,限制了程序员的创造性。2.系统调研及可行性分析 2.1系统调研 (1)通过对商品销售管理进行调研分析后,确定了本系统将要实现的功能。 (2)在系统设置模块中实现对系统基本信息和路径进行设置。 (3)在权限管理模块中实现对用户级别的选择再组合相应的权限进行设置。(4)在代理商进/退货录入模块中实现代理商对商品进退货的记录的修改、增加和删除。(5)在定单进货数据录入窗口以及查询模块中实现对定单的录入和定单信息的查询。(6)
8、在商品分布查询模块中实现对各类商品的分布进行综合的查询。2.2系统总体目标 本商品销售管理系统系统在使用上比起原来的操作方式更加方便、简单;界面设计上美观大方;后期维护上比较容易,如要对功能模块方面作修改,则无需进行整个系统的重新架构。本系统是一个典型的数据库应用程序。现有的数据库应用程序开发技术已非常成熟,利用现有技术完全可以实现预定的功能。系统采用Delphi开发工具,该工具功能强大,扩展性强,适合任何的编程工作,这些技术完全胜任开发任务;并且利用该工具能使操作人员可在短时间能完全掌握系统维护工作。技术可行性结合本项目实际,本企业的业务量很大,但是其操作流程并不是很复杂,各种结构及流程十分
9、清晰,可以设计出符合实际需求的信息管理系统。vf6.0非常擅长对数据表和其间关系进行简单的操作,无论是查询,统计还是用报表进行数据输出,都能顺利完成。因此,从软件角度讲是vf6.0是完全可以胜任的。开发本系统所使用的vf6.0软件对于计算机的要求比较低:(1) WINDOWS 98以上版本(2) 80486或更高的处理器(3) MS WINDOWS支持的VGA或更高分辨率的显示器(4) 应用程序要求8MB RAM这样的要求市场上的计算机配置都能够达到,所以硬件的可行性也可达到。经济可行性由于销售企业目前完全采用手工方式完成业务,进行报表制作,对数据进行综合分析等。管理系统建成后由于不是直接用于
10、生产,因此直接经济效益较小,但是一定会间接的创造出十分可观的经济效益。由此可见,开发此系统在经济上是完全可行的。而且,由于系统在未来较长的时间内稳定发挥作用,这对于提高公司的综合管理水平、简化日常业务操作都将会起到很大的帮助。操作可行性销售企业的大多数员工从未使用过类似的管理系统,但是WINDOWS友好的界面和本系统简易的操作设置,可以使企业的内部员工很快掌握其各种操作。不仅如此,系统还附有详细的使用帮助文件,为本系统的正确使用给以图文并茂的形式加以说明。同时,在开发过程中,我们还可以尽量给用户以方便,充分考虑到用户需求的实际情况,在输入界面,查询界面、报表打印等部分添加注释或提示,并尽可能的
11、采用相关联的数据自动输入的功能,帮助用户尽快掌握系统的使用和减少数据的输入,以提高本系统的使用效率。3.商品销售管理系统分析经过以上对本系统的调研及可行性分析后,下面将对系统在功能上以及性能上进行进一步的需求分析。功能需求 由于商品销售管理系统是一个用来帮助使用者管理商品销售流程的软件。使用者通过对销售过程中所涉及到的商品,订单,销售商等资料的录入,便可以轻松实现商品销售流程的管理。所以,此系统必须向使用者提供一下一些具体功能: 1:软件必须向使用者提供商品基本的录入,删除,编辑等基本功能2:鉴于商品的不同销售方式(分为订单销售和代理商销售两种形式),软件必须向使用者提供商品销售环节中的基本管
12、理功能,因此必须有订单分销模块和代理商分销模块。 3:软件必须向使用者提供基本的查询功能。4:由于是销售管理软件,所以系统安全性必须是要考虑的问题。因此,必须实现以下两点: A:系统操作员机制。对系统的使用者,按等级开放管理权限,这样可以在一定程度上保证数据库系统的安全性,避免数据被泄漏,非法更改等。B:销售数据直接反映了一个销售单位的盈亏状况,鉴于销售数据的重要性,所以必须对这些数据加以保护,在系统崩溃时或者误操作等情况下,可以对数据进行恢复。这就需要系统提供备份功能。5 :对于销售数据不能只存储在计算机中,而是需要导出步骤,最后以印刷品的形式出现在使用者面前,该软件设计的最终目的才能得以具
13、体的实现。所以,打印功能是必不可少的系统功能之一。 性能需求 本系统的目标是:使用者通过对基本销售信息的录入,即可方便直观的实现对商品交易流程的管理,查询,以及对已有信息的打印输出等功能。本销售系统定义了两种销售模式:1订单销售。即销售方通过订单方式销售的商品。2代理商销售方式。(此功能略复杂,所以在实现的是时候必须对其提供录入修改查询等基本功能)。除了上述基本功能外,系统还必须提供必要的附加功能:1数据备份功能。2密码登陆功能。3操作员及相应的权限管理功能。综上所述,为实现上述系统目标,必须定义相应功能的单元模块。 登 录 否 重新登录 判断用户密码是否正确 是进 入 系 统 信 息 查 询
14、 信 息 修 改 查 询 条 件 重 增 加 修 改 删 除新输入错误提示信息 从数据库 更 新 读取信息 错误提示信息 更新到数据库 图3.2 系统流程图功能模块图供 应 商 管 理 库 存 管 理 进 货 录 入 退 货 管 理 销 售 查 询销 售 录 入用 户 管 理修 改 密 码商品销售管理系统系统管理模板销售管理模块 数 据 库 图 4.1 功能模块图 数据库在信息管理系统中占有非常重要的地位,数据库结构设计的好坏将直接影响系统的运行效率的高低和数据是否具有完整性和一致性。设计数据库系统时即要充分了解用户目前的需求,还要考虑到将来可能增加的要求。数据库需求分析用户的需求具体体现在各
15、种信息的提供,保存,更新和查询上,这就要求数据库结构能充分满足各种数据的输出和输入,收集和查询。经过对系统功能分析和需求总结,考虑到将来功能上的扩展。(1)、商品基本信息:包括商品编号,商品名称,供应商名称,供应商编号,商品进价,商品售价,进货日期,库存量,备注。(2)、商品供应商信息:供应商编号,供应商名称,负责人,联系 , ,备注等。(3)、商品销售信息:商品编号,销售日期,销售单价,销售数量,折扣,小计。(4)、商品销售记录:商品编号,销售日期,销售单价,销售数量,折扣,合计等。(5)、管理员信息:包含管理员代码,管理员姓名,密码,备注,rank(权限)等。数据库的备份与恢复信息数据是企
16、业中非常重要的资源,因此保证数据库的安全可靠、正确有效是非常重要的问题。为了保证数据库的安全性,本系统特意设计了数据库的备份与恢复。数据库备份主要用于对数据库中的现有数据进行备份,以便日后使用。数据库恢复主要用于当数据库中的数据损坏时进行数据的还原,以保证系统的正常运行和数据库中的数据的安全性。4.2.3 E-R模型设计 密码 权限 性别 名称 代号 用户名 地址 用 户 名 管 理 代 理 商联系人 管 理 管 理 进退货 日期订 单 商 品 日期 型号 编号 名称 数量 名称 代号 单价 数量 .3 E-R模型图4.2.4表设计(1).表名:liyi (用户表)字段名数据类型长度是否允许空
17、值约束usernameVarchar16Not nullPrimary keyPasswordVarchar16Not nullSafetyChar8Not null(2).表名:Supplier(供应商表)字段名数据类型长度是否允许空值约束Sup_idChar5Not nullPrimary keySup_nameVarchar20Not nullSup_contactVarchar20Not nullSup_phoneVarchar15Not nullSup_addressVarchar40Not null(3).表名:Purchase (进货表)字段名数据类型长度是否允许空值约束P_id
18、Char5Not nullPrimary keyP_nameVarchar20Not nullpriceFloatNot nullnumberIntNot nullP_dateVarchar20Not nullPrimary keySup_idChar5Not nullForeigner key(4).表名:Sale(销售表)字段名数据类型长度是否允许空值约束P_idChar5Not nullPrimary keyPriceFloatNot nullNumberIntNot nullTotalFloatNot nullS_dateVarchar20Not nullPrimary key(5).
19、表名:Return(退货表)字段名数据类型长度是否允许空值约束P_idChar5Not nullPrimary keyNumberIntNot nullR_dateVarchar16Not nullPrimary keyReasonVarchar50Yes窗体设计本窗体的任务是通过用户输入密码判断用户是否有资格进入系统并进行管理。它用于管理员按照用户名和密码进行登录。以免不相关得人进入系统进行不良的操作,而对系统进行破坏,导致整个系统进行瘫痪。主要代码为:namespace Sales partial class login private System.ComponentModel.ICon
20、tainer components = null; protected override void Dispose(booldisposing) if(disposing & (components != null) components.Dispose(); base.Dispose(disposing); #region Windows 窗体设计器生成的代码 private void InitializeComponent() this.groupBox1 = new System.Windows.Forms.GroupBox(); this.groupBox2 = new System.
21、Windows.Forms.GroupBox(); this.button_exit = new System.Windows.Forms.Button(); login = newSystem.Windows.Forms.Button(); this.label1 = new System.Windows.Forms.Label(); this.label2 = new System.Windows.Forms.Label(); this.textBox_username = new System.Windows.Forms.TextBox(); this.textBox_password
22、= new System.Windows.Forms.TextBox(); this.groupBox1.SuspendLayout(); this.groupBox2.SuspendLayout(); this.SuspendLayout(); this.groupBox1.Controls.Add(this.textBox_password); this.groupBox1.Controls.Add(this.textBox_username); this.groupBox1.Controls.Add(this.label2); this.groupBox1.Controls.Add(th
23、is.label1); this.groupBox1.Dock = System.Windows.Forms.DockStyle.Top; this.groupBox1.Location = newSystem.Drawing.Point(0, 0); this.groupBox1.Name = groupBox1; this.groupBox1.Size = new System.Drawing.Size(406, 144); this.groupBox1.TabIndex = 0; this.groupBox1.TabStop = false; this.groupBox2.Control
24、s.Add(this.button_exit); this.groupBox2.Controls.Add(this.button_login); this.groupBox2.Dock = System.Windows.Forms.DockStyle.Bottom; this.groupBox2.Location = newSystem.Drawing.Point(0, 150); this.groupBox2.Name = groupBox2; this.groupBox2.Size = newSystem.Drawing.Size(406, 91); this.groupBox2.TabI
25、ndex = 1;this.groupBox2.TabStop = false;this.button_exit.Location = newSystem.Drawing.Point(254, 32); this.button_exit.Name = button_exit; this.button_exit.Size = new System.Drawing.Size(81, 32); t.TabIndex = 1; this.button_exit.Text = 退出; this.button_exit.UseVisualStyleBackColor = true; this.button
26、_exit.Click += new System.EventHandler(this.button_exit_Click); this.button_login.Location = new System.Drawing.Point(61,32); this.button_login.Name = button_login; this.button_login.Size = new System.Drawing.Size(81,32); this.button_login.TabIndex = 0; this.button_login.Text = 登录; this.button_login
27、.UseVisualStyleBackColor = true; this.button_login.Click += new System.EventHandler(this.button_login_Click); this.label1.AutoSize = true; this.label1.Location = new System.Drawing.Point(77,45); this.label1.Name = label1; this.label1.Size = new System.Drawing.Size(53,12); this.label1.TabIndex = 0; t
28、his.label1.Text = 用户名:; this.label2.AutoSize = true; this.label2.Location = new System.Drawing.Point(77,89); this.label2.Name = label2; this.label2.Size = new System.Drawing.Size(41,12); this.label2.TabIndex = 1; this.label2.Text = 密码:; this.textBox_username.Location = new System.Drawing.Point(155,4
29、2); this.textBox_username.Name = textBox_username; this.textBox_username.Size = new System.Drawing.Size(157,21); this.textBox_username.TabIndex = 2; this.textBox_password.Location = newSystem.Drawing.Point(155,86); this.textBox_password.Name = textBox_password; this.textBox_password.PasswordChar = *
30、; this.textBox_password.Size = new System.Drawing.Size(157,21); this.textBox_password.TabIndex = 3; this.AcceptButton = this.button_login; this.AutoScaleDimensions = new System.Drawing.SizeF(6F,12F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.CancelButton = this.button_exit;
31、this.ClientSize = new System.Drawing.Size(406,241); this.ControlBox = false; this.Controls.Add(this.groupBox2); this.Controls.Add(this.groupBox1); this.MaximumSize = ne= login;this.StartPosition=System.Windows.Forms.FormStartPosition.CenterParent; this.Text = 登录; this.groupBox1.ResumeLayout(false); this.groupBox1.PerformLayout();this.groupBox2.ResumeLayout(false); this.ResumeLayout(false);#endregion private System.Windows.Forms.GroupBox groupBox1; private System.Windows.Forms.GroupBox groupBox2; private System.Windows.Forms.Butto
限制150内