w156一周穿搭App的设计与实现

🙊作者简介:多年一线开发工作经验,原创团队,分享技术代码帮助学生学习,独立完成自己的网站项目。

  1. 代码可以查看文章末尾⬇️联系方式获取,记得注明来意哦~🌹
  2. 赠送计算机毕业设计600个选题excel文件,帮助大学选题。
  3. 赠送开题报告模板,帮助书写开题报告。

作者完整代码目录供你选择:

  1. 《Springboot网站项目》400套
  2. 《ssm网站项目》800套
  3. 《小程序项目》300套
  4. 《App项目》500套
  5. 《Python网站项目》600套

⬇️文章末尾可以获取联系方式,需要源码或者演示视频可以联系⬇️

⚡感兴趣大家可以点点关注收藏,后续更新更多项目资料。⚡

项目展示

摘 要

相比于传统的一周穿搭管理方式,智能化的管理方式可以大幅提高一周穿搭的管理效率,实现了一周穿搭管理的标准化、制度化、程序化的管理,有效地防止了一周穿搭信息的随意管理,提高了信息的处理速度和精确度,能够及时、准确地查询和修正一周穿搭信息。

课题主要采用java技术和MySQL数据库技术以及springboot框架进行开发。系统主要包括系统首页,个人中心,用户管理,风格类型管理,穿搭圈管理,我的搭配管理,系统管理等功能,从而实现智能化的一周穿搭管理方式,提高一周穿搭管理的效率。

关键词:一周穿搭;java;MySQL数据库

1 绪 论

近年来,随着互联网科技的进步和发展,人们的生活水平得到了极大的提高,一周穿搭信息的数量也在快速增加,以至于各大一周穿搭信息的数量不断增加,一周穿搭信息管理工作也日渐繁重。由于传统的一周穿搭管理方式,人工管理成本高,效率低,还存在一周穿搭信息的数量不明确,与管理人员沟通方面的压力。所以人工管理方式在很大的程度上存在弊端。给人们的生活带来了非常大的不便,导致不能满足现在用户的需求。现如今对一周穿搭信息的管理成为一个越来越受关注的社会问题,对于能够快速的找到一周穿搭信息,也是为了提高一周穿搭信息管理的效率。现在的一周穿搭信息的管理也是在完善。

1.1 研究意义

社会进步的步伐带动了信息技术的发展,信息化的建设使得人们生活的节奏加快,至使人们更加注重信息的时效性。陈旧的管理获取信息方式将无法满足人们的需求。从而人们更加关注在线系统管理。在线系统管理可以满足现代人们获取信息实时、便捷等特点,只要有网络的地方,就能迅速查找到想要的信息。

计算机技术已成为人们管理信息的重要工具。能解决人们获取信息更加有效快捷,提高人们的工作效率为重要手段。

1.2 设计目的

通过对一周穿搭管理内容的学习研究,进而设计并实现一个一周穿搭app。系统实现的主要功能包括系统首页,个人中心,用户管理,风格类型管理,穿搭圈管理,我的搭配管理,系统管理等功能的操作。还有可以正确的为用户服务,准确显示当前信息。

在一周穿搭app的前期,即需求分析阶段,我们对一周穿搭信息管理的需求进行了详细的描述,并且在需求规范中有详细的描述和阐明。根据系统需求的分析,对一周穿搭信息的管理进行了整体的设计。着重对软件模块的设计进行了详细的分析,以达到对系统的需求。重点阐述了系统的划分、接口的确定、各模块间的数据传输、数据结构与模块结构的设计。在下面的概要设计中,将会详细地描述这个阶段中的系统。

1.3 设计思想

在开发与设计中,要有正确的开发思路,要对开发环境、语言、架构、操作系统这些方面做一些了解,最后就是完整的思路模式。系统的设计按照以下原则执行:

(1) 有效性原则

能够进行有效的设计,对于用户来说是比较满意的,正常情况下可以满足需求,还有是有用的特定意义,可以说都是在有效的范围里。都是用一些操作,还有开发的思维,能够给使用者带来的使用。所谓设计就是需求的想法,不完整就不能够算是一个好的系统,可以使用的系统有效性是很高的,而且还有效使用,在实现用户的需求时才能够很好而不会有错误的。

(2) 可扩展性

从"可伸缩"的意义来看,许多人认为,讨论改进性能、实现高可用性,甚至是专门的技术和协议。很明显,这些都与可扩充性无关,你必须知道有关速度、性能、可用性、应用平台、网络等等,但是,这并不是一个可扩充的定义。其核心内容是增加一个功能逻辑,或者减少一个功能,逻辑上并不会影响到其他已经编写好的功能模块,这就是可扩展性含义。

系统的可扩展性设计非常重要,但是又非常难以掌握,很多试图通过高并发语言等方式缓解开发者精力,但是,无论采取什么技术,如果应用系统内部是比较的麻烦,比如对数据库的严重依赖,当系统的存取规模达到一定程度时,就会将资源集中在一个或两个数据库服务器上,这时进行分区扩展伸缩就比较困难1

(3) 用户的需求原则

在设计系统之前,一般都是先了解一下系统,了解一下系统中的信息在哪里,然后再进行相应的设置。但我们也承认,许多使用者并不能真正了解设计师的想法,并且经过研究发现,系统所服务的对象是广大的用户,并不是掌握这些知识的设计者,所以我们得通过特殊的界面来实现让用户方便使用的系统。

2 系统开发技术

2.1 Java技术

Java属于一种面向对象的编程语言,它由C++发展而来。Java保留了C++语言大部分好的优点,同时放弃了C++里很那的多继承、指针等概念。Java从根本上解决了C++的固有缺陷,形成了一种新的完全面向对象的语言,因此Java语言的句法更加清晰、规模也更加的小、更容易学等多个特征。Java语言作为静态面向对象编程语言的代表,完美地实现了面向对象理论,使程序员能够以优雅的思维执行复杂的编程。

