基于django天天超市管理系统的设计与实现-附源码59554

摘要

随着信息技术的快速发展,计算机应用已经进入成千上万的家庭。随着超市商品数量的增加,天天超市管理系统也存在许多问题。商品数据的处理量正在迅速增加,原来的手工管理模式不适合这种形式。使用计算机可以完成数据收集、处理和分析,减少人力和物力的浪费。超市需要建立天天超市管理系统,为超市商品管理提供信息管理和动态管理,提高商品管理的质量和效率。

在天天超市管理系统的设计中,采用Python编程语言和Django技术,在MVVM的模式下,并使用MySQL作为系统的数据库。该系统设计了强大的功能模块,考虑了超市管理的各个方面。这些主要功能模块分别是后台首页、系统用户(管理员、注册用户)、商品库存管理(商品库存列表、商品库存添加)、采购入库管理(采购入库列表)、销售出库管理(销售出库列表)、系统管理(轮播图管理)、超市公告管理(超市公告)、资源管理(超市资讯、资讯分类)、商城管理(超市中心、分类列表、订单列表、订单配送等功能模块。最后,通过系统需求分析和系统设计方法验证,结果表明该设计具有实用价值,因此从软件设计的角度,对研究理论、基础、总体系统布局和具体系统设计进行了详细研究。

关键词:Python编程语言;Django技术;超市管理

Django Tiantian Supermarket Management System

ABSTRACT

With the rapid development of information technology, computer applications have entered thousands of households. With the increase in the number of supermarket products, there are also many problems in the supermarket management system. The processing volume of product data is rapidly increasing, and the original manual management mode is not suitable for this form. Using computers can complete data collection, processing, and analysis, reducing waste of manpower and material resources. Supermarkets need to establish a supermarket management system to provide information management and dynamic management for supermarket product management, and improve the quality and efficiency of product management.

In the design of the supermarket management system, Python programming language and Django technology are used, in MVVM mode, and MySQL is used as the system database. The system has designed powerful functional modules that take into account various aspects of supermarket management. These main functional modules are the backend homepage, system users (administrators, registered users), product inventory management (product inventory list, product inventory addition), procurement inbound management (procurement inbound list), sales outbound management (sales outbound list), system management (rotation chart management), supermarket announcement management (supermarket announcement), resource management (supermarket information, information classification) Mall management (supermarket center, classification list, order list, order delivery and other functional modules). Finally, through system requirement analysis and system design method validation, the results show that the design has practical value. Therefore, from the perspective of software design, a detailed study was conducted on the research theory, foundation, overall system layout, and specific system design.

Keywords: Python programming language; Django technology; Supermarket management

目  录

1 绪论

1.1开发背景与意义

1.2国内外研究现状

1.3论文组成结构

2开发工具及相关技术介绍

2.1开发技术说明

2.2开发工具

2.3开发技术

2.3.1MVVM模式介绍

2.3.2Django框架

2.3.3Vue.js 主要功能

3系统分析

3.1需求分析

3.2 系统可行性分析

3.2.1技术可行性:

3.2.2操作可行性:

3.3 系统功能分析

3.4系统用例分析

3.5 项目设计目标与原则

3.6系统流程分析

3.6.1操作流程

3.6.2添加信息流程

3.6.3删除信息流程

4系统设计

4.1系统设计的原理

4.2系统功能设计

4.3数据库设计

4.3.1概念模型设计

4.3.2逻辑结构设计

5系统实现

5.1注册用户功能模块实现

5.1.1登录模块

5.1.2注册账户模块

5.1.3订单配送模块

5.1.4超市中心模块

5.1.5超市资讯模块

5.2管理员功能模块实现

5.2.1管理员登录模块

5.2.2系统用户管理模块:

5.2.3商品库存列表模块:

5.2.4商品库存添加模块:

5.2.5采购入库列表模块:

5.2.6轮播图管理模块:

5.2.7分类列表模块:

5.2.8订单配送模块:

6系统测试

6.1测试目的

6.2测试方法

6.3测试过程

6.3.1系统测试计划

6.3.2系统测试用例

6.4测试结果

7结论

参考文献

致 谢

1 绪论

1.1开发背景与意义

随着计算机的普及,使用计算机管理材料是必然的趋势。以超市为例。当你进入超市时,你可以找到各种各样的商品。大多数顾客满载而归,购买合适的商品。尽管顾客获得了极大的便利,超市在管理这些商品上花费了大量的精力。

首先,有许多种类和大量的商品。经营者必须随时了解他们的商品库存和各种商品的供求情况。如果他们盲目购买顾客不需要的商品,或者不购买畅销商品,对经营者来说将是一个巨大的损失。第二,随着商品迅速变化,许多商品价格可能会有很大变化。经营者可能不得不时时改变商品价格。否则,如果价格太高,没人会注意,如果价格太低,就没有利润。第三,在社会环境中,竞争非常激烈,为了确保在竞争中处于有利地位,经营者必须始终了解超市的需求。

当然,作为一个实际的经营者,你需要知道的远不止这些,但无论如何,商品管理是所有工作的重点,如何管理商品是成败的关键。对于小超市经营者来说,这可能是一本帐簿,外加算盘或计算器。然而,对于大公司来说,单靠书本是不可能的,因为书本不仅劳动密集型,而且在错误发生时也很难检查和纠正。因此,有必要在计算机的帮助下将所有数据输入数据库,然后使用系统来管理这些数据,并通过统计和分析获得各种有用的信息。

1.2国内外研究现状

天天超市管理系统是超市一项复杂而必要的工作。经理们需要每天处理大量的文档和数据。为了及时结算每个业务账户,检查库存数量和货物进出和出库情况,确保超市的正常运营和财产安全,超市经理需要花费大量的人力、物力和时间来做数据记录和统计。

在发达国家,计算机化库存管理水平非常高,自动化管理模式已经实现。尽管国内超市在这方面有很强的意识和很大的进步,包括商品管理,但在管理方面仍然存在一些问题。在一些超市,库存管理仍然是手工和半手工的。从商品购买登记开始到商品出库结束,所有操作基本上都是书面记录。库存管理是由库存管理人员编写的,统计是用计算器完成的。这种方法不仅管理复杂、效率低下,而且缺乏一些基本的库存管理工具,如库存状态统计、查询经济订货量的计算等。这也在一定程度上导致了管理落后、竞争落后以及超市经济效益的损失。

1.3论文组成结构

论文整体分为六个章节模块:引言部分介绍研究背景以及意义,第二章主要是介绍系统分析,第三章的系统的功能等设计,第四章主要是整个系统的实现过程及关键代码,最后一章是系统测试方法以及测试结果的记录与描述

2开发工具及相关技术介绍

2.1开发技术说明

本系统前端部分基于MVVM模式进行开发,采用B/S模式后端部分基于python的Django框架进行开发。

前端部分前端框架采用了比较流行的渐进式JavaScript框架Vue.js。使用Vue-Router和Vuex实现动态路由和全局状态管理,Ajax实现前后端通信,Element UI组件库使页面快速成型项目前端通过栅格布局实现响应式,可适应PC端、平板端、手机端等不同屏幕大小尺寸的完美布局展示

后端部分采用Django作为开发框架,同时集成Redis等相关技术。

操作系统

Windows10和Windows以后的版本关于Windows10,微软宣布它将以比以前更快的节奏更新Windows,将不会有官方的“Windows11”;相反,WindowsUpdate(或另一个超市服务模型)会将现有的Windows10更新为新版本。在编写此书时,已经有两个这样的更新发生在2015年11月(也称为版本1511,指服务年和月份)和2016年7月(版本1607,也因为周年更新的营销名称所知)[5]

Windows10和“一个内核”多年来,几种不同类型的Windows已经发展起来。除了在PC上运行的主流Windows之外,还有Xbox360游戏控制台,它运行一个分叉Windows2000。WindowsPhone7基于WindowsCE(微软的实时操作系统)运行的一个变体[6]。维护和扩展所有这些代码库显然是困难的。因此,微软决定将内核和基础平台支持的二进制文件聚合为一个。这开始于Windows8和Windows电话8,其中共享内核(Windows8.1和Windows电话8.1具有聚合的Windows运行时API)。使用Windows10,融合就完成了,这个共享平台被称为Onecore,它运行在PC、电话、XboxOne游戏控制台、全息屏和物联网(IoT)设备(如树莓Pi2)上[7]

2.2开发工具

PyCharm是一种Python IDE,带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,比如调试、语法高亮、Project管理、代码跳转、智能提示、自动完成、单元测试、版本控制。此外,该IDE提供了一些高级功能,以用于支持Django框架下的专业Web开发。

MySQL是一个关系型数据库管理系统,它的范围包括了膝上型计算机、台式机、超市服务器。20世纪,最初的MySQL是由Sybase专门为UNIX系统开发的,后来微软将它移植到了WindowsNT系统上。从1994年开始,微软发布独立于Sybase开发的MySQL版本,而Sybase在20世纪90年代后期,就已经停止使用MySQL这个名称。

MySQL提供MySQL多个拷贝之间以及其他数据库系统的复制服务。其中的分析服务是属于系统的一个完整部分,包括了:联机分析处理(OLAP)和数据挖掘工具。MySQL提供了一个大的图形化工具集和向导,引导数据库管理员执行各种任务,例如建立定期备份、在服务器之间复制数据,以及调整数据库性能[10]

2.3开发技术

2.3.1 MVVM模式介绍

MVVM是Model-View-ViewModel的简写。它本质上就是MVC 的改进版。MVVM 就是将其中的View 的状态和行为抽象化,让我们将视图 UI 和业务逻辑分开。当然这些事 ViewModel 已经帮我们做了,它可以取出 Model 的数据同时帮忙处理 View 中由于需要展示内容而涉及的业务逻辑。微软的WPF带来了新的技术体验,如Silverlight、音频视频3D动画……,这导致了软件UI层更加细节化、可定制化。同时,在技术层面,WPF也带来了 诸如Binding、Dependency Property、Routed Events、Command、DataTemplate、ControlTemplate等新特性。MVVM(Model-View-ViewModel)框架的由来便是MVP(Model-View-Presenter)模式与WPF结合的应用方式时发展演变过来的一种新型架构框架。它立足于原有MVP框架并且把WPF的新特性糅合进去,以应对客户日益复杂的需求变化。

2.3.2 Django框架

Django是一个由Python编写的具有完整架站能力的开源Web框架。使用Django,只要很少的代码,Python的程序开发人员就可以轻松地完成一个正式网站所需要的大部分内容,并进一步开发出全功能的Web服务[10]。

Django本身基于MVC模型,即Model(模型)+View(视图)+ Controller(控制器)设计模式,因此天然具有MVC的出色基因:开发快捷、部署方便、可重用性高、维护成本低等。Python加Django是快速开发、设计、部署网站的最佳组合[11]。

Django具有以下特点:

能完善、要素齐全:该有的、可以没有的都有,常用的、不常用的工具都用。Django提供了大量的特性和工具,无须你自己定义、组合、增删及修改[12]。

完善的文档:经过十多年的发展和完善,Django有广泛的实践经验和完善的在线文档(可惜大多数为英文)。开发者遇到问题时可以搜索在线文档寻求解决方案[13]。

强大的数据库访问组件:Django的Model层自带数据库ORM组件,使得开发者无须学习其他数据库访问技术(SQL、pymysql、SQLALchemy等)。

灵活的URL映射:Django使用正则表达式管理URL映射,灵活性高。

丰富的Template模板语言:类似jinjia模板语言,不但原生功能丰富,还可以自定义模板标签[14]。

2.3.3 Vue.js 主要功能

Vue.js是一套构建用户界面的渐进式框架。与其他重量级框架不同的是,Vue采用自底向上增量开发的设计。Vue 的核心库只关注视图层,并且非常容易学习,非常容易与其它库或已有项目整合。另一方面,Vue 完全有能力驱动采用单文件组件和Vue生态系统支持的库开发的复杂单页应用。

Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件。

Vue.js 自身不是一个全能框架——它只聚焦于视图层。因此它非常容易学习,非常容易与其它库或已有项目整合。另一方面,在与相关工具和支持库一起使用时,Vue.js 也能驱动复杂的单页应用。

3系统分析

3.1需求分析

天天超市管理系统主要是为了提高工作人员的工作效率和更方便快捷的满足用户,更好存储所有数据信息及快速方便的检索功能,对系统的各个模块是通过许多今天的发达系统做出合理的分析来确定考虑用户的可操作性,遵循开发的系统优化的原则,经过全面的调查和研究。

系统所要实现的功能分析,对于现在网络方便的管理,系统要实现用户可以直接在平台上进行查看所有数据信息,根据需求可以进行在线添加,删除或修改天天超市管理系统信息,这样既能节省时间,不用再像传统的方式耽误时间,真的很难去满足用户的各种需求。所以天天超市管理系统的开发不仅仅是能满足用户的需求,还能提高管理员的工作效率,减少原有不必要的工作量。

3.2 系统可行性分析

3.2.1技术可行性:

本系统在Windows操作系统中进行开发,并且目前PC机的性能已经可以胜任普通网站的web服务器。系统开发所使用的技术也都是自身所具有的,也是当下广泛应用的技术之一。

系统的开发环境和配置都是可以自行安装的,系统使用JSP开发工具,使用比较成熟的Mysql数据库进行对系统前台及后台的数据交互,根据技术语言对数据库,结合需求进行修改维护,可以使得网站运行更具有稳定性和安全性,从而完成实现网站的开发。

(1)硬件可行性分析

天天超市管理系统及信息分析的设计对于所使用的计算机没有什么硬性的要求,计算机只要可以正常的使用进行代码的编写及页面设计就可行,主要是对于服务器有些要求,对于平台搭建完成要上传的服务器是有一定的要求的,服务器必须选择安全性比较高的,然后就是在打开网站必须顺畅,不能停顿太长时间;性价比高;安全性高。

(2)软件可行性分析

开发整个系统使用的是云计算,流量的可扩展性和基于流量的智能调整云计算的优点就是流量的可扩展性和基于流量的智能调整,保障系统的安全及数据信息的及时备份。

因此,我们从两个方面进行了可行性研究,可以看出系统的开发没有问题。

3.2.2经济可行性

在天天超市管理系统开发之前所做的市场调研及其他的物流公司相关的管理系统,都是没有任何费用的,都是通过开发者自己的努力,所有的工作的都是自己亲力亲为,在碰到自己比较难以解决的问题,大多是通过同学和指导老师的帮助进行相关信息的解决,所以对于天天超市管理系统的开发在经济上是完全可行的,没有任何费用支出的。

使用比较成熟的技术,系统是基于django的开发,采用Mysql数据库。所以系统在开发人力、财力要求不高,具有经济可行性。

3.2.3操作可行性: 

可操作性主要是对天天超市管理系统设计完成后,用户的使用体验度,以及管理员可以通过系统随时管理相关的数据信息,并且对于管理员、注册用户两个用户角色,都可以简单明了的进入到自己的系统界面,通过界面导航菜单可以简单明了地操作功能模块,方便用户信息的操作需求和管理员管理数据信息,对于系统的操作,不需要专业人员都可以直接进行功能模块的操作管理,所以在系统的可操作性是完全可以的。本系统的操作使用的也是界面窗口进行登录,所以操作人员只要会简单的电脑操作就完全可以的。

3.3 系统功能分析

天天超市管理系统中采用了Python的Django框架进行开发,在数据库上选择MYSQL,在功能上天天超市管理系统我划分为了用户管理模块和管理员模块这两大部分。

注册用户管理模块:

(1)用户注册登录:用户可以随时进入到系统中,就必须有这个系统的账号,如果没有账号的话,可以注册成会员用户进行相关的操作,同时用户还可以对个人信息以及操作的信息进行管控。

(2)查看天天超市管理系统的首页信息:天天超市管理系统的首页信息包含了首页、超市公告、超市资讯、超市中心、商城管理。

(3)订单配送:可以查看订单配送数量、金额、发货日期、配送单号等详情,可以进行查询和重置等操作。

(4)超市中心:可以查看商品的图片、价格等 详细信息。在商品列表里可以搜索商品订单,并可以进行筛选及排序等操作。

(5)超市资讯:可以查看超市热门列表等详细信息。

管理员管理模块:

(1)登录:管理员在后台可以输入用户名+密码进行登录,管理员的用户名和密码是在数据库中直接设定好的。

(2)系统用户:管理员点击“系统用户”菜单可以对系统中存在的用户进行管理,包含了管理员用户和注册用户。

(3)商品库存列表:可以查看商品编号、商品名称、库存数量、图片、创建时间、更新时间等详情,并可以对其进行入库,还可以进行查询、重置、删除等操作

(4)商品库存添加;管理员可以对商品编号、商品名称、入库数量、入库单价、总金额、供应商、入库日期进行添加提交。

(5)采购入库列表:管理员可以查看商品编号、商品名称、入库数量、入库单价、总金额、供应商、入库日期等详情,并可以进行查询、重置、删除等操作。

(6)轮播图:管理员可以插入轮播图图片、填写标题进行提交。

(7)分类列表:管理员可以查看分类物品创建时间和更新时间、并可以进行查询、重置、删除、添加等操作。

(8)订单配送:管理员可以查看订单号、商品名称、购买数量、交易金额、发货日期、配送单号、联系人等详细信息,并可以进行查询、重置、删除等操作。

3.4系统用例分析

系统的用例展示的是系统功能与用户之间的关系,通过用例的方式能够直观的展示出来,本天天超市管理系统的完整UML用例图分别是图2-1、图2-2。

图2-1 天天超市管理系统注册用户角色用例图

图2-2 天天超市管理系统后台管理员角色用例

3.5 项目设计目标与原则

1、关于天天超市管理系统的基本要求

(1)功能要求:可以管理后台首页、系统用户(管理员、注册用户)、商品库存管理(商品库存列表、商品库存添加)、采购入库管理(采购入库列表)、销售出库管理(销售出库列表)、系统管理(轮播图管理)、超市公告管理(超市公告)、资源管理(超市资讯、资讯分类)、商城管理(超市中心、分类列表、订单列表、订单配送)等功能模块。

(2)性能:在不同操作系统上均能无差错实现在不同类型的用户登入相应界面后能不出差错、方便地进行预期操作。

(3)安全与保密要求:用户都必须通过身份验证才能进入系统,并且用户的权限也需要根据用户的类型进行限定。

(4)环境要求:支持多种平台,可在Windows系列、Vista系统等多种操作系统下使用。

2、开发目标

天天超市管理系统的主要开发目标如下:

(1)实现管理系统信息关系的系统化、规范化和自动化;

(2)减少维护人员的工作量以及实现用户对信息的控制和管理。

(3)方便查询信息及管理信息等;

(4)通过网络操作,改善处理问题的效率,提高操作人员利用率;

(5)考虑到用户多样性特点,要求界面简单,操作简便。

3、设计原则

本天天超市管理系统采用python技术,Mysql数据库开发,充分保证了系统稳定性、完整性。

天天超市管理系统的设计与实现的设计思想如下:

操作简单方便、系统界面安全良、简单明了的页面布局、方便查询天天超市管理系统相关信息。

2、即时可见:对天天超市管理系统信息的处理将立马在对应地点可以查询到,从而实现“即时发布、即时见效”的系统功能。

3、功能的完善性:可以管理后台首页、系统用户(管理员、注册用户)、商品库存管理(商品库存列表、商品库存添加)、采购入库管理(采购入库列表)、销售出库管理(销售出库列表)、系统管理(轮播图管理)、超市公告管理(超市公告)、资源管理(超市资讯、资讯分类)、商城管理(超市中心、分类列表、订单列表、订单配送)等操作。

3.6系统流程分析

3.6.1操作流程

系统登录流程图,如图所示:

图3-1登录流程图

3.6.2添加信息流程

添加信息流程图,如图所示:

图3-2添加信息流程图

3.6.3删除信息流程

删除信息流程图,如图所示:

图3-3删除信息流程图

4系统设计

4.1系统设计的原理

系统设计原理包括:

  1. 模块化。模块化就是把整个程序划分为多个模块,每个模块有自己的名字并可以被独立访问。所有模块的功能集合起来就可以满足用户需求。
  2. 抽象。抽象是暂时忽略软件的细节,集中精力将软件的本质特征提取出来。
  3. 逐步求精。总体设计需要先解决主要问题,再将问题一步步细化。
  4. 局部化和信息隐藏。不同模块之间,信息相互不能访问,是不能访问的;并且应该在相近的物理地址上放置关系较密切的软件元素。
  5. 模块独立。模块之间应该遵循高内聚,低耦合的原则。

4.2系统功能设计

天天超市管理系统从实际应用角度来说可以分成用户管理模块、注册用户两大模块。

1.系统用户管理模块系统用户管理模块可以分成用户管理、个人信息管理和权限管理模块。用户管理是对用户的相关信息进行查阅、修改,删除等操作。个人信息管理可以对个人信息的情况进行添加、修改信息删除、个人信息修改和个人信息查询。

2.主要功能管理模块包括台首页、系统用户(管理员、注册用户)、商品库存管理(商品库存列表、商品库存添加)、采购入库管理(采购入库列表)、销售出库管理(销售出库列表)、系统管理(轮播图管理)、超市公告管理(超市公告)、资源管理(超市资讯、资讯分类)、商城管理(超市中心、分类列表、订单列表、订单配送)。

3.系统管理模块系统管理模块分为数据备份。

系统的功能模块图如下图所示。

图4-1系统功能结构图

4.3数据库设计

数据库设计(DatabaseDesign)是指对一个给定的环境,构造良好的数据库模式,建立数据库系统,使之能够最有效地存储数据,满足各类用户的需求即处理要求和信息要求。在数据库应用范围内,经常把使用数据库的系统称为数据库的应用系统。

4.3.1概念模型设计

E-R设计方法是一种通过E-R图来描述现实世界信息结构的DB设计方法。E-R图由实体、属性、联系三部分组成。它有两个优点,即接近于人的思维,容易理解;与计算机无关,用户容易接受。

系统的主要实体间关系E-R图如下图所示:

图4-2系统E-R图

实体间可建立某种联系,大致可分为三种:(1)实体间一对一联系,这种关系可以独立也可与其他合并;(2)实体间是一对多联系,实体与另一个n端实体发生联系;(3)实体间为多对多联系,两个实体间存在某种关系。每个实体上码所具有的属性就是关系属性,实体码的组合就是关系码。

4.3.2逻辑结构设计

根据E-R模型,天天超市管理系统建立了以下逻辑数据结构,下面是各数据表的详细说明。

表access_token (登陆访问时长)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

token_id

int

10

0

N

Y

临时访问牌ID

2

token

varchar

64

0

Y

N

临时访问牌

3

info

text

65535

0

Y

N

4

maxage

int

10

0

N

N

2

最大寿命:默认2小时

5

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

6

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

7

user_id

int

10

0

N

N

0

用户编号:

表address (收货地址:)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

address_id

int

10

0

N

Y

收货地址:

2

name

varchar

32

0

Y

N

姓名:

3

phone

varchar

13

0

Y

N

手机:

4

postcode

varchar

8

0

Y

N

邮编:

5

address

varchar

255

0

N

N

地址:

6

user_id

mediumint

8

0

N

N

用户ID:[0,8388607]用户获取其他与用户相关的数据

7

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

8

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

9

default

bit

1

0

N

N

0

默认判断

表article (文章:用于内容管理系统的文章)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

article_id

mediumint

8

0

N

Y

文章id:[0,8388607]

2

title

varchar

125

0

N

Y

标题:[0,125]用于文章和html的title标签中

3

type

varchar

64

0

N

N

0

文章分类:[0,1000]用来搜索指定类型的文章

4

hits

int

10

0

N

N

0

点击数:[0,1000000000]访问这篇文章的人次

5

praise_len

int

10

0

N

N

0

点赞数

6

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

7

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

8

source

varchar

255

0

Y

N

来源:[0,255]文章的出处

9

url

varchar

255

0

Y

N

来源地址:[0,255]用于跳转到发布该文章的网站

10

tag

varchar

255

0

Y

N

标签:[0,255]用于标注文章所属相关内容,多个标签用空格隔开

11

content

longtext

2147483647

0

Y

N

正文:文章的主体内容

12

img

varchar

255

0

Y

N

封面图

13

description

text

65535

0

Y

N

文章描述

表article_type (文章分类)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

type_id

smallint

5

0

N

Y

分类ID:[0,10000]

2

display

smallint

5

0

N

N

100

显示顺序:[0,1000]决定分类显示的先后顺序

3

name

varchar

16

0

N

N

分类名称:[2,16]

4

father_id

smallint

5

0

N

N

0

上级分类ID:[0,32767]

5

description

varchar

255

0

Y

N

描述:[0,255]描述该分类的作用

6

icon

text

65535

0

Y

N

分类图标:

7

url

varchar

255

0

Y

N

外链地址:[0,255]如果该分类是跳转到其他网站的情况下,就在该URL上设置

8

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

9

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

表auth (用户权限管理)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

auth_id

int

10

0

N

Y

授权ID:

2

user_group

varchar

64

0

Y

N

用户组:

3

mod_name

varchar

64

0

Y

N

模块名:

4

table_name

varchar

64

0

Y

N

表名:

5

page_title

varchar

255

0

Y

N

页面标题:

6

path

varchar

255

0

Y

N

路由路径:

7

position

varchar

32

0

Y

N

位置:

8

mode

varchar

32

0

N

N

_blank

跳转方式:

9

add

tinyint

3

0

N

N

1

是否可增加:

10

del

tinyint

3

0

N

N

1

是否可删除:

11

set

tinyint

3

0

N

N

1

是否可修改:

12

get

tinyint

3

0

N

N

1

是否可查看:

13

field_add

text

65535

0

Y

N

添加字段:

14

field_set

text

65535

0

Y

N

修改字段:

15

field_get

text

65535

0

Y

N

查询字段:

16

table_nav_name

varchar

500

0

Y

N

跨表导航名称:

17

table_nav

varchar

500

0

Y

N

跨表导航:

18

option

text

65535

0

Y

N

配置:

19

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

20

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

表cart (购物车)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

cart_id

int

10

0

N

Y

购物车ID:

2

title

varchar

64

0

Y

N

标题:

3

img

varchar

255

0

N

N

0

图片:

4

user_id

int

10

0

N

N

0

用户ID:

5

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

6

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

7

state

int

10

0

N

N

0

状态:使用中,已失效

8

price

double

9

2

N

N

0.00

单价:

9

price_ago

double

9

2

N

N

0.00

原价:

10

price_count

double

11

2

N

N

0.00

总价:

11

num

int

10

0

N

N

1

数量:

12

goods_id

mediumint

8

0

N

N

商品id:[0,8388607]

13

type

varchar

64

0

N

N

未分类

商品分类:

14

description

varchar

255

0

Y

N

描述:[0,255]用于产品规格描述

表collect (收藏)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

collect_id

int

10

0

N

Y

收藏ID:

2

user_id

int

10

0

N

N

0

收藏人ID:

3

source_table

varchar

255

0

Y

N

来源表:

4

source_field

varchar

255

0

Y

N

来源字段:

5

source_id

int

10

0

N

N

0

来源ID:

6

title

varchar

255

0

Y

N

标题:

7

img

varchar

255

0

Y

N

封面:

8

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

9

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

表comment (评论)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

comment_id

int

10

0

N

Y

评论ID:

2

user_id

int

10

0

N

N

0

评论人ID:

3

reply_to_id

int

10

0

N

N

0

回复评论ID:空为0

4

content

longtext

2147483647

0

Y

N

内容:

5

nickname

varchar

255

0

Y

N

昵称:

6

avatar

varchar

255

0

Y

N

头像地址:[0,255]

7

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

8

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

9

source_table

varchar

255

0

Y

N

来源表:

10

source_field

varchar

255

0

Y

N

来源字段:

11

source_id

int

10

0

N

N

0

来源ID:

表goods (商品信息)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

goods_id

mediumint

8

0

N

Y

产品id:[0,8388607]

2

title

varchar

125

0

Y

N

标题:[0,125]用于产品和html的<title>标签中

3

img

text

65535

0

Y

N

封面图:用于显示于产品列表页

4

description

varchar

255

0

Y

N

描述:[0,255]用于产品规格描述

5

price_ago

double

8

2

N

N

0.00

原价:[1]

6

price

double

8

2

N

N

0.00

卖价:[1]

7

sales

int

10

0

N

N

0

销量:[0,1000000000]

8

inventory

int

10

0

N

N

0

商品库存

9

type

varchar

64

0

N

N

商品分类:

10

hits

int

10

0

N

N

0

点击量:[0,1000000000]访问这篇产品的人次

11

content

longtext

2147483647

0

Y

N

正文:产品的主体内容

12

img_1

text

65535

0

Y

N

主图1:

13

img_2

text

65535

0

Y

N

主图2:

14

img_3

text

65535

0

Y

N

主图3:

15

img_4

text

65535

0

Y

N

主图4:

16

img_5

text

65535

0

Y

N

主图5:

17

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

18

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

19

customize_field

text

65535

0

Y

N

自定义字段

20

source_table

varchar

255

0

Y

N

来源表:

21

source_field

varchar

255

0

Y

N

来源字段:

22

source_id

int

10

0

N

N

0

来源ID:

23

user_id

int

10

0

Y

N

0

添加人

表goods_type (商品类型)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

type_id

int

10

0

N

Y

商品分类ID:

2

father_id

smallint

5

0

N

N

0

上级分类ID:[0,32767]

3

name

varchar

255

0

Y

N

商品名称:

4

desc

varchar

255

0

Y

N

描述:

5

icon

varchar

255

0

Y

N

图标:

6

source_table

varchar

255

0

Y

N

来源表:

7

source_field

varchar

255

0

Y

N

来源字段:

8

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

9

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

表hits (用户点击)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

hits_id

int

10

0

N

Y

点赞ID:

2

user_id

int

10

0

N

N

0

点赞人:

3

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

4

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

5

source_table

varchar

255

0

Y

N

来源表:

6

source_field

varchar

255

0

Y

N

来源字段:

7

source_id

int

10

0

N

N

0

来源ID:

表inventory_of_goods (商品库存)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

inventory_of_goods_id

int

10

0

N

Y

商品库存ID

2

product_number

varchar

64

0

Y

N

商品编号

3

product_name

varchar

64

0

Y

N

商品名称

4

inventory

int

10

0

Y

N

0

库存

5

picture

varchar

255

0

Y

N

图片

6

remarks

text

65535

0

Y

N

备注

7

recommend

int

10

0

N

N

0

智能推荐

8

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

9

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表logistics_delivery (物流配送)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

logistics_delivery_id

int

10

0

N

Y

物流配送ID

2

order_number

varchar

64

0

Y

N

订单号

3

product_name

varchar

64

0

Y

N

商品名称

4

purchase_quantity

varchar

64

0

Y

N

购买数量

5

total_transaction_amount

double

11

2

Y

N

0.00

交易总额

6

the_date_of_issuance

date

10

0

Y

N

发货日期

7

delivery_number

varchar

30

0

Y

N

配送订单

8

ordinary_users

int

10

0

Y

N

0

普通用户

9

shipping_address

varchar

64

0

Y

N

收货地址

10

delivery_status

varchar

64

0

Y

N

配送状态

11

signing_status

varchar

64

0

Y

N

签收状态

12

recommend

int

10

0

N

N

0

智能推荐

13

contact_name

varchar

255

0

Y

N

联系人名字

14

merchant_id

int

10

0

Y

N

商家id

15

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

16

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表notice (公告)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

notice_id

mediumint

8

0

N

Y

公告id:

2

title

varchar

125

0

N

N

标题:

3

content

longtext

2147483647

0

Y

N

正文:

4

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

5

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

表order (订单)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

order_id

int

10

0

N

Y

订单ID:

2

order_number

varchar

64

0

Y

N

订单号:

3

goods_id

mediumint

8

0

N

N

商品id:[0,8388607]

4

title

varchar

32

0

Y

N

商品标题:

5

img

varchar

255

0

Y

N

商品图片:

6

price

double

10

2

N

N

0.00

价格:

7

price_ago

double

10

2

N

N

0.00

原价:

8

num

int

10

0

N

N

1

数量:

9

price_count

double

8

2

N

N

0.00

总价:

10

norms

varchar

255

0

Y

N

规格:

11

type

varchar

64

0

N

N

未分类

商品分类:

12

contact_name

varchar

32

0

Y

N

联系人姓名:

13

contact_email

varchar

125

0

Y

N

联系人邮箱:

14

contact_phone

varchar

11

0

Y

N

联系人手机:

15

contact_address

varchar

255

0

Y

N

收件地址:

16

postal_code

varchar

9

0

Y

N

邮政编码:

17

user_id

int

10

0

N

N

0

买家ID:

18

merchant_id

mediumint

8

0

N

N

0

商家ID:

19

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

20

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

21

description

varchar

255

0

Y

N

描述:[0,255]用于产品规格描述

22

state

varchar

16

0

N

N

待付款

订单状态:待付款,待发货,待签收,已签收,待退款,已退款,已拒绝,已完成

23

remark

text

65535

0

Y

N

订单备注

24

delivery_state

varchar

16

0

Y

N

未配送

发货状态:未配送,已配送

表praise (点赞)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

praise_id

int

10

0

N

Y

点赞ID:

2

user_id

int

10

0

N

N

0

点赞人:

3

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

4

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

5

source_table

varchar

255

0

Y

N

来源表:

6

source_field

varchar

255

0

Y

N

来源字段:

7

source_id

int

10

0

N

N

0

来源ID:

8

status

bit

1

0

N

N

1

点赞状态:1为点赞,0已取消

表purchase_receipt (采购入库)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

purchase_receipt_id

int

10

0

N

Y

采购入库ID

2

product_number

varchar

64

0

Y

N

商品编号

3

product_name

varchar

64

0

Y

N

商品名称

4

receipt_quantity

int

10

0

Y

N

0

入库数量

5

receipt_unit_price

int

10

0

Y

N

0

入库单价

6

total_amount

varchar

64

0

Y

N

总金额

7

supplier

varchar

64

0

Y

N

供应商

8

warehousing_date

date

10

0

Y

N

入库日期

9

warehousing_remarks

text

65535

0

Y

N

入库备注

10

recommend

int

10

0

N

N

0

智能推荐

11

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

12

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表registered_users (注册用户)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

registered_users_id

int

10

0

N

Y

注册用户ID

2

name

varchar

64

0

Y

N

姓名

3

gender

varchar

64

0

Y

N

性别

4

examine_state

varchar

16

0

N

N

已通过

审核状态

5

recommend

int

10

0

N

N

0

智能推荐

6

user_id

int

10

0

N

N

0

用户ID

7

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

8

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表sales_outbound (销售出库)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

sales_outbound_id

int

10

0

N

Y

销售出库ID

2

product_number

varchar

64

0

Y

N

商品编号

3

product_name

varchar

64

0

Y

N

商品名称

4

outbound_quantity

int

10

0

Y

N

0

出库数量

5

delivery_unit_price

int

10

0

Y

N

0

出库单价

6

total_amount

varchar

64

0

Y

N

总金额

7

delivery_date

date

10

0

Y

N

出库日期

8

outbound_remarks

text

65535

0

Y

N

出库备注

9

recommend

int

10

0

N

N

0

智能推荐

10

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

11

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表slides (轮播图)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

slides_id

int

10

0

N

Y

轮播图ID:

2

title

varchar

64

0

Y

N

标题:

3

content

varchar

255

0

Y

N

内容:

4

url

varchar

255

0

Y

N

链接:

5

img

varchar

255

0

Y

N

轮播图:

6

hits

int

10

0

N

N

0

点击量:

7

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

8

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

表supermarket_center (超市中心)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

supermarket_center_id

int

10

0

N

Y

超市中心ID

2

brand

varchar

64

0

Y

N

品牌

3

specifications

varchar

64

0

Y

N

规格

4

recommend

int

10

0

N

N

0

智能推荐

5

cart_title

varchar

125

0

Y

N

标题:[0,125]用于产品html的标签中

6

cart_img

text

65535

0

Y

N

封面图:用于显示于产品列表页

7

cart_description

varchar

255

0

Y

N

描述:[0,255]用于产品规格描述

8

cart_price_ago

double

8

2

N

N

0.00

原价:[1]

9

cart_price

double

8

2

N

N

0.00

卖价:[1]

10

cart_inventory

int

10

0

N

N

0

商品库存

11

cart_type

varchar

64

0

N

N

未分类

商品分类:

12

cart_content

longtext

2147483647

0

Y

N

正文:产品的主体内容

13

cart_img_1

text

65535

0

Y

N

主图1:

14

cart_img_2

text

65535

0

Y

N

主图2:

15

cart_img_3

text

65535

0

Y

N

主图3:

16

cart_img_4

text

65535

0

Y

N

主图4:

17

cart_img_5

text

65535

0

Y

N

主图5:

18

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

19

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表upload (文件上传)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

upload_id

int

10

0

N

Y

上传ID

2

name

varchar

64

0

Y

N

文件名

3

path

varchar

255

0

Y

N

访问路径

4

file

varchar

255

0

Y

N

文件路径

5

display

varchar

255

0

Y

N

显示顺序

6

father_id

int

10

0

Y

N

0

父级ID

7

dir

varchar

255

0

Y

N

文件夹

8

type

varchar

32

0

Y

N

文件类型

表user (用户账户:用于保存用户登录信息)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

user_id

mediumint

8

0

N

Y

用户ID:[0,8388607]用户获取其他与用户相关的数据

2

state

smallint

5

0

N

N

1

账户状态:[0,10](1可用|2异常|3已冻结|4已注销)

3

user_group

varchar

32

0

Y

N

所在用户组:[0,32767]决定用户身份和权限

4

login_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

上次登录时间:

5

phone

varchar

11

0

Y

N

手机号码:[0,11]用户的手机号码,用于找回密码时或登录时

6

phone_state

smallint

5

0

N

N

0

手机认证:[0,1](0未认证|1审核中|2已认证)

7

username

varchar

16

0

N

N

用户名:[0,16]用户登录时所用的账户名称

8

nickname

varchar

16

0

Y

N

昵称:[0,16]

9

password

varchar

64

0

N

N

密码:[0,32]用户登录所需的密码,由6-16位数字或英文组成

10

email

varchar

64

0

Y

N

邮箱:[0,64]用户的邮箱,用于找回密码时或登录时

11

email_state

smallint

5

0

N

N

0

邮箱认证:[0,1](0未认证|1审核中|2已认证)

12

avatar

varchar

255

0

Y

N

头像地址:[0,255]

13

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

表user_group (用户组:用于用户前端身份和鉴权)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

group_id

mediumint

8

0

N

Y

用户组ID:[0,8388607]

2

display

smallint

5

0

N

N

100

显示顺序:[0,1000]

3

name

varchar

16

0

N

N

名称:[0,16]

4

description

varchar

255

0

Y

N

描述:[0,255]描述该用户组的特点或权限范围

5

source_table

varchar

255

0

Y

N

来源表:

6

source_field

varchar

255

0

Y

N

来源字段:

7

source_id

int

10

0

N

N

0

来源ID:

8

register

smallint

5

0

Y

N

0

注册位置:

9

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

10

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

5系统实现

5.1注册用户功能模块实现

5.1.1登录模块

登录模块,用户、管理员可以通过登录进入该系统,如果输入正确用户名和密码,则可以进入该系统,显示的结果如下。

用户登录界面如下图所示。

图5-1登录模块界面图

 登录关键代码如下:

def Login(self, ctx):

        print("===================登录=====================")

        ret = {

            "error": {

                "code": 70000,

                "message": "账户不存在",

            }

        }

        body = ctx.body

        password = md5hash(body["password"]) or ""

        obj = service_select("user").Get_obj(

            {"username": body["username"]}, {"like": False}

        )

        if obj:

            user_group = service_select("user_group").Get_obj({'name': obj['user_group']}, {"like": False})

            if user_group and user_group['source_table'] != '':

                user_obj = service_select(user_group['source_table']).Get_obj({"user_id": obj['user_id']},                                                                       {"like": False})

                if user_obj['examine_state'] == '未通过':

                    ret = {

                        "error": {

                            "code": 70000,

                            "message": "账户未通过审核",

                        }

                    }

                    return ret

                if user_obj['examine_state'] == '未审核':

                    ret = {

                        "error": {

                            "code": 70000,

                            "message": "账户未审核",

                        }

                    }

                    return ret

            if obj["state"] == 1:

                if obj["password"] == password:

                    timeout = timezone.now()

                    timestamp = int(time.mktime(timeout.timetuple())) * 1000

                    token = md5hash(str(obj["user_id"]) + "_" + str(timestamp))

                    ctx.request.session[token] = obj["user_id"]

                    service_select("access_token").Add(

                        {"token": token, "user_id": obj["user_id"]}

                    )

                    obj["token"] = token

                    ret = {

                        "result": {"obj": obj}

                    }

                else:

                    ret = {

                        "error": {

                            "code": 70000,

                            "message": "密码错误",

                        }

                    }

            else:

                ret = {

                    "error": {

                        "code": 70000,

                        "message": "用户账户不可用,请联系管理员",

                    }

                }

        return ctx.response(json.dumps(ret, ensure_ascii=False))

5.1.2注册账户模块

如果某个人员进入该系统,则注册该用户的信息,如果注册成功,就可以进入该系统,显示的结果如下。

注册用户界面如下图所示。

图5-2注册用户界面图

注册关键代码如下

    def Register(self, ctx):

        print("===================注册=====================")

        userService = service_select("user")

        body = ctx.body

        if "username" not in body and body["username"] == '':

            return ctx.response(json.dumps({

                "error": {

                    "code": 70000,

                    "message": "用户名不能为空",

                }

            }, ensure_ascii=False))

        if "user_group" not in body and body["user_group"] == '':

            return ctx.response(json.dumps({

                "error": {

                    "code": 70000,

                    "message": "用户组不能为空",

                }

            }, ensure_ascii=False))

        if "password" not in body and body["password"] == '':

            return ctx.response(json.dumps({

                "error": {

                    "code": 70000,

                    "message": "密码不能为空",

                }

            }, ensure_ascii=False))

        post_param = body

        post_param['nickname'] = body["nickname"] or ""

        post_param['password'] = md5hash(body["password"])

        obj = userService.Get_obj({"username": post_param['username']}, {"like": False})

        if obj:

            return ctx.response(json.dumps({

                "error": {

                    "code": 70000,

                    "message": "用户名已存在",

                }

            }, ensure_ascii=False))

        ret = {

            "error": {

                "code": 70000,

                "message": "注册失败",

            }

        }

        bl = userService.Add(post_param)

        if bl:

            ret = {

                "result": {

                    "bl": True,

                    "message": "注册成功"

                }

            }

        return ctx.response(json.dumps(ret, ensure_ascii=False))

5.1.3订单配送模块

点击“订单配送”可以查看订单配送数量、金额、发货日期、配送单号等详情,可以进行查询和重置等操作。如下图所示。

图5-3订单配送页面图

5.1.4超市中心模块

点击“超市中心”可以查看商品的图片、价格等详细信息。在商品列表里可以搜索商品订单,并可以进行筛选及排序等操作。如下图所示。

图5-6超市中心页面图

5.1.5超市资讯模块

点击“超市资讯”可以查看超市热门列表等详细信息。如下图所示。

图5-7超市资讯页面图

5.2管理员功能模块实现

5.2.1管理员登录模块

  管理员输入账号、密码、验证码点击“登录”按钮就会跳转到登录界面。如下图所示。

图5-8管理员登录页面图

找回密码关健代码如下:

 def Forget_password(self, ctx):

        print("===================修改密码=====================")

        ret = {

            "error": {

                "code": 70000,

                "message": "用户信息不能没有"

            }

        }

        body = ctx.body

        if not body["code"]:

            return {

                "error": {

                    "code": 70000,

                    "message": "验证码不存在或者错误"

                }

            }

        obj = service_select("user").Get_obj(

            {"username": body["username"]}, {"like": False}

        )

        if not obj:

            return {

                "error": {

                    "code": 70000,

                    "message": "用户名不存在或者错误"

                }

            }

        password = md5hash(body["password"])

        if not password:

            return {

                "error": {

                    "code": 70000,

                    "message": "密码不存在或者错误"

                }

            }

        bl = service_select("user").Set({"user_id": obj["user_id"]}, {"password": password})

        if bl:

            ret = {"result": {"bl": True, "message": "修改成功"}}

        else:

            ret = {

                "error": {

                    "code": 70000,

                    "message": "修改失败",

                }

            }

        return ctx.response(json.dumps(ret, ensure_ascii=False))

修改密码代码如下:

 def Change_password(self, ctx):

        print("===================修改密码=====================")

        ret = {

            "error": {

                "code": 70000,

                "message": "账号未登录",

            }

        }

        request = ctx.request

        headers = request.headers

        if ("x-auth-token" in headers) and headers["x-auth-token"]:

            token = headers["x-auth-token"]

            user_id = tokenGetUserId(token, request)

            userService = service_select("user")

            body = ctx.body

            password = md5hash(body["o_password"])

            obj = userService.Get_obj({"user_id": user_id, "password": password}, {"like": False})

            if obj:

                password = md5hash(body["password"])

                bl = userService.Set({"user_id": user_id}, {"password": password})

                if bl:

                    ret = {"result": {"bl": True, "message": "修改成功"}}

                else:

                    ret = {

                        "error": {

                            "code": 70000,

                            "message": "修改失败",

                        }

                    }

            else:

                ret = {

                    "error": {

                        "code": 70000,

                        "message": "密码错误",

                    }

                }

        else:

            ret = {

                "error": {

                    "code": 70000,

                    "message": "账户未登录",

                }

            }

        return ctx.response(json.dumps(ret, ensure_ascii=False))

5.2.2系统用户管理模块:

管理员可以对系统中所有的用户角色进行管控,包含了管理员、用户这两种角色,如果需要添加新的用户,点击页面中的“添加”按钮根据提示输入上用户信息,点击“提交”以后在对应的用户界面就可以查看到了,可以点击用户后面的“删除”按钮直接删除某一用户。如下图所示。

图5-9系统用户页面图

增删查改关键代码如下:

def Add(self, ctx):

body = ctx.body

unique = self.config.get("unique")

obj = None

if unique:

qy = {}

for i in range(len(unique)):

key = unique[i]

qy[key] = body.get(key)

obj = self.service.Get_obj(qy)

if not obj:

error = self.Add_before(ctx)

if error["code"]:

return {"error": error}

error = self.Events("add_before", ctx, None)

if error["code"]:

return {"error": error}

result = self.service.Add(body, self.config)

if self.service.error:

return {"error": self.service.error}

res = self.Add_after(ctx, result)

if res:

result = res

res = self.Events("add_after", ctx, result)

if res:

result = res

return {"result": result}

else:

return {"error": {"code": 10000, "message": "已存在"}}

def Del(self, ctx):

if len(ctx.query) == 0:

errorMsg = {"code": 30000, "message": "删除条件不能为空!"}

return errorMsg

result = self.service.Del(ctx.query, self.config)

if self.service.error:

return {"error": self.service.error}

return {"result": result}

def Set(self, ctx):

error = self.Set_before(ctx)

if error["code"]:

return {"error": error}

error = self.Events("set_before", ctx, None)

if error["code"]:

return {"error": error}

query = ctx.query

if 'page' in query.keys():

del ctx.query['page']

if 'size' in query.keys():

del ctx.query['size']

if 'orderby' in query.keys():

del ctx.query['orderby']

result = self.service.Set(ctx.query, ctx.body, self.config)

if self.service.error:

return {"error": self.service.error}

res = self.Set_after(ctx, result)

if res:

result = res

res = self.Events("set_after", ctx, result)

if res:

result = res

return {"result": result}

查多条数据:

def Get_list(self, ctx):

query = dict(ctx.query)

config_plus = {}

if "field" in query:

field = query.pop("field")

config_plus["field"] = field

if "page" in query:

config_plus["page"] = query.pop("page")

if "size" in query:

config_plus["size"] = query.pop("size")

if "orderby" in query:

config_plus["orderby"] = query.pop("orderby")

if "like" in query:

config_plus["like"] = query.pop("like")

if "groupby" in query:

config_plus["groupby"] = query.pop("groupby")

count = self.service.Count(query)

lst = []

if self.service.error:

return {"error": self.service.error}

elif count:

lst = self.service.Get_list(query,

obj_update(self.config, config_plus))

if self.service.error:

return {"error": self.service.error}

self.interact_list(ctx, lst)

return {"result": {"list": lst, "count": count}}

查一条数据:

def Get_obj(self, ctx):

query = dict(ctx.query)

config_plus = {}

if "field" in query:

field = query.pop("field")

config_plus["field"] = field

obj = self.service.Get_obj(query, obj_update(self.config, config_plus))

if self.service.error:

return {"error": self.service.error}

if obj:

self.interact_obj(ctx, obj)

return {"result": {"obj": obj}}

5.2.3商品库存列表模块:

点击“商品库存列表”管理员可以查看商品编号、商品名称、库存数量、图片、创建时间、更新时间等详情,并可以对其进行入库,还可以进行查询、重置、删除等操作。如下图所示。

图5-10商品库存列品页面图

5.2.4商品库存添加模块:

点击“商品库存添加”管理员可以对商品编号、商品名称、入库数量、入库单价、总金额、供应商、入库日期进行添加提交。如下图所示。

图5-11商品库存添加页面图

5.2.5采购入库列表模块:

点击“采购入库列表”管理员可以查看商品编号、商品名称、入库数量、入库单价、总金额、供应商、入库日期等详情,并可以进行查询、重置、删除等操作。如下图所示。

图5-12采购入库列表页面图

5.2.6轮播图管理模块:

点击“轮播图”管理员可以插入轮播图图片、填写标题进行提交。如下图所示。

图5-13轮播图管理页面图

5.2.7分类列表模块:

点击“分类列表”管理员可以查看分类物品创建时间和更新时间、并可以进行查询、重置、删除、添加等操作。如下图所示。

图5-13分类列表页面图

5.2.8订单配送模块:

点击“订单配送”管理员可以查看订单号、商品名称、购买数量、交易金额、发货日期、配送单号、联系人等详细信息,并可以进行查询、重置、删除等操作。如下图所示。

图5-14订单配送页面图

6系统测试

6.1测试目的

测试的目的不仅要如何去组织测试,通过分析错误的产生原因以及结果,以便改进。在系统测试中,第一个目的就是检验系统在完成过程中的逻辑问题和系统可能存在的问题。然后通过测试修正原本的错误,提高系统的质量。第二个目的就是检测系统的安全性、可靠性也就是说系统的内容是不是安全的,会不会出现遗失等情况,系统是否能很好的正常的运行。

从天天超市管理系统的实际情况来考虑,系统测试的根本就是:各项功能是否能够正常运行,不同的用户可以通过系统都做出哪些操作。能否对系统的数据进行调用,对表的增删改查操作,并且系统数据和数据库的数据是否一致。

6.2测试方法

一个业务模块应该由许多功能单元共同实现,黑盒测试针对业务功能是否能按计划完成,并且不考虑系统内部的结构和效率问题,白盒测试的要求就是要尽可能的测试到所有的组成结构,即要尽量包含所有的功能模块、覆盖全部路径。这种测试要求测试人员必须完全了解系统的业务逻辑及处理过程。但是完成上面的要求是一件很难的事,并且若程序中含有循环之后,路径的数量会越来越大,执行每一条路径都将会变得极不现实。

6.3测试过程

6.3.1系统测试计划

通过这个测试体现了此系统的功能比较完善,系统运行比较稳定,足以证明此系统具有安全性和完整性。测试计划进度表在测试之前用来计划测试目的于测试的范围,并且计划出测试的方法以及测试的时间。软件的质量是我们的追求,所以测试的过程是十分重要的,测试计划因此也成为了测试工作的基础。

系统测试计划如下表所示。

表6-1系统测试计划表

测试任务

工作描述

计划开始日期

计划结束日期

测试策划阶段

制定测试的计划、时间和预测效果

测试设计阶段

选定测试用例,回顾测试覆盖

测试实现阶段

开发测试用例/脚本

测试执行阶段

测试用例/脚本执行

测试总结阶段

生成测试和缺陷填写报告

6.3.2系统测试用例

1.用户登录模块测试用例,用户登录系统时须要输入用户名和密码,用户名和密码输入正确则登录成功,否则将会给会相应提示。对用户登录输入用户名和密码设计详细测试用例。

用户登录测试用例如下表所示。

表6-2用户登录测试用例表

设计人

测试人

功能编号

1

功能组

登录界面

功能点

用户登录

测试日期

测试环境及前提

测试条件

已添加用户A用户:1,密码:

B用户:2,密码:

测试项目及内容

测试步骤

输入项

预期输出项

实际输出

1

空值/空值

提示“用户名或密码不能为空!”

提示“用户名或密码不能为空!”

2

空值/123

3

123/空值

4

1/1

成功登录到主程序,“系统设置”菜单中拥有所有权限

成功登录到主程序,“系统设置”菜单中拥有所有权限

111/1

提示“用户名或密码错误,请重新输入”

提示“用户名或密码错误,请重新输入”

5

2/2

成功登录到主程序,在“系统设置”菜单中只能修改自己的密码

成功登录到主程序,在“系统设置”菜单中只能修改自己的密码

测试结论

用户登录功能可以正常使用

总体结论

基本通过

测试结论

功能可正常使用

总体结论

基本通过

2.用户管理测试用例,添加用户时须要输入用户的详细信息,当用户信息输入正确时则输入成功,当用户信息输入不正确时则给出相应提示。

添加用户测试用例表如下表所示。

表6-3用户管理测试用例表

设计人

测试人

功能编号

2

功能组

系统设置

功能点

添加用户

测试日期

测试环境及前提

测试条件

系统中存在欲创建人的基本信息

测试项目及内容

测试步骤

输入项

预期输出项

实际输出

1

选择一条记录点击创建用户按钮

提示“用户创建成功!”

提示“用户创建成功!”

2

使用管理员权限登录为刚刚创建的用户授权

提示“授权成功!”

提示“授权成功!”

3

实用刚刚创建的用户登录系统

提示“登录成功!”

提示“登录成功!”

测试结论

添加用户功能可以正常使用

总体结论

基本通过

3.商品库存测试用例,对商品库存功能模块进行增删改查的测试。

商品库存测试用例如下表所示。

表6-4添加商品测试用例

设计人

测试人

功能编号

3

功能组

商品库存界面

功能点

添加商品

测试日期

测试环境及前提

测试条件

进入商品库存模块

测试项目及内容

测试步骤

输入项

预期输出项

实际输出

1

添加商品库存时,没有输入任何商品信息

提示“商品库存添加失败!”

提示“商品库存添加失败!”

2

添加商品库存时,输入带*号的文本框,并且符合格式要求

提示“商品库存添加成功!”

提示“商品库存添加成功!”

3

添加商品库存时,输入所有文本框,并且格式符合要求

提示“商品库存添加成功!”

提示“商品库存添加成功!”

4

添加商品库存时,只输入没有带*号的文本框

提示“商品库存添加失败!”

提示“商品库存添加失败!”

4.商品入库管理测试用例,商品入库测试商品入库情况,可以选择一个商品进行入库,可以选则多个商品进行入库。

商品入库用例表如下表所示。

表6-5商品入库管理测试用例表

设计人

测试人

功能编号

4

功能组

入库

功能点

商品入库

测试日期

测试环境及前提

测试条件

已录入商品信息

测试项目及内容

测试步骤

输入项

预期输出项

实际输出

1

选择一个商品,点击入库按钮,输入该商品入库数量

入库成功

入库成功

2

选择一个商品,点击入库按钮,没有输入该商品入库数量

请输入入库数量

请输入入库数量

测试结论

商品入库功能可以正常使用

总体结论

基本通过

6.4测试结果

测试结果包括界面及功能测试和代码测试两部分,本系统对每个功能点做了详细的测试,测试结果正常。

测试结果表如下表所示。

表6-6系统功能测试结果表

序号

测试模块

功能点

质量保证标准

问题属性

测试结果

F1

系统用户管理模块

修改密码

正确性

故障

正常

权限设置

正确性

故障

正常

角色管理

正确性

缺陷

正常

用户信息添加

正确性

故障

正常

用户信息修改

正确性

故障

正常

用户信息查询

正确性

故障

正常

用户信息删除

正确性

故障

正常

退出系统

正确性

故障

正常

F2

功能管理模块

商品信息添加

正确性

故障

正常

商品信息修改

正确性

故障

正常

商品信息删除

正确性

故障

正常

入库信息添加

正确性

故障

正常

入库信息修改

正确性

故障

正常

入库信息删除

正确性

故障

正常

出库信息添加

正确性

故障

正常

出库信息修改

正确性

故障

正常

出库信息删除

正确性

故障

正常

商品调配添加

正确性

故障

正常

商品调配修改

正确性

故障

正常

商品调配删除

正确性

故障

正常

 7结论

本系统是通过计算机技术,结合超市管理的需求,研制出的一套用于各个超市的天天超市管理系统。该系统能够为超市的库存管理提供方便,能够帮助超市对其进行信息化管理,能够为超市对各方面的管理提高工作效率。本系统还能够将各个资料录入,让管理层在网上查询所需要的资料,这样一来,就能够省去了专门负责库存管理人的工作量,也为库存管理工作提供了便利。

在对本系统进行了详细的分析以及一系列的可行性研究之后,根据该系统的设计构想,对本软件进行了开发设计。在确定了本系统具有较高的可行性以后,通过对系统的数据库的分析和总体的功能模块的设计,本系统前台采用的是Python开发技术,以MySQL作为后台数据库连接开发。在对系统进行详细的需求分析后,针对不同的需求设立不同的板块,发挥各部分不同的作用。根据该系统的功能结构图展示出了系统内各功能模块之间的业务逻辑结构。并且通过所设计的E-R图,表示出系统各个部分的功能,涉及到系统中各部分的联系,可以让读者能够清晰的了解到本系统的运行流程,并能够进一步的了解到系统各功能模块的相关信息。

参考文献

[1]姜永成.基于Django的网络招聘数据可视化分析系统的设计与实现[J].科技资讯,2023,21(19):57-60.DOI:10.16661/j.cnki.1672-3791.2306-5042-4316

[2]曹雪朋.基于Django的数据分析系统设计与实现[J].信息与电脑(理论版),2023,35(15):141-143.

[3]王冬冬.基于Django框架的Python课程在线教育平台设计[J].信息与电脑(理论版),2023,35(12):242-244.

[4]郭鹤楠.基于Django和Python技术的网站设计与实现[J].数字通信世界,2023,(06):60-62.

[5]Xiya Y ,Xianhe L ,Changping W , et al.Design and Deployment of Django-based Housing Information Management System[J].Journal of Physics: Conference Series,2023,2425(1):

[6]Tyson M .Error tracking with Sentry, Python, and Django[J].InfoWorld.com,2022,

[7]Uzayr B S .Mastering Django:A Beginner's Guide[M].CRC Press:2022-05-15.

[8]袁明坤,曾丽.基于JavaWeb的超市商品采购管理系统设计与实现[J].电脑知识与技术,2022,18(05):61-63.DOI:10.14004/j.cnki.ckt.2022.0346

[9]庄帅.基于B/S架构设计实现超市管理系统[J].信息系统工程,2022,(01):105-108.

[10]数据超市管理系统.山西省,山西阳煤联创信息技术有限公司,2021-12-31.

[11]梅瑞泽,王静.超市信息管理系统的设计与实现[J].电子测试,2021,(18):78-80.DOI:10.16520/j.cnki.1000-8519.2021.18.028

[12]岳纹.企业小型超市管理系统的研究与开发[J].电脑编程技巧与维护,2021,(05):89-91.DOI:10.16184/j.cnki.comprg.2021.05.036

[13]李楚贞,曾琳,余育文.华润万家超市进销存管理系统的设计与实现[J].计算机产品与流通,2020,(11):274.

[14]赵新苗,谢清辉,颜依铃等.基于Django的干果超市信息管理系统[J].微型电脑应用,2020,36(01):26-29.

[15]李迪禹.超市管理信息系统设计与实现[J].北方经贸,2020,(01):63-66.

[16]方博.超市云平台管理系统设计与实现[D].电子科技大学,2019.DOI:10.27005/d.cnki.gdzku.2019.000416

[17]裴志松,梁滨.欧亚超市进销存管理系统[J].电脑知识与技术,2019,15(26):271-274.DOI:10.14004/j.cnki.ckt.2019.3030

[18]赵唯淇.基于云平台的无人超市管理系统研究与实现[D].西安理工大学,2019.

[19]魏鹏.基于Web的超市销售管理系统的设计与实现[D].吉林大学,2019.

[20]范晓云.基于PB和C/S的超市管理系统的设计实现[J].无线互联科技,2019,16(06):79-81.

致 谢

经历了近三个多月的动手实践及老师辛勤的指导和同学朋友热心的帮助下,本人的毕业设计天天超市管理系统的基本功能也基本完成。

此次设计中,通过不断的探讨与学习使我熟悉、使我初步了解了Django相关技术。我做的是一个B/S结构的天天超市管理系统,使我对做网站所需要,及运行的环境有了初步的了解,在此次设计中我翻阅了较多的书籍,在有限的时间了丰富了对天天超市管理系统技术的知识也积累了少许的经验。起初对Python的初步认识,通过这次设计更进一步的了解了其工作原理,懂得了配置服务器环境,连接数据库源,在设计过程中,也学会了用Pycharm设计一个简单的页面,增强了动手的能力,激发了在此方面的兴趣。

但是由于时间、基础及缺乏实践等多方面的问题,还有诸多需要解决的问题依然存在,设计中很多方面考虑不够周全或者考虑不到。

非常感谢我的老师,我的同学,我的朋友并希望在今后的学习生活中不断陪养多方面的兴趣,不断学习进步从而能够实现独立完成。设计中存在的诸多缺点诚肯老师的原谅。

点赞+收藏+关注  →私信领取本源代码、数据库

  • 50
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值