资源描述
泉州信息职业技术学院毕业论文(设计)泉州信息职业技术学院 毕 业 论 文(设 计) 题 目 姓 名 学 号 专业班级 指导教师 2011年12月1日目录前言1第一章 可行性分析21.1 技术可行性分析21.2 经济可行性分析21.3 操作可行性分析2第二章 需求分析32.1 业务流程分析32.2 数据流程分析3第三章 数据库设计43.1 数据库需求分析43.2 数据库表设计43.2.1 管理员信息表43.2.2 职工信息表53.2.3 商品信息表53.2.4 供货商信息表63.2.5 进货信息表63.2.6 销售信息表73.2.7 库存信息表7第四章 系统设计84.1模块设计84.1.1 登陆模块设计84.1.2 职工管理模块设计104.1.3 商品信息管理模块124.1.4 供货商管理模块154.1.5 销售管理模块184.1.6 进货信息管理模块20总结24参考文献25II超市管理系统Web应用开发 09web 刘必贵摘 要超市管理系统是市场上最流行的超市上常用的系统之一,它主要包含以下几个模块:系统权限的设定、原始数据录入、数据的汇总及查询等。从而,实现对进货、销售及员工信息等实现全面、动态、及时的管理。本文系统的分析了软件开发的背景以过程;首先介绍了软件的开发环境,其次介绍了本软件的详细设计过程:数据库的设计、各个模块的设计和实现,以及具体界面的设计和功能。【关键字】超市、管理系统、数据库设计、系统设计、模块设计前言随着社会的不断发展,人们的生活水平不断提高,对社会的物质需求越来越高,同时人们的生活节奏不断加快,许多人没有时间去购物,为方便广大居民的生活,在本小区建立超市。随着人们生活水平的提高,人们对于消费品的需求急剧增加,有关此类商品的各种信息量也成倍增长。超市时时刻刻都需要对商品各种信息进行统计分析。本系统的设计正是实现了这一统计分析的功能。第一章 可行性分析随着计算机技术的发展和网络人口的增加,人们对网络的需求也越来越苛刻,越来越贴近其生活,电子信息管理已经成为网上的一股潮流。而更多的,是要求传统行业的管理要延伸到网络,以更方便其生活、工作和学习。可行性研究的目的,就是用最小的代价在尽可能短的时间内确定问题是否能够解决。要达到这个目的,必须分析几种主要的可能解法的利弊,从而判断原定的系统规模和目标是否现实,系统完成后所能带来的效益是否大到值得投资开发这个系统的程度。因此,可行性研究实质上是要进行一次大大压缩简化了的系统分析和设计的过程,也就是在较高层次上以较抽象的方式进行的系统分析和设计的过程。系统的可行性分析主要包括经济上的可行性、技术上的可行性和操作上的可行性。本系统的可行性分析如下:1.1 技术可行性分析 因为该系统具有友好的人机互操作界面,操作人员只要进行少量的培训,系统的功能和使用方法就基本上能够是系统顺利运行。1.2 经济可行性分析该系统带来的经济效益明显的,其最主要的表现就是减少了企业管理费用和人力开支,不仅节省了大量的时间,还为企业的各项决策提供了宝贵的资料,为企业带来巨大的经济效益。同时该系统可以提高超市的销售效率,即提高了超市的经济效益,所以从经济上完全是可行的。1.3 操作可行性分析本系统采用基于Windows的图形用户界面,而该系统是大家熟悉的操作系统,对于那些有一般的计算机知识的人员就可以轻松上手。而整个超市管理系统采用最友好的交互界面,简介明了,不需要对数据库进行深入的了解。综合以上三方面,该系统的操作是可行的,开发该系统可行。26第二章 需求分析2.1 业务流程分析超市管理系统工作流程为:系统启动并进入登录界面,系统管理员输入正确的用户名及密码后,登陆系统主操作界面,系统管理员可对系统相关信息进行操作,包括基本信息、货物信息、供应商信息、销售信息、仓库信息等。本系统的业务流程图如图1所示:厂商商品信息营业员订货信息购买信息顾客销售信息用户信息(员工)商品信息库存信息老板 图 1 业务流程图2.2 数据流程分析数据流程分析主要包括对信息的流动、传递、处理、存储等的分析。数据流程分析的目的就是要发现和解决数据流通中的问题。现有的数据流程分析多是通过分层的数据流程图(data flow diagram,简称DFD)来实现的。其具体的做法是:按业务流程图理出的业务流程顺序,将相应调查过程中所掌握的数据处理过程,绘制成一套完整的数据流程图。超市管理系统的数据流程:对本系统操作的数据源有普通用户、注册用户和管理员三种,首先由系统管理员根据不同用户的需要将某些信息保存到数据库中,然后再进行发布。不同权限的用户可以对这些库信息进行添加、修改和删除处理。所有用户均可以进行信息查询。通过对本系统的需求分析,系统的基本功能已经确定。第三章 数据库设计3.1 数据库需求分析 用户的需求具体体现在各种信息的提供、保存、更新和查询方面,这就要求数据库结构能充分满足各种信息的输入和输出。收集基本数据、数据结构及数据处理的流程,组成一份详尽的数据字典,为后面的具体设计打下基础。通过系统功能分析,针对超市管理系统,总结出如下的需求信息:1)用户为管理员用户;2)管理员用户登陆后可进行管理员信息、货物信息及厂商信息等的维护,以且货物入库、货物出库及统计信息的维护;经过系统功能分析和需求总结,考虑到将来功能上的扩展,设计如下的数据项和数据结构:1)管理员信息表包括数据项:帐号,密码等。2)职工信息表包括数据项:职工编号,姓名,性别,籍贯,学历,类别,工资,联系电话,联系地址,身份证号,聘用日期,编制日期,备注等。3)商品信息表包括数据项:商品编号,供货商号,名称,条形码,计量单位,类别,产地,单价,备注,等。4)供货商信息表包括数据项:供货商号,名称,联系人,联系电话,联系地址,开户行,银行帐号,备注等。5)进货信息表包括数据项:进货单号,商品编号,供货商号,进货价,数量,金额,进货日期,备注等。6)销售信息表包括数据项:销售单号,商品编号,销售数量,销售日期等。7)库存信息表包括数据项:商品编号,库存数量等。3.2 数据库表设计3.2.1 管理员信息表管理员信息表存储管理员信息。表中各字段功能定义如表1所示。中文字段名英文字段名字段类型长度主键/外键字段值约束帐号loginIDchar6P/FNOT NULL密码passWordchar6NOT NULL 表 1 管理员信息表3.2.2 职工信息表职工信息表用于存储职工信息,表中个字段功能定义如表2所示。中文字段名英文字段名字段类型长度主键/外键字段值约束职工编号staffIDchar6PNOT NULL姓名namenvarchar8NOT NULL性别sexnchar2NOT NULL籍贯homenvarchar4NULL学历diplomanvarchar4NOT NULL类别kindnvarchar10NULL工资salaryint4NULL联系电话phonevarchar12NULL联系地址addressnvarchar50NULL身份证号idCardvarchar18NOT NULL聘用日期beginDatedatetime8NULL编制日期enactTimedatetime8NULL备注othersntext50NULL 表 2 职员信息表3.2.3 商品信息表商品信息表用于存储商品的信息。表中各字段功能定义如表3所示。中文字段名英文字段名字段类型长度主键/外键字段值约束商品编号merchIDchar6PNOT NULL供货商号profferIDchar6FNOT NULL名称fullNamenvarchar80NOT NULL条形码barCodechar15NOT NULL计量单位metricUnitvarchar4NOT NULL类别kindnvarchar8NULL产地birthPlacenvarchar50NULL单价unitCostmoney4NOT NULL备注othersntext50NULL 表 3 商品信息表3.2.4 供货商信息表供货商信息表用于存储供货商的信息。表中各字段功能定义如表4所示。中文字段名英文字段名字段类型长度主键/外键字段值约束供货商号profferIDchar6PNOT NULL名称fullNamenvarchar50NOT NULL联系人contactPersonnvarchar8NOT NULL联系电话phonevarchar12NOT NULL联系地址addressnvarchar50NOT NULL开户行openingBanknvarchar10NULL银行帐号 accountIDvarchar15NULL备注othersntext50NULL 表 4 供货商信息表3.2.5 进货信息表进货信息表用于存储货物入库的信息。表中各字段信息如表5所示。中文字段名英文字段名字段类型长度主键/外键字段值约束进货单号importBillIDchar6PNOT NULL商品编号merchIDchar6P/FNOT NULL供货商号profferIDchar6FNOT NULL进货价importPricemoney4NOT NULL数量quantityint4NOT NULL金额totalMoneymoney4NOT NULL进货日期importDatedatetime8NOT NULL备注othersntext50NULL 表 5 进货信息表3.2.6 销售信息表销售信息表用于存储商品销售的信息。表中各字段信息如表6所示。中文字段名英文字段名字段类型长度主键/外键字段值约束销售单号saleBillIDchar6PNOT NULL商品编号merchIDchar6P/FNOT NULL销售数量saleNumint4NOT NULL销售日期saleDatedatetime8NOT NULL 表 6 销售信息表3.2.7 库存信息表库存信息表用于存储仓库内商品的信息。表中各字段信息如表7所示。中文字段名英文字段名字段类型长度主键/外键字段值约束商品编号merchIDchar6P/FNOT NULL库存数量storeNumint4NOT NULL 表 7 库存信息表第四章 系统设计4.1模块设计用户界面的大部分功能都是以管理模块为前提的,因为客户模块所显示的数据大部分需要通过管理模块来添加。因此,我们首先要来介绍管理模块的设计与开发。管理模块相对客户模块要复杂一些,因为在这里需要对所有信息进行维护,包括浏览、增加、修改和删除等操作。为了便于系统维护,页面的命名才用“模块名+功能名”的方式。概括起来,管理模块具有以下功能:* 管理员登陆。* 职员信息管理。* 商品信息管理。* 供货商信息管理。* 销售信息管理。* 进货信息管理。* 库存信息管理。4.1.1 登陆模块设计 该模块位于系统的首页。用户输入用户名和密码后,系统进行验证,验证通过进入程序的主界面。登陆界面如图2所示。 图 2 登陆界面实现代码如下: public bool Veri(string tb_table, string Id, string Pwd) DataClass.MyMeans MyClass = new SMMS.DataClass.MyMeans(); bool jud = false; if (Id != & Pwd != ) SqlDataReader temDR = MyClass.getcom(select * from + tb_table + where UserName= + Id.Trim() + and Pass= + Pwd.Trim() + ); jud = temDR.Read(); if (jud) DataClass.MyMeans.Login_Name = Id.Trim(); DataClass.MyMeans.Login_ID = temDR.GetString(0); DataClass.MyMeans.My_con.Close(); DataClass.MyMeans.My_con.Dispose(); else MessageBox.Show(用户名或密码错误!, 提示, MessageBoxButtons.OK, MessageBoxIcon.Information); MyClass.con_close(); else MessageBox.Show(请将登录信息添写完整); return jud; 4.1.2 职工管理模块设计该模块主要有对职工的添加,修改,删除等功能,能够对职工进行合理的管理,界面如图3所示。 图 3 职工管理界面 实现代码如下:private void btnSave_Click(object sender, EventArgs e) string RecID; if (txtName.Text = ) MessageBox.Show(请添加职工姓名!); txtName.Focus(); else if (Jud = 1) RecID = MyMC.GetAutocoding(tb_Worker, WorkerID);/获取编号 Find_SQL = insert into tb_Worker(WorkerID,WorkerName,Remark) values(+RecID+,+txtName.Text+,+txtRemark.Text+); MyDataClass.getsqlcom(Find_SQL); MessageBox.Show(添加成功!); InfLoad(); WinstateT(); if (Jud = 2) Find_SQL =update tb_Worker set WorkerName=+txtName.Text+,Remark=+txtRemark.Text+ where WorkerID=+txtWorkerID.Text+; MyDataClass.getsqlcom(Find_SQL); MessageBox.Show(修改成功!); InfLoad(); WinstateT(); 4.1.3 商品信息管理模块此模块进行对商品信息的录入,能够对商品进行合理的管理,界面如图4所示。 图 4商品信息管理界面实现代码如下:private void btnAdd_Click(object sender, EventArgs e) bool t = false; string txt; string RecID; string TypeID; if (txtName.Text = ) MessageBox.Show(请输入商品名称!); txtName.Focus(); else if (txtPrice.Text = ) MessageBox.Show(请输入商品单价!); txtPrice.Focus(); else if (comboxType.Text = ) MessageBox.Show(请选择商品类型!); comboxType.Focus(); else if (txtKeep.Text = ) MessageBox.Show(请输入保质期); txtKeep.Focus(); else txt = txtName.Text.Trim(); SqlDataReader temDR = MyDataClass.getcom(select * from tb_Goods where GoodsName = + txt + ); t = temDR.Read(); if (t) MessageBox.Show(此商品名称已存在!); txtName.Text = ; txtName.Focus(); else string Find_SQL2; string RecID2; try TypeID = My_Set.Tables0.RowscomboxType.SelectedIndex0.ToString(); RecID = MyMC.GetAutocoding(tb_Goods, GoodsID);/获取编号 RecID2 = MyMC.GetAutocoding(tb_Stock, StockID);/获取编号 Find_SQL = insert into tb_Goods(GoodsID,GoodsName,TypeID,Remark,Price,Keep) values ( + RecID + , + txtName.Text + , + TypeID + , + txtRemark.Text + , + txtPrice.Text + , + txtKeep.Text + ); Find_SQL2 = insert into tb_Stock(StockId,GoodsID,Amount) values ( + RecID2 + , + RecID + ,0); MyDataClass.getsqlcom(Find_SQL); MyDataClass.getsqlcom(Find_SQL2);/向库存添加信息 MessageBox.Show(添加成功!); ListViewItem l = new ListViewItem(); l.Text = txtName.Text; l.SubItems.Add(comboxType.Text); l.SubItems.Add(txtPrice.Text); l.SubItems.Add(txtKeep.Text); l.SubItems.Add(txtRemark.Text); listView1.Items.Add(l); btnCancle_Click(sender, e); catch (Exception ec) MessageBox.Show(ec.Message); MessageBox.Show(添加失败); 4.1.4 供货商管理模块此模块有对供货商的添加,修改,删除等功能,能够对供货商进行合理的管理。界面如图5所示。 图 5 供销商管理界面实现代码如下:private void btnSave_Click(object sender, EventArgs e) bool t = false; string txt; string RecID; if (txtName.Text = ) MessageBox.Show(请输入供货商名称!); txtName.Focus(); else if (Jud = 1) txt = txtName.Text.Trim(); SqlDataReader temDR = MyDataClass.getcom(select * from tb_Supplier where SupplierName = + txt + ); t = temDR.Read(); if (t) MessageBox.Show(此供货商名称已存在!); txtName.Text = ; txtName.Focus(); else RecID = MyMC.GetAutocoding(tb_Supplier, SupplierID);/获取编号 Find_SQL = insert into tb_supplier(SupplierID,SupplierName,Tel,Address,Remark) values ( + RecID + , + txtName.Text + , + txtTel.Text + , + txtAddress.Text + , + txtRemark.Text + ); MyDataClass.getsqlcom(Find_SQL); MessageBox.Show(添加成功!); InfLoad(); WinstateT(); if (Jud = 2) txt = txtName.Text.Trim(); Find_SQL = select * from tb_Supplier where SupplierName = + txt + and SupplierID!=+ ID+; SqlDataReader temDR = MyDataClass.getcom(Find_SQL); t = temDR.Read(); if (t) MessageBox.Show(此供货商名称已存在!); txtName.Text = ; txtName.Focus(); else Find_SQL = update tb_Supplier set SupplierName= + txtName.Text + ,Tel= + txtTel.Text + ,Address= + txtAddress.Text + ,Remark= + txtRemark.Text + where SupplierID=+ID+; MyDataClass.getsqlcom(Find_SQL); MessageBox.Show(修改成功!); InfLoad(); WinstateT(); 4.1.5 销售管理模块销售员将销售信息录入方便了销售工作,提高了工作效率。界面如图6所示。 图 6 销售管理界面主要代码实现:private void button2_Click(object sender, EventArgs e) if (txtSum.Text.Trim().Length != 0) string s1; string s2; string s3; string s4; float zl; float PayS; if (txtPayS.Text = ) PayS = 0; else PayS = float.Parse(txtPayS.Text); zl = PayS - TotalPrice; txtPayS.Text = PayS.ToString(); txtPayY.Text = TotalPrice.ToString(); txtZL.Text = zl.ToString(); s1 = 商品数量 + Amount1+ 件 + n + n; s2 = 实付款 + PayS + 元 + n + n; s3 = 应付款 + TotalPrice.ToString() + 元 + n + n; s4 = 找零 + zl.ToString() + 元 ; MessageBox.Show(s1+s2+s3+s4, 系统提示); txtPayS.Text = ; txtPayY.Text = ; txtZL.Text = ; txtID.Text = ; txtAmount.Text = ; txtSum.Text = ; TotalPrice = 0; Amount1 = 0; listView1.Items.Clear(); else MessageBox.Show(请购买商品!); 4.1.6 进货信息管理模块 录入进货信息加强对商品的管理,使商品信息更为详细,方便了对商品的管理。界面如图7所示。 图 7进货管理界面实现代码如下:private void btnAdd_Click(object sender, EventArgs e) bool t = false; string txt; string RecID; if (txtID.Text = ) MessageBox.Show(请输入商品编号!); txtID.Focus(); else if (txtPrice.Text = ) MessageBox.Show(请输入商品单价!); txtPrice.Focus(); else if (txtAmount.Text = ) MessageBox.Show(请输入商品数量!); txtAmount.Focus(); else if(comPy.Text=|comPm.Text=|comPd.Text=) MessageBox.Show(请将生产日期填写完整!); else if (comBy.Text = | comBm.Text = | comBd.Text = ) MessageBox.Show(请将进货日期填写完整); else txt =txtID.Text.Trim(); SqlDataReader temDR = MyDataClass.getcom(select * from tb_Goods where GoodsID = + txt + ); t = temDR.Read(); if (!t) MessageBox.Show(此商品不存在!); txtID.Text = ; txtID.Focus(); else string Find_SQL2; string RecID2; try string GoodsID; string SupplierID; string datep; string dateb; datep =comPy.Text + / + comPm.Text + / + comPd.Text; dateb = comBy.Text + / + comBm.Text + / +comBd.Text; GoodsID = txtID.Text; SupplierID = My_Set.Tables0.RowscomSupplier.SelectedIndex0.ToString(); RecID = MyMC.GetAutocoding(tb_Buy, BuyID);/获取编号 RecID2 = MyMC.GetAutocoding(tb_Stock, StockID);/获取编号 Find_SQL = insert into tb_Buy(BuyID,GoodsID,EmployeeID,Price,Amount,Datep,Dateb,SupplierID,Remark) values ( + RecID + , +txtID.Text + , + DataClass.MyMeans.Login_Name + ,+txtPrice.Text +,+ txtAmount.Text+ ,+datep+,+dateb+,+SupplierID+,+txtRemark.Text+); Find_SQL2 = Update tb_Stock set Amount = Amount + +txtAmount.Text+where GoodSID=+GoodsID+; MyDataClass.getsqlcom(Find_SQL); MyDataClass.getsqlcom(Find_SQL2);/向库存添加信息 MessageBox.Show(添加成功!); ListViewItem l = new ListViewItem(); l.Text =RecID; l.SubItems.Add(txtID.Text); l.SubItems.Add(txtPrice.Text); l.SubItems.Add(txtAmount.Text); l.SubItems.Add(comSupplier.Text); l.SubItems.Add(txtRemark.Text); listView1.Items.Add(l); btnCancle_Click(sender, e); catch (Exception ec) MessageBox.Show(ec.Message); MessageBox.Show(添加失败); 总结在学习当中认我认识到开发一项好的软件不是某一个人就能完成的任务。一个团队的小组,一个勤奋的小组非常重要,沟通是解决问题的就好办法。俗话也得好:“不怕虎一样的敌人,就怕猪一样的队伍”。所以小组中的每个成员的能力与协作能力也是致关重要的。同时,不仅是团队内部的交流,更多需要协调好团队之间的交流。其次呢,在实习中我了解了,在开发一个项目时一定要先做好规划,按照软件的开发过程,详细地写好每一个必要的文档。一般的规则是,写文档需要团队协作,这样就允许开发人员和文档编写者利用彼此的长处,取长补短。例如,如果预期读者是系统设计师,开发人员需要提供技术细节,然后文档编写者按照正确语法组织和编辑内容。软件文档的最主要目标是传达一个系统的技术要素和使用方法。第二个目标是提供软件开发过程中的需求,决策,行为,角色和责任的书面记录。只有实现了这两个目标,软件文档才真正提供了有意义的信息。软件的概念就是:程序+文档,程序就是文档,文档集成在程序中。它要求在选择开发环境时不仅要考虑环境对设计、开发的完美支持,而且要考虑对维护、文档的支持;它要求软件人员在设计、开发过程中要考虑维护问题、文档问题;它要求程序与文档存储在同一位置、同一系统中;它要求使用相同工具进行程序与文档的书写、检索;它要求在编写和维护程序的同时形成文档,在书写文档时编写、维护程序。程序与文档合一的概念不仅存在于系统的设计、开发阶段而且存在于系统的维护阶段,它贯穿软件的生命周期。参考文献1 Konrad King(美),杜大鹏著.SQL编程实用大全M.中国水利水电出版社2005.5.2 高守传著.SQL结构化查询语言详解M.人民邮电出版社.2007.5.3 微软公司著.SQL Sever2005数据库开发与实现M.人民邮电出版社.2007.9.4 宋昆,李严著. SQL Server数据库开发实例解析M.机械工业出版社.2006.1.5 李俊民,高春燕著. Access数据库开发实例解析M.机械工业出版社.2006.1.
展开阅读全文