精华内容
下载资源
问答
  • JAVA超市综合管理信息区块链系统毕设论文
    千次阅读
    2020-05-23 10:04:16

    摘 要

    由于科技的发展,信息量的剧烈膨胀,企业要想适应信息社会迅猛发展的浪潮,就必须借助于Internet构建新的运营模式,连锁超市已经成为很多企业要采用的新模式。同时J2EE平台的产品几乎能够在任何操作系统和硬件配置上运行,因此文中设计了一个基于J2EE 架构的超市综合管理信息系统。根据J2EE 架构的多层应用程序方案和超市管理信息系统的特点,系统采用以Web 为中心的应用程序方案。该系统可以提高企业的整体运营速度,给企业带来巨大的财富。

    本网络超市综合管理信息系统的整体开发中尝试了当前最新的思路和技术。系统框架设计采用了MVC模式思想,代码实现使用了JSP+Java Bean的网络编程技术,后台数据库是用SQL Server 2000对数据库进行管理。系统有完善的信息管理功能,为商家建立一套科学管理流程。

    本系统界面友好简洁,使用人员可以很快掌握,为系统管理人员带来的方便快捷。

    关键词   管理信息系统; MVC模式; JSP; SQL Server 2000 数据库管理系统; J2EE

                          

     

     

     

     

     

     

     

     

     

    Abstract

    Because of the development of science and technology, the violent inflation of the amount of information, enterprises want to adapt to the tide that the information - intensive society develops rapidly, must structure the new operation mode with the aid of Internet, the online shopping has already become the new mode that a lot of enterprises have wanted to adopt. At the same time the products in J2EE platform can nearly run on any operating system and hardware disposition, so this text has designed a system of online shopping built up on the basis of J2EE. According to the multi - layer application program scheme of J2EE and systematic characteristic of  shopping managerment, this system adopts the application program scheme taking Web as the centre. The system can greatly speed up the operation cycle, bring huge treasure to the enterprise.

    Have all tried present latest thinking and technology in whole development of this system of shopping at network. Have designed and adopted MVC mode thought in systematic frame; The code has realized using the network programming technology of JSP +Java Bean; Backstage supporter's database manages database with SQL Server 2000. The system has complete operating and management which set up a set of scientific management procedure for the trade company.

    Systematic interface this friendship succinct, use personnel can master quickly, which make shopping managerment employees convenient and swift too.

    Key words  Managerment Information System  MVC mode  SQL Server 2000  Database Management System  Multi - layer Application Program  J2EE

     

     

     

     

     

    目录

    摘 要    I

    Abstract II

     

    第1章  绪论... 1

    第2章  超市综合信息管理系统概述... 3

    2.1  超市综合信息管理系统简介... 3

    2.1.1  什么是信息管理系统... 3

    2.1.2  信息管理系统的特点... 4

    2.1.3  管理信息系统的分类... 5

    2.2  管理信息系统的开发过程... 5

    2.3  本章小结... 6

    第3章  选题与课题概述... 7

    3.1  课题相关的一些重要概念... 7

    3.1.1  电子商务的概述... 7

    3.1.2  电子商务相对于传统商务的优点... 7

    3.1.3  J2EE的概念及体系结构分析... 7

    3.2  课题的选择... 10

    3.3  本章小结... 10

    第4章  操作平台和开发工具简介... 11

    4.1  系统性能需求... 11

    4.1.1  硬件环境... 11

    4.1.2  软件环境... 11

    4.2  SQL Sever 2000介绍几选用原因... 12

    4.3  Java在本系统的应用... 13

    4.3.1  Java Bean简介... 13

    4.3.2  Java Bean在系统中的使用... 13

    4.4  本章小结... 13

    第5章  系统可行性... 14

    5.1  市场可行性... 14

    5.2  技术可行性... 14

    5.3  系统环境分析... 14

    5.4  安全分析... 15

    5.5  本章小结... 15

    第6章  需求分析说明书... 16

    6.1  市场细分及各细分市场需求... 16

    6.2  功能需求... 16

    6.3  数据描述及数据库需求... 16

    6.4  本章小结... 17

    第7章  系统总体设计... 18

    7.1  总体设计的目的... 18

    7.2  总体设计内容... 18

    7.2.1  系统组织结构及思想... 18

    7.2.2   MVC模式概述... 18

    7.2.3  本系统的MVC模式... 20

    7.3  系统功能模块设计... 20

    7.3.1  总体功能模块结构... 20

    7.3.2  数据库设计... 21

    7.3.3  数据库子模式逻辑结构描述... 22

    7.4  本系统的数据库的安全性... 26

    7.5  本章小结... 27

    第8章  详细设计... 28

    8.1  说明书编写目的... 28

    8.2  详细设计概述... 28

    8.3  系统详细功能结构... 28

    8.3.1  实际超市商品销售管理流程... 28

    8.3.2  系统所有功能模块详细介绍... 28

    8.4  系统模块实现... 34

    8.4.1  底层数据库... 35

    8.4.2  数据库操作Bean. 37

    8.4.3  数据存取Bean. 40

    8.4.5  商务逻辑bean. 41

    8.4.6  JSP页面... 41

    8.5  Java Bean特别说明:... 41

    8.5.1  基本方法... 41

    8.5.2  重要语句... 42

    8.5.3  Java Bean之间的通信... 42

    8.6  本章小结... 42

    第9章  编码及调试... 43

    9.1  编码总述... 43

    9.2  程序亮点... 43

    9.3  JSP页面调试过程... 43

    9.4  本章小结... 44

    第10章  超市管理系统测试... 45

    10.1  简介... 45

    10.2  测试内容... 45

    10.2.1  功能测试... 45

    10.2.2  正确性测试... 45

    10.2.3  可靠性测试... 45

    10.3  软件测试报告... 46

    10.4  本章小结... 47

    结 论    48

    参考文献... 50

    致 谢    51

     

     

    1章  绪论

    在我国近十多年的发展中,商业的发展可谓变化千变万化,尤其是近年来,商业经营方式已由单一向多种经营态势发展,各种商业经营形式充斥其中。其中商业连锁超市已成为商业大家庭的主力军。商业超市是劳动密集型的服务行业,不同于生产型的企业,所有的商品都是源自外购,而且采购的品种多,采购的批次频繁。超级市场具有经营品种丰富、更新速度快、交易高峰时间顾客交易频繁、速度快准确性要求高的特点。每日甚至每时将这些频繁交易的真实情况实时地采集、汇总、分类、处理,生成各种账目、报表,并将进、销、存、以及资金分布等情况迅速反映出来,其往来业务非常繁杂。
        往来管理是商业企业管理的一个非常重要的组成部分,是对往来业务活动进行连续、系统、全面和综合的核算和监督,即对应收账款和应付账款进行系统的管理,以提高经济效益的重要的管理活动。其主要的任务是提供正确的、完整的、系统的往来业务信息。在商业中尤其是商业超市的往来账目更为繁琐复杂。现如今,各个企业的往来管理大多数都还处在纸质的单据交易,这样会拉长时间线,导致效率低下、容易出错,管理层正是通过这些汇总的账目来进行管理和决策,导致管理层不能及时做出正确的决策。
        往来信息是商业超市经济信息的核心,它连续、系统、全面、综合地反映和监督商业超市经营管理的情况,并为超市的经济决策提供重要依据。商业超市的管理层通过往来信息来衡量经营管理的业绩,并利用往来数据对经济活动做出预测和决策。往来管理记录了企业与往来单位之间的应收账款、应付账款及回款的变动情况,并提供对往来财务信息的查询。由此为依据进行决策。此外,往来管理子系统通过严密地监控应收账款和过期账款,还可以进行账龄分析来减少应收款。
        管理信息系统的构建中,往来管理子系统是以计算机为主要工具,往来管理知识为指导思想,对商业超市各种往来的财务数据进行收集、存储及分析,为用户提供往来信息的人—机系统,是商业超市管理信息系统的一个重要的子系统。
        往来管理子系统与其他子系统间实现数据兼容和信息共享。商业超市管理信息系统中,其他各子系统的业务运作进展情况基本上以单据提交到往来管理子系统,由往来管理子系统对这些数据信息进行处理。一方面向企业内各部门提供其业务过程及相关活动的往来信息,协助这些部门进行更好地管理;另一方面向管理者提供有用的决策信息。往来管理子系统好比整个商业超市的“中枢神经”系统,不断从外界接受新信息进行处理,再输出各类相关的信息,反映企业的经营状况。

     

    2章  超市综合信息管理系统概述

    2.1  超市综合信息管理系统简介

    2.1.1  什么是信息管理系统

    (1)管理信息系统概述    管理信息系统是计算机应用在管理领域的一门实用技术。它综合运用了管理科学、数学和计算机应用的原理和方法,在符合软件工程规范的原则下,形成了自身完整的理论和方法学体系。

    计算机管理信息系统的总体需求及管理目标:以商品进、销、存的信息管理为基础,以财务核算为中心,采用先进的计算机网络设备,对商场进行全面、细致、规范的管理,实时反映商场的经营情况,为商场管理者、决策者提供科学、准确、规范的数据。该系统由数据采集、数据传输、数据处理、数据存储和辅助决策组成一个多功能可扩展的计算机管理信息系统。将进销存系统与财务电算化、办公自动化系统、人事管理系统互相衔接,为商场提供一个强有力的管理工具。

    (2)信息系统的历史

     

    客户端

    客户端

    应用程序

    应用程序

    客户端

    应用程序

    客户端

    应用程序

    服务器

    数据库

     

     

    图2-1 C/S结构图

    管理信息系统通常可以采用客户机/服务器(C/S)和浏览器/服务器(C/S)两种结构开发。C/S结构在20世纪80,90年代被广泛采用,它可以使用Visual Basic,Visual C++,Delphi和PowerBuilder等众多功能强大的开发工具开发客户端应用程序,服务器上使用后台数据库保存用户数据,基本结构如图2-1所示。

    C/S结构的管理信息系统在技术上已经相当成熟,为广大程序开发人员接受。

    随着Internet的推广和普及,开发B/S结构的管理信息系统叶在很多领域得到了应用。它的主要优势在于用户无需安装客户端软件,只要使用Internet Explore浏览器就可以使用管理信息系统。当然,B/S结构管理信息系统的主要操作都在服务器上完成,对服务器的要求比较高,它的结构如图2-2所示

     

    浏览器

                 Servelet/JSP容器

    数据库

    JSP

    Java Bean

     图2-2 B/S结构图

     

    而且在开发工具方面也像C/S结构的开发工具那样拥有强大的功能。

    2.1.2  信息管理系统的特点

    从前面对信息管理系统所作的定义可以看出基于B/S的信息管理系统有一下几个重要特征:

    (1)可靠性    保证系统具有充分的容错能力和多级备份,提供有效的系统结构,防止故障发生,一旦发生能自动恢复。

    (2)可扩展性    系统扩充和适应能力强,在硬件不变的情况下,通过软件系统重新设置运行参数来调整系统的功能和结构。易于二次开发,若硬件配置升级、网络站点扩充,系统功能应能随之相应增加。

    (3)安全性    系统具有多层次的安全和保密机制,权限明确,智能提示,具有很强的安全性、保密性和较长的生命周期,有效防止非法访问。具有上机日志。

    (4)易用性    在后台管理系统中的汉字只输入一次,无须记忆各种代码。全中文界面,采用仿真表格与单据,操作直观自然,统一编码,消除重复劳动。

    2.1.3  管理信息系统的分类

    管理信息系统可以有很多的分类标准。例如,可以将信息管理系统分成独立系统和综合管理信息系统两种情形。独立的系统是为了满足某个特定的应用领域(例如,人力资源管理)而设定的。独立的系统有它自己的文件和数据库系统。综合的系统是由多个独立系统组成。这些独立系统通过它们使用的数据被综合在一起,系统利用一个资源共享的数据库来达到综合的目的。例如,工资管理系统需要人力资源管理系统中提取部门和员工数据,采购管理,销售管理需要从客户资源管理系统中提取客户信息。本系统正是采用综合管理信息系统,来实现超市信息的综合管理。

    2.2  管理信息系统的开发过程

    管理信息系统的开发过程可以分为以下5个阶段来描述:[11]

    第一阶段 系统开始和可行性研究;

    第二阶段 系统分析和设计;

    第三阶段 程序设计;

    第四阶段 系统测试和技术培训;

    第五阶段 项目总结和评估。

    下面分别对这几个阶段的主要工作进行简单的介绍:

    (1)系统开始和可行性研究    系统开始和可行性研究是为了系统开发做的前期准备的。第一阶段多数工作和编写的资料是第二阶段的输入。第一阶段最终的产品有以下两部分:

    实际的可行性研究报告  它包含对系统基本功能的描述以及利润/成本分析。

    系统的初步设计  它对于估价成本和利润是必要的,是第二阶段的直接输入。

    多数可行性研究是以念而不是以设计为基础的。如果在描述系统目标上花的时间太少,那么成本和利润的估计将是错误的。用概念来指导可行性研究注定会导致成本过高,因此有必要在此阶段进行初步的设计。

    (2)分析和设计    一旦项目获得批准,则开始第二阶段,即系统分析和实际阶段。此阶段将完成系统设计,以及个程序的模块说明书。注意,在第一阶段和第二阶段不应该编写程序。通常,为了提前完成设计阶段。粗糙的系统设计将成倍的增长项目所要求的程序设计量。

    在第二阶段要成立项目组,项目组应该包含一个或多个系统分析员和来自所开发的系统范围内的用户代表。如果可能的话,还要该项目组指派一个信息服务审计员,他不作为专职人员,而作为安全可控制方面的顾问。因为在第二阶段技术之前程序员实际上并不参与进来,所以可以将指定程序员一事推迟到第二阶段结束时在进行。

    (3)程序设计    用户的介入集中在系统靠法的过程前段和后段。如果正确的完成了第二阶段,而且用户与项目组的协调是有效的,那么用户将很少介入程序设计阶段。

    如果用户过多的介入程序设计阶段,将直接影响开发的进度和质量。在实际工作中,这种情况是经常发生的,特别是时间特别紧迫时,项目组经常收到一些强制性命令要求发布尚未完成的项目。由于系统最终开发的是软件,所以过早的开始程序设计,将会导致产生质量低下的系统。这种系统并不能满足用户的需求,而且维护代价很高。

    (4)系统测试和技术培训    尽管在第三阶段已经分别测试了系统的各个模块,但是这不能把它们结合成一个整体时系统也会正常工作。因此,在第四阶段要完成整个系统的测试。在此期间,项目组将培训用户运行信息系统,整理开发过程中编写的各种技术文档,以便通过质量认证和用户的验收。

    (5)项目总结和评估    第五阶段常常被忽略。由于其他项目组需要人员,当前管理信息系统的总结工作往往被忽略。人们往往会认为,不管好坏,系统已经接受了,没有必要在投入过多的精力。

    项目总结应该是系统开发过程的组成部分。任何管理信息系统在刚刚投入使用时,都会做一些微小的调整。因此有必要事先对它们进行总结和评估。因为系统一旦投入使用,即便实现前的测试设计很好,也不能暴露出某些在系统投入运行是必将出现的问题。可以委托第三方对系统进行总结和评估,这样做可以获得跟高质量的系统并且使用户更为满意。

    2.3  本章小结

    本章主要介绍了什么是管理信息系统,以及管理信息系统的分类和管理信息系统的开发过程。

     

     

    3章  选题与课题概述

    3.1  课题相关的一些重要概念

    3.1.1  电子商务的概述  

    电子商务(Electronic Commerce)是在Internet开放的网络环境下,基于浏览器/服务器应用方式,实现消费者的网上购 物、商户之间的网上交易和在线电子支付的一种新型的商业运营模式。电子商务是Internet爆炸式发展的直接产物,是网络技术应用的全新发展方向。Internet本身所具有的开放性、全球 性、低成本、高效率的特点,也成为电子商务的内在特征,并使得电子商务大大超越了作为一种新的贸易形式所具有的价 值,它不仅会改变企业本身的生产、经营、管理活动,而且将影响到整个社会的经济运行与结构。[2]

    3.1.2  电子商务相对于传统商务的优点

    电子商务所具有的开放性和全球性的特点,为企业创造了更多的贸易。[1]

    商务使企业可以以相近的成本进入全球电子化市场,使得中小企业有可能拥有和大企业一样 的信息资源,提高了中小企业的竞争能力。

    电子商务重新定义了传统的流通模式,减少中间环节,使得生产者和消费者的直接交易成为可能从而在一定程度上改变了整个社会经济运行方式。

    电子商务一方面破除了时空的壁垒,另一方面又提供了丰富的信息资源,为各种社会经济要素的 重新组合提供了更多的可能,这将影响到社会的经济布局和结构。

    3.1.3  J2EE的概念及体系结构分析

    (1)J2EE的概念    J2EE是一种应用与建立服务器方应用程序的系统平台,它的定义包括了:为开发,部署,管理多层以Web为基础的,以服务器为中心的,以组件技术为基础的企业级应用提供开放的管理平台。[3]

    (2)J2EE 体系结构分析    J2EE 使用多层的分布式应用模型(见图3.1)。应用逻辑按功能划分为组件,各个应用组件根据它们所在的层分布在不同的机器上。如图3-1所示。              

     

    客户端

    动态HTML页面

    应用程序

    客户端

    JSP页面

    Enterprise Bean

     

    数据库

     

    数据库

    Enterprise Bean

    外观业务层

    EIS

    J2EE服务端

    数据库服务器

     

     

    图3-1 J2EE的四层模型

    客户层(Client tier)运行在客户端机器上的客户层组件, 一般为浏览器或其他应用。客户层普遍地支持HTTP 协议,也称客户代理。

    Web 应用层(Web tier)运行在J2EE 服务器上的Web 层组件,这一层由Web 容器运行,它包括J SP ,Servlet 等Web 部件[5]。调用Servlet 或者JSP 页面的HTML 页面在应用程序组装时与Web 组件打包在一起,就像客户层一样,Web 层可能包括一个JavaBeans 类来管理用户输入,并将输入发送到在业务层中运行的enterprise beans 类来处理。

    企业组件层( EJB tier)运行在J2EE 服务器上的业务逻辑层组件,企业组件层由EJB 容器运行,支持EJB、J MS、J TA 等服务和技术。业务层和Web 层一起构成了J2EE 应用的中间层,而其它两层是客户层和企业信息系统层。

    企业信息系统层(EIS tier)运行在EIS 服务器上的企业信息系统( Enterprise information system) ,企业信息系统包含企业内传统信息系统如财务,CRM 等,特点是有数据库系统的支持。

    在J2EE 基于组件的开发模型中,其中心是容器的概念。容器是提供特定组件服务的标准化运行的环境。J2EE的组件位于不同的容器内,它们之间通过JNDI 定位和引用。通过这些组件,可以在任何供应商的任何J2EE平台上得到所期望的服务。例如:所有J2EE Web容器都提供影响客户要求、执行请求时间处理(例如激发JSP 或Servlet 行为) ,以及将结果返回到客户的运行时支持,同时支持bean查询以及其他服务。容器还提供了对企业信息系统的标准化访问,比如说,提供通过JDBC API进行的RDBMS访问。

    对事务的支持是J2EE 体系结构的必要部分。J2EE 平台支持计划性和声明性事物定界,组件提供者可以用Java事务API 在组件代码中计划性地划分事务边界。该平台还支持由Servlet 和J SP 页面结合组成的事务性应用程序,可在一个事务中访问多个企业bean。每个组件可以请求一个或多个连接来访问一个或多个共享的资源管理器。目前,J2EE 平台只要求支持在一个事务(允许与同一数据库建立多个连接) 中访问一个JDBC 数据库,不要求支持一个数据库中访问多个JDBC 数据库,也不要求支持对其他类型的企业信息系统的访问。

     

    HTML

    HTTP

    XML

    JSP页面

    Servlet

    XML

    浏览器

    Web容器

    JDBC

    连接

    EIS资源

     

     

                     图3-2 以Web 为中心的应用程序方案

    安全问题也是J2EE 平台的一个重要方面,该平台把应用程序开发者从安全机制的细节中解脱出来,并使不同,环境中的应用程序的安全部署更方便。J2EE 平台通过定义应用程序组件开发者、应用程序汇编者以及在特定环境中配置应用程序的部署者之间的明确分工来达到此目的。允许组件提供者和应用程序汇编者指定应用程序的哪些部分需要安全保护,然后部署者在部署时选择特定安全机制来加以保护。通过以上方式,部署描述提供了一种非代码方式使开发者将这些要求通知部署者,这也使部署者可以使用容器专有的工具来更容易地实现开发者建议的安全限制。

    J2EE 编程模型包含将Web 容器和EJB 容器视为可选逻辑实体的应用程序方案。由于本系统以Web 应用层为中心设计,Web 层几乎实现所有的功能,如访问EIS、接收和解释来自客户端的输入、生成动态内容和分配资源等。因此该系统使用EJB 服务器显得没有必要,所以系统选用以Web 为中心的应用程序方案,见图3-2所示。

    该设计方案在本质上来说,Web 容器既包含了表示逻辑,同时也包含了商务逻辑,并且我们假定使用JDBC(和未来的连接器) 来访问EIS 资源。

    3.2  课题的选择

    中小型超市综合管理信息系统旨在充分利用网络资源,开发适应市场需求的综合信息管理系统。选择此课题是基于当前电子商务开发技术的日趋成熟,J2EE的框架更为完善,诸多较新的技术都可以得以应用,希望能借此机会学习熟悉新鲜的技术和理论;另一方面,商业超市是劳动密集型的服务行业,不同于生产型的企业,所有的商品都是源自外购,而且采购的品种多,采购的批次频繁。超级市场具有经营品种丰富、更新速度快、交易高峰时间顾客交易频繁、速度快准确性要求高的特点。每日甚至每时将这些频繁交易的真实情况实时地采集、汇总、分类、处理,生成各种账目、报表,并将进、销、存、以及资金分布等情况迅速反映出来,传统的手工管理完全是不可能的,因此,只有利用现代管理理念,采用基于计算机的管理软件,才能高效,快捷的实施现代超市信息管理。

    3.3  本章小结

    本章主要介绍了与课题相关的重要概念,以及实现课题的重要技术,从技术上论述了实现该系统的可行性。

     

     

     

     

     

     

     

    4章  操作平台和开发工具简介

    4.1  系统性能需求

    开发任何一种管理信息系统对运行环境的都有一定的要求,在开发时对开发工具的选择往往也会导致开发一个系统进度的快慢,有时,一个很不适合的开发工具,在程序调试时,会花费大量的人力,下面从开发该系统对硬件和软件的需求上做出细致的分析。

    4.1.1  硬件环境

    (1)服务器端    服务器端的最低配是由站点所需的软件来决定的,在最低配置的情况下,服务器的性能往往不尽人意,现在性能已经相当出色,而且价格也很便宜,因此通常应该给服务器端配置高性能硬件。本网络系统服务器端的配置如下:

    ·处理器:Inter Pentium2.7GHz;

    ·内存:256MB;

    ·硬盘空间:40GB;

    ·光驱:CD—ROM48X;

    ·显卡:SVGA显示适配器;

    (2)客户端    因为客户端主要用于浏览和操作数据,所以对客户端的硬件要求不高,不过现在的电脑有很高的性价比,因此,实际的配置一般高于下面的配置:

    ·处理器:Inter Pentium166MX;

    ·内存:32MB;

    ·硬盘空间:1GB;

    ·光驱:CD—ROM48X;

    ·显卡:SVGA显示适配器;

    4.1.2  软件环境

    (1)服务器端

    ·操作系统:Windows2003 Server;

    ·软件:Tomcat,SQLserver2000,JCreater;

    (2)客户端

    ·操作系统:Windows2003 Server;

    ·软件:Internet Explore5.0以上的浏览器;

    4.2  SQL Sever 2000介绍几选用原因

    (1)SQL Server 2000简介    目前市场上数据库的主流厂商及产品有IBM DB2、Microsoft SQL SERVER 2000、ORACLE 9i、Sybase。SQL它是一种结构化查询语言,一组命令,允许用户指定想获取或更改什么信息. 区别于FoxPro、Access小型数据库,SQL Server是一个功能完备的数据库管理系统。它包括支持开发的引擎、标准的SQL语言、扩展的特性(如复制、OLAP、分析)等功能。[11]

    (2)SQL Server 2000的原因    首先,学习SQL Server是掌握其他平台及大型数据,如Oracle,Sybase,DB/2的基础。这些大型数据库对于设备、平台、人员知识的要求往往较高,而并不是每个人都具备这样的条件,且有机会去接触它们。但有了SQL Server的基础,再去学习和使用它们就容易多了。

    其次,Microsoft SQL Server 2000是在SQL Server 7.0的基础上对性能、可靠性、质量以及易用性进行了扩展。SQL Server 2000中包含许多新特性,这些特性使其成为针对电子商务、数据仓库和在线商务解决方案的卓越的数据库平台。

    (3)SQL Server 2000的基本功能    SQL Server 2000 的核心是服务器组件,但用户直接客户端工具。服务器组件是引擎,客户端工具是用户界面,两者是相辅相成的。

    SQL Server 2000 的客户端工具包括——企业管理器、查询分析器、事件探查器、服务管理器、客户端网络实用工具、服务器网络实用工具、导入和导出数据(DTS)等等。它具有数据库的定义功能,数据库的存取功能,数据库运行管理,数据库的建立和维护功能以及数据库初始数据的载入、转换功能、数据库的转储、恢复功能,数据库的重组织功能和监视功能、分析功能等等。

    4.3  Java在本系统的应用

    4.3.1  Java Bean简介

    JSP + Java Bean的组合成为了一种事实上最常见的Jsp程序的标准。大多数的Java程序代码是属于可以重复使用的组件,称为JavaBean。JavaBean的价值在于它可以经由一组特性来提供对JavaBean设定的存取。

    4.3.2  Java Bean在系统中的使用

    (1)Java Bean 的用法    告诉JSP网页它所需要使用Java Bean的工作可以用<jsp:useBean>卷标<jsp:useBean id="product" class="product.ProductBeanPage" scope="request"/>

    Id :JSP页面需要用id属性来辨识bean;.

    Scope:范围属性,在通话期内维护自己的信息;

    [scope="page"]:单一网页(预设);

    [scope="request"]:一个被请求的网页;

    [scope="session"]:通话期;

    [scope="application"]:整个应用程序;

    Class:提供JSP页面到哪里去找这个 JavaBean,标识出它的Java类别名称.。

    (2)基于MVC的Java Bean使用    在系统中共用了多个Java Bean,其中直接连接调用数据库部分使用了一个底层Java Bean;每个数据库表对应一个数据存取Java Bean;页面对应商务逻辑Java Bean,后文将有详细介绍。

    4.4  本章小结

    本章主要从开发该管理信息系统选用何种系统,何种开发平台,何种软件,从理论上做出了细致的分析。并且与同类软件开发做出详细的比较,以便于人们做出合理的选择。

     

     

    5章  系统可行性

    5.1  市场可行性

    目前中国的Internet已经从起步阶段进入了高速发展阶段。随着对互联网基础设施投资的加强,中国的电子商务发展不可限量在国内,也许人们并没有意识到,然而在国际上,中国电子商务的发展已经正在成为美国乃至全球关注的话题和焦点。

    另一方面,商业连锁超市已成为商业大家庭的主力军。商业超市是劳动密集型的服务行业,不同于生产型的企业,所有的商品都是源自外购,而且采购的品种多,采购的批次频繁。超级市场具有经营品种丰富、更新速度快、交易高峰时间顾客交易频繁、速度快准确性要求高的特点。每日甚至每时将这些频繁交易的真实情况实时地采集、汇总、分类、处理,生成各种账目,并将进、销、存、以及资金分布等情况迅速反映出来,其往来业务非常繁杂基于此种市场现状,本综合管理信息系统不论是从未来电子商务方面还是从当前商业连锁超市方面都满足用户的需要。

    5.2  技术可行性

    以J2EE为基础,它给系统开发人员提供可一种工作和运行平台,它定义了整个标准的应用开发体系结构和一个部署环境。在这个体系结构中,应用开发者的注意力集中在业务逻辑的开发上,一切与基础结构服务相关的服务(事物,安全和传输)及低层分配问题都有应用业务逻辑和表示逻辑等,而把所有与基础相关的编程交给运行环境(容器或服务器)实现。以J2EE为框架不仅可以实现大型应用程序的开发,更可以方便的实现是以B/S为基础的综合管理信息系统的开发。

    5.3  系统环境分析

    系统的运行环境是:操作系统为Windows2003或Windows/NT、前台的开发工具为Jdk1.4.1、Tomcat 5.0、DreamweaverMX2004,采用了SQL Sever2000后台数据库,后台的开发工具用JBuilder2005,Eclipse,JCreater,WebLogic,可以是高效率的开发。

    5.4  安全分析

    技术方面,通过程序代码设计,随时返回错误和错误原因。数据库错误等均可通过程序显示。连接数据库要通过用户名和口令验证。

    系统使用方面,只有登陆的系统用户才可以使用该系统。

    5.5  本章小结

    本章通过从技术可行性和市场可行性方面论述了实现中型超市综合管理信息系统的可能。为系统的顺利实现提供了科学的保障。

     

    6章  需求分析说明书

    6.1  市场细分及各细分市场需求

    以B/S结构为基础的管理信息系统也在很多领域得到了应用。它的主要优势在于用户无需安装客户端软件,只要使用Internet Explore浏览器就可以使用管理信息系统。另一方面,随着电子商务的大力发展使得以B/S结构为基础的管理信息系统更为实用。   

    6.2  功能需求

    (1)人力资源管理    提供企业员工的信息管理,员工部门的信息管理,企业员工考勤的信息管理,以及用户权限的管理。

    (2)公司财务部    员工工资信息管理,商品销售业绩管理,商品采购费用信息管理,用户密码修改。

    (3)商品采购部   商品类型信息管理,商品信息管理,供应商厂家信息管理,采购联系人信息管理,采购信息管理。

    (4)商品销售部   商品所有信息显示,商品销售管理。

    (5)用户权限修改    用户密码修改,用户权限修改。

    (6)个人信息管理    个人详细信息查询,个人工资信息查询,个人考勤信息查询,个人密码修改。

    6.3  数据描述及数据库需求

    针对一般超市综合信息管理系统的需要,通过对整个过程的内容和数据流程分析,设计成如下面的数据项:

    (1)员工信息表    包括的数据项有:员工编号、员工姓名、员工籍贯、员工住址、员工电话号码、员工身份证号码、员工性别,员工部门编号,员工描述,员工结婚否。

    (2)商品类别表    商品类编号、商品类别名称。

    (3)商品信息表    商品编号、商品类别编号、商品名称、市场价、商品进价,商品描述,商品单位。

    (4)供应商信息表    供应商编号、供应商地址、供应商名称、供应商邮编。

    (5)订单详细信息   订单编号、商品编号、购物价格、购物数量、订单状态。

    (6)部门信息表    部门标号,部门名称。

    (7)登陆用户信息    用户编号,用户名称,用户密码,用户类型。

    (8)供应商联系人信息    联系人编号,联系人姓名,联系人性别,联系人爱好,联系人单位,联系人职位,联系人电话。

    6.4  本章小结

    本章主要从管理信息系统的发展方向,市场需求,功能需求方面论述了该超市综合管理信息系统的合理性。

     

    7章  系统总体设计

    7.1  总体设计的目的

    为实现系统预期功能,首先对系统进行总体设计。

    总体设计的目的:构建系统基本架构,为详细设计构筑框架;初步判断需求分析中确定的用户需求哪些可以完成哪些有一定障碍;确定相应模块实现相应客户需求;确定基本思路。

    7.2  总体设计内容

    总体设计主要内容:基本流程设计,系统组织结构设计,模块划分,功能划分,接口设计,以及数据库设计。

    7.2.1  系统组织结构及思想

    开发和管理一个基于B/S模式的管理信息系统需要开发和利用高效率的网络资源.并且应该充分利用高技术含量的技术.本系统开发中使用了Java Server Pages ,Java Bean.为了能将Java Server Pages,Java Bean,以及Java Servlets三种技术有机结合起来,本系统的总体架构采用了MVC模式.

     

                  图 7-1 从 JSP 文件到 servlet 的流程

    7.2.2   MVC模式概述

    (1)MVC是Model-View-Controller的简写

    "Model" : 代表的是应用的业务逻辑(通过JavaBean,EJB组件实现);

    "View":  代表的是应用的表示面(由JSP页面产生);[6]

    "Controller" :是提供应用的处理过程控制(一般是一个Servlet);

    通过这种设计模型把应用逻辑,处理过程和显示逻辑分成不同的组件实现。

    (2)选用MVC的原因    我们可以只使用JSP构建电子商务系统,但如果想完成一个有效的应用程序并用于商业上,则需要综合Java Server Pages,Java Bean,以及Java Servlets三种技术相互补充的力量。这种情况下就必然要使用MVC模式,它把应用程序划分为独立的数据管理Model,表现形式View,和控制组件Controller,成为最先进的图形用户接口的基础。这些划分模块支持独立开发并且以重复使用组件。

    (3)把MVC模式应用于网络应用程序中

    JSP:充当实现网络应用程序的对外表现的部分。

    Java Bean:封装了提供给web网站的服务信息内容并且简化了数据在体系结构组件之间的传输。

    Servlet:控制,协调用户请求和应用程序信息,更新程序数据。

     

    图7-2 基本的MVC模式

     

    7-3 MVC 的 Web 改写版

    7.2.3  本系统的MVC模式

    本超市综合信息管理系统基于MVC模式设计, 但是开发MVC系统比简单的JSP开发要复杂许多,它需要更多的时间学习和掌握,而且作为毕业设计课题本系统与真正商业用软件系统还有一定的规模差距, 因此在运用MVC模式时只是采用了MVC的思想,并未使用Structs等组件。

    (1)程序层次   系统的基本层次按照MVC模式设计;

    (2)所用到的Java Bean 结构设计:

    首先,在建好底层数据库的基础上,使用一个数据库操作Bean 实现数据库的连接调用 ,其中封装public Connection   getConnection(){}的方法;

    其次,每一个数据库表对应一个数据存取Bean.在这些数据存取Bean中封装了对数据库中相对应表的插入insert,删除delete,查询select,更新update等操作,并通过get(),set()方法与JSP页面通信;

    同时系统中各模块功能的实现也是通过操作各自商务逻辑Java Bean实现.;

    此外,90%以上的JSP页面不直接调用getConnection()方法,通过上图所示的顺序调用。

    7.3  系统功能模块设计

    7.3.1  总体功能模块结构

     

    超市综合信息管理系统

    个人信息管理

    人力资源管理

    公司财务管理

    商品销售管理

    商品采购管理

    用户权限管理

     

     

    7-4 系统总体模块图

    (1)本中型超市综合信息管理系统共有五个基本模块,在需求分析中已有所介绍,如图7-4所示 。

     (2)总体模块功能清单

    表7-1 用户操作端模块清单

    编号

    模块名称

    使用的JavaBean

    模块主要功能说明

    相应数据库表

    1

    个人信息管理

    Employee. Java

    Employeesbean. Java

    DataBase.java

    员工详细信息查询

    员工工资信息查询

    员工登陆密码修改

    Employees

    Salary

    Evaluation

    Users

    2

    人力资源

    管理

    Employee. Java

    Employeesbean. Java

    Departmen.java

    人事部门信息管理

    员工详细信息管理

    员工考勤信息管理

    员工权限信息管理

    Employees

    Evaluation

    Users

    department

    3

    公司财务管理

    Salsry.java

    ShopCartItem.java

    Database . java

    工资详细信息管理

    商品销售信息管理

    商品采购费用管理

     

    Salary

    Purchase

    Checkout

    4

    公司采购管理

    Purchase. Java

    Saler. java

    Product . java

    商品类型信息管理

    商品详细信息管理

    供应商家信息管理

    联系人信息管理

    商品采购信息管理

    Supplyer

    Saler

    Purchase

    Product

    5

    商品销售信息管理

    Product . java

    Checkout.java

    商品信息显示

    商品销售管理

    用户密码修改

    Product

    Checkout

    6

    用户权限修改

    Users.java

    用户密码修改

    用户权限修改

    Users

    7.3.2  数据库设计

    在系统的开发中,数据库是十分重要而关键的环节。一个完备的数据库可以为系统的开发带来很多便利,同时也为实现系统功能铺平道路。超市综合管理信息系统的数据库是基于用户需求开发的,共使用多张数据表,采用关系型数据库结构。

    所使用数据库名称:managermentDB;

    数据库类型:SQL Server 2000数据库;

    连接方式:native-API partly-Java driver 本地库Java驱动程序,将JDBC转化为数据库客户端的API的调用。

    7.3.3  数据库子模式逻辑结构描述

    系统数据库中员工视图详细介绍如下:

    (1)员工信息表    包括的必填数据项:员工编号,员工姓名,员工性别;

    可选填数据项:员工籍贯,出生年月,学历,是否结婚,身份证号码,员工电话,员工地址,员工描述;

    说明: 员工编号是唯一的员工标识,使此表的主键. 系统通过添加员工可以使用户登陆到系统相应的管理模块。如图7-5所示。

     

     

    图7-5 员工信息

    (2)商品类别表    商品类别号、商品类别名称。

    说明:商品类别编号为主键 如图7-6所示。

     

    7-6 商品类别

    (3)商品信息表    商品编号、商品类别号、商品名称、商品单位、商品当前价格、商品进货价格、商品数量、商品描述。

    编号方法:商品的编号采用位数分类的方法,如图7-7所示。

     

    图7-7 商品信息

    (4)商品采购信息表    商品采购信息编号、商品编号、商品名称、采购人员编号、供应商联系人编号、采购数量、采购时单位商品价格、采购时间、采购地点、采购描述、采购日期。

    说明:这张表标识的是商品采购信息的信息情况的外部信息,采购信息编号为该表的主键。如图7-8所示。

     

    图7-8 采购信息

    (5)商品销售信息    商品编号、商品名称、商品单位、商品库存数量、商品当前价格。

    说明:这张表标识的是商品销售的内部信息列表,商品编号是该表的主键,它与商品信息一一对应。

    编号方法:商品编号采用自动生成方式。如图7-9所示。

     

     

    图7-9 商品销售信息

    (6)员工部门信息   部门编号、部门名称。

    说明:这张表标识的是超市管理信息系统员工部门的信息列表,部门编号是该表的主键。

    编号方法:部门编号采用自动生成方式。如图7-10所示。

     

    图7-10 员工部门信息

    (7)员工考勤信息    员工考勤编号、员工编号、考勤时间、考勤主题、考勤结果、考勤分数、考勤描述。

    说明:这张表标识的是超市管理信息系统员工考勤的信息列表,员工考勤编号是该表的主键。

    编号方法:员工考勤编号采用自动生成方式,员工编号与人事管理系统中员工编号一一对应。如图7-11所示。

     

     

    图7-11 员工考勤信息

    (8)员工工资信息    员工工资编号、员工编号、员工基本工资、员工季度奖金、员工年度奖金、员工鼓励奖金、员工发工资时间。

    说明:这张表标识的是超市管理信息系统员工工资的信息列表,员工工资编号是该表的主键。

    编号方法:员工工资编号采用自动生成方式,员工编号与人事管理系统中员工编号一一对应。如图7-12所示。

     

     

    图7-12 员工工资信息

    (9)商品供应商信息    供应商编号、供应商名称、供应商地址、供应商邮编、供应商生产产品的名称。

    说明:这张表标识的是超市管理信息系统中商品采购模块中商品供应商的信息列表,供应商编号是该表的主键。

    编号方法:商品供应商编号采用自动生成方式。如图7-13所示。

     

    图7-13 商品供应商信息

    (10)商品供应商联系人信息    供应商联系人编号、联系人姓名、联系人性别、联系人职位、联系人公司名称、联系人爱好、联系人电话、联系人描述、联系人公司编号。

    说明:这张表标识的是超市管理信息系统中商品采购模块中商品供应商联系人的信息列表,供应商联系人编号是该表的主键。

    编号方法:商品供应商联系人编号采用自动生成方式。如图7-14所示。

     

    图7-14 商品供应商联系人信息

    (11)系统登陆用户信息    用户编号、用户姓名、用户密码、用户登陆身份。

    说明:这张表标识的是超市管理信息系统中登陆到系统的用户的信息列表,用户编号是该表的主键,其中用户编号与员工信息表中的用户编号是一一对应的。如图7-15所示。

     

    图7-15 系统登陆用户信息

    7.4  本系统的数据库的安全性

    (1)系统用户身份验证    用户登陆系统时必须通过必要口令验证,禁止随意登陆。

    (2)数据用户身份验证    系统采用native-API parly-Java driver,本地数据库驱动,将JDBC转化为对数据库的客户端API的调用,在用户访问数据库时要通过登陆名和密码的验证。因此只有管理员才可进行数据库的操作。

    (3)用户权限区分    普通员工只能浏览个人信息,不能进行其它的操作,只有部门负责人才能进入各自管理的部门进行部门内数据的编辑操作工作,只有系统超级管理员可以进入任何部门进行任何操作,各个用户之间权限分明,不会发生任何矛盾。

    (4)数据库及时更新备份,防止信息丢失。

    7.5  本章小结

    本章从该系统总体上考虑,对系统总体做出了较为完善的设计,首先,从技术上描述了实现该系统要用到的各项技术,其次,对系统所涉及到的各个数据实体做了统一的分析,并且建立了数据模型,定义了数据字典,为今后系统的详细设计打下了基础。

     

    8章  详细设计

    8.1  说明书编写目的

    系统详细设计的根本目的是确定应该怎样的实现所要求的系统,此阶段的任务还不是编写程序,而是要设计出程序的蓝图,以后可以根据此蓝图写出实际的程序代码。详细设计的结果基本上决定了最终代码的质量。

    8.2  详细设计概述

    超市综合信息管理设计时,模拟现实超市综合信息管理系统的所有流程,从企业人力资源、公司财务管理、商品采购管理、商品销售管理等多个角度出发,完全按照现实超市管理来实现。通过模块细分,各个功能通过相应的JavaBean和JSP页面实现。

    8.3  系统详细功能结构

    8.3.1  实际超市商品销售管理流程

     

    进入系统

    商品浏览

    商品查询

    商品采购

    生成订单

    退出系统

     

     

    8-1 超市商品销售管理流程

    8.3.2  系统所有功能模块详细介绍

    根据实际购物流程,绘制系统流程图,是编写程序代码的逻辑依据。在系统的开发之初,作为开发者,我查阅了很多资料,并参考现有电子商务模式,从顾客网上购物真实流程及需求考虑,最终找到了购物的基本流程作为程序编写的结构框架。始终模拟实际购物,摆明线索,划清模块做到了有路可循。

    8.3.2.1  人力资源信息管理

     

    员工考勤删除

    部门信息添加

    部门信息修改

    部门信息删除

    员工信息添加

    员工信息修改

    员工信息删除

    员工信息查询

    员工考勤添加

    员工考勤查询

    人力资源部

    部门信息管理

    员工信息管理

    员工考勤管理

     

     

                             图8-2 人力资源管理结构图

    (1)人事部门信息管理

    部门信息添加:作为一个中型超市管理信息系统,其中会存在多个部门,部门信息有时会需要添加,部门信息添加模块可以方便快捷的实现部门添加。

    部门信息修改:超市管理信息系统,其中存在多个部门,部门信息有时因为各种原因需要修改,部门信息修改模块可以方便快捷的实现部门修改

    部门信息删除:中型超市管理信息系统中,可能因为企业改革等,现有的部门已经不在适合企业的管理,部门信息需要删除,部门信息删除模块可以灵活的实现部门删除。

    (2)员工详细信息管理

    员工信息添加:任何一个企业都是由各种各样的人才组成的,一个中型超市管理信息系统对员工的信息管理是必不可少的,员工信息添加模块可以方便快捷的实现员工详细信息的添加。

    员工信息修改:企业中员工信息的变化是时常发生的,这就需要对员工的信息实时的做出改变,员工信息修改模块可以快捷实时的实现员工信息的修改。

    员工信息删除:企业中员工信息的变化是时常发生的,有时因为员工的离职,或者各种其它原因,员工已经离开了该企业,这就需要对员工的信息相应的改变,员工信息删除模块可以快捷实时的实现员工信息的删除。

    员工批量删除:企业中多个员工信息需要删除时,逐一手工删除是一件很麻烦的事情,员工批量删除正是考虑以上原因而设计的,员工批量删除模块可以快捷,大量的实现多个员工信息的删除。

    员工信息查询:一个大型企业可能有成千上万的员工,当管理人员需要找某一个特定员工时,如果逐一用人眼查询,这几乎是不可能的,员工信息查询模块可以准确的查找特定的员工。

    (4)员工考勤信息管理   

    员工考勤信息添加:一个企业为了使员工高效,积极的实现企业下达的各种任务,这就需要各种监督措施,其中员工考勤信息管理正可以实现对员工的督促和鼓励作用,其次,也可以作为各项奖励的标准,员工考勤添加模块可以实现对每一个员工各个方面的考察。

    员工考勤信息修改:企业中员工考勤信息的有时会因为人为主观原因造成各种错误,这就需要对员工的考勤信息快速的做出修改,员工考勤信息修改模块可以及时的实现员工考勤信息的修改。

    员工考勤信息删除:企业中员工考勤信息的删除是时常发生的,有时因为员工的离职,或者各种过期考勤信息,以及各种冗余信息等,这就需要对员工的考勤信息及时的删除,员工考勤信息删除模块可以快捷实时的实现员工考勤信息的删除。

    员工考勤信息查询:一个大型企业可能有成千上万的员工的考勤信息,每一个员工也可能有多个不同方面的考勤信息,当管理人员或者员工个人需要找某一个特定员工考勤信息时,如果逐一查询,这可定是不可能的,也是很不合理的,员工考勤信息查询模块可以准确的查找特定员工的考勤信息,或者特定员工的某一方面的考勤信息。

    8.3.2.2  公司财务信息管理

     

    公司财务部

    员工工资管理

    商品销售业绩

    商品采购费用

    业绩显示

    业绩删除

    工资修改

    工资删除

    工资添加

    工资查询

    费用显示

     

     

    图8-3 财务信息结构图

    (1)员工工资信息管理   

    员工工资信息添加:作为企业的一员,当付出劳动时,企业也一定要对他们做出回报,工资管理,就是企业对员工物质奖励的最好表示,员工工资添加模块可以快速的对企业所有员工的工资做出具体详细的管理。

    员工工资信息修改:企业中工资管理偶尔也会发生各种错误,这就需要管理人员能及时的做出修改,员工工资修改模块可以准确的修改某一个具体员工的工资信息。

    员工工资信息删除:当企业员工离职时,或者经过一段时间后,会发现员工工资表中一些信息时无用的,员工工资删除模块可以解决这样的问题。

    员工工资信息的查询:当企业管理人员要准确的知道某一个员工,某一具体时间的工资是,就会发现工资查询时很必要的,工资查询正是针对这一问题提出的。

    (2)商品销售业绩信息管理   

    商品销售业绩显示:商品业绩显示可以很好的反应公司的运营情况。使得决策人员可以准确的做出相应的决策。

    商品销售业绩删除:随着时间的推移有很多的商品销售信息时冗余的,这就需要管理人员对各种信息经过判断之后做出删除。商品销售业绩删除功能能尽最大可能满足管理人员的需要。

    (3)商品采购费用信息管理   

    商品采购费用显示:当公司采购部每采购一批商品是,都要将信息及时的反应到企业财务部,使得企业财务管理人员对企业帐目有章可循。一个企业为了使员工高效,积极的实现企业下达的各种任务,这就需要各种监督措施,其中员工考勤信息管理正可以实现对员工的督促和鼓励作用,其次,也可以作为各项奖励的标准,员工考勤添加模块可以实现对每一个员工各个方面的考察。

    8.3.2.3  商品采购部信息管理

     

    商品采购部

    商品类型信息管理

    商品详细信息管理

    供应商厂家管理

    供应商联系人管理

    商品采购信息管理

     图8-4 商品采购结构简单结构图

     

    (1)商品类型信息管理   

    商品类型信息添加:为了对商品做出合理的管理商品类型信息的添加是很必要的。

    商品类型信息修改:根据商品编号可以查询商品详细信息,然后修改商品的所有信息。

    商品类型信息删除:根据商品类型编号可以删除该商品的类型信息。

    (2)商品详细信息管理   

    商品信息添加:作为超市综合管理系统,商品信息的管理是很重要的每当采购部门采购到新的商品是商品信息就要增加。超市也可能因为其它原因增加商品信息,商品添加模块都可以做出快捷的解决方案。

    商品信息删除:当企业经营策略发生改变时,商品信息也会相应的发生改变,商品信息删除模块可以使商品信息跟随经营而改变。

    商品信息修改:商品信息的变化是瞬间千变万化的,同一个商品随时间的不同,它的具体信息也是不同的,只有实时的调整才能适应市场的变化,商品信息修改使该变化的最佳方案。

    商品信息查询:在成千上万种商品种,如果人为寻找某一个商品肯定是不可能的,只有通过商品信息查询模块才能为用户或管理人员解决这个难题。

    (3)商品供应商厂家信息管理   

    商品供应商厂家信息添加:“诚信“是当前企业管理的管理,以诚信建立的企业与企业之间的关系是种巨大的财富,如何保留这种财富,创造这种财富,商品供应商厂家信息可以大量的存储这种信息。

    商品供应商厂家信息修改:每一个企业的信息随时间都会有或多或少的改变,商品供应商厂家信息修改可以适应这种变化。

    商品供应商厂家信息删除:企业倒闭或者经营策略的改变,当它对超市商品的供应没有作用时,商品供应商厂家信息的删除是正常的。

    商品供应商厂家信息查询。

    (4)商品供应商联系人信息管理    商品供应商毕竟是一种抽象的信息,只有通过商品供应商联系人这种载体,才能充分的利用,商品供应商联系人管理可以完成如下任务:

    商品供应商联系人信息添加;

    商品供应商联系人信息修改;

    商品供应商联系人信息删除;

    商品供应商联系人信息查询。

    (5)商品采购信息管理    商品是维系超市正常运行的必要条件,商品采购是维持这一活动必不可少的条件,商品采购信息管理可以高效的实现它,包含的功能如下:

    商品采购信息添加;

    商品采购信息修改;

    商品采购信息删除;

    商品采购信息查询。

    8.3.2.4  商品销售部信息管理

     

    商品销售部

    商品信息显示

    商品销售管理

    商品订单管理

     

     

    图8-5 商品销售结构图

    商品销售信息管理:作为一个超市正是为出售商品而存在的,因此销售管理显得尤为重要,商品销售模块正是它的重要组成部分。

    商品购物清单管理:每次购物后,如果结帐则系统自动生成购物清单。

    8.3.2.5  用户权限及个人密码修改

    用户权限修改:超市综合管理信息系统中,肯定存在各种不同角色,不同的角色就应该有不同的权限,而只有超级管理员才有角色赋予权利。

    用户密码的修改:为了系统的安全,用户的应该只有用户个人才能修改,这不仅保证了整个公司的利益也保护了个人隐私。

    8.4  系统模块实现

    该超市综合管理信息系统按照MVC模式开发,因此在此部分按照MVC模式开发顺序描述系统的实现。

    8.4.1  底层数据库

     

    Jsp页面

    商务逻辑bean

    数据库操作bean

    数据存取bean

    底层数据库

     

     

    图8-6 系统MVC模式结构

    在需求分析文档和总体设计文档里均对底层数据库有所介绍,在此部分仅说明底层数据库的实现,其他描述不再赘述。

    8.4.1.1  创建数据库

    数据库管理系统采用SQLServer2000,系统开发采用JSP技术。按照数据库的规范化开发模式,建立数据库经历了以下几个步骤。

    (1)需求分析阶段    需求收集和分析,结果得到数据字典描述的数据需求。详见需求分析部分。

    (2)概念结构设计阶段    通过对用户需求进行综合、归纳与抽象,形成一个独立于具体的DBMS。

    的概念模型,详见总体设计—数据库设计部分。

    (3)逻辑结构设计    该阶段将概念结构转换为某个DBMS所支持的数据模型(例如关系模型),并对其进行优化。

    (4)数据库物理设计    该阶段为逻辑数据模型选取一个最适合应用环境的物理结构(包括存储结构和存取方法)。

    (5)数据库实施阶段    根据逻辑设计和物理设计的结果建立数据库、编制与调试应用程序、组织数据入库、并进行调试,在SQLServer2000操作界面中按照以下步骤进行:

    新建数据库managermentDB—〉新建数据表(前文提到的11张表)—〉设计表结构(设置属性列名及其数据类型等)详见总体设计数据库设计部分—〉数据入库:各表数据入库方式如下所示:

    ·users(用户信息表)数据内容在用户登陆时,从用户交互页面index.jsp由用户自行填入,经过login_comfirm.jsp确认,如果提交的数据合理,则按照用户的类型进入不同的页面,如果错误,则提示出错,返回到用户的登陆页面。

    ·Employees(用户信息表)企业员工的详细信息主要由人力资源不仅管理,一般是由人力资源部负责人在employee_insert.jsp页面操作录入的,同时employee_del.jsp可以删除该表的信息,employee_update.jsp可以修改该表的信息。

    ·Departments(员工部门信息表)数据内容为员工部门的分类,除非系统内企业结构发生改变外,从建立数据库开始一般是不再更改的。

    ·Salary(员工工资信息表)数据内容完全由财务部负责人录入,登陆普通员工仅有查询权限。Salary_insert.jsp是员工工资的录入界面,Salary_update.jsp是员工工资的修改界面,Salary_del.jsp是员工工资的删除界面。

    ·Evalution(员工考勤信息表)员工的考勤信息是由人力资源部负责管理的,Evalution_insert.jap是员工考勤信息的录入界面,Evalution_update.jsp是员工考勤信息的修改界面,Evalution_del.jsp是员工考勤信息的删除界面。

    ·Protype(商品类型信息表)数据内容为商品类型信息的分类,除非企业经营策略发生改变外,从建立数据库开始一般是不再更改的。

    ·Checkout(商品销售信息表)数据内容完全由商品销售部负责人根据商品的销售情况自动生成,财务管理人员有权进行删除和查看。

    ·Product(商品详细信息表)商品的详细信息是由商品采购部负责管理的,Product_insert.jap是商品详细信息的录入界面,Product _update.jsp是商品详细信息的修改界面,Product _del.jsp是商品详细信息的删除界面。

    ·Supplyer(商品供应商厂家信息表)数据内容由商品采购部负责管理的,Supplyer _insert.jap是商品供应商厂家详细信息的录入界面,Supplyer _update.jsp是商品供应商厂家详细信息的修改界面,Supplyer _del.jsp是商品供应商厂家详细信息的删除界面。

    ·Saler(商品供应商联系人信息表)数据内容完全由商品采购部部负责人负责的,系统超级管理人员有权进行对它的编辑,Saler _insert.jap是商品供应商联系人详细信息的录入界面,Saler _update.jsp是商品供应商联系人详细信息的修改界面,Saler _del.jsp是商品供应商联系人详细信息的删除界面。

    ·Purchase(商品采购信息表)商品采购的详细信息是由商品采购部负责管理的,Purchase _insert.jap是商品采购详细信息的录入界面,Purchase _update.jsp是商品采购信息的修改界面,Purchase _del.jsp是商品采购信息的删除界面。

    8.4.1.2  数据库的连接

    使用JSP+Java Bean开发的电子商务网络购物系统,在连接数据库是有两种选择。第一种是通过ODBC做为“桥”(Bridge)对数据库访问,第二种是直接对数据库访问。我选用了第二种方式连接数据库。因为,第二种方法可以高效快速的实现数据库的操作,并且在某一个具体的事务中只需要一次数据的建立连接操作,在以后,对数据库进行操作时,系统后台不需要建立连接,这样就极大的提高了系统的效率。

    8.4.2  数据库操作Bean

    8.4.2.1  说明

    位于底层数据库之上的第二层数据库操作bean, 负责数据库的连接,数据库的一些设置,及其相关必要的操作安全与转化。在这一层bean中封装的是连接数据库的操作。

    8.4.2.2.代码实现

    (1)这一部分代码封装在DataBase.java中,其框架结构如下:

    public class DataBase()中

    private String dbUrl =  "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=ManagermentDB";

    private  String dbUser = "ren";

    private  String dbPwd = "ren"; 

    public  getConnection(dbUrl,dbUser,dbPwd) throws Exception{}

    //建立数据库连接

    public  closeConnection(Connection con)  throws Exception{}

    //关闭数据库连接

    public closePrepStmt(PreparedStatement prepStmt) throws Exception{}

    //关闭预处理记录集

    public  closeResultSet(ResultSet rs)    throws Exception{}

    //关闭记录集

    (2)具体主要代码解释说明    调有系统函数,获得数据库连接

    public Connection getConnection()throws Exception{

          return java.sql.DriverManager.getConnection(dbUrl,dbUser,dbPwd);

      }

    关闭实据库的连接

       public void closeConnection(Connection con){

        try{

            if(con!=null) con.close();

          }catch(Exception e){

            e.printStackTrace();

          }

      }

    调有系统函数,关闭的数据库连接,当数据库的连接为空时,产生异常,当数据库连接不为空时,关闭数据库的连接。

    关闭预处理记录

    public void closePrepStmt(PreparedStatement prepStmt){

        try{

            if(prepStmt!=null) prepStmt.close();

          }catch(Exception e){

            e.printStackTrace();

          }

      }

    调有系统函数,关闭的记录集预处理,当数记录集的预处理为空时,产生异常,当数记录集的预处理不为空时,关闭预处理集合。

    关闭记录集

    public void closeResultSet(ResultSet rs){

        try{

            if(rs!=null) rs.close();

          }catch(Exception e){

            e.printStackTrace();

          }

      }

    调有系统函数,关闭的记录集,当数记录集为空时,产生异常,当数记录集不为空时,关闭当前记录集合。

    在每一次进行数据库操作时都要进行以下操作

          DataBase database = new DataBase();

          boolean result = false;

           Connection con = null;

          PreparedStatement prepStmt = null;

          ResultSet rs=null;

           try { con = database.getConnection();                           

            String sql =””;

    prepStmt = con.prepareStatement(sql);

            result = prepStmt.execute(sql);

    }

     catch( SQLException ex )

                 {

                        ex.printStackTrace( System.err );

                        return false;

                 }

           finally{          database.closeResultSet(rs);

                 database.closePrepStmt(prepStmt);

                 database.closeConnection(con);

               }

       return result;

          }

    在对数据库进行操作时,首先定义一个连接对象,和记录集对象,然后进行数据库连接,只有建立连接后才可以进行数据库的操作,每当操作完数据库后都应该调有关闭当前记录集的函数,同时调用关闭数据库连接的函数,这样才可以保证下一次对数据库进行操作时不会发生异常。

    8.4.3  数据存取Bean

     数据存取bean是和数据库结构相对应的,本系统采用的结构是每一个数据库视图对应一个数据存取bean .这一层次的Java Bean 封装了对相应数据库的基本操Insert(),Delete(),Update()等,以及使用get(),set()方法对属性列进行设置和获得。

    表8-1 数据库表与数据存取bean的关系清单

    数据库表名称

    相应的数据存取bean

    Protype(商品类型表)

    ProtypeBean.java,Protype.java

    Product(商品信息表)

    Product.java, ProductBean.java

    Checkout(商品销售信息表)

    Checkout.java

    Users(用户登陆表)

    Users.java

    Employees(员工信息表)

    Employees.java, EmployeesBean.java

    Departments(部门信息表)

    Departments.java, DepartmentsBean.java

    Salary(员工工资信息表)

    SalaryBean.java

    Evalution(员工考勤表)

    Evalution.java

    Supplyer(供应商厂家信息表)

    Supplyer.java

    Saler(供应商联系人信息表)

    Saler.java

    Purchase(商品采购信息表)

    Purchase.java

    数据存取bean的实现:各个数据存取模块的编写方法是大同小异的,它们主要实现对数据库的操作,下面仅以一个例子简单介绍一下:

    ProductBean.java——Product表;

    封装的主要方法:

    public Product getProductDetails(String ProId){}//商品列表方法;

    编写说明:在销售负责人进入系统后当需要查询某一个商品详细信息时,通过点击商品查询进入商品的查询页面,输入商品的编号,进行查询。此时商品id作为参数传入Bean,查询数据库的商品信息表获得此类别商品的全部信息。

    SQL语句:String sql =select *"+"from  Product where ProId =?

    返回所有商品信息:if (rs.next()) {

             Product  product=new Product(rs.getString("Proid");

              ……  ……  ……  ……

    Return Product;

    }

    public void setItem(){} //获取购物车种物品信息。

    编写说明:此方法主要通过初始化的方式返回商品所有属性信息。

    例如:this.goods_id = goods_id。

    8.4.5  商务逻辑bean

    这一层次的java bean主要是用来进行数据处理的,并且维护商务活动。相应的,在超市综合管理信息系统中,其主要作用主要用于人事管理,商品采购管理,商品销售管理,公司财务信息管理,购物车,订单等几大模块。包括ShopCart.java,ShopCartItem.java,Product.java等多个java bean。

    8.4.6  JSP页面

    JSP页面作为外部用户的接口,一般要求美观,大方,操作简单,容错性较好,由于Jsp页面本身较为简单,在这里将不详细介绍。

    8.5  Java Bean特别说明:

    8.5.1  基本方法

    以上几个层次的Java Bean中都有实现相同功能的基本方法,现统一说明:

    为了操作数据库,在Java Bean内外定义的变量需要通过某些方法来通信,进行设置和读取,因此定义了set(…);get( );方法。当要设置java bean中变量时,使用set(…)方法,取出时用get( )方法。

    例如:  public void setUsername(String username) {

            this.username = username; }

    //设置bean中的username.通常this.用来标识bean内的当前对象。

    public String getUsername() {

            return this.username;

      }

    8.5.2  重要语句

    说明:每一个操作数据库的方法必须包括两条重要语句。

    Statement stmt=conn.createStatement();[9]

    SQL语句要通过Statement类来发送, Statement类的对象由createStatement方法创建,用于一般查询语句的执行.

    ResultSet rs=stmt.executeQuery();

    SQL语句发送后,返回的结果通常存放在一个ResultSet类的对象中,ResultSet可以看作是一个表,这个表包含由SQL返回的列名和相应的值,ResultSet对象中维持了一个指向当前行的指针,通过一系列的rs.get()方法,可以检索当前行的各个列,从而显示出来。当Statement对象执行的是对数据库的插入,删除操作时,通常直接用stmt.execute (sql)语句而不再返回结果值。

    8.5.3  Java Bean之间的通信

    在同一个包中的Java Bean可以直接进行相互通信。例如ShopCart.java和ShopCartItem.java.在ShopCart.java中使用ShopCartItem item = getItem(i)。

    同一个包中的Java Bean可以直接使用彼此间的对象调用其内部方法,无需再文件开头使用import。

    8.6  本章小结

    本章详细的介绍了实现该系统各个方面的要求和具体细节,另一方面具体的应用了MVC框架,并且对框架的每层做了具体详细了描述,在本章的最后对于系统所用到的JavaBean技术做了特别详细的介绍,这是因为它是本系统的核心部分。

     

    9章  编码及调试

    9.1  编码总述

    中型超市综合管理信息系统的开发共包括JSP文件121个,Java文件38个,代码比较复杂,无法详细论述所有的程序代码,在此只将开发过程中遇到困难的地方和比较有个人特色的地方代码片断阐述一下。

    9.2  程序亮点

    (1)方法选择    在选择购物车的编写方法时,我查阅了很多参考资料。购物车的编写基本上有三种常见方法:DB, session, cookie。

    DB数据库:用户对购物车的操作可以和数据库的操作一一对应起来。这种方法最大的特点就是直观,但是过分依赖数据库,使其使用效率很低。

    Session:这种形式是将用户的购买的商品的信息保存在一个session bean中,在用户的一次登陆过程中都是有效的。这种方式提取数据快速,数据操作检索方便,但是会消耗很多的服务器的内存。

    Cookie:cookies是通过浏览器将信息保存在客户端,这种方法的安全性和效率都是最好的。但这个时候就要求客户的浏览器必须设置成cookies的开启,这是这种方式最大的障碍。   

    最终我选择了使用session,因为这个方法和其他几类相比起来更加常见也更加简单方便。

    (2)代码编写    ShopCart.java作为session bean,使用其对象cart,在scopt=session的生存期内,操作数据bean .见前文。

    9.3  JSP页面调试过程

    通常先调试语法错误,然后调试Servlet错误,最后是逻辑错误。

    (1)调试过程    首先在dreamweaver中编写程序代码,将其保存。打开tomcat服务器,在ie标题栏输入http://localhost:8080//…后接文件名,即可开始调试。如果有语法错误存在,就无法打开该网页并有错误提示显示错误位于第几行。当改正了全部的语法错误以后,如果还不能运行,证明有Servlet错误存在。

    (2)通常采用的调试方法    语法错误按照页面提示的错误出现位置进行修改错误。

    Servlet错误无法直接显示所在的位置,在tomcat文件夹下沿路径C:\Program Files\Apache Software Foundation\Tomcat 5.0\managerment

    \Catalina\localhost\_\org\apache\jsp,可以找到***.jsp.java文件,为系统程序的Servlet文件。在错误提示中显示在Servlet文件中的错误位置,可以寻找错误。

    逻辑错误的修改需要根据程序仔细推敲修改。

    9.4  本章小结

    本章较为简单的介绍了系统编码和该系统中所用到的调试方法,在编码中主要介绍了购物车中的关键技术,至于程序调试方法,介绍了常用的几种程序测试方法。

     

    10章  超市管理系统测试

    10.1  简介

    测试是程序设计的重要环节,为了进一步规范的测试工作,为软件测试工作提供详细的指引,以提高软件开发工作的质量,制定测试规范。

    10.2  测试内容

    10.2.1  功能测试

    (1)每一个页面的功能键、触发键、按钮、菜单、选择项功能正确。

    (2)多个页面之间切换正确。测试实例:用鼠标和快捷键在不同的菜单之间切换;

    (3)每个页面的表单提交是否正确

    (4)每页javascript能否正确运行

    10.2.2  正确性测试

    (1)从index.jsp进入系统开始,分别按照用户的不同权限浏览整个系统。

    管理员—人事管理模块,公司财务管理模块,商品采购管理模块,商品销售管理模块,个人信息管理模块,依次检查各个模块的功能。在浏览过程中查看各个模块是否可以按照预期标准实现。

    (2)有写/删除操作的程序,写/删除操作的结果正确,测试时应该手工打开数据库表,以检查写/删除的效果。测试实例:选择会员注册,按照正常流程注册一个新用户。打开数据库表,看能否写入数据库。其他定单等对数据库的操作也按照这个方法进行。

    (3)对照管理员权限检查权限于操作能否一致。

    10.2.3  可靠性测试

    (1)非法键容错测试    在不同的画面,不同的字段处输入非法键,被测试程序应有非法键容错能力。测试实例:在注册页面和订单生成页面,如果没有按照表单要求输入信息,将弹出警告对话框。

    (2)异常数据容错测试    在不同的画面,不同的字段输入异常数据,被测试程序应有异常数据容错能力。在本系统中,各个JavaBean中的每个主要方法都有捕获错误的语句,JSP程序中也有容错功能。

    (3)程序负作用检查    检查退出被测试程序后应恢复到进入前的系统状态,不应影响其它程序的正确运行。

    10.3  软件测试报告

    项目编号:01                 项目名称:中型超市综合管理信息系统

    编程员:任晓明               测试完成日期:2006年6月16日

    安装:                                   是                否

    (1)程序运行环境已经正确设定             √

    (2)程序代码检查:            

    ①程序单位首部有程序说明和修改备注   √

    ②变量、过程、函数命令符合规则       √

    ③程序中有足够的说明信息                                 √

    ④修改注释符合要求                   √

    ⑤类库的使用符合要求                 √

    (3)页面格式检查:

    ①画面和报表格式符合规定需求         √

    ②程序命名符合格式需求               √

    (4)功能测试:

    ①多画面之间切换正确                 √

    ②功能键、触发键、按钮、

    菜单、选择项功能正确                 √

    ③数据项关联及限制功能正确           √

    (5)测试内容:       

    ①正确性测试:

    a. 用户前台各模块正确实现        √

    b. 数据库操作正确                  √

    ②可靠性测试:

    a. 非法键容错测试                    √

    b.异常字符容错测试                   √

     

    10.4  本章小结

    本章简单的介绍了系统的测试方法,以及测试中应该注意那些方面。

     

    中小型超市综合管理信息系统的开发是在WindowXP平台上,以JSP+JavaBean为前台,采用SQL Server 2000作为数据库管理系统管理后台数据库。本系统是超市信息管理建设中必不可少的一部分,它实现了现代管理信息系统的大部分功能需要。使用本系统可以使企业管理更加方便快捷,合理的页面设计也使得这个企业用户充分享受到未来基于Internet管理信息系统的优越。

    本系统开发说明:

    (1)功能完备    在开发初期,查看了大量关于电子商务,管理信息系统,J2EE等方面的资料,同时借鉴了很多其他电子商务网站和管理信息的流程。经过总结,确定了满足需求分析的基本模块。系统总体设计上实现了整个系统模块的划分,系统主要包含5大模块,分别是:人事管理信息,企业财务管理,商品采购管理,商品销售管理,个人信息咨询,基本上实现了综合管理系统的所有功能。 

    (2)界面友好    系统用户登陆到管理页面后,每页有导航和引领的作用。系统根据用户角色的不同,直接进入不同的管理页面,同时导航条方便快捷的引导用户进行各种合理的操作。

    (3)管理科学    本系统一开始就从管理学的角度做出了详细细致的考虑,后来有参考了ERP,现代电子商务管理等,最后才做出了系统总体设计,同时在设计中也遵循现代企业管理的理念,因此可以讲该系统是较为科学的。

    这一次独立开发综合管理信息系统,从开始拿到课题的困惑到最终完成了一个自己还算满意的作品,我学到了很多很多东西。需求分析—>系统架构设计—>总体模块设计—>详细模块设计—>编码—>调试测试,按照这个步骤一步一步走过来,我的进度可以说是相对比较慢的。而且中间有过很多次的反复,几乎每一个细节模块都经历过否定和重新编写。即使再写论文的过程中,我仍然在不断的修改完善系统程序。后台管理部分就是在后期制作完成的。几个月的不断磨练,我最大的收获除了学到了真正可以应用的知识外,更重要的是激发了自己对Java和JSP的强烈兴趣。

    由于第一次开发大型应用程序,而且使用了当前比较新的网络编程语言和数据库管理系统,整个系统的实现还很稚嫩有很多需要完善和提高的地方。整个开发过程给我留下的收获实在太多了,为今后在技术上的发展打下了一个好的基础,同时也是一个好的开端。

     

     

    参考文献

    1  Vivek Sharma,Rajiv Sharma.电子商务网站开发指南.清华大学出版社.2002

    2  徐明,采振祥.电子商务系统设计与实现.中国科学技术大学出版社. 2001

    3  都志辉.JSP编程实践――动态网页的引擎.清华大学出版社.2002.9

    4  黄静舒,黄浩文.JSP核心技术和电子商务应用实例.机械工业出社.2001.3

    5  胡大奎,陈酌.JSP高级开发技术.中国水利水电出版社.2001.7

    6  王迪华.JSP/Servlet——基于Java的最新网站建设工具.清华大学出版社.2001

    7  蒋民.JavaScript实例、技巧与应用.清华大学出版社.2003.4

    8  魏江江.JavaScript网页特效编程百例通.科学出版社.2003.3

    9  孙一林.Java数据库编程实例.电子工业出版社.2003.10

    10  周明涛.Dreamweaver MX网页设计指南.机械工业出版社.2002

    11  袁鹏飞.SQL Sever 数据库应用开发技术.人民邮电出版社.1999

    12  王宏.SQL Sever2000数据库管理.北京-人民邮电出版社  .2001

    13  施伯乐,丁宝康.数据库系统教程.高等教育出版社.1999.12

    14  张海藩,软件工程导论,清华大学出版社,2001

    15  网冠科技.HTML4.0时尚编程百例.北京.机械工业出版社.2001.6

    16  HTML JavaScript与Java完全实战演练.曹建.北京.电子工业出版         社.2001.1

     

    毕业设计过程中,孙胜涛老师在百忙中为我提供了很多帮助。首先在选题上,孙老师给了我充分的自由度,让我选择了一个自己感兴趣的课题。兴趣往往成为奋斗的动力,后来几个月坚持不懈地努力是和这令人兴奋的开始分不开的。而后的设计过程中,孙老师始终关心我的进度和困难。孙老师的工作非常繁忙,很多时候我怕耽误他的时间而不好意思去打扰,但是老师总是在我出现问题是及时的出现在我的面前,有时用电话为我解决设计中的困难。他耐心细致,一丝不苟的对待人和事的精神令人十分感动。

    另外,感谢同宿舍的董建权同学,在毕业设计过程中始终帮助我,给了我很多指导,也牺牲自己的很多时间帮助我调试程序。很多同学都在毕业设计的过程中给予我帮助,使我掌握很多必要信息。

    至此,本课题圆满完成,感谢燕山大学给了我这样的学习环境,我深深地感谢老师们认真负责的教导,感谢信息工程学院所有老师给我的点点滴滴,感谢我的朋友们给我的不厌其烦的帮助和照顾。这个团结温暖的集体,必将是我人生走向成功的起点和永远支柱。

     

     

    更多相关内容
  • 本系统采用B/S模式,主要开发工具为Eclipse(Oxygen.1a Release),用到的编程语言有Java、JavaScript和JSP,数据库采用MySQL 5.7,服务器则用的Apache Tomcat 9.0。前端页面的编写基于bootstrap,整个项目基于SSM...
  • 在说明我要做的事情事前我还是想和大家一下毕业做毕设时候遇到的那些坑。 第一点,如果你当时正在实习阶段,学校老师要求你回学校做毕设,这时候你就得注意了,你先看看时间距离毕业还有多长时间。如果时间很快...

    嗨,大家好,我是山谷。

           这是我第一次来到CSDN,也是苦于之前在学校的毕设碰到的一堆乱起八糟的事。所以现在就是想为大家做点事情。在说明我要做的事情事前我还是想和大家说一下毕业做毕设的时候遇到的那些坑。

          第一点,如果你当时正在实习阶段,学校老师要求你回学校做毕设,这时候你就得注意了,你先看看时间距离毕业还有多长时间。如果时间很快了,你就可以选择去学校做毕设了。如果时间还早。这时候就千万不能听老师的  说不回去会怎么样 。我当时就就听了老师的话就把工作给辞掉了回去做毕设。

          第二点,就是我当时去学校的时候想着自己毕竟学了计算机的。不就是做个计算机项目吗。有那么难。于是就开始了我的苦逼之路。说一下我当时的感受。可能是我学的不怎么样 。当时做的时候就遇到好多问题需要自己去想。比如你在设计一个项目之前得考虑一下数据库怎么设计,  需要用到几张表, 前端需要用什么技术, 后端需要用什么技术, 不过这些东西网上都有,  但对于当时的我想着自己弄一弄,  就感觉很麻烦, 于是便有了我从网上买的想法。

         第三点,我当时也是从网上搜索找了好长时间。我当时的目的就是快并且靠谱就行。正好当时碰见我的一个朋友认识一个人,就从那个人手里买了一套,顿时觉得后顾无忧了。可是到我拿到项目的时候遇到问题时 我想请教一下那个人。结果人家好几天不搭理  终于搭理我了 还和我说我们这不做售后处理,  如果有问题咨询或者是项目出现问题 ,我们会有咨询费什么的,  当时都感到无语了。

         我想请大家注意的是 ,如果有时间做的话可以自己做。没有时间的话也得找一个靠谱的有售后的来做。别最后一地鸡毛。

    从那以后感觉想为大家做点事 ,下边是我总结的一个项目 ,如果对你有帮助可以参考一下 

    [含论文+源码等]ssm实现的酒店管理系统[包运行成功]

    《ssm实现的酒店管理系统》该项目采用技术jsp、SpringMVC、Spring、Mybatis、echarts、easyui、h-ui、jquery、tomcat服务器、mysql数据库 开发工具eclipse,项目含有源码、论文、配套开发软件、软件安装教程、项目发布教程

      下边是我当时做的一些截图:包括前台和后台的管理的小型项目

     

     

     获取此项目资源可以直接加我微信 2991844899  希望能给大家提供帮助

    想要获取别的资源的可以直接访问  https://dgu.h5.xeknow.com/s/3npUZx

    展开全文
  • 老套路,学习某一门技术或者框架的时候,第一步当然是要了解下面这几样东西。 是什么?有哪些特点?有哪些应用场景?有哪些成功使用的案例?…为了让你更好地了解 Netty 以及它诞生的原因,先从传统的网络编程说起吧...

    老套路,学习某一门技术或者框架的时候,第一步当然是要了解下面这几样东西。

    是什么?有哪些特点?有哪些应用场景?有哪些成功使用的案例?…为了让你更好地了解 Netty 以及它诞生的原因,先从传统的网络编程说起吧!

    还是要从 BIO 说起

    传统的阻塞式通信流程

    早期的 Java 网络相关的 API(java.net包) 使用 Socket(套接字)进行网络通信,不过只支持阻塞函数使用。

    要通过互联网进行通信,至少需要一对套接字:

    运行于服务器端的 Server Socket。运行于客户机端的 Client SocketSocket 网络通信过程如下图所示:

    image.png

    Socket 网络通信过程简单来说分为下面 4 步:

    建立服务端并且监听客户端请求客户端请求,服务端和客户端建立连接两端之间可以传递数据关闭资源对应到服务端和客户端的话,是下面这样的。

    服务器端:

    创建 ServerSocket 对象并且绑定地址(ip)和端口号(port):server.bind(new InetSocketAddress(host, port))通过 accept()方法监听客户端请求连接建立后,通过输入流读取客户端发送的请求信息通过输出流向客户端发送响应信息关闭相关资源客户端:

    创建Socket 对象并且连接指定的服务器的地址(ip)和端口号(port):socket.connect(inetSocketAddress)连接建立后,通过输出流向服务器端发送请求信息通过输入流获取服务器响应的信息关闭相关资源一个简单的 demo

    为了便于理解,我写了一个简单的代码帮助各位老铁理解一下。

    服务端:

    public class HelloServer {
    private static final Logger logger = LoggerFactory.getLogger(HelloServer.class); public void start(int port)
    {
    //1.创建 ServerSocket 对象并且绑定一个端口 try (ServerSocket server = new ServerSocket(port)😉
    {
    Socket socket; //2.通过 accept()方法监听客户端请求, 这个方法会一直阻塞到有一个连接建立
    while ((socket = server.accept()) != null)
    {
    logger.info(“client connected”);
    try (ObjectInputStream objectInputStream = new ObjectInputStream(socket.getInputStream());
    ObjectOutputStream objectOutputStream = new ObjectOutputStream(socket.getOutputStream()))
    {
    //3.通过输入流读取客户端发送的请求信息 Message
    message = (Message) objectInputStream.readObject();
    logger.info(“server receive message:” + message.getContent());
    message.setContent(“new content”);
    //4.通过输出流向客户端发送响应信息 objectOutputStream.writeObject(message);
    objectOutputStream.flush();
    }
    catch (IOException | ClassNotFoundException e)
    {
    logger.error(“occur exception:”, e);
    }
    }
    }
    catch (IOException e)
    {
    logger.error(“occur IOException:”, e);
    }
    } public static void main(String[] args)
    {
    HelloServer helloServer = new HelloServer();
    helloServer.start(6666);
    }
    }
    ServerSocket 的 accept() 方法是阻塞方法,也就是说 ServerSocket 在调用 accept()等待客户端的连接请求时会阻塞,直到收到客户端发送的连接请求才会继续往下执行代码,因此我们需要要为每个 Socket 连接开启一个线程(可以通过线程池来做)。

    上述服务端的代码只是为了演示,并没有考虑多个客户端连接并发的情况。

    客户端:

    /** * @author shuang.kou * @createTime 2022年04月1日 16:56:00 */
    public class HelloClient {
    private static final Logger logger = LoggerFactory.getLogger(HelloClient.class);
    public Object send(Message message, String host, int port)
    {
    //1. 创建Socket对象并且指定服务器的地址和端口号
    try (Socket socket = new Socket(host, port))
    {
    ObjectOutputStream objectOutputStream = new ObjectOutputStream(socket.getOutputStream());
    //2.通过输出流向服务器端发送请求信息
    objectOutputStream.writeObject(message);
    //3.通过输入流获取服务器响应的信息
    ObjectInputStream objectInputStream = new ObjectInputStream(socket.getInputStream());
    return objectInputStream.readObject();
    }
    catch (IOException | ClassNotFoundException e)
    {
    logger.error(“occur exception:”, e);
    }
    return null;
    }
    public static void main(String[] args)
    {
    HelloClient helloClient = new HelloClient();
    helloClient.send(new Message(“content from client”), “127.0.0.1”, 6666);
    System.out.println(“client receive message:” + message.getContent());
    }
    }
    发送的消息实体类:

    /** * @author shuang.kou * @createTime 2020年05月11日 17:02:00 */@Data@AllArgsConstructorpublic class Message implements Serializable { private String content;}首先运行服务端,然后再运行客户端,控制台输出如下:

    服务端:

    [main] INFO github.javaguide.socket.HelloServer - client connected[main] INFO github.javaguide.socket.HelloServer - server receive message:content from client客户端:

    client receive message:new content资源消耗严重的问题

    很明显,我上面演示的代码片段有一个很严重的问题:只能同时处理一个客户端的连接,如果需要管理多个客户端的话,就需要为我们请求的客户端单独创建一个线程。如下图所示:

    image.png

    对应的 Java 代码可能是下面这样的:

    new Thread(() -> { // 创建 socket 连接}).start();但是,这样会导致一个很严重的问题:资源浪费。

    我们知道线程是很宝贵的资源,如果我们为每一次连接都用一个线程处理的话,就会导致线程越来越好,最好达到了极限之后,就无法再创建线程处理请求了。处理的不好的话,甚至可能直接就宕机掉了。

    很多人就会问了:那有没有改进的方法呢?

    线程池虽可以改善,但终究未从根本解决问题

    当然有!比较简单并且实际的改进方法就是使用线程池。线程池还可以让线程的创建和回收成本相对较低,并且我们可以指定线程池的可创建线程的最大数量,这样就不会导致线程创建过多,机器资源被不合理消耗。

    ThreadFactory threadFactory = Executors.defaultThreadFactory();
    ExecutorService threadPool = new ThreadPoolExecutor(10, 100, 1, TimeUnit.MINUTES, new ArrayBlockingQueue<>(100), threadFactory);threadPool.execute(() ->
    {
    // 创建 socket 连接 });但是,即使你再怎么优化和改变。也改变不了它的底层仍然是同步阻塞的 BIO 模型的事实,因此无法从根本上解决问题。

    为了解决上述的问题,Java 1.4 中引入了 NIO ,一种同步非阻塞的 I/O 模型。

    再看 NIO

    Netty 实际上就基于 Java NIO 技术封装完善之后得到一个高性能框架,熟悉 NIO 的基本概念对于学习和更好地理解 Netty 还是很有必要的!

    初识 NIO

    NIO 是一种同步非阻塞的 I/O 模型,在 Java 1.4 中引入了 NIO 框架,对应 java.nio包,提供了 Channel , Selector,Buffer 等抽象。

    NIO 中的 N 可以理解为 Non-blocking,已经不在是 New 了(已经出来很长时间了)。

    NIO 支持面向缓冲(Buffer)的,基于通道(Channel)的 I/O 操作方法。

    NIO 提供了与传统 BIO 模型中的 Socket 和 ServerSocket 相对应的 SocketChannel和 ServerSocketChannel 两种不同的套接字通道实现,两种通道都支持阻塞和非阻塞两种模式:

    阻塞模式 : 基本不会被使用到。使用起来就像传统的网络编程一样,比较简单,但是性能和可靠性都不好。对于低负载、低并发的应用程序,勉强可以用一下以提升开发速率和更好的维护性非阻塞模式 :与阻塞模式正好相反,非阻塞模式对于高负载、高并发的(网络)应用来说非常友好,但是编程麻烦,这个是大部分人诟病的地方。所以, 也就导致了 Netty 的诞生。NIO 核心组件解读

    NIO 包含下面几个核心的组件:

    ChannelBufferSelectorSelection Key这些组件之间的关系是怎么的呢?

    image.png

    NIO 使用 Channel(通道)和 Buffer(缓冲区)传输数据,数据总是从缓冲区写入通道,并从通道读取到缓冲区。在面向流的 I/O 中,可以将数据直接写入或者将数据直接读到 Stream 对象中。在 NIO 库中,所有数据都是通过 Buffer(缓冲区)处理的。Channel 可以看作是 Netty 的网络操作抽象类,对应于 JDK 底层的 SocketNIO 利用 Selector (选择器)来监视多个通道的对象,如数据到达,连接打开等。因此,单线程可以监视多个通道中的数据。当我们将 Channel 注册到 Selector 中的时候, 会返回一个 Selection Key 对象, Selection Key 则表示了一个特定的通道对象和一个特定的选择器对象之间的注册关系。通过 Selection Key 我们可以获取哪些 IO 事件已经就绪了,并且可以通过其获取 Channel 并对其进行操作。Selector(选择器,也可以理解为多路复用器)是 NIO(非阻塞 IO)实现的关键。它使用了事件通知相关的 API 来实现选择已经就绪也就是能够进行 I/O 相关的操作的任务的能力。

    简单来说,整个过程是这样的:

    将 Channel 注册到 Selector 中。调用 Selector 的 select() 方法,这个方法会阻塞;到注册在 Selector 中的某个 Channel 有新的 TCP 连接或者可读写事件的话,这个 Channel 就会处于就绪状态,会被 Selector 轮询出来。然后通过 SelectionKey 可以获取就绪 Channel 的集合,进行后续的 I/O 操作。NIO 为啥更好?

    相比于传统的 BIO 模型来说, NIO 模型的最大改进是:

    使用比较少的线程便可以管理多个客户端的连接,提高了并发量并且减少的资源消耗(减少了线程的上下文切换的开销)在没有 I/O 操作相关的事情的时候,线程可以被安排在其他任务上面,以让线程资源得到充分利用。使用 NIO 编写代码太难了

    一个使用 NIO 编写的 Server 端如下,可以看出还是整体还是比较复杂的,并且代码读起来不是很直观,并且还可能由于 NIO 本身会存在 Bug。

    很少使用 NIO,很大情况下也是因为使用 NIO 来创建正确并且安全的应用程序的开发成本和维护成本都比较大。所以,一般情况下我们都会使用 Netty 这个比较成熟的高性能框架来做(Apace Mina 与之类似,但是 Netty 使用的更多一点)。

    image.png

    重要角色 Netty 登场

    简单用 3 点概括一下 Netty 吧!

    Netty 是一个基于 NIO 的 client-server(客户端服务器)框架,使用它可以快速简单地开发网络应用程序。它极大地简化并简化了 TCP 和 UDP 套接字服务器等网络编程,并且性能以及安全性等很多方面甚至都要更好。支持多种协议如 FTP,SMTP,HTTP 以及各种二进制和基于文本的传统协议。用官方的总结就是:Netty 成功地找到了一种在不妥协可维护性和性能的情况下实现易于开发,性能,稳定性和灵活性的方法。

    Netty 特点

    根据官网的描述,我们可以总结出下面一些特点:

    统一的 API,支持多种传输类型,阻塞和非阻塞的。简单而强大的线程模型。自带编解码器解决 TCP 粘包/拆包问题。自带各种协议栈。真正的无连接数据包套接字支持。比直接使用 Java 核心 API 有更高的吞吐量、更低的延迟、更低的资源消耗和更少的内存复制。安全性不错,有完整的 SSL/TLS 以及 StartTLS 支持。社区活跃成熟稳定,经历了大型项目的使用和考验,而且很多开源项目都使用到了 Netty 比如我们经常接触的 Dubbo、RocketMQ 等等。…使用 Netty 能做什么?看到这里的都是妥妥的铁粉无疑了,底下是我的个人微信找到我的可是有大把源码,学习路线啥的,多的我就不透露,1253431195看大家自己的积极性了啊~

    这个应该是老铁们最关心的一个问题了,凭借自己的了解,简单说一下,理论上 NIO 可以做的事情 ,使用 Netty 都可以做并且更好。Netty 主要用来做网络通信:

    作为 RPC 框架的网络通信工具 :我们在分布式系统中,不同服务节点之间经常需要相互调用,这个时候就需要 RPC 框架了。不同服务指点的通信是如何做的呢?可以使用 Netty 来做。比如我调用另外一个节点的方法的话,至少是要让对方知道我调用的是哪个类中的哪个方法以及相关参数吧!实现一个自己的 HTTP 服务器 :通过 Netty 我们可以自己实现一个简单的 HTTP 服务器,这个大家应该不陌生。说到 HTTP 服务器的话,作为 Java 后端开发,我们一般使用 Tomcat 比较多。一个最基本的 HTTP 服务器可要以处理常见的 HTTP Method 的请求,比如 POST 请求、GET 请求等等。实现一个即时通讯系统 :使用 Netty 我们可以实现一个可以聊天类似微信的即时通讯系统,这方面的开源项目还蛮多的,可以自行去 Github 找一找。消息推送系统 :市面上有很多消息推送系统都是基于 Netty 来做的。…哪些开源项目用到了 Netty?

    我们平常经常接触的 Dubbo、RocketMQ、Elasticsearch、gRPC 等等都用到了 Netty。

    可以说大量的开源项目都用到了 Netty,所以掌握 Netty 有助于你更好的使用这些开源项目并且让你有能力对其进行二次开发。

    实际上还有很多很多优秀的项目用到了 Netty,Netty 官方也做了统计,统计结果在这里:https://netty.io/wiki/related-projects.html 。

    image.png

    阿里巴巴编码规范 基础技能认证 考题分析(考题+答案)_链接:https://pan.baidu.com/s/1CTGGf4IM-mDKU4FO82yAMw
    提取码:r7y9

    展开全文
  • 就是可以规定在你运行某些特定方法之前或者之后进行的另外一种操作,这种编程方法的好处是,当你有一些方法中会有基本相同的操作进行时,可以抽取出来,通过配置文件放进方法中,而它需要修改的时候只需要动抽取出来...

    文章目录


    前言

    一年一度的毕业季既让人开心,也难免让人忧愁。以我的本科母校为例,毕业除了要提交毕业论文,还需要准备毕业设计作品。而对于毕业设计作品的答辩难免让一些同学感到头大,除了对项目本身了解不是很深入,又因为担心自己准备不充分难以通过答辩,还有些同学不太了解项目答辩会问哪些问题,那么本文一定就是你在答辩前夜的必看指南,精心总结祝你顺利过关!

    在这里插入图片描述


    说明:由于本文定位是临时突击和答辩前预备,所以部分问题回答不是很详细,有问题可以留言。

    关于计算机本科毕业设计及答辩的其他问题,感兴趣的同学可以移步我的另一篇文章:
    《计算机本科毕业设计:毕业设计、论文要点及我们面对毕业答辩应持有的态度》

    一、关于数据库的问题

    在这里插入图片描述

    1.1、为什么采用 MySQL 数据库?

    问:你的系统中采用的是什么数据库?为什么采用这种数据库,而不是 XX 数据库?

    采用的是 MySQL 数据库,MySQL 是最流行的关系型数据库之一。

    在 Web 应用方面,MySQL 是最好的应用软件之一。
    而且在学校的学习中,我们一直使用的数据库也是 MySQL,对于其他的数据库都不太熟悉。

    1.2、系统数据是如何跟数据库进行交互?

    问:你的系统中所有的数据是如何跟数据库进行交互的?(采用的什么框架?还是说 JDBC?)优点是什么?

    采用的是 MyBatis,该框架将 SQL 语句从代码中分离出来,写在 xml 里面,降低耦合度,便于统一管理和优化,可重用。

    优点:支持编写动态 SQL,而且这个是最简单的持久化框架,小巧并且简单易学。

    1.3、JDBC 连接数据库所需四要素?

    问:JDBC 连接数据库所需要四要素都是什么?

    数据库驱动 driverClass,数据库 url,数据库用户名和密码。

    1.4、JDBC 的操作步骤有几步?

    问:JDBC 的操作步骤有几步,都有什么?

    • 注册驱动。
    • 获取数据库连接。
    • 创建 Statement 类型或者子类型对象。
    • 执行 SQL。
    • 处理结果(如果需要的话,一般查询语句必须要处理)。
    • 关闭资源。

    二、关于应用服务器的问题

    2.1、Tomcat 应用服务器作用是什么?

    问:Tomcat 作用是什么?

    Tomcat 是一个免费的开放源代码的 Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试 JSP 程序的首选。

    当在一台机器上配置好 Apache 服务器,可利用它响应 HTML(标准通用标记语言下的一个应用)页面的访问请求。实际上 Tomcat 部分是 Apache 服务器的扩展,但它是独立运行的,所以当你运行 Tomcat 时,它实际上作为一个与 Apache 独立的进程单独运行的。当配置正确时,Apache 为HTML页面服务,Tomcat 实际上运行 JSP 页面和 Servlet。

    Tomcat 和 IIS 等 Web 服务器一样,具有处理 HTML 页面的功能,另外它还是一个 Servlet 和 JSP 容器,独立的 Servlet 容器是 Tomcat 的默认模式。但是,Tomcat 处理静态 HTML 的能力不如 Apache 服务器。

    三、关于 JavaWeb 的问题

    3.1、JavaWeb 三层架构都是哪三层?

    问:项目中是否采用三层架构,三层都是哪三层?为什么用三层架构?

    (如果项目采用 SSM 框架就不用看这个,如果是三层架构,就是 web 层、service 层、dao 层。)

    • 数据访问层 dao:对数据的操作。
    • 业务逻辑层 service:主要对逻辑操作。
    • 表示层 web:主要是 web 方式。

    优点:开发人员只需关注架构中的某一层,降低后期维护成本和时间,降低了层与层之间的依赖,有利于标准化。

    3.2、JSP 的本质与九大内置对象?

    问:JSP 本质上是什么?它有几大内置对象,你列举三四个出来说明?

    JSP 本质上也是 Servlet。JSP 有九大内置对象,如下:

    • out(JspWriter):等同与 response.getWriter(),用来向客户端发送文本数据。
    • config(ServletConfig):对应“真身”中的 ServletConfig。
    • page(当前 JSP 的真身类型):当前 JSP 页面的“this”,即当前对象。
    • pageContext(PageContext):页面上下文对象,它是最后一个没讲的域对象。
    • exception(Throwable):只有在错误页面中可以使用这个对象。
    • request(HttpServletRequest):即 HttpServletRequest 类的对象。
    • response(HttpServletResponse):即 HttpServletResponse 类的对象。
    • application(ServletContext):即 ServletContext 类的对象。
    • session(HttpSession):即 HttpSession 类的对象,不是每个 JSP 页面中都可以使用,如果在某个 JSP 页面中设置<%@page session=”false”%>,说明这个页面不能使用 session。

    四、关于 SSM 框架的问题

    在这里插入图片描述

    4.1、什么是 SSM 框架?有何优势?

    问:你的系统采用的是 SSM 框架,那你说一下 SSM 分别是什么,有什么优势?

    SSM 是指 Spring、SpringMVC、MyBatis。其所具备的优势如下:

    • Spring 核心是 IOC 和 AOP。IOC 使得代码复用,可维护性大大提高,AOP 提供切面编程,同时也增加了生成力。
    • SpringMVC 是属于 SpringFrameWork 的后续产品,SpringMVC 分离了控制器、模型对象、分派器以及理想程序对象角色,这种分离更容易定制。
    • MyBatis 消除了几乎所有的 JDBC 代码和参数的手工设置以及结果集的检索。MyBatis 使用简单的 XML 或注解用于配置和原始映射,将接口和 Java 的 POJO(Plain Old Java Objects,普通的 Java 对象)映射成数据库中的记录。

    4.2、Spring 的两个核心功能分别是什么?

    问:Spring 的两个核心功能分别是什么?

    • IOC:控制反转。
    • AOP:面向切面编程,扩展功能不是修改源代码实现。

    4.3、解释 Spring 的 IOC(控制反转)?

    问:解释 Spring 的 IOC(控制反转)是什么?

    比如一个类,在类里面有方法(非静态的方法),如果要调用类里面的方法,需要创建类的对象,使用对象调用方法。

    通常方法就是创建类对象的过程,需要 new 出来对象。而 Spring 要做的就是,把对象的创建不是通过 new 方式实现,而是交给 Spring 配置创建类对象。这个由 Spring 框架管理对象创建和生命周期的机制称之为控制反转。而在创建对象的过程中 Spring 可以依据配置对对象的属性进行设置,这个过程称之为依赖注入(DI)。

    在初始化一个 Spring 容器时,Spring 会去解析指定的 xml 文件,当解析到其中的<bean>标签时,会根据该标签中的 class 属性指定的类的全路径名,通过反射创建该类的对象,并将该对象存入内置的 Map 中管理。其中键就是该标签的 id 值,值就是该对象。

    之后,当通过 getBean 方法来从容器中获取对象时,其实就是根据传入的条件在内置的 Map 中寻找是否有匹配的键值,如果有则将该键值对中保存的对象返回,如果没有匹配到则抛出异常。

    4.4、解释 Spring 中的 AOP(面向切面编程)?

    问:解释 Spring 中的 AOP(面向切面编程),用它有什么好处?

    AOP 简单来说是面向切面编程,面向切面,是一种编程思想,OOP(面向对象编程)的延续。
    OOP 允许你定义从上到下的关系,但并不适合定义从左到右的关系。例如日志功能。日志代码往往水平地散布在所有对象层次中,而与它所散布到的对象的核心功能毫无关系。对于其他类型的代码,如安全性、异常处理和透明的持续性也是如此。这种散布在各处的无关的代码被称为横切(cross-cutting)代码,在 OOP 设计中,它导致了大量代码的重复,而不利于各个模块的重用。

    而 AOP 技术则恰恰相反,它利用一种称为“横切”的技术,剖解开封装的对象内部,并将那些影响了多个类的公共行为封装到一个可重用模块,并将其名为“Aspect”,即方面。所谓“方面”,简单地说,就是将那些与业务无关,却为业务模块所共同调用的逻辑或责任封装起来,便于减少系统的重复代码,降低模块间的耦合度,并有利于未来的可操作性和可维护性。

    将系统中非核心的业务提取出来,进行单独处理。比如事务、日志和安全等。就是可以规定在你运行某些特定方法之前或者之后进行的另外一种操作,这种编程方法的好处是,当你有一些方法中会有基本相同的操作进行时,可以抽取出来,通过配置文件放进方法中,而它需要修改的时候只需要动抽取出来的这个方法就好了,而不用一个一个的挨着改,达到低耦合的效果。

    好处

    • 解耦:实现低耦合高内聚。
    • 实现代码复用,提高使用效率。

    4.5、Spring 的四种事务管理如何实现?

    问:项目中事务管理如何实现的?有没有用到 Spring 中的 AOP?

    在 Spring 项目中,我们可以用通过四种方式实现事务管理,分别是编程式事务管理、基于 TransactionProxyFactoryBean 的声明式事务管理、基于 @Transactional 的声明式事务管理和基于 Aspectj AOP 配置事务。

    实现方式如下:https://www.cnblogs.com/weechang/p/12608964.html

    Spring 中进行事务管理的通常方式是利用 AOP(面向切片编程)的方式,为普通 Java 类封装事务控制,它是通过动态代理实现的,由于接口是延迟实例化的,Spring 在这段时间内通过拦截器,加载事务切片。

    4.6、SpringMVC 的 M、V、C 分别代表什么?

    问:SpringMVC 的 M、V、C 分别代表什么?

    SpringMVC 的 M、V、C 分别代表 MVC 三层结构:

    • C 就是 Controller,是我们写的逻辑控制器,但在 Spring 中叫做 Handler(处理器),Handler 是SpringMVC 的 C 层。
    • V 层就是 View 视图层,SpringMVC 把最后要展示给用户的数据和网页封装到 View 中。
    • M 层就是 Model 层,这层功能和工作很多,它是 C 层和 V 层传输数据的桥梁,也就是说它贯穿于 Controller 层和 View 层之中,为这两层提供数据。像注视了 @ModelAttribute 方法、SessionAttribute、FlashMap、Model 以及需要执行的方法的参数和返回值都属于这一层,而使用这一层的类有 HandlerMethodArgumentResolver 和 HandlerMethodReturnValueHandler、ModelFactory 和 FlashMapManager。它是 SpringMVC 中最复杂的一层,因为一个请求的参数封装有多重形式,比如方法里的参数,注解了 @ModelAttribute,@SessionAttribute,还有 FlashMap 中的参数。

    4.7、简述 SpringMVC 工作流程?

    问:简述 SpringMVC 工作流程?

    • 用户发起请求到前端控制器(DispatcherServlet),该控制器会过滤出哪些请求可以访问 Servlet、哪些不能访问。就是 url-pattern 的作用,并且会加载 springmvc.xml 配置文件。
    • 前端控制器会找到处理器映射器(HandlerMapping),通过 HandlerMapping 完成 url 到 controller 映射的组件,简单来说,就是将在 springmvc.xml 中配置的或者注解的 url 与对应的处理类找到并进行存储,用 map<url,handler> 这样的方式来存储。
    • HandlerMapping 有了映射关系,并且找到 url 对应的处理器,HandlerMapping 就会将其处理器(Handler)返回,在返回前,会加上很多拦截器。
    • DispatcherServlet 拿到 Handler 后,找到 HandlerAdapter(处理器适配器),通过它来访问处理器,并执行处理器。
    • 执行处理器。
    • 处理器会返回一个 ModelAndView 对象给 HandlerAdapter。
    • 通过 HandlerAdapter 将 ModelAndView 对象返回给前端控制器(DispatcherServlet)。
    • 前端控制器请求视图解析器(ViewResolver)去进行视图解析,根据逻辑视图名解析成真正的视图(JSP),其实就是将 ModelAndView 对象中存放视图的名称进行查找,找到对应的页面形成视图对象。
    • 返回视图对象到前端控制器。
    • 视图渲染,就是将 ModelAndView 对象中的数据放到 request 域中,用来让页面加载数据的。
    • 通过第 8 步,通过名称找到了对应的页面,通过第 10 步,request 域中有了所需要的数据,那么就能够进行视图渲染了,最后将其返回即可。

    4.8、前端控制器(DispatcherServlet)作用?

    问:前端控制器(DispatcherServlet)是干什么用的?

    SpringMVC 是 Spring 中的模块,它实现了 MVC 设计模式的 web 框架,首先用户发出请求,请求到达 SpringMVC 的前端控制器(DispatcherServlet),前端控制器根据用户的 url 请求处理器映射器查找匹配该 url 的 handler,并返回一个执行链,前端控制器再请求处理器适配器调用相应的 handler 进行处理并返回给前端控制器一个 modelAndView,前端控制器再请求视图解析器对返回的逻辑视图进行解析,最后前端控制器将返回的视图进行渲染并把数据装入到 request 域,返回给用户。DispatcherServlet 作为 SpringMVC 的前端控制器,负责接收用户的请求并根据用户的请求返回相应的视图给用户。

    4.9、MyBatis Generator (MBG)有何优势?

    问:你了解过 mybatis-generator 吗?使用它有什么优势?

    MyBatis Generator (MBG) 是一个 Mybatis 的代码生成器 MyBatis 和 iBATIS。可以生成 MyBatis 各个版本的代码,和 iBATIS 2.2.0 版本以后的代码。

    它可以通过数据库的表(或多个表)生成可以用来访问(多个)表的基础对象。这样和数据库表进行交互时不需要创建对象和配置文件。MBG 解决了对数据库操作有最大影响的一些简单的 CRUD(插入,查询,更新,删除)操作。不过仍然需要对联合查询和存储过程手写 SQL 和对象。

    五、关于分布式架构的问题

    5.1、采用 Spring Boot 有何优势?

    问:有没有想过不用 SSM,而用 Spring Boot,Spring Boot 最大的优势是什么?

    有考虑过 Spring Boot。Spring Boot 最大的优势在于可以快速构建项目,具体优势如下:

    • 对主流开发框架的无配置集成。
    • 项目可独立运行,无须外部依赖 Servlet 容器。
    • 提供运行时的应用监控。
    • 极大地提高了开发、部署效率。
    • 与云计算的天然集成。
    • Spring Boot 并不是用来替代 Spring 的解决方案,而是和 Spring 框架紧密结合用于提升 Spring 开发者体验的工具。
    • 同时它集成了大量常用的第三方库配置,Spring Boot 应用中这些第三方库几乎可以是零配置的开箱即用(out-of-the-box),大部分的 Spring Boot 应用都只需要非常少量的配置代码(基于 Java 的配置),开发者能够更加专注于业务逻辑。

    5.2、如何理解 Spring Boot 起步依赖的 starter 启动器?

    问:如何理解 Spring Boot 中起步依赖里面 starter 启动器?

    Starters 可以理解为启动器,它包含了一系列可以集成到应用里面的依赖包,你可以一站式集成 Spring 及其他技术,而不需要到处找示例代码和依赖包。如你想使用 Spring JPA 访问数据库,只要加入 spring-boot-starter-data-jpa 启动器依赖就能使用了。

    spring-boot-starter-*起步依赖是 SpringBoot 核心之处,它提供了 Spring 和相关技术提供一站式服务,让开发者不在关心 Spring 相关配置,简化了传统的依赖注入操作,当然开发者也可通过 application.properties 文件自定义配置。

    SpringBoot 常规启动都遵循类似的命名模式spring-boot-starter-*,其中*是一种指定类型的应用程序,如 spring-boot-starter-web 表示应用程序依赖 SpringWeb 相关内容。另外,SpringBoot 支持第三方插件引用,第三方启动程序通常以项目的名称开始。例如,MyBatis 依赖插件引用为 mybatis-spring-boot-starter。

    六、关于项目管理

    6.1、Maven 有什么作用?

    问:Maven 是什么?有什么作用?

    Maven 的本质是一个项目管理工具,将项目开发和管理过程抽象成一个项目对象模型(POM)。开发人员只需做一些简单的配置,就可以批量完成项目的构建、报告和文档的生成工作。

    Maven 的作用如下:

    • Maven 统一集中管理好所有的依赖包,不需要程序员再去寻找。
    • 对应第三方组件用到的共同 jar,Maven 自动解决重复和冲突问题。
    • Maven 作为一个开放的架构,提供了公共接口,方便同第三方插件集成。程序员可以将自己需要的插件,动态地集成到 Maven,从而扩展新的管理功能。
    • Maven 可以统一每个项目的构建过程,实现不同项目的兼容性管理。

    七、关于毕设项目本身

    在这里插入图片描述

    7.1、项目的特色与优势是什么?

    问:你这个项目的特色在哪?与目前市面的系统进行比较,你的优势在哪?

    (根据自己情况来答。)

    7.2、毕设项目业务逻辑是什么?

    问:该功能的业务逻辑是什么?你来简单描述一下?

    (根据自己情况来答。)

    7.3、简述商品下单购买的业务逻辑?

    问:简述下单购买的业务逻辑?

    根据实际业务场景,订单流程可抽象为 5 大步骤。
    分别是:订单创建>订单支付>订单生产>订单确认>订单完成

    订单创建:用户下单后,系统需要生成订单,此时需要先获取下单中涉及的商品信息,然后获取该商品所涉及到的优惠信息,如果商品不参与优惠信息,则无此环节。

    增减库存规则是指订单中的商品,何时从仓储系统中对相应商品库存进行扣除,目前主流有两种方式:

    下单减库存——即用户下单成功时减少库存数量。

    • 优势:用户体验友好,系统逻辑简洁。
    • 缺点:会导致恶意下单或下单后却不买,使得真正有需求的用户无法购买,影响真实销量。
    • 解决办法:
      设置订单有效时间,若订单创建成功N分钟不付款,则订单取消,库存回滚。
      限购,用各种条件来限制买家的购买件数,比如一个账号、一个ip,只能买一件。
      风控,从技术角度进行判断,屏蔽恶意账号,禁止恶意账号购买。

    付款减库存——即用户支付完成并反馈给平台后再减少库存数量。

    • 优势:减少无效订单带来的资源损耗。
    • 缺点:因第三方支付返回结果存在时差,同一时间多个用户同时付款成功,会导致下单数目超过库存,商家库存不足容易引发断货和投诉,成本增加。
    • 解决办法:
      付款前再次校验库存,如确认订单要付款时再验证一次,并友好提示用户库存不足。
      增加提示信息:在商品详情页,订单步骤页面提示不及时付款,不能保证有库存等。

    订单支付:用户支付完订单后,需要获取订单的支付信息,包括支付流水号、支付时间等。支付完订单接着就是等商家发货,但在发货过程中,根据平台业务模式的不同,可能会涉及到订单的拆分。订单拆分也是一个相对独立的模块,这里就不详细描述了。

    订单生产:订单生产,是指产品从企业到用户这一流程的概述。如电商平台中,商家发货过程已有一个标准化的流程,订单内容会发送到仓库,仓库对商品进行打单、拣货、包装、交接快递进行配送。

    订单确认:收到货后,订单系统需要在快递被签收后提醒用户对商品做评价。这里要注意,确认收到货不代表交易成功,相反是售后服务的开始。

    订单完成:订单完成是指在收到货 X 天的状态,此时订单不在售后的支持时间范围内。到此,一个订单的正向流程就算走完了。

    7.4、搜索框模糊查询是如何进行实现的?

    问:搜索框模糊查询是如何进行实现的?

    一般模糊语句格式如下:

    SELECT 字段 FROMWHERE 某字段 LIKE 条件;
    

    其中,关于条件,SQL 提供了如下四种匹配模式:

    • %:表示零个或多个字符,可以匹配任意类型和任意长度的字符。

    说明:有些情况下若是中文,请使用两个百分号(%%)表示。

    select * from flow_user where username like '%王%';
    

    如果需要找到 flow_user 这张表里面,字段 username 中既有“唐”,又有“英”的记录,可以使用 and 条件:

    select * from flow_user where username like '%英%' and username like '%唐%';
    

    则可以查询出来所有包含“英”和“唐”的所有内容,“英”和“唐”所在的前后位置无所谓。

    • _:表示任意单个字符
    select * from flow_user where username like '_英_';
    

    只能找到“王英琨”这样 username 为三个字且中间一个字是“英”的内容。

    • []:表示括号内所列字符中的一个(类似正则表达式)。

    指定一个字符、字符串或范围,要求所匹配的对象为他们中的任一个。
    将找出“王飞”“李飞”“张飞”(而不是“张王李飞”)。

    如 [] 内有一系列字符(01234,abcde 之类的)则可略写为“0-4”,“a-e”:

    select * from flow_user where username like '老[0-9]';
    

    将找出“老1”、“老2”、……、“老9”。

    • [^]:表示不在括号所列之内的单个字符。

    其取之和 [] 相同,但它所要求匹配对象为指定字符以外的任一个字符。

    select * from flow_user where username LIKE'[^王李张]飞';
    

    将找出不是“王飞”、“李飞”、“张飞”的“赵飞“、“吴飞”等。

    说明:查询内容包含通配符时,由于通配符的缘故,导致查询特殊字符“%”、“_”、“[”的语句无法正常实现,把特殊字符用“[]”括起来便可以正常查询。

    7.5、分页查询是如何实现的?

    问:页面分页查询是如何实现的?

    MySQL 中实现分页查询,在数据量较小的情况下可使用 limit 查询来实现分页查询,在数据量大的情况下使用建立主键或唯一索引来实现,另外可通过 order by 对其排序。

    分页需求:客户端通过传递 start(页码),limit(每页显示的条数)两个参数去分页查询数据库表中的数据,MySQL 数据库提供分页的函数有 limit m,n,但是该函数的用法和我们的需求不一样,所以就需要根据实际情况去改写适合自己的分页语句。

    例如:查询第 1 条到第 10 条的数据的 SQL 是:

    select * from table limit 0,10;
    

    对应我们的需求就是查询第一页的数据:

    select * from table limit (1-1)*10,10;
    

    从上面的分析我们可以得出分页 SQL 的格式是:

    select * from table limit (start-1)*limit,limit;
    

    说明:其中 start 是页码,limit 是每页显示的条数。

    7.6、主键或者是唯一索引如何进行 SQL 优化?

    在数据量较小的时候使用 limit 进行数据分页在性能上面不会有明显的缓慢,但是当数据量达到了万级或百万级时,SQL 语句的性能将会影响数据的返回。这时就要使用主键或者是唯一索引来代替 limit 进行数据分页。

    例如,返回 10 到 50 之间的数据,设主键或唯一索引为 demo_id,代码如下:

    select * from table where demo_id > (pageNo-1)*pageSize limit pageSize;
    

    基于数据再排序:当需要返回的信息要按顺序或者逆序时,就需要对上面的数据进行排序。可用 order by ASC 表示顺序,order by DESC 表示逆序,一般情况下默认的为顺序。

    返回的数据依照 demo_id 的顺序进行排列,代码如下:

    select * from table where demo_id > (pageNo-1)*pageSize order by demo_id limit pageSize;
    

    7.7、如何实现对手机号的正则校验?

    问:对于手机号的正确,你是否进行了验证?如何实现的?

    我在前端 JS 脚本中是采用正则表达式来规范手机号,比如:/^1[3-9]\d{9}$/
    第一位: 1
    第二位: 3~9
    第三到第十一位:只要是数字就行

    后端使用 JSP 303 校验 导入 Hibernate-Validator,使用 @Valid 注解完成检验功能。
    (这里和 Hibernate 没有关系,我们只是选择了一种具体的实现而已)

    7.8、注册/登陆验证码是如何实现的?

    问:登录时候那个验证码是如何实现的?前端产生,还是后端产生的?所用的技术是什么?

    https://www.cnblogs.com/YQian/p/11323443.html

    7.9、图片上传功能如何实现?

    问:你这个图片上传的功能在后端是如何实现的?将图片保存到数据库中,还是保存到服务器的指定路径下面?

    在 form 表单中声明 enctype="multipart/form-data",保存到数据库。

    7.10、图片全动态变化如何实现?

    问:首页的图片会动态的变化,这是什么技术?如何实现的?

    使用 JS 中 Window setInterval() 方法实现。
    说明:setInterval() 方法可按照指定的周期(以毫秒计)来调用函数或计算表达式。

    代码如下:

    window.setInterval("slide_photos()",2000);
    

    7.11、重定向和转发的区别?

    问:页面跳转采用技术是哪个?重定向还是内部跳转,简述两者区别?

    • 请求的次数的不同,重定向总共请求了两次服务器;转发则是用户请求一次可能经过n个jsp页面由返回到用户浏览器中,是一次请求多次处理的过程。
    • 跳转过程中链接的变化,重定向在跳转中请求了两次服务器并且是两次不同的链接地址,在浏览器的地址栏可以看到两次是有变化的;转发在跳转过程中浏览器请求了一次服务器,服务器经过了 n 个 jsp 页面并没有改变请求的链接地址,因为用户只请求了一次,所以在整个跳转过程中链接地址是没有改变的,在浏览器的地址栏就可以看到。
    • 目的不同,重定向只是简单的让用户访问一个新的链接,而转发是服务器要得到用户的请求内容并需要进行一部分处理的,所以两者目的之不同的。

    7.12、表升级如何实现?如何维护?

    问:普通用户升级为管理员,在数据库表中你是如何维护的?

    7.13、购物车商品数量是否可以设置成负数?

    问:在购物里面,你购买的数量是否可以设置成负数,或者大于库存数?这个是如何实现的?

    不能。在 cart.jsp 中的 changeNum(),我们还需要把库存这个变量作为参数传入,然后写两个 if 判断,分别判断商品数量小于 1 和商品数量大于库存的情况。

    7.14、项目如何部署上云?

    问:你这个项目是部署在阿里云上的,那你简单说一下,如何将项目部署到阿里云上?

    7.15、项目在遇到的困难是什么?如何解决?

    问:你在做这个项目的时候,遇到的困难是什么?或者是用到了比较难的技术?

    (开放式问题,也可以说具体知识点)
    业务处理逻辑存在问题,不严谨。配置文件等问题。

    7.16、这个项目最大的体会是什么?

    问:在做这个项目的过程中,你学习到了什么?(你最大的体会是什么?)

    (开放式问题,也可以说具体知识点)
    掌握项目开发的基本步骤。
    具备极强的面向对象的分析与设计技巧。
    掌握用例驱动、以架构为核心的主流开发方法。

    7.17、项目后期如何优化扩展?

    问:如果后期需要你优化扩展你的功能,你会做哪块?

    (开放式问题,也可以说具体知识点)


    总结

    白鹿作为软件工程 Java EE 方向的“过来人”,就在此为大家总结了一些 Java EE 毕设答辩常见的几类问题,当然也欢迎大家在评论区下方留言补充!希望看了本文能让你成竹在胸,答辩如能帮到你也欢迎积极留言告诉白鹿哈!

    在这里插入图片描述


    我是白鹿,一个不懈奋斗的程序猿。望本文能对你有所裨益,欢迎大家的一键三连!若有其他问题、建议或者补充可以留言在文章下方,感谢大家的支持!

    展开全文
  • 这岂不是太简单了 分分钟就能做好的吗、哈哈、不废话了、今天就给大家演示一下利用一个开源框架一个吧 这个开源项目主要特点: 这个框架采用SpringBoot、MyBatis、Shiro框架,开发的一套权限系统,极低门槛,拿...
  • javajsp定做选题(题...应用服务器:tomcat 开发工具:myeclipse或eclipse 操作系统:Windows操作系统 浏览器:360安全浏览器或IE浏览器 冠状病毒疫情防控宣传交流网站设计与实现 本系统主要包含了用户登录 、信
  • 目录 java毕业设计项目《100套》推荐订阅 前言: 主要特性功能: 内置功能模板: ...精彩java毕设实战项目推送 java毕业设计项目《100套》推荐订阅 前言: 今天和大家分享一个是一个开源接私...
  • 上一期我们了毕业设计的选题,一个合适的论文题目直接影响到你的毕业论文。那么我们如何才能好Java相关的毕业论文呢?论文是考验耐心和磨砺心智的一件事情,麻烦是必不可少的,所以大家要论文要有点耐心,莫...
  •  之前做本科毕设时候用的是MyEclipse,当时配置好tomcat服务器,运行一个web项目之后,可以在tomcat的webapps文件夹下看到我部署的项目,比如我的项目叫helloworld,那么我在webapps目录下就会看...
  • 本篇来讲下开发系统需要安装的软件环境,包括JDK、Tomcat、Eclipse、MySQL、Navicat。重点不是一步一步的安装过程,重点是讲清楚软件的版本、下载方式、安装注意事项、软件的用途,理解这些软件是干嘛的,用起来就不...
  • 给一个同学给他电脑上装了个毕设项目,原本计划10分钟轻轻松松搞定,谁知道竟然花了将近3个小时。 下需要装的环境,IDEA,mysql,maven,tomcat。 java和navicat 电脑有就没装。 为啥10分钟就能搞定,因为无论在...
  • 前言:一下闲话,项目一个星期完成,三天成初稿,后面改论文用了三个月(夸张点,并不是每天都在改)。最终于2019年5月19号完成毕业答辩。毕设老师给95分,验收老师给90+,这个分数是可以推优进行二辩的,奈何...
  • 先看pom.xml,到pom.xml就不得不提maven啦。 以往我们想使用别人好的代码,想使用别人的工具类,都需要手动地去添加jar包,自己找,自己导入。 而有了maven,我们就可以在项目中的pom.xml下某个jar包的名字...
  • 文章目录一、复制webapps二、更改conf中的配置文件:server.xml三、重启Tomcat即可完成【注】 引用博文地址: 一、复制webapps Tomcat默认空间webapps,其中已经存在一个项目了。此时要增加一个项目运行可以将原本...
  • 这个项目还是比较完整和基础的,适合改一些毕设,因为没有用到Maven,都是基础的框架,代码结构和逻辑比较简单,之前的还有些bug,后续我会继续修改的,希望能帮助到大家。 使用JavaEE开发,基于SpringMVC+Mybatis...
  • 东软毕设

    千次阅读 2015-08-06 19:20:28
    大连东软信息学院 毕业设计(论文) 论文题目:东软舍务管理系统 系 所: 计算机科学与技术系 专 业: 学生姓名: 学生学号: 指导教师: 导师职称: 副教授 助教 完成日期: 年 月 日 大连东软信息学院 ...
  • 这个项目还是比较完整和基础的,适合改一些毕设,因为没有用到Maven,都是基础的框架,都是基础的框架,代码结构和逻辑比较简单,之前的还有些bug,后续我会继续修改的,希望能帮助到大家。 使用JavaEE开发,基于...
  • 你点击那个查询的时候,他其实是找到的这个文件: 查询按钮其实被放置在了这里面,这样做的目的其实就是为了减少代码的编写量,因为有很多地方都会用到查询、重置这两个按钮,如果每个页面都去这两个东西,代码会...
  • 毕设的程度呢。第一种方案:你可以入手很成熟很成熟的ssm架构。就是Spring+mybatis plus +Spring Mvc的结构,这样的框架搭建,在网络上有很多成熟的案例。需要你掌握的东西,大概有以下几点:servlet + jsp + jsJAVA...
  • 我想把这段程序用记事本进JSP本件中,应该用什么代码能在IE中显示出结.你的html标签 和jsp没什么关系 这些是控制文字大小的是居中显示 不过这些现在很少用 因为有了css 要比这些灵活的多 而且现在网站也都用css...
  • 如有需要做毕设论文可引用本文对内容,先到先得(内容纯原创,少有重复)。 由于作者对水平有限,文章中难免有错误对内容或作者对相关技术有错误对见解,望读者予以谅解,谢谢! 接上篇文章:电商推荐系统(下)...
  • 而家具是每一个家庭或者是每一个人都或多或少需要的准必需品。不管你是租房的,抑或是买房的。都需要家具来添点家的气息。而这里的家具设计网站主要以家具为主体,包含各类的配件,以及后面的领域的逐步覆盖。...
  • 2、 毕设选题的时候同学们要尽量从如下方向出发 1)自身所学知识 2)选题背景和意义 选题背景可以理解为研究目的 , 选择了一项研究到底要达到什么目的, 这是研究者首先需要明确的目标 , 通常选题意义或.
  • 阶段 1:Java 入门 目标 培养兴趣、快速上手 前期准备 准备好一款在线、随时随地代码的工具,不用在本地去安装和配置,是初学者的好帮手 推荐网站 - 菜鸟工具:https://c.runoob.com/compile/10 准备一款记笔记的...
  • 毕业设计答辩技巧&降重技巧

    千次阅读 多人点赞 2020-04-23 16:14:41
    文章目录问题1:你这个项目用到了SSM/SSH/JSP/JavaWeb,是怎么体现的?问题2:你在进行数据库设计的时候,有什么技巧吗?问题3:给我找到XX模块的代码,并讲解一下[XX流程是怎么实现的]?问题4:你觉得这个系统还有...
  • 以下内容是近期回顾以前笔记的新发现,可能有很多人知道SpringBoot比SSM好用,但是有不知道哪里进行了增强。站在一个新手的视角(本来也是新手),就常用建项目的pom文件的依赖进行...embed-tomcat springboot依赖一
  • 因为做的是一个离线的数据分析,所以在组件的选用上面也是选择了Hive(如果是做实时的可能就要用到Spark或者HBase了…)。本篇博客,为大家带来的就是关于如何在Springboot项目中配置Hive做一个说明。 更改...
  • IDEA+SpringBoot安装部署说明

    千次阅读 2018-10-27 21:09:37
    E:\02-develop\09-tomcat\apache-tomcat-9.0.2 home >   container >   < configuration >   < type > existing type >   < home > E:\02-develop\09-tomcat\apache-tomcat-9.0.2 home >   ...
  • 在对数据进行可视化时用到了Finebi工具,直到出去面试的时候才开始接触到FineReport。可以FineReport工具全程都是从0开始自己自学的。 考证的直接原因就是公司对我的考核:试用期期间需要拿下FCRP-D认证。(对于...

空空如也

空空如也

1 2 3 4 5 ... 13
收藏数 246
精华内容 98
关键字:

毕设写用到tomcat的时候怎么说