现在,网络覆盖范围扩大,价格便宜,各大商户都开放的有无线网络。
手机也得到了遍及,打算机技能也深入得手机中。
普通生活、娱乐等都可以在线上办理。
线上已成为趋势,大部分的行业都可以在线上开通业务,通过线上为人们办理问题,改变面对面办法,提高事情效率以及减少韶光摧残浪费蹂躏。
## 1.2课题现状与实现意义现在网上办公管理平台利用率高的有企业办公软件、收银软件、司帐软件以及各种国家性子的办公正台。
对付通讯录管理来言,想冲要破发展就须要加入线上平台,传统每天的待办事项须要自己记住或者记录到条记本上或者记录得手机备忘录上。
对付事务少的时候自己记住的办法非常有效,但对付事务多的时候这三种办法都做不到及时提醒和有效的安排。

系统采取管理员对用户的模式,管理员利用本平台可以管理根本数据信息、用户信息、个人信息、待办事项信息、记事本信息、通讯录信息等。
本系统可以帮助管理用户的通讯录、待办事项、记事本。
用户可以随时浏览、查询要办理的事变信息,可以查询公告和通讯录等。
本系统可以帮助用户安排每天的事务和跟踪结果,帮助管理员增加事情路子,减少韶光用度。
本基于Java的通讯录管理系统实现数据的自动化,减少管理员的事情内容并实现数据的清晰化。
## 1.3课题内容本基于Java的通讯录管理系统利用角色可以分为用户、管理员。
用户可以实现待办事项登记、通讯录管理、记事本管理等,管理员在收到用户的信息后可以修正、删除,以担保用户记录信息的准确性,还可以审核用户的资料。
同时用户可以浏览公告。
管理员同时可以管理公告信息、根本数据信息等。
## 1.4论文构造安排本论文的构造安排为三部分,分别为:

(1)第一部分,

jsp通讯录基于Java的通信录治理体系的 RESTful API

择要,本部分为大略的阐述,使读者可以对本论文有大致的理解;

外文翻译,采取英语对择要进行翻译;

目录,本部分可以使读者对本论文有详细的理解。

(2)第二部分为正文部分,

绪论,本章从课题开拓的来源、现状来进行先容,总结出本系统开拓的意义以及内容等;

系统剖析,本章包括措辞、技能等的先容以及系统的需求剖析、可行性剖析、流程剖析等;

系统设计,本章包括系统的功能构造图、数据库设计等;

系统实现,本章采取系统运行截图加笔墨进行本系统的详细先容;

系统测试,本章采取测试的方法进行紧张核心功能的测试先容;

(3)第三部分为总结、致谢、参考文献。