2.2 MySQL数据库

MySQL的语言是非结构化的,当对客观事物的符号进行描述时,数据则是信息的载体,数据库负责记录跟踪这些数据。数据库用来记录分析保存生成的数据,在系统项目中起到了很重要的作用。MySQL数据库体积小,作用快,相对于其他数据库而言性价比较高,适合中等网页的开发,并且服务很稳定,几乎不存在宕机情况。

2.3 SpringBoot框架

现如今后台开源框架主流的有SSH、SSM、SpringBoot,但是SSH、SSM框架的环境配置项较多,而SpringBoot主要的设计思想就是约定大于配置,故而SpingBoot在设计时几乎达到零配置。SpringBoot整合了业界上的开源框架。具体采用技术框架描述如下:

(1) Mybatis:Mybatis:提供自动映射,动态SQL,级联,缓存,注解,代码和SQL分离等特性,使用方便,同时也对SQL进行优化。

(2) SpringMVC:通过一套MVC注解,让POJO成为处理请求的控制器,无需实现任何接口,同时,SpringMVC还支持REST风格的URL请求。

(3) SpringBoot:从本质上来说,Spring Boot就是Spring,它做了那些没有它你也会去做的Spring Bean配置。

SpringBoot是一款非常强大后台框架,因为SpringBoot开发时可以基本不用写配置文件,所以使用SpringBoot搭建网站的后台环境,在SpringBoot的yml配置文件中写入项目启动端口,项目就可以启动。项目的Java文件还有静态文件都是由SpringBoot来管理。

2.4 Android Studio介绍

Android Stuido是Google公司在2013年推出一款开源的、跨平台的安卓集成开发环境,它可以运行在Windows、Linux和OSX等操作系统上,专门为Android开发而设计打造的软件,是一款以IDEA为基础的,为安卓开发提供便利而改造的IDE,除去开源免费跨平台的优势外,选择它作为主要开发工具的理由还有很多。与IDEA和Eclipse相比,它具有以下优势:

(1) UI界面更漂亮,主题也变得丰富,并且支持背景自定义。

(2) 软件启动速度、响应速度、内存占用都得到了很大提升。

(3) 功能更加强大,Eclipse经常卡顿的问题在它身上不会出现。

(4) 软件的提示补全功能更加智能,开发效率得到很大的提升。

(5) 它还支持用户定义智能保存,再也不用手动保存了。

(6) 软件还支持用户实时预览,开发者可以一边开发一边预览,大大提高了用户开发和调试的效率。

(7) 完美的内置了兼容了命令行终端,对于喜欢命令行终端使用的人来说,也是一大福音。

(8) 含有丰富的插件库,可以选择很多可提升工作效率的插件,搜索点击就可完成安装。

(9) 具有完美的版本控制工具,如Git、SVN等。

2.5 B/S体系结构介绍

B/S结构(Browser/Server,浏览器/服务器模式),是WEB兴起后的一种网络结构模式,WEB浏览器是客户端最主要的应用软件。这种模式统一了客户端,将系统功能实现的核心部分集中到服务器上,简化了系统的开发、维护和使用。客户机上只要安装一个浏览器,如Chrome、Safari、Microsoft Edge、Netscape Navigator或Internet Explorer,服务器安装SQL Server、Oracle、MySQL等数据库。浏览器通过Web Server同数据库进行数据交互。

3 系统分析

3.1 需求分析

要想在实际的情况下,开发出一套符合使用者要求的一周穿搭app,首先要了解使用者的需求。对一周穿搭的需求有深刻的了解,无论设计与开发工作多么优秀,都是一个成功的先决条件,也可以这么说,要不能满足用户需求的程序,是创造不出非常大的使用价值的,而且还给设计者带来很多的不利。需求分析是一周穿搭app设计时期的比较重要的一个阶段,它的基本内容是准确地解释出系统将会能够做些什么事情的关键问题,最终完成的是一份完整的系统的使用说明。

(1) 有一些功能方面的需求,通过需求分析,可以找出需要完成的几个基本功能模块。性能要求也是指在系统设计的时候,需要满足一定的要求和限制,比如响应时间、信息处理、内存容量、磁盘容量、安全等等。

(2) 系统的可靠性要求也是一个必须考虑的问题,它可以将可用性和可靠性结合起来,显示了用户在使用时经常遇到的问题。硬件要求也包括需要处理错误,以表明系统如何应对环境错误。如果自己的系统收到来自其他系统的信息,这些信息违背了某些格式,这时系统应该会有什么样的响应情况。

(3) 软件方面的需求还有一些逆向的需求,就是系统不能做的事情。可以说,有很多种不同的要求,而开发人员应该能够准确的理解他们的真正需要,并且可以应用到一周穿搭app中。还有应该明确地找出一些虽然不属于当前一周穿搭app开发的情况,但是据现在的分析,将来是非常可能会需要的可能需求。经过这个需求的分析,在设计过程中对一周穿搭app将来有机会出现的问题有所准备,要能够确实需要的时候可以更加轻松的修改。

3.2 系统性能分析

系统的性能是指操作系统完成现有的程序的有效性、稳定性以及响应速度,操作系统完成一个任务时,与系统自身设置、路由的设计、网络性能的测试、设备的使用情况等多个方面都密切相关,要是任何一个环节出现问题,就都会影响整个系统的性能。所以要从网络的设置、系统的操作、硬件的组合、程序的应用等方面综合检查,然后问题出现在哪个部分,可以集中进行解决。

在程序的应用、系统的操作、硬件的组合、网络的设置等方面,影响性能最大的是程序的应用和系统的操作两个方面,因为这两个方面如果出现的问题是不太容易察觉,隐蔽性非常的强。而硬件的组合、网络的设置只要出现问题,一般都能马上发现。主要了解一下系统的操作方面的性能操作思路,程序的应用方面需要具体问题还需要有具体的解决办法。

