基Django的超市管理系统的设计与实现
摘 要
2023年,大家的日常消费水平也在逐步提升,社会越来越稳定,人们的需求越来越好。现在很多超大型智能超市,给大家的美好生活提供便利。为了更好地管理这些大型智能超市,开发功能完善的管理系统势在必行是很需要的。本系统以IDEA为开发工具,MySQL数据库系统为后台数据管理,EdrawMax绘制必要的图形,使我们更好的看清系统的情况,建立对系统的清晰认识,完成产品超市经营的信息管理和管理,以及各类信息的浏览、查询、增删改查等操作。系统实现了各种商品的基本信息管理和管理功能,加快了商品销售过程中的交易效率,方便了用户。
我选择采用Python开发,是因为python真的很便捷,不用敲太多的代码就可以实现出来,还可以很灵活的运用在诸多方面的应用上,其中在Web开发方向也有一系列十分成功的应用,同时为了方便开发,提升开发效率出现了一系列的开发框架,Django 就是一个很好的框架,因为djangok框架它里面的很多东西都是已经配置好的,所以它帮我们很快的就可以把一个系统应用搭建出来,比如模板,数据处理,网站开发等等,让我们只用Django就可以完成大部分的开发任务。
关键词:Python;Django;MySQL数据库;智能超市;
1.选题及其意义
1.1 项目的名称
我选择的是用Python为语言,用django框架来做的项目,我的项目名称是基于Django的智能超市管理。
1.2项目设计的内容
智能超市管理内容基本可以分别做了为两个方面的管理功能,即基础信息管理以及运营管理,针对于此开发了这款超市管理系统。
1.3 项目设计的意义
经过我们对超市行业的研究和比较,我们发现,采用先进的计算机信息处理方法,就能大大节约人力物力,提高从业人员的条件,降低强度,并有助于及时反馈产品的入销存情况,通过分析和反馈,使管理者得以根据市场变化迅速做出正确决策,从而提高超市运营管理的效率。
2.文献资料综述
2.1参阅文献项目的名称
基于Python+Django+MySQL的企业出货物流费用评估系统设计
2.2参阅文献的意义
一家国内知名的散热器制造企业致力于为客户提供最优质的散热方案和产品,其产品涵盖了个人电脑、手机、服务器、通信交换器等多个领域,与联想、惠普、Dell、华为等众多国际一线品牌厂商合作,以定制生产为主,因此,企业迫切需要一套能够快速、可靠地完成定制产品报价的系统。本文对企业出货物流费用评估系统进行信息化技术开发,该系统基于Django框架进行Web在线开发,目的就是能够让企业完成出货信息自动化采集,从而使企业能够对产品提供更好、更合理的报价[1-2]。
2.3参阅文献所用到的技术
基于python语言,我们采用了一种全新的架构,即Python3.6.1+Pycharm5.0.6+Django1.11+MySQL5.7.18,以实现线上web应用程序的开发,并利用关系型数据库MySQL来实现货物流信息的有效管理。Django是一款强大的PythonWeb开发框架,它可以快速、简洁地构建数据库驱动网站,并且可以利用其模块系统来实现HTML网页的开发,这种方法在当今社会中非常流行,能够有效地完成页面的填充和布局。
2.4对参阅文献的评价
阅读后对我的毕业设计的项目开发起到很大的帮助,文献作者的对出发货物就是对物流的管理对我做智能超市管理系统有着很大的启发。
3.设计理念
3.1开发工具介绍
智能超市管理系统开发在Windows系统上完成的,使用了Python和django完成开发,开发完成后,项目可以在任何开发环境下运行。本次开发我们使用的工具有IDEA、MySQL和Vision,下面简单介绍一下。
idea是一款卓越的编程工具,它可以实现高效、灵活的代码编辑,从而满足各种需求。它不仅像Django一样对高级特性提供了足够的支持,而且可以大大加快你的开发效率。
lMySQL是一种应用于工程项目研发的关系型数据库,它具备小巧、开放、免费、易于学习和安装等优点,受到开发者的青睐。它是大多数在线业务的首选。我们将统一的使用数据存储在该数据库中,然后由程序读取并显示在网站上。
Vision,Office组件之一,安装后可以用来绘制相应的图形,有助于我们更好地了解系统,对系统有一个清晰的认识,是编程中使用最广泛的建模工具。
3.2开发技术介绍
Python 功能强大且用途广泛,包括许多非常成功的 Web 开发应用程序。重载、模板化、数据操作等。它可以帮助我们解决很多开发问题,比如:
MySQL关系型数据库能够有效地提升管理系统的效率和灵活性,它能够将大量数据在多个表中,而不是单独存放在某个大内存中,这样能够更加有效地实现数据的存取。MySQL使用的SQL语言是最常见的数据库系统使用规范编程语言,能够满足各种应用场景的需求。MySQL软件系统经过双重认证,分为社区版和商业版,其体积小巧、运行迅速,总体拥有成本低廉,尤其是开源特性,使得它成为小型网站的理想数据库系统,也是中型开发站点的首选。
4.项目的设计
4.1 django的基本下载与配置
下载好Python和idea后,创建新项目,然后在解释器项目结构下添加python环境
然后加载好python环境后可以打开终端输入安装所需要的环境,pip install Django,pip install PYMYSQL等
安装好django所需要的环境后我们就可以开始创应用了
django-admin startproject marks
进入marks路径, 运行
python manage.py startapp app
在网站根目录下启动网站(开发服务器)运行:
python manage.py runserver
4.2 models的配置
首先通过定义models会用户的登录,用户的注册,用户的购买商品查看商品的基本的功能
1. from django.db import models 2. 3. class Users(models.Model): 4. 5. id = models.CharField('用户编号', max_length=13, primary_key=True) 6. 7. userName = models.CharField('用户账号', db_column='user_name', max_length=32, null=False) 8. 9. passWord = models.CharField('用户密码', db_column='pass_word', max_length=32, null=False) 10. 11. name = models.CharField('用户姓名', max_length=20, null=False) 12. 13. age = models.IntegerField('用户年龄', null=False) 14. 15. gender = models.CharField('用户性别', max_length=4, null=False) 16. 17. phone = models.CharField('联系电话', max_length=11, null=False) 18. 19. address = models.CharField('联系地址', max_length=64, null=False) 20. 21. type = models.IntegerField('用户身份', null=False) 22. 23. class Meta: 24. 25. db_table = 'users' 26. 27. 28. 29. class MemberLevel(models.Model): 30. 31. id = models.CharField('记录编号', max_length=13, primary_key=True) 32. 33. name = models.CharField('级别名称', max_length=20, null=False) 34. 35. total = models.FloatField('消费额度', null=False) 36. 37. discount = models.FloatField('折扣优惠', null=False) 38. 39. class Meta: 40. 41. db_table = 'member_level' 42. 43. class MemberInfos(models.Model): 44. 45. phone = models.CharField('会员账号', max_length=11, primary_key=True) 46. 47. total = models.FloatField('消费额度', null=False) 48. 49. createTime = models.CharField('记录时间', db_column='create_time', max_length=19, null=False) 50. 51. level = models.ForeignKey(MemberLevel, on_delete=models.CASCADE, db_column="level_id", max_length=13) 52. 53. class Meta: 54. 55. db_table = 'member_infos' 56. 57. 58. 59. class GoodTypes(models.Model): 60. 61. id = models.CharField('记录编号', max_length=13, primary_key=True) 62. 63. name = models.CharField('类别名称', max_length=20, null=False) 64. 65. createTime = models.CharField('记录时间', db_column='create_time', max_length=19, null=False) 66. 67. class Meta: 68. 69. db_table = 'good_types' 70. 71. class GoodInfos(models.Model): 72. 73. id = models.CharField('商品编号', max_length=13, primary_key=True) 74. 75. name = models.CharField('商品名称', max_length=64, null=False) 76. 77. price = models.FloatField('商品售价', null=False) 78. 79. total = models.FloatField('商品库存', null=False) 80. 81. createTime = models.CharField('记录时间', db_column='create_time', max_length=19, null=False) 82. 83. type = models.ForeignKey(GoodTypes, on_delete=models.CASCADE, db_column="type_id", max_length=13) 84. 85. class Meta: 86. 87. db_table = 'good_infos' 88. 89. 90. 91. class Sals(models.Model): 92. 93. id = models.CharField('记录编号', max_length=13, primary_key=True) 94. 95. salTotal = models.FloatField('销售总额', null=False) 96. 97. discount = models.FloatField('折扣力度', null=False) 98. 99. payTotal = models.FloatField('实付费用', null=False) 100. 101. createTime = models.CharField('记录时间', db_column='create_time', max_length=19, null=False) 102. 103. member = models.ForeignKey(MemberInfos, on_delete=models.CASCADE, db_column="member_id", max_length=13, null=True) 104. 105. class Meta: 106. 107. db_table = 'sals' 108. 109. 110. 111. class SalLogs(models.Model): 112. 113. id = models.AutoField('记录编号', primary_key=True) 114. 115. good = models.ForeignKey(GoodInfos, on_delete=models.CASCADE, db_column="good_id", max_length=13) 116. 117. salPrice = models.FloatField('商品售价', null=False) 118. 119. salTotal = models.FloatField('出售数目', null=False) 120. 121. sal = models.ForeignKey(Sals, on_delete=models.CASCADE, db_column="sal_id", max_length=13) 122. 123. class Meta: 124. 125. db_table = 'sal_logs' 126. 127. 128. 129. class Stocks(models.Model): 130. 131. id = models.CharField('记录编号', max_length=13, primary_key=True) 132. 133. stockTotal = models.FloatField('采购总额', null=False) 134. 135. createTime = models.CharField('记录时间', db_column='create_time', max_length=19, null=False) 136. 137. class Meta: 138. 139. db_table = 'stocks' 140. 141. 142. 143. class StockLogs(models.Model): 144. 145. id = models.AutoField('记录编号', primary_key=True) 146. 147. good = models.ForeignKey(GoodInfos, on_delete=models.CASCADE, db_column="good_id", max_length=13) 148. 149. stockPrice = models.FloatField('商品进价', null=False) 150. 151. stockTotal = models.FloatField('采购数目', null=False) 152. 153. stock = models.ForeignKey(Stocks, on_delete=models.CASCADE, db_column="stock_id", max_length=13) 154. 155. class Meta: 156. 157. db_table = 'stock_logs'
4.3 view的配置
这里定义了四个视图函数:home、add_to_cart、cart 和 remove_from_cart。在这个模板中,需要登录才能访问所有页面,因此使用了 @login_required 装饰器来保护视图函数。
home 视图函数返回超市主页,它获取所有商品并将它们传递给模板渲染。
add_to_cart 视图函数用于将商品添加到购物车中。它获取要添加的商品 ID,找到对应的 Product 对象并创建一个关联了该商品和当前用户的订单。如果该订单已存在,则增加其数量。最后,它向用户显示一条成功消息并重定向到主页。
cart 视图函数返回购物车页面,它获取当前用户的所有订单并计算出总价格。然后,它将这些信息传递给模板渲染。
remove_from_cart 视图函数用于从购物车中删除商品。它获取订单 ID 并将其用于查找要删除的订单。然后,它获取商品名称、删除订单并向用户显示一条成功消息,并重定向到购物车页面。
1. from django.shortcuts import render, redirect 2. 3. from django.contrib.auth.decorators import login_required 4. 5. from django.contrib import messages 6. 7. from .models import Product, Order 8. 9. @login_required 10. 11. def home(request): 12. 13. products = Product.objects.all() 14. 15. context = {'products': products} 16. 17. return render(request, 'home.html', context) 18. 19. 20. 21. @login_required 22. 23. def add_to_cart(request, product_id): 24. 25. product = Product.objects.get(id=product_id) 26. 27. order, created = Order.objects.get_or_create(product=product, buyer=request.user) 28. 29. if not created: 30. 31. order.quantity += 1 32. 33. order.save() 34. 35. messages.success(request, f"{product.name} added to cart") 36. 37. return redirect('home') 38. 39. 40. 41. @login_required 42. 43. def cart(request): 44. 45. orders = Order.objects.filter(buyer=request.user) 46. 47. total_price = sum([order.product.price * order.quantity for order in orders]) 48. 49. context = {'orders': orders, 'total_price': total_price} 50. 51. return render(request, 'cart.html', context) 52. 53. @login_required 54. 55. def remove_from_cart(request, order_id): 56. 57. order = Order.objects.get(id=order_id) 58. 59. product_name = order.product.name 60. 61. order.delete() 62. 63. messages.success(request, f"{product_name} removed from cart") 64. 65. return redirect('cart')
4.4 urls配置
1. from django.urls import path 2. 3. from .views import home, add_to_cart, cart, remove_from_cart 4. 5. 6. 7. urlpatterns = [ 8. 9. path('', home, name='home'), 10. 11. path('add-to-cart/<int:product_id>/', add_to_cart, name='add_to_cart'), 12. 13. path('cart/', cart, name='cart'), 14. 15. path('remove-from-cart/<int:order_id>/', remove_from_cart, name='remove_from_cart'), 16. 17. ]
这个 urls.py 文件定义了四个 URL 路由,它们分别映射到对应的视图函数。
''(空字符串)路径对应 home 视图函数,并被命名为 'home'。
'add-to-cart/int:product_id/' 路径用于将商品添加到购物车中,其中 int:product_id 表示需要传递一个整数类型的参数。它将被解析并传递给 add_to_cart 视图函数。该路由被命名为 'add_to_cart'。
'cart/' 路径对应 cart 视图函数,并被命名为 'cart'。
'remove-from-cart/int:order_id/' 路径用于从购物车中删除商品,其中 int:order_id 表示要传递一个整数类型的参数。它将被解析并传递给 remove_from_cart 视图函数。该路由被命名为 'remove_from_cart'。
4.5 MySQL数据库设计
选用了MySQL来存储数据,下面是用户模块的数据表
用户注册,用户登录
表1 用户模块的数据表
字段名称 |
数据类型 |
是否为NULL |
备注 |
id |
varchar(30) |
NO |
记录的编号 |
userName |
varchar(70) |
NO |
用户的账号 |
passWord |
varchar(70) |
NO |
用户的密码 |
namee |
varchar(70) |
NO |
用户的姓名 |
age |
int |
NO |
用户的年龄 |
gender |
varchar(40) |
NO |
用户的性别 |
phone |
varchar(100) |
NO |
联系的电话 |
address |
varchar(80) |
NO |
联系的地址 |
type |
int |
NO |
用户的身份 |
4.6 智能超市的功能模块设计
设计了用于系统的主要的增加,删除,修改,查看,查询,筛选,按照这些主要操作来设计功能的模块,大大的方便管理。
5. 解决问题的方案
5.1 解决需求识别
软件需求分析是软件生命周期中不可或缺的一环,它旨在确定项目的需求,并将其细分为更多的细节。这一过程需要不断深入地理解能力和性能,以便对需求进行优化和分解,以达到最佳的效果。在软件规划阶段,需要对可以明确定义的阶段进行深入分析,以识别并找到有效的解决方案,这样才能不断改进软件的性能,从而决定项目和软件产品的成败。所以对软件一定要严格把关,把关,一定要采用好的方法。
在通用信息系统的开发中,规划很重要,提供有关用户需求的描述性信息以供分析。软件设计应该规范不仅是软件开发人员的工作,用户也起着重要的作用。用户需要提前提出对软件的特性和性能的要求,并澄清一些不清楚的地方。软件分析师必须认真了解用户的需求,进行研究分析,最后将用户“how to how”的需求转化为实现模型和详细的软件,具体写出体现用户需求的软件需求。
经过大量研究,确定目标大致为以下三个部分:
u 通用功能:通用功能包括三部分:用户登录、注销、编辑个人信息和更新用户密码。使用系统提供的功能,在用户登录后判断用户身份。
管理基础信息包含:客户信息管理、配送服务控制、产品信息管理、合作伙伴设置、信息管理报警功能,可以实现增删查询。还提供了产品信息列表。
零售业务管理主要是对产品的所有权、售出状况和商品销售统计管理,以确保产品的售出。这些信息可以通过录入、查看、查看历史和统计销售量来实现那天。
5.2 系统可行性分析
有效性分析包括两个具体方面:可行性分析和创建新系统的可能性。需求在前面的研究中已经详细确定,这里不再赘述。性质、性能和效率。
u技术可行性分析
(1)软件分析
B)Windows操作系统具备人机交互的良好性,它的用户界面简单易懂,而且相关程序也易于使用。此外,还有许多基于Windows的软件开发工具,易于学习、开发和使用。
b) 从可用性来看,MySQL不仅易于使用和掌握,而且能够满足本题的需要,最主要一点免费。
c) django这个系统很完善,有很多书籍和文档可以学习和参考,所以了解这个技术已经不是问题了。
(2) 员工评价
系统简单易用,用户无需拥有基本的商务电脑,系统用户申请本站无任何问题。
u 经济可行性分析
通过财务研究,可以更好地分析组织的业务和投资情况,估算建设和维护的成本。因为这个题目是超市的经营,作者负责作品的开发,所以不需要太多的资金投入,所以也能做生意。
u运营可行性研究
功能能力是指对组织的影响、现有人员和系统现有机构、设施、环境的变化,以及人员额外培训的可能性。现在我们的信息很普及,不同员工的水平都很高,所以他们工作。
6.总结
我做的这个是为提高大型超市管理效率而开发的超市管理系统。具体而言,与现有系统相比,产品注册和销售库存得到了极大改善。这主要系统的开发用是python和MySQL和Django技术。但是由于本系统开发时间较短,对Django框架的理解并不深入。因此,这个系统也存在一些缺陷。由于自己的技术不够,又很多的细节功能自己都没有做出了,比如筛选选择高级查询这些。
参考文献
[1] 《信息与电脑》|2013年第008期|7-8,10-11|共4页 张海文; 2022-08-18
[2] 沈健 程瑞龙 《移动信息》 2022年第9期0028-0030,共3页
[3] (美) [弗格森]Derek Ferguson 著. JSP 程序调试实用手册[M]. 电子工业出版社,2001. 62~87
[4]《电脑知识与技术:学术版》|2022年第5期|61-63|共3页 袁明坤; 曾丽;2022-9-15
[5] 李楠, 李志强编著. 网站开发与网页制作[M]. 人民邮电出版社, 2000. 132~186
[6] 黄梯云,李一军. 管理信息系统导论[M]. 北京:机械工业出版社,2004
[7] 于瑶瑶. 企业进销存管理系统的设计与实现[D]. 山东:山东大学,2009
[8] 《数据库系统概论》(第4版),王珊 萨师煊 编著,高等教育出版社, 2006.
[9] 金澜.MySQL索引是如何形成的[J].计算机与网络,2022,48(02):42-43.
[10] 《医疗卫生装备》|2015年第9期|129-132|共4页 李向东; 云庆辉; 孙咏梅; 晋虎; 2022-08-17
[11] 《微型电脑应用》|2020年第1期|26-29|共4页 赵新苗; 谢清辉; 颜依铃; 林雪锋; 杜建辉; 2022-8-18
致 谢
感谢指导老师对指导我,起到了很大的帮助作用。还要感谢在学习上帮助过我的同学,感谢他分享的学习成果,使我在学习及技术上少走弯路,使我的学习上更进一步。同时感谢我的父母,他们在论文期间与我交流,分担我的心理压力,在日常生活中给予我帮助,在学习精神上鼓励我。
最后,向这群心甘情愿帮助我的人表示感谢和衷心的感谢。
此论文维普查重已过,23年做的,详细资料可以关注私信我,Python,Java,php,html,c语言,微信小程序,APP,安卓,物联网等毕业设计都可找我。