# 超市进销存管理系统 **Repository Path**: dcinb5i/SupermarketInventoryManagementSystem ## Basic Information - **Project Name**: 超市进销存管理系统 - **Description**: 冯耀阳,陈郑轩课设作业 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2024-06-17 - **Last Updated**: 2024-08-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 超市进销存管理系统 #### 介绍 冯耀阳,陈郑轩课设作业 #### 一、项目架构介绍 1. 项目技术栈: Java+MySql 开发工具: IDEA 开发语言:Java 关系数据库:Sql 2. IDEA IDEA是java编程语言的集成开发环境,主要用于支持Java、 Scala、 Groovy 等语言的开发工具,同时具备支持目前主流的技术和框架,擅长于企业应用、移动应用和Web应用的开发。IDEA业界被公认为最好的java开发工具,尤其在智能代码助手、代码自动提示、重构、JavaEE支持、各类版本工具(git、svn等)、JUnit、CVS整合、代码分析、 创新的GUI设计等方面的功能可以说是超常的。 ![IDEA语言支持](https://foruda.gitee.com/images/1718691000401656979/629d19fa_14556340.jpeg "1.JPG") ![IDEA语言额外支持](https://foruda.gitee.com/images/1718691019760309011/c674cea1_14556340.jpeg "2.JPG") 3. Java Java是一种可以撰写跨平台应用程序的面向对象的程序设计语言。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。 Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点。 组成Java由四方面组成: (1)Java编程语言,即语法。 (2)Java文件格式,即各种文件夹、文件的后缀。 (3)Java虚拟机(JVM),即处理*.class文件的解释器。 (4)Java应用程序接口(Java API)。 抽象类:规定一个或多个抽象方法的类本身必须定义为abstract,抽象类只是用来派生子类,而不能用它来创建对象。 final类:又称“最终类”,它只能用来创建对象,而不能被继承,与抽象类刚好相反,而且抽象类与最终类不能同时修饰同一个类。 包:Java中的包是相关类和接口的集合,创建包须使用关键字package。 多态类:在java中,对象变量是多态的。而java中不支持多重继承。 class类 object类中的getclass方法返回class类型的一个实例,程序启动时包含在main方法的类会被加载,虚拟机要加载他需要的所有类,每一个加载的类都要加载它需要的类。 数据库”是以一定方式储存在一起、能予多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合 4. MySql 一个数据库由多个表空间(Tablespace)构成 数据库就是一个存储结构化数据的仓库 数据库管理系统(Database Management System,简称DBMS)——是管理数据库的软件系统 关系数据库——创建在关系模型基础上的数据库 关系模型——表示现实世界中的各种实体以及实体关系 关系数据库典型代表:Microsoft SQL Server、MySQL、Oracle、Access、PostgreSQL、DB2、MariaDB 非关系型数据库——NoSQL,泛指所有非关系型数据库 非关系型数据库典型代表: 键值(Key-Value)存储数据库:Redis、Memcached、MemcacheDB、Berkeley DB 列存储(Column-oriented)数据库:Hbase(应用场景:大数据存储) 面向文档数据库:MongoDB 元组:Tuple。通常指数据表中的一行数据,一行即为一个元组 属性:Attribute。数据表中的一列即为一个属性,每列的列名,即属性名 码(键):数据系统中的基本概念。码就是能唯一标识实体的属性,是整个实体集的性质,而非单个实体性质。包括超码、候选码、主码 #### 二、Gitee项目地址 ![仓库二维码](src/main/java/com/sims/%E4%BA%8C%E7%BB%B4%E7%A0%81.png) ![仓库网页界面](src/main/java/com/sims/1.png) #### 三、软件设计 1. 需求分析 系统介绍: 系统分为两个权限部分:管理员用户登录模块,普通用户登陆模块。 管理员用户登录模块包括:供应商管理,员工管理,商品管理,会员管理,采购管理。 普通用户登陆模块包括:个人信息,商品信息,采购信息。 管理员用户登录模块 A、供应商管理 1) 批量录入供应商数据,手动输入供应商编号,供应商名称,供应商简称,地址,公司电话, 邮件,联系人,联系人电话,备注 2) 查询并列出表中所有的供应商信息 3) 修改指定供应商的信息 4) 删除指定供应商数据 5) 导出供应商数据到 csv 报表 B、商品管理 1) 批量录入商品数据,手动输入商品编号,商品名称,商品单价,供应商编号(外码),商品 简介,备注 2) 查询并列出所有商品信息 3) 修改制定商品的商品信息 4) 删除指定商品数据 5) 导出商品数据到 csv 报表 C、员工管理 1) 批量录入员工数据,手动输入员工编号,员工姓名,员工密码,员工级别,员工电话,员工 工资,备注 2) 查询并列出所有员工信息 3) 修改指定员工信息 4) 删除指定员工数据 5) 导出员工数据到 csv 报表 D、采购管理 1) 录入采购主表数据,手动输入采购清单号,员工编号(外码),采购数量,采购总价,采购 时间,备注 2) 录入采购明细数据,手动输入采购明细号,采购清单号(外码),商品编号(外码),采购数 量,商品单价,商品总价,备注 3) 查询并列出所有采购主表和采购明细信息 4) 修改指定采购主表信息和采购明细信息 5) 删除指定采购主表信息和采购明细信息 6) 导出采购数据到 csv 报表 普通用户登陆模块 1) 查询自己的员工信息 2) 查询所有商品信息 3) 查询所有的采购信息 2. 软件功能设计 ![功能图](src/main/java/com/sims/7.png) 该系统分为管理员用户与与普通用户登录模块,其中管理员登录模块实现对商品信息,采购信息,员工信息,供应商信息进行查询,修改,删除和导出。 普通用户登录模块实现查询员工信息,商品信息,采购信息 #### 四、数据库设计 1. 需求分析 用文字描述实体、属性、联系 2. 概念结构设计 ![用Chen方法的E-R图表示](https://foruda.gitee.com/images/1718691754004684537/1d8f1aa0_14556340.png "4.png") 3. 逻辑结构设计 ![用Navicat画出关系表模式,并分析所有表的范式](https://foruda.gitee.com/images/1718691796164122956/98d80ca3_14556340.png "3.png") 4. 详细表设计 5. SQL脚本 建立表的SQL语句: CREATE TABLE Suppliers ( SupplierID VARCHAR(10) PRIMARY KEY, SupplierName VARCHAR(30) NOT NULL, SupplierShortName VARCHAR(10) NOT NULL , Address VARCHAR(40) NOT NULL, CompanyPhone VARCHAR(15),![输入图片说明](7.png) Email VARCHAR(30), ContactPerson VARCHAR(10)NOT NULL, ContactPhone VARCHAR(11) NOT NULL, Notes VARCHAR(20) ); CREATE TABLE Products ( ProductID VARCHAR(10) PRIMARY KEY, ProductName VARCHAR(30) NOT NULL, ProductPrice FLOAT(10, 2) NOT NULL, SupplierID VARCHAR(10) NOT NULL, ProductDescription VARCHAR(40), Notes VARCHAR(20), FOREIGN KEY (SupplierID) REFERENCES Suppliers(SupplierID) ); CREATE TABLE Employees ( EmployeeID VARCHAR(10) PRIMARY KEY, EmployeeName VARCHAR(10) NOT NULL, EmployeePassword VARCHAR(10) NOT NULL, EmployeeLevel VARCHAR(2) NOT NULL, EmployeePhone VARCHAR(11) NOT NULL, EmployeeSalary INT, Notes VARCHAR(20) ); CREATE TABLE Purchases ( PurchaseID INT PRIMARY KEY, EmployeeID VARCHAR(10) NOT NULL, PurchaseQuantity INT NOT NULL, PurchaseTotalPrice FLOAT(10, 2)NOT NULL, PurchaseTime VARCHAR(8) NOT NULL, Notes VARCHAR(20) , FOREIGN KEY (EmployeeID) REFERENCES Employees(EmployeeID) ); CREATE TABLE PurchaseDetails ( PurchaseDetailID INT PRIMARY KEY, PurchaseID INT NOT NULL, ProductID VARCHAR(10) NOT NULL, PurchaseQuantity INT NOT NULL, ProductPrice FLOAT(10, 2) NOT NULL, ProductTotalPrice FLOAT(10, 2)NOT NULL, Notes VARCHAR(20), FOREIGN KEY (PurchaseID) REFERENCES Purchases(PurchaseID), FOREIGN KEY (ProductID) REFERENCES Products(ProductID) ); ####五、软件实现 1. 界面设计与实现 列出所有功能模块的界面截图,并叙述主要实现方法(不写程序代码!) 2. 解决的技术问题 列出一二个在开发过程中解决的技术问题 ####六、总结 计算机课设是一个很好的实践机会,可以让我们将所学的知识应用到实际的项目开发中。 合理规划和设计非常重要。在开始课设之前,我们需要对整个项目的功能、架构、开发流程等进行详细的规划和设计。这样可以帮助我们更好地组织和管理整个项目的开发过程。 掌握相关技术是关键。课设通常需要我们运用所学的各种计算机技术,如编程语言、数据库、网络。因此,在开发过程中,我们需要不断学习和掌握这些技术,并灵活运用它们解决实际问题。 注重代码质量和文档编写。在开发过程中,我们要注重代码的可读性、可维护性和可扩展性,编写高质量的代码。同时,编写详细的项目文档也非常重要,可以方便后续的维护和迭代。 学会解决问题的能力。在开发过程中,我们难免会遇到各种问题和挑战。因此,培养独立分析和解决问题的能力非常重要。我们需要学会主动查找资料、尝试各种方法,最终解决问题。 总的来说,计算机课设是一个很好的实践机会,可以帮助我们将所学知识应用到实际项目中,并培养各种实用的技能。通过认真完成课设,我们不仅可以提高自己的技术水平,还可以为未来的工作打下良好的基础。 参考文献: [1] https://blog.csdn.net/lvoelife/article/details/133267758 [2] https://blog.csdn.net/m0_62378244/article/details/131732558 [3] https://blog.gitee.com [4] 王晓娟, 李娜. 基于 Java 的超市进销存管理系统设计与实现[J]. 电子技术与软件工程, 2019(12):62-63. 注:至少4个,包括网站等 #### 特技 1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md 2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com) 3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目 4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目 5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help)