随着智能设备的快速发展,以及对于网络的深入认识,这种高度分布式架构最终会变为移动计算。但是,随着计算量的日益增大,系统架构师开始将计算任务转移到共享网络的计算上,这样,他们就可以利用共享网络的计算可以无限制的计算量和存储相关的资源,并享受其带来的比较高的可靠性以及低成本。因此,近年来,许多的企业开始向以共享网络计算为中心的更加有效化的方式发展。

3.3 可行性分析

3.3.1 经济可行性

系统采用的是java技术来实现相应的功能的开发,综合就是一个比较基础的系统开发设计,所以所用到的有开源的开发环境所构成。而且可以利用现有的设备,不用进行另外的硬件设备购买。

用户通过使用一周穿搭app,很大程度减小了人员成本,极大提高了管理的效率。目前得由人员管理的方式存在很多不足,首先是人工成本大,并且工作效率比较低,然后是存在着很多现金流失的问题。在结合一周穿搭app的特点,还有一些记录和统计,智能一周穿搭管理杜绝了以上的问题,提高了一周穿搭管理的安全性。

经济可行性是主要计算项目的开发成本,还有项目成功后可能带来的有效收益。很多的项目只有开发成本能控制在企业有可能接受的范围内的情况下,这样的项目才会被批准开发。然而本次系统的开发在上述所有的问题的情况下,是可以完成相关的系统设计。

3.3.2 技术可行性

在研究技术可行性的时候,系统的开发环境是可以确定的,所以技术可行性最好与系统功能和性能以及一些实际的情况同时考虑。在可行性研究阶段,结合实际调整开发的内容和选择能够完成的技术体系是一个可用的手段,如果系统进入开发阶段,任何的调整都意味着会耗费更多的经历。需要再次明确的问题是,技术可行性不只是考虑在技术上是否可实现,实际上还包含了在当前的实际的情况下的技术可行性。有很多的因素例如时间不足、预期的开发目标技术难度比较难、不能有充足的技术积累、而且对于技术的掌握不够等这些实际存在的情况,都是要提前部署和认真规划的。

开发一周穿搭app的技术内容分析,目前的状况是从网络硬件和相关技术上看是可行的。该系统采用了java和 MySQL技术。到现在可以知道,很多的基础知识都是经过学习使用的,在后续的设计中还需要不断的练习,学习更多相关的技术经验来充实自己对于系统的开发。

3.3.3 社会可行性

在社会可行性分析中,首先能结合国家经济和社会发展的实际情况,还需要能够让用户更加的便利,给使用者带来多方面的高效益,使得可以比较快速的发展以及应用。

在可行性分析中,是比较清晰地发掘开发的系统带来的各种直接的有效的利益以及一些隐藏起来的好处,以便在后续的设计中更加的坚定和确信系统开发的意义。解决一些社会方面存在的问题,设计并开发系统肯定是要发现某类社会存在的问题,并且能够带来一定的社会价值。还有一些社会的影响力,是通过系统优势和切实的好处来产生的,能够在一定的情况下提高效率,肯定会增加一些社会的进步和发展。社会上的可行性,包括法律上的可行性,也包括法律上的可能性,法律上的可行性,需要社会上的许多因素2,可以来实现系统建设的现实性。如果所开发的系统与国家法律或政策等相关的因素不相符合,在某些信息化的邻域中使用的是一些加密的信息或者技术问题,还有不经过正常的操作使用其他的一些公开的信息等这些情况,这样的系统的开发在法律的范围中就是不能被允许的。

其中还有一个比较重要的用户使用可行性也是通过执行系统时的可行性,是从所有情况下用户的角度来考虑系统的可行性,由于设计开发相关的系统就是站在社会中广大的用户体验考虑的,所以在这个层面考虑也是符合的。

3.4 系统用例分析

在设计系统的过程中,用例图是系统设计过程中必不可少的模型,用例图可以更为细致的,结合系统中人员的有关分配,能够从细节上描绘出系统中有关功能所完成的具体事件,确切的反映出某个操作以及它们相互之间的内部联系。

其中参与者就是和系统能够发生交互的外在实体,一般可以指系统的某个用户。一个用例图就能对应出系统中的一个功能过程,系统中完整的功能都是由许多不同的用例图所组成的。

系统用例图如图3-1、图3-2所示。

图3-1 管理员用例图

图3-2 用户用例图

3.5 系统流程图

流程图就是用它已经特定的图形符号以及相应的线条,用来展现出系统在执行中的整个的过程。由于这种图形能够很方便的描绘系统的一系列流程,所以它的所有的图形符号是比较关键的,基本都是一个图形符号就能表示某个过程的一个单独的步骤。流程图不只是提供出比较完整、全面的执行过程,而且在整个团队的协作设计过程中,还可以发现其中有可能存在的缺陷以及不足,便于在后续的过程中能够及时的纠正和完善系统。

通过流程图可以对系统的需求和相关过程进行分析,能够详细的细分到每个部分的设计。对于设计者来说在开发过程中能够使用流程图作为基础,可以快速提高自身的逻辑思想,并且还能在后续的操作中能够有章可循,在系统的设计中最重要的就是程序的设计,然后才是程序的具体编写,流程图便是在设计过程中重要的工具,以下就是部分流程图设计。

登录流程图和添加信息流程图分别如图3-3、图3-4所示。

图3-3 登录流程图

图3-4 添加信息流程图

4 系统设计

4.1 系统功能结构设计图

本次系统所涉及到的有关的功能,都是用功能结构图来简洁和清晰的表示出来,功能结构图就是能够把比较复杂的功能结构用图的形式清晰的描绘下来,并且为后续的设计以及测试等模块提供了明确的方向,在构思功能结构图的时候,便可以给设计的过程带来一定的思维导向,不至于在设计过程中有所遗漏,可以尽可能的明确系统所涉及到的功能。系统的功能结构图如图4-1所示。

