码迷,mamicode.com
首页 > 编程语言 > 详细

基于JavaBean的在线日常事务管理系统

时间:2020-04-03 23:47:58      阅读:94      评论:0      收藏:0      [点我收藏+]

标签:sun公司   好的   resource   动态网页   文件   back   自己   项目   互联网   

获取项目源文件,技术交流与指导联系Q1225467431

 

[摘要] 随着计算机技术的飞速发展,计算机技术在信息管理中的应用也越来越普及。人们可以脱离传统的记事本,通讯录,越来越多的靠计算机来帮助人们完成这些功能,非常的快捷方便。所以使用计算机来实现记事本,通讯录以及类似的其他功能也是大势所趋的。本系统是一个在线的日常事务管理系统,采用J2EE,JavaBean,Jsp,MySql等技术来实现。系统包括了记事本,通讯录,资源的上传下载,收藏夹这几个主要功能,还有用户登录以及后台管理的辅助功能,界面友好,操作简单。本系统集成了这几个日常常用的功能,帮助人们摆脱使用传统记事本等带来的麻烦,方便了人们的日常生活。

 

[关键词] J2EE MySql 管理系统

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Online Management System Of Daily Routine Based on JavaBean

 

[Abstract] With the rapid development of computer technology, computer technology is becoming increasingly popular in information management applications. People can get rid of traditional notepad and address book, rely on computers to help them accomplish these functions more and more, very quick and easy. So the use of computers to achieve notepad, address book and other features is the general trend. This system is an online management system of daily routine, using J2EE,JavaBean,Jsp,MySql and other technologies. The system includes these main features,notepad, contacts, uploading and downloading resources, favorites, as well as auxiliary functions includes user registration and background management, friendly interface, easy to operate. The system integrates these daily common features that help people get rid of the traditional trouble of using Notepad, facilitate people‘s daily lives.

 

[Key words] J2EE MySql Management System  

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1 引言 1

1.1 项目开发背景和意义 1

1.2 论文研究的内容 1

2 系统解决方案 2

2.1 需求分析 2

2.1.1 功能需求 2

2.1.2 系统实现过程分析 2

2.1.3 开发环境分析 3

2.2 技术简介 3

2.2.1 Java Enterprise Edition简介 3

2.2.2 JavaBean简介 4

2.2.3 Jsp 简介 4

3 系统总体设计 6

3.1 系统结构图 6

3.2 系统模块划分 6

3.2.1 用户注册和登录模块 6

3.2.2通讯录功能模块 6

3.2.3 记事本功能模块 7

3.2.4 收藏夹功能模块 7

3.2.5 存储模块 7

3.2.6 后台管理模块 7

4 数据库设计 8

4.1 数据库分析 8

4.2 数据库概念结构设计 8

4.3 数据库逻辑结构设计 10

5 系统详细设计 13

5.1 用户注册和登录模块 13

5.1.1 登录功能 13

5.1.2 注册功能 15

5.2 通讯录功能模块 16

5.2.1 添加联系人 16

5.2.2 删除联系人 17

5.2.3 查询联系人 18

5.3 记事本功能模块 19

5.3.1添加事件 19

5.3.2 查询事件 19

5.4 收藏夹功能模块 20

5.4.1 添加收藏 20

5.4.2 修改收藏 21

5.5 存储资源模块 22

5.5.1 上传文件 22

5.5.2 下载文件 23

5.5.3 删除文件 24

5.6 后台管理模块 24

5.6.1 管理员登录 24

5.6.2  删除注册用户 26

5.6.3  修改管理员信息 27

5.7 数据库操作模块 28

5.7.1 数据库操作 28

5.7.2 分页技术 28

6系统测试与维护 30

6.1系统测试 30

6.2系统维护 32

7 结论 33

  34

参考文献 35

 


 

 

1 引言

 

 

 

1.1 项目开发背景和意义

 

随着时代的发展,科技也在不断地改变和发展。作为21世纪的新人类,网络已经成为我们生活中不可或缺的一部分。越来越多的人依赖网络,需要网络的各种服务来为自己的生活提供便利。现在网络上的各种服务和不同功能的网站也越来越多,发展也在日趋成熟。我们可以在网络上购物,充话费,也可以利用网络分享资源,可以在网络上或者利用云来存储我们的日常信息和资源。而且网络可以让我们更快的获取资讯,能够实时的观测某些数据的变化,能够随时随地的实现某些需求,如查询信息,查询路况等。

 

而随着网络的普及和这些功能的需求的增长,有很多不同的网站出现,纷繁复杂。当我们想要使用它们来完善日常的生活和办公时,可能需要登录不同的网站和系统,来满足自己的各种不同的需求。而这个系统的开发,就是为了方便人们的生活和工作,将一部分人们日常用的比较多的功能集合在一个系统平台上,这样,人们就能使用同一个账户,在同一个平台上,实现不同的需求操作。

 

本系统主要集合的功能有四个,包括通讯录,收藏夹,存储资源,事件记录。而且这几个功能一般都是以客户端单机版的形式出现。这几个功能在生活中比较常用,而且,有时候,我们会遇到想要使用其中某个功能,但是由于没有携带的原因而无法实现。而这个系统就是为了解决人们的这些麻烦而设计的。有了它,就可以随时随地的上网查看自己所需的信息,而且可以使用一个账号,在同一个平台上实现这些不同的功能,省去了不同账号密码的记忆混淆等麻烦。这个系统可以更加方便我们的生活。

 

 

 

1.2 论文研究的内容 

 

要设计并实现这个系统,主要要实现的内容如下:

 

·要能实现用户的注册和登录,以及用户信息的修改。

 

·要能支持对联系人的添加,删除,修改和查询。

 

·要能支持对记事本中事件信息的添加,删除,查询等。

 