第2章 系统剖析 ## 2.1系统利用干系技能剖析 ### 2.1.1Java措辞先容 Java措辞是一种分布式的大略的 开拓措辞,有很好的 特色,在安全方面、性能方面等。
非常适宜在Internet环境中利用,也是目前企业级利用中最常用的一个编程措辞,具有很大的影响力。
紧张是通过面向工具的形式进行开拓,这样的话,就更能知足人们的需求。
在编程开拓利用中,紧张通过封装的办法,通过类来实现,具有很好的可编辑行和操作性,这便是面向工具措辞的最大特性,还可以在同一个类中把共同特性的类封装起来,形成一个抽象类,抽象类形容的不是一个工具,而是一个实体,这样就利用过程中就可以进行实例化,达到更好的效果。
类之间还可以进行继续,比如一个类可以把另个类的特色进行继续,这样就可以重复利用,以是说这种继续性的类实际上还是同一个类体,这样就可以达到最大的效果。
通过java开拓的代码还有很好的扩展性,可以通过不同的类达到的不同的效果,更好的提高利用效率,而且在后期掩护方面非常的方便,开拓的代码更加实用,更加简洁。
### 2.1.2Mysql数据库先容 Mysql数据库是Oracle公司推出的一个数据库管理软件,有很好的性能设计,可以充分发挥和利用互联网的上风,而且在数据库管理方面非常的方便,支持图形化管理,非常适宜新手的利用,可以直接在本地进行数据管理和配置,而且有很强大的数据处理能力,还有很好的安全性。
在数据存储的过程中可以支持多处理器的存储构造,可以自动生产和处理sql语句,有很强大的数据读取和复制存储功能,最最主要的是一个开放式的数据软件,可以为开放职员供应一个很好的数据库管理平台。
### 2.1.3Tomcat做事器先容 Tomcat做事器是一个小型的轻量级做事器,非常适宜一些小型的系统和本地的做事器利用,特殊适宜一些新手开拓者利用。
Tomcat做事器紧张是当成java程序的做事器利用,Tomcat做事器相称于便是Apache的一个扩展运用,差异便是他可以独立运行,当客户端上配置好Tomcat做事器往后,就可以直接通过做事器对HTML页面完成数据访问和相应。
非常受程序员的喜好,由于占用的运行空间非常的小时,不影响做事器性能,而且扩展性很好,支持很多开拓过程中常用的功能,可以根据开拓者的需求进行不断的改进和完善,以是说Tomcat做事器是目前利用非常广泛的一个做事器。
### 2.1.4VUE技能先容VUE技能属于渐进式的框架,VUE框架和其它框架最大的差异便是VUE框架是由下向上开拓的技能。
这种特点可以简化项目的开拓,对付新手非常友好。
VUE框架的核心在于图层,可以和其它的项目合并,也可以和其它的第三方平台互助利用。
### 2.1.5 SSM框架先容 SSM框架技能在利用时非常大略,只要安装好SSM后,想要利用样式直接导入就行,不须要再自己重新建立。
在选择好的样式里查看代码,然后把须要的代码复制到VUE里就可以直策应用,非常大略。
SSM框架由Spring和SpringMVC、Mybatis组成。
Spring卖力粘合,把指定参数的实例化方法用到所须要的工具中,SpringMVC卖力拦截,Mybatis卖力封装。
## 2.2系统可行性剖析系统是否可行决定了系统开拓的成功性。
想要系统的设计事情不会空费就须要经由详细的系统可行性剖析。
根据充分调查和参考干系论文创造,系统的可行性剖析一样平常包括系统的技能可行性剖析、系统的经济可行性剖析、系统的操作可行性剖析三种。
### 2.2.1系统经济可行性剖析本系统是Web型的管理平台,采取的Java措辞开拓的,开拓周期比较短,而且技能成熟,以是在开拓过程中没有过高的投入哀求,有很好的经济可行性。
### 2.2.2系统技能可行性剖析 本系统采取的技能有VUE网页技能、Mysql数据库、B/s模式、Java措辞等。

(1)通过VUE进行前台的页面开拓,具有很好的稳定性,而且可以直接在线升级掩护,可以更方便的实现数据管理,通过VUE的最大特色便是系统提前已经自动完成了很大不主要的大略事情,可以自动天生很多常规代码,这样减少很大的事情量。
而且VUE技能非常成熟,可以参考的案例也非常多。

(2)数据库采取Mysql数据库,也是非常适宜学生用的一款小型数据库,利用起来非常的大略,而且数据处理效率高。

(3)采取B/s模式的网站已经是目前的开拓主流,也是未来的发展方向。

(4)采取Java措辞进行后台代码的开拓,是面向工具的开拓措辞,可以直接查看和调用已用的案例,可以直接调用XML做事,而且兼容性非常的强,不管是哪个平台,都可以直接调用,而且是通用的,可以提高开拓者的事情效率,而且有很好的灵巧性,利用起来非常的方便。