图 4-1系统功能结构图

4.2 数据库设计

4.2.1 数据库设计原则

学习程序设计,如果要了解数据库管理系统或者是根据需求而制定的系统接口,就必须创建一种数据库管理系统的模式,用来保存数据资料,这样当在应用编程过程中时候,就不需要再向操作系统页面上加载信息,进而增加了整个系统的工作效率。信息库管理系统中保存着许多数据,应该说是一个管理信息系统建设的中心和基础,而信息库管理系统也为管理信息系统建设提出了新增、删除、更改和搜索的操作功能,使管理信息系统建设能够迅速地查询所需要的数据,而不会直接从程序代码中查找。信息库管理系统通过将信息表的各个组成部分按照特定的方法准确地合并,排序和组成信息库管理系统。

通过对一周穿搭app的主要功能信息进行规划并分为若干功能实体信息,实体信息将使用E-R图加以表示,本系统的主要功能实体图如图4-2、图4-3、图4-4、图4-5、图4-6所示。

图4-2穿搭圈评论表实体图

图4-3时尚穿搭实体图

图4-4我的搭配实体图

图4-5用户实体图

图4-6穿搭圈实体图

4.2.2 数据表设计

在关系数据E-R图中,分析并创建数据表,数据表用来记录信息,数据表关系由多个数据表组成,下面介绍的是数据表各个字段信息如下表所示。

表4-1:token表

|---------------|-----------|-----|------|----|-------------------|
| 字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
| id | bigint | | 主键 | 主键 | |
| userid | bigint | | 用户id | | |
| username | varchar | 100 | 用户名 | | |
| tablename | varchar | 100 | 表名 | | |
| role | varchar | 100 | 角色 | | |
| token | varchar | 200 | 密码 | | |
| addtime | timestamp | | 新增时间 | | CURRENT_TIMESTAMP |
| expiratedtime | timestamp | | 过期时间 | | CURRENT_TIMESTAMP |

表4-2:穿搭圈

|------------------|-----------|------------|--------|----|-------------------|
| 字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
| id | bigint | | 主键 | 主键 | |
| addtime | timestamp | | 创建时间 | | CURRENT_TIMESTAMP |
| chuandamingcheng | varchar | 200 | 穿搭名称 | | |
| changhe | varchar | 200 | 场合 | | |
| tianqi | varchar | 200 | 天气 | | |
| tupian | longtext | 4294967295 | 图片 | | |
| fenggeleixing | varchar | 200 | 风格类型 | | |
| kuanshi | varchar | 200 | 款式 | | |
| caizhi | varchar | 200 | 材质 | | |
| xiangqing | longtext | 4294967295 | 详情 | | |
| zhanghao | varchar | 200 | 发布账号 | | |
| clicktime | datetime | | 最近点击时间 | | |

表4-3:用户

|----------------|-----------|------------|------|----|-------------------|
| 字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
| id | bigint | | 主键 | 主键 | |
| addtime | timestamp | | 创建时间 | | CURRENT_TIMESTAMP |
| zhanghao | varchar | 200 | 账号 | | |
| mima | varchar | 200 | 密码 | | |
| nicheng | varchar | 200 | 昵称 | | |
| nianling | int | | 年龄 | | |
| chengshi | varchar | 200 | 城市 | | |
| xingbie | varchar | 200 | 性别 | | |
| chushengriqi | date | | 出生日期 | | |
| xuexiao | varchar | 200 | 学校 | | |
| touxiang | longtext | 4294967295 | 头像 | | |
| gexingqianming | varchar | 200 | 个性签名 | | |

表4-4:我的搭配

|----------------|-----------|------------|------|----|-------------------|
| 字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
| id | bigint | | 主键 | 主键 | |
| addtime | timestamp | | 创建时间 | | CURRENT_TIMESTAMP |
| xingqi | varchar | 200 | 星期 | | |
| dapeimingcheng | varchar | 200 | 搭配名称 | | |
| fenggeleixing | varchar | 200 | 风格类型 | | |
| fuzhuangtupian | longtext | 4294967295 | 服装图片 | | |
| shiyongjijie | varchar | 200 | 适用季节 | | |
| dapeifengge | varchar | 200 | 搭配风格 | | |
| fuzhuangyanse | varchar | 200 | 服装颜色 | | |
| dapeixiangqing | longtext | 4294967295 | 搭配详情 | | |
| zhanghao | varchar | 200 | 发布账号 | | |
| userid | bigint | | 用户id | | |

表4-5:用户表

|----------|-----------|-----|------|----|-------------------|
| 字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
| id | bigint | | 主键 | 主键 | |
| username | varchar | 100 | 用户名 | | |
| password | varchar | 100 | 密码 | | |
| role | varchar | 100 | 角色 | | 管理员 |
| addtime | timestamp | | 新增时间 | | CURRENT_TIMESTAMP |

表4-6:收藏表

|-----------|-----------|------------|----------------------------------|----|-------------------|
| 字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
| id | bigint | | 主键 | 主键 | |
| addtime | timestamp | | 创建时间 | | CURRENT_TIMESTAMP |
| userid | bigint | | 用户id | | |
| refid | bigint | | 商品id | | |
| tablename | varchar | 200 | 表名 | | |
| name | varchar | 200 | 名称 | | |
| picture | longtext | 4294967295 | 图片 | | |
| type | varchar | 200 | 类型(1:收藏,21:赞,22:踩,31:竞拍参与,41:关注) | | 1 |
| inteltype | varchar | 200 | 推荐类型 | | |
| remark | varchar | 200 | 备注 | | |

表4-7:时尚穿搭