·要能查询,添加,删除用户感兴趣的网站url地址。

 

·要能支持用文件的上传,下载和删除的功能。

 

·要能实现管理员对后台的管理,包括用户信息的修改,删除以及管理员信息的修改。

 

 

 

 

 

 

 

2 系统解决方案

 

 

 

2.1 需求分析

 

本系统需要用户先注册,若已有账号,则需要登录,然后就能进入主界面。在主界面中,用户可以根据自己的需求选择不同的模块,不同模块都有一个图标,可以链接到不同模块的主界面。而不同模块中又有删除,添加,查询等不同功能,会通过链接以及数据提交等转到各自对应的页面。

 

 

 

2.1.1 功能需求

 

下面就是本系统的具体功能需求:

 

(1) 通讯录模块

 

这个模块主要实现的功能是保存用户联系人的姓名,电话,邮箱,地址等信息,并能够查询,删除,修改联系人的信息。

 

(2) 记事本模块

 

这个模块用来记录用户想要记住的日常事务,待办事项,或者一些用户感兴趣的

 

信息,同时能够查询,删除,修改事件的信息。

 

(3) 收藏夹模块

 

这个模块主要实现保存用户感兴趣的网页的url地址,并能查询,添加,删除收

 

藏的url地址。

 

(4) 存储资源模块

 

主要实现文件的上传和下载,还有删除功能,满足用户文件的共享。

 

(5) 用户注册和登录

 

用户可以注册成为普通用户,然后可以登录系统,使用系统的其他功能,并且可以修改用户自己的密码,邮箱等信息。

 

(6) 后台管理模块

 

管理员可以登录系统,对后台进行管理,包括普通用户信息的修改,删除等,也可以进行管理员信息的修改。

 

 

 

2.1.2 系统实现过程分析

 

首先根据系统功能分析设计出数据库,以及数据库中的各个数据表。在实现各个功能模块时,采用先模块化,后集成的方式。即对系统各个功能模块分别独立设计和调试,在创建系统主窗体时再将各个功能模块通过主窗体的功能按钮集成到一起,最后进行系统整体设计调试。

 

在访问数据库时,采用公用数据模块存放访问数据库需要的对象。该模块在各功能模块中被直接调用,避免对数据库的反复连接,并可减少代码编写,从而提高系统开发效率。

 

 

 

2.1.3 开发环境分析

 

开发环境:Windows 7

 

开发工具:Java

 

开发平台:MyEclipse 8.6

 

数据库管理系统:Mysql

 

运行环境:Windows 7

 

 

 

2.2 技术简介

 

2.2.1 Java Enterprise Edition简介

 

Java企业版(Java Enterprise Edition),是Sun公司为企业级应用推出的标准平台[5]。核心是一组技术规范与指南,其中所包含的各类组件、服务架构及技术层次,均有共同的标准及规格,让各种依循J2EE架构的不同平台之间,存在良好的兼容性,解决过去企业后端使用的信息产品彼此之间无法兼容,企业内部或外部难以互通的窘境。

 

J2EE为搭建具有可伸缩性、灵活性、易维护性的商务系统提供了良好的机制:

 

(1) 保留现存的IT资产:

 

J2EE架构可以充分利用用户原有的投资,如一些公司使用的BEA TuxedoIBM CICS,IBM Encina,、Inprise VisiBroker 以及Netscape Application Server。这之所以成为可能是因为J2EE拥有广泛的业界支持和一些重要的‘企业计算‘领域供应商的参与。每一个供应商都对现有的客户提供了不用废弃已有投资,进入可移植的J2EE领域的升级途径。由于基于J2EE平台的产品几乎能够在任何操作系统和硬件配置上运行,现有的操作系统和硬件也能被保留使用。

 

(2) 高效的开发:

 

J2EE允许公司把一些通用的、很繁琐的服务端任务交给中间供应商去完成。这样开发人员可以集中精力在如何创建商业逻辑上,相应地缩短了开发时间。

 

(3) 支持异构环境:

 

J2EE能够开发部署在异构环境中的可移植程序。基于J2EE的应用程序不依赖任何特定操作系统中间件、硬件。因此设计合理的基于J2EE的程序只需开发一次就可部署到各种平台。这在典型的异构企业计算环境中是十分关键的。J2EE标准也允许客户订购与J2EE兼容的第三方的现成的组件,把他们部署到异构环境中,节省了由自己制订整个方案所需的费用。

 

(4) 可伸缩性:

 

企业必须要选择一种服务器端平台,这种平台应能提供极佳的可伸缩性去满足那些在他们系统上进行商业运作的大批新客户。基于J2EE平台的应用程序可被部署到各种操作系统上。例如可被部署到高端UNIX与大型机系统,这种系统单机可支持64至256个处理器。(这是NT服务器所望尘莫及的)J2EE领域的供应商提供了更为广泛的负载平衡策略。能消除系统中的瓶颈,允许多台服务器集成部署。这种部署可达数千个处理器,实现可高度伸缩的系统,满足未来商业应用的需要。

 

(5) 稳定的可用性:

 

一个服务器端平台必须能全天候运转以满足公司客户、合作伙伴的需要。因为INTERNET是全球化的、无处不在的,即使在夜间按计划停机也可能造成严重损失。若是意外停机,那会有灾难性后果。J2EE部署到可靠的操作环境中,他们支持长期的可用性。一些J2EE部署在WINDOWS环境中,客户也可选择鲁棒性更好的操作系统Sun Solaris、IBM OS/390。鲁棒性最好的操作系统可达到99.999%的可用性或每年只需5分钟停机时间。这是实时性很强商业系统理想的选择。

 

 

 

2.2.2 JavaBean简介

 

