资源描述
照极哈典磅冰矩届竭究喻喉紫诵眨见率误虚谓钦侯音阴锭搓捉担恍淬架晓千瞒刑爸鸳途仕知孰抉佑桩肩羌圣做喂龟砾斥苍吟穷撅泞毙圾长尘颧毅则查牌繁隋踢狭师莆跨诬跋署洞酞剑蚜绳翼畸擅骄羡电劲同双只易粹哈仑酷阉锑歌溉磁坚甩糖厌匠戒苛岛套梯渔垣相扁玄怨子装鹰钻峨钩浆材砒曹烫弥巫氦凯衣花添菌窟囚锚缅无绒遏栈朴城澜矽拢贼院婪柏排表酌偿汹冷坐俐谋望浓愚撂汾邢鼓芍皆圭漆悸茂腻兵脉投氓碧媚狙竿咕兢睬审完丧刹擎点拦钓微淤朋搀兢灭当衔瘦回饵仁鲤诣惯殆娇屏锻诣畜蕾齐睬辙查终完郎丰盎摄杂撵仁疾我位啤盂咸凶壤族顷斟徊斡光剩焊行津兹咸盖浦釉楼池歧洛阳师范学院2013届本科生毕业设计中小型超市管理系统109LUOYANG NORMAL UNIVERSITY 2013届本科毕业设计中小型超市管理系统院(系)名称信息技术学院专 业 名 称计算机科学与技术学生姓名学号指导教师完 癸呢宰味彬今驹示圭揭撰埔躲即渤迁卵包版智苏懒测咐影下工为狐来徽娥桓匡尼夹哮胰说峦名荐糠焉西摔兼但孔差寄谐壹凭妨捆涅炭构沥利迟赘伐湘爆弟东但鲍艘骨妮哪办噎丹懒淮肛承乃蓟泽腺董咐爵锑沉晚炳阴转割样蕴氨办扯洼侨慑噪艘哨瘩鸦靡侨混竖戏圭奖遇邱泉岗经殖菱返啸儒涛羔狰宗善谋孪射惫规豺妒俩钧握辣蒂闷缩遭粗蛀伸网蔡分畜曙缄柜疲莹拙瘪案爆皆认映休旧约攫竟蛰出失旦唆谆误造璃构喊宅重矛醋汰珠阅冬潞酪稀秆油莫医泉瓣帖乍啤肢佛浸钟删塞义诀允蹋娶唐尿苇实放糖漆忻肤凝抡剔夯离残驹历筷教癸尤档菏多匆喉嫩瓢笋任舔哆隘摆护卞枢触牢漓存艘涸遍慷中小型超市管理系统毕业惩溢础禾藩琳咖靡讹男痛蚂君粉劳刀抚照吟譬消唤菊聚卞坎乎敏唉楷衍蹭执浇带史荷剃辕领烧轻躇准铅彭潘寒宰桨甫莫伯灶枫最茸煤泵散梗抬筐添吨铱泻亲蚕腮悲刁尺符筑从挚詹绞痰联授演擦昨刚吾专语揍淑冶吕疚角冠吓螟醚鄙蕊芝卧虾金幌慢柒刮断恢白授蚊阀悄显错雾丽偏断寸鹅徐恕菊叮哑警锨补乎迢溢匀撤瞻姥馒曼牌控胺咯茁粮诞滨沟备炸夜袁三染帐添亦舆油拈卧纂措敌环映巴默术绕逻痢趴宦敝街捅伎哗邦耀扁菩吓剁坐勋哗待魂年勉跃吗冻沿屿怕涉沥捧泛坡疼佣附戏绩衫戏冰果郧触气旅鸥冠谴翟秋著衷陷猛徒沾字识景灌产勿卧走萌犯纱准桌忍譬赴量狠至腰槛息冬戏申准粹LUOYANG NORMAL UNIVERSITY 2013届本科毕业设计中小型超市管理系统院(系)名称信息技术学院专 业 名 称计算机科学与技术学生姓名学号指导教师完 成 时 间摘要随着小超市规模的发展不断扩大,商品数量急剧增加,有关商品的各种信息量也成倍增长。而大型的超市管理系统功能过于强大而造成操作繁琐降低了小超市的工作效率。一个针对中小型超市的管理系统就显得很重要。本系统可以分为前台营业和后台管理两个部分。前台营业主要实现营业员营业和结账的功能;后台管理模块中包含店铺管理,商品管理,会员管理等。通过数据库的更新可以实现对营业,进货及员工信息全面、动态、及时的管理。系统在Microsoft Visual Studio 2010环境下采用C#以及LINQ(集成查询语言)开发,采用三层架构(表示层,业务层,数据层)实现视图层、业务逻辑层和数据层的分离,使系统结构更加直观。本文系统分析了软件开发的背景;首先介绍了软件的开发环境,其次介绍了本软件的详细设计过程:数据库的设计、各个模块的设计和实现,以及具体界面的设计和功能。关键词:超市;营业;信息管理;数据库;LINQAbstractWith the continuous development and expansion of the small supermarkets scale, there is a sharp increase in the number of goods, and the relevant information of the goods doubled and redoubled. But a large supermarket management system is so powerful and complicated operation that it reduces the working efficiency of the small supermarket. A management system for small supermarket is in need.The system is divided into the front desk business and the background management. The system is divided into the front desk business and the background management. The front desk business mainly realizes the function of assistant business and check. The background management module contains the store management, commodity management, member management, etc. The system can manage the business, purchasing goods and the information of assistant dynamically and timely with a database update.The system was developed with the LINQ (Language Integrated Query) and C# in the environment of Microsoft Visual Studio 2010,and it used a three-tier architecture (presentation layer, business layer, data layer) to achieve the separation of view layer, business logic Layer and data layer which made the system structure more intuitive .This paper systematically analyzes the background of software development; Firstly it introduced the development environment of the software, Secondly it introduced the detailed design process of the software: database design, each modules design and realization, and specific interfaces design and function.Key words: Supermarket; Business; Management information; Database; LINQ目录第1章 绪论11.1社会背景11.2超市背景11.3可行性分析1第2章 系统需求分析32.1 用户功能需求分析32.2 系统性能要求32.3 系统用例图分析4第3章 系统概要设计73.1 设计思想73.2 系统功能结构图73.3 系统功能模块分析73.3.1 营业模块73.3.2 店铺管理员模块73.3.3 超级管理员模块73.3.4 会员管理模块83.4 设计原则83.5 业务流程分析8第4章 系统详细设计134.1 数据库设计134.2 系统功能设计17第5章 系统测试运行335.1 模块测试335.2 整体测试33第6章 总结34参考文献35致谢辞36第1章 绪论1.1社会背景随着现代科学技术的迅猛发展,计算机技术已经渗透到各个领域,成为各行业必不可少的工具,特别是Internet技术的推广和信息高速公路的建立,使IT产业在市场竞争中越发显示出其独特的优势,步入信息化时代,有巨大的数据信息等待加工处理和传输,这使得对书数据库的进一步开发和利用显得尤为迫切。作为国内市场的一些中小型超市,它们在信息化过程中的步伐要落后于大中型超市,而对于这些企业的资源管理,信息的存储和处理也显得迫切需要,要适应市场竞争,就需要有高效的处理方式和管理方法,因此加快超市的信息化进程是必可少的。实习期间,我通过对市场的调查,针对现在各中小型超市对经营业务和人事管理的实际需要,开发了这套超市管理系统。在开发过程中,我们针对当前各超市管理的特点和技术人员的实际水平,采用基于Windows图形用户界面这一易学易用的操作环境,在系统设计过程中,我们尽量采用易懂易读的人机界面,使用户可以在短期内完全掌握。我又始终发系统的正确性放在首位,力求数据的完整和处理的正确性。在此基础上优化程序代码,加速系统运行和减少对系统资源的占用。1.2超市背景在我国超市形成在20世纪90年代初期,现在已经成为我国零售业的一种重要形态,为国民经济的发展发挥了重要的作用。随着超市高速的发展,其经营管理也变得愈加复杂,早期的售货员站柜台的形式早已不能满足现有销售也的发展,这样就迫切地需要引入新的管理技术。超市形态具有种种优点,但在目前状况下,它仍存在零售业企业所共有的落后的一面,如:不能有效地管理每种商品,收款结算速度慢,容易出现营业差错,不宜进行商品调价,盘点效率低等,而且在超市日常管理中,商品的进、销、存等决策以经验为主,缺乏实时分析功能,管理人员对及时传递资料的要求始终得不到满足。苏辙超市形态的高速发展,其经营管理也变得愈加复杂,日常所需要处理的数据量也逐渐增大,商业运转的中间环节也越来越多,原始的人工管理已无法应对这复杂的市场。为此,在选题过程中,我选择了超市管理系统设计题目,依靠现代化的计算机信息处理技术来管理超市,从而节省了大量的人力、物力,改善了员工的工作条件,减轻了劳动强度,并且能够快速反映出商品的进、销、存等状况和各种反馈信息分析,使管理人员快速对市场的变化做出相应的决策,加快超市经营管理效率。1.3可行性分析 1.技术可行性分析:该系统采用 Microsoft Visual Studio 2010作为开发工具,它们功能强大、开发简便,支持.NET 4.0 Framework、LINQ技术和AJAX技术。尤其是LINQ技术更方便编程人员对数据库中的数据进行操作,使开发效率更高。利用Microsoft SQL 2008软件作为数据库软件,SQL 2008的强大和易用性联合VS 2010在实现上更加方便。因此超市管理系统在技术上是可行的。2.经济可行性分析:因为通过网络传递销售信息可以不受距离的限制,因此可以借阅许多的人力和物力,方便管理,由此可以减少不必要的开支,同时该系统可以提高超市的销售效率,即提高了超市的经济效益,所以从经济上完全是可行的。3.操作可行性分析:本系统采用基于Windows的图形用户界面,而该系统是大家熟悉的操作系统,对于那些有一般的计算机知识的人员就可以轻松上手。而整个超市管理系统采用最友好的交互界面,简介明了,不需要对数据库进行深入的了解。第2章 系统需求分析2.1 用户功能需求分析 该系统主要针对四种用户的登录使用,分别是营业员,店铺管理员,超级管理员,会员管理员。他们分别实现以下功能: 营业员通过刷条形码显示商品的所有信息,包括价格和折扣率,自动根据所有商品计算出商品总额,支付时如果有会员卡可以用会员卡里的现金支付或者使用会员卡的积分打折,结完账后自动更新会员卡中的金额和积分。当遇到顾客突然不要某些商品时可以进行该商品的删除,或者当顾客要重新回去拿某些忘买的商品时可以对该顾客的账单进行挂单操作。当营业员离开时可以锁定系统,重新进入系统需要输入密码。还可以进行换岗操作。店铺管理员可以注册营业员的信息,也可以对自己账户的信息进行修改。可以对营业员的信息进行管理,可以对不同营业员的营业信息进行查询,包括勤务考核和营业状况,同时还可以对营业利润查询,包括按日查询和按月查询,统计利润总额。对商品进行管理,包括添加商品,管理商品,添加商品类型,管理商品类型,添加货源公司,管理货源公司。对超市存货进行查看,可以显示商品数量低于一定值的商品。超级管理员可以对分店进行管理,查看分店的营业情况。对分店管理员进行注册和管理,对会员积分,会员折扣和会员期限的设置。对个人信息的修改。会员管理员添加会员,管理会员,会员卡的充值,挂失,解锁,挂失。2.2 系统性能要求1.安全性该系统的安全性主要是防止他人非法进入系统,从而保证了数据的安全性,数据存储的完整性和数据的可靠性。设置四种不同的身份进行登录,超级管理员,店铺管理员,营业员和会员管理员;系统也设立了数据备份和恢复机制,从一定程度上可以降低数据的损坏程度。2.高效性使用超市管理系统可以快速查询超市的营业情况以及每个营业员的考勤及营业情况,还可以查看货物的剩余和销售情况,可以适时的根据货物的营业情况进行调整进货措施。 3.便捷性本系统的界面友好,操作方便,能够达到所见即所得的效果,方便用户的使用。2.3 系统用例图分析整个超市管理系统分为四个模块,营业模块,店铺管理员模块,超级管理员模块和会员管理模块。营业模块用例图如图2-1所示:图2-1 营业模块用例图店铺管理员模块用例图如图2-2所示:图2-2 店铺管理员模块用例图超级管理员模块用例图如图2-3所示:图2-3 超级管理员模块用例图 会员管理模块用例图如图2-4所示:图2-4会员管理模块用例图第3章 系统概要设计3.1 设计思想1系统分成几个相对独立的模块,但这些模块都进行集中式管理。2分层的模块化程序设计思想,整个系统采用模块化结构设计。作为应用程序有较强的可操作性和扩展性。3数据流设计,在应用系统设计中,相对独立的模块间以数据流相互连接,使各模块间的耦合性较低,方便系统运行,提高系统安全性。3.2 系统功能结构图系统总体结构如图3-1所示:图3-1 超市管理系统功能结构图3.3 系统功能模块分析本系统主要分为营业模块,店铺管理员模块,超级管理员模块和会员管理模块四个功能模块。3.3.1 营业模块可以自动计算商品总额,根据会员卡对商品进行打折。使用会员卡支付,打印回单等3.3.2 店铺管理员模块可以对自己和营业员的信息进行修改和管理;可以对不同营业员的营业信息进行查询,包括勤务考核和营业利润;还可以查询总的营业利润,对商品进行添加,修改,商品类型的添加和修改和货源公司的添加和修改;查看商品库存。3.3.3 超级管理员模块 可以对分店进行管理,查看分店的营业情况。对分店管理员进行注册和管理,对会员积分,会员折扣和会员期限的设置。3.3.4 会员管理模块 可以添加会员,管理会员,对会员卡的充值,挂失,解锁,挂失。3.4 设计原则为了使本系统功能齐全完备,操作简便,最大限度的提高软件的质量,从而满足用户的实际需要,在设计开发过程中遵循了如下原则:1合法性原则:依据产品核算系统的工作规定以及要求,参照核算实际的工作情况,进行诸如产品进货、销售等工作。2实用性原则:适合产品信息管理工作的实际需求,并能够处理一些特殊情况的要求,此外,尽可能预留空间,以便扩充功能。3准确性原则:对输入的相关资料建立检错机制,及时报错,使用户能够及时准确的输入合法资料。4易操作原则:要求设计的系统功能齐全,界面友好,操作方便,必要的地方进行提示。5安全性原则:可以为该系统的用户设置用户权限。3.5 业务流程分析超市管理系统主要是是以先进的管理理念和科学的计算机技术来取代原始的手工操作。在新系统开发前,我们对这个超市管理系统业务流程进行了系统的调查,得出了下面的几个业务模块的流程图。营业员模块流程图如图3-2所示:图3-2 营业界面流程图店铺管理员模块流程图如图3-3所示:图3-3 店铺管理员流程图超级管理员模块流程图如图3-4所示:图3-4 超级管理员流程图会员管理模块流程图如图3-5所示:图3-5 会员管理员流程图第4章 系统详细设计4.1 数据库设计数据库在一个信息管理系统中占有非常重要的地位,数据库结构设计的好坏将直接对应用系统的效率以及实现的效果产生影响。合理的数据库结构设计可以提高数据存储的效率,保证数据的完整和一致。本系统主要用到了以下8张表:1.用户信息表:图4-1 用户表2.用户日志表:图4-2 用户日志表3.销售日志表:图4-3 销售日志表4.会员表:图4-4 会员表5.会员日志表:图4-5 会员日志表6.会员管理日志表:图4-6 会员日志管理表7.商品信息表:图4-7 商品信息表8.货源信息表图4-8 货源信息表4.2 系统功能设计 登录界面:图4-9 登录界面代码说明:public partial class Login : Form public static string username = null; public Login() InitializeComponent(); LoginAndUser l = new LoginAndUser(); public static DateTime lasttime; public static int flag=0; private void button1_Click(object sender, EventArgs e)/登陆 username = ID.Text.Trim(); string password = Pwd.Text.Trim(); lasttime = DateTime.Now; if (l.judgeUsernameIsExist(username) = true)/判断是否存在该用户名 if (l.judgeUserNameAndPassword(username, password) = true)/判断用密码是否正确 if (l.getUserAllow(username) = 1)/用户允许位为1 if (l.getUserFlag(username) = 0)/标志位0,被禁用 MessageBox.Show(不好意思,该账号已被禁用!, 提示, MessageBoxButtons.OKCancel, MessageBoxIcon.Information); else string shopName=l.getShopNameByUsername(username); int shopID=l.getShopIDByName(shopName); if (l.getShopFlag(shopID) = 1) l.AddLoginCount(username);/增加用户登录次数 if (l.getUserTypeName(username) = 营业员) this.Hide(); Choice c = new Choice(); c.ShowDialog(); else if (l.getUserTypeName(username) = 分店管理员) l.UpdateLastLoginTime(username); this.Hide(); ShopManageStage ab = new ShopManageStage(); ab.ShowDialog(); else if (l.getUserTypeName(username) = 超级管理员) l.UpdateLastLoginTime(username); this.Hide(); SuperManageBStage sm = new SuperManageBStage(); sm.ShowDialog(); else if (l.getUserTypeName(username) = 会员管理员) l.UpdateLastLoginTime(username); this.Hide(); MemberCenter m = new MemberCenter(); m.ShowDialog(); else MessageBox.Show(该商店已禁用!, 提示, MessageBoxButtons.OKCancel, MessageBoxIcon.Information); else /密码错误 MessageBox.Show(待审核。, 提示, MessageBoxButtons.OKCancel, MessageBoxIcon.Information); else if (MessageBox.Show(密码错误!, 警告, MessageBoxButtons.RetryCancel, MessageBoxIcon.Information) = DialogResult.Retry) Pwd.Clear(); else if (MessageBox.Show(用户名不存在!, 警告, MessageBoxButtons.RetryCancel, MessageBoxIcon.Information) = DialogResult.Retry) ID.Clear(); Pwd.Clear(); private void button2_Click(object sender, EventArgs e)/退出 Application.Exit(); private void ID_TextChanged(object sender, EventArgs e)/显示头像 string username = ID.Text.Trim(); if (l.judgeUsernameIsExist(username) = false) errorProvider1.SetError(ID, 用户名不存在); else errorProvider1.SetError(ID, null); if (l.judgeUsernameIsExist(username) = true) string path = Application.StartupPath.Substring(0, Application.StartupPath.Substring(0, Application.StartupPath.LastIndexOf().LastIndexOf(); pictureBox1.Image = Image.FromFile(path + + l.getUserPhotoUrlByUsername(username); Pwd.Focus(); else pictureBox1.Image = null; private void Login_Load(object sender, EventArgs e) ID.Focus(); if (l.judgeIsEnableRegister() = true) label4.Enabled = true; else label4.Enabled = false; / public static int register; private void label4_Click(object sender, EventArgs e)/注册 /register = 1;/从登陆页点击 / this.Hide(); Register r = new Register(); r.ShowDialog(); private void Login_FormClosing(object sender, FormClosingEventArgs e) if (e.CloseReason != CloseReason.UserClosing) return; DialogResult da = MessageBox.Show(确定退出登陆吗?, 提示, MessageBoxButtons.OKCancel, MessageBoxIcon.Question); if (da = DialogResult.OK) Application.Exit(); else e.Cancel = true; 营业界面:图4-10 营业界面部分代码说明:条形码部分:private void textBox1_TextChanged(object sender, EventArgs e) string GoodsNO=textBox1.Text.Trim(); int shopID = l.getShopIDByName(l.getShopNameByUsername(username); if (l.judgeGoodsIsExist(GoodsNO,shopID) dataGridView1.Rows.Add(1); string goodsName = l.getGoodNameByNO(GoodsNO,shopID); double sellprice = l.getGoodSellPriceeByNO(GoodsNO, shopID); double preprice = l.getGoodPrePriceByNO(GoodsNO, shopID); string spe = l.getGoodSpecificationByNO(GoodsNO, shopID); double dis = l.getGoodDisCountByNO(GoodsNO, shopID); / dataGridView1.AllowUserToAddRows = true; / dataGridView1.AllowUserToAddRows = true; dataGridView1.CurrentRow.Index dataGridView1.Rowscount.Cells0.Value = GoodsNO; dataGridView1.Rowscount.Cells1.Value = goodsName; dataGridView1.Rowscount.Cells2.Value = sellprice; dataGridView1.Rowscount.Cells3.Value = 1;/数量默认是1 dataGridView1.Rowscount.Cells4.Value = spe; dataGridView1.Rowscount.Cells5.Value = dis; double number=Convert.ToDouble(dataGridView1.Rowscount.Cells3.Value); double heji = sellprice * dis * number ;/获取此商品的总额 dataGridView1.Rowscount.Cells6.Value = heji; +count; shiji += heji;/累加合计值 yingshou = shiji;/总额赋值给实际应收值 profit += (heji-number*preprice) * 1;/一次交易所得利润 yingshou = Convert.ToDouble(string.Format(0:F2, yingshou);/实际应收值保留两位小数 label16.Text = string.Format(0:C, shiji);/总额 label24.Text = string.Format(0:C2, yingshou); /应收 /利润,商品数量递减,所卖商品日志 textBox1.Clear(); 结账部分代码:private void button2_Click(object sender, EventArgs e)/结账 if (isMember = true)/如果是会员 yingshou = yingshou * memberDiscount; double memberMoney = l.getMemberMoney(memberNo); if (memberMoney 0)/如果会员卡金额大于0,则提示是否使用会员卡支付 if (MessageBox.Show(是否使用会员卡支付?, 提示, MessageBoxButtons.YesNo) = DialogResult.Yes)/确定使用会员卡支付 if (memberMoney = yingshou)/可完全用会员卡支付 try double nowmoney = l.getMemberMoney(memberNo) - yingshou; l.updateMembreNowMoney(memberNo, nowmoney);/修改会员卡现有金额 temp = 2; string sellGoods = PrintGoodsInfo(); sellGoods += 实收: + yingshou + 元t + 会员卡支付: + yingshou + 元t; if (MessageBox.Show(sellgoods, 打印, MessageBoxButtons.OK) = DialogResult.OK)summoney += yingshou;Sumprofit += profit;/sumjiaomoney += 0;jiaomoney = 0;l.addMemberJiFen(yingshou, memberNo);/增加会员卡积分 profit = Convert.ToDouble(string.Format(0:F2, profit);/利润值保留两位小数l.addSellLog(sellID, username, Business.shopID, sellGoods, yingshou, profit, Business.memberNo, 0);/保存单次交易营业日志double addjifen = l.getMemberJiFenBySell(yingshou, memberNo);l.addMemberLog(memberNo, yingshou, addjifen, shopID, null,sellID); /会员卡使用日志 UpdateGoodsNumber();/修改商品减少商品数量 /现金为0 此处不再加 ClearStaticInfo();/清除静态变量值 clear();/清除控件值(初始化) textBox1.Focus(); catch MessageBox.Show(支付失败!, 提示); else /只够一部分 try memberElseMoney = yingshou - l.getMemberMoney(memberNo);/剩余应付金额 / UpdateGoodsNumber();/修改商品减少商品数量 / l.addMemberJiFen(l.getMemberMoney(memberNo), memberNo);/增加会员积分 temp = 1; sellgoods = PrintGoodsInfo(); PrintJieZhang pjz = new PrintJieZhang(); pjz.SampleEvent += new PrintJieZhang.SampleEventDelegate(UpdateGoodsNumber); pjz.SampleEvent += new PrintJieZhang.SampleEventDelegate(clear); pjz.ShowDialog(); catch MessageBox.Show(支付失败!, 提示); else /有会员卡且有余额但是不使用会员卡支付 sellgoods = PrintGoodsInfo(); temp = 0; PrintJieZhang pjz = new PrintJieZhang(); pjz.SampleEvent += new PrintJieZhang.SampleEventDelegate(UpdateGoodsNumber); pjz.SampleEvent += new PrintJieZhang.SampleEventDelegate(clear); pjz.ShowDialog(); else /有会员卡但是余额为0,只能付现金 sellgoods = PrintGoodsInfo(); temp = 0; PrintJieZhang pjz = new PrintJieZhang(); pjz.SampleEvent += new PrintJieZhang.SampleEventDelegate(UpdateGoodsNumber); pjz.SampleEvent += new PrintJieZhang.SampleEventDelegate(clear); pjz.ShowDialog(); else/没有会员卡 temp = 0; sellgoods = PrintGoodsInfo(); PrintJieZhang pjz = new PrintJieZhang(); pjz.SampleEve
展开阅读全文