|--------------|-----------|------------|------|----|-------------------|
| 字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
| id | bigint | | 主键 | 主键 | |
| addtime | timestamp | | 创建时间 | | CURRENT_TIMESTAMP |
| title | varchar | 200 | 标题 | | |
| introduction | longtext | 4294967295 | 简介 | | |
| picture | longtext | 4294967295 | 图片 | | |
| content | longtext | 4294967295 | 内容 | | |

表4-8:风格类型

|---------------|-----------|-----|------|----|-------------------|
| 字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
| id | bigint | | 主键 | 主键 | |
| addtime | timestamp | | 创建时间 | | CURRENT_TIMESTAMP |
| fenggeleixing | varchar | 200 | 风格类型 | | |

表4-9:穿搭圈评论表

|-----------|-----------|------------|-------|----|-------------------|
| 字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
| id | bigint | | 主键 | 主键 | |
| addtime | timestamp | | 创建时间 | | CURRENT_TIMESTAMP |
| refid | bigint | | 关联表id | | |
| userid | bigint | | 用户id | | |
| avatarurl | longtext | 4294967295 | 头像 | | |
| nickname | varchar | 200 | 用户名 | | |
| content | longtext | 4294967295 | 评论内容 | | |
| reply | longtext | 4294967295 | 回复内容 | | |

表4-10:配置文件

|-------|---------|-----|--------|----|-----|
| 字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
| id | bigint | | 主键 | 主键 | |
| name | varchar | 100 | 配置参数名称 | | |
| value | varchar | 100 | 配置参数值 | | |

4.2.3 数据库连接

在本系统的设计与开发中,数据库承担着重要的作用,可以说要是没有数据的存储和管理,而系统也不会执行对应的函数。数据库是基于数据结构而设计的,数据库管理员利用数据库管理系统对海量数据进行管理,而数据库的添加、删除、修改、查询等都是非常关键的一环。

在本系统中首先进行数据库的连接,具体的配置文件uimg_sql.py中进行数据库的连接,还有创建了本次数据库中所用到的表和相关的一些参数,这些操作和建立的实现是通过在java中编写完成的,有一些时间点的记录,一周穿搭信息是在数据库uchepai中完成的。

4.3 本章小结

本章是系统开发的整体的一个系统设计,主要通过系统功能的设计,还有具体实现中需要考虑到的结构之间的关系,以及系统中每个功能执行的先后顺序等问题做出了详细的设计。

其次是对于数据库的具体实现的设计,首先是将数据库与开发系统相结合的特定数据库的连接问题,做出了数据库应该储存的一些数据,还有存储数据用到的一些表格的创建,以及表格里面内容的设计等工作。

5 系统详细设计

5.1 APP端实现

5.1.1 登录注册界面的实现

首先双击打开APP客户端系统,连上网络之后会显示出本系统的登录界面,这是进入APP的初始页面"登录",能成功进入到该登录界面则代表APP的开启是成功的,接下来就可以操作本系统所带有的其他所有的功能。登录界面如图5-1所示。

图5-1 登录界面

第一次使用本APP的使用者,首先是要进行注册,点击"注册",然后就会进入到注册的页面里面,将用户信息录入注册表,确认信息正确后,系统才会进入登录界面,用户登录成功后可使用本APP所提供的所有功能。注册界面如图5-2所示。

图5-2 注册界面

5.1.2 App首页功能的实现

App首页是用户注册登录后进入的第一个界面,在这里,人们能够看到App的导航条,内容包括首页,穿搭圈,我的搭配,天气,我的等。App首页界面如图5-3所示。

图5-3 App首页界面图

穿搭圈:在穿搭圈页面输入穿搭名称进行搜索,可以查看到穿搭圈详细信息,还可以进行评论或收藏操作。穿搭圈页面如图5-4所示。

图5-4穿搭圈详情界面图

5.1.3 用户功能

用户登录成功后,点击"我的"进入我的页面,在我的页面可以对穿搭圈,我的收藏管理等进行详细操作。用户功能界面如图5-5所示。

图5-5用户功能界面图

5.2 后台管理员模块实现

后台登录,在登录界面正确输入用户名和密码等信息进入操作系统进行操作,如图5-6所示。

图5-6后台登录界面图

管理员登录进入APP可以查看到系统首页,个人中心,用户管理,风格类型管理,穿搭圈管理,我的搭配管理,系统管理等功能进行详细操作,如图5-7所示。

图5-7管理员功能界面图

管理员点击用户管理。在用户页面输入昵称和城市进行查询、新增或删除用户信息列表,并根据需要对用户详细信息进行详情、修改或删除操作;如图5-8所示。

图5-8用户管理界面图

管理员点击风格类型管理。在风格类型页面输入风格类型进行查询、新增或删除风格类型列表,并根据需要对风格类型详细信息进行详情、修改或删除操作;如图5-9所示。

图5-9风格类型管理界面图

管理员点击穿搭圈管理。在穿搭圈页面输入穿搭名称、天气和款式进行查询,新增或删除穿搭圈列表,并根据需要对穿搭圈详细信息进行详情,修改,查看评论或删除操作;如图5-10所示。

图5-10穿搭圈管理界面图

管理员点击系统管理。在时尚穿搭页面输入标题进行查询,新增或删除时尚穿搭列表,并根据需要对时尚穿搭详细信息进行详情、修改或删除操作,还可以对轮播图管理进行详细操作;如图5-11所示。

图5-11系统管理界面图

5.3 本章小结

在本章的设计过程中,首先是根据前的功能总结构设计的基础上,对于每个功能的实现,做了一些整体的设计。数据的连接是由数据库完成,通过了正常的连接。然后可以成功的建立一些系统开发所用到的表格。

6 系统调试与测试