JavaBean 是一种JAVA语言写成的可重用组件[1]。用户可以使用JavaBean将功能、处理、值、数据库访问和其他任何可以用java代码创造的对象进行打包,并且其他的开发者可以通过内部的JSP页面、Servlet、其他JavaBean、applet程序或者应用来使用这些对象。用户可以认为JavaBean提供了一种随时随地的复制和粘贴的功能,而不用关心任何改变。

 

JavaBean可分为两种:一种是有用户界面(UI,User Interface)的JavaBean;还有一种是没有用户界面,主要负责处理事务(如数据运算,操纵数据库)的JavaBean[13]JSP通常访问的是后一种JavaBean[2]

 

一个bean没有必须继承的特定的基类或接口。可视化的bean必须继承的类是java.awt.Component,这样它们才能添加到可视化容器中去,非可视化bean则不需要继承这个类。有许多bean,无论是在应用程序构造器工具中,还是在最后创建好的应用程序中,都具有很强的可视化特征,但这并非每个bean必须的特征。在使用Java编程时,并不是所有软件模块都需要转换成bean。Bean比较适合于那些具有可视化操作和定制特性的软件组件

 

 

 

2.2.3 Jsp 简介

 

JSP(Java Server Pages)是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准[6]JSP技术有点类似ASP技术,它是在传统的网页HTML文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件(*.jsp)。 用JSP开发的Web应用是跨平台的,既能在Linux下运行,也能在其他操作系统上运行[7]

 

全名为java server page,其根本是一个简化的Servlet设计,他实现了Html语法中的java扩张(以 <%, %>形式)。JSP与Servlet一样,是在服务器端执行的,通常返回给客户端的就是一个HTML文本,因此客户端只要有浏览器就能浏览。Web服务器在遇到访问JSP网页的请求时,首先执行其中的程序段,然后将执行结果连同JSP文件中的HTML代码一起返回给客户端。插入的Java程序段可以操作数据库、重新定向网页等,以实现建立动态网页所需要的功能[4]

 

JSP技术使用Java编程语言编写类XML的tags和scriptlets,来封装产生动态网页的处理逻辑。网页还能通过tags和scriptlets访问存在于服务端的资源的应用逻辑。JSP将网页逻辑与网页设计的显示分离,支持可重用的基于组件的设计,使基于Web的应用程序的开发变得迅速和容易[11] JSP(JavaServer Pages)是一种动态页面技术,它的主要目的是将表示逻辑从Servlet中分离出来[9]

 

JSP页面由HTML代码和嵌入其中的Java代码所组成。服务器在页面被客户端请求以后对这些Java代码进行处理,然后将生成的HTML页面返回给客户端的浏览器。Java Servlet是JSP的技术基础,而且大型的Web应用程序的开发需要Java Servlet和JSP配合才能完成[8]JSP具备了Java技术的简单易用,完全的面向对象,具有平台无关性且安全可靠,主要面向因特网的所有特点。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3 系统总体设计

 

 

 

3.1 系统结构图

 

系统包括了用户登录,管理员登录,通讯录,记事本,收藏夹,存储资源这几个模块,它们相互之间会传递信息,实现整个系统的联通。系统的结构如图3-1所示:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3-1 系统结构图

 

 

 

 

 

3.2 系统模块划分

 

根据初期的设计思想和需求分析的结果,根据本平台要达到的功能要求,本系统大致可以抽象为以下几个模块:

 

3.2.1 用户注册和登录模块

 

用户注册和登录模块是整个系统的开始,一输入本系统的url地址就会进入用户登录的界面。如果没有注册,需要通过链接进入注册页面来进行注册。注册后的用户名和密码等信息会存入数据库。若是管理员,可以选择管理员登录来进行后台的登录。

 

在用户输入密码和用户名时都不能为空,使用javascript来检测是否为空,并给予提醒。然后系统会根据数据库中查询到的密码与输入密码是否相等来判断是否转到主页面,若是不相等则会弹出警告,希望用户重新输入。

 

3.2.2通讯录功能模块

 

当用户进入这个模块相对应的页面时,用户可以按条件分类搜索联系人,系统会使用分页技术把相关的信息显示在这个页面。当用户想要添加或删除联系人时,可以通过图标文字的链接,到相应操作的页面去。

 

在添加页面,有一个表单,用户可以在这个表单中输入联系人信息,电话,姓名,地址,邮箱,分类等。然后提交表单,系统会将相关信息存入对应的数据库表中。

 

删除操作时,会到删除页面,询问是否删除,确定的话就会执行SQL语句,将信息删除。

 

3.2.3 记事本功能模块

 

这个模块类似于通讯录模块,主要是执行事件的添加,删除,修改,查询等。也是由表单来把数据提交给保存页面,在保存页面中会使用SQL语句,把事件内容存入数据库中,修改,删除等都有对应的页面,会执行对应的SQL语句,来实现对应的功能。

 

3.2.4 收藏夹功能模块

 

这个模块会将用户感兴趣的网站的url存储的到数据库中,用户可以查询,删除之前保存的地址。

 

3.2.5 存储模块

 

这个模块中,可以实现用户对文件的上传下载,删除等功能。在用户注册时,系统会为每个用户建立一个文件夹,当有文件上传时,会上传到那个相应的文件夹中,当要下载时,则会下载到用户要求的本地位置。用户也可以通过相应页面的操作删除上传的文件。

 

3.2.6 后台管理模块

 

管理员可以在用户登录页面中选择相应链接到管理员的登录页面。进入后台后,可以查看,修改,删除普通用户的信息。管理员也可以通过修改页面修改管理员的相关信息,这些操作都会使用不同的SQL语句来对相应的数据库进行操作。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4 数据库设计

 

 

 