以是通过以上几点的剖析,开拓职员只要能闇练的操作以上的技能就行,具有开拓技能可行性。
### 2.2.3系统操作可行性剖析 由于本系统是采取B/s的架构模式进行开拓的,以是只有安装的有浏览器和数据库做事器就可以进行系统的访问的利用。
而且非常的大略易操作,普通用户只须要有最大略的互联网操作履历就行。
## 2.3系统需求剖析现在网上管理系统的技能发展已经非常成熟,各大公司的利用率也非常可不雅观,特殊是在一些主要的行业里利用率更高。
基于Java的通讯录管理系统可以方便用户更快的办理自己的问题,并且售落后级掩护非常大略。
现在通讯录管理里也会采取线上、线下相结合的办法进行事情,各部门的资料可以共享调用,事情内容可以在线发布,非常适宜当代生活。
基于Java的通讯录管理系统是时期的趋势,其需求性不言而喻。
### 2.3.1传统管理系统优缺陷剖析 在最早涌现的管理系统中紧张利用人为事情职员,这类管理系统紧张是采取C/s模式,这种模式可以担保数据的安全和存储性,数据库采取的也都是繁芜、高性能的数据库,这类管理系统须要利用职员经由定期的培训才可以利用。
随着网络的快速发展,这类管理系统的缺陷也逐渐暴露出来,由于采取C/s模式就必须哀求固定的客户端,这就须要足够严格的客户端条件,一旦客户端涌现问题,系统里的数据都会涌现问题,稳定性差,而且C/s模式的系统最大的问题是不能多次修正,如果系统经由了多次的补充、修正就会造成运行出错,为系统的利用造成不便。
传统的管理系统常日采取的是脚本措辞,脚本措辞不足成熟,更随意马虎出错,造成利用职员的丢失。
### 2.3.2本基于Java的通讯录管理系统剖析通过对传统管理系统的剖析创造紧张问题在于系统的模式架构上和数据库上。
想要数据更为稳定就须要更稳定的数据库,好的数据库可以担保系统拥有更大的容错率和移植性,也可以在多种数据库中进行相互结合以此来担保系统里数据的安全。
同时还须要把稳系统的延续性,时期不断的发展,就会哀求系统的做事更加的完善。
想要使系统的生命周期更长就须要更为成熟的开拓措辞、技能、环境等。

本基于Java的通讯录管理系统采取的模式架构为B/s,B/s框架可以分开固定的客户端,把系统支配到浏览器上供用户利用,还可以把功能进行模块划分使数据库和操作界面分开,这样可以实现当任何一方涌现问题时,另一方不受影响。
数据库采取Mysql,Mysql数据库可以单独运行,当用户在进行操作后可自动保存操作后的数据,改变须要去数据库里修正数据的问题。
开拓措辞采取Java,Java措辞为动态措辞,利用韶光长久,已发展的非常成熟。
本系统的其它技能包括Eclipse运行软件,VUE网页技能,Html技能等都是经由韶光磨练的。
## 2.4系统功能剖析 本人参考大量的办公管理软件以及充分调查用户和管理员需求,设计出的本基于Java的通讯录管理系统利用角色为用户、管理员。
框架界面分为用户操作界面、管理员操作界面。
用户的功能设计为个人信息修正、密码重置、公告管理、记事本管理、通讯录管理、待办事项管理,管理员的功能设计为用户信息更新、管理员账号设置和密码重置、公告发布、记事本管理、通讯录设置、待办事项记录、用户管理、根本数据管理。
## 2.5系统性能剖析 在系统剖析中还有主要的一点便是系统的性能剖析,除却系统的功能剖析其它问题都可以划分到系统的性能剖析。
紧张包括系统数据问题、系统运行问题、系统安全问题。

系统数据问题表现在数据库的设计中,由于基于Java的通讯录管理系统的核心在于各种信息的管理,在统计信息操作中会引起多种数据的变革。
想要数据在变革时不会出错就须要在数据库设计时把稳不同数据字段、类型等的主外键联系;系统的运行问题表现在多平台、多人在运行系统时的稳定性。
系统的运行速率也须要把稳,运行的卡顿、读码速率等都须要经由多次测试;系统的安全性问题表现在不同角色的利用权限,用户做为普通职员的角色不能越权,管理员做为权限最多的角色要可以管理其它几种角色。
## 2.6用例图根据功能剖析得出,本系统的紧张利用角色为管理员和用户。
用户可以核对待办事项、记录记事本、通讯录、浏览公告等。
管理员可以管理管理员信息、用户的资料、管理根本数据、通讯录、待办事项信息等。
系统管理员用例图如下图2-1所示:

图2-1基于Java的通讯录管理系统管理员用例图

用户用例图如下图2-2所示:

图2-2基于Java的通讯录管理系统用户用例图 ## 2.7系统业务流程 业务流程可以按照用户利用本系统的步骤进行设计。
本系统中用户的流程为管理待办事项、记事本、通讯录、个人资料信息、浏览公告。
管理员的流程为管理用户信息、管理员信息、管理通讯录信息、待办事项信息、记事本信息等。
基于Java的通讯录管理系统的业务流程如下图2-3所示:

图2-3基于Java的通讯录管理系统业务流程图

(1)用户登录是利用本系统的必经之路,在登录时须要输入信息、判断信息。
用户登录的流程图如下图2-4所示:

图2-4用户登录的流程图