系统的测试是必须的,需要知道的是这个阶段不是单独的,而是在全部的时间进行。这么做可以及时发现问题,还能找到产生矛盾的地方,并且可以尝试修改,这样就能完善系统。对于被测试的系统,都可以找到一些问题,而且还可以找到对应的位置在哪。其目的是对于整体的测试,发现需求中存在的矛盾,就可以做出修改了。测试的过程是对应于整体,有对软件的测试,发现需求的符合度,接下来,就是对数据的检测,以及对硬件的检测。

在软件测试规划中,必须了解测试流程,包括功能概述,测试周期,测试方法,测试范围,测试配置,测试技巧,测试交流,风险分析等12。对于一些开发的人员,是可以知道测试方法,找到测试过程的一些的问题,然后可以应对这些问题。

6.1 软件测试原则

系统的项目开始启动,系统测试也就是正式开始。软件的是有很多特殊性质,其一些测试也是整体的时间,不是一个单独的过程,因为有可能在所以时间段里,可以有不同的问题。从需求分析、系统设计的过程中,就可以进行系统的测试,制定相应的测试内容和设计文档,并且在整个开发过程中,都要进行系统的审核和确认13,只有这样,才能更快的发现错误,从而提升系统的质量。为了更早地进行检测,让测试人员可以早知道测试难度,还有进行工作的准备,提前了解关于问题的风险,便于能够提高测试的效率,而且还能保证开发质量,还能够避免风险存在于测试里的,可以有更加完善的方案。

在测试过程中有一些问题,还有一些不足能被发现,这样测试可以使软件中有比较少的问题。有些人觉得只要能够通过软件测试的系统,就不会再存在任何问题,便可以比较放心的使用。这种把软件测试夸大的思想是违反原则的。总的来说即使软件测试能够发现任何问题,也不足以证明软件当中就没有任何的问题,系统就是完全正确的。软件测试必须很快地到软件开发过程中,这样就可以很快的地发现软件缺陷,并且越快发现软件问题,软件的修复成本就会越小。可以让测试人员加入需求的开发过程,以确保需求的可以测试的性质、正确性等,便可以更加有效地节省开发带来的成本。在有关于测试的环节当中也会尽早的找到问题,要是开发人员在某个模块发现了问题,那么在这模块中或许会存在不止一个问题。现在软件都比较复杂,而且测试也有难度,几乎不能有测试可以是完全。

测试是在一定的顺序,每个不同的阶段能够由出现的问题,可以了解到它的风险,这样也可以加强测试,从而可以保证软件使用时的质量。测试是需要比较早开始的,一方面就是保证软件的质量,有效的降低风险以及成本。测试的人员一般在分析需求时候就已经开始测试准备了,使得系统的不足在需求或者设计阶段就可以被发现出,就这点来说发现越早,能够修复的成本就越小。测试的设计可以确定测试的有效性以及效率问题,测试的工具只是提升了测试的效率,而非测试本身。在设计一个测试案例时,是还能改善可靠性,可以用更有效的方法。

6.2 软件测试过程

软件测试中每当用户提出新的功能需求时,测试人员需要与开发人员一起做测试,这样测试人员就会对本次测试有个比较清晰的认识,具体要完成什么,都有什么功能等。而且当集成测试在完成后,开发的模块就会被联接在一起,从而形成一个完整的程序。每个各模块间的接口存在的许多缺陷都被消除,就可以进入了确认测试的阶段。确认测试是按照软件的需求规格,对软件进行评估是确保它否满足需求规格,然后决定最后的软件是否正常。

在测试规范后,就可以进行测试用例的编写,主要根据功能模块而展开,例如界面包括哪些操作,其中的操作是否可以正常进行,然后根据相关功能来设计,可以根据不同的情况来设计,对于一些测试过程中出现的问题等,以便查找测试任务的相关情况。

(1) 单元测试

这种测试是一种用代码的编写,然后完成的测试方法,在整个检测流程中,是一个非常关键的步骤。在一项有关的程序中,可以进行测试的代码,这种的步骤和实现功能的运行过程是一样的,更加能够突出实现的时候,有关于一些数据的正确还有难易的问题。而且单元测试都由开发人员自己来实现。通常都是开发人员有义务编写相关的功能模块代码,由于对于这些问题的出现,会比别人更加的清楚。有目的单元测试,就是能够出现相应地方代码的执行行为与我们预期的具有一样的效果。一般是由开发人员查看相关代码来查找出问题,而且同样是不同的开发人员相互查看对方的代码,这样才能发现更多的问题。在使用工具扫描程序时,可以根据程序的一些错误的特征,是能够发现而且记录代码中的错误原因。还有就是可以使用工具能够自动生成测试用例,而且也能执行相关程序的测试,这种方式也是由于发现一些行为上的特征,并且报告错误的原因,这种测试的方法只能够发现一些明显的错误的问题,对一些不明显的错误就不能测试出原因所在,就比如一直简单的加法函数,其中的错误是相对比较简单的,但是以上的测试方法仍不能发现,是由于这种测试工具不可能自动的理解代码的功能。

(2) 系统测试

所谓系统测试,就是把被确定的软件系统,包括电脑的硬件和网络,都是一个整体,它可以完成整个系统的检测和验证14,系统试验是对整个软件系统进行的一次试验,其目的在于检测该系统能否达到要求,发现一些和需求规定不一样或者有歧义的地方,从而能够提出更加有效的方案。这里要有出现的任何问题,为了能够找到出现问题的位置,就是需要有调试的过程,然后进一步的改正。

这种测试也能够发现和规定不一样的时候,或者是出现的一些矛盾。都是需要提前有关于规定的需求做出比较,做出能够在实际的应用里,可以运行的一些对应的测试过程的用例。

(3) 集成测试