数据库是项目中非常重要的一个组成,没有好的数据库设计以及数据库的选用,那么一个系统将可能无法真正的投入测试和使用。

 

 

 

4.1 数据库分析

 

本系统使用MySQL数据库,它是一个开放源码的关系数据库管理系统[10],开发者为瑞典MySQL AB公司[12],现为Sun公司的一部分。2009年Oracle宣布收购Sun公司,因此MySQL可能成为Oracle旗下产品。由于使用的是windows7的平台,而sqlserver在这个平台上不易安装,所以考虑使用mysql数据库,能够安装并且使用方便。

 

 

 

4.2 数据库概念结构设计

 

将需求分析得到的用户需求抽象为信息结构即概念模型的过程就是概念结构设计[3]。它是整个数据库设计的关键。概念结构是各种数据模型的共同基础,它比数据模型更独立于机器、更抽象,从而更加稳定。

 

描述概念模型的有力工具是E-R模型,通过对系统数据库的需求分析得知应建立“管理员信息表”、“用户信息表”、“通讯录表”、“收藏夹表”、“记事本表”。

 

系统中管理员的实体图如图4-1所示

 

 

 

 

 

 

 

 

 

 

 

 

 

4-1 管理员实体图

 

 

 

 

 

 

 

 

 

系统的普通用户的实体图如图4-2所示:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  4-2 用户实体图

 

 

 

系统的通讯录实体图如图4-3所示:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4-3 通讯录实体图

 

 

 

 

 

 

 

 

 

 

 

 

 

系统的记事本实体图如4-4所示:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4-4 记事本实体图

 

 

 

系统的收藏夹实体图如图4-5所示:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  4-5 收藏夹实体图

 

 

 

4.3 数据库逻辑结构设计

 

关系模型主要是其中的实体和实体间的联系均是由单一的结构类型即关系(表)来表示的。

 

数据库中两实体间1:n联系转换为一个与n端对应的关系模式合并的关系模式的方法是将联系的属性与1端的码加入n端作为属性,主码为n端实体的主码。

 

图转换为关系数据模型所要解决的问题是如何将实体和实体间的联系转换成关系模式,如何确定这些关系模式的属性和码。

 

(1) 管理员信息表(admin表)用来存储管理员编号,管理员用户名,管理员密码等,如表4-1所示:

 

 

 

 

 

 

 

表4-1 admin表

 

字段名

类型及大小

id

int

username

varchar(40)

password

varchar(40)

 

 

 

 

 

(2) 用户信息表(users表)用来存储用户的编号,用户名,用户密码,用户邮件地址,用户注册日期和用户的qq号,如表4-2所示:

 

表4-2 users表

 

字段名

类型及大小

id

int

username

varchar(40)

password

varchar(40)

email

varchar(40)

date

datetime

qq

varchar(40)

 

 

 

 

 

(3) 通讯录表(list表)用来存储联系人编号,用户编号,联系人地址,电话等信息,如表4-3所示:

 

4-3 list表

 

字段名

类型及大小

id

int

user

int

sort

varchar(40)

name

varchar(40)

mobile

varchar(40)

home

varchar(40)

office

varchar(40)

email

varchar(40)

qq

varchar(40)

msn

varchar(40)

post

varchar(10)

address

varchar(40)

other

varchar(90)

 

 

 

 

 

4)记事本表(note表)用来存储事件的编号,用户姓名,事件的标题和内容,以及填写该事件的时间。如表4-4所示:

 

 

 

表4-4 note表

 

字段名

类型及大小

id

int

user

varchar(40)

title

varchar(40)

content

varchar(500)

date

datetime

 

 

 

 

 

5)收藏夹表(fav表)用来存储用户姓名,收藏信息的标题和收藏的地址等信息,如表4-5所示:

 

表4-5  fav表

 

字段名

类型及大小

id

int

user

varchar(40)

title

varchar(40)

urlstr

varchar(100)

sort

varchar(20)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5 系统详细设计

 

 

 

经过前期的需求分析、总体设计、数据库分析,已经为详细设计做好了准备。本章将使用图和部分代码来实现详细设计。

 

 

 

5.1 用户注册和登录模块

 

5.1.1 登录功能

 

用户登录页面如图5-1所示:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5-1 用户登录页面

 

登录功能就是要实现用户输入用户名和密码后可以登录到主页上,若是管理员,则点击图5-1中的“管理员登录”链接到管理员登录界面,若是注册,则点击注册按钮链接到注册页面。部分实现代码和说明如下:

 

 

 

//获取用户提交的登录名和密码

 

sqlstr="select password,id from users where username=‘"+username+"‘";

 

 //调用conn.jsp页面中引入的JavaBean对象iCanDb的doSelect()方法执行查询操作

 

 rs=iCanDb.doSelect(sqlstr);

 

 //将查询得到的结果集中的密码字段与用户输入的密码进行匹配

 

 if(rs.next())

 

 {

 

  String pwd=rs.getString("password").trim();

 

  String userid=rs.getString("id").trim();

 

}

 

  //登录成功,则转向index.jsp页面

 

  

 

  

 

登录成功后会进入主页面,进入这个主页面后用户可以选择自己想要的功能模块,完成相应的需求。主页面如图5-2所示:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5-2 系统主页面

 

在主页面中主要是四个模块功能的链接。分别链接到每个模块的主页面,左边的菜单栏也可以链接到各个模块。部分实现代码如下:

 

 

 

//读取存储在session中的登录用户id查询出登录用户存储在通讯簿中联系人的数目

 

int notecount=0;

 

sqlstr="select id from note where user=‘"+iCan+"‘";

 

rs=iCanDb.doSelect(sqlstr);

 

if(rs.next())

 

  {

 

    rs.last();

 

    notecount=rs.getRow();

 

  }

 