(2)用户添加通讯录时须要判断填写的信息是否精确,当填写的信息都为精确时才可以把通讯录添加成功。
用户添加通讯录流程图如下图2-5所示:

图2-5用户添加通讯录流程图

第3章 系统设计 ## 3.1系统体系构造系统的体系构造非常主要,每每决定了系统的质量和生命周期。
针对不同的系统可以采取不同的系统体系构造。
本系统为基于Java的通讯录管理系统,属于开放式的平台,以是在体系构造中采取B/s。
B/s构造抛弃了固定客户端哀求,采取做事器、客户真个模式。
用户操作界面和管理员操作界面分开展示。
B/s构造基于互联网,须要网络的支持,由用户在浏览器上发布命令,做事器卖力向数据库传送命令,末了再由做事器把反馈的结果传回浏览器给用户进行呈现。
## 3.2系统功能构造 系统的功能构造是系统实现的框架,本系统的紧张构造为管理员和用户。
管理员的功能为个人中央管理、用户管理、根本数据信息管理、通讯录信息管理、记事本信息管理、待办事项信息管理等。
用户的功能为个人中央管理、公告信息管理、通讯录管理和待办事项信息管理等。
本基于Java的通讯录管理系统功能构造图如下图3-1所示:

图3-1基于Java的通讯录管理系统功能构造图 ## 3.3数据库设计 数据库设计在系统设计中霸占重大比例,数据库的设计包括ER图设计和数据库表设计。
### 3.3.1ER图设计 根据本系统的特点,本系统设计的紧张实体包括管理员信息、用户信息、通讯录信息、待办事项信息、记事本信息等。

管理员ER图包括的属性有管理员的编号、用户名和密码。
管理员ER图如下图3-2所示:

图3-2管理员实体的ER图

通讯录信息包含的属性为通讯录的详细描述,有编号、用户姓名、手机号等。
通讯录信息ER图如下图3-3所示:

图3-3通讯录信息实体ER图

(3)用户信息的属性包括用户的个人资料,有姓名、性别、电话等。
用户信息实体ER图如下图3-4所示:

图3-4用户实体ER图

(4)待办事项信息实体的属性有编号、用户姓名等。
待办事项信息实体ER图如下图3-5所示:

图3-5待办事项信息实体ER图

(7)本基于Java的通讯录管理系统的整体实体关系图如下图3-6所示:

图3-6系统关系ER图 ### 3.3.2数据库表设计根据数据ER图的设计,本系统的数据库表有管理员信息表、用户信息表、待办事项信息表、通讯录信息表等。
本系统的数据库表如下图3-1至3-9所示:

表3-1 config

表3-2 daibanshixiang

表3-3 dictionary

表3-4 gonggao

表3-5 jishiben

表3-6 token

表3-7 tongxunlu

表3-8 users

表3-9 yonghu

第4章 系统实现 ## 4.1系统调试运行在电脑上安装Eclpse软件和Mysql软件后,先打开Mysql软件,运行数据库。
数据库运行成功后可以看到本系统所创建的所有数据库表。
然后打开Eclipse软件,在打开本系统的源码后可以进走运行,运行成功后可以涌现系统登录的界面。
系统调试运行界面如下图4-1所示:

图4-1系统运行调试界面 ## 4.2登录功能的界面实现 系统运行调试后,须要登录。
登录界面设计的目的是担保当前的利用角色等级。
管理员同样须要登录后才可以进行操作。
在登录界面里加入了权限的选择,在登录时只须要填写用户账号和密码、选择权限就可以实现。
用户登录的运行界面如下图4-2所示:

图4-2用户登录的运行界面

在登录的界面中包含的元素有系统题目、输入框、登录按钮、选择框。
本系统的利用权限为管理员和用户。
权限选择框的运行界面如下图4-3所示:

图4-3权限选择框运行界面 ## 4.3管理员功能的设计实现 ### 4.3.1用户信息管理功能的实现界面 用户的信息可由管理员审核,用户的资料由注册时形成。
本功能设计的目的是查询和审核用户的资料,当创造不当的利用用户可以删除其账号。
当删除用户信息后相对应的用户信息表里的信息也会随着删除掉。
查询用户信息功能的运行界面如下图4-4所示:

图4-4查询用户信息功能的运行界面 ### 4.3.2 个人中央管理功能的实现界面个人中央管理的内容包括修正密码和个人信息的修正。
本系统中可以拥有多个管理员。
个人中央管理功能的运行界面如下图4-5所示:

图4-5个人中央管理功能的运行界面 ### 4.3.3公告管理功能的实现界面 用户浏览的公告都是由管理员在此功能里进行掩护添加的,同样当管理员添加、编辑公告信息后,数据库表中的公告信息表也会发生改变。
公告信息管理功能的运行界面如下图4-6所示:

图4-6公告信息管理功能的运行界面

在添加公告信息时可以取消和提交。
发布新公告的运行界面如下图4-7所示:

图4-7发布新公告的运行界面 ### 4.3.4 根本数据管理功能的实现界面 管理员可以设置记事本类型、待办事项类型、通讯录类型。
类型的编号不能为空。
设置记事本类型功能的运行界面如下图4-8所示:

图4-8设置记事本类型运行界面

输入待办事项类型可以查询待办事项。
待办事项类型查询运行界面如下图4-9所示:

图4-9待办事项类型查询的运行界面展示 ### 4.3.5记事本管理功能的实现界面  管理员可以记录日常事务,并查询其它用户发布的记事本信息和进行必要的修正、删除。
查询记事本信息功能的实现界面如下图4-10所示:

图4-10查询记事本信息功能的实现界面 ### 4.3.6通讯录管理功能的实现界面 管理员可以设置通讯录信息,也可以看到其它用户设置的通讯录信息。
管理员查询通讯录信息的实现界面如下图4-11所示:

图4-11管理员查询通讯录的实现界面 ### 4.3.7待办事项管理功能的实现界面管理员可以查询和修正、删除、编辑待办事项。
查询待办事项信息的实现界面如下图4-12所示:

图4-12查询待办事项信息的实现界面 ## 4.4用户角色功能的界面实现 ### 4.4.1日常安排管理功能的界面实现 用户可以查询日常安排详情,也可以输入日常安排标题进行日常安排信息的查询,还要以发布新的日常安排信息,用户发布日常安排信息功能的运行界面如下图4-12所示:

图4-12用户发布新日常安排信息功能的运行界面 ### 4.4.2记事本管理功能的实现界面 用户可以查询记事本的内容也可以设置新的记事本信息。
查询记事本信息功能的运行界面如下图4-13所示:

图4-13查询记事本信息功能的运行界面 ### 4.4.3个人资料管理功能的实现界面  用户可以修正个人的资料,可以使个人的资料更准确。
修正个人资料的实现界面如下图4-14所示:

图4-14修正个人资料的功能实现界面 ### 4.4.4通讯录管理功能的界面实现 用户可以查询自己的通讯录并登记新的登记录。
添加通讯录功能的实现界面如下图4-15所示:

图4-15添加通讯录功能的实现界面 ### 4.4.5待办事项管理功能的实现界面用户在系统中可以记录待办事项,添加待办事项功能的实现界面如下图4-16所示:

图4-16添加待办事项功能的实现界面 ### 4.4.6公告管理功能的实现界面用户可以浏览公告内容,实现界面如下图4-17所示:

图4-17浏览公告信息的实现界面

第5章 系统测试 # 系统测试的方

TongxunluServiceImpl.java

package com.service.impl;import com.utils.StringUtil;import org.springframework.stereotype.Service;import java.lang.reflect.Field;import java.util.;import com.baomidou.mybatisplus.plugins.Page;import com.baomidou.mybatisplus.service.impl.ServiceImpl;import org.springframework.transaction.annotation.Transactional;import com.utils.PageUtils;import com.utils.Query;import org.springframework.web.context.ContextLoader;import javax.servlet.ServletContext;import javax.servlet.http.HttpServletRequest;import com.dao.TongxunluDao;import com.entity.TongxunluEntity;import com.service.TongxunluService;import com.entity.view.TongxunluView;/ 通讯录 做事实现类 /@Service("tongxunluService")@Transactionalpublic class TongxunluServiceImpl extends ServiceImpl<TongxunluDao, TongxunluEntity> implements TongxunluService { @Override public PageUtils queryPage(Map<String,Object> params) { if(params != null && (params.get("limit") == null || params.get("page") == null)){ params.put("page","1"); params.put("limit","10"); } Page<TongxunluView> page =new Query<TongxunluView>(params).getPage(); page.setRecords(baseMapper.selectListView(page,params)); return new PageUtils(page); }}CommonUtil.java