集成测试是在单元测试后面开始的,将确定测试单元之间可以相互协调的运行。由于在很大的情况中,需要的系统不是有单独的几个或者一个人来完成,所以在前面的测试过程是,通过负责独立部分的开发者,同时也要负责这里的功能测试。但是如果要是把所以的测试部分都整合在一起,就可以发生一些问题。所以这里的测试是能够说明,不同的负责者的模块可以完全的正常执行,通常在执行集成测试之前,是必须先执行单元测试。

集成测试通过将逻辑上相关的两个或许多的功能模块连接起来执行增量的测试,接着又加入更多功能模块,以及对其功能进行的测试,一直到完成所有功能模块的集然后成功测试为止。集成测试又可以是自上而下方法15,一般从测试最顶层的功能模块开始,接着一步步地降到最低的功能模块,其中测试是按照软件的具体控制流程从上到下的进行。还可以是自底向上的集成测试,可以很快的发现底层功能模块的问题,能够提高测试的效率。如果要是了解整个的框架,就必须是对应的功能测试在可以检测完的条件。

测试过程中的集成是相对容易的,而且用到的方法也是不太难,根据对应的方法,做出测试用例的需要也比较少,但是由于无法避免的功能模块间接口的问题,所以能够一次运行成功的可能性比较小。而且要是一次集成的功能模块数量比较多,在集成测试后有可能还出现大量的错误,这样系统的错误定位以及相关的修改就会存在比较大的问题,即便能够完成集成测试,但是有可能会留下很多的错误进入系统测试。

6.3 测试用例

部分系统测试用例如表6-1所示。

表 6-1 测试用例表

|------------------------------|--------------|--------------|------|
| 测试功能、流程 | 预期结果 | 实际结果 | 结论 |
| 测试管理登录。管理员在登陆页面输入对应信息可以进入主页面 | 登陆成功, 之后跳转页面 | 登陆成功, 成功跳转页面 | 测试成功 |

6.4 本章小结

一开始系统的测试是可以不用考虑整个的程序,只是考虑它的某个正常的部分,而且也可以不用看到其正常的运行的功能,暂时先不用了解具体的结构是什么样。只是用软件就能确定的测试,能够判断出测试的精确程度。这个软件的测试,其实是用一个软件的内部构造来进行的。同时经过一些分析来测试的。同时也是由代码进行的软件测试,开发者可以通过检查代码或利用开发工具,来判定系统的质量。

在正常的情况下,需要软件的安装程序必须能够比较好的与现存在系统是可以兼容的,而且还能有相关的提示信息,可以让用户查看,接着正常安装然后实现相应的功能。所以在这里就体现了测试的重要性,要是没有一些正确的测试过程就会导致软件安装上的错误,然后软件就不能正确的运行,所以在这里安装的测试就是比较重要的环节。其中安装的测试的目的就是检验系统能否可以成功的安装,同时也保证系统安装完成了可以正常运行。

在软件开发之后,会对软件做出测试。通过对软件的检测,能够发现软件的实际用法,主要是用户为主的,然后系统的开发人员以及质量保证的测试人员也应加入的测试。主要考虑的问题是各个功能是不是规范的,还有一些用户的会有的问题。不仅仅是一个方面的质量问题,而是需要进行全方位是功能验证,最后要确定软件是否符合要求,所以验收的测试是一项比较严格的测试项目,需要根据事先制订的一些相关的计划,进行对于软件配置的审查、功能的测试、性能的测试等,最后才能确保软件的正常使用。

结 论

在本次毕业设计中,我使用Java技术,并选择MySQL作为后台数据库进行访问和修改。在设计之初,我对系统逻辑功能的具体实现也很纠结,因为我对一周穿搭管理的概念还比较模糊,期间我也在网上查询了大量的信息,清楚地了解了现实生活中一周穿搭的主要对象和管理需要完成的基本功能。

而在这个过程中也遇到了很多困难,主要有系统逻辑功能的不恰当和系统设计上的错误,当在自己获取信息时无法解决,我会与同学和老师商量和讨论,所以在这个过程中,也让我知道认识到自己的不足和团队的力量是最大的,无论是在学习还是工作中,要融入集体,这样自己才会成长得更快。

当然,在本次设计中,由于时间的不足和本人能力的限制,功能还不完善,对于论文的不足之处,希望在今后的学习中不断改进,使本系统更接近实际操作。

参考文献

1 孙卫琴,李洪成.《Tomcat 与 Java Web 开发技术详解》.电子工业出版社,2018年6月

2 郝丽萍. 基于SQLite数据库的Android平台智能相册应用系统设计与实现J. 中阿科技论坛(中英文), 2021(2):102-104.

3 FLANAGAN.《Java技术手册》. 中国电力出版社,2018年6月

4 孙一林,彭波.《Java数据库编程实例》. 清华大学出版社,2018年8月

5 陈禹樵, 隋浩. 浅谈设计模式在Android代码重构中的应用J. 信息记录材料, 2021, 22(8):3.

6 飞思科技产品研发中心.《JSP应用开发详解》.电子工业出版社,2019年9月

7 耿祥义,张跃平.《JSP实用教程》. 清华大学出版社,2020年5月

8 孙涌.《现代软件工程》.北京希望电子出版社,2020年8月

9 萨师煊,王珊.《数据库系统概论》.高等教育出版社,2018年2月

10 周子剑, 彭媛. MVC框架在Android开发的应用研究与实践J. 电脑编程技巧与维护, 2021.

11 吴亚峰. Android应用案例开发大全(第4版)M. 北京:人民邮电出版社,2021:117-121.

12 朱红,司光亚.《JSP Web编程指南》.电子工业出版社, 2021年9月

13 赛奎春.《JSP工程应用与项目实践》. 机械工业出版社, 2020年8月

14 肖英. 解决JSP/Servlet开发中的中文乱码问题J. 科技传播, 2021, (1)11-25

15 Razak M , Anuar N B , Salleh R , et al. "Less Give More": Evaluate and Zoning Android ApplicationsJ. Measurement, 2018, 133.