//使用File类中的各个方法,判断用户空间中上传文件的个数

 

int boxcount=0;

 

long userBoxSize=0;

 

String iCanroot=dirPath.replace(‘\\‘,‘/‘);

 

File userBox=new File(iCanroot+"box/"+iCan);

 

File userBoxfile[]=userBox.listFiles();

 

Boxcount=userBoxfile.length;

 

 

 

 

 

 

 

 

 

 

 

 

 

5.1.2 注册功能

 

注册页面如图5-3所示:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5-3 用户注册页面

 

注册功能要实现的是用户输入用户名和密码等信息,然后系统检测用户名是否已经被注册,若没有,则将这些信息保存到users表中,创建出一个新的用户。然后会转回到登录页面登录进入主页面。部分实现代码如下:

 

 

 

//将用户输入的注册信息存储到数据库中

 

 sqlstr="insert into users(id,username,password,email,qq,date) values("+iCan+"‘"+username+"‘,‘"+password+"‘,‘"+email+"‘,‘"+qq+"‘,‘"+date+"‘)";

 

iCanDb.doAdd(sqlstr);

 

 sqlstr="select id from users where username=‘"+username+"‘";

 

 

 

保存注册信息后要为新用户创建文件夹,以便文件的上传和下载。

 

 

 

         rs=iCanDb.doSelect(sqlstr);

 

         rs.next();

 

         String id=rs.getString("id");

 

         //String dirPath="D:\\java实例\\OnlineManager";

 

         String iCanroot=dirPath.replace(‘\\‘,‘/‘);

 

         File boxPath=new File(iCanroot+"box",username);

 

         boxPath.mkdir();

 

        

 

     

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5.2 通讯录功能模块

 

5.2.1 添加联系人

 

    通讯录的添加页面如图5-4所示:

 

 

 

5-4 添加联系人页面

 

这个页面可以添加联系人的姓名,电话,地址,邮箱等信息,使用表单传给页面的保存操作,执行SQL语句,把这些信息存入数据库中。部分代码如下:

 

 

 

//如果提交的参数为save时,执行数据库插入操作

 

sqlstr="insert into list([user],[sort],[name],[mobile],[home],[office],[email],[qq],[msn],[post],[address],[other]) values(‘"+iCan+"‘,‘"+sort+"‘,‘"+name+"‘,‘"+mobile+"‘,‘"+home+"‘,‘"+office+"‘,‘"+email+"‘,‘"+qq+"‘,‘"+msn+"‘,‘"+post+"‘,‘"+address+"‘,‘"+other+"‘)";

 

 //执行数据库中的插入记录操作

 

         iCanDb.doAdd(sqlstr);

 

        

 

 

 

 

 

 

 

 

 

 

 

 

 

5.2.2 删除联系人

 

删除联系人的页面如图5-5所示:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5-5 删除联系人页面

 

    删除联系人主要是询问一下是否确定删除,若点提交就是确定,则会执行删除的SQL语句,把数据库中对应姓名的联系人信息删除,若返回,则放弃删除。部分代码如下:

 

 

 

//如果请求中的参数为del,则执行数据库中删除记录的操作

 

         sqlstr="delete from list where id="+id;

 

 //调用JavaBean中的业务逻辑方法,进行数据库删除操作

 

         iCanDb.doDelete(sqlstr);

 

if(action.equals("confirm"))

 

  {

 

try

 

 {

 

   sqlstr="select name from list where id="+id;

 

   rs=iCanDb.doSelect(sqlstr);

 

   rs.next();

 

}

 

}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5.2.3 查询联系人

 

查询联系人的页面如图5-6所示:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5-6 查询联系人页面

 

查询联系人页面,是在联系人模块主页面上输入查询的条件,然后页面会跳转到这个显示页面,显示有关这个联系人的所有信息。所有信息都是从数据库中查询出来的。部分代码如下:

 

 

 

   sqlstr="select * from list where id="+id;

 

   //调用JavaBean中的业务逻辑方法,进行数据库查询操作

 

   rs=iCanDb.doSelect(sqlstr);

 

   //循环遍历查询后得到的结果集,得到记录的每个字段

 

   if(rs.next())

 

     {

 

       String sort=rs.getString("sort");

 

       String name=rs.getString("name");

 

       String mobile=rs.getString("mobile");

 

       if(mobile==null) mobile=" ";

 

       String home=rs.getString("home");

 

       if(home==null) home=" ";

 

       String office=rs.getString("office");

 

       if(office==null) office=" ";

 

       String email=rs.getString("email");

 

       if(email==null) email=" ";

 

       String qq=rs.getString("qq");

 

       }

 

 

 

 

 

 

 

 

 

 

 

 

 

5.3 记事本功能模块

 

5.3.1添加事件

 

    事件添加的页面如图5-7所示:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5-7 事件添加页面

 

这个页面用于添加事件,用户可以输入标题和内容,然后点提交按钮,系统会将对应的内容存入数据库中。部分代码如下:

 

 

 

         sqlstr="insert into note1([user],[title],[content],[date]) values(‘"+iCan+"‘,‘"+title+"‘,‘"+content+"‘,‘"+date+"‘)";

 

         iCanDb.doAdd(sqlstr);

 

 

 

5.3.2 查询事件

 

     事件的查询页面如图5-8所示:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5-8 查询事件页面

 

查询页面中会按用户的搜索要求显示相应的记事本中的事件信息,显示标题,事件内容和存入事件的日期。部分代码如下:

 

 

 

   sqlstr="select * from note where id="+id;

 

   rs=iCanDb.doSelect(sqlstr);

 

   if(rs.next())

 

     {

 

       String title=rs.getString("title");

 

       String content=rs.getString("content");

 

       content=turn(content);

 

       Date datetemp1=rs.getDate("date");

 

       java.text.SimpleDateFormat datetemp2=new java.text.SimpleDateFormat("yyyy-MM-dd");   

 

       String date=datetemp2.format(datetemp1);}

 

 

 

 

 