package com.utils;import java.util.Random;public class CommonUtil { / 获取随机字符串 @param num @return / public static String getRandomString(Integer num) { String base = "abcdefghijklmnopqrstuvwxyz0123456789"; Random random = new Random(); StringBuffer sb = new StringBuffer(); for (int i = 0; i < num; i++) { int number = random.nextInt(base.length()); sb.append(base.charAt(number)); } return sb.toString(); }}ConfigServiceImpl.java

package com.service.impl;import java.util.Map;import org.springframework.stereotype.Service;import com.baomidou.mybatisplus.mapper.EntityWrapper;import com.baomidou.mybatisplus.plugins.Page;import com.baomidou.mybatisplus.service.impl.ServiceImpl;import com.dao.ConfigDao;import com.entity.ConfigEntity;import com.service.ConfigService;import com.utils.PageUtils;import com.utils.Query;/ 系统用户 /@Service("configService")public class ConfigServiceImpl extends ServiceImpl<ConfigDao, ConfigEntity> implements ConfigService { @Override public PageUtils queryPage(Map<String, Object> params) { Page<ConfigEntity> page = this.selectPage( new Query<ConfigEntity>(params).getPage(), new EntityWrapper<ConfigEntity>() ); return new PageUtils(page); }}setMenu.js

 function setMenu(){ $('#navUl').append("<li class=\"nav-item dropdown\"><a class=\"nav-link dropdown-toggle\" data-toggle=\"dropdown\" href=\"#\" role=\"button\" aria-haspopup=\"true\" aria-expanded=\"false\">个人中央</a><div class=\"dropdown-menu\"><a class=\"dropdown-item\" href="+baseUrl+"jsp/modules/center/updatePassword.jsp"+">修正密码</a><a id=\"myinfo\" class=\"dropdown-item\" href="+baseUrl+"jsp/modules/center/info.jsp"+">个人信息</a></div></li>") var role = window.sessionStorage.getItem('role'); for(var i=0;i<menus.length;i++){ // 找到当前登录角色的菜单 if(menus[i].roleName == role){ var menu = menus[i].backMenu; for(var j=0;j<menu.length;j++){ // 一级菜单 var menuItem = document.createElement('li'); menuItem.setAttribute('class','nav-item dropdown'); var itemHref = document.createElement('a'); itemHref.setAttribute("class","nav-link dropdown-toggle"); itemHref.setAttribute('data-toggle','dropdown'); itemHref.setAttribute('href','#'); itemHref.setAttribute("role","button"); itemHref.setAttribute("aria-haspopup","true"); itemHref.setAttribute("aria-expanded","false"); itemHref.innerHTML = menu[j].menu; menuItem.appendChild(itemHref); var menuChildDiv = document.createElement('div'); menuChildDiv.setAttribute('class','dropdown-menu'); var menuChild = menu[j].child; var secondMenuName = ""; for(var k=0;k<menuChild.length;k++){ // 二级菜单 var menuChildHref = document.createElement('a'); menuChildHref.setAttribute("class","dropdown-item"); if(secondMenuName == menuChild[k].tableName && secondMenuName != ""){ var childHrefAttr = "${pageContext.request.contextPath}/jsp/modules/" + menuChild[k].tableName + "/graph.jsp" ; }else{ var childHrefAttr = "" ; if(menuChild[k].tableName.length>6 && menuChild[k].tableName.substr(0, 6)=="orders") { //订单管理 var orderStatus = menuChild[k].tableName.substr(7); childHrefAttr = "${pageContext.request.contextPath}/jsp/modules/orders/list.jsp?orderStatus="+orderStatus ; }else { childHrefAttr = "${pageContext.request.contextPath}/jsp/modules/" + menuChild[k].tableName + "/list.jsp" ; } secondMenuName = menuChild[k].tableName; } menuChildHref.setAttribute('href',childHrefAttr); menuChildHref.innerHTML = menuChild[k].menu ; menuChildDiv.appendChild(menuChildHref); } menuItem.appendChild(menuChildDiv); $('#navUl').append(menuItem); } } } }声明

本博客适用于广泛的学术和教诲用场,包括但不限于个人学习、开拓设计,产品设计。
仅供学习参考,旨在为读者供应深入理解和学术研究的材料。

java系统设计,毕设辅导