致 谢

四年的本科学习很快就要结束了。这段时间的校园生活充满了温暖和幸福。在家人的支持下,在老师的悉心指导下,在同学们的热情支持下,我度过了充实的本科阶段。

首先,我要感谢我的导师。我的论文是在导师的悉心指导下完成的。从论文最初的选题、构思到后来的写作,导师都给予了我悉心的指导。在我完成初稿后,我的导师花时间仔细修改了我的论文,并提供了很多中肯的指导,使我的研究和写作过程相对顺利。我想借此机会向我的导师表达我深深的谢意。

其次,我还要感谢我的其他大学老师们。正是因为他们严格、无私、高质量的教学,我在这些年的学习中获得了专业知识,为我的论文写作奠定了坚实的理论基础。我还要感谢四年来和我一起生活学习的本科同学和室友。我真诚地感谢他们在学习和生活上的鼓励和帮助。愿我们的友谊天长地久!

我也要感谢我的父母在我学习期间无微不至的关心和照顾。正是他们的理解和支持,让我能够专心学习。同时,我也要感谢四年来同学们对我的包容和帮助。他们让我的生活每天都充满了激情和意义。最后,再次向母校的老师们表示衷心的感谢和良好的祝愿!感谢您的辛勤栽培。祝所有的老师幸福健康!

核心代码展示

java 复制代码
/**
 * 登录相关
 */
@RequestMapping("users")
@RestController
public class UserController{
	
	@Autowired
	private UserService userService;
	
	@Autowired
	private TokenService tokenService;

	/**
	 * 登录
	 */
	@IgnoreAuth
	@PostMapping(value = "/login")
	public R login(String username, String password, String captcha, HttpServletRequest request) {
		UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
		if(user==null || !user.getPassword().equals(password)) {
			return R.error("账号或密码不正确");
		}
		String token = tokenService.generateToken(user.getId(),username, "users", user.getRole());
		return R.ok().put("token", token);
	}
	
	/**
	 * 注册
	 */
	@IgnoreAuth
	@PostMapping(value = "/register")
	public R register(@RequestBody UserEntity user){
//    	ValidatorUtils.validateEntity(user);
    	if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
    		return R.error("用户已存在");
    	}
        userService.insert(user);
        return R.ok();
    }

	/**
	 * 退出
	 */
	@GetMapping(value = "logout")
	public R logout(HttpServletRequest request) {
		request.getSession().invalidate();
		return R.ok("退出成功");
	}
	
	/**
     * 密码重置
     */
    @IgnoreAuth
	@RequestMapping(value = "/resetPass")
    public R resetPass(String username, HttpServletRequest request){
    	UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
    	if(user==null) {
    		return R.error("账号不存在");
    	}
    	user.setPassword("123456");
        userService.update(user,null);
        return R.ok("密码已重置为:123456");
    }
	
	/**
     * 列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,UserEntity user){
        EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
    	PageUtils page = userService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.allLike(ew, user), params), params));
        return R.ok().put("data", page);
    }

	/**
     * 列表
     */
    @RequestMapping("/list")
    public R list( UserEntity user){
       	EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
      	ew.allEq(MPUtil.allEQMapPre( user, "user")); 
        return R.ok().put("data", userService.selectListView(ew));
    }

    /**
     * 信息
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") String id){
        UserEntity user = userService.selectById(id);
        return R.ok().put("data", user);
    }
    
    /**
     * 获取用户的session用户信息
     */
    @RequestMapping("/session")
    public R getCurrUser(HttpServletRequest request){
    	Long id = (Long)request.getSession().getAttribute("userId");
        UserEntity user = userService.selectById(id);
        return R.ok().put("data", user);
    }

    /**
     * 保存
     */
    @PostMapping("/save")
    public R save(@RequestBody UserEntity user){
//    	ValidatorUtils.validateEntity(user);
    	if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
    		return R.error("用户已存在");
    	}
        userService.insert(user);
        return R.ok();
    }

    /**
     * 修改
     */
    @RequestMapping("/update")
    public R update(@RequestBody UserEntity user){
//        ValidatorUtils.validateEntity(user);
        userService.updateById(user);//全部更新
        return R.ok();
    }

    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        userService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }
}

项目推荐

【计算机毕业设计】各项技术选题汇总

【计算机毕业设计】基于Springboot的网上购物商城销售系统

【计算机毕业设计】开题报告模板2

【计算机毕业设计】任务书案例2

【网站项目】基于springboot的在线考试系统

【网站项目】基于springboot的4S店车辆管理系统

【软件设计】基于python的高校资产管理系统

【网站项目】python009基于推荐算法的电影推荐系统

【网站项目】基于Springcloud的分布式架构网上商城

⬇️文章末尾可以获取联系方式,需要源码,高清图片,演示视频可以联系(不开源)⬇️

⚡感兴趣大家可以点点关注收藏,后续更新更多项目资料。⚡

相关推荐
万年咸鱼1 小时前
Java PrintStream 详解:从基础用法到实战技巧
java·开发语言·python
吴声子夜歌1 小时前
ApacheCommons——commons-compress(解压缩工具)
java·apache
程序员清风1 小时前
聊聊怎么缓解找工作的焦虑感?
java·后端·面试
sunshine22 girl1 小时前
Java学习一 环境配置3 Idea的基本设置和插件
java·学习
杰克尼1 小时前
同城拼车项目面试问题_01
spring·面试·职场和发展
会编程的吕洞宾2 小时前
LangChain4j RAG 分块策略实战:检索质量提升 80% 的 Chunking 调优全解
java·人工智能·后端
Sagittarius_A*2 小时前
【LitCTF2026】lit_ezsql
android·java·数据库
LayZhangStrive2 小时前
数据结构与算法 - 堆排序
java·数据结构·算法·排序算法·堆排序·大根堆