5.收藏夹功能模块

 

5.4.1 添加收藏

 

     添加收藏的页面如图5-9所示:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5-9 添加收藏页面

 

收藏夹添加页面,可以输入标题,要收藏的url地址,选择url地址所属分类,然后提交,系统会将数据存入数据库。部分代码如下:

 

 

 

sqlstr="insert into fav([user],[sort],[title],[urlstr]) values(‘"+iCan+"‘,‘"+sort+"‘,‘"+title+"‘,‘"+urlstr+"‘)";

 

         iCanDb.doAdd(sqlstr);

 

}

 

 

 

5.4.2 修改收藏

 

     修改收藏夹的页面如图5-10所示:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5-10 修改收藏页面

 

 修改页面和添加页面非常类似,操作也非常类似,用户输入想要修改的信息,然后系统会把相应的数据使用update的SQL语句,更新原有的数据。部分代码如下:

 

 

 

sqlstr="update [fav] set [sort]=‘"+sort+"‘,[title]=‘"+title+"‘,[urlstr]=‘"+urlstr+"‘ where id="+id;

 

         iCanDb.doUpdate(sqlstr);

 

   sqlstr="select * from fav where id="+id;

 

   rs=iCanDb.doSelect(sqlstr);

 

   

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5.5 存储资源模块

 

5.5.1 上传文件

 

     上传文件的页面如图5-11所示:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5-11 文件上传页面

 

    在这个页面中,点击文本框就会弹出文件的选择框,用户选择自己想要上传的文件,最多三个文件,点击上传按钮提交表单到另外一个jsp文件,这个文件负责实现上传。单个文件最大为5MB,若是超过了,系统会提示,并且要求重传。上传主要使用的是SmartUpload类,这个类中的upload方法可以实现文件上传。部分代码如下:

 

 

 

// 新建一个SmartUpload对象

 

SmartUpload su = new SmartUpload();

 

// 上传初始化

 

su.initialize(pageContext);

 

// 设定上传限制

 

// 1.限制每个上传文件的最大长度。

 

 su.setMaxFileSize(5000000);//数据 以B为单位

 

// 2.限制总上传数据的长度。

 

     su.setTotalMaxFileSize(150000000);

 

// 3.设定允许上传的文件(通过扩展名限制)。

 

 su.setAllowedFilesList("rar,zip,txt.mp3,jpg,gif,ppt,doc,xls,bmp,wav,mid,dat");

 

// 4.设定禁止上传的文件(通过扩展名限制),禁止上传带有exe,bat,jsp,htm,html扩展名的文件和没有扩展名的文件。

 

 su.setDeniedFilesList("exe,bat,jsp,htm,html,asp,php,com");

 

// 上传文件

 

  su.upload();

 

  // 将上传文件全部保存到指定目录

 

String iCanroot=dirPath.replace(‘\\‘,‘/‘);

 

  su.save(iCanroot+"box/"+iCan);

 

     

 

5.5.2 下载文件

 

     文件下载的页面如图5-12所示:

 

 

 

 

 

 

 

 

 

 

 

 

 

5-12 文件下载页面

 

这是资源存取的功能页面。在这个页面中点击下载,就会把文件名传给下载操作页面,在下载操作页面中执行下载,页面会弹出窗口让用户自行选择存储到哪个空间。部分代码如下:

 

 

 

// 新建一个SmartUpload对象,用于上传和下载

 

SmartUpload su = new SmartUpload();

 

// 初始化

 

su.initialize(pageContext);

 

// 设定contentDisposition为null以禁止浏览器自动打开文件,

 

//保证点击链接后是下载文件。而不用浏览器自行打开文件

 

su.setContentDisposition(null);

 

// 下载文件

 

su.downloadFile(iCanroot+"box/"+iCan+"/"+filename);

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5.5.3 删除文件

 

     删除文件的页面如图5-13所示:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5-13 文件删除页面

 

    当用户在资源存取主页面上选择删除时,系统就会执行相应代码,把用户文件夹中用户想要删除的文件删除掉。部分代码如下:

 

 

 

//如果请求中的参数为del时,将调用File类中的delete()方法删除文件

 

if(action.equals("del"))

 

  {

 

    File delfile=new File(iCanroot+"box/"+iCan+"/"+filename);

 

    delfile.delete();}

 

 

 

 

 

5.6 后台管理模块

 

5.6.1 管理员登录

 

 管理员登录的页面如图5-14所示,登录成功以后的后台页面如图5-15所示:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5-14 管理员登录页面

 

管理员登录界面如图5-14,管理员输入用户名和密码,点击提交按钮,表单数据会提交给另外一个验证页面,验证通过,就会登录进后台,如图5-15,在后台中会显示出普通用户的使用本系统的相关情况,管理员可以管理普通用户。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5-15 后台管理页面

 

这就是管理员登录后的后台管理主页面,输入想要搜索的普通用户用户名,点击搜索可得其详细情况。部分代码如下:

 

 

 

