• 797.50 KB
  • 2022-04-22 13:46:55 发布

开发小型超市系统目的和应用毕业论文.doc

  • 41页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'开发小型超市系统目的和应用毕业论文目录1前言11.1社会背景11.2超市背景11.3开发小型超市系统目的和应用范围22可行性的研究32.1问题定义32.2技术可行性研究32.3经济可行性研究32.4操作可行性研究43需求分析53.1系统的需求分析53.2业务流程需求分析53.3功能需求73.4性能需求73.5运行需求74系统设计与功能模块分析94.1设计思想94.2设计原则94.3系统总体结构图104.3各子系统功能分析104.4系统数据模型分析与设计164.5系统数据库详细设计184.6系统主要用户界面224.7系统实现225总结23参考文献24II 附录25致谢37II 1前言1.1社会背景随着现代科学技术的迅猛发展,计算机技术已渗透到各个领域,成为各行业必不可少的工具,特别是Internet技术的推广和信息高速公路的建立,使IT产业在市场竞争中越发显示出其独特的优势,步入数字化时代,有巨大的数据信息等待着加工处理和传输,这使得对数据库的进一步开发和利用显得尤为迫切。作为国内市场的一些中小超市,他们在信息化过程中的步伐要落后大中型超市,而对于这些企业的资源管理,信息的存储和处理也显的迫切需要,要适应市场竞争,就需要有高效的处理方式和管理方法,因此加快超市的电算化进程是必不可少的。在会计业务中,产成品的完成,发出和结存关系到超市销计划的完成和流动资金占用情况,而销售核算子系统是电算化会计系统中一个关键且比较复杂的子系统。通过这个子系统提供的信息可以了解企业的经营成果,通过商品销售收入用来补偿已消耗的生产资料,支付工资和其他费用,缴纳税金并实现利润。我通过对市场的调查,针对现在各中小超市对销售业务的实际需要,开发了这套商品销售系统。在开发过程中,我针对当前各超市管理特点和技术人员的实际水平,采用Window基于图形界面这一易学易用的操作系统环境,在系统设计过程中,我尽量采用一些易懂易读的接口界面,使用户可以在短期内完全掌握。在功能方面,我借鉴现在市场上流行的财务软件的特点,抛去泛泛不实用的缺点,使我设计的系统在功能上极贴近中小超市的使用要求。在设计过程中,我始终把系统的正确性放在首位,力求数据的完整,处理的正确性。在此基础上优化程序代码,加速系统运行和减少对系统资源的占用。作为一家中小型超市,他们的主要业务是销售商品,目前系统运做中存在很多题,所有的进货单,出货单都是人工填写,耗时而且易出现错误;库存也是人工记帐,无法随时掌握最准确的存货情况;对于销售数据,往往要花好多时间和精力去计算每个业务员的销售业绩,每项商品的销售状况,为了解决上述问题,提高经济效益,准备导入进销存系统进行销售、采购、库存等的计算机化管理。1.2超市背景超市形式在我国于20世纪90年代初期起步,现已成为我国零售业的一种重要形III 态。随着超市的高速发展,其经营管理也变的愈加复杂,早期的售货员站柜台的形式早已不能满足现有销售业的的发展这样就迫切地需要引入新的思想技术和管理技术进入到超市管理之中。超市形态具有种种优点,但在目前状况下,它仍存在零售业商业企业所共有的落后的一面,如:不能有效的管理每一种商品,收款结算速度慢,容易出现营业差错,不宜进行商品调价,盘点效率底等,而且在超市日常管理中,商品进、销、存决策以经验为主,缺乏实时分析功能,管理人员对及时传递资料的要求始终得不到满足,随着超市形态的高速发展,其经营管理也变的愈加复杂,日常所需处理的数据量也逐渐增大,商业运转的中间环节也越来越多,原始的人工管理已无法应对这复杂的市场。为此,我在本次设计之中选择了超市信息管理系统设计,依靠现代化的计算机信息处理技术来管理超市,从而节省了大量的人力、物力、改善了员工的工作条件,减轻了劳动强度,并且能够快速反映出商品的进销存状况和各种反馈信息分析,使管理人员快速对市场的变化作出相应决策,加快超市的系统建立的技术基础。超市系统应该以数据库为基础的信息管理系统,它一般包含两个方面内容:一个数据库设计,二是程序设计。在建立该系统之前,一般应先进行系统的需求分析,了解拥护对系统的要求,然后进行系统的总体设计,最后编写程序代码和调试程序。1.3开发小型超市系统目的和应用范围目的:(1)大大提高超市的运作效率;(2)通过全面的信息采集和处理,辅助提高超市的决策水平;(3)使用本系统可以迅速提升超市的管理水平,为降低经营成本,提高工作效率和增强超市的扩张力,成为超市营业者的追求目标。应用范围:本系统只适合于各种小型的超市。2可行性的研究38 2.1问题定义因为商品按类管理,所以需要有一系列的商品类型信息,首先商品必须属于一个商品类型,如果一个商品类型存在商品或存在下级商品类型则该类型不该删除,需要记录供应商信息和在涉及商品数量的地方,要给出相应的单位和在进货信息中要包含供应商等信息,商品销售信息单中要包含登记商品和销售数量单价等信息,商品报损要有报损原因,以及进货、销售、报损操作要有相应操作员信息,只有管理员登陆之后才可以使用系统,默认的管理员不可以删除、进货、销售、库存,但报损信息可以添加、修改、删除、分类、查找。2.2技术可行性研究在IT行业中从业的工作人员一般都要求懂计算机,具有一定软硬件基础,会使用各种管理软件,熟悉IT商品。因为超市中的对员工素质要求比较高,从管理层到下面的营销人员,都要求具有一定的IT背景,所以在新系统投入使用时,只要对员工进行少量的培训,系统的功能和使用方法就基本上能够使系统顺利的运行了。2.3经济可行性研究因为通过网络传递销售信息,可以不受距离的限制,因此可以节约许多的人力和物力、方便管理等好处,并且可以减少不必要的开支,同时该系统可以提高企业的销售效率,即提高了企业的经济效益,所以从经济上是完全可行的。⑴企业有能力承担研发开支开发新系统的工作是一项艰巨复杂的工作,它的投资主要是人力和物力的投资。对于本系统的开发来说,其主要投资还是在人力和物力两个方面。如果是企业自己安排人手开发系统的话,其主要的投资还是在人力资源上,从系统的业务需求调查到系统的分析编码制作都是需要巨大的人力投入的。超市作为一个尖端的高科技产业,其员工要求都比一般企业的要求要高,而且对系统开发及软件产业了解比较多,所以在自我开发管理系统的过程中,企业自己比较容易安排人手,这样就可以为企业节约大部分的额外开支。同时超市就其他商品还说,属于高端行业,无论是商品的价格还是质量都比较高,而经营商品的经销商或者是商家都要求有雄厚的资金的作支持。所以,在系统的开发过程中,企业完全有能力承担开发费用。38 ⑵新系统将为企业带来经济效益管理系统是一个信息化、智能化和先进管理理念的集合体。而管理是一个动态过程,在其运行过程中要采取多项措施。所以在管理中获得经济效益是一个综合效益,要对他进行直接定量的分析是比较困难的。一般新系统带来的经济效益是间接的,其最主要的表现就是减少了企业的管理费用和人力开支。而其他一些烦琐的事物都通过新系统来加以分析解决,不仅节省了大量的时间,还为企业的各项决策提供了宝贵的资料,为企业带来巨大的经济效益。2.4操作可行性研究本系统采用Windows图形界面,是大家熟悉的操作系统,对于用户只需要具有一般的计算机知识的人员都可以轻松上手。而且整个销售系统采用最友好的交互界面,简洁明了,不需要对数据库非常了解。由此,该系统的操作是可行的,有必要推广该系统,综合以上三方面,该系统具有很高的开发可行性,无论是从技术上经济上还是操作上。3需求分析38 3.1系统的需求分析⑴用户工作流程进货或销售商品时,用户要对进货单或销售单进行核对审查,并进行登记;用户要获得进货、销售、库存信息时,要对销售情况、库存情况进行查询并打印。⑵用户业务需求该管理软件将对库存商品进行资料管理和统计,对商品的进货单和商品的销售单进行录入管理和统计;该管理软件将根据用户的需要对进货、销售、库存情况进行查询,并能打印详细信息;该管理软件将为用户提供帐号管理工具,以便用户对帐号进行管理,具体为添加用户、删除用户、修改用户密码;该管理软件提供企业人员管理,能够企业员工的分类管理,新员工的加入以及员工删除,修改基本信息等功能。(3)用户的模块需求首先用户对系统的模块的设计分析,对于超市来说商品类型、管理、供应商、进入货、销售等和数据管理、操作员,这些都是必不可少的,所以设计模块的时候应该如图2-1:超市销售管理系统商品类型管理模块商品管理模块供货商管理模块商品进货管理模块商品销售管理模块系统数据管理用户管理模块图2-1超市销售管理功能模块图3.2业务流程需求分析38 超市进销存管理系统主要是以先进的管理理念和科学的计算机技术来取代原始的手工操作。在新系统开发前,我们对整个超市进销存业务流程进行了系统的调查,得出下面的业务流程。新系统主要业务分析:a.进货业务:进货管理是企业生产经营活动中极其重要的一环,它关系到商品质量能否得到保证,生产是否能够顺利进行,采购成本能否得到有效控制等问题。企业现代管理观念中对企业的进货管理提出新的要求,企业进货时对供货商的选择更加慎重,双方不在是讨价还价的买卖关系,而是一种相互依存的合作伙伴关系,并且还需认识到企业商品质量要从采购抓起,这就关系到分供方的供货、服务质量。其下为进货业务程序的主要内容:供应商情况调查:在实施采购之前,企业首先就要对市场上各大商品供货商进行详细的摸底调查,了解公司的具体情况,平定企业的信誉级别和公司市场口碑,做到准确无误,采购顺利。采购计划编制:企业根据自身的资金条件和销售状况,综合分析市场规律,拟订采购计划表。实施进货时根据供货方档案及评审结果来选定供货方,并生成定货单给选定的供货方,双方就价格、数量、质量等方面洽谈磋商直至签定合同,之后跟踪合同执行和安排供货进度和货物运输,做好验收入库工作。b.库存业务:库存管理是指在生产经营中为销售和耗用而储存的各种资产。企业存货不当都会增加不必要的费用,例如存货过多将导致物资积压、存储费用增加、流动资金周转不利,并且过量的库存会导致管理不善的问题。存货不足则影响企业的正常销售活动。库存管理的目标是寻求最佳存货数量,使库存的成本总额最小化。其主要业务如下:(1)商品入库、出库、盘库等日常处理。(2)科学合理地确定某库存物资的库存控制参数。例如:最佳定货批量、最大库存量、最佳缺货量、最佳订购周期等,进行严格的库存控制工作。(3)汇总统计各类库存数据,反映和监督储备资金占用及采购资金使用情况。c.销售业务:销售对一个企业的生存和发展是至关重要的,它不再是传统意义上的“卖东西”,它对外关系到企业商品、服务和企业形象等多方面因素,对内涉及到销售、库存、财务、生产等信息。此外信息化的高速发展为企业的销售工作提出了新的挑战,封闭意味着落后,企业要抓住时机,引入现代化的销售管理模式,实施企业的信息化、智能化销售管理,才能使企业在激烈的市场竞争中立于不败之地。销售过程中主要涉及到如下几点业务:38 d.超市直销业务:在超市销售行业中,其主要的销售手段就是超市商店的直销业务。企业通过其超市,通过市场信息推广,广告业务,以及一些大型的促销活动,扩大其市场影响力,从而达到吸引顾客,提高销售量。3.3功能需求本系统采用自定向下方法开发,其功能主要有如下几个部分:入库管理、库存管理、销售管理、员工管理和系统。具体的功能描述如下: 入库管理:其功能是对入库商品信息进行管理,并进行入库查询。库存管理:其功能是对库存信息进行查询以及库存统计。销售管理:其功能是提供一般的销售管理,能够进行销售明细查询和打印销售表。系统管理:其功能是为系统的使用者进行帐户和密码管理以及基础数据维护。3.4性能需求⑴数据精确度商品的进货单和销售单中,单价、金额采用浮点数,数量都取长整数。⑵时间特性该管理系统软件从启动到进入系统登录界面的时间正常情况下少于5秒,录入并更新数据的时间正常情况下少于10秒。⑶适用性该管理系统软件适用于Windows98/Windows2000/WindowsMe/WindowsXP/Windows7中文版下运行。3.5运行需求⑴用户界面窗体特性:本系统采用eclipse开发软件制作,其窗体都是采用弹出式浮动窗体,在运行系统时,首先就是登陆窗口,进入之后就是典型的下拉式主窗体,其下拉菜单为各系统模块的相关子模块。输入输出时间:输入输出时间格式为年月日(YY/MM/DD)。⑵硬件接口运行本系统的硬件基本要求如下:CPU:至少Pentium400以上,建议使用Pentium800以上;38 内存:至少32M以上,建议使用64M以上;硬盘:至少20M硬盘空间;显示器:14″显示器;其它:键盘、鼠标、1.44MB软驱和光驱等。 ⑶软件接口本系统,在打包成setup.exe后,能够在Windows系统各版本中运行。4系统设计与功能模块分析38 4.1设计思想(1)系统分成几个相对独立的模块,但这些模块都进行集中式管理。(2)分层的模块化程序设计思想,整个系统采用模块化机构设计。作为应用程序有较强的可操作性和扩展性。(3)合理的数据流设计,在应用系统设计中,相对独立的模块间以数据流相互连接,使各模块间的耦合性较低,方便系统运行,提高系统安全性。4.2设计原则为了使本系统功能齐全完备,操作简便,最大限度的提高软件的质量,从而满足用户的实际需要,在设计开发过程中遵循了,如下原则:(1)合法性原则:依据商品核算系统的工作规定以及要求,参照核算实际的工作情况,进行诸如商品经货、销售等工作。(2)实用性原则:适合商品信息管理工作的实际需求,并能够处理一些特殊情况的要求,此外,尽可能预留空间,以便扩充功能。(3)准确性原则:对输入的相关资料建立检错机制,及时报错,使用户能够及时准确的输入合法资料(如类型匹配,长度不超限等)。(4)易操作原则:要求设计的系统功能齐全,接口友好,操作方便,必要的地方进行提示。(5)源程序可读性原则:为了便于其它设计,维护人员读懂代码或以后的代码修改,软件升级维护,既可能做好代码注释工作。(6)优化原则:为了达到优化的目的,合理的运用窗口,菜单,对象等的继承自定义用户对象,事件,函数,减少不必要的重复性代码,使程序简洁明了,也方便了将来的维护。(7)安全性原则:该系统的管理员具有可设置登陆密码,修改密码的权限。经过前面的设计,我们对整个系统有了一个初步的认识,并对各个模块进行了功能分化。4.3系统总体结构图38 对于系统的设计首先要对其进行全面性的认识和了解,对总体结构进行构思,如下:超市销售管理进货管理系统管理库存管理销售管理库存查询商品管理厂商管理工作员管理用户管理库存报表销售查询入库查询入库操作商品销售图4-1超市销售管理系统结构图4.3各子系统功能分析 ⑴系统登陆模块功能:本模块的主要功能是对用户身份进行验证,只有系统的合法用户才能进入系统。其窗体如图4-2:图4-2用户确认界面在进行系统登陆过程中,登陆模块将调用数据库里的用户数据表,并对用户名和密码进行验证,只有输入了正确的用户名和密码后,系统登陆才会成功。在登陆模块中,对系统的尝试登陆次数进行了限制,禁止用户无终止的进行系统登陆尝试,系统38 将自动禁止登陆,退出登陆模块。并在输入了错误的或者是不存在的用户名和密码时,系统会给出出错信息提示,指明登陆过程中的错误输入或错误操作,以便用户进行正确的登陆。其报错信息如图4-3所示:图4-3登入错误界面输入项、输出项:输入项为用户名和密码。用户名和密码均为字符串,最大长度为16个字符,密码以“*”号显示(英文和数字算一个字符,汉字算两个字符)。程序逻辑:系统登陆流程图如图4-4所示:图4-4系统登陆流程图接口:本模块为顶级模块,按确定按钮时,如果输入的用户名和密码正确,将调用系统主窗体模块,进入系统主窗体。存储分配:在用户按下确定按钮时,将读取存储用户名和密码的数据表,以对用户名和密码进行验证。38 测试要点:本模块有如下几个测试要点,按下确定按钮时,是否能正确读取存储用户名和密码的数据表;如果用户名和密码正确,是否能进入系统主窗体;当输入用户名或密码错误时,是否能弹出信息框,给用户提示。(2)进货管理模块   功能:该模块主要是实现进行入库管理、入库查询、进货报表三个功能。入库管理:操作员通过入库单输入商品入库信息,可以对信息进行修改,删除操作。入库查询:该模块为企业提供整个企业的进货情况查询,也可以进行进货的明细查询。 进货报表:该报表是将整个的进货的工作和进货情况以报表的形式表示出来,然后打印出来,给用户或者是公司其他人与系统没有直接关系的负责人看。输入项、输出:该模块的输入项为企业的进货单,其中包括单据编号、厂商编号、进货厂商、商品型号、数量、单价、金额、进货日期和进货单备注等输入条目。输入表单如图4-5:图4-5入库输入单存储分配:   在用户按下保存按钮时,将读取存储入库数据表,以添加该登记入数据库,如果点取消,该表单的输入将被撤消消,不会将数据存储到数据库。测试要点:38 对商品编码入库程序进行测试,利用测试用例填入表单,对其进行数据库数据存储测试,看看所填数据能否存入数据表中。入库查询,对数据库中的数据进行查询操作。进货报表:对前面所做测试的数据,以报表形式输出来,看看输出的报表跟测试用例是否相符,相符则功能能够实现,测试成功。 (3)销售管理模块功能   本模块的主要功能是把销售信息写入销售清单,同时对库存数据进行跟新,以备用户将来对销售信息和库存信息进行查询和打印。商品销售:主要功能是对所销售的情况进行登记,记录该商品的型号、销售数量、单价、金额、生产厂商等与商品相关的信息。将销售信息录入数据库销售表中,进行销售查询和统计。销售查询:根据商品销售情况,按需要对销售情况进行查询。在该查询模块中,可以按照商品的型号、销售日期等多种方式进行商品销售情况查询。销售报表:对销售情况进行统计,形成报表,并打印出来。 输入项、输出项:本模块的数据输入项主要为手机的销售清单,其中包括单据编号、商品型号、计量单位、单价、数量、金额、生产厂商、销售日期、营业员等相关信息。具体的输入如图4-6:图4-6销售输入出项存储分配:  38 商品销售模块主要的是进行商品销售情况统计并登记入库,当商品销售业务发生后,营业员将打开销售管理模块对商品销售情况进行登记入库,调用数据库中的销售表,等待数据录入,等营业员将相应数据输入后,点提交按扭将完成数据的存储。取消按扭将取消此次操作,不进行数据存储。销售查询:对各查询要求分别进行测试,查看测试结果。销售报表:对销售情况进行统计,并形成报表打印出来。(4)库存管理模块这模块有库存盘点和生成报表两个小按键,而库存盘点主要是对库存数量,库存金额进行管理,生成报表就可以打印出来。如下图4-7:图4-7库存输入出项(5)商品管理模块对商品进行编号以及商品的名称、单位、单价、数量、生产日期、入库时间、保质期等等进行管理。如图4-8:38 图4-8库存输入出项(6)员工管理模块在系统开发中,为解决企业人员流动问题,在系统中增添了员工管理子模块,用来对企业的办事员工和管理人员进行信息化管理,以此来提高员工的办事效率,节约人力资源。新员工录入:在企业新进员工时,对其进行基本信息的存储,对员工进行基本的了解员工信息维护:当员工信息发生变化,或者是员工离职,换岗对相关信息发生变化时,利用此子模块对其进行信息变更。如图下4-9:图4-9员工输入出项(7)系统管理模块38 系统用户管理:在系统实行多用户管理时,本模块将为系统开辟多个系统用户,并能对其进行简单的信息维护,用户名变更和修改。退出:选择退出系统,将关闭整个系统,结束本次使用。4.4系统数据模型分析与设计E-R模型的“联系”用于刻画实体之间的关联。一种完整的方式是对局部结构中任意两个实体类型,依据需求分析的结果,考察局部结构中任意两个实体类型之间是否存在联系。若有联系,进一步确定是1:N,M:N,还是1:1等。还要考察一个实体类型内部是否存在联系,两个实体类型之间是否存在联系,多个实体类型之间是否存在联系等等。实体联系如下图所示,解释如下:由系统的数据流可以得出整个系统的数据模型,利用E-R图建立数据模型如下:图4-10是厂商的信息主要包括地址、名称、编号、联系电话等。图4-10厂商基本信息E-R图图4-11是超市要进货的入库的报表主要包含:进货厂商、单据编号、商品的编号等。38 入库表备注单据编号数量单价金额进货日期计量单位进货厂商仓管员商品编号               图4-11入库单E-R图图4-12是登陆时的用户E-R图。              图4-12系统用户E-R图图4-13是销售时的销售单据主要是单据编号、商品编号、数量、单价、金额等等。销售单备注单据编号数量单价金额进货日期计量单位进货厂商营业员商品编号               图4-13销售单E-R图38 图4-14为商品的E-R图主要是商品的名称和品类等。商品商品编号名称品类包装单位单价               图4-14商品E-R图38 图4-15是我们系统的数据流向又供货商到销售单之间的关系。供货商M提供N库存储存入库单入库商品N111N销售M销售单图4-15供-销E-R图38 4.5系统数据库详细设计数据库中的数据必须要规范,而且在数据的规范化表达中,一般将一组相互关联的数据称为一个关系(relation),而在这个关系下的每个数据指标项则被称为数据元素(dataelement),这种关系落实到具体数据库上就是基本表,而数据元素就是基本表中的一个字段(field)。规范化表达还规定在每一个基本表中必须定义一个数据元素为关键字(key),它可以唯一地标识出该表中其它相关的数据元素。在对表的形式进行了规范化定义后,数据结构还有五种规范化定义,定名为规范化模式,称为范式。第一范式(firstnormalform,简称1stNF)就是指在同一表中没有重复项出现,如果有则应将重复项去掉。这个去掉重复项的过程就称之为规范化处理。在本文所讨论的开发方法里,1stNF实际上是没有什么意义的。因为我们按规范化建立的指标体系和表的过程都自动保证了所有表都满足1stNF。第二范式(secondnormalform,简称2ndNF)是指每个表必须有一个(而且仅一个)数据元素为主关键字(primarykey),其它数据元素与主关键字一一对应。如果我们将合同号定义为主关键字(其它数据元素中的记录数据都有可能重名,故不能作为主关键字),故只要知道了一个合同记录的合同号,就可以唯一地在同一行中找到该合同的任何一项具体信息。通常我们称这种关系为函数依赖(functionaldepEndence)关系。即表中其它数据元素都依赖于主关键字,或称该数据元素唯一地被主关键字所标识。第三范式(thirdnormalform,简称3rdNF)就是指表中的所有数据元素不但要能够唯一地被主关键字所标识,而且它们之间还必须相互独立,不存在其它的函数关系。也就是说对于一个满足了2ndNF的数据结构来说,表中有可能存在某些数据元素依赖于其它非关键宇数据元素的现象,必须加以消除。为防止数据库出现更新异常、插入异常、删除异常、数据冗余太大等现象,关系型数据库要尽量按关系规范化要求进行数据库设计。 该系统由数据模型利用navicatformysql进行数据库的详细设计,其基本表包括mangaer表、account表、provider表、sale表、storage表、salerank表、commdity表、storageinfo表,它们的设计如下列表:38 表4-1manager表字段名数据类型长度(字节)备注managerIDint11主键managernamevarchar20 managerEmaivarchar30 mobilephonevarchar15 regonNumbervarchar30 mangagerPhonevarhar10 表4-2account表字段名数据类型长度(字节)备注namevarchar30passwordvarchar20 Typesmallint6 Nunmberint11 IDint11主键AccountStatesmallint6表4-3Provider表字段名数据类型长度(字节)备注Namevarchar20 phonevarchar60 Addressvarchar40Numberint11主键38 表4-4sale表字段名数据类型长度(字节)备注commoditynamevarchar45commodityidint10 sellTimedatetime0 numbervarchar45 moneydouble0 operatorvarcahr45 saleidint10 主键表4-5storage表字段名数据类型长度(字节)备注storageidint10主键commoditynamevarchar45 commodityidint10 unitvarchar45 pricefloat0 indatedatetime0 providervarchar45operatorsvarchar45 numberint10表4-6salerank表字段名数据类型长度(字节)备注idint11主键commdityidint11 unitvarchar8 pricefloat0 numbervarchar45 moneydouble16 saletimedatetime16 operatorvarchar45 38 表4-7commdity表字段名数据类型长度(字节)备注IDint11主键Numberint11 Namevarchar40InDatedatatime0produceDatedatatime0InPricefloat0 salePricefloat0 StroageTimeint11downLimitint11unitvarchar16表4-8storageinfo表字段名数据类型长度(字节)备注Numberint10 accountidint10amountint10storageidint10主键moneydouble04.6系统主要用户界面本系统采用Eclipse来进行系统开发,在系统的界面处理中,采用分层是菜单对各个模块进行划分,整个系统总分为7个模块:基础信息管理、进货管理模块、销售管理模块、库存管理模块、员工管理模块、退出系统和系统管理模块。其具体的用户界面窗体如下所示:38 图4-164.7系统实现(1)启动系统,首先进入的系统的登陆界面,在登陆管理模块中,设置了用户名和密码两个项来进行系统登陆严证。本系统允许多用户操作,在后台数据库中,设置了用户表,进行用户的添加,删除和修改,同时,为了用户的合法性,对登陆进行了次数限制,当超过尝试登陆次数后,系统将自动关闭。只有当用户输入了正确的用户名和密码后,才能登陆成功,弹出欢迎界面,点确定,进入系统主界面。 (2)进入系统主界面之后,里面有7个功能模块,每个模块就是系统的一个子功能,其下拉菜单有相应的实现子模块,点击不同的菜单,就会出现不同的用户界面,用户可以直接在上面输数据,然后点确定按扭就可以进行数据保存。(3)当你想退出系统时,可以再退出系统模块上进行,就会执行退出指令,之后结束本次操作。38 5总结该系统是为了降低管理成本,提高管理的效率而开发的小型超市管理系统。它是依据模块化的软件开发思想,本系统共分七大模块分别是:基础信息管理、进货管理、销售管理、查询统计、库存管理、系统管理以及退出系统,这七大模块已经涉及到小型超市系统的各方面的需要,该系统基本上能满足小型超市适应信息化改革的需要,帮助它们在当今激烈的社会市场上占据有利的位置。该系统的在设计的过程中,必须要一开始就要想好小型超市的需要的功能是什么,设计好它们的E-R图弄清楚它们之间的关系以及之间的联系,之后先用NavicatforMySQL这软件设计好数据库里面的数据,之后用Eclipse来建立系统的窗口,最后连接数据库进行调试,我就是一步步在调试中修改系统中的错误的代码,并有效的分析问题,一一解决,最终完成该系统。该系统的不足之处是虽然信息系统尽管功能强大,技术先进,但由于受到自身体系结构,设计思路以及运行机制等限制,也隐含许多不安全因素。常见因素有:数据的输入/输出、存取与备份、源程序以及应用软件、数据库、操作系统等漏洞或缺陷、硬件和通信部分的漏洞、企业内部人员的因素、病毒、“黑客”等因素。为使本系统能够真正安全、可靠、稳定地工作。在以后的小型超市的需要中,我们将不断的更新我们的系统从而更加安全和更好适应我们当前的社会市场需求。38 参考文献[1]萨师煊、王珊.数据库系统概论.北京:高校教育出版社,1985.60-65[2]潘凯华,李慧,刘欣等.MySQL快速入门[M].北京:清华大学出版社,2012.1.(3)[3]李刚.轻量级JavaEE企业应用实战Struts2+Spring+Hibernate整合开发[M].北京:电子工业出版社,2008.11.(6)[4]张昆.JavaWeb开发技术详解[M].北京:化学工业出版社,2010.7.(183)[5]毕庶伟.管理信息系统分析与设计.北京:机械工业出版社,1992.90-100[6]陈云芳.精通Struts2-基于MVC的JavaWeb应用开发实战[M].北京:人民邮电出版社,2008.7.(13)[7]李刚.轻量级JavaEE企业应用实战Struts2+Spring+Hibernate整合开发[M].北京:电子工业出版社,2008.11.(6)[8]黄梯云.企业管理模型及微型机应用程序,石家庄:河北人民出版社,1985.101-120[9]黄梯云.管理信息系统导论,北京:机械工业出版社,1986.189-206[10]党建武.管理信息系统,兰州大学出版社,2001.70-8038 附录包含程序清单:主界面MianFrame.javapackagecom.smallmarket.mainframe;importjava.awt.BorderLayout;importjava.awt.Color;importjava.awt.Insets;importjava.awt.event.ActionEvent;importjava.awt.event.ComponentAdapter;importjava.awt.event.ComponentEvent;importjava.beans.PropertyVetoException;importjava.lang.reflect.Constructor;importjava.util.HashMap;importjava.util.Map;importjavax.swing.AbstractAction;importjavax.swing.Action;importjavax.swing.BoxLayout;importjavax.swing.Icon;importjavax.swing.ImageIcon;importjavax.swing.JButton;importjavax.swing.JDesktopPane;importjavax.swing.JFrame;importjavax.swing.JInternalFrame;importjavax.swing.JLabel;importjavax.swing.JPanel;importjavax.swing.JTabbedPane;importjavax.swing.SwingConstants;importjavax.swing.SwingUtilities;importjavax.swing.UIManager;38 importjavax.swing.border.BevelBorder;importjavax.swing.event.InternalFrameAdapter;importjavax.swing.event.InternalFrameEvent;importmodel.Account;importcom.smallmarket.login.Login;publicclassMainFrame{privateJPanelsysManagePanel=null;privateJDesktopPanedesktopPane=null;privateJFrameframe=null;privateJLabelbackLabel=null;privateJButtonmodifyButton=null;privateAccountaccount=null;//创建窗体的Map类型集合对象privateMapifs=newHashMap();publicMainFrame(){account=Login.getUser();frame=newJFrame("小型超市管理系统");frame.getContentPane().setBackground(newColor(25,200,230));frame.addComponentListener(newFrameListener());frame.getContentPane().setLayout(newBorderLayout());frame.setBounds(100,0,1111,700);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);backLabel=newJLabel();//背景标签backLabel.setVerticalAlignment(SwingConstants.TOP);backLabel.setHorizontalAlignment(SwingConstants.CENTER);updateBackImage();//更新或初始化背景图片desktopPane=newJDesktopPane();desktopPane.add(backLabel,newInteger(Integer.MIN_VALUE));frame.getContentPane().add(desktopPane);38 JTabbedPanenavigationPanel=createNavigationPanel();//创建导航标签面板frame.getContentPane().add(navigationPanel,BorderLayout.NORTH);frame.setVisible(true);}privateJTabbedPanecreateNavigationPanel(){//创建导航标签面板的方法JTabbedPanetabbedPane=newJTabbedPane();tabbedPane.setFocusable(false);ColorbgColor=newColor(25,200,230);tabbedPane.setBackground(bgColor);tabbedPane.setBorder(newBevelBorder(BevelBorder.RAISED));JPanelbaseManagePanel=newJPanel();//基础信息管理面板baseManagePanel.setBackground(bgColor);baseManagePanel.setLayout(newBoxLayout(baseManagePanel,BoxLayout.X_AXIS));baseManagePanel.add(createFrameButton("商品信息管理","CommodityManage"));baseManagePanel.add(createFrameButton("供应商信息管理","ProviderManage"));JPaneldepotManagePanel=newJPanel();//库存管理面板depotManagePanel.setBackground(bgColor);depotManagePanel.setLayout(newBoxLayout(depotManagePanel,BoxLayout.X_AXIS));depotManagePanel.add(createFrameButton("库存盘点","StockPandian"));depotManagePanel.add(createFrameButton("生成报表","KuCunForm"));JPanelsellManagePanel=newJPanel();//销售管理面板sellManagePanel.setBackground(bgColor);38 sellManagePanel.setLayout(newBoxLayout(sellManagePanel,BoxLayout.X_AXIS));sellManagePanel.add(createFrameButton("销售单","SaleList"));sellManagePanel.add(createFrameButton("销售退货","SaleReturn"));JPanelstockManagePanel=newJPanel();//进货管理面板stockManagePanel.setBackground(bgColor);stockManagePanel.setLayout(newBoxLayout(stockManagePanel,BoxLayout.X_AXIS));stockManagePanel.add(createFrameButton("进货单","StockManage"));stockManagePanel.add(createFrameButton("退货单","ReturnGoods"));sysManagePanel=newJPanel();//系统管理面板modifyButton=createFrameButton("更改密码","ModifyPassword");sysManagePanel.setBackground(bgColor);sysManagePanel.setLayout(newBoxLayout(sysManagePanel,BoxLayout.X_AXIS));sysManagePanel.add(createFrameButton("操作员管理","AccountManage"));sysManagePanel.add(createFrameButton("更改密码","ModifyPassword"));sysManagePanel.add(createFrameButton("权限管理","TypeManage"));JPanelmodifyPassword=newJPanel();//修改密码modifyPassword.setBackground(bgColor);modifyPassword.setLayout(newBoxLayout(modifyPassword,BoxLayout.X_AXIS));modifyPassword.add(modifyButton);JPanelexitManagePanel=newJPanel();//退出管理面板exitManagePanel.setBackground(bgColor);exitManagePanel.setLayout(newBoxLayout(exitManagePanel,BoxLayout.X_AXIS));exitManagePanel.add(createFrameButton("退出系统","ExitManage"));38 /*****************************登陆选择**********************************/if(account.getAccountType()==1){JPanelsearchStatisticPanel=newJPanel();//查询统计面板searchStatisticPanel.setBounds(0,0,600,41);searchStatisticPanel.setName("searchStatisticPanel");searchStatisticPanel.setBackground(bgColor);searchStatisticPanel.setLayout(newBoxLayout(searchStatisticPanel,BoxLayout.X_AXIS));searchStatisticPanel.add(createFrameButton("商品信息查询","CommodityQuery"));searchStatisticPanel.add(createFrameButton("供应商信息查询","ProviderQuery"));searchStatisticPanel.add(createFrameButton("销售信息查询","SaleQuery"));searchStatisticPanel.add(createFrameButton("销售退货查询","ReturnSaleQuery"));searchStatisticPanel.add(createFrameButton("入库查询","RuKuQuery"));searchStatisticPanel.add(createFrameButton("入库退货查询","RuKuReturnQuery"));searchStatisticPanel.add(createFrameButton("销售排行","SaleForm"));tabbedPane.addTab("基础信息管理",null,baseManagePanel,"基础信息管理");tabbedPane.addTab("进货管理",null,stockManagePanel,"进货管理");tabbedPane.addTab("销售管理",null,sellManagePanel,"销售管理");38 tabbedPane.addTab("查询统计",null,searchStatisticPanel,"查询统计");tabbedPane.addTab("库存管理",null,depotManagePanel,"库存管理");tabbedPane.addTab("系统管理",null,sysManagePanel,"系统管理");tabbedPane.addTab("退出系统",null,exitManagePanel,"系统管理");returntabbedPane;}elseif(account.getAccountType()==2){JPanelsearchStatisticPanel=newJPanel();//查询统计面板searchStatisticPanel.setBounds(0,0,600,41);searchStatisticPanel.setName("searchStatisticPanel");searchStatisticPanel.setBackground(bgColor);searchStatisticPanel.setLayout(newBoxLayout(searchStatisticPanel,BoxLayout.X_AXIS));searchStatisticPanel.add(createFrameButton("商品信息查询","CommodityQuery"));searchStatisticPanel.add(createFrameButton("销售信息查询","SaleQuery"));searchStatisticPanel.add(createFrameButton("销售退货查询","ReturnSaleQuery"));tabbedPane.addTab("销售管理",null,sellManagePanel,"销售管理");tabbedPane.addTab("查询统计",null,searchStatisticPanel,"查询统计");tabbedPane.addTab("密码修改",null,modifyPassword,"密码修改");38 tabbedPane.addTab("退出系统",null,exitManagePanel,"系统管理");returntabbedPane;}else{JPanelsearchStatisticPanel=newJPanel();//查询统计面板searchStatisticPanel.setBounds(0,0,600,41);searchStatisticPanel.setName("searchStatisticPanel");searchStatisticPanel.setBackground(bgColor);searchStatisticPanel.setLayout(newBoxLayout(searchStatisticPanel,BoxLayout.X_AXIS));searchStatisticPanel.add(createFrameButton("商品信息查询","CommodityQuery"));searchStatisticPanel.add(createFrameButton("供应商信息查询","ProviderQuery"));searchStatisticPanel.add(createFrameButton("入库查询","RuKuQuery"));searchStatisticPanel.add(createFrameButton("入库退货查询","RuKuReturnQuery"));tabbedPane.addTab("基础信息管理",null,baseManagePanel,"基础信息管理");tabbedPane.addTab("进货管理",null,stockManagePanel,"进货管理");tabbedPane.addTab("查询统计",null,searchStatisticPanel,"查询统计");tabbedPane.addTab("库存管理",null,depotManagePanel,"库存管理");tabbedPane.addTab("密码修改",null,modifyPassword,38 "密码修改");tabbedPane.addTab("退出系统",null,exitManagePanel,"系统管理");returntabbedPane;}}/***********************辅助方法**************************///为内部窗体添加Action的方法privateJButtoncreateFrameButton(StringfName,StringcName){StringimgUrl="res/ActionIcon/"+cName+".png";StringimgUrl_roll=imgUrl;//"res/ActionIcon/"+fName+"_roll.png";StringimgUrl_down=imgUrl;//"res/ActionIcon/"+fName+"_down.png";Iconicon=newImageIcon(imgUrl);Iconicon_roll=null;if(imgUrl_roll!=null)icon_roll=newImageIcon(imgUrl_roll);Iconicon_down=null;if(imgUrl_down!=null)icon_down=newImageIcon(imgUrl_down);Actionaction=newopenFrameAction(fName,cName,icon);JButtonbutton=newJButton(action);button.setMargin(newInsets(0,0,0,0));button.setHideActionText(true);button.setFocusPainted(false);button.setBorderPainted(false);button.setContentAreaFilled(false);if(icon_roll!=null)38 button.setRolloverIcon(icon_roll);if(icon_down!=null)button.setPressedIcon(icon_down);returnbutton;}//获取内部窗体的唯一实例对象@SuppressWarnings({"rawtypes","unchecked"})privateJInternalFramegetIFrame(StringframeName){JInternalFramejf=null;if(!ifs.containsKey(frameName)){try{ClassfClass=Class.forName("internal."+frameName);Constructorconstructor=fClass.getConstructor(null);jf=(JInternalFrame)constructor.newInstance(null);ifs.put(frameName,jf);}catch(Exceptione){e.printStackTrace();}}elsejf=ifs.get(frameName);returnjf;}//更新背景图片的方法privatevoidupdateBackImage(){if(backLabel!=null){intbackw=MainFrame.this.frame.getWidth();intbackh=frame.getHeight();backLabel.setSize(backw,backh);38 backLabel.setText("");}}//窗体监听器privatefinalclassFrameListenerextendsComponentAdapter{publicvoidcomponentResized(finalComponentEvente){updateBackImage();}}//主窗体菜单项的单击事件监听器protectedfinalclassopenFrameActionextendsAbstractAction{privatestaticfinallongserialVersionUID=3108342017228261672L;privateStringframeName=null;@SuppressWarnings("unused")privateopenFrameAction(){}publicopenFrameAction(Stringcname,StringframeName,Iconicon){this.frameName=frameName;putValue(Action.NAME,cname);putValue(Action.SHORT_DESCRIPTION,cname);putValue(Action.SMALL_ICON,icon);}publicvoidactionPerformed(finalActionEvente){JInternalFramejf=getIFrame(frameName);//在内部窗体闭关时,从内部窗体容器ifs对象中清除该窗体。38 jf.addInternalFrameListener(newInternalFrameAdapter(){publicvoidinternalFrameClosed(InternalFrameEvente){ifs.remove(frameName);}});if(jf.getDesktopPane()==null){desktopPane.add(jf);jf.setVisible(true);}try{jf.setSelected(true);}catch(PropertyVetoExceptione1){e1.printStackTrace();}}}publicstaticvoidmain(String[]args){SwingUtilities.invokeLater(newRunnable(){publicvoidrun(){newLogin();}});}/获得系统主题/static{try{UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());}catch(Exceptione){38 e.printStackTrace();}}}连接数据库操作源代码:ConnectDatabase.javapackagedataBaseConnection;importjava.io.FileInputStream;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.Statement;importjava.util.Properties;publicclassConnectDatabase{staticConnectioncon=null;staticStatementstmt=null;staticPropertiespro=null;publicstaticStatementgetStatement()throwsException{getConnection();stmt=con.createStatement();returnstmt;}publicstaticConnectiongetConnection()throwsException{pro=newProperties();pro.load(newFileInputStream("config/configuration.properties"));Class.forName(pro.getProperty("dbClassName"));con=DriverManager.getConnection(pro.getProperty("dbUrl"));returncon;}}38 致谢38'