//根据管理员登录名进行查询

 

 //将查询后得到的结果集中的密码字段与管理员登录密码进行匹配

 

 if(rs.next())

 

 {

 

  String pwd=rs.getString("password");//.trim();

 

  //String id=rs.getString("id").trim();

 

  //如果匹配成功,则表示登录密码正确

 

  if(password==password)

 

  {

 

   //session.setAttribute("iCanadmin",id);

 

   response.sendRedirect("admin.jsp");

 

  }

 

  //否则输出登录错误信息

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5.6.2  删除注册用户

 

     删除用户的页面如图5-16所示:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5-16 删除用户页面

 

在后台管理主界面上有删除链接,当想要删除某个普通用户时,就可以点击其后相应的删除字样的链接,然后会跳转到这个页面。点击提交,就执行删除操作,把对应的用户删除掉。部分代码实现如下:

 

 

 

//如果请求中包含的参数为del,则执行删除用户操作

 

if(action.equals("del"))

 

  {

 

 //从不同的数据表中删除该用户的信息

 

         sqlstr="delete from list where user=‘"+id+"‘";

 

         iCanDb.doDelete(sqlstr);

 

         sqlstr="delete from note1 where user=‘"+id+"‘";

 

         iCanDb.doDelete(sqlstr);

 

         sqlstr="delete from fav where user=‘"+id+"‘";

 

         iCanDb.doDelete(sqlstr);

 

         sqlstr="delete from users where id="+id;

 

         iCanDb.doDelete(sqlstr);

 

         //从资源区的目录中删除所有上传的文件

 

         String iCanroot=dirPath.replace(‘\\‘,‘/‘);

 

         File userBox=new File(iCanroot+"box/"+id);

 

         File userBoxfile[]=userBox.listFiles();

 

         if(userBoxfile.length>0)

 

         {

 

           for(int i=0;i<userBoxfile.length;i++)

 

           {

 

             userBoxfile[i].delete();

 

           }

 

         }

 

         userBox.delete();

 

      }

 

 

 

5.6.3  修改管理员信息

 

     修改管理员信息的页面如图5-17所示:

 

 

 

5-17 管理员信息修改页面

 

在这个页面中,管理员可以修改自己的信息,包括用户名和密码,系统会把数据更新进数据库中。部分代码如下:

 

 

 

//如果请求中提交的参数为save,则执行数据库更新操作

 

       sqlstr="update [admin] set [username]=‘"+username+"‘";

 

       if(!password.equals(""))

 

       {

 

         sqlstr=sqlstr+",[password]=‘"+password+"‘";

 

       }

 

       sqlstr=sqlstr+" where id="+(String)session.getAttribute("iCanadmin");

 

    try

 

      {

 

 //如果管理员用户名和密码都正确,则执行数据库更新操作

 

         iCanDb.doUpdate(sqlstr);

 

      }

 

  }

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5.7 数据库操作模块

 

5.7.1 数据库操作

 

本系统使用JavaBean来进行数据库操作的封装,其中封装了数据库的连接,添加数据,删除数据,更新数据,查询数据,以及关闭数据库等的操作。使用时,在其他页面的顶部使用java的usebean元素把这个数据库JavaBean引用进来。具体代码如下:

 

 

 

//建立数据库连接

 

//执行查询

 

public ResultSet doSelect(String s) throws SQLException,UnsupportedEncodingException{

 

try{

 

result=stmt.executeQuery(s);

 

}catch(Exception exception){

 

System.out.println(exception);

 

}

 

return result;

 

}

 

//执行插入操作

 

public void doAdd(String s) throws SQLException,UnsupportedEncodingException{

 

try{

 

stmt.executeUpdate(s);

 

}catch(Exception exception){

 

System.out.println(exception);

 

conn.rollback();  // 取消在当前事务中进行的所有更改,并释放此 Connection 对象当前持有的所有数据库锁

 

}

 

      }

 

//关闭数据库连接

 

public void close()throws SQLException,UnsupportedEncodingException{

 

conn.close();

 

}

 

}

 

 

 

5.7.2 分页技术

 

     分页技术是使用javabean,结合对数据库的操作来实现的。通过总记录数和用户想要显示的页数来计算总页数和用户想要显示的那一页的第一个记录的位置,然后将从数据库搜索得到的结果中的记录,从这个位置开始显示,显示一条,计数器加一,直到达到页面显示的最大记录数。部分代码实现如下:

 

 

 

//设置当前记录集合中的记录条数以及页数

 

public void setCountRecord(int i){

 

countRecord=i;

 

if(i>countPageRecord){

 

countpage=i/countPageRecord;

 

if(i>countpage*countPageRecord){

 

countpage=countpage+1;

 

}}}

 

//判断要显示的是否是第一页

 

public boolean isFirstPage(String s){

 

if(s==null)

 

s="1";

 

try{

 

dipage=Integer.parseInt(s);

 

}catch(Exception exception){

 

dipage=1;

 

}

 

boolean flag;

 

if(dipage==1)

 

flag=true;

 

else

 

flag=false;

 

return flag;

 

}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

6系统测试与维护

 

 

 

对于软件测试技术,可以从不同的角度加以分类:从是否需要执行被测软件的角度,可分为静态测试和动态测试;从测试是否针对系统的内部结构和具体实现算法的角度来看,可分为白盒测试和黑盒测试。本系统的测试主要是黑盒测试,也就是主要是功能性测试。

 

 

 

6.1系统测试

 

1)对用户注册和登录模块的测试

 

注册一个普通用户,用户名为tang,密码为654321,其他信息为空。然后可以用这个用户名登录。登录后,主页面会显示“tang,欢迎你回来”,以及tang这个用户下各个模块中的记录数。具体的页面测试在详细设计的截图中可以体现,具体的数据库测试结果如图6-1所示:

 

 

 

 

 

 

 

 

 

 

 

6-1 用户表

 

2)对通讯录功能模块的测试

 

使用添加功能添加一条联系人信息,然后使用查询,修改,删除功能,对这条联系人信息进行操作。这里添加了联系人ruby及其手机号等信息。具体的数据库结果如果6-2所示:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

6-2 通讯录表

 

 

 

3)对记事本功能模块的测试

 

添加一条记事本信息,标题为bachelor,内容为mary is a bachelor,然后执行相关的修改查询,删除等操作,具体数据库结果如图6-3所示:

 

 

 

 

 

 

 

 

 

 

 

6-3 记事本表

 

 

 

4)对收藏夹功能模块的测试

 

添加一条url地址,这里是标题为csdn,url地址为csdn技术论坛的地址。然后执行相关的增删改查各个功能,查看每个功能是否正常。输入多个数据后,查询,检测分页功能是否正确。然后删除掉多余的不要的信息。具体数据库结果如图6-4所示:

 

 

 

 

 

 

 

 

 

 

 

6-4 收藏夹表

 

 

 

5)对资源存储模块的测试

 

使用上传功能,上传“汤臻倩的个人简历”这个文件。然后把这个文件下载下来,最后还要删除这个文件。这样便可测试出上传下载以及删除的功能是否正常。若上传成功,则在查询页面中可以显示出这个文件及其相关操作。若是下载功能正常,则能选择本地的一个区域存储下载来的文件。若执行删除后,则上传的那个文件就不会显示了,查询功能对应的页面将显示无记录。

 

 

 

6)对后台管理模块的测试

 

注册一个后台用户,tang1,密码为123456,然后登录,检测后台模块的各个功能是否正常,包括删除和查询普通用户,以及修改管理员信息这几个功能。具体的数据库结果如图6-5所示:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

6-5 管理员表

 

 

 

6.2系统维护

 

网站的设计与建设是重要的,但网站的维护与更新更加重要。随着网络的快速发展,其功能,网站架构和技术支持也要不断进行发展和改进。因此网站后期的维护及扩展性非常有必要,也是非常重要的一个环节。由于实战经验的欠缺以及在时间和其它方面的原因,本网站的设计还有许多不足之处,有些地方考虑的不是很周全,希望在以后的工作中不断完善。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

7 结论

 

 

 

    网站是一种便捷的途径,可以让我们了解资讯,可以让我们学习到经验,可以让我们实现某些需求,让我们的生活和工作都更加便利,同时,也让地域限制对人的影响越来越小。有了网络,我们可以随时随地登录网站,去获得自己想要的资讯和服务。这个系统就是为了这样的目的而开发的。

 

这次设计的是一个多功能服务系统的网站。这个系统集合了几个生活中经常用到的功能模块,十分有趣。各种功能都需要一些不同的技术来实现,例如文件的上传下载。这些功能在生活中经常用到,但是以前也没有具体的去实现过。而这次的设计也让我有机会作为开发者去了解和重写体验到这些功能的内在,这是十分有趣的。

 

这次的设计是使用javabean,jsp,tomcat等技术完成的。这些技术的出现和发展为人们的互联网发展提供了巨大的便利和可能。由于缺乏实战经验,所以对很多的技术上的元素不太会使用,导致项目中总是出现错误,例如页面跳转,密码验证,还有分页等问题。但是也是因为这些错误和困难,才让我对这些技术有了更深的了解和掌握,也让我体会到这些技术的真正便利和神奇的所在。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


 

 

这次的毕业设计是在吴佳楠老师的指导下完成的,在修改设计报告期间总是耐心的为我们查看报告的内容和格式,及时的通知我们完成各个阶段的任务,十分负责,不厌其烦的指导我们完善设计报告,达到最终的要求。这次毕业设计也让我获益匪浅,让我明白应该以一种什么样的心态去面对一个新的知识领域,应该怎样协调理论和具体实践之间的关系。也让我学会如何去解决实践中遇到的各种困难。

 

同样也非常感谢其他老师,因为一个好的集体和团队是做好一切工作的前提,正是因为有了这些负责任的老师我们才能顺利完成毕业设计,为大学的学习画上一个完美的句号,再次谢谢老师们的教诲和悉心指导。感谢老师和学校给我这次学习的机会,更要感谢帮助过我的老师和同学,向他们表示我最衷心的感谢!

 

最后,我还是要特别感谢吴佳楠对我论文写作的指导,他为我完成这篇论文提供了巨大的帮助。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


参考文献

 

[1] 张爱平,赖欣.在JSP中调用JavaBean实现Web数据库访问[J].计算机时代,2007,(01).

 

[2] 李佳.基于JSP技术的网页自动生成工具的实现[J].电脑开发与应用,2009,(03).

 

[3] 张海藩.软件工程导论.清华大学出版社.2008年2月.55~73.

 

[4] 梁玉环,李村合.基于JSP的网站访问统计系统的设计与实现[J].计算机应用研究,2004.

 

[5] SUN.JavaTM 2 SDK.Standard Edition Documentation,2008年6.67~72.

 

[6] 朱海泉.基于JSP网页自动生成工具的设计与实现[J].长春师范学院学报,2006,(12) .

 

[7] 孙年芳.基于JSP网页自动生成工具的设计与实现[J].计算机与信息技术,2008,(11).

 

[8] 孙卫琴.Tomcat与Java Web开发技术详解(第2版).电子工业出版社,2009年3月.10~12.

 

[9] 仲伟和.基于JSP网页自动生成工具的设计与实现[J].科技信息(科学教研),2007,(15) .

 

[10] Michael kofler. MySQL 5权威指南[M]. 北京: 人民邮电出版社, 2006.

 

[11] 万晓凤,谢毅.基于JSP的电子政务系统通知模块的设计[J].南昌水专学报,2004,(01).

 

[12] Seyed. Hugh Williams. Learning MySQL. Paperback,20063月34~38 .

 

[13] 李峰, 晁阳. JavaScript开发技术详解. 北京:清华大学出版社,2009.

 

基于JavaBean的在线日常事务管理系统

标签:sun公司   好的   resource   动态网页   文件   back   自己   项目   互联网   

原文地址:https://www.cnblogs.com/epoch211/p/12629528.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!