分类

课内:
不限
类型:
不限 毕业设计 课程设计 小学期 大作业
汇编语言 C语言 C++ JAVA C# JSP PYTHON PHP
数据结构与算法 操作系统 编译原理 数据库 计算机网络 软件工程 VC++程序设计
游戏 PC程序 APP 网站 其他
评分:
不限 10 9 8 7 6 5 4 3 2 1
年份:
不限 2018 2019 2020

资源列表

  • 基于JAVA和SQL SERVER数据库实现的火车票预售系统

    1 系统设计1.1 设计目的乘坐火车是我们生活中几乎不可缺少的一件事儿,每天都会有各种各样的火车班次发布与被预定。针对这个火车票预售的环节我设计了一个火车票预售系统,为购票用户与卖票管理人员之间搭建平台。让我们的用户能够通过该软件对管理人员发布的航班进行预购与查询。另一方面也可以加强我们的管理人员对班次信息与乘客的管理与查询。
    本系统的根本目的是让管理人员能够发布与查询班次信息、查询乘客信息等;用户可以通过该系统对班次进行预购、自己购票记录的查询等。
    1.2 需求分析1.2.1 信息要求该系统主要记录用户、班次、火车、银行卡之间的关系

    用户分为管理员与购票用户

    售票管理员信息:管理员编号、管理员名字、管理员电话购票用户信息:身份证号、电话号码、银行卡号
    班次信息

    班次号、火车号、出发地点、目的地、出发时间、到达时间
    火车信息

    火车号、火车节数、座位数、各种座位票价、火车车速
    银行卡信息:

    银行卡号、余额、持有人身份证号
    身份证信息

    身份证号、姓名、性别、所有者
    车票信息

    车票号、班次号、座位号、乘客身份证号、车票价钱、车厢数

    1.2.2 处理要求
    能够正确、高效、迅速地完成所有操作
    一个管理员可以管理多个班次、一个用户可以多次订购不同时间段的车票

    1.2.3 安全性与完整性需求
    安全性

    该系统需要用户进行账号的注册与登陆通过对不同的用户种类的检测来给予不同的权限与界面用户登陆自己账号后只能查询自己用户名下身份证的购票信息与个人信息用户不可对班次、火车等信息进行修改售票员能对班次信息进行修改与查询,对于用户信息只能查询不能修改
    完整性

    实体完整性

    手机号、班次号、火车号、银行卡号、身份证号、车票号分别为用户、班次、火车、银行卡、身份证、车票的主码
    参照完整性

    班次号中的火车号为火车表的主码、银行卡号中所有者号码为用户的主码、车票中的火车号与班次号分别为火车表与班次表的主码。以上外码要么为空要么是参照表中已有数据

    用户定义完整性

    性别只能是男女、车票钱不能为空、车速不能为空、班次目的地与出发地不能为空、用户类型只能是 0 与 1:0 表示普通用户、1 表示管理员用户。用户名字不能为空

    1.3 开发和运行环境选择
    开发工具

    前台开发语言为 Java后台数据库为 SQL SERVER 2017
    运行环境

    Java 1.8 版本 Windows2000 以上

    2 数据库设计2.1 数据库概念设计本系统中包括六个实体:身份证实体、银行卡实体、用户实体、车票实体、火车实体、班次实体,根据需求需求分析的结果以上六个实体对应的 ER 属性图如下图所示。

    系统整体 E-R 图

    2.2 数据库逻辑设计根据 E-R 图向关系模型的转换原则,一个实体型转换为一个关系模式,实体的属性就是关系的属性。因此按照图 2.7 中的整体 E-R 图,本数据库系统中应包括六张表:身份证、银卡、用户、车票、火车、和班次。






    3 火车票预售系统详细设计3.1 功能概述售票管理员系统主要包含如下几个功能:

    发布与删除班次及其相关信息
    查看班次详细信息
    通过班次号对班次进行详细查询
    通过身份证号码查询乘车人信息

    用户系统主要包含如下几个功能:

    通过地点、时间查询班次信息
    通过班次号查询班次详细信息
    添加和删除信用卡
    添加、修改和删除乘车人信息
    查询得到班次后可以为乘车人购买车票
    查看自己用户的购票记录

    整体功能描述图如下图所示:

    3.2 火车票预售系统详细设计3.2.1 界面设计3.2.1.1 管理员界面设计在使用管理员账号登录过后,会出现管理员主界面。在界面最上方有初始地点选择和时间选择控件,可以通过时间和地点的详细选择来针对性地发布班次信息,在点击发布后会弹出火车号填写对话框,在此处填写火车号以完成班次发布的目的,如下图在发布下方有一个查看按钮,通过在左边列表中选择想查看的班次再点击该按钮即可查看到详细的班次信息如下图所示。


    3.2.1.2 用户系统界面设计在使用用户权限帐号登录过后,会进入相应的用户界面,用户界面分为四个 fragment,第一个 fragment 通过站点和时间来查询班次列表,在查询到班次后可以通过购买按钮对车票进行购买,购买时需要选择乘车人、勾选座位信息和选择支付的信用卡,如下图所示。


    在第二个 fragment 里用户可以通过班次号来查询班次信息与购票,如下图所示,在点击查询后按钮会自动变成购票,后续购票操作和第一个 fragment 一样。


    在第三个 fragment 里用户可以查询到自己所有的购票记录,可以通过查看详细按钮进行查看,还可以通过退票按钮进行退票操作,如下图所示。


    最后是用户信息界面,用户可以在此处看到自己用户名以及邮箱号,如下图所示。用户可以在此界面增、删、改常用乘车人信息,如下图所示。也可以添加和删除信用卡,如下图所示。




    3.2.2 功能实现整体功能是通过两个 Activity 与四个 Fragment 来实现,具体实现功能顺序为下图所示。本系统大量使用 Dialog 来对详细信息填写进行管理。
    功能实现过程中使用到 UI 的类有 17 个,其中三个抽象父类用于限制所有界面的业务处理与逻辑执行顺序,其余 14 个子类用于详细界面以及功能的实现,整体界面代码框架如下图所示。
    注:Dialog 是在 Fragment 中使用,Fragment 是放置到底层 Activity 使用。

    4 系统测试发布班次示意图

    发布班次示意图

    到数据库查询如下图所示:

    购票操作示意图 1

    购票操作示意图 2

    到数据库查询如下图所示:

    退票操作示意图

    到数据库查询如下图所示:

    5 总结三个星期的时间非常快就过去了,这三个星期不敢说自己有多大的进步,获得了多少知识,但起码是了解了项目开发的部分过程。虽说上过数据库等相关的课程,但是没有亲身经历过相关的设计工作细节。这次课设证实提供了一个很好的机会。通过这次的系统设计,我在很多方面都有所提高。综合运用所学知识的理论知识实际训练从而培养和提高学生独立工作的能力,巩固所学的知识,掌握系统程序的编排和运行,使自己的独立思考能力有了显著提高。
    从各种文档的阅读到开始的需求分析、概念结构设计、逻辑结构设计、物理结构设计。亲身体验了一回系统的设计开发过程。很多东西书上写的很清楚,貌似看着也很简单,思路非常清晰。但真正需要自己想办法去设计一个系统的时候才发现其中的难度。经常做到后面突然就发现自己一开始的设计有问题,然后又回去翻工,在各种反复中不断完善自己的想法。
    我们学习并应用了SQL 语言,对数据库的创建、修改、删除方法有了一定的了解,通过导入表和删除表、更改表学会了对于表的一些操作,为了建立一个关系数据库信息管理系统,必须得经过系统调研、需求分析、概念设计、逻辑设计、物理设计、系统调试、维护以及系统评价的一般过程,为毕业设计打下基础。
    很多事情不是想象中的那么简单的,它涉及到的各种实体、属性、数据流程、数据处理等等。很多时候感觉后面的设计根本无法继续,感觉像是被前面做的各种图限制了。在做关系模型转换的时候碰到有些实体即可以认为是实体又可以作为属性,为了避免冗余,尽量按照属性处理了。
    不管做什么,我们都要相信自己,不能畏惧,不能怕遇到困难,什么都需要去尝试,有些你开始认为很难的事在你尝试之后你可能会发现原来并没有你以前觉得的那样,自己也是可以的。如果没有自信,没有目标,没有信心就不可能把事情做好,当其他人都在迷茫的时候,自己一定要坚信目标。有一个这样的感觉就是课程设计学到的东西比一个学期都多。
    参考文献[1] CSDN 论坛、简书论坛、知乎论坛
    [2] 毕广吉.Java 程序设计实例教程[M]. 北京:冶金工业出版社,2007 年
    [3] 肖成金,吕冬梅。 Java 程序开发数据库与框架应用[J]. 科技展望,2017,05:19.
    [4] 吕锋,梅细燕,周晓东;基于 JDBC 的数据库管理及其应用[J];武汉理工大学学报;2002 年 10 期
    [5] 姚永一,SQL Server 数据库实用教程,北京:电子工业出版社,2010.
    [6] 高云,崔艳春,SQL Server 2008 数据库技术实用教程,北京:清华大学出版社,2011
    [7] 何玉洁,梁琦,数据库原理与应用(第二版),北京:机械工业出版社,2011
    [8] 壮志剑,数据库原理与 SQL Server,北京:高等教育出版社,2008
    [9] 杜丁超.计算机软件 Java 编程特点及其技术分析
    [10] 萧仁惠,陈锦辉. JDBC 数据库程序设计[J].北京:中国铁道出版社,2004
    15 评论 271 下载 2018-11-20 18:23:37 下载需要14点积分
  • 基于JSP实现的影视创作论坛系统

    摘 要随着时代的发展,互联网的出现,给传统影视行业带来的最大便利就是,方便了影视从业人员以及爱好者的交流和互动,而为用户提供一个书写影评,阅读影评以及回复影评的平台,以影评为载体来使用户感受影评、解读影评的是互联网在传统影视行业下应运而生的产物。
    本文讲述了基于javaee的影视创作论坛的设计与实现,所谓的影视创作论坛指的是通过网站让喜欢影视作品的人进行交流,而作为一个好的影视论坛,应该围绕影视作品展开,包括相关的影视资讯,幕后创作心得,观众观影体验,以及交流心得体会的地方。除了用户可以交流电影相关的感受以外,我们的平台可以提供实时最新的影评资讯和电影海报,用户也可以对自己喜爱的电影进行投票。后台管理可以对前台的信息进行操作,例如海报,公告,电影影评等。开发系统主要是采用了B/S模式,数据库则用了SQL server 2012。
    本文档详细描述了八个开发系统的过程,从开始分析需求,到实现代码,再到最后的测试运行以及报告编写。设计报告共分为八部分,分别为绪论、需求分析、概要设计、详细设计、代码设计、总结、参考文献、致谢。
    关键字:影视创作论坛;B/S;SQL Server 2012
    1 绪论1.1 研究课题背景影视,给人们的生活带了来很多欢乐和感动,更加丰富了我们的课余文化生活。中国影视正式是从1905年开始的。那一年,中国的第一部影评《定军山》是在北京的丰泰照相馆诞生的,是照相馆的老板任庆泰为了向京剧老旦谭鑫培老师祝寿,于是就拍摄了其中老师最拿手的几个片断。这几个片段被拿到前门给广大群众当中放映,受到了大众的喜欢,于是就此宣告中国影视的诞生。 而对于我们来说,更多的了解只是局限于对单个影视的直观感受。
    而影评作为影视内容消费的衍生产物,是观众观影后不可或缺的一部分,随之电影的发展,人们除了可以感受到电影本身带了的欢乐和感动之外,还可以通过影评内容拓宽自身的知识层面,丰富了课余文化生活。
    同时随着互联网的不断发展,互联网+概念的深入普及,一方面降低了行业间的交流成本,加速了行业间的交流对话,另一方面提高了信息获取的效率,在这样互联网的大环境下,对于影视行业而言,一款基于影视内容创作的社区和论坛对影视从业者而言,显得格外有必要。
    影视本身就是一门艺术,而且影视本身就融合了其他的艺术,它有利于提高人的思辩能力、写作能力、审美能力。从写作学的要求看,影评的书写需要的是信息的处理能力,也就是描写、记叙、抒情、议论能力的综合运用。
    在传统的影视行业中,影视最重要的原理是”视觉暂留”, 通过蒙太奇组合成顺畅而生动的影片整体将按照一定的时序摄制的景物各运动阶段的静止画面连续映现出来,把外界事物的影像及声音摄录在胶片上,运用照相以及录音手段,利用人的是视觉的误差,在人的视觉中造就再现景物的运动影像的效果,然后通过放映来表现特定内容的技术.
    影评作为影视作品的衍生物,也拥有着其独特的魅力,作为一门二次创作的艺术,其融合的文学、绘画、音乐、摄影等多领域的艺术在内,通过特殊的方法来展示“一千个读者,有一千个哈姆雷特”的道理。同并且影评也是社会科学技术发展到一定阶段的特殊产物。
    现如今大众基于影视内容的二次创作已经不止于影评内容了,包括基于文字的,图片的,视频等多媒体渠道展示用户的观后感,已经是目前影视行业的常态。
    而影评作为一项长盛不衰的艺术,有着其独特的艺术魅力,影评对影视的评论是正确的,但每个人对电影的理解都是不一样的而且理解的角度也不一样,所以它的评论却并不是唯一的。影评也并不是凌驾于影视之上,而是在于分析,鉴定和评价影片,在各个方面来评价影片,而观众会通过影评来更深一步的了解电影,而电影的制作人也可以通过影评来开阔视野。
    1.2 国内外研究现状在相对成熟的影评资讯的行业中,在国外有以烂番茄、IMDB等为首的影评资讯网站,国内也有以时光网、豆瓣电影等主打影评资讯的网站,但无论是哪类网站,都是精选国内外电影的热门电影专辑,并在线于影视爱好者讨论影片中的热门话题。其中各大网站对于用户最有价值的地方,就是通过对用户反馈的内容进行收集整理,然后得出的影片的星级评分,而这也反映出这一部影片的好坏之分。
    毫无疑问,无论是国内还是国外,这些大型的影评网站,都是基于影迷展开的,即所提供的服务也是根据影迷爱好者的需求出发,而影评这样的一个切入点,可以算是影迷们的刚需,通过优质的影评内容,以及全面的影视资讯内容,将这些影迷爱好者汇聚在一起,于是便形成了这样一个针对影迷爱好者的互联网平台在这样的一个平台里,我们不仅可以在这里开拓视野,看到不一样的世界,同时还能接触到形形色色的世界,对世界有更多的期许。
    身为一个非常喜欢影视作品的影迷,可以说我们是一群深深地被影视所吸引的人,如今汇聚到了影评网,一边享受着影视作品带给这个世界的美好时光,另一边也孜孜不倦的将影视作品教育意义的一点一滴汇入到网络的海洋中,同时带给我们愉悦的心情和心灵上的感动。
    有了网络,人们就可以判断影视的好坏抒发对电影的观后感,可以大胆的说出自己在看完电影以后对影视的看法。看电影的人汇聚到影评网,把影视作品带给他们的快乐、愤怒、希望释放到影评网影评的数据库中,用评论表达自己的观点、浏览别人的观点,在影迷社区激烈争论,让心情得到更大的舒展,也激励着影评人不断进取,助推中国影评事业走向繁荣。
    1.3 主要研究的内容
    影评的分类检索,让用户使用方便快捷,能在最短的时间找到自己想要搜索的内 容
    根据大部分人群的习惯影评资源信息的布局和展示,使用户更直观和舒服的了解网站的影评信息
    实现身份的注册、验证和登录,以及会员对自己注册过的信息的增加删除修改的操作
    验证和管理各种影视作品评论,维持网络的良好风气,这样方便用户的对影评的交流

    1.4 论文整体结构
    第一章主要介绍了影视创作论坛的课题背景以及影视行业的现状,以及发展的前景,明确了影视论坛的必要性
    第二章则主要说明影视创作论坛的系统在设计时所使用的应用软件以及平台背景,以及为什么选择这些应用软件和平台
    第三章则是系统分析,主要说明了影视创作论坛在设计起初的一些总体框架和数据用例图,以及系统的需求分析和可行性研究
    第四章主要介绍的是影视创作论坛的详细设计阶段,其中包括所有数据库表的设计思路和方法(数据库的使用以及对数据的操作和管理)
    第五章主要向用户展示系统的实现与测试环节所得到的数据以及一些系统界面及其具体功能的描述,展示在项目实现过程中的一些核心代码,以及在项目实现后的项目测试环节
    最后是本论文的参考文献以及致谢

    2 相关开发技术介绍2.1 开发技术及工具简介2.1.1 JSP简介JSP的全名是Java Server Pages,中文名叫java服务器页面,是一种跨平台的动态网页技术,它实现了HTML语法中的java扩张,即在传统的网页HTML(标准通用标记语言的子集)文件中插入Java程序段和JSP标记(tag),再由web服务器中的JSP引擎来进行编译并执行嵌入的Java代码片段,生成的信息将会返回给客户端(也就是最终出现在客户端浏览器上)。jsp与servlet一样,是在服务器端执行的,其根本是一个简化的Servlet设计, JSP技术是由美国Sun Microsystems公司倡导,许多公司参与一起建立的动态网页技术标准,是基于整个Java体系的Web开发技术,用JSP开发的Web应用是跨平台的,既能在Linux下运行,也能在其他操作系统上运行。
    JSP 技术使用Java编程语言编写类XML的tags和scriptlets,来封装产生动态网页的处理逻辑。网页还能通过tags和scriptlets访 问存在于服务端的资源的应用逻辑。JSP将网页逻辑与网页设计的显示分离,支持可重用的基于组件的设计,使基于Web的应用程序的开发变得迅速和容易。 JSP(JavaServer Pages)是一种动态页面技术,它的主要目的是将表示逻辑从Servlet中分离出来。
    Java Servlet是JSP的技术基础,而且大型的Web应用程序的开发需要Java Servlet和JSP配合才能完成。JSP具备了Java技术的简单易用,完全的面向对象,具有平台无关性且安全可靠,主要面向因特网的所有特点。
    如下图1-1所示的过程:

    同时JSP具有如下优点:

    JSP代码跨平台:其开放的技术令其可以基于平台和服务器的相互独立,代码编写好以后,到其他不同环境中运行,代码不需要修改
    平台和服务器的独立性:由于JSP使用的脚本语言是Java,所以JSP编写的代码可运行在任何符合JAVA语法结构的环境中,这就使得气非常方便,而且具有Java技术的所有好处
    支持多种网页格式:目前,JSP技术支持的网页格式还没有一个明确的标准,它既能支持传统的HTML/DHTML浏览器格式、也能应用于无线通信设备、其他一些B2B电子商务网站应用的XML格式
    JSP标记可扩充性:JSP技术允许开发者扩展JSP标签,定制JSP标签库,所以网页制作者充分利用与XML兼容的标签技术强大的功能,大大减少对脚本语言的依赖使网页制作者降低了制作网页的复杂度
    JSP组件跨平台:JSP组件(企业JavaBeans,JavaBean或定制的JSP标签)都是跨平台可重用的

    2.1.2 B/S结构B/S(Browser/Server)结构即浏览器/服务器结构。它是web兴起后的一种网络结构模式,对C/S结构的一种变化或者改进的结构,web浏览器是客户端最主要的应用软件。在这种结构下,用户工作界面是通过WWW浏览器来实现,一部分事务逻辑在前端(Browser)实现,但是主要事务逻辑在服务器端(Server)实现,这样就大大简化了客户端电脑载荷,减轻了系统维护与升级的成本和工作量,降低了用户的总体成本。系统的扩展非常容易,只要能上网,再由系统管理员分配一个用户名和密码,就可以使用了。以目前的技术看,运用B/S模式相对易于把握,成本也较低;它是一次性到位的开发,不同大人可以在不同的地点以不同的方式访问和操作;它能有效地保护数据平台和管理访问权限,服务器数据库也很安全 。特别是在JAVA这样的跨平台语言出现之后,B/S架构管理软件更是方便、快捷、成本低。
    使用B/S结构的优势:

    客户端无需安装,有浏览器就行,随时进行查询,大大简化了客户端电脑载荷
    业务扩展简单方:通过增加网页即可增加服务器功能
    维护升级简单方便:无需升级多个客户端,升级服务器即可

    2.1.3 数据库简介随着时代的发展,一款优秀的项目已经不再是面向个体用户,而是面对成千上万的用户,而对于这些成千上万的用户,如何进行有效的管理则成了至关重要的环节,而数据库就是在这样的时代背景下诞生的一款产物。
    在数据库方面,选择了Microsoft SQL Server,而不是Oracle或者MySQL,主要原因是SQL Server 比MySql其安全性要更高一些,而对于 Oracle来说比之更容易上手,而且对于个人项目而言,更轻便易维护。
    SQL Server 是 Microsoft推出一套产品,作为新一代的数据平台产品,它具有使用方便、可伸缩性好、与相关软件集成程度高等优点,逐渐成为Windows平台下进行数据库应用开发较为理想的 选择之一。它可以提供更安全可靠的存储功能,使其可以构建和管理高可用和高性能的数据应用程序。SQLServer是目前流行的数据库之一,它已广泛应用于金融、保险、电力、行政管理等与数据库有关的行业。而且,由于其易操作性及友好的界 面,赢得了广大用户的青睐,尤其是SQLServer与其它数据库,如Access、FoxPro、Excel等有良好的ODBC接口,可以把上述数据库 转成SQLServer的数据库,因此目前越来越多的读者正在使用SQLServer。
    SQL Server由于是微软的产品,又有着如此强大的功能,所以他的影响力是几种数据库系统中比较大,用户也是比较多的。它一般是和同是微软产品的.net平台一起搭配使用。当然其他的各种开发平台,都提供了与它相关的数据库连接方式。因此,开发软件用SQL Server做数据库是一个正确的选择。而SQL Server 2012又是对前面的版本的延伸,增加了软件的使用性。
    SQL server2012的优势:

    安全性和高可用性:提高服务器正常运行时间并加强数据保护,无需浪费时间和金钱即可实现服务器到云端的扩展
    企业安全性及合规管理:内置的安全性功能及IT管理功能,能够在极大程度上帮助企业提高安全性能级别并实现合规管理
    安心使用:得益于卓越的服务和技术支持、大量值得信赖的合作伙伴、以及丰富的免费工具,用户可以放心使用
    快速的数据发现:通过快速的数据探索和数据可视化对成堆的数据进行细致深入的研究,从而能够引导企业提出更为深刻的商业洞见
    可扩展的托管式自助商业智能服务:通过托管式自主商业智能、IT 面板及 SharePoint 之间的协作,为整个商业机构提供可访问的智能服务
    可靠、一致的数据:针对所有业务数据提供一个全方位的视图,并通过整合、净化、管理帮助确保数据置信度
    全方位的数据仓库解决方案:凭借全方位数据仓库解决方案,以低成本向用户提供大规模的数据容量,能够实现较强的灵活性和可伸缩性
    根据需要进行扩展:通过灵活的部署选项,根据用户需要实现从服务器到云的扩展
    解决方案的实现更为迅速:通过一体机和私有云/公共云产品,降低解决方案的复杂度并有效缩短其实现时间
    工作效率得到优化提高:通过常见的工具,针对在服务器端和云端的IT人员及开发人员的工作效率进行优化
    随心所欲扩展任意数据:通过易于扩展的开发技术,可以在服务器或云端对数据进行任意扩展

    2.1.4 MyEclipse10简介MyEclipse,是基于Eclipse开发的功能强大的企业级集成开发环境,主要用于Java、Java EE以及移动应用的开发。据官方介绍,诸如三星、IBM、戴尔、惠普、花旗集团、西门子、斯坦福大学、波音公司等知名机构均使用MyEclipse进行Java、Javaee开发,80%以上的全球财富100强企业均是MyEclipse的用户。
    MyEclipse提供了对UML、Ajax、Web、Web Services、J2EE、JSP、 XML、 Struts、 JSF、 Java Persistence、 EJB、扩展数据库以及各种应用服务器的集成支持。MyEclipse也全面支持各种主流的第三方框架,让你能够快速高效地进行开发工作。此外,MyEclipse还全面支持各种基于Eclipse平台的插件,允许你自由定制或扩展个性化功能。
    MyEclipse全面支持Eclipse开源平台的所有功能特性,如果你熟悉Eclipse,那么你能够轻松地上手MyEclipse,包括熟悉的Eclipse快捷键,而且使用MyEclipse完成某项任务往往要比使用Eclipse更加快速、简单。
    在结构上,MyEclipse的特征可以被分为7类:

    JavaEE模型
    WEB开发工具
    EJB开发工具
    应用程序服务器的连接器
    JavaEE项目部署服务
    数据库服务
    MyEclipse整合帮助

    对于以上每一种功能上的类别,在Eclipse中都有相应的功能部件,并通过一系列的插件来实现它们。MyEclipse结构上的这种模块化,可以让我们在不影响其他模块的情况下,对任一模块进行单独的扩展和升级。 简单而言,MyEclipse是Eclipse的插件,也是一款功能强大的JavaEE集成开发环境,支持代码编写、配置、测试以及除错,MyEclipse6.0以前版本需先安装Eclipse。MyEclipse6.0以后版本安装时不需安装Eclipse。
    MyEclipse10 对检索功能以及错误查询功能更加强大,包括对js文件的错误查询。就目前本人的体验来说,最大的变化莫过于软件安装界面,推荐使用link方法进行插件安装,方便快捷。
    2.2 运行环境为了保证网站的正常运行和高效快速,网站的服务器端应该具备较高的配置,而对于客户端的要求不需要很高。此程序可以广泛地运行于互联网内,也可使用于内部的局域网。其运行要求如下:

    JSP/Java开发工具:MyEclipse
    Web Server:Tomcat 6.0 / JDK7.0
    测试工具:功能测试手工完成
    数据库:SQL Server 2012;

    3 系统分析想要成功的完成一个系统,首先要做的事知道项目的目标人群是谁,并且明确这些目标人群的具体需求是什么(也就是需求分析),这样才能设计出满足用户的所有功能需求的系统。所以在本项目开始前,进行了详情的需求分析。
    3.1 可行性分析可行性分析又被叫做可行性研究,是指在对项目调查的基础上,针对项目开发所进行的可行性研究,即分析项目是否值得开发以及能否实现开发。可行性分析的目的是确定这个项目是否值得去解决。对项目的开发从技术难易、到经济允许、甚至是社会调查等方方面面的分析和研究,以避造成不必要的损耗。针对该项目,而要达到这个目的,不能靠人们主观的猜想而只能通过客观理性的分析。系统分析员更深一步得了解用户的需求,并在此基础上提出若干种可能的系统实现方案,而且需要分析提出的几种主要的可能的解法的利弊,从而判断出要要做的项目能否实现,对每种方案都从技术、经济、社会因素(如法律)等方面分析可行性,从而最终确定这项工程的可行性。可行性研究主要从以下的几个方向分析:

    经济可行性:主要是对项目的经济方面进行分析,在经济的可行性分析上,项目的变现能力主要是从媒体到社交属性转换后的平台属性,即为拥有大量用户之后,利用平台的优势,可以更直接的进行电商销售,从电影票到影视相关内容的周边以及影视从业者的一些道具,都是在考虑的范畴之内,所以在经济方面上,本项目是完全可行的
    市场可行性:市场的可行性主要是项目完成后是否能够在实际中很好的推广,其主要依赖于用户对于影评内容的需求,而在当今人们对于文化需求不断上涨的今天,利用Internet的优势,结合影视行业的一些内容输出对于整个市场来说是供不应求的。同时项目完成之后,在实际中的推广以及宣传则主要利用产品的用户体验,可以让更多的用户进行自发的宣传输出,且操作简单方便。本项目拉近了影视作品和观影人的距离,可以看到其他观影人的观影感受,而且操作简便,所以本项目在市场上是可行的
    技术可行性:是指在技术上进行分析,主要是分析现在所有的技术,是否能够完成即将要开发的的项目,同时也要分析,现如今所使用的软硬件是否能够胜任项目开发。首先本项目采用了B/S模式进行开发。在项目开发过程中有着C/S开发模式所不能替代的优势,他把网站带入了一个崭新的发展时代。而我们的数据库服务器则使用了SQL Server2012数据库,它和其他大多数的数据库一样,能够存储大量的数据,但相对于其他也相对轻便一些,不会占用过多资源,同时也能对数据进行的完整的操作和管理,它的灵活性、安全性和易用性为数据库编程提供了良好的条件,因此,项目的开发平台已成熟可行。此外,当今时代,科技发展迅速,其硬件平台完全能满足此项目的需要,所以项目在技术上是也是完全可行的

    综上所述,本项目在开发需求确定的条件下,市场、技术、经济等各个方面都可行,因此网站的开发是完全可行的。可以直接进入实际操作环节,也能够实现在最短的时间内,利用最低的代价,完成项目实践内容。
    3.2 网站需求分析所谓”需求分析”,是指对要解决的问题进行详细的分析,弄清楚问题的要求,包括需要输入什么数据,要得到什么结果,最后应输出什么。可以说,在软件工程当中的”需求分析”就是确定要计算机”做什么”,要达到什么样的效果。可以说需求分析是做系统之前必做的。
    在软件工程中,需求分析指的是在建立一个新的或改变一个现存的电脑系统时描写新系统的目的、范围、定义和功能时所要做的所有的工作。需求分析是软件工程中的一个关键过程。在这个过程中,系统分析员和软件工程师确定顾客的需要。只有在确定了这些需要后,他们才能够分析和寻求新系统的解决方法。需求分析阶段的任务是确定软件系统功能。
    在软件工程的历史中,很长时间里人们一直认为需求分析是整个软件工程中最简单的一个步骤。但在近十年内,越来越多的人认识到,需求分析是整个过程中最关键的一个部分。假如在需求分析时分析者们未能正确地认识到顾客的需要的话,那么最后的软件实际上不可能达到顾客的需要,或者软件项目无法在规定的时间里完工。
    随着时代的不断进步,人们不仅局限于吃穿住行,对文化的需求也是在不断增加,广大人民群众除了在电影院线观赏电影之外,有着强烈的文化沟通交流的需求,影评作为观众观看完影片之后的沟通交流的最大途径,对影迷爱好者有着很重要的意义。同时随着互联网的出现,给传统影视行业带来的最大便利就是,方便了影视从业人员以及爱好者的交流和互动,而为用户搭建一个平台,一款基于影视内容创作的社区和论坛对影视从业者而言,显得格外有必要。
    其次,本项目的用户主要是人民大众,也就是对影视有共同爱好的人群,所以在设计上应该更符合大众的审美,简约,大方,同时需要足够简便,让不管是来自哪个阶层的人都能一目了然知道应该怎么去操作,怎么去使用。同时,应该对网站的用户进行权限的限制,即普通游客只能浏览网页但不能进行实际操作,注册用户可以在网站上进行评论,交流。
    3.3 网站需要解决的主要问题首先,要考虑的是使用该网站的人群,因为网站是面向的是广大的爱好影视的人群,包括学校的以及社会上的各个阶层的人士,所以在设计页面的时候,要考虑到大部分人,要贴合群众,而且一低昂要简洁大方,否和大众的浏览习惯,其次要考虑的是网站的压力测试,因为项目面对的人员交广,而且现在网络已成为大众趋势,越来越多的人开始上网,相应的浏览网站的人也会增加,故要考虑到流量急剧增大对此项目造成的打开页面变慢等诸多问题。
    3.4 网站目标与功能3.4.1 网站目标本项目主要是用jsp、sql server 2012完成的一个web站点的设计。项目的模块有:用户的注册成会员和会员的登录以及信息的管理,公告的发布以及查看,投票的实现以及管理,网站的介绍,其中未注册的游客,可以在影评论坛进行阅读影评和浏览海报等,但不能进行其他任何操作,而注册的用户除了浏览网站外,还可以进行其他实际操作,同时管理员的权限,除了能够在网站前端进行各种管理,还可以进入系统后台,即在后台对用户进行操作管理。
    本网站可以进行会员的注册,会员注册以后的信息会保存到会员的信息数据库中以便以后的登录,数据库端使用SQL Server2012,界面采用JSP技术,便可以实现从前端到后台,从设计到数据库的全套流程。无论是用户还是管理员,以及开发人员而言,都非常的方便快捷。
    3.4.2 网站要达到的功能用例图主要用来描述“用户、需求、系统功能单元”之间的关系。它展示了一个外部用户能够观察到的系统功能模型图。用途:帮助开发团队以一种可视化的方式理解系统的功能需求。
    用例图所包含的元素如下:

    参与者(Actor):参与者不是特指人,是指系统以外的,在使用系统或与系统交互中所扮演的角色。因此参与者可以是人,可以是事物,也可以是时间或其他系统等等。还有一点要注意的是,参与者不是指人或事物本身,而是表示人或事物当时所扮演的角色。比如小明是图书馆的管理员,他参与图书馆管理系统的交互,这时他既可以作为管理员这个角色参与管理,也可以作为借书者向图书馆借书,在这里小明扮演了两个角色,是两个不同的参与者。参与者在画图中用简笔人物画来表示,人物下面附上参与者的名称
    用例(Use Case):用例是对包括变量在内的一组动作序列的描述,系统执行这些动作,并产生传递特定参与者的价值的可观察结果。这是UML对用例的正式定义,对我们初学者可能有点难懂。我们可以这样去理解,用例是参与者想要系统做的事情。对于对用例的命名,我们可以给用例取一个简单、描述性的名称,一般为带有动作性的词。用例在画图中用椭圆来表示,椭圆下面附上用例的名称
    子系统(Subsystem):用来展示系统的一部分功能,这部分功能联系紧密
    关系:用例图中涉及的关系有:关联、泛化、包含、扩展

    如下图3-1用例图中的关系分类所示:

    本Web站点主要包含以下模块:注册管理:对已注册的会员的基本信息的添加修改以及会员的密码的修改;应该包括的表有,会员的信息表(会员管理即admin对会员的基本信息进行增删改查操作),影评信息表(影评管理即admin对影评信息的增删改查操作),影评种类表(影评种类管理即admin对影评种类的增删改查操作),网站公告表(公告管理即admin更新公告,以及对以前公告的管理),投票表(admin发起投票、对以前投票的管理,投票后进行数据库更新),影评海报表(海报管理即admin添加电影海报,对电影海报的管理等),综上所述,影评网的用例图可以通过下图表现出来。
    系统用例图

    影评管理用例图

    影评管理用例图

    添加海报用例图

    用户注册用例图

    实体关系图

    系统总体设计图

    4 网站的详细设计本章主要介绍在网站设计过程中,具体需求的实现以及遇到的困难和解决方案,对于本项目而言,最大的技术难点就在于:

    前端和后台的连接
    数据库和网页的连接
    前端设计

    4.1 后台实现的功能4.1.1 首页推荐根据电影热度,对热门电影进行首页的展示位推荐,可实现对推荐位选择,同时可修改首页推荐影片的首页图,以便更吸引观众。同时在影片热度下降的时候,可以选择对推荐影片的删除。具体的如图4-1所示。
    4.1.2 用户管理对用户进行权限管理,没有注册的用户,只能在网站上浏览前端页面,不能够进行操作,而对于注册用户而言,不仅能浏览页面,还可以发表观点,沟通交流,甚至可以下载海报等,具体的权限如图4-2所示。
    4.1.3 评论管理对会员产生的评论进行管理,对于自带人身攻击,非法性质的,损害网站利益一切言论进行敏感词警告,并可在后台对用户产生的不正当言论的评论删除和管理员私信警告,具体的措施如图4-3所示。
    4.1.4 影片分类对上映的影片根据地域、类型等标准进行分类。并提供查询界面,方便用户可以在对感兴趣的一类影片进行查询,观看,分享,评论。同时提供可对同一部影片进行多个类别的分类。
    4.1.5 影片评分用户可以根据自己的爱好来对自己喜欢的影视作品进行投票,投票的结果也会显示在网页端,供其他用户的浏览,可以给用户评价这个影视作品提供参考,让用户可以更好的判断。具体的如图4-5所示。
    4.2 前台实现的功能4.2.1 网站首页网站首页都是在展示主要的影视作品的介绍信息,同时提供现在下热门的影视作品的首图推荐位,影评网的首页简洁大方,广大的影视爱好者可以一目了然地看到最近更新的影视的资料海报,我们会推荐公认好看的影视作品供大家的选择,详情如图4-6所示。
    4.2.2 影评评论本页面主要展示的是各位会员对影视作品发表过的评论,以列表的形式排列,每条评论上面都有对应的评论的影视作品,点击可以查看对应的影视的资料。同时可以查看是哪位用户发表的评价,可以进入用户页面,查看该用户的所有评论和喜欢。左侧可以按不同产地(主要分为欧美、日本、大陆)进行筛选影视作品,方便查询。
    4.2.3 口碑推荐本页面通过列表形式展示站内最受欢迎的影片,根据影片的阅读量,分享率,喜欢量,评论量进行统一评分,然后对排名前十的影片进行网站侧边栏的推荐,方便用户浏览近期的最热大片。
    4.2.4 分享喜欢用户可对喜欢的影片、短评进行分享喜欢,可以将内容分享到自己的社交媒体中,可以分享至微信,微博,qq空间等社交平台,也可以复制网页链接,允许用户自行分享扩散。
    4.2.5 站内搜索本网站有不错的搜索引擎,快捷方便。可以实现分类查询,即同样的关键词,可以提供站内的影片关键词查询,导演关键词查询,影评关键词查询,能够让用户在第一时间找到所需要的有价值的内容。
    4.2.6 会员注册、登录本网站开放对外注册会员,注册的会员信息会存储在数据库表中,会员通过前台登录非常方便,也可以修改自己在注册时填写的的信息登录同时会员可参与评分,发表影评,以及下载影视相关海报资料等功能……
    4.3 数据库设计
    在数据库设计的时候,采用了一些基础的用户表,即当其他数据库需要这些表时,可以方便的调用,同时也可以也可以对表的内容进行增删查改,方便用户进行操作。如:已经定义了一个数据库的信息,如果在另一个数据库中也将使用这些信息,在定义数据库字段内容时,不需要重复输入这些信息,而是采用调用已经定义好的数据库信息的模式,直接存储关联字段
    在数据库连接中,采用公共的数据模块存放对象,让这些高频繁调用的模块一直在后台运行,而不是即时连接,避免了对数据可的反复连接,方便其他用户操作时的频繁调用,节省了开发人员的代码的编写,同时也提高了效率,降低了用户不断等待的时间

    4.3.1 数据库逻辑设计E-R图E-R模型中所包含的元素有3个:实体、属性、联系。E-R模型是用E-R图表示的。实体表示的是用户工作环境中的所涉及的事物,属性则表示的是对实体特征的具体的描述。

    模型中的实体是相当于实体集、一个表,是客观世界中存在且可相互区分的事物,而不是单个实体或表中的一行。在E-R模型中实体是用矩形框代表,实体名称标注在矩形框里
    属性是实体或联系所具有的性质,用椭圆框来表示,与实体之间用一条线相连表的主码是关键属性,关键属性项会加下划线
    项目各子模块中主键相同的字段之间则存在着相互关联的关系。用菱形来表示实体间的联系,菱形框内写上联系名,用无向边把菱形分别与有关实体相连接,在无向边旁标上联系的类型

    系统的E-R图:

    4.3.2 数据库逻辑结构后台管理员表,字段包括主键Id(管理员编号),Title(帐号说明),UserName(帐号),Pwd(密码),AddTime(添加时间),LastTime(最后一次登录时间)等,如表4-1所示。



    字段名
    类型
    说明
    长度




    Id
    Int
    管理员编号
    10


    Title
    varchar
    帐号说明
    50


    UsrName
    Varchar
    帐号
    50


    Pwd
    Varchar
    密码
    10


    AddTime
    Datetime
    添加时间
    10


    LastTime
    Datetime
    最后一次登录时间
    10


    LogCount
    Int
    登录次数
    10



    评论表,字段包括主键CommentId(评论编号),CommentTypeId(类型),MovieId(影评的ID),CommentUser(评论人),CommentContent(评论内容),CommentTime(评论时间)等,如表4-2所示。



    字段名
    类型
    说明
    长度




    CommentId
    Int
    评论编号
    10


    CommentTypeId
    Int
    类型
    10


    MovieId
    Int
    关联影评信息ID
    10


    CommentUser
    Varchar
    评论人名称
    50


    CommentContent
    Varchar
    评论内容
    100


    CommentTime
    Datetime
    评论时间
    10



    会员表,字段包括主键MemberId(会员编号),UserName(登录帐号),Userpwd(登录密码),LoginCount(登录次数),Tel(固定电话或手机号码),QQ,Email(电子邮箱),Sex(性别),RegTime(注册时间)等,如表4-3所示。



    字段名
    类型
    说明
    长度




    MemberId
    Int
    会员编号
    10


    UserName
    Varchar
    登录帐号
    10


    UserPwd
    Varchar
    登录密码
    10


    Tel
    Varchar
    固定电话或手机号码
    20


    QQ
    Varchar
    QQ
    20


    Email
    Varchar
    电子邮箱
    20


    Sex
    Varchar
    性别
    5


    RegTime
    Varchar
    注册时间
    10


    LoginCount
    Int
    登录次数
    10



    影评信息表,字段包括逐渐主键MovieId(影评编号),MovieName(影评名称),TypeId(影评类型),DaoYan(导演),ZhuYan(主演),ShowTime(影评上映年份),PicAddress(影评缩略图片地址),Content(影评详细介绍),Hits(浏览次数)等,如表4-4所示。



    字段名
    类型
    说明
    长度




    MovieId
    Int
    影评编号
    10


    MovieName
    Varchar
    影评名称
    50


    TypeId
    Int
    影评类别
    50


    DaoYan
    Varchar
    导演
    50


    ZhuYan
    Varchar
    主演
    50


    ShowTime
    Varchar
    影评上映年份
    10


    PicAddress
    Varchar
    影评缩略图片地址
    50


    Content
    Varchar
    影评详细介绍
    100


    AddTime
    Datetime
    添加时间
    10


    Hits
    Int
    浏览次数
    10



    5 系统的实现与测试5.1 网站的功能模块描述5.1.1 网站首页首页分为轮播图(一般都是展示本网站主要的影评介绍信息,同时提供热映影片的首图推荐位)、公告、排行榜、登录等几个模块。在查看别人发的帖子的时候,如果你要评论,就必须要先判断是否是注册用户或者会员,是会员直接评论,反之则跳转到注册界面。影评网的首页简洁大方,广大的影视爱好者可以一目了然地看到最近更新的影视的资料海报,我们会推荐公认好看的影视作品供大家的选择,如图5-1,代码实现如图5-2。

    网站首页代码

    5.1.2 影评评论本页面主要展示的是网站会员对影视作品所发表的评论,以列表的形式展示,每条评论的内容可分为标题,正文,电影海报,以及阅读全文的按钮,管理员可以在后台管理系统中对影片的资料进行操作(增删改操作),而用户点击进去之后,进行发表的影评的交流互动都是由用户自身产生详情如图5-3,核心代码如图5-4所示。

    影评界面代码

    5.1.3 口碑推荐本页面通过列表形式展示站内最受欢迎的影片,根据影片的阅读量,分享率,喜欢量,评论量以及投的票数进行统一评分,会员可以对自己喜欢的影视作品进行投票,对排名前十的影片进行网站侧边栏的推荐,方便用户浏览近期的最热大片,如图5-5。

    以下是口碑推荐的代码:
    <table width="1000" border="0" align="center" cellpadding="0" cellspacing="0" bgcolor="white"> <tr> <td height="846" valign="top" background="images/head_07.jpg"> <span class="kind"> <%out.println("<br><p align=left>    <img src=images/icon.gif width=10 height=10>  电影海报</p>");%> </span><table width="650" border="0" align="center" bgcolor="#FFFFFF" cellpadding="0" cellspacing="0" height="750"> <tr><br></tr> <tr> <% Picture picture=new Picture(); int count=0; for(int i=0;i<list.size();i++){ picture=(Picture)list.get(i); System.out.println(i);%> <td width="190" height="230" valign="top"><center><a href="head_haibaoForm.do?id=<%=picture.getId()%>"><img border="0" width="150" height="190" color="#000000" src="<%=picture.getImage() %>"/></a><br> <ahref="head_haibaoForm.do?id=<%=picture.getId() %>"><%=picture.getMovieName() %></a><br /></center>
    5.1.4 分享喜欢用户可对喜欢的影片、短评进行分享喜欢,可以将内容分享到自己的社交媒体中,可以分享至微信,微博,qq空间等社交平台,也可以复制网页链接,允许用户自行分享扩散
    5.1.5 站内搜索站内搜索引擎,非常方便。可以实现分类查询,即同样的关键词,可以提供站内的影片关键词查询,导演关键词查询,影评关键词查询,能够让用户在第一时间找到所需要的有价值的内容。详情如图5-6所示。

    5.1.6 会员注册、登录本网站可以注册会员,会员的基本信息会存储在数据库中同时会员可参与评分,发表影评,以及下载影视相关海报资料等功能,如图5-8所示。

    下面是会员注册页面的代码:
    <form name="myform" method="post" action="accountAdd.do?" onSubmit="return accountAdd();"> <table width="380" border="0" align="center"> <tr> <td width="78" height="30">用户名:</td> <td width="263"><input name="userName" id="userName" type="text" class="inputinput" size="30" onBlur="checkUser();"/> <span id="flag"></span></td> </tr><tr> <td height="30">密码:</td> <td><input name="userPwd" type="password" class="inputinput" size="30" onBlur="checkPwd();"><span id="spwd"></span></td> </tr><tr> <td height="30">重复密码:</td> <td><input name="reUserPwd" type="password" class="inputinput" size="30" onBlur="checkRePwd();"> </td></tr><tr> <td height="30">姓名:</td> <td><input name="name" type="text" class="inputinput" size="30" onBlur="checkName();"><span id="namespan"></span></td> </tr><tr> <td height="30">性别:</td> <td><input name="sex" type="radio" class="inputinputinput" value="男" checked> 男       <input name="sex" type="radio" class="inputinputinput" value="女"> 女 </td></tr><tr><td height="30" colspan="2" align="center"><br><input type="image" class="inputinputinput" src="images/save.gif" ">   <a href="#" onClick="javascript:form.reset()">  <img src="images/reset.gif"></a><a href="#" onClick="window.location.href='index.jsp'"><img src="images/back.gif"></a>
    5.2 网站的测试在网站的构建中,网站测试是开发项目的最后一个环节,也是不可缺少的一个环节,网站测验是用来检查测试网站是否能顺利运行,对于一开始的需求和功能是否都实现,页面的跳转是否会出错。言而总之,网站测试是网站构建中至关重要的一环,就像是被制造出来的的商品最后被质检员检测质量是否合格一样,查看网站对应的文档是否已经圆满的完成,网站的质量是否合格(符合项目需求)。
    5.2.1 网站测试的意义随着时代的不断进步,现代科技发展迅速,计算机以及网络也成为主流,更多的人加入到计算机及网络的大本营中,与此同时网站的使用者也成倍数增加,而且对其的质量以及相率的要求也越来越高,是否能达到用户对其对其能否提供更快更高效的服务品质是考量一个网站的重要指标。随着更多的用户访问网站,系统的承载负荷也逐渐增大,因此对网站的测试和优化也受到业界很大的重视
    随着社会的发展,众所周知,在软件行业曾爆发了软件危机,人们关于这个话题的讨论也是一直居高不下。随着现在软件的增多,大量的软件行业的程序员付出了自己的大量的努力,以及非常多的专家学者也参与其中,人们逐渐意识到所谓的软件危机就是软件中的错误,而正是这些代码细微的错误就导致了软件的在其他各方面的失误,而软件是人编写的,人类不可能把代码做到完全没有错误,完美无缺,所以我们现在关键就在于我们该怎么样尽量避免这些错误的产生和改正已经有的错误,从而使程序中的错误密度尽可能的低。
    在网站在正式投入到用户使用之前,我们要对网站的每个业务环节的性能都进行测试优化,以保证在用户使用时的项目的质量。然而对于项目的每个环节而言,都需要有相应的专业知识的专业人员进行测试和优化,功能测试主要是测试系统的功能需求的黑盒测试,是根据产品的特性、用户方案,模拟用户的操作方法来测试一个产品来确定它们是否满足用户要求的功能需求。而性能测试则是根据一定的科学方法,来对项目用一定的测试策略进行施压来获取该系统的运行效率、响应时间、资源利用情况等各项性能指标,来评价这个项目是否能够满足用户的性能需求。综上所述,功能测试是用来测试系统是否做出了正确的事情,而性能测试则用来测试软件是否能快速有效率的完成用户的任务。
    5.2.2 网站测试的目的和原则网站测试的目的是尽量以最少的成本(人力和时间)来找出软件中的各种错误和缺陷。要证明测试是否成功,就是应该发现尽可能多的错误。测试不知可以找到软件的错误,它的另一个额外收获是,它能够有效的证明软件的功能和性能是否与用户的各种需求说明相符。此外,进行了测试以后收集到的关于项目的测试结果和数据可以为可靠性分析提供了准确的依据。根据以上这些的测试目的,我们可以把软件测试的原则分为以下几条:

    应当把“尽早地和不断地进行软件测试”作为软件开发者的座右铭,尽可能多的测试,找出更多的错误并改正
    测试用例应由测试输入数据和与之对应的预期输出结果这两部分组成这样就能相互对比,找出错误
    程序员应避免检查自己的程序,换其他检测人员,用不同的思路才能找出软件中的缺陷
    在设计测试用例时,应当包括合理的输入条件(系统是否正确的处理用户的输入)和不合理的输入条件(系统对用户不合理输入的响应以及怎么处理这不合理输入的方法)
    充分注意测试中的群集现象
    严格执行测试计划,排除测试的随意性,要尽可能地考虑到所有的可能的测试用例
    应当对每一个测试结果做全面检查,看测试结果是否符合正常的测试结果,以保证测试的质量
    妥善保存测试计划,测试用例,出错统计和最终分析报告,为维护提供方便

    与软件开发的过程是类似的,测试过程也是分成几步来完成的,每个步骤在逻辑上是上一个步骤的延续是不可改变的同时也是不可缺少的。大型的项目则通常会有几个子项目来组成,每个子项目又是由许多小的个模块组成。因此,项目的测试的基本层次如图5-10所示。

    项目测试是贯穿项目开发的整个周期里的 ,项目的需求规格说明书 ,结构设计及程序编程代码,都属于项目测试的对象。在本项目中,测试的内容主要有二部分组成,一是性能测试;二是功能测试。

    首先是性能测试,测试主要由人工来完成,主要是测试的是页面是否美观(包括页面的布局是否符合用户的使用习惯,设计的是否给人感觉舒服漂亮大方,页面的长度是否合理,背景色与前面的前景色搭配合不合理,各个页面的风格是否一致)。在Windows 7环境下,代码运行的界面正常没有错误,界面上的字体、图片等保存得当。没有出现界面的某些内容无法显示或者显示的是乱码的问题!
    二是进行功能的测试,首先是对链接的测试,链接测试是指测试点击连接时是不是能进入到相应的页面当中去,还有能不能正确返回,所链接的页面如果打开后里面的内容是否正确、孤立页面或根本没链接(也就是说链接的是自己本身)。如果使用了框架或内嵌框架,是否可以正确在本框架页内显示要查找的页面:使用内容置顶时是否可以正确实现
    其次是表单的测试,表单测试包括文本框、复选框、密码项、单选按钮、菜单项和提交按钮类按钮的测试以及后台数据库的测试。以及对系统兼容性的测试,主要是指在各种分辨率不同的和配置不同的操作系统上的电脑上及使用不同的浏览器对其测试,看其是否可以正确的显示,是否有图片和页面错位或太大太小等问题使有的部分无法看到,是否有图片或视频无法显示等

    5.2.3 网站测试的重要性在网站的构建中,网站建设的目的是为了给企业带来更多的利益、同时也提升了企业品牌价值,网站测试是开发项目的最后一个环节,也是不可缺少的一个环节,网站测验是用来检查测试网站是否能顺利运行,对于一开始的需求和功能是否都实现,页面的跳转是否会出错。言而总之,网站测试是网站构建中至关重要的一环,就像是被制造出来的的商品最后被质检员检测质量是否合格一样,以下是网站进行测试需要考虑到的几方面:

    网站建设布局要合理:对于网站的用户来说,他们对网站的第一印象就是网站的格局设计,网站的目的就是为了让更多的用户使用它,并且让用户能够很快地了解这个网站,所以网站的建设的成功不在于这个网站的设计有多么得色彩鲜艳,而是他能否提供给用户最有效的信息
    网站建设体验要用心:现在的网站设计都是大同小异的,有很多网站缺少创意,根本就是没有用心去设计。大多数网站建设来说都是为了建设网站而在敷衍,看见其他的网站的设计不错就开始去模仿,根本不考虑别人做的网站的布局是否符合自己的网站的需求,就导致了网页设计没有新意
    网站建设内容要丰富:现在有许多企业网站都喜欢转载或者直接复制他人网站内容,同时更新内容的频道也不是很高。有人会说网站内容不重要,只要让用户知道你的产品有行。随着越来越多的企业网站流理来源都是依靠搜索引擎获取,而对于用户来说,他们也开始比较注重企业网站之间的差异性
    服务器最好以速度和稳定性为核心指标:服务器价格是一方面因素,如果长期考虑做站,则服务器的成本要舍得投入,关于是否选择国外主机还是国内主机这个到不是非常关键,主要是稳定和速度是基础。一个长时间打不开的站点影响用户体验不说,对于蜘蛛抓取网页内容,增加信任度无疑是有百害无一利的,我想很多站长不希望见到如此窘境吧,合适、稳定的主机是提高用户体验和蜘蛛体验的最佳良方。日积月累,随着网站权重的提升,关键词排名和流量肯定会水涨船高,为蜘蛛对网站建立信任感奠定了坚实的基础

    同时,项目测试在项目生命周期中占据重要的地位,在传统的瀑布模型中,项目测试学仅处于运行维护阶段之前,是项目产品交付用户使用之前保证项目质量的重要手段。近来,项目开发界趋向于一种新的观点,即认为项目生命周期每一阶段中都应包含测试,从而检验本阶段的成果是否接近预期的目标,尽可能早的发现错误并加以修正,如果不在早期阶段进行测试,错误的延时扩散常常会导致最后成品测试的巨大困难。
    事实上,对于项目来讲,不论采用什么技术和什么方法,项目中仍然会有错。采用新的语言、先进的开发方式、完善的开发过程,可以减少错误的引入,但是不可能完全杜绝项目中的错误,这些引入的错误需要测试来找出,项目中的错误密度也需要测试来进行估计。测试是所有工程学科的基本组成单元,是项目开发的重要部分。自有程序设计的那天起测试就一直伴随着。
    统计表明,在典型的项目开发项目中,项目测试工作量往往占项目开发总工作量的40%以上。而在项目开发的总成本中,用在测试上的开销要占30%到50%。如果把维护阶段也考虑在内,讨论整个项目生存期时,测试的成本比例也许会有所降低,但实际上维护工作相当于二次开发,乃至多次开发,其中必定还包含有许多测试工作。其中在测试过程中还有许多需要注意的细节:

    网站建设网站测试这个环节不可缺少:规范的测试是确保网站建设建设质量的必需流程。再精良的设备再完备的流程也无法拒绝不良品的产出,为了降低不良率,惟一的办法就是严把检测关。网站建设也是一样,网站的品质一方面取决于技术人员的技术和完善的项目管理机制,网站建设网站测试这个环节不可缺少
    网站测试有哪些内容:第一是功能测试,就是测试一下网站功能是否已经实现;第二是兼容性测试,测试的目的是网站在不同浏览器、不同操作系统、不同浏览平台下网站的前端表现是否一致;第三是压力测试,100个同时访问网站和1000个人同时访问网站,系统的承压能力肯定不一样;第四是安全测试,即模拟攻击环境下,网站是不是依旧可以正常访问
    网站测试需要多人进行检测:有的时候我们一个人可能没有办法检测出全部的问题,或多或少都会有所遗漏,所以这就需要不同的人对网站进行测试才能全面的发现网站存在的问题。最好让客户也参与测试,这样更好

    5.2.4 网站测试的范围项目测试贯穿于整个软件开发的项目定义和开发的周期里的,项目的需求规格说明书,程序员编写的代码,网站的结构设计等都属于测试的对象。而在实际工作中、更多的测试则主要围绕以下的功能:

    UI测试:UI测试主要测试页面是否美观(包括页面的布局是否合理,策划是否舒服美观,页面长度是否合理,前景色与背景色是否搭配,页面风格是否统一)
    链接测试:链接测试用于测试点击链接时是否可以进入所找的页面,是否能正确返回,链接页面会不会是空白页面、孤立页面或根本没链接(也就是说链接的是自己本身)。如果链接的是空白页,我们是否可以正确返回;如果使用了框架或内嵌框架,是否可以正确在本框架页内显示要查找的页面:使用内容置顶时是否可以正确实现
    表单测试:表单测试包括单选按钮、复选框、文本框、密码项、菜单项和提交按钮类按钮的测试以及后台数据库的测试
    兼容性测试:兼容性测试是指在各种配置不同的操作系统上和分辨率不同的电脑上及使用不同的浏览器对其测试,看其是否可以正确显示,是否有图片和页面错位或太大太小等问题使有的部分无法看到,是否有图片或视频无法显示等
    网络配置测试:网络配置测试主要测试网页是否可以打印或保存(如果是保密的网页或不想让别人保存的页面可以将其做成Flash格式的,不让用户保存),网页冗余代码是否过多或容量太大导致网络运行速度过慢等
    负载测试:负载测试主要测试多个用户同时上网时其最大的承受能力是多大,如果超过了这个极限会有何反应
    安全测试:安全测试主要测试用户名和密码是否有长度限制,是否有复杂度限制,登录次数是否受限等
    接口测试

    5.2.5 网站测试的方法网站的内容形式是各种各样的,随着科技的发展,网页制作的技术也在不断变化,所以不同的网站应该要有不同的测试方法,只有这样才能保障测试的可靠性。目前,常见的网站测试方法有以下三种:

    人工测试:人工测试的方法是指网页的设计者对网站中的所有的网页进行逐一浏览,检查和测试,通过不同的浏览器,不同的操作系统,从不同的位置进行测试,这种方法效率不高,适合小型的网页数不多的网站使用
    程序测试:在网页制作软件Dreamweaver中,“Check Target Browser”,可以自动检测该网页在六种不同版本的浏览器Internet Explorer2.0—6.0和Netscape2.0—5.0中的支持情况,并会自动生成一个报喜详细检查结果的HTML文件,并且调用默认浏览器。此检查报告十分详细,不仅指出每个错误在文件中的详细位置,而且说明了错误的原因。检查功能还支持对JavaScript和DHTML的检查,可以解决使用FrontPage制作的网页在Netscape下浏览往往显得杂乱无章的问题。用Dreamweaver,软件制作的网页的层不太适合Netscape调用,最好还是先将它转换为表格。枚个问题用以上方法是检查不出来的。对于拼写也可以使用程序检查。如在FrontPage中打开检查拼写的网页,然后依次选择菜单栏中的“工具”、“拼写与检查”或按F7快捷键,然后FrontPage2000会报告检查结果,可以立即予以更改修正。另一个网页制作软件GoLive也可以有效地进行网页测试,因为它将整个网站中的所有文件和文件夹视为一个整体,这样就可以对任何断链情况或文件丢失情况进行跟踪检查,甚至还能够在误移动文件后,对网站整体的文件指向进行修改。假如网页的文件名变化了,GoLive会自动查找哪些网页会因此受到影响,并发出警告来询问是否更新操作。如果利用文本编辑器对网页源编码进行检查,就必须查清所有网页中的有关链接
    专业网站测试:在Internet上有从事网站测试的专业公司,有偿承担对网站的测试工作。一般方法是先登录到测试公司的网站,留下要测试的网站地址和联系电子邮箱,支付一定的测试服务费后,在规定的时间内就会收到相关的测试报告。报告内容一般分为以下几点:

    评价浏览器兼容性,即不同的浏览器及各种版本显示的出错情况
    评价该网站主题的标题、内容简介、关键词等是否符合著名搜索器登记要求
    评价多种下载方式(调制解调器、ISDN、ADSL、宽带、无线上网)所需要的时间
    死链接检测,即检测该网站主页和子页中含有死链接数量的多少
    评价Internet与该网站主页的友情链接情况
    拼写校验,即用Web词典校验该网站主页的拼写错误(一般只限于英文网站)
    HTML代码的完整性评价


    5.2.6 综合测试结果经过软件测试的环节,该项目基于Javaee的影视创作论坛的设计与实现已经能够达到基本的效果实现,并且用户体验好,在进入系统之后,能够拥有较为完整的解决需求,并且运行的过程中,任何表单和链接都能顺利进行,并没有出现任何bug,同时点击进入系统之后,通过简单的点击便可以进行交流互动,操作简单方便。当程序部署到MyEclipse中,运行之后,运行效果如图5-9所示。

    在首页上一个按钮是网站影评,点开这个按钮以后就会出现影评页面,可以快速查看对应的影片资料,用户登录以后可以对影评进行浏览和回复,发表自己的观点,如图影评测试界面5-10可以很好的看出该项目的功能(已注册的用户对影视作品影评进行评价,交流)可以实现。

    在首页上的电影海报的按钮点开以后会进入到电影海报的界面,里面会有数据库里的影视作品的海报,对应的海报的名字会在海报的下方标出,如图5-11海报测试界面可以看出项目在这个页面的功能以实现,没有出现错误。

    在首页上打开参与投票的按钮,会出现对影视作品的投票的界面,如图5-12投票测试界面,在这个界面用户可以对自己的喜欢的影视作品进行投票,并且用户也可以看到这个影视作品的票数有多少。

    在首页的最后一个按钮是联系我们的页面,里面会有这个网站的一些信息,以及联系方式,如图5-13联系我们测试界面。

    管理员登录后会进入到后台,管理员登录界面如图5-14管理员测试界面所示,可以很好的完成要达到的功能。

    后台管理是对前台展示给用户的信息进行管理,如图5-15后台管理的首页测试界面,里面有具体的后台管理的种类。

    后台管理中的第一个管理功能是电影的添加设置,可以对电影进行删除和添加,经过测试,本项目可以很好地实现这个功能,如图5-16电影添加测试界面,里面可以看出具体的添加需要的步骤。

    后台管理的第二个管理的功能是对影视作品影评的管理,可以对影评进行添加和删除,也能对用户对于影评的回复进行管理,可以删除恶意的回复,如图5-17发表影评测试界面。

    后台管理的第三个管理的功能是对影视作品的海报的添加管理,可以再数据库中插入电影海报,存储海报的存放路径,如图5-18海报添加的测试界面可以看出能很好地完成这个功能。

    后台管理的第四个管理的功能是对电影海报的管理,可以更改首页的海报,首页的海报是根据电影的热度来修改的,后台会根据时间持续更新电影海报,如图5-19海报管理测试界面。

    后台管理的第五个管理的功能是对电影预告片的管理,可以对即将放映的影视作品的预告片添加在网站上供用户观看,里面添加的是视频的地址,如图5-20预告片管理测试界面。

    后台管理的第六个管理的功能是对网站公告的管理,可以添加修改和删除公告,可以根据需要随时操作,填写的内容包括公告主题和公告内容,如图5-21公告管理测试界面。

    后台管理的第七个管理的功能是对用户的管理,可以查询用户的信息,如图5-19是用户的管理测试界面。

    后台管理的第八个管理的功能是管理员信息的管理,可以修改管理员的密码,如图5-19管理员管理测试界面。

    根据以上各个模块的测试报告可以看出,本游戏程序最终基本实现了需求设计中的要求,并在不影响程序正常运行的情况下增加了一些小的改变,在测试过程中未出现过大的bug异常,说明本程序已经较为完整,本次设计目标也比较成功地完成了。
    结论《基于JSP实现的影视创作论坛系统》从现时时的角度上来说,当今人们对于文化需求不断上涨的今天,利用Internet的优势,结合影视行业的一些内容输出对于整个市场来说是供不应求的。而开发这个网站可以适当改善这个局面,在实际中的推广以及宣传则主要利用产品的用户体验,可以让更多的用户进行自发的宣传输出,且操作简单方便。拉近了影视作品和观影人的距离,可以看到其他观影人的观影感受,而且操作简便。首先本项目采用了B/S模式进行开发。在项目开发过程中有着C/S开发模式所不能替代的优势,他把网站带入了一个崭新的发展时代。而我们的数据库服务器则使用了SQL Server2012数据库安全且方便。
    基于Javaee的影视创作论坛是为了提高人们的文化修养而推出的,我们本着为人民服务的态度和为国家的奉献认真的编码此系统,希望能得到广大爱好电影得人群的喜欢和青睐。
    也许此系统还不能完全满足您的要求,但是在今后的学习中我会更加的努力,仅限于目前的知识水平已是竭尽全力了。开发此系统请教过的老师和同学帮助了很多,前后历时了几个月,虽然会有漏洞和不足之处,但是在以后的学习中会去完善。
    0 评论 1 下载 2020-08-09 11:04:50 下载需要15点积分
  • 基于JSP实现的网上招标系统

    摘 要从本世纪初,互联网开始加速发展,各种创新型应用和互联网新概念不断出现,例如搜索引擎、电子商务、博客、维基百科、RSS、3G、web2.0、长尾理论等。这些应用和概念与知识管理都有着或多或少的关系。如何利用互联网进行知识管理已引起互联网界和知识管理学界诸多学者的高度关注。威客模式就是在这个大的背景下产生的,它是利用互联网进行知识管理的网络创新模式。
    本设计尝试用JSP在网络上架构一个下沙派威客网,以推进网站无纸化,过程电子化,管理智能化的发展。本文从理论和实践两个角度出发,对一个具有数据分析功能的下沙派威客网进行设计与实现分析。论文首先较为详尽地介绍了面向对象分析与设计的有关概念与技术,特别深入介绍了在本系统中运用到的知识,如:面向对象的分析设计流程;系统中所用到的开发技术JSP以及java的特点、结构框架以及使用方法。接着对下沙派威客网的可行性进行了分析,然后对系统的设计思想、设计目标与系统的整体结构进行了明确的规划。最后对系统的主要页面、数据库、应用程序的设计与实现作了较为详细的讲解。
    下沙派威客网是在myeclipse,jdk 平台上运用JSP技术来实现的。其主要功能有:用户管理,站内新闻,留言板,威客在线,成交记录,后台管理等。论文在撰写过程中,力求将理论与实践应用相结合,对各种理论进行阐述的同时配合系统从实际应用和操作技巧上加以说明,希望能够更充分地体现到这些知识与技术在本系统中的应用与实现。
    关键词:面向对象分析与设计;JSP;jdk;myeclipse;sql
    AbstractAlong with the development of Internet technology, daily life can not already do without the network. The life and work of the social people of future will depend on the development of digital technology more and more ,Digitize more and more, the networking, electronic, virtual. Development course and present application state and development trend of Internet, can believe network technology great change life and working way of us fully, Even a certain change will take place in the values of the society.
    This procedure tries to build up a bookshop in the network with JSP, So that every customer needn’t go out and can do shopping easily through surfing the Net at home .this article is analyzing the design and realization of an online bookshop with Data Mining function, from the views of theory and practice. Starting with introducing concepts and techniques of OOA and OOP in detail, especially introducing the knowledge which apply for this system, such as: the feature and flow of OOA and OOP; analyzing the feature、structure and using method of developing techniques JSP and ADO.NET which using in my system. And then, this article analyses the feasibility of the system, then minutely layouts the design thoughts, goals and the system holistic framework. At last, this article minutely explains the design and realization of Web page layout, data base and application program of our system.
    This online bookstore system uses JSP technology to realize on Visual Studio.Net platform. Its main function has: manage users, new books on sale, look for classified books, search books, collect favorite book, process of purchase, sales list, the comment of the books, website’s management, etc.
    During the course of writing this article, I strive to integrate theory and practice. While expatiating the different kind of theories, I illuminate the application and operation skill combining the system so as to fully incarnate the application of these theories and techniques to this system.
    Key words:OOA; OOD; JSP; jdk; myeclipse; sql
    1 绪论1.1 威客理论的起源威客理论的提出基于其创始人刘锋发现的三个基石:发现电子公告牌功能分离现象;确认互联网知识价值化时代的到来、互联网是人类大脑的联网而不是仅仅为机器的联网。
    1.1.1 电子公告牌功能分离现象的发现2005年6月威客(witkey)理论第一次被刘锋提出时,一个重要的理论基础就是发现了互联网发展历史上电子公告牌(BBS)功能分离的现象:从20世纪80年代初互联网电子公告牌出现以来,其功能不断分离出去,形成了独立的互联网应用,他们分别是:

    新闻类网站,起源于在电子公告牌发布新闻地功能
    电子商务类网站,起源于在电子公告牌发布商品买卖信息地功能,它后来与互联网在线支付系统,物流系统进行了结合
    博客类网站,起源于在电子公告牌中发布个人感想和可共享专业知识的功能。电子公告牌以时间为顺序聚合这些信息,博客以用户为单位聚合这些信息
    智力互动问答类网站(威客),起源于在电子公告牌中发布科学,技术,工作,生活,学习中问题的功能,人们通过互联网寻求问题的解决方案或能够解决问题的人
    热点点评类网站(DIGG),起源于在电子公告牌中对热点现象进行点评和讨论的功能
    维基类网站,起源于电子公告牌的信息内容修改功能,通常电子公告牌的信息只有其发布者和网站管理员有修改权,维基类网站放开信息内容的修改权,让每个访问者都可以进行修改
    SNS类网站,起源于电子公告牌用户的注册信息汇聚功能,通过聚合注册用户的的个人资料如联系方式,工作性质,工作地点,兴趣爱好等。让有相同爱好者能够通过互联网找到对方
    换客类网站,起源于在电子公告牌中用户相互交换物品和服务的功能,换客类网站的运营不需要第三方支付手段的介入
    搜索引擎,起源于电子公告牌的数据和信息索引功能,20世纪80年代WEB技术地发明,使能够聚合众多电子公告牌数据和信息的索引技术最终发展为搜索引擎

    1.1.2 互联网知识价值化时代的到来信息免费共享是促使互联网蓬勃发展的重要因素,例如,维客wiki以人的自我价值体现为动力,把人类已有的杂乱信息结构化形成可免费共享的知识,搜索引擎对互联网中的信息和数据进行索引,人们可以免费使用其搜索功能,新闻类,电子商务,博客类网站为互联网源源不断的提供免费信息。是从知识管理的角度看,知识的产生本身是要花费大量的时间和经济成本的,完全免费的知识共享不符合经济学的规律和理性人的假设。这种情况最终会阻碍互联网的发展,导致共享知识的质量由于个人保护自己核心能力的原因到了某个高点就很难再提升。
    威客理论认为互联网上的知识(各种文章,资料,回答问题的答案等)都具有或多或少的经济价值,应该可以作为商品出售。它符合经济学的价值规律并是互联网走出困境的一种途径。另外,随着互联网支付手段的逐步完善,通过互联网为知识,智慧,能力,经验进行定价就成为可能。因此本文作者认为互联网已经度过了完全免费共享的时代,开始进入互联网的知识价值化时代、知识、智慧、能力、经验通过互联网也具备商业价值的理念将逐步被人接受。在互联网的知识价值化时代、知识、智慧、经验、技能都可以成为商品通过互联网进行交易。这是威客模式理论提出的重要前提和基础。知识的价值化一方面使人们参与到智力互动问答中去,并提供高质量的知识产品,另一方面通过问题的提出和解答,知识,智慧,能力,经验也真正成为商品被交易。从知识管理的角度看,智力问答的知识价值化过程也就是人的隐性知识显性化过程。
    1.1.3 互联网是人大脑的联网,不仅仅是机器的联网马克思明确指出工具与人相互结合所构成的工艺结构是人类特有的本质结构,是人类其它结构产生和发展的物质基础和推动力。没有连接在互联网末端的人类大脑,互联网将成为无根之木,无源之水。忽略每一个连接在互联网上人类大脑的参与。正是当前互联网面临的一些困境的原因。
    威客理论第一次在世界上提出互联网是人大脑的联网,不仅仅是机器的联网。互联网不但连接了世界各地的机器,它也把地球上各个角落的人联结在一起。机器在某些方面的确超越了人类。但更大范围内人的知识,智慧,能力,经验却是机器无法望其项背的。利用互联网充分调动人的积极性解决各个领域的问题是互联网发展被忽略的另一个方向。
    1.2 威客网提出的意义威客网指为维克提过交易平台的网站,著名的威客网有猪八戒网等。威客的英文Witkey是有wit智慧、key钥匙两个单词组成,也是The key of wisdom 的缩写,是指那些通过互联网把自己的智慧、知识、能力、经验转换成实际收益的人,他们在互联网上通过解决科学,技术,工作,生活,学习中的问题从而让知识、智慧、经验、技能体现经济价值。
    1.2.1 可以解决搜索引擎无法创造性的给出答案的问题。人的大脑为一部比目前任何一台超级计算机都强大几千倍以上的设备,互联网的出现从本质上讲是实现人类大脑的联网,创造性的解决问题时人类大脑的优势,互联网的出现又把这种优势成指数倍的扩大。
    1.2.2 宣告互联网知识价值化时代的到来威客模式产生之前的互联网只是单纯的让用户共享知识和信息,无论是博客还是wiki(维客)等模式的设计还是让互联网用户无偿的提供智力成果,而运行这些模式的网站获得了沉淀下来的知识价值。威客模式提出了知识必须体现价值的观点并不只是指货币价值,也包括自豪感,成就感,但最重要的激励机制还是货币价值,只有通过货币才能让人类有价值的隐性知识表现出来,才能让互联网中无意义的信息大幅度减少。
    1.2.3 威客模式体现了一种灵活的工作方式威客模式打破了地域、时间、工作方式的限制,通过互联网把世界各地的工作者放在同一个工作平台中。给劳动者提供公平竞争的互联网环境,为他们带来更多自由工作时间、创意和想法。利用威客模式平台,来自全世界威客可以为企业和个人提供低成本高质量的问题解决方案。
    1.2.4 提高用户使用互联网的积极性威客模式激励用户提供更有价值的作品。由于互联网用户可以通过威客模式网站利用自己的知识,技能,经验,智慧获取相对应的经济利益。于是他们就会有更高的热情参与到问题的解答中去。同时由于经济利益的驱动,互联网用户也会主动将个人的知识和经验形成文章发布到互联网中供其他人付费查阅。
    1.3 威客网站在中国的发展和影响从2005年威客第一次在中国科学院研究生院提出以来,目前在中国有超过200家网站认同威客提出的理念,涵盖的范围包括法律,管理咨询,农业,教育,程序和图形设计,科研,体育,医疗,招聘等多个领域。总注册用户超过500万人(对注册用户量前十名进行统计),付费解决问题超过20万条(对认同威客模式的100家网站进行统计)。交易金额超过1000万元人民币(对交易金额最大的五家网站统计)。目前在中国认同威客且具有影响力的网站。
    威客的出现也引起了媒体广泛的关注。包括中国中央电视台,中国日报,人民日报,国际文传电讯,德国明星周刊等数百家国内外媒体对威客进行了报道。2007年, witkey的概念进入中国高考试题,数百万考生因此了解威客。2007年8月,中国教育部将威客列入中国2007年171个新出现的汉语词汇。
    2007年11月18日,首届威客大会在中国北京召开,这次会议由中国科学院虚拟经济与数据科学研究中心主办。有来自互联网,威客网站,新闻媒体等领域的专业人士300多人参加了此次会议,多名互联网专家和威客网站负责人从理论和实践的不同角度对威客进行了探讨。此外在2006到2007年间,赛迪顾问有限责任公司,中国电信研究院等单位也举办了多场会议和沙龙对威客模式进行探讨和研究。
    2010年11月18日,由国家工信部指导、重庆市政府主办的首届全球威客大会暨威客网站CEO高峰网站在重庆召开。来自全球排名前100名的威客(外包)网站的CEO及国内优秀威客代表出席会议。会上发布的《2010年中国威客行业白皮书》报告:中国现有超过100家威客网站,注册会员超过2000万,整体累积交易金额超过三亿元。最具代表性的为:k68创意产品交易平台、猪八戒威客网、一品威客网。
    其中,以k68创意产品交易平台的第一代威客网,探索和实践了悬赏任务模式;以猪八戒威客网为代表的第二代威客网,借助整合营销,拓展了威客市场份额,提升了行业的影响力;第三代威客网站则以新生代威客网站一品威客网为代表,其推出全免费威客模式、赏金100%支付中标威客;零首付悬赏、定金悬赏、全额悬赏等多结构类型的悬赏任务模式,对威客平台盈利模式和产品形式进行大胆的探索。
    1.4 任务概述
    目标:建立完善的下沙派威客网系统
    下沙派威客网特点

    简约的系统操作界面:整个网站的操作界面,界限明晰,人机界面美观,操作极具人性化。完备的系统操作功能:网站开发的宗旨是最简约的操作步骤最完备的操作功能。初一看,这好像很矛盾,但是经过完整的策划编排,系统完全做到了功能无冗余无遗漏,这点也更好的体现了系统的人性化设计人性化的操作界面:一个网站,能否吸引顾客的经常光顾,界面的美观也显得非常重要。下沙派威客网通过专业美工的精心打造,让网站的设计充分体现软件的时尚、大众化完善的安全机制:独立的密码校验功能,确保用户和管理员的数据有较好的安全性

    2 解决方案的选择2.1 系统说明本系统主要是在现有网站程序的基础上,把大量的人工管理信息转变为计算机管理,简化了管理员的工作,提高了管理的效率,同时方便下沙派威客网过程展开和交易。
    本系统对数字化信息资源的组织采用数据库。系统的数据库结构是关系数据库SQL Server 2000,前台使用JSP平台开发。信息平台的后台操作采用B/S操作结构以增强系统的安全保密性、系统稳定性和易操作性。JSP是目前最完备的面向对象语言,在未来仍然很有发展前途。SQL Server 2000采用了关系型数据库结构,是一套精简、快速的数据库管理系统,它提供了多人使用的管理模式,并支持标准的SQL语法。同时,.Net平台和SQL Server 2000作为微软公司的产品,具有良好的整和性。系统采用高度集成的模块结构,将所有的模块整合到一个通用的中央数据库中。
    2.1.1 硬.软件环境2.1.1.1 硬件环境
    2.1.1.2 软件环境
    操作系统:Windows 2003 Server
    正版软件:

    Microsoft Office 2003Microsoft SQL Server 2000Myeclipsetomcatjdk

    由于Windows操作系统在国际市场的占有率为95%,在国内市场的占有率为100%,所以我选用的操作系统为安全可靠的Windows 2003 Server;采用的开发工具为Microsoft公司开发的最完备的可视化工具myeclipse ;目前最流行的数据库管理工具是Microsoft SQL Server 2000,而Microsoft SQL Server 2000与Windows操作系统的整合性较好,所以采用SQL Server 2000为本项目的数据库管理工具。
    2.2 可行性分析2.2.1 风险分析
    系统软件硬件的风险:采用了性能较高的硬件设备,和较稳定的系统软件,网站仍存在一定的因软硬件崩溃而带来的风险。解决办法之一是定期备份数据以降低风险
    计划的拖延:网站的开发存在因计划拖延带来的风险

    2.2.2 技术可行性大学课程中的《数据库原理》,《操作系统知识》,《网络基础》等多门课程为整个课题开发提供了坚实的基础。JSP是一种相对简单的语言,SQL Server也是一种简单的数据库,所以技术难度并不高。
    2.2.3 操作可行性该网站如投入使用,预期作到界面友好,管理方便,使用简单,管理人员经过培训,也是完全能够使用本网站管理网站系统的相关信息的。
    2.3 设计方案2.3.1 B/S体系结构本网站所面向的对象是广大的互连网用户。因此,将要采用比较流行的B/S三层结构。

    B/S体系结构与C/S体系结构相比不仅具有其全部的优点,而且又有C/S体系结构所不具备的独特优势:

    开放的标准:B/S所采用的标准都是开放的、非专用的,是经过标准化组织所确定而非单一厂商所制定,保证了其应用的通用性和跨平台性
    较低的开发和维护成本:B/S的应用只需在客户端安装通用的浏览器即可,维护和升级工作都在服务器端进行,不需对客户端进行任何改变,故而大大降低了开发和维护的成本
    用户使用简单,界面友好:B/S用户的界面都在统一的浏览器上,浏览器易于使用、界面友好,又因为它不再负责数据的存取和复杂数据计算等任务,只需要进行显示,因而大大降低了对客户端的要求

    从以上的分析与比较可以看出,B/S模式具有C/S模式无法替代的优越性:它简化了系统的开发和维护,并且特别适用于网上信息发布。因此,我开发的图书在线浏览系统采用了基于B/S模式的体系结构。
    2.3.2 SQL ServerSQL Server 是一个具备完全 Web 支持的数据库产品,提供了对可扩展标记语言 (XML) 的核心支持以及在 Internet 上和防火墙外进行查询的能力,提供了以 Web 标准为基础的扩展数据库编程功能。丰富的 XML 和 Internet 标准支持允许使用内置的存储过程以 XML 格式轻松存储和检索数据。
    SQL Server 提供强大的开发工具和各类开发特性,在大大提高开发效率的同时,进一步拓展应用空间,带来新的商业应用机遇。例如,XML数据库与Web Service的支持将使您的应用实现Internet数据互联,.Net集成极大的扩展了开发空间,异构数据集成、Service Broker使您的数据和其它应用无缝集成,各种新数据类型和T-SQL扩展带来了诸多灵活性。C#、VB.Net、XQuery、XMLA、ADO.Net 2.0、SMO、AMO等都将成为SQL Server数据平台上开发数据相关应用的有力工具。
    2.3.3 HTML(Hyper Text Markup Language)HTML的英文全称是”Hypertext Markup Language”,中文译为“超文本标记语言”。“超文本”就是指页面内可以包含图片,联接,甚至音乐,程序等非文字的元素。在几年前作为SGML的一个子集开发的。
    一个HTML文件中包含了所有将显示在网页上的文字信息,其中也包括对浏览器的一些指示,如哪些文字应放置在何处,显示模式是什么样的等。如果你还有一些图片、动画、声音或是任何其它形式的资源,HTML文件也会告诉浏览器到哪里去查找这些资源,以及这些资源将放置在网页的什么位置。浏览的网页就是由HTML语言编写出来的。虽然HTML是一种语言,但HTML不是程序语言,如 C++ 和 Java 之类,它只是标示语言,你只要明白了各种标记的用法便算学会了HTML.HTML 的格式非常简单,只是由文字及标记组合而成,因此任何文本编辑器都可以制作HTML页面。
    在编辑器中输入html代码即可完成对网页的设计,如果在其中加入VB,JAVA等脚本文件以及数据库连接有关的语句指令,便可对已知数据进行查询,从而生成动态网页的一部分。
    2.3.4 JSP及JavaBean介绍JavaBean是描述Java的软件组件模型,有点类似于Microsoft的COM组件概念。在Java模型中,通过JavaBean可以无限扩充Java程序的功能,通过JavaBean的组合可以快速的生成新的应用程序。对于程序员来说,最好的一点就是JavaBean可以实现代码的重复利用,另外对于程序的易维护性等等也有很重大的意义。
    JavaBean通过Java虚拟机(Java Virtual Machine)可以得到正确的执行,运行JavaBean最小的需求是JDK1.1或者以上的版本。
    JavaBean传统的应用在于可视化的领域,如AWT下的应用。自从Jsp诞生后,JavaBean更多的应用在了非可视化领域,在服务器端应用方面表现出来了越来越强的生命力。在这里我们主要讨论的是非可视化的JavaBean,可视化的JavaBean在市面上有很多Java书籍都有详细的阐述,在这里就不作为重点了。
    比如说一个购物车程序,要实现购物车中添加一件汽车这样的功能,就可以写一个购物车操作的JavaBean,建立一个public的AddItem成员方法,前台Jsp文件里面直接调用这个方法来实现。如果后来又考虑添加汽车的时候需要判断库存是否有货物,没有货物不得购买,在这个时候我们就可以直接修改JavaBean的AddItem方法,加入处理语句来实现,这样就完全不用修改前台jsp程序了。
    当然,也可以把这些处理操作完全写在jsp程序中,不过这样的jsp页面可能就有成百上千行,光看代码就是一个头疼的事情,更不用说修改了。如果您使用过asp开发过程序的话,相信对这就深有体会? 涫凳褂肁SP+COM组件完全可以实现同jsp+javabean同样的架构,但不知道某种原因网上常见的都是全部写在asp页面中,所以使得维护修改等极为不方便,当然这是题外话了)。由此可见,通过JavaBean可以很好地实现逻辑的封装、程序的易于维护等等。
    复杂的应用涉及大量的代码,因而把业务逻辑和前端的表示相分离就显得格外重要,这种分离可以让任何一方的变化不会影响到另外一方。所以,所有的JSP代码都应该限制在表示层,可是如果这样的话,你如何实现你的业务逻辑呢?这就是JavaBean所做的事情。JavaBean技术是一个独立于平台的组件模型,它让开发者编写、测试通过一个组件后,可以随处使用,提高了复用性。在JSP技术中,JavaBean实现了业务逻辑部分,它把数据返回给JSP页面,由JSP页面负责格式化数据并输出到客户端的浏览器。
    2.3.5 tomcat配置配置tomcat之前需要预先下载几个软件:

    微软win2000的服务包(可以没有)
    java的sdk也叫jdk(java的开发环境)(必须的,前面已经介绍)
    tomcat(用做web的服器(必须的)

    然后就要配置java的jdk和tomcat的服务器具体步骤如下:

    我的电脑的属性—>高级—>变量环境—>我们需要新建系统变量(一共四个):

    变量名称添入:path 变量值添入:您的jdk的安装目录\bin。例如:我的安装目录是c:\sun\j2eesdk1.4_beta2\jdk\bin变量名称添入:classpath 变量值添入(注意引号不填,前面有一个小圆点也必须添,把下面的这些都添到变量植的一行中,并且用分号搁开,见下面,为了方便看我分了很多行写):
    您的安装目录\lib\tools.jar您的安装目录\dt.jar您的安装目录\bin您tomcat的安装目录\common\classes您tomcat的安装目录\common\lib您tomcat的安装目录\common\lib\servlet-api.jar
    变量名添入java_home,值添如您的安装目录例如我的安装目录是:c:\sun\j2eesdk1.4_beta2\jdk变量名添入TOMCAT_HOME(注意,大小写都可以的),值添入您tomcat的安装目录 例如我的安装目录是c:\tomcat\jakarta-tomcat-5.0.14
    配置tomcat的执行文件(.bat): 先进入tomcat的安装目录,找bin文件夹,进入bin 然后在找startup.bat文件,注意,有些版本可能名字不一样,但是名字前总是startup, 单击右键—>编辑.打开了这个文本,然后寻找start字母,一般在最后,我们只需在start字母后面添加:

    SET TOMCAT_HOME=您tomcat的安装目录SET JAVA_HOME=您的jdk安装(例如我的是:c:\sun\j2eesdk1.4_beta2\jdk)SET CLASSPATH=您jdk的安装目录\dt.jarSET CLASSPATH=您的tomcat的安装目录\common\lib\servlet-api.jar

    这一步的主要目的是为了,在执行.jsp文件是,tomcat 服务器能够自动找到一些java的环境以及类环境等等…好了,第一步和第二步我们完成了,对系统环境变量的配置,和对tomcat的配置,接下来还有一个问题,那就是设置虚拟目录的问题,为什么要设置虚拟目录?因为当在浏览器上打入一个地址的时候,和文件的实际所在的目录是不一样的.所以必须进行设置,虚拟目录才会按照我们的设置去自动寻找实际的目录。
    配置虚拟目录主要就是对tomcat跟目录下的conf文件夹中的server.xml文件进行配置,进入后,以文本方式打开这个.xml文件,(方法是:选中该文件,然后按住shift再点右键,寻找打开方式,我们以文本方式打开.就可以了,您可以使用记事本的查找功能,(在编辑菜单下)查找</host> 在这个</host>前添加这样的代码(path就是虚拟目录,而docbase就是实际的物理目录了):
    <Context path=/yuan docBase=D:\yuan debug=0 reloadable=true crossContext=true></Context>
    3 需求分析3.1 系统分析的任务与步骤3.1.1 系统分析的任务了解用户要求。此用户即为网站的使用人员(管理员,注册用户)。了解他们在网站功能、性能等方面的要求及用户在硬件配置、开发周期处理方式等方面的意向与打算。把用户要求成文,完成网站分析报告。网站的逻辑模型由一系列的图表和文字组成。在逻辑上描述了系统的目标和所具备的功能于性能。
    3.1.2 系统分析的步骤
    描述网站,在详细调查的基础上,用一定的图标、文字描述
    分析用户新的要求,改进现行模型,形成新系统的逻辑模型
    编写系统分析说明书

    3.2 网站项目范围下沙派威客网从二种用户角度进行功能划分。

    注册用户部分

    查看威客在线,及新闻公告发布留言信息查看成交记录信息填写用户注册
    管理员部分

    编辑系统用户信息编辑所有任务管理,成交记录管理等管理留言信息数据备份

    3.3 功能需求3.3.1 注册用户部分
    查看网站流程:查看与网站有关的流程信息,及相关的新闻公告
    发布网站留言信息:根据系统提示,发布网站的留言信息
    查看已发布的信息:以列表的形式查看已发布信息
    发布威客在线信息:根据系统提示,发布网站的留言信息
    查看网站成交记录:根据系统提示,查看成交记录信息

    3.3.3 管理员部分
    编辑系统用户信息:添加、编辑用户信息,包括发布者和管理员,以列表的形式显示
    编辑网站留言信息:以列表的形式显示网站留言信息,并可对其进行删除等编辑操作
    数据备份:不定期进行系统数据备份,以防万一

    3.4 网站实体分析
    3.5 网站的数据库设计3.5.1 概念设计在概念设计阶段中,从用户的角度看待数据及处理要求和约束,产生一个反映用户观点的概念模式。然后再把概念模式转换成逻辑模式。将概念设计从设计过程中独立开来,使各阶段的任务相对单一化,设计复杂程度大大降低,不受特定DBMS的限制。利用ER方法进行数据库的概念设计,可分成三步进行:首先设计局部ER模式,然后把各局部ER模式综合成一个全局模式,最后对全局ER模式进行优化,得到最终的模式,即概念模式。
    管理员用户类别(用户名,密码,权限,注册时间等)

    注册用户类别(用户名,密码,电话,身份证,注册时间等)

    网站留言(名称,类别,添加时间,发布人,发布人姓名,是否主帖)

    威客在线(名称,编号,简介,添加时间)

    站内新闻(标题,内容,添加时间,类别等)

    实体关系定义
    ER模型的“联系”用于刻画实体之间的关联。一种完整的方式是对局部结构中任意两个实体类型,依据需求分析的结果,考察局部结构中任意两个实体类型之间是否存在联系。若有联系,进一步确定是1:1、1:N、M:N的关系。还要考察一个实体类型内部是否存在联系,两个实体类型之间是否存在联系,多个实体类型之间是否存在联系,等等针对本网站分析如下:
    实体间的关系:
    一个注册可以参与多个网站,而一网站可以接受多个注册。

    一个网站过程一次只能产生一个网站记录,而一个网站记录只属于一个网站过程。

    设计全局ER模式
    所有局部ER模式都设计好了后,接下来就是把它们综合成单一的全局概念结构。全局概念结构不仅要支持所有局部ER模式,而且必须合理地表示一个完整、一致的数据库概念结构。

    确定公共实体类型:为了给多个局部ER模式的合并提供开始合并的基础,首先要确定各局部结构中的公共实体类型。在这一步中我们仅根据实体类型名和键来认定公共实体类型。一般把同名实体类型作为公共实体类型的一类候选,把具有相同键的实体类型作为公共实体类型的另一类候选
    局部ER模式的合并:合并的原则是:首先进行两两合并;先合并那些现实世界中有联系的局部结构;合并从公共实体类型开始,最后再加入独立的局部结构
    消除冲突:冲突分为三类:属性冲突、结构冲突、命名冲突。设计全局ER模式的目的不在于把若干局部ER模式形式上合并为一个ER模式,而在于消除冲突,使之成为能够被所有用户共同理解和接受的同一的概念模型
    全局ER模式的优化:在得到全局ER模式后,为了提高数据库系统的效率,还应进一步依据处理需求对ER模式进行优化。一个好的全局ER模式,除能准确、全面地反映用户功能需求外,还应满足下列条件:实体类型的个数要尽可能的少;实体类型所含属性个数尽可能少;实体类型间联系无冗余下沙派威客网的全局ER模式如图所示:


    4 总体设计4.1 网站系统功能说明4.1.1总体功能


    功能类别
    子功能




    用户登录
    用户输入正确的用户名和密码及正确的权限后,就登录系统。



    如果输入有误,系统报错。


    用户发布威客在线
    查看相关网站流程



    添加威客在线



    查看成交记录


    参与网站
    查看网站流程



    参与威客在线



    查看成交记录


    管理员对基本信息进行管理
    对系统用户基本信息进行管理



    对网站品进行管理



    对网站记录进行管理



    数据备份



    4.1.2 非功能性需求非功能性需求针对整个系统进行。
    4.1.2.1 用户界面需求


    需求名称
    详细要求




    风格
    界面友好,布局合理,美观大方,实用性强,操作简单


    颜色
    淡红色系为主


    分辨率
    1024*768



    4.1.2.2 软硬件环境需求


    需求名称
    详细要求




    运行速度
    系统启动运行时间不超过5min,人机界面交互时间不超过5s


    容量
    占用内存大于15MB


    操作系统性能
    10/100M bit/s


    网络传输率
    10/100M bit/s



    4.1.2.3 产品质量需求


    主要质量属性
    详细要求




    正确性
    经过测试达到了预期的效果


    健壮性
    具有一定的健壮性


    可靠性
    容错能力强,测试质量合格


    性能,效率
    性能优,效率高


    易用性
    跨平台操作


    清晰性



    安全性
    安全可靠性极佳


    可扩展性
    优良的可靠的接口


    兼容性
    可作用于任何平台


    可移植性
    正确的进行软件配置后,就可以正常运行程序



    4.2 建立数据库模型说明:

    !表示主键
    $表示索引
    N表示非空值

    以下只是网站的重要数据表,次要重略。
    allusers表



    序号
    字段名称
    字段类型
    大小
    允许为空
    最大长度




    1
    ID
    Int
    4
    自增编号
    10


    2
    username
    VarChar
    50

    255


    3
    pwd
    VarChar
    50

    255


    4
    cx
    VarChar
    50

    255


    5
    addtime
    DateTime
    8

    23



    faburenwu表



    序号
    字段名称
    字段类型
    大小
    允许为空
    最大长度




    1
    ID
    Int
    4
    自增编号
    10


    2
    renwumingcheng
    VarChar
    50

    255


    3
    leibie
    VarChar
    50

    255


    4
    renwujianjie
    VarChar
    50

    255


    5
    fujian
    VarChar
    50

    255


    6
    wanchengshixian
    VarChar
    50

    255


    7
    zhifubaochou
    VarChar
    50

    255


    8
    addtime
    DateTime
    8

    23


    9
    faburen
    VarChar
    50

    255



    gwc表



    序号
    字段名称
    字段类型
    大小
    允许为空
    最大长度




    1
    ID
    Int
    4
    自增编号
    10


    2
    renwumingcheng
    VarChar
    50

    255


    3
    leibie
    VarChar
    50

    255


    4
    wanchengshixian
    VarChar
    50

    255


    5
    zhifubaochou
    VarChar
    50

    255


    6
    faburen
    VarChar
    50

    255


    7
    yonghuming
    VarChar
    50

    255


    8
    addtime
    DateTime
    8

    23


    9
    issh
    VarChar
    2

    255



    liuyanban表



    序号
    字段名称
    字段类型
    大小
    允许为空
    最大长度




    1
    ID
    Int
    4
    自增编号
    10


    2
    cheng
    VarChar
    50

    255


    3
    xingbie
    VarChar
    50

    255


    4
    QQ
    VarChar
    50

    255


    5
    youxiang
    VarChar
    50

    255


    6
    dianhua
    VarChar
    50

    255


    7
    neirong
    VarChar
    50

    255


    8
    addtime
    DateTime
    8

    23


    9
    huifuneirong
    VarChar
    50

    255



    pinglun表



    序号
    字段名称
    字段类型
    大小
    允许为空
    最大长度




    1
    ID
    Int
    4
    自增编号
    10


    2
    addby
    VarChar
    20

    255


    3
    content
    VarChar
    300

    255


    4
    gqid
    VarChar
    10

    255


    5
    addtime
    DateTime
    8

    23



    xinwentongzhi表



    序号
    字段名称
    字段类型
    大小
    允许为空
    最大长度




    1
    ID
    Int
    4
    自增编号
    10


    2
    biaoti
    VarChar
    300

    255


    3
    leibie
    VarChar
    50

    255


    4
    neirong
    Text
    16

    255


    5
    tianjiaren
    VarChar
    50

    255


    6
    addtime
    DateTime
    8

    23



    yonghuzhuce表



    序号
    字段名称
    字段类型
    大小
    允许为空
    最大长度




    1
    ID
    Int
    4
    自增编号
    10


    2
    yonghuming
    VarChar
    50

    255


    3
    mima
    VarChar
    50

    255


    4
    xingming
    VarChar
    50

    255


    5
    xingbie
    VarChar
    50

    255


    6
    dianhua
    VarChar
    50

    255


    7
    QQ
    VarChar
    50

    255


    8
    youxiang
    VarChar
    50

    255


    9
    chushengnianyue
    VarChar
    50

    255


    10
    touxiang
    VarChar
    50

    255


    11
    dizhi
    VarChar
    50

    255


    12
    addtime
    DateTime
    8

    23


    13
    jb
    VarChar
    10

    255



    youqinglianjie表



    序号
    字段名称
    字段类型
    大小
    允许为空
    最大长度




    1
    ID
    Int
    4
    自增编号
    10


    2
    wangzhanmingcheng
    VarChar
    50

    255


    3
    wangzhi
    VarChar
    50

    255


    4
    addtime
    DateTime
    8

    23



    5 详细设计5.1 系统首页5.1.1系统首页(网站首页index.jsp)
    5.1.2 下沙派威客网首页界面说明此页面为网站首页,上面的导航栏有用户管理,站内新闻,留言板,威客在线,成交记录,后台管理等功能。下面还有系统公告,友情链接等。
    首页中拥有一个用户登录窗口,在其相应输入框中填定正确内容并选择正确的身份后,方可登录系统。其他区块与一般网站无异,只是较简洁,操作方面也是力求简约,故不一一说明实现本模块的主要代码如下所示:
    </tr> <tr> <td height="145"><table id="__01" width="684" height="145" border="0" cellpadding="0" cellspacing="0"> <tr> <td width="684" height="39" background="qtimages/index_04_02_03_01.gif"><table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr> <td width="22%" height="20" align="center" valign="bottom" class="STYLE1">最新任务</td> <td width="78%"> </td> </tr> </table></td> </tr> <tr> <td width="684" height="106"><table width="100%" border="1" align="center" cellpadding="3" cellspacing="1" bordercolor="#F8C878" style="border-collapse:collapse"> <tr> <td width="45" align="center" bgcolor="#F8F8C8">序号</td> <td width="86" bgcolor='#F8F8C8'>任务名称</td> <td width="50" bgcolor='#F8F8C8'>类别</td> <td width="105" bgcolor='#F8F8C8'>完成时限</td> <td width="86" bgcolor='#F8F8C8'>支付报酬</td> <td width="100" align="center" bgcolor="#F8F8C8">发布人</td> <td width="146" align="center" bgcolor="#F8F8C8">发布时间</td> </tr> <% sql=""; sql="select * from faburenwu where 1=1"; if(request.getParameter("bianhao")=="" ||request.getParameter("bianhao")==null ) {} else { sql=sql+" and bianhao like '%"+new String(request.getParameter("bianhao").getBytes("8859_1"))+"%'"; } if(request.getParameter("mingcheng")=="" ||request.getParameter("mingcheng")==null ) {} else { sql=sql+" and mingcheng like '%"+new String(request.getParameter("mingcheng").getBytes("8859_1"))+"%'"; } sql=sql+" order by id desc"; RS_result=connDbBean.executeQuery(sql); String renwumingcheng="";String leibie="";String renwujianjie="";String fujian="";String wanchengshixian="";String zhifubaochou=""; String faburen=""; i=0; while(RS_result.next()){ i=i+1; id=RS_result.getString("id");renwumingcheng=RS_result.getString("renwumingcheng");leibie=RS_result.getString("leibie");renwujianjie=RS_result.getString("renwujianjie");fujian=RS_result.getString("fujian");wanchengshixian=RS_result.getString("wanchengshixian");zhifubaochou=RS_result.getString("zhifubaochou"); addtime=RS_result.getString("addtime"); faburen=RS_result.getString("faburen");%> <tr> <td width="45" align="center"><%=i %></td> <td><%=renwumingcheng %></td> <td><%=leibie %></td> <td><%=wanchengshixian %></td> <td><%=zhifubaochou %></td> <td width="100" align="center"><%=faburen %></td> <td width="146" align="center"><%=addtime %></td> </tr> <% } %> </table></td> </tr> </table></td> </tr> <tr> <td height="185"><table id="__01" width="684" height="145" border="0" cellpadding="0" cellspacing="0"> <tr> <td width="684" height="39" background="qtimages/index_04_02_03_01.gif"><table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr> <td width="22%" height="20" align="center" valign="bottom" class="STYLE1">系统简介</td> <td width="78%"> </td> </tr> </table></td> </tr> <tr> <td width="684" height="106"><p>    </p></td> </tr>
    5.2 站内新闻信息5.2.1 站内新闻操作界面

    此页面为站内新闻,可随时了解最新的新闻,双击可查看详细内容,实现本模块的主要代码如下所示:
    <td width="19%" align="center" valign="bottom" class="STYLE1">内容详细</td> <td width="81%"> </td> </tr> </table></td> </tr> <tr> <td valign="top"><table width="99%" border="0" cellspacing="0" cellpadding="0"> <tr> <td align="center"><% String sql="select * from xinwentongzhi where id="+id; String biaoti="";String leibie="";String neirong="";String tianjiaren=""; ResultSet RS_result=connDbBean.executeQuery(sql); while(RS_result.next()){ biaoti=RS_result.getString("biaoti");leibie=RS_result.getString("leibie");neirong=RS_result.getString("neirong");tianjiaren=RS_result.getString("tianjiaren"); %> <table width="96%" border="1" align="center" cellpadding="0" cellspacing="0" bordercolor="#F8C878" style="border-collapse:collapse"> <tr> <td height="46" align="center"><span class="STYLE3"><span class="STYLE1"><%=biaoti %></span></span></td> </tr> <tr> <td height="110" align="left"><%=neirong %></td> </tr> <tr> <td align="right"><input type="button" name="Submit5" value="返回" onClick="javascript:history.back();"></td> </tr> </table> <table width="98%" border="0" cellspacing="0" cellpadding="0"> <tr>
    5.2.2 系统主操作界面说明下沙派威客网的发布操作界面,注册用户需要注册才能进入此页面。界面右边是呈信息列表的形式让用户输入正确的网站品信息,以读入系统数据库。
    5.3 威客在线操作界面在本网站系统,注册用户。用户既可以在系统中发布威客在线,也可以参与他人的留言活动。
    5.3.1 威客在线操作界面

    5.3.2 威客在线说明该界面的功能是让注册用户进行发布威客的相关操作,并形成成交记录载入数据库相应的表。注册用户点详细看到图5-3-2威客在线界面,还可下载文件,如图5-3-3威客在线界面.实现本模块的主要代码如下所示:
    <title>发布任务</title><LINK href="CSS.css" type=text/css rel=stylesheet> <script language="javascript" src="js/Calendar.js"></script> <script type="text/javascript" src="js/popup.js"></script> <script type="text/javascript"> function up(tt) { var pop=new Popup({ contentType:1,isReloadOnClose:false,width:300,height:50}); pop.setContent("contentUrl","upload.jsp?Result="+tt); pop.setContent("title","文件上传"); pop.build(); pop.show(); } </script> </head><script language="javascript">function check(){ if(document.form1.renwumingcheng.value==""){alert("请输入任务名称");document.form1.renwumingcheng.focus();return false;}if(document.form1.wanchengshixian.value==""){alert("请输入完成时限");document.form1.wanchengshixian.focus();return false;}if(document.form1.zhifubaochou.value==""){alert("请输入支付报酬");document.form1.zhifubaochou.focus();return false;}}function gow(){ document.location.href="faburenwu_add.jsp?jihuabifffanhao="+document.form1.jihuabifffanhao.value;}</script> <body > <form name="form1" id="form1" method="post" action="faburenwu_add_post.jsp">
    添加发布任务:
    <br><br> <table width="100%" border="1" align="center" cellpadding="3" cellspacing="1" bordercolor="#00FFFF" style="border-collapse:collapse"> <tr><td>任务名称:</td><td><input name='renwumingcheng' type='text' id='renwumingcheng' value='' size='50' /> *</td></tr><tr><td>类别:</td><td><select name='leibie' id='leibie'> <option value="网站类">网站类</option> <option value="软件类">软件类</option> <option value="图文类">图文类</option> <option value="其他类">其他类</option></select></td></tr><tr><td>任务简介:</td><td><textarea name='renwujianjie' cols='50' rows='5' id='renwujianjie'></textarea></td></tr><tr><td>附件:</td><td><input name='fujian' type='text' id='fujian' size='50' value='' /> <input type='button' value='上传' onClick="up('fujian')"/></td></tr><tr><td>完成时限:</td><td><input name='wanchengshixian' type='text' id='wanchengshixian' value='' readonly='readonly' onClick="getDate(document.form1.wanchengshixian,'2')" need='1' /> *</td></tr><tr><td>支付报酬:</td><td><input name='zhifubaochou' type='text' id='zhifubaochou' value='' /> *</td></tr> <tr> <td>发布人:</td> <td><input name="faburen" type="text" id="faburen" value="<%=request.getSession().getAttribute("username")%>"></td> </tr> <tr> <td> </td> <td><input type="submit" name="Submit" value="提交" onClick="return check();" /> <input type="reset" name="Submit2" value="重置" /></td> </tr>
    5.4 系统后台登录界面5.4.1系统后台登录界面
    5.4.2 系统后台登录界面说明此页面要求系统管理员输入正确的用户名和密码,在核对无误后放行,若其中有数据不符则认为是非法用户而拒之于门外。实现本模块的主要代码如下所示:
    title>用户登录</title><style type="text/css"><!--body { margin-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; overflow:hidden;}.STYLE1 { font-size: 12px; color: #a1c8c6;}.STYLE4 {color: #FFFFFF; font-size: 12px; }.STYLE5 { color: #72AC27; font-size: 26pt;}--></style><meta http-equiv="Content-Type" content="text/html; charset=gb2312"></head><body><table width="100%" height="100%" border="0" cellpadding="0" cellspacing="0"> <tr> <td bgcolor="035551"> </td> </tr> <tr> <td height="311" background="images/login_03.gif"><table width="758" border="0" align="center" cellpadding="0" cellspacing="0"> <tr> <td height="210" background="images/login1.jpg"><table width="100%" height="190" border="0" cellpadding="0" cellspacing="0"> <tr> <td width="38%" height="98"> </td> <td width="62%"> </td> </tr> <tr> <td> </td> <td><table width="93%" height="51" border="0" align="left"> <tr> <td><div style="font-family:宋体; color:#FFFFFF; filter:Glow(Color=#000000,Strength=2); WIDTH: 100%; FONT-WEIGHT: bold; FONT-SIZE: 19pt; margin-top:5pt"> <div align="center" class="STYLE5">下沙派威客网</div> </div></td> </tr> </table></td> </tr> </table></td> </tr> <tr> <td height="101"><table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr> <td width="446" height="101" background="img/login_06.gif"> </td> <td width="156"> <table width="100%" border="0" cellspacing="0" cellpadding="0"><form name="form1" method="post" action="adminyanzheng.jsp"> <tr> <td width="29%" height="22"><span class="STYLE4">用户名</span></td> <td width="71" height="22"><input name="username" type="text" id="username" style="width:100px; height:16px; border:solid 1px #000000; color:#666666"></td> </tr> <tr> <td height="22"><span class="STYLE4">密  码</span></td> <td height="22"><input name="pwd" type="password" id="pwd" style="width:100px; height:16px; border:solid 1px #000000; color:#666666"></td> </tr> <tr style="display:none"> <td height="22"><span class="STYLE4">权  限</span></td> <td height="22"><select name="cx" id="cx"> <option value="管理员">管理员</option> <option value="评审专家">评审专家</option> <option value="教师">教师</option> </select> <input name="login" type="hidden" id="login" value="1"></td> </tr> <tr> <td height="25"> </td> <td height="25"><input type="submit" name="Submit" value="登陆"> <input type="reset" name="Submit2" value="重置"></td> </tr></form> </table> </td> <td width="156" background="images/login_09.gif"> </td> </tr> </table></td> </tr> </table></td> </tr> <tr> <td bgcolor="1f7d78"> </td> </tr> <tr> <td bgcolor="1f7d78"><div align="center"><span class="STYLE1">-- 下沙派威客网 CopyRight 2011 --</span></div></td> </tr></table>
    5.5 系统后台操作界面5.5.1 人机界面后台首页

    实现本模块的主要代码如下所示:
    <%@ page language="java" pageEncoding="gb2312"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head> <base href="<%=basePath%>"> <title>下沙派威客网</title> </head><frameset rows="90,*,30" cols="*" framespacing="0" frameborder="no" border="0"> <frame src="top.jsp" name="topFrame" scrolling="No" noresize="noresize" id="topFrame" /> <frame src="center.jsp" name="mainFrame" id="mainFrame" /> <frame src="down.jsp" name="bottomFrame" scrolling="No" noresize="noresize" id="bottomFrame" /></frameset><noframes><body></body></noframes></html>
    站内新闻


    实现本模块的主要代码如下所示:
    lb="站内新闻";} %><script language="javascript">function check(){ if(document.form1.yonghuming.value==""){alert("请输入用户名");document.form1.yonghuming.focus();return false;}if(document.form1.mima.value==""){alert("请输入密码");document.form1.mima.focus();return false;}if(document.form1.gongsimingcheng.value==""){alert("请输入公司名称");document.form1.gongsimingcheng.focus();return false;}if(document.form1.dianhua.value==""){alert("请输入电话");document.form1.dianhua.focus();return false;}if(document.form1.xingye.value==""){alert("请输入行业");document.form1.xingye.focus();return false;}}function gow(){ document.location.href="gongsi_add.jsp?jihuabifffanhao="+document.form1.jihuabifffanhao.value;}</script> <body ><table width="942" height="1023" border="0" align="center" cellpadding="0" cellspacing="0" id="__01"> <tr> <td width="942" height="32" background="qtimages/index_01.gif"><%@ include file="qttop.jsp"%></td> </tr> <tr>
    注册管理

    实现本模块的主要代码如下所示:
    <title>用户注册</title><LINK href="CSS.css" type=text/css rel=stylesheet> </head> <body > <p>已有用户注册列表:</p> <form name="form1" id="form1" method="post" action=""> 搜索:用户名: <input name="bianhao" type="text" id="bianhao" /> 姓名 <input name="mingcheng" type="text" id="mingcheng" /> <input type="submit" name="Submit" value="查找" /></form><table width="100%" border="1" align="center" cellpadding="3" cellspacing="1" bordercolor="00FFFF" style="border-collapse:collapse"> <tr> <td width="30" align="center" bgcolor="CCFFFF">序号</td> <td bgcolor='#CCFFFF'>用户名</td><td bgcolor='#CCFFFF'>密码</td><td bgcolor='#CCFFFF'>姓名</td><td bgcolor='#CCFFFF'>性别</td><td bgcolor='#CCFFFF'>电话</td><td bgcolor='#CCFFFF'>QQ</td><td bgcolor='#CCFFFF'>邮箱</td><td bgcolor='#CCFFFF'>出生年月</td><td bgcolor='#CCFFFF'>头像</td><td bgcolor='#CCFFFF'>地址</td> <td width="138" align="center" bgcolor="CCFFFF">级别</td> <td width="138" align="center" bgcolor="CCFFFF">添加时间</td> <td width="60" align="center" bgcolor="CCFFFF">操作</td> </tr>
    成交记录管理

    实现本模块的主要代码如下所示:
    <title>发布任务</title><LINK href="CSS.css" type=text/css rel=stylesheet> </head> <body > <p>所有交易记录:</p> <form name="form1" id="form1" method="post" action=""> 搜索:任务名称: <input name="bianhao" type="text" id="bianhao" /> 类别 <input name="mingcheng" type="text" id="mingcheng" /> <input type="submit" name="Submit" value="查找" /></form><table width="100%" border="1" align="center" cellpadding="3" cellspacing="1" bordercolor="00FFFF" style="border-collapse:collapse"> <tr> <td width="30" align="center" bgcolor="CCFFFF">序号</td> <td bgcolor='#CCFFFF'>任务名称</td><td bgcolor='#CCFFFF'>类别</td><td bgcolor='#CCFFFF'>完成时限</td><td bgcolor='#CCFFFF'>支付报酬</td> <td width="138" align="center" bgcolor="CCFFFF">发布人</td> <td width="138" align="center" bgcolor="CCFFFF">接受时间</td> <td width="60" align="center" bgcolor="CCFFFF">接受人</td> <td width="60" align="center" bgcolor="CCFFFF">对方同意</td> <td width="60" align="center" bgcolor="CCFFFF">操作</td> </tr>
    5.5.2 系统后台界面说明在此系列页面中,管理员可对所有用户的信息进行增加、编辑、删除等操作,添加用户时需要填写的资料不太多,而编辑页面则是以详细列表的形式展开,一目了然。
    6 系统测试6.1 系统测试的目的系统测试不是为了表明程序是正确的,因为如果是这样,就会设计一些不易暴露错误的测试方案,也不会主动去检测、排除程序中可能存在的一些隐患。对于测试目的,G.J.Myers给除了以下的观点:

    测试是为了发现程序中的错误而执行程序的过程
    好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案
    成功的测试是发现了至今为止尚未发现的错误的测试

    6.2 面向对象系统测试方案根据系统测试目的并结合面向对象方法,我们给出了如下系统测试方案:

    尽早的、不断的进行系统测试。我们知道,错误发现的越早,改正它所付出的代价也就越小。由于错误的发生往往是不可避免的,因此我们的系统测试贯穿于整个开发过程中,而不是把系统测试仅仅看作是软件开发的一个独立阶段
    设计测试用例时,给出测试的预期结果。一个测试用例由两部分组成:测试用的输入数据和该输入数据所期望的程序运行结果。这样测试时才能有一个判断标准,利用输入数据得出测试数据并和预测数据进行比较,看它们是否一致
    我们在设计测试用例时,不仅有合法的输入测试用例,还有非法的输入测试用例。因为,在系统的实际使用过程中,由于各种原因,用户往往会使用一些非法的输入,比如按错了键或者使用了非法的命令等,所以,我们特别注意设计非法的输入测试用例来进行测试
    在对系统修改完之后进行回溯测试。我们在修改系统的同时往往又会引入新的错误,所以在对程序修改完之后,用以前的用例进行回归测试

    7 软件布署7.1 安装环境要求
    使用Windows 2000/XP 操作系统的用户安装个人网络服务器
    网页制作软件,如JSP,JDK
    数据库管理软件,如SQL Server
    数据库管理软件,如SQL Server

    7.2 系统详细配置方法7.2.1 配置环境变量
    我的电脑—右键—属性—高级—环境变量—系统变量—新建,变量名:CLASSPATH ,注意为大写,变量值:你所安装JDK的根目录下的lib文件夹,如:C:\Program Files\Java\jdk1.5.0\lib\tools.jar;.注意后面以分号和一个点结尾
    修改path变量:我的电脑—右键—属性—高级—环境变量—系统变量—选择path,点编辑,在变量值最后增加一个分号,增加你安装的JDK的根目录下的bin文件夹:C:\Program Files\Java\jdk1.5.0\bin
    在命令行分别输入java 、javac,如无错误提示,安装完成
    如果是B/S结构程序,双击E:\jakarta-tomcat-5.0.28\bin\startup.bat,如果出现黑色TOMCAT界面,安装成功,否则重装
    安装SQLServer2000数据库,一路默认,注意不要选择域用户,设置sa用户的密码为123
    安装SQLServer2000数据库SP3补丁,当提示已成功传递文件之后,找到安装的目录,双击setup.bat,看提示安装,基本默认
    附加数据库:打开开始—程序—Microsoft SQLServer—服务管理器,启动数据库,开始—程序—Microsoft SQLServer—企业管理器,在左侧树状菜单,选择数据库-右键-所有任务-附加数据库,点击浏览,选择你的文件夹下的.MDF文件,确定
    如果是C/S结构程序,安装你的程序,OK
    如果是B/S结构程序,复制你的网站文件到E:\jakarta-tomcat-5.0.28\webapps下,启动E:\jakarta-tomcat-5.0.28\bin\startup.bat,在IE中输入http://localhost:8080/你的网站名 ,OK
    如果需要配置数据源,开始-控制面板-管理工具-数据源ODBC-添加-SQLServer-完成,名称填写readme.txt文件里的数据源名,描述为空,服务器填写“.”就可以,下一步-下一步-更改默认的数据库为你的附加数据库-下一步-完成-测试数据源,如提示“测试成功”,一路确定,否则重装

    总结经过一个多月进行的毕业设计,终于完成了下沙派威客网的设计。此设计已经达到了最初期望的设计要求,完成了需求。在这次学生信息管理系统的设计过程中我受到很大启发:在网站开发与设计上,体会到了理论与实际结合的重要性,认识到网站开发中应该更加注重网站的规划及按步骤实施。网站作为多栏目、多版面的有机结合整体,不仅仅要考虑到网站功能及其效果的实现,更应该注重网站与用户的有机结合。网站设计与实现的成功只是网站成功的一步,网站的明确定位显得更加重要,网站应该随时根据实施环境,实施困难进行必要的定位调整。理论与实践相结合,让我真正体会到学以致用的乐趣。通过理论作指导,再用实践来体会,验证理论。这样既加深了对理论知识的认识,又从实践活动中充实了自己。
    参考文献[1] 杨学瑜,王志军,刘同利编著.JSP入门与提高[M]. 北京: 清华大学出版社.2002.
    [2] 林上杰,林康司编写.JSP2.0技术手册[M]. 北京:电子工业出版社.2004.
    [3] Decoder 编著. JSP技术揭秘[M].北京:清华大学出版社.2001.
    [4] Mike Jasnowski.Java,Xml和Web服务宝典[M]. 电子工业出版社. 2003.
    [5] Danny Ayers.Java 数据编程指南[M].电子工业出版社.2003.
    [6] (韩)沈文涉编著.HTML+JAVASCRIPT30日完全掌握[M].北京:中国青年出版社.2001.
    [7] 高志清 主编.跟我学Dreamweaver Mx 2004建网站[M].北京:中国水利水电出版社.2004.
    [8] 武和平,金磊,漆治文. 基于Google平台的CMS系统的建设及应用[J]. 中国电化教育.2007.
    [9] 俞承杭 编著.计算机网络与信息安全技术[M].北京:机械工业出版社.2008.
    [10] 陈月波 编著.网络信息安全[M]. 武汉理工大学出版社.2005.
    [11] 吴建,张旭东.JSP网络开发入门与实践[M].北京:人民邮电出版社.2006.
    [12] Andrew J Brust;Stephen Forte.Microsoft SQL Server 2005[M].Microsoft Press.2006.
    [13] Bryan Basham,Kathy Sierra.Head First Servlet&JSP[M].中国电力出版设.2006.
    0 评论 1 下载 2020-08-09 11:04:42 下载需要13点积分
  • 基于JAVA EE的停车场管理系统

    摘 要如今,我国现代化发展迅速,人口比例急剧上升,在一些大型的商场,显得就格外拥挤,私家车的数量越来越多,商场停车难得问题凸显,对于停车场的合理利用有助于缓解用户停车压力,鉴于这样的背景;初步设定系统功能主要包括,用户信息管理,违规车辆信息管理,刷卡停车牌管理,停车位信息管理,停车计费,信息查看管理等功能模块。本系统采用JAVAEE开发形式,利用数据库来完成数据存储功能,运用了B/S形式的开发模式,严格按照了软件工程的开发模式进行开发,保证系统的良好运行。
    关键词:停车场系统;Javaee;Tomcat
    AbstractNowadays, our country modernization is developing rapidly, urban population and the rapid increase of floating population in some large shopping malls, supermarkets appear very crowded, The number of private cars is increasing, shopping malls supermarket parking difficult problem, for the rational use of the parking lot helps to alleviate the pressure of the users of parking, in view of this background; Preliminary setting system function mainly includes user information management, illegal traffic information management, management of credit card the stop sign, Parking spaces information management, parking billing, information viewing management and other functional modules This system adopts the JAVAEE development form, sing the database to complete the data storage function, is in the form of web development model, system design to follow the software engineering development mode, ensure the system perform well .
    Keywords:Parking system ; Javaee ; tomcat
    第1章 绪论1.1 课题背景大多数城市繁华区域比如商业区、贸易区,都是停车较为困难的地带,为此,停车场构建可以解决繁华区域停车难的问题。目前,在我国大中城市的大型区域,都建立有地上或地下的停车场,极大缓解用户去停车难问题。同时,停车场的管理设施也在不断更新,从以往的刷卡进入,到如今的刷车牌就可以进出,无时无刻不在提供给用户便利性。
    1.2 目的和意义1.2.1 课题目的在国内的许多城市会遇到停车难的问题,这给人们出行停车带来麻烦,在现实生活中,去大型、商场购物是人们常去的地方,往往人们都是选择开车自驾过去,为此这就给停车带来很大压力。很多时候,人们来到因无法停车而经过长时间的等待车位,寻找车位,使得大量的时间都浪费在找车位上,而且对汽车的停车安全也没有保障;还有许多是通过人工来管理,人工收费,造成管理混乱,停车费不知去向的问题发生,鉴于当前国内购物停车问题,开发一套成熟高效的停车场系统正满足社会的需求。
    1.2.2 课题意义在21实际信息科技无疑是生产力的重要支柱,已经在长久的时间里对人们的生活经济起着极为关键的作用,在企业的信息管理体系中如何运用信息科技,并且高效率高收益的应用,是在计算机诞生后的五十年代的事情了。
    现在人们所指的管理信息系统,就是指我们通过运用计算机来完成信息的收集整理,检索查询,信息处理和传递等等功能。并且将这些应用到企业或者其他组织中去,有人机交互操作完成,这样的大规模运用系统发生在七十年代初期,不少企业刚刚运用到信息管理系统,这样的系统往往并不复杂,效率低所以对于对管理的作用有限。
    自20世纪80年代末,计算机网络技术蓬勃发展,相关的通信行业也大有起色,企业运用信息系统来管理也随之迎来了网络化的黄金时期。世界经济较为发达的国家率先完成了成熟便利的管理信息系统体系,而且对于社会经济还有生活质量的大步提高起到了必不可少的作用。
    我国的管理信息系统的迎来高速发展是在八十年代末期开始直至九十年代,国家支持下成立了“金卡、关、桥“工程,很多的企业单位建立了局域网还有广域网管理的信息系统。因为我国的经济发展方向越来越知识化,所以不管是管理信息系统的工业经济底蕴,还是专家和管理人员使用的决策系统专领域系统,处理事务和数据的能力都有了很大的提高。
    停车场车辆管理已经有了很多运用。仔细思考在生活中我们是如何管理自己车辆的相关内容,在不自主的情况下很多时候我们已经运用了科学的管理方式和策略。科学管理知识的运用首先要树立正确的管理观念和规则,搞清楚科学管理的意义。
    如何科学管理?正确的管理观念是首要的,科学管理方式的不同将成为决定车辆贫富差距的主要因素。
    停车场管理系统的主要目的就是完成车辆信息的统计和停车场地资源的合理分配,使使用者得到便利,投资者的利益最大化。在系统的开发和现实的管理中,多种软硬工具相互结合,满足安全性,高效性,收益最大化的种种要求。停车场管理系统的建立满足市场的需求,对于公共交通的管理还有居民的外出生活提供了巨大的便利。
    停车场管理系统的设计包含两方面的意义:首先,停车场给在停车管理方有着非常大的效益,人们能够按照安排有序停车,还能够得到额外收益,对于大多商业场所良好的管理能够吸纳更多的人流量,从而提高了相应的销售业绩;另一方面,解决了人们的停车难题,人们购物的热情和滞留时间都会有相应的增长,再不会因为停车难而影响原本的购物或者闲逛计划,这样一来节省了大量的闲暇时间,也能够带来良好的出行心情。停车管理系统的开发,对于持久发展,良好秩序管理都有巨大帮助。
    1.3 相关工具和技术介绍1.3.1 SQLSERVER2005的相关介绍Microsoft SQL Server系统中,在相应的服务器中添加登陆名称。添加完成后登录名将拥有相应的原有服务器的一干权限。
    数据库用户是登录名在数据库中的具体连接对象,也是数据库操作和执行的主要对象。
    在Microsoft SQL Server 2005系统中,一般用户并不直接去操作表或者视图,往往通过相应的架构来完成。我们可以在管理模块中对用户信息进行相应的增删改查操作,十分便捷。
    CREATE USER命令可以用来新建用户。用户的登录名备份在数据库中,所以在新建的时候我们需要指定好相应的登录名称。多个拥有单个命名空间的数据库实体组成了架构。
    Microsoft SQL Server 2005系统的以架构作为大量数据库对象的存储区域,也是它的一大特性。用户可以自由的管理架构,包括架构的增删改差操作。
    数据库用户的相关集合被称为数据库角色。所以作为数据库的用户往往能够使用数据库角色的绝大多数功能。而数据库的角色可以通过相关的权限设置来限制不同用户的操作权限,从而达到管理用户的目的。
    Microsoft SQL Server 2005系统支持很多的数据库角色和公用角色,以下是数据库角色的特点还有我们怎么样来管理它们。
    管理数据库角色可以通过数据库角色的增删改查操作,相应的我们还可以对数据库角色的成员进行管理,比如添加和删除数据库成员。
    新建角色的时候我们一般使用CREATE ROLE命令。sp_addrolemember的功能可以帮助我们把新的成员添加到指定的角色中去。当我需要更新或者修改数据角色名称的时候可以使用ALTER ROLE语句。DROP ROLE语句可以用来删除空闲的无用的角色。和固定数据库服务器类,一些提前定义好的权限被赋予了数据库角色。在数据库中使用定义好的数据库角色将会方便角色的权限管理工作。
    1.3.2 eclipse的相关介绍及tomcat配置Eclipse是自由集成的开发环境拥有优良的跨平台特性。刚开始的时候被用来做Java语言开发,现在也支持C++/PHP/Python等语言。
    Eclipse的兼容性和灵活性都很高支持非常多的插件。很的软件开发商都会使用它作为自己的开发环境。
    Eclipse其实是作为Visual Age for Java的替代品生产出来的。这个IBM公司研发的新一带IDE开发环境于2001年11月开源面向大众,现在属于eclipse基金会名下。 最新的eclipse已经更新到4.6版本,受到大众的喜爱。
    Eclipse的架构是根据富客户机平台完成的。涵盖了之下的部分:

    核心平台用来启动eclipse属于运行时的重要插件
    OSGi(标准集束框架)
    SWT(可移植构件工具包)
    JFace(文件缓冲,文本处理,文本编辑器)
    将tomcat集成到java EE版本的eclipse中。点击Window—show View—-Other—-输出Servers进行过滤,选中Services,点击Ok.在该Services窗口中新建一个新的Server。双击新建的Server进行配置,修改web应用保存的位置鼠标右击启动Server,打开浏览器访问Tomcat

    1.3.3 Servlet的运行原理Servlet运行原理与JSP的运行原理基本相同,不同之处在于JSP需要先转换成Java代码,而Servlet本身就是Java代码。Servlet的运行原理如图1-1所示:

    创建servlet对象的创建分为两种情况:

    延迟加载(默认):就是在服务器第一次接收到请求访问servlet时,会根据url查找对应的servlet_name,然后再根据servlet-name找到对应的servlet-class,找到之后,调用该servlet对象的无参构造方法进行构造
    立即加载:在服务器一启动就将调用servlet的无参构造器构建对象。控制servlet对象是延迟加载还是立即加载的方式是在web.xml文件中配置servlet时添加一个配置选项<load-on-startup>,例如:
    <servlet><servlet-name>lifeServlet2</servlet-name><servlet-class>com.briup.life.LifeServlet2</servlet-class><load-on-startup>2</load-on-startup></servlet><load-on-startup>整数</load-on-startup>

    中间的整数可以是正整数,负整数和0.如果是负数代表延迟加载.如果是0或者正整数代表立即加载。值越小越先被加载,0最先加载。无论以哪一种方式加载的Servlet对象,在当前应用范围之内(或者我们可以说在web容器范围之内)只有一个实例对象存在,这个对象在第一次被访问(延迟加载)或者服务器启动(立即加载)时被创建,今后如果有请求访问这个Servlet对象,那么都会从web容器中取这个Servlet对象调用。所以Servlet对象只会被构建一次。
    每当有请求过来访问的时候,就调用一次指定servlet对象的service方法执行。所以service方法可以被多次调用,而且可以并发调用。
    在Service方法中可以接收两个参数一个叫ServletRequest,一个叫做ServletResponse,在HttpServlet中封装的叫做HttpServletRequest和HttpServletResponse。
    Servlet中的三个容器:服务器在处理请求的时候,接收到一个请求就构建一个Request和Response来处理用户请求,如果在多个servlet之间需要进行信息的传递,那么就需要有这样一些(容器)范围能够帮助我们保存数据,以及对数据信息进行传递。



    对象
    类型
    作用域(应用范围)




    request
    HttpServletRequest
    一次请求


    session
    HttpSession
    一次会话(数据在多个请求中共享)


    application
    ServletContext
    当前应用(最大的对象)



    1.3.4 JSP的相关介绍JSP是以java语言为基础的web应用开发技术,所以它也继承了相当优秀的跨平台性,实现了部分业务逻辑和代码的分离,代码和组件的重复使用,同事也具有servlet的相关功能,自动预编译的实现。
    jsp是什么?

    jsp全称Java Server Pages,也就是我门常说的动态网页开发技术
    .Jsp、servlet、php 等属于动态网页技术
    .jsp页面是以.jsp结尾的文件
    .html文件是静态页面
    .jsp 文件是动态页面
    .jsp页面允许我们在html代码中嵌入java代码

    这样我们就可以在html中使用java代码来完成的功能了。简单的理解,jsp就是html页面+java代码。但是jsp中能写的内容还不止这些,可以包含如下内容:

    html标签
    css
    javascript
    java代码
    EL表达式
    引入并使用其他标签库,例如jstl标签库、struts2标签库等

    所以jsp页面里面除了能写之前在html里面写东西之外,还可以写很多和java相关的东西,java代码、el表达式、动态标签库等(这些东西的本质都是执行java代码)。
    注意:jsp页面中可以只有java代码,也可以一句java代码也没有,也可以一句html页面也没有。
    jsp的运行
    浏览器可以直接运行html页面,但是不能直接运行jsp页面,jsp是需要在拥有jsp引擎的服务器中运行的,例如tomcat服务器。所以jsp是运行在服务器端的,运行完之后,把动态生成的html页面再使用io流写回给浏览器,浏览器接收并且解析后再呈现出来效果。
    jsp和servlet的关系
    简单的讲,一个jsp页面就是一个servlet。jsp页面第一次被访问的时候,会被tomcat服务器编译成一个java类,这个java默认继承HttpJspBase类,而HttpJspBase类是HttpServlet的子类。
    我们编写的jsp页面最终就被tomcat服务器编译成了一个HttpServlet的子类,所以说jsp本身就是一个servlet,那么jsp为什么是需要运行在tomcat服务器中原因也就很好理解了。jsp页面被tomcat服务器编译成的java文件及其class文件保存在tomcat服务器里面的work目录中,在这里的代码中。我们还可以看见它是如何使用io流把生成的html页面代码一行一行写回给浏览器的。

    jsp的生命周期
    客户端第一次访问jsp的时候,服务器会把这个jsp页面翻译成对应的java文件,之后java文件需要编译成对应的class文件,具体的流程如下:
    TestServlet.java--->TestServlet.java.class hello.jsp--->hello_jsp.java--->hello_jsp.class
    第2章 系统可行性分析可行性分析总体概况为项目开发是否可行,通常是从技术方面,经济方面,操作方面等来进行判断的;通过以上三个层面分析,可以大大降低项目开发所产生的风险,在项目开发前期预测出可能存在的困难,并做出相应的解决方案。
    目标系统应该达到以下要求:

    时间经济性的要是使逻辑物理的双重设计都达到一定程度的优化,系统的运行速率和响应时间大大提高
    可靠性指的是处理业务是能够精确,偏差值小
    可理解性指的是顾客容易上手和了解系统的内容
    可维护性和适应性,系统能够在不同环境下顺利运行,并且具有较好的扩展能力方便后期功能的添加和软件的维护和更新
    可用性,系统是否满足顾客和业务的要求,相应功能是否完全实现
    安全保密性,系统的数据安全保证,包括输入输出数据的安全校验,还有数据持久化后的保存和传递的安全性,以及相应的管理员权限设定


    2.1 国内外研究现状停车场管理系统开发出来的目的是为了方便公共场所或者企业等单位的停车管理,管理系统的高效和经济优势巨大,现如今已经有不少的高档次场所都已经引入了这种管理方式,停车场的管理人员和使用人员无需去关注它的内部设计,只需要关注相关信息的呈现和操作,如车辆信息,车位情况,而直观的了解这些无疑可以使管理者迅速的掌握停车场的实施情况,使车辆的停留和出入管理都更加的方便快捷。
    管理信息系统(简称MIS)将计算机网络和通信技术相互结合,其中包括了对于数据的采集、传输、存储、加工还有维护和使用五大部分。但是由于数据的精准处理能力并不足以搭配现如今优良的硬件设备,并且打击对于管理系统的期待值很高希望尽早能够有相对成熟稳定的系统面世,而在开发当中不可避免的陷入了一些歧路,所以至今管信息系统的进步一直较为缓慢,在计算机技术的飞速发展期,尽可能快的研发出多种类的管理信息系统,并且迅速的推广无疑是重中之重,在不少发达国家,高信息化和现代化的设备已经融了社会生活,节省了大量的人力物力,人们能够从繁重的信息处理和管理中解脱出来,大大推进了生产力和经济的进步,而在我国信息化管理才刚刚起步,不过随着技术的更新和生活质量的提高,像停车场管理系统这样高效的信息管理系统势必蓬勃发展,占据极大的市场。
    随着中国现代化步伐的快速前行,多数繁华地段停车场的车流量与日俱增,相应的安保与管理工作也更加的任重道远。现如今不少的发达国家都通过了停车场管理系统这样的管理方式,来加强管理和安保工作,停车场管理系统的内容和模式也愈加丰富了起来。
    我们常见的智能管理系统是一卡通系统。其包括:自动考勤系统,自动打卡系统,安全监控系统,洗衣店管理系统,地铁交通服务系统,货物运输系统,物流系统,收费站管理系统,通过各个系统的互相结合构成了我们当今的信息化生活,提高了我们的生活质量,节省时间创造出更多的价值,广泛的应用于各大公共场所,如学校,医院等事业单位还有商业贸易中心等等。
    2.2 经济可行性经济可行性主要考虑的是项目开发成本是否可以接受,对于项目的后期收益是否可观等问题进行分析;这关系到企业的发展利益;一般来讲,项目开发主要的花费都是一些小的开销,比如,开发人员工资,网络设备,服务器,项目操作培训,后期维护等问题;本次系统开发主要考虑的是毕业设计,不需要考虑这些,但是对于企业项目开发,通常都是没有问题的。



    序号
    任务
    人员
    工作日
    日(元)
    总计(元)




    1
    需求分析
    1
    3
    1000
    5000


    2
    总体设计
    2
    2
    1000
    9000


    3
    系统详细设计
    3
    3
    1000
    8000


    4
    数据库实现
    2
    5
    1000
    8000


    5
    编码实现
    2
    6
    2000
    30000


    6
    单体测试
    1
    3
    1500
    7000


    7
    系统集成测试
    1
    3
    1000
    2000


    8
    说明手册编制
    1
    2
    1000
    5000


    9
    总计



    70000



    2.3 技术可行性技术可行性分析主要是考虑到项目开发涉及到的技术部分是否可以解决系统开发存在的问题,这个关系到系统能够顺利开发完成,因此,在对技术上的分析占据主要部分;本次系统开发主要的开发模式是web形式,即网页版程序设计,是通过网络来访问的程序,系统主要采用的开发语言是Java,这门语言已经是开发语言中最为有效的语言之一,功能强大,灵活性好,数据库采用的是SQLSERVER数据库,二者搭配是最佳组合,在TOMCAT环境下进行项目开发,这个项目中,技术的使用都是有可靠性的,都可以实现用户的设计需求;因此,对于系统开发,在技术层面上是没有问题的。

    网络环境:以太网
    传输介质:5类双绞线
    服务器:专用服务器或PC机
    工作站:每个部门至少1台工作站
    软件环境:操作系统:Windows 7
    数据库:SQL Server 2005

    2.4 法律可行性合同责任:合同明确规定甲乙方责任,双方签署后,一旦违约,所有后果由违约方承担。关于相应的软件和技术专利权使用权问题解决:我们应当采用付费正版;开发过程中版权侵犯等问题问题,严格按照法律规定进行处理。
    2.5 社会可行性凡是使用本管理系统的人员不需要参加相应的培训,也不需要具有专业知识能力,只需有基本的文化教育素养即可操作。系统便易操作简单不需要很高的文化水平和专业技能的支持,所以各个公司都能够很方便的安排系统的使用人员。
    操作人员只需将大量的数据输入系统,需要支付一定的时间和耐心即可解决。
    另外根据场所的大小还需要安排相应的进出车登记员、财务员、系统维护人员和安保人员。
    2.6 操作可行性操作可行性首先指的就是界面是否让顾客或者说操作者感到舒适,同时在操作的同事系统应当保持流畅无卡顿现象,在数据的录入和处理上要有相应的规范性,并且便以之后的系统维护和功能拓展。而这些在当前的系统中基本都能够很好的实现。
    由以上经济、技术、法律、社会情况、操作四方面的分析可以看出、此时开发的系统是完全符合社会生活需要,并且被社会的基本原则支持的,采用本系统,采用本系统能够高效的处理停车业务,使实时情况的查询,停车事件的处理,还有收费等行为大大方便快捷,而且能够减少手动计入的失误和安全隐患问题,使信息快速高效运行。
    2.7 业务流程图通过对停车场管理系统的业务分析,业务流程图如图2-2所示。

    2.8 本章小结本章主要是对停车场管理系统的需求分析,通过可行性分析及系统业务流程图的制作,深入的了解了停车场管理系统开发的可行性和必要性,也为下面开发做出准备工作。
    第3章 系统需求分析需求分析是软件开发前期一项非常关键的步骤,它主要的用途就是确定用户的基本需求,用户对系统设计的期望,针对用户的个性化定做需求制定妥善的开发方案,明确系统具有哪些功能,估算开发成本预算,与客户讨论预算细节,初步统计系统开发涉及的各项费用。
    3.1 功能需求分析停车管理信息系统主要功能如下简述:

    系统设置模块:记录用户基本信息,系统权限分配,密码修改等
    违规车牌模块:主要是记录一些违规车辆信息,对车主处罚
    会员停车模块:记录会员卡信息,会员卡积分情况,停车信息
    车牌停车模块:顾客还可以进行无卡进出,通过车牌记录,记录停车信息
    车位管理模块:记录其当前车位剩余状态,及使用情况
    停车收费模块:主要是记录顾客本次停车的收费信息,支付方式等
    统计查询模块:主要是可查询停车场所有的消费记录,车位记录等信息并能打印表单
    停车场资讯模块**:这个模块主要提示一些停车场信息,促销活动信息

    3.2 性能需求分析本次系统开发着重在系统权限及系统性能方面上做出说明,具体表述如下:

    系统权限分配环节:系统通常分配两个权限,一个是用户,一个是管理员,二个权限的不同操作的功能模块就不同;用户主要是操作一些基本的功能,管理员权限拥有着系统最高的管理权限,都系统可以全面的管理,同时,对安全性能的要求也是有管制权限的
    管理员:对当前系统的设计有着充分的了解,有权利对相应的数据库数据进行增删改操作
    停车人员:在系统中只能够进行停车还有取车相应的操作
    最高管理员:本系统的最高权限拥有者

    系统性能分析,系统性能分析考虑的是系统的安全性,灵活性,稳定性,可维护性等几个方面,安全性通常指系统的安全要素是否具备,系统是否存在信息泄露风险;灵活性主要是指系统模块之间操作是否灵活,用户使用是否便利问题;稳定性主要是指,系统运行状态是否良好,是否存在死机,系统卡主等情况;可维护性主要是指,系统是否具备二次开发的条件,后期修改模块是否便利等问题。

    精度问题:

    计费单位精确到小数点后两位停车取车中间的时间差精确到分钟数
    时间特性要求:

    对时间的统一性,全部采用服务器当前时间作为标准在多个用户同时进行操作的时候,有一定几率发生数据并发的问题。如用户查询到当前是有空闲车位的,但是在到达指定车位前,车位被占领,但是在查询之后的时间内有可能随之发生改变,有人占据了车位,这很类似于我们的数据库重复读问题。所以我们要保证我们的系统具有数据的实时更新和提醒
    性能灵活性:

    该自动化停车场管理系统同用适应于其他Microsoft公司的windows产品此系统是采用B/S架构设计的,可以直接在浏览器上访问,但要求装有符合要求的 浏览器如谷歌搜狐,或是其它的网页浏览器工具。于是在设计出来的系统应该能在不同类型的浏览器上成功访问

    3.2.1 数据流图层级数据流图一般来说分为顶层数据流图、中层还有底层数据流图。忽略顶层流图,我们从0号开始编制系统数据流图如图3-1所示。

    3.2.2 数据字典数据项定义
    系统数据项定义如表3-1所示。



    编号
    名称
    别名
    类型
    长度(字符)




    I1-01
    ID
    管理员编号
    Int
    4


    I1-02
    username
    管理员名称
    nvarchar
    50


    I1-03
    password
    管理员密码
    nvarchar
    50


    I1-04
    Gg_titile
    公告标题
    nvarchar
    50


    I1-05
    Gg_neirong
    公告内容
    nvarchar
    500


    I1-06
    shijian
    时间
    datetime
    8


    I1-07
    username
    用户
    nvarchar
    50


    I1-08
    chepaihao
    车牌号
    nvarchar
    50


    I1-09
    states
    状态
    nvarchar
    50


    I1-10
    shuoming
    说明
    nvarchar
    500


    I1-11
    chewei_no
    车位编号
    nvarchar
    50


    I1-12
    chewei_type
    车位类型
    nvarchar
    50


    I1-13
    chewei_state
    车位状态
    nvarchar
    50


    I1-14
    chewei_didian
    车位地点
    nvarchar
    50


    I1-15
    username
    用户名
    nvarchar
    50


    I1-16
    password
    密码
    datetime
    50


    I1-17
    chepaihao
    车牌号
    nvarchar
    50


    I1-18
    jine
    金额
    nvarchar
    50


    I1-19
    truename
    真是姓名
    nvarchar
    50


    I1-20
    tel
    电话
    nvarchar
    50


    I1-21
    jianjie
    简介
    nvarchar
    50


    I1-22
    quanxian
    权限
    nvarchar
    50



    数据流定义

    数据流编号:D1—02

    数据流名称:用户注册信息数据流来源:用户数据流去向:P1-01数据流组成:I1-15+I1-16+I1-17+I1-18+I1-19+I1-20+I1-21+I1-22
    数据流编号:D1-03

    数据流名称:用户登录信息数据流来源:用户数据流去向:P1-2数据流组成:I1-02+I1-03
    数据流编号:D1-04

    数据流名称:公告信息数据流来源:P6-5数据流去向:F2-4数据流组成:I1-04+I1-05
    数据流编号:D2-05

    数据流名称:车位信息数据流来源:F3-5数据流去向:P6-3数据流组成:I1-11+I1-12+I1-13+I1-14

    3.3 用例图3.3.1 管理员用例图管理员权限主要包括对用户信息进行相应的管理,违规车辆管理,车位信息管理,咨询管理,收费管理等,如图3-2所示。

    3.3.2 用户用例图用户主要操作权限有,可以查看咨询信息,查看车位信息,了解收费情况等操作。如图3-3所示。

    本章主要简单介绍了停车场管理系统功能模块分析,深入了系统的功能分析,制定出系统的数据流图。本需求分析对停车场管理系统的设计和实现做了阐述和分析。用UML建模给了该系统更详尽的阐述。模型、视图和控制器,承担了MVC中的不同任务,将业务逻辑,视图,和数据处理相互分开便于系统的功能扩展和维护。系统使用时,我们需要有相应的浏览器和服务器配置,启动服务器后访问相应的路径地址进行系统的登录。系统内实现了出入停车场的管理记录和收费标准定制,完善了用户的注册查询和使用功能,车辆信息也可以成功的录入,由于个人的能力和精力有限,时间并不充足有很多的系统性能和功能需要提高和完善。
    第4章 系统总体设计4.1 系统模块设计停车管理信息系统主要功能如下简述:

    权限设置模块:记录用户基本信息,系统权限分配等
    停车场资讯模块:这个模块主要提示一些停车场系统公告信息
    车位管理模块:记录其当前车位剩余状态,及使用情况
    停车收费模块:主要是记录顾客本次停车的收费信息,支付方式等
    违规车辆模块:主要是记录一些违规车辆信息,对车主处罚
    统计查询模块:主要是可查询停车场所有的消费记录,车位记录等信息


    4.2 数据库分析步骤
    需求分析阶段:需求收集和分析,得到数据字典和数据流图
    概念结构设计阶段:抽象用户需求形成相应的实体,并完成E-R图的设计
    逻辑结构设计阶段:将概念模型中的相应实体转化为数据
    数据库物理设计阶段: [16]将逻辑结构中的数据模型存入相应的物理组织中
    数据库实施阶段:建立相应的数据库并调试,将数据录入数据库,并且运行程序示范
    数据库运行和维护阶段:对数据库进行优化和内容的维护

    4.3 数据库设计4.3.1 E-R图设计
    4.3.2 表结构设计根据实际管理需求,经过分析将停车管理系统的数据库设计是系统开发的关键环节,这个环节会影响到系统整体的运行所以非常重要。
    根据E-R模型,停车管理信息系统系统建立了多个表数据,具体细节如下介绍:
    用户信息表(reg)



    列名
    数据类型
    长度
    允许空
    是否主键
    说明




    id
    int
    4


    编号


    username
    nvarchar
    50


    账号


    password
    nvarchar
    50


    密码


    chepaihao
    nvarchar
    50


    车牌号


    jine
    nvarchar
    50


    金额


    truename
    nvarchar
    50


    姓名


    tel
    nvarchar
    50


    电话


    jianjie
    nvarchar
    500


    简介


    quanxian
    nvarchar
    50


    权限


    shijian
    datetime
    8


    时间



    公告信息表(gg)



    列名
    数据类型
    长度
    允许空
    是否主键
    说明




    id
    Int
    4


    编号


    Gg_titile
    nvarchar
    50


    公告标题


    Gg_neirong
    nvarchar
    500


    公告内容


    shijian
    datetime
    8


    发布时间



    违规信息表(weigui)



    列名
    数据类型
    长度
    允许空
    是否主键
    说明




    id
    Int
    4


    编号


    username
    nvarchar
    50


    账户


    chepaihao
    nvarchar
    50


    车牌号


    states
    nvarchar
    50


    状态


    shuoming
    nvarchar
    500


    说明



    车位信息表(chewei)



    列名
    数据类型
    长度
    允许空
    是否主键
    说明




    id
    Int
    4


    编号


    chewei_no
    nvarchar
    50


    车位编号


    chewei_type
    nvarchar
    50


    车位类型


    chewei_state
    nvarchar
    50


    车位状态


    chewei_didian
    nvarchar
    50


    车位地点



    管理员信息表(login)



    列名
    数据类型
    长度
    允许空
    是否主键
    说明




    Id
    int
    4


    编号


    username
    nvarchar
    50


    用户名


    password
    nvarchar
    50


    密码



    4.4 数据库链接代码部分public class DB { private Connection con; private String classname="com.microsoft.sqlserver.jdbc.SQLServerDriver"; private String url="jdbc:sqlserver://localhost:1433;DatabaseName=tingchechang"; public Connection getCon(){ try{ Class.forName(classname); con=DriverManager.getConnection(url,"sa","123"); } catch(Exception e){ e.printStackTrace(System.err); con=null; } return con; } public void closed(){ try{ if(con!=null) con.close(); } catch(Exception e){ e.printStackTrace(); } }}
    4.5 本章小结系统设计阶段是对系统功能模块的细化流程,对每个模块进行详细的说明,制作出对应的数据库,建立表之间的依存关系。
    第5章 系统详细设计5.1 系统运行平台设置系统开发离不开开发的相关设施,对于软硬件的介绍具体如下:其中硬件如下介绍:
    硬件配置环境:计算机一台,网络服务器,如表5-1所示。



    硬件
    配置




    电脑处理器
    AMD FX-8300


    电脑内存
    2G以上


    电脑硬盘空间
    300G以上



    软件配置环境:系统软件开发则采用eclipse开发工具,数据库SQLSERVER2005,tomcat6.0服务器,在win7上运行均可,浏览器要高于IE7.0。
    5.2 系统的实现5.2.1 登录模块的实现登陆界面是系统比较安全的模块之一,它的安全性比较重要,它是确保用户安全进入系统的通道,因此,设计起来需要额外的重视;本次系统对登陆模块的设计进行了严谨的规划;首先,确立登陆页面设计风格,选择优质图片,切图加入到登陆页面的表格当中,调整合理位置,加入相应的文本框及按钮控件,对其进行标识username,password;其次,当点击登陆button时候前台会将表单内的相应数据提交大后台,后台处理模块会对数据与相应表中用户名和密码字段数据比较,如果存在符合数据,即可认为是可信用户,允许进入系统;如果没有吻合数据,提示登陆失败,重新登陆;最后,考虑系统的安全性,在制作过程中,要对账户和密码的输入进行条件限制,避免一些不正规字符进入系统,造成系统存在安全隐患,因此这一点要额外重视,下图是登录主界面如图5-1所示。

    登录流程图,如图5-2所示。

    5.2.2 用户主界面的实现下面截图是用户的主界面设计,主要的色调选用了相对来说较为淡雅的墨绿色调,使使用人员不至于因为长时间的观看而产生过度的视觉疲劳。整体分为三个部分,上面为标题栏,左边为功能模块相应的操作信息,右边为功能展示区域,之所以这样设计是为了方便之后的功能扩展,提高软件系统的可扩展性。整体的界面设计风格偏向于简洁,有利于客户的阅读。功能栏内每一个小条目都有相应的点击事件返回不同的图形界面从而实现了一个界面展示不同表单的视觉效果。同时提高了页面的复用效率。我们可以看到主要的功能有:查看讯息、违规车辆模块,查看车位信息模块,停车支付信息模块,不同的模块功能又有不同的细分:如图5-3所示。
    用户主界面

    会员用户支付图

    普通用户支付图

    5.2.3 管理员主界面实现下面截图是管理员的主界面设计,相对于用户的主界面来说,管理员主要注重查询的操作,主要的色调依旧选用了相对来说较为淡雅的墨绿色调,使使用人员不至于因为长时间的观看而产生过度的视觉疲劳。整体分为三个部分,上面为标题栏,左边为功能模块相应的操作信息,右边为功能展示区域,之所以这样设计是为了方便之后的功能扩展,提高软件系统的可扩展性。整体的界面设计风格偏向于简洁,有利于客户的阅读。功能栏内每一个小条目都有相应的点击事件返回不同的图形界面从而实现了一个界面展示不同表单的视觉效果。同时提高了页面的复用效率。我们可以看到主要的功能有:查看讯息、违规车辆模块,查看车位信息模块,停车支付信息模块,不过因为权限问题各个模块中的操作与用户模块有区别;下图是主界面设计截图。如图5-6所示。
    管理员主界面的用户信息管理图

    管理员主界面的用户权限管理图

    5.2.4 密码修改模块的实现密码修改是系统中非常重要的模块之一,通常情况下,用户的账户信息非常重要,一旦被恶意窃取将会造成很大的损失,因此,每一个系统开发过程中,都会开发密码修改这个模块,目的就是更好去管理用户的基本信息,本系统的开发也设立的密码修改功能模块,处于项目较小,因此,密码修改相对简单些,具体实现过程如下:先是构建密码修改画面,包括了账户,密码选项,插入文本框,按钮等,再则就是绑定账户信息,通过登录时记录的账户信息,将其赋值到账户文本框上,并设置为不可更改,最后,进行代码处理工作,用户操作只需要输入新密码点击修改按钮即可完成操作,密码修改如图5-8所示。

    5.2.5 公告功能模块的实现下图是公告添加模块,内容有公告公告内容,公告名称,点击按钮就可以完成公告的添加操作,公告添加管理如图5-9所示。

    下图是公告模块的相关信息展示,主要包括了不同的公告的标题展示和部分的内容展示,管理员可以通过增删操作把账户的信息更改掉,这里还采用了采用分页技术管理数据自动增长,如图5-10所示。
    管理员公告查询管理模块

    用户公告查询管理模块

    5.2.6 车位功能模块的实现下面截图是本系统的车位添加管理界面设计截图,主要是由系统管理员进行发布管理,其模块包括的选项包括了车位编号,车位类型,状态,位置等信息;其中制作的流程是先建立车位添加界面,插入表格,设定行数与列数,拖入相应的文本框与按钮,之后对处理页面的制作,这里要注意的是,对信息要进行过滤操作,避免进入数据库出现乱码,扰乱数据的准确性,车位添加一览管理如图5-12所示。
    车位管理界面

    车位管理的车位信息统计

    停车收费管理图

    通过检索信息图

    5.2.7 违规管理模块的实现下面截图是本系统的违规管理界面设计截图,是有管理员来进行违规管理信息的,从截图上能够看到,包括用户账户,车牌号码,车牌状态,违规说明等,这个画面设定后,需要慎重决定,如图5-16所示。
    违规车牌管理页面

    恢复车牌管理页面

    恢复车牌管理查询页面

    5.2.8 注册模块的实现注册界面是用户成为系统会员的通道,因此,系统注册界面也需要额外的注意;本次注册界面设计主要注重的是设计及安全性能;初步设定的字段有账户,密码,性别,电话,邮箱,备注等信息;系统设计主要采用的是背景图片当作底色,将table加入界面当中,设定相应的位置,拖入文本框,并标注标识,加入注册按钮,接着制定注册界面的处理表单,编写相应的代码;注册界面在设计过程中要注意安全问题,比如说账户信息审核,是否唯一值,对非法字符要做出过滤或者屏蔽,在防止恶意注册方面也要做出防备等;用户在注册过程中要准确填写个人信息,切勿虚假填写,需要管理员进行审核后才可以使用。以下是注册界面的设计截图,如图5-19所示。

    5.3 本章小结这章节主要是介绍了系统的各个模块实现过程,主要采用的,图,表,文字等实现模式,对系统模块的实现原理,实现方法都详细介绍。
    第6章 系统测试系统测试环节是系统开发后期最重要的环节,主要的任务就是检测程序员开发的系统中是否存在未曾发现的瑕疵,及时发现并对其错误进行及时的处理,然后可以通过修改来弥补系统的不足之处,提高系统的整体性能。
    6.1 测试目的系统测试的根本目的在于,开发出来的系统在正式投入使用之前,尽可能的及时发现软件开发时可能存在的疏漏,并进行处理;程序员在开发过程中,会遇到着很多的错综复杂问题,所以,系统在开发的每个环节都有可能存在着错误,程序员通常在开发过程中会对自己开发的程序进行自测,也会及时解决掉一部分问题,但是不能全部发现,所以,系统测试环节必不可少,需要认真的对待。
    6.2 测试方法程序的测试方法有很多,我主要采用了较为主流也是比较便捷的黑盒和白盒测试。这两种方法可以很好的帮助我们检验系统的功能完整性和代码的完整性准确性。
    白盒测试:白盒测试并不关注系统的界面性问题,而是通过对于代码的调试来发现逻辑中的错误,如条件判断的不足,由于对象未回收或者多次创建造成的内存的溢出,算法的复杂度过高造成程序运行缓慢,死锁问题的产生,等等,白盒测试可以发现这些问题然后加以修正。

    对程序模块的所有独立的执行路径最少测试一遍
    判断程序中的条件循环,用不同的真假条件来一一测试保证代码在不同情况下的健壮性
    再循环的边界和界限内执行循环体
    测试内部数据的有效性,等等
    黑盒测试:我们也把它称为功能测试或者数据驱动测试也。严格意义上老说它是一种基于规格说明的测试方法,我们通过检测当前系统的某一部分功能或者整体的功能来检测。 而不是选择去查看或者校验源码,黑盒测试并不关注系统的内部逻辑有没有错误,而是使用大量的数据覆盖多的可能性,来测试是否能输出同样正确逻辑结果。然后我们就可以了解软件是怎么样正确运行的。
    是否有不正确的或遗漏功能?
    在接口上,输入输出能否正确的接受?能否输出正确的结果?
    数据文件等外部信息能否正确的访问?
    性能上能否满足要求?
    是否有初始化或终止性错误?

    单元测试是在编程过程当中我们经常食用的的一种代码测试方式,我们通常假定一种情况,编写一段相应的代码来满足某段程序的运行条件,从而来检测相应的程序持否能够正确运行,这种方法便捷简易,而且效果直观,但是由于缺乏逻辑性,很难覆盖所有的可能性,有时会出现疏漏。
    集成测试或者叫做组装测试,我们可以把它理解为将单元测试合并在了一起进行规模测试。在测试环节中,进行完相应的单元测试,我们通常要把相应的关联单元模块合并在一起,进行统一的功能测试,来检查是否符合预期功能的完整性。这需要对不同模块之间的接口有着相应的了解,由小及大将组件慢慢结合在一起最终形成一个完整的系统功能模块。在最后所有的功能模块会结合在一起完成我们的系统测试。检查功能的完整性。
    系统测试是将将我们之前测试的不同模块结合在一起,检验是否达到系统设计初期的功能效果,是我们程序人员用来检验成果的重要环节。
    验收测试是我们在软件提交给客户和正式运行前的最后一个测试环节。我们要保证软件可以成功的在相应的环境下顺利运行,并且达到预期的功能效果完成目标。验收测试更多的是面向用户表明我们的系统确实能够满足用户的需求。经过我们之前的单元、集成测试、系统测试我们项目中的所有模块都已经正确的完整的实现了功能,也验证了系统整体的运行情况,此时要做的就是最后一步的用户验收工作,检查是否满足顾客的期待。
    6.3 测试内容及需求6.3.1 界面测试界面是一个软件系统最直观的反应,顾客们往往并不关注系统内部的逻辑结构,反而会从界面出发形成对于软件系统的直观印象。所以针对界面我们有许多需要处理的环节,包括编码格式的问题,页面在不同浏览器中的自适应问题,图片表单的排版是否正确等等,下面我们来简单介绍下常见的界面问题:

    错别字问题是我们最容易忽略也是最容易更改的问题i,这种问题并不涉及逻辑结构的相关知识,往往是因问程序员的一时粗心造成的只需要我们耐心的排查,就可以解决
    页面中有的时候会出现一段类似于乱码或者地址符类似的语句 [5],这往往是因为程序中我们没能做好相应的处理,而把类似于对象地址的东西直接输出了出来
    在不同的界面中或者同一个界面内,有时会因为分辨的不仔细造成字体格式的不统一,虽然对于程序的正确运行没有影响,但是无疑影响了界面的没关系。比如字体粗细和阴影的不统一,我们应该通过界面审核将这些错误改正过来,使用户有整洁的映像
    对于不同功能的模块但是命名类似时,往往会出现相互之间搞混的情况,比如用户的管理界面和管理员的管理界面,很可能由于一时的粗心大意造成代码的混乱,从而致使界面展示出问题,我们应该仔细的审核类似的模块,是否完整的展示了当前模块应有的功能

    6.3.2 功能测试功能测试的主要目的就是检查系统功能的完整性,各个模块能否正常的运行并且达到预期的功能目标,对于当前系统我们应当注意的功能有以下几个:

    查询功能,我们要测试不同的条件下查询功能受否都能够正常查询,并且得到相同的结果,另外还要注意多条件查询的情况是否能够正常得到符合各个要求的数据,在模糊搜索条件上应该能够完成指定条件搜索而不是将全部结果展示出来
    添加功能,再添加的时候我们要对指定字段与数据库中的类型进行比较,如果不同则不能添加入库,如果超出了指定字段的规定长度也要报错,这里最好能够用相应的提示来提醒用户主意,避免错误的添加操作
    删除功能,我们最好能在用户执行删除操作的时候进行二次提醒,一对话框的形式展示出来,询问用户是否确认执行删除操作,避免由于操作失误而造成的数据丢失,另外再删除时,我们最好能够按照制指定的条件去进行相应操作,否则可能产生因为数据项相近而删除错误的现象,另外在测试的时候为了保证数据的完整性,我们可以通过增加数据的字段来避免数据的删除,通过改变指定字段的值,来判断是否显示数据,可以达到我们既有删除效果又不会使数据丢失的目的
    修改功能,是为了校验修改后的数据是否真正的存入了数据库,而不是单纯的界面上发生改变,这需要我们去清除数据的缓存,同时最好能够深入到数据存储区域去观察这种数据的变化,以确保操作执行成功

    6.3.3 需求测试需求测试的主要目的就是再一次明确我们系统的需求,并且去检验这些需求在目前的设计中有没有很好的被满足,这要求我们除了当前系统的代码逻辑有足够的了解,还要结合实际的情况角度出发。需求的分析是系统设计的基石,只有我们明确了这一点才能够完成项目。在需求分析时项目中的数据操作和存储结构都应该完整的设计好,这样我们才能明确数据中哪些字段是必要的,哪些字段是可以忽略的,然后我们就不会在数据录入时产生字段不符合或者缺少等问题。我们还需要分析相应的系统内不同的角色,和他们所拥有的权限问题,是否都有了合理的分配。
    6.4 测试用例和结果系统运行时均能执行其相应功能,可以完成设计任务要求,确保数据都可以正确显示,读取。
    登录测试用例



    编号
    测试数据
    预期结果
    测试结果




    1
    账号:admin 密码:admin 权限:管理员
    进入管理员界面
    与预期结果一致


    2
    账号:admin 密码:admin 权限:用户
    重新输入
    与预期结果一致


    3
    账号:admin 密码:ssx 权限:管理员
    重新输入
    与预期结果一致


    4
    账号:ssx 密码:ssx 权限:管理员
    重新输入
    与预期结果一致


    5
    账号:ssx 密码:ssx 权限:用户
    进入用户界面
    与预期结果一致


    6
    账号:ssx 密码:admin 权限:用户
    重新输入
    与预期结果一致



    注册添加测试用例



    编号
    测试数据
    预期结果
    测试结果




    1
    用户账号:ssx1
    请输入密码
    与预期结果一致


    2
    用户账号:ssx1 用户密码:123
    请输入车牌号
    与预期结果一致


    3
    用户账号:ssx1 用户密码:123 车牌号码:3434
    请输入姓名
    与预期结果一致


    4
    用户账号:ssx1 用户密码:123 车牌号码:3434 真实姓名:孙善笑
    请输入电话
    与预期结果一致


    5
    用户账号:ssx1 用户密码:123 车牌号码:3434 真实姓名:孙善笑 联系方式:123
    注册成功,跳转到登录界面
    与预期结果一致



    公告添加测试用例



    编号
    测试数据
    预期结果
    测试结果




    1
    公告名称:停车场开业啦 公告内容:优惠中
    添加成功
    与预期结果一致


    2
    公告名称:停车场开业啦
    请输入公告内容
    与预期结果一致


    3
    公告内容:优惠中
    请输入公告名称
    与预期结果一致



    车位添加测试用例



    编号
    测试数据
    预期结果
    测试结果




    1
    车位编号:201253
    添加成功
    与预期结果一致


    2

    请输入车位编号
    与预期结果一致



    个人信息修改测试用例



    编号
    测试数据
    预期结果
    测试结果




    1
    密码:123电话:456简介:看电视
    修改成功
    与预期结果一致


    2

    修改成功
    与预期结果一致


    3
    密码:123电话:456
    修改成功
    与预期结果一致


    4
    简介:看电视
    修改成功
    与预期结果一致



    违规测试用例



    编号
    测试数据
    预期结果
    测试结果




    1
    用户账户:小红 车牌号码:222违规说明:闯红灯
    修改成功
    与预期结果一致


    2
    用户账户:小红
    请输入车牌号码
    与预期结果一致



    6.5 本章小结在这一个章节我们介绍了不同的测试方法,并且通过这些测试方法检测了系统的功能模块和整体功能的实现是否满足我们的预期。详细分析了从单元测试到整体测试的步骤,展示了本系统的健壮性和完整的功能特性。
    本次测试中有几个问题浮现了出来,如界面的字体粗细不统一,在退出时的界面跳转指向错误,不同权限的访问功能略有混乱。但是经过努力,一一解决。到目前为止,系统测试正常!如以后出现问题,则进一步改进,完善。
    结论在几个月的努力下我终于顺利的完成了我的课题,这次课题从实际需求的角度出发,结合可行性的分析设计出了一个简易的停车场管理系统。在设计的过程中严格的遵照了软件工程的设计步骤,采取了自己较为熟悉的eclipse和jsp以及servelt技术,使用了功能强大并且性能稳定的tomcat服务器,结合了强大的数据库存储,再加上对程序的相关设计方案,代码的编写工作,完成了系统的开发。
    虽然已经初步实现了预期的基本功能,但是由于受到个人经历和时间的限制仍有许多构思未能实现,并且在一些功能设计上存在不少的疏漏:比如系统的权限分配问题不够严格,角色过于单一,另外对于一些系统安全问题,如输入输出的过滤也并不严格。尽管如在开发的过程中还是有许多的困难需要自己动手解决。比如sqlserver数据库的链接,还有在前段页面出现的乱码问题,由于没有采用流行的框架结构,很多部分代码的复用率过低,造成不少代码的冗余增加了自己的工作量。这些其实都是由于自己缺乏充足的开发经验导致的,不过正是在这样的编写过程中,我才有了长久的进步,无论是代码的编写能力,还是对与系统的整体设计和检测能力都有了很大的提高。
    在最初的设想时其实是有很多浪漫主义情怀,希望自己能够吧界面设计的更加的漂亮,更加的美观。而后在前辈的帮助下认识到其实绝大部分的顾客注重的是实用性,简洁很多时候才是我们程序员应有的追求。同时优秀的界面设计需要相应的代码经验和UI经验。哪怕只是一个简单的设计也需要大量的知识来支持。以我目前的能力做一个简洁的系统已经需要很大的努力了。
    这次代码的编写并没有借助相应的主流框架,为的就是希望锻炼自己对于代码的敏感和熟练程度,去整体的设计完成MVC下的web开发。虽然结果并不尽如人意,但是无疑很好的提高了我对于系统整体架构的把持和理解能力。但是希望在之后的开发中能够接触更多的系统和框架知识,熟悉不同的应用软件,来应对公司和社会的不同需求。
    参考文献[1] 马文刚 谢乐健.JSP实用编程实例集锦[M]. 北京:电子工业出版社,2005.
    [2] 罗鸿,王忠民编著.ERP原理•设计•实施[M].北京:电子工业出版社,2003.1.
    [3] 孙卫琴、李洪成.Tomcat与Java Web开发技术详解[M].北京:电子工业出版社,2014
    [4] 程凯.JSP中文问题及一套整体解决方案[J].许昌学院学报,2013
    [5] 刘长生,谢强,丁秋林.Java应用中的汉字乱码问题分析.计算机技术与发展,2014
    [6] 马朝晖、陈美红.Java语言导学[M].机械工业出版社,2003.1.
    [7] 清宏计算机工作室.JSP编程技巧[M].北京:机械工业出版社,企业 :32-39.
    [8] 郭力平,高雪,雷东升,杨志慧.数据库技术与应用[M].北京:人民邮电出版社,2004.
    [9] 周影 .网络编程语言JSP实例教程[M].北京:电子工业出版社,2003:17-32.
    [10] 陈海山.深入Java Servlet 网络编程[M].北京:清华大学出版社,2002 :55-62.
    [11] Phil Hanna .JSP技术大全[M].北京:机械工业出版社,2002 : 222-223.
    [12] Donny.JSP与网站开发编程实战[M].北京:科学出版社 ,2001:22-53.
    [13] Steven Holzner.Java技术内幕[M].北京:机械工业出版社,2002 : 22-25.
    [14] Joshua Bloch. Effective JSP: programming language guide [M]. China Machine Press, 2004
    [15] Y.Daniel Liang. Introduction to Java programming: core version[M].China Machine Press,2006
    [16] 卢成均.多层模式下通用数据存取层的设计与实现[J].计算机工程与设计,2007,28(13):365-369.
    [17] 孙卫琴.精通Struts:基于MVC的JavaWeb设计与开发.电子工业出版社,2004.8.
    0 评论 1 下载 2020-08-09 11:04:35 下载需要14点积分
  • 基于Java的学生成绩管理系统

    摘 要进入大学的第二次课程设计中,我们小组选择了学生成绩管理系统作为我们课程设计的课题,这个系统的主要目的在于利用面向对象程序设计来实现学生的语文、数学、英语成绩的管理。主要分为三个模块分别为学生、课程、教师、测试,我们也为这三个模块写了相之对应的三个类,依次为学生类、课程类、教师类、测试类。以组长为中心,实现此程序的框架及其部分功能,然后再由其他两个组员每个人分别负责基本的基础功能及附加功能,由组长进行汇总,再做最后的修改、调整、编译、运行。在汇总的过程中我们发现我们的程序漏洞百出,出现了很多问题,就开始一起进行进一步的修改与完善并最终完成了此程序。从一开始毫无头绪一起慢慢琢磨、慢慢摸索,我们学到了很多,对学生成绩管理系统也越来越熟悉。
    在设计中,我们通过分工完成每一个模块,并将它们整合起来,完成了这次设计。在设计中我们利用了Eclipse这个平台来修改及实现我们的程序。充分利用了java的面向对象的特点,让我们的程序架构更清晰、系统更加简洁。
    关键词:学生;课程;教师;java;Eclipse
    一、开发背景随着信息技术的高速发展,人们的日常生活也逐渐离不开信息技术的支持。一些大型的企业或者机构组织更需要借助信息技术的力量来管理一些繁重的事务,学校就是其中之一。所以为了方便学校教师管理众多学生的成绩以便于更好的进行下一步的教学计划的设计,我们便开发了这个学生成绩管理系统
    二、需求分析一个学生成绩管理程序,有着两个主要的实体(学生,课程)和实现对各科成绩的添加,删除,修改,查找,排序,计算平均分,显示最高分与最低分及显示全部信息的功能。学生—班级、姓名、学号;课程—各科课程、各科成绩。
    三、模块说明3.1 添加模块
    功能描述:此模块的主要功能是实现学生信息及其成绩的添加
    输入:学生姓名,学号,各科成绩
    输出:添加成功

    3.2 删除模块
    功能描述:此模块的主要功能是实现学生信息的删除
    输入:要删除的学生姓名或学号
    输出:删除成功 或 该学生不存在

    3.3 查找模块
    功能描述:此模块的主要功能是实现学生信息的查找
    输入:要查找的学生姓名或学号
    输出:该学生的信息 或 该名学生不存在

    3.4 修改模块
    功能描述:此模块的主要功能是实现学生信息的修改
    输入:要修改的学生姓名或学号以及修改后的信息
    **输出:该学生不存在 或 修改成功

    3.5 排序模块
    功能描述:此模块的主要功能是实现学生成绩的升降排序
    输入:要排序的课程序号
    输出:排序成功 或 请输入正确的序号

    3.6 最高分与最低分模块
    功能描述:此模块的主要功能是实现学生成绩的最高分或最低分的输出
    输入:要查找最高分或最低分科目的编号
    输出:最高分 或 最低分 或 请输入正确的序号

    3.7 平均分模块
    功能概述:此模块的主要功能是实现学生成绩的平均分计算
    输入:要查找平均分科目的编号
    输出:该科目成绩的平均分 或 请输入正确的编号

    3.8 显示全部信息模块
    功能概述:此模块的主要功能是显示学生的全部信息及其各科平均成绩
    输入:初始界面中该功能的编号
    输出:学生的全部信息及各科平均成绩

    四、详细设计4.1 Student类
    类名:Student
    继承父类:无
    实现接口:无
    概述:定义学生信息
    属性及说明:
    String studentid; //学生学号String name; //学生姓名String grade; //学生班级Course course[]=new Course[3]; //课程数组String cour[]=new String[]{"语文","数学","英语"}; //课程名数组
    方法及说明:
    public Student(String studentid,String name,String grade) //Student构造方法public void CourScore(int i,double score) //成绩public String getname() //输出namepublic String getgrade() //输出gradepublic String getnum() //输出studentidpublic void setgrade(String grade) //获得gradepublic void setnum(String num) //获得studentid

    4.2 Course类
    类名:Course
    继承父类:无
    实现接口:无
    概述:定义课程信息及成绩
    属性及说明:
    private String subject; //学生课程private double score; //学生成绩
    方法及说明:
    public Course(String subject,double score) //Course构造方法public double getscore() //输出scorepublic String getsubject() //输出 subjectpublic void setscore(double score) //获得score

    4.3 Teacher 类
    类名:Teacher
    继承父类:无
    实现接口:无
    概述:实现此管理程序的主要功能
    属性及说明:
    static Student stu[]=new Student[50] ; //定义学生数组String information[]=new String[]{"班级","姓名","学号"};//定义信息数组
    方法及说明:
    public void Initialize() //初始化三个成员信息public int Add() //增加功能public int Search() //查找功能public int Delete() //删除功能public int Editor() //修改功能public int Sort() //排序功能public int Max() //最高分功能public int Min() //最低分功能public int Average() //平均分功能public int Show() //显示全部信息功能

    4.4 Test 类
    类名:Test
    继承父类:无
    实现接口:无
    概述:实现Teacher类中的功能调用以及界面的运行
    属性及说明:无
    方法及说明:
    public static void main(String[] ages)

    五、系统实现5.1 主界面
    输入对应的编码,进入编码对应的模块。
    5.2 添加模块
    选择添加编号,输入相应的学生信息
    5.3 删除模块
    选择删除编号,输入学生姓名或者学号,即可删除此学生信息
    5.4 查找模块
    选择查找编号,输入学生姓名,即可显示该学生信息
    5.5 修改模块
    选择修改编号,输入学生姓名,即可修改该名学生的各项信息
    5.6 排序模块
    选择排序编号,再选择相应功能编号,即可完成排序。
    5.7 最高分与最低分模块

    选择最高分与最低分编号,再选择课程编号,即可显示该项课程最高分与最低分
    5.8 平均分模块
    选择平均分编号,再选择课程编号,即可完成该课程平均分显示
    5.9 显示全部信息模块
    选择显示全部信息编号,即可显示全部信息。
    总 结通过这次课程设计,让我更加深刻了解课本知识,和以往对知识的疏忽得以补充,在设计过程中遇到一些比较模糊的概念,比如对象数组的定义,使用,及其初始化问题,但是这些问题经过这次设计,都一一得以解决,我相信这次设计中还有很多我要搞清楚的问题,但是这次的课程设计给我相当的基础知识,为我以后学习打下了严实的基础。让我对JAVA有深一步的了解,同时也了解到自己的不够,不过我相信我以后会更加努力学习专业知识。
    参考文献[1] 李书卿.浅析JAVA语言的开发平台及J2EE编程技术[J].数码世界, 2017(8):21-21.
    [2] 周国军,吴庆军.面向对象程序设计课程的教学改革[J].玉林师范学院学报, 2016, 37(5):147-152.
    [3] 佚名.Java程序设计与实践[M].2016.
    [4] sJava编译器的设计与实现[D].电子科技大学, 2016.
    [5] 杨杰,杨莉萍.关于JAVA语言在软件开发下的应用[J].信息与电脑(理论版), 2015(16):32-33.
    [6] 李茂民.《JAVA语言程序设计》课程教学改革实践探讨[J].软件工程师, 2015(5).
    [7] 刘灵敏,谢倩,胡婧, et al.“Java语言程序设计”课程教学改革与实践[J].亚太教育, 2015(12):90-90.
    [8] 宋海洋.基于JAVA的汽车销售订单管理系统[D].
    [9] 宋俊玲.基于jsp+javabean技术的图书管理系统[J].电子技术与软件工程, 2014(16):216-216.
    [10] 张泽,雷光波.基于Java Web的创新创业管理系统设计与实现[J]软件导刊, 2017, 16(2):113-115.
    0 评论 1 下载 2020-08-09 11:03:57 下载需要8点积分
  • 基于Java的考勤管理系统

    摘 要该考勤信息管理系统用于实现学校对在校学生的考勤信息的管理,是典型的管理信息系统。学生考勤信息的手工登记查询,是一项非常繁重而枯燥的劳动。在计算机技术飞速发展的今天,应用数据库技术实现学生考勤信息统计的管理是行之有效的。
    本报告系统地介绍了一个基于java的学生考勤信息管理系统,论述了一个基于java的学生/老师考勤信息管理系统的设计原理、设计思想及具体的实现过程,对部分架构及设计思想和设计过程作了详细阐述。系统具有师生个人信息查询、请假、随堂点到等功能,信息管理模块、考勤管理模块和考勤系统模块。
    本系统开发主要包括后台数据的简历以及前端应用程序代码的开发两部分。其一要求建立起的数据库具有完整性和一致性,并具有一定的数据安全性;其二要求程序界面友好、功能完备,通俗易懂。本次课程设计着重讨论了用java开发考勤管理系统时的数据库访问技术和面对对象程序开发技术,并给出了部分实现代码。
    关键词:Java;面对对象;学生考勤管理系统
    一、开发背景随着社会的发展,计算机科学日渐成熟,计算机越来越深入到我们的日常生活中,成为我们不可或缺的辅助工具。其强大的功能已为人们深刻认识,它已进入人类社会的各个领域,并发挥着越来越重要的作用,各行各业的人们无需经过特别的训练就能够使用计算机完成许许多多复杂的工作。
    随着我国人口的增长,高校的生源也日益增加。学校考勤信息的管理作为高校管理的一项日常工作,也随着学生人数的管理而变得繁琐起来。与此同时,计算机技术的发展也是与时俱进一日千里,于是,使用计算机代替人工记录管理学生的考勤信息自然而然的进入了人们的视野里。
    二、需求分析我们需要设计一个系统可以实现学生基本信息的查看和管理等功能。在主菜单界面中有输入学生信息、根据ID好查询学生信息、显示数据库中的学生信息、学生请假经过老师审批、学生修改密码、老师查看学生考勤信息等功能,通过不同的选择进入到不同的功能,根据提示进行输入操作。
    三、模块说明根据分析整个系统主要划分为4个功能模块,分别执行要求中的功能。数据管理中实现对学生的基本信息、学生考缺课的查询,以及具体缺课内容,是迟到、早退、请假、旷课。查询管理通过根据学生学号等信息,来达到我们需求的目的。
    3.1 用户登录模块
    功能描述:此模块的主要功能是实现用户登录。系统的用户必须在登录系统后才能进行对应的操作。用户在登录页面正确输入账号、密码时就可以成功登录。当密码错误时,用户根据系统的提示进行密码的修改重新进行登录
    输入:用户学号、密码、新密码、旧密码
    输出:

    欢迎使用考勤信息系统请输入旧密码请输入新密码请再次输入新密码修改成功两次密码不一致,请重新输入密码输入错误,请重输

    3.2 用户查询模块
    功能描述:此模块的主要功能是实现用户查询信息。学生在登录系统后查询自己的考勤信息,以此得到自己的出勤情况;老师通过该模块
    输入:学号、专业班级、个人信息等
    输出:用户考勤信息或学生个人考勤信息

    3.3 请假模块
    功能描述:请假分为学生请假申请、老师请假审批、学生请假状态查询;学生提交的请假申请需要老师的审批,只有批准之后学生请假信息方可录入学生状态查询。学生通过此功能模块进行在线请假及查看请假记录信息;老师在线审批学生请假及查看请假记录信息
    输入:学生姓名、请假原因、请假时间、老师批准选项等
    输出:

    请假条:某某同学因某某原因所以请假,请假时间为:xxx,希望老师批准请老师选择:同意(agree) or 不同意(disagree )老师已同意、不同意某某学生的请假选择错误!请老师重新选择决定

    3.4 考勤记录模块
    功能描述:系统具备考勤管理系统、考勤修改系统、后台管理系统这三大主要功能。其中在考勤管理系统中任课老师通过该系统对学生的考勤信息进行录入、修改、统计,在线管理学生出勤信息;学生在线查看自己所有全年的出勤信息。该模块的功能是学生考勤信息统计的实现、查看及管理,涉及学生和老师用户中的所有用户
    输入:老师录入学生需要修改的考勤信息,其中包括学号、信吗、专业班级及考勤情况
    输出:学生个人考勤信息及修改后的学生考勤信息

    四、详细设计本系统是基于数据库的学生考勤信息管理系统,实现了连接数据库,增加、删除、查询、修改学生信息的功能。通过Java语言设计一个学生考勤管理系统,包括学生查询信息、老师管理查看信息以及学生请假老师审批的设计。
    4.1 学生信息(Student)类
    类名:Student
    继承父类:无
    实现接口:无
    概述:学生在线查看自己所有的出勤信息;对密码进行修改等
    属性及说明:
    public String number; //定义一个学号public String major = "computer";// 专业初始化public String class1 = "1804";//班级初始化public String name = "xxx";//姓名初始化private String password;//定义一个密码public String att_s = "暂无考勤信息";//考勤信息初始化
    方法及说明:
    public void set_password(String password);//修改密码public void check_show(String password);//输出学生信息

    4.2 请假(Leave)类
    类名:Leave
    继承父类:无
    实现接口:无
    概述:学生提交的请假申请需要老师的审批,只有批准之后学生请假信息方可录入学生状态查询
    属性及说明:
    String name = "小栋", time ="3,4节课", reason = "感冒发烧,要打点滴";//初始化姓名、时间、原因String chooice = "agree";//初始化请假单的状态
    方法及说明:
    public void showStudent();//学生填写请假单public void showTeacher();//老师对请假单的操作public void LeaveStates();//学生查看请假单的状态

    4.3 老师信息(Teacher)类
    类名:Teacher
    继承父类:Student
    实现接口:无
    概述:老师对学生的考勤信息进行录入、修改、统计,在线管理学生出勤信息
    属性及说明:
    private String number1; //账号private String password1;// 密码public Teacher();//默认的构造函数public Teacher(String number,String name,String major,String class1,String att_s)//带参数的构造函数
    方法及说明:
    public void get_pass(String number,String password);//储存登录密码public void set_pass(String password);//修改密码public void check_in();//考勤录入public int check_set(String num);//考勤修改public void check_s();//考勤统计

    4.4 测试(Main)类
    类名:Main
    继承父类:无
    实现接口:无
    概述:对学生查询信息、老师管理查看信息以及学生请假老师审批的设计在主菜单中的实现
    属性及说明:
    String number;//登录账号(老师的职工号;学生的学号)String password;//登录密码Teacher get = new Teacher();//构建Teacher类的对象(储存老师的账号和密码)Student got = new Student();//构建Student类的对象Leave stu = new Leave();//构建Leave类的对象
    方法及说明:
    get.get_pass(number, password);//使用账号和密码登录get.set_pass("...");//修改密码stu.showTeacher();//老师审批请假条for(int c = 3;;)check[c].check_in();//用循环多次录入学生考勤

    五、系统实现学生考勤管理系统的主要任务是用计算机对学生、出勤状况等信息进行日常的管理。如查询、修改、增加、删除以及存储等,迅速准确地完成各种信息的统计计算和汇总工作,针对系统服务对象的具体要求,设计了学生考勤管理系统。该系统除了能实现信息的录入,删除,插入,更新,打印等基本功能之外,还能够根据用户的需要进行操作。
    该系统实现的流程图如下:

    5.1 主界面
    登录考勤系统界面,通过该界面选择用户身份为老师后登录;输入功能选择,系统自动加入相应操作的界面。

    登录考勤系统界面,通过该界面选择用户身份为老师或学生后登录到各自相应的菜单功能界面;输入功能选择,系统自动加入相应操作的界面。(模块未注明用户为老师用户)
    5.2 修改密码模块

    修改密码时,系统提示输入旧密码,但旧密码错误时,系统自动判断提示:密码输入错误,请重输。修改密码需要进行两次输入新密码才能进行操作,从而使密码修改成功。

    当旧密码输入成功时,系统自动进行下一步操作实现修改密码。
    5.3 请假模块
    老师用户在选择请假批准功能时,系统将学生上传的请假条进行展示,给老师审批;输入agree代表同意,输入disagree带表不同意;系统根据用户输入的信息判断程序下一步的运行状况。


    学生用户通过选择用户身份登录主菜单后选择功能2请假申请,用户根据系统提示写请假条,请假成功。

    功能3请假情况查询为学生通过请假申请录入请假信息后得到的学生请假条。
    5.4 考勤模块
    当老师用户选择功能3考勤录入时,系统提示输入需要输入考勤的学生信息,包括学号、姓名、专业、班级、考勤情况;系统提示用户继续录入按数字1,不录入按任意键返回。

    学生通过功能4考勤情况查询自己的考勤信息;该学生信息暂未由老师录入,所以该学生的考勤信息暂无,考勤情况可由老师用户登录进行录入、修改和删除。

    老师用户选择其相应的功能菜单功能4考勤修改时自动提示用户输入需要修改考勤信息学生的学号,系统后台数据库将该学生的考勤信息进行调用给用户查看,提示用户依次输入要修改考勤学生的学号、姓名、专业班级、考勤情况等信息。 
    老师用户在修改学生考勤信息之后,选择功能5考勤统计查看所有修改、添加、原有的学生考勤信息。
    总 结课程设计顺利完成,题目所要求的功能也都一一实现,可以对学生的缺课信息进行添加、修改、删除以及查询的显示。但这个程序还有些不够完善,例如不能类中很好的进行承接。
    参考文献[1] 张利锋,孙丽.Java语言与面向对象程序设计[M].清华大学出版社,2015.
    [2] 黄平牧 编.面向对象与Java程序设计[M].清华大学出版社,2015.
    [3] 严莉,刘丹.Java面向对象程序设计实验教程[M].华中师范大学出版社,2015.
    [4] 李恩临.基于JAVA的面向对象开发技术[M].中国财富出版社,2016.
    [5] 张永强.计算机软件Java编程特点及其技术分析[J].计算机产品与流通,2019(01):25.
    [6] 魏华.计算机软件开发的JAVA编程语言与实际应用分析[J].数码世界,2018(8).
    [7] 王娟.基于计算机软件开发的JAVA编程语言分析[J].数字通信世界,2017(12).
    [8] 高阳.JAVA编程语言在计算机软件开发中的应用[J].电脑迷,2018,No.94(05):55.
    [9] 邢如意.Java语言中对象的理解与应用[J].软件工程,2017(4).
    [10] 刘妍东[1].Java类的继承[J].科教导刊(电子版),2017:175.
    0 评论 1 下载 2020-08-09 11:03:49 下载需要9点积分
  • 基于Java的学生选课管理系统

    摘 要Java是一种被广泛使用的编程语言,它的主要特点在于它是一种既面向对象又可跨平台的语言。Java语言通过为每个计算机系统提供一个叫做Java虚拟机的环境来实现跨平台。Java不但适用于单机应用程序和基于网络的程序,而且还可以用于创建消费者类设备和附件程序。面向对象是一种直观而且程序结构简单的程序设计方法,他比较符合人类认识现实世界的思维方式。其基本思想是把问题看成是由若干个对象组成,这些对象之间是独立的,但是又可以相互配合、连接和协调,从而共同完成整个程序要实现的任务和功能。面向对象的三大特征:封装、继承和多态。继承可以解决编程中代码冗余的问题,继承的最基本作用就是使代码可重用,增加软件的可扩充性。面向对象的优点:

    与人类的思维习惯一致
    信息隐藏,提高了程序的可维护性和安全性
    提高了程序的可重用性

    Java中只支持单继承,既每个类只能有一个直接父类。一个普通类只能继承一个父类,但能同时实现多个接口,也可以同时继承抽象类和实现接口。
    我做的这个程序是学生选课管理系统,这个程序是由我一个人完成的。由于时间比较短且具体实现不需要用到Java的全部语法和功能,所以我做的这个程序不能体现Java的全部语法和功能。我的这个程序定义了三个类,他们分别是:增添类、修改类、删除类和管理员类。并且把这四个类放到了一个叫学生选课系统的包里面,“包”在Java中有很重要的意义,包的声明必须是Java源文件中的第一条非注释性语句,设计包需要与文件系统结构相对应。包的作用有:

    包允许将类组合成较小的单元(类似文件夹),易于找到和使用相应的类文件
    防止命名冲突,Java中只有在不同的包中的类才能重名
    包允许在更广的范围内保护类、数据和方法

    根据访问规则,包外的代码有可能不能访问该类。另外数组的应用在我的程序中也有很大的体现,数组是Java中的很重要的语法。数组是用来储存一组相同类型数据的数据结构。当数组初始化完毕后,Java为数组在内存中分配了一段连续的空间,其在内存中开辟的空间也随之固定,此时的数组的长度就不能再发生改变。即使数组中没有保持任何数据,数组所占据的空间依然存在。数组的数据类型用于确定分配的每个空间的大小。JDK中提供一个用于操作数组的工具类,既Arrays类,位于Java.util包中。该类提供了一系列的方法来操作数组,如排序、复制、比较、填充等,用户直接调用这些方法即可,不需要自己编码实现,降低了开发难度。在我的这个程序中,我就用到了toString(arry)这个方法,很方便的实现了把数组中保存的课程信息用一个字符串输出,既方便又快捷。另外for循环在我的程序中也有很重要的应用,实现了对数组的遍历输出。
    总之,我们不管干什么都要遵循一定的规则,充分利用资源,在巨人的肩膀上看世界。Java作为一种既面向对象又可跨平台的语言,确实很好用,非常的便捷。
    一、开发背景学生选课在大学是非常常见的一件事情,学生网上选课系统的开发具有十分重要的意义,可以减少大量的人力、物力、财力。为了优化学生选课管理系统,提高学生选课管理系统程序的效率,我在这一背景下开发了这一款学生选课管理系统。
    二、需求分析学生选课管理系统需要实现增添、修改、查询功能,分别由三个功能类来完成,再设计一个管理员类来实现主要功能。
    三、模块说明3.1 增添课程信息模块
    功能描述:此模块的主要功能是实现增添课程信息。系统的用户可增添需要增添的课程名称及相关信息,并将其保存到数组中,增添完毕后会输出所有的课程信息,便于判断增添是否成功,并明确有哪些课程信息,方便用户使用
    输入:需要增添的课程名称及相关信息
    输出:增添后textbooks数组中,增添后的所有的课程名称及相关信息

    3.2 修改课程信息模块
    功能描述:此模块的主要功能是实现修改课程信息。系统的用户可修改需要修改的课程名称及相关信息,并将其保存到数组中,修改完毕后会输出所有的课程信息,便于判断修改是否成功,并明确有哪些课程信息,方便用户使用
    输入:需要修改的课程名称及相关信息
    输出:修改后textbooks数组中,修改后的所有的课程名称及相关信息

    3.3 删除课程信息模块
    功能描述:此模块的主要功能是实现删除课程信息。系统的用户可删除需要删除的课程名称及相关信息,并将其保存到数组中,删除完毕后会输出所有的课程信息,便于判断删除是否成功,并明确有哪些课程信息,方便用户使用
    输入:需要删除的课程名称及相关信息
    输出:删除后textbooks数组中,删除后的所有的课程名称及相关信息

    3.4 管理员模块
    功能描述:此模块的主要功能是实现学生选课管理系统的主要功能,包括保存学生的选课信息。系统的用户可根据输出的课程信息选择要选修的课程,选择需要选修的课程名称及相关信息,并将其保存到数组中,方便用户使用
    输入:需要选修的课程名称及相关信息
    输出:可供选择的课程信息;学生已经输入的选修的课程名称及相关信息

    四、详细设计4.1 增添课程设计类
    类名:增添
    继承父类:无
    实现接口:无
    概述:增添需要增添的课程名称及相关信息
    属性及说明:无
    方法及说明:

    for循环语句:实现数组的遍历输出课程名称及相关信息 if判断:找到暂时没有保存课程信息的null的数组的下标值,用于增添所需课程名称及相关信息

    4.2 修改课程设计类
    类名:修改
    继承父类:无
    实现接口:无
    概述:修改需要修改的课程名称及相关信息
    属性及说明:无
    方法及说明:

    for循环语句:实现数组的遍历输出课程名称及相关信息if判断:找到需要修改的课程名称及相关信息所在的数组的下标值,修改所需修改课程名称及相关信息

    4.3 删除课程设计类
    类名:删除
    继承父类:无
    实现接口:无
    概述:删除需要删除的课程名称及相关信息
    属性及说明:无
    方法及说明:

    for循环语句:实现数组的遍历输出课程名称及相关信息if判断:找到需要删除的课程名称及相关信息所在的数组的下标值,删除所需修改课程名称及相关信息

    4.4 管理员设计类
    类名:管理员
    继承父类:无
    实现接口:无
    概述: 实现学生选课管理系统的主要功能,包括保存学生的选课信息
    属性及说明:无
    方法及说明:

    for循环语句:实现数组的遍历输出课程名称及相关信息使用scanner方法:保存学生所选择的课程名称及相关信息

    五、系统实现设置增添、修改、删除三个功能类,以及一个管理员类共同来实现学生选课管理系统。增添类实现课程数目或者内容的增添,定义了一个add变量来储存所需要增添的课程名称,通过for循环遍历textbooks数组,找到null后,将保存在add变量中的课程名称保存到textbooks数组,从而实现了增添功能。修改类实现课程数目或者内容的修改,定义了一个change变量来储存所需要修改的课程名称,通过for循环遍历textbooks数组,找到保存在change变量中的课程名称在textbooks数组的储存空间并且返回它保持在textbooks数组的下标值,将找到的课程名修改成所需要的课程名,从而实现了修改功能。删除类实现课程数目或者内容的删除,定义了一个delete变量来储存所需要删除的课程名称,通过for循环遍历textbooks数组,找到delete变量来储存所需要删除的课程名称后,将保存在delete变量中的课程名称保持在保存到textbooks数组的下标值返回,然后将其置为null,从而实现了删除功能。管理员类实现学生选课管理系统的主要功能,使用了toString(array)方法来将所有的课程名称以字符串的形式输出,通过所输出的课程信息来确定所需要选择的课程,并且将其保存到content数组,通过for循环遍历students list数组,按照顺序依次保存学生的选课信息,从而基本上实现了学生选课管理系统的功能。
    5.1 主界面
    5.2 增添模块
    5.3 修改模块
    5.4 删除模块
    总 结通过这一次课程设计,我基本上重温了一下这一学期所学的Java程序设计基础的内容。在实践时发现想到以前觉得理解了的知识点并没有完全理解,还存在许多的疑问点或者说完全不懂的知识点。这个学生课程管理系统程序是由我独立完成的,虽然存在很大的不足,但是在整个的课程设计中我还是明白了很多的东西。我个人觉得独自完成课程设计的意义更大,因为对于同一件事情不同的人会有不同的看法,而这些看法本身并没有对错,但是不同的看法会产生不一样的行为,所以我个人觉得我们应该独立的完成课程设计。通过这次课程设计我对Java中一些重要的语法有了更加深刻的认识,我觉得我以后应该多编写一些程序,在这个过程中,我们可以系统的运用所学的Java知识,同时也可以让我们对编程产生兴趣,更好的培养我们的学科思维,增强我们的职业素养。面向对象是一种直观而且程序结构简单的程序设计方法,他比较符合人类认识现实世界的思维方式。其基本思想是把问题看成是由若干个对象组成,这些对象之间是独立的,但是又可以相互配合、连接和协调,从而共同完成整个程序要实现的任务和功能。我们可以更好的认识这个世界。人工智能是研究使计算机来模拟人的某些思维过程和智能行为(如学习、推理、思考、规划等)的学科,主要包括计算机实现智能的原理、制造类似于人脑智能的计算机,使计算机能实现更高层次的应用。人工智能将涉及到计算机科学、心理学、哲学和语言学等学科。可以说几乎是自然科学和社会科学的所有学科,其范围已远远超出了计算机科学的范畴,人工智能与思维科学的关系是实践和理论的关系,人工智能是处于思维科学的技术应用层次,是它的一个应用分支。从思维观点看,人工智能不仅限于逻辑思维,要考虑形象思维、灵感思维才能促进人工智能的突破性的发展,数学常被认为是多种学科的基础科学,数学也进入语言、思维领域,人工智能学科也必须借用数学工具,数学不仅在标准逻辑、模糊数学等范围发挥作用,数学进入人工智能学科,它们将互相促进而更快地发展。知识并不是孤立的,我们应该广泛的学习各个方面的知识。
    参考文献[1] 尹友明. Java语言与Java技术概述[J].中国新技术新产品, 2011(6):99-99.
    [2] 佚名. Java语言编程技术[M]. 1997.
    [3] 邝砾,于美琪,冯文韬,等.基于层次考核的计算机类课程考试改革研究——以Java面向对象程序设计课程为例[J].计算机教育, 2017(1):62-66.
    [4] 杨雪. Java面向对象语言的教学探讨[J].家教世界, 2012(6):52-53.
    [5] H.M.Deitel. Java语言程序设计大全[M]// Java 语言程序设计大全. 1997.
    [6] Y.DanielLiang. Java语言程序设计.基础篇[M]. 2008.
    [7] 杨晓燕.基于应用的Java面向对象程序设计课程研究与教材建设[J].计算机教育, 2012(3):42-45.
    [8] Dennis Kafura. Java面向对象程序设计教程[M]//JAVA面向对象程序设计教程. 2003.
    [9] 佚名.面向对象程序设计与Java语言[M]. 2004.
    0 评论 1 下载 2020-08-09 11:03:08 下载需要8点积分
  • 基于JSP网上招聘系统的设计与实现

    摘 要随着时代的发展,中国的互联网技术愈加成熟,已经有越来越多的社会群体开始学会使用互联网技术,整个社会正在朝着智能化、信息化的方向前进。有了互联网,用户便可以足不出户地利用互联网技术使得自己的生活更加便捷。因此,为了满足用户的庞大需求,网上招聘系统应运而生。
    本系统整体基于B/S架构,采用MyBatis框架,运用Java中的Servlet、Jsp等关键技术,并结合Oracle数据库的使用,为招聘者和求职者搭建了一个高效、便利的网络平台。本系统分别为求职者和招聘者提供了信息注册功能,登录功能和信息维护功能。除此之外,求职者可以选择发布、撤销或打印自己的简历,也可以浏览到企业实时的招聘信息,从而选择合适的企业应聘。招聘者可以选择发布或撤销自己的招聘信息,也可以浏览到求职人员的信息,选择是否同意他的应聘请求,并向其发送通知。
    关键词:Java;Servlet;Oracle;招聘系统
    AbstractWith the development of the times, China’s Internet technology is becoming more and more mature, more and more people began to learn to use the Internet, the whole society is moving in the direction of information technology, intelligent. With the Internet, people can make use of the Internet technology to make their lives more convenient. Therefore, in order to meet the needs of people, online recruitment system came into being.
    The whole system is based on B/S architecture, using MyBatis framework, the key technologies in java servlet and JSP, combined with the use of Oracle database, build an efficient and convenient platform for job seekers and recruiters. This system provides information registration function, login function and information maintenance function for job seekers and employers. In addition, job seekers can publish, revoke, print your resume, you can also browse to the enterprise real-time recruitment information, in order to select the right candidates. Recruiters can publish, revoke their recruitment information, you can browse to the job seekers information, choose whether or not to agree to his request, and sent a notice to him.
    Key words: Java; Servlet; Oracle; recruitment system
    1 绪论1.1 开发背景伴随着中国经济的飞速发展,城市化进程的加快,求职者队伍的不断壮大,传统人才招聘的弊端初露端倪。首先,传统人才应聘的形式是求职者和企业的负责人面对面地交流。这就需要企业和求职者提前规划自己的时间,准备大量的纸质材料,并选好举办招聘会的地点,这一系列流程都需要双方把大量的精力投入到准备活动中去,使得应聘还未开始,成本就已大幅增加。其次,企业在筛选数以百计,甚至数以万计简历的时候,往往会由于阅读疲劳,漏掉一些真正有价值的简历,使得企业丧失掉一批有用的人才。对于求职者而言,也会错失掉良好的机会,令人惋惜。
    随着国内互联网飞速的发展,用户已经越来越习惯于使用互联网传递信息,接收信息,利用互联网技术使得自己的生活更加便利,快捷。在这样一种大趋势下,网上人才招聘系统出现在了用户的眼前。网上人才招聘系统相对于传统的人才招聘,有以下几点优势:

    方便快捷:对于求职者来说,只要在互联网上向有意向的企业投递了个人简历,便可等候企业的通知信息;对于企业来说,只要点一下鼠标便可同意求职者的申请
    选择多:由于招聘信息量丰富、使用网络招聘的人数基数大,在大量的职位数据库中,求职者对于适合职位的选择也就越多
    费用少:对于求职者来说,节省了不少成本,如:交通费、简历制作费、通讯费等不少费用。除此之外,还有效地避免了招聘会现场异常拥挤、交流效果不尽如人意、选择职位盲目性大的问题。对于企业来说,节省了办理招聘会的各种费用

    正是由于以上种种优势,越来越多的求职者选择网络求职成为自己的应聘方式。
    1.2 开发意义本系统开发的意义在于突破传统人才招聘的模式,给招聘者和求职者提供一个便利、高效、准确的网络招聘平台,使得双方可以在把成本降到最低的前提下,在更快的时间获得更加准确的信息,从而满足企业的用人需求,实现求职者的自身价值。
    1.3 国内外研究现状在国外,运用互联网进行人才招聘的企业和求职者不在少数,许多优秀的第三方人才招聘网站也脱颖而出。在美国,优秀的人才招聘网站主要有:

    Beyond.com:每月发布的职位达数十万个
    Job.com:全美访问量最多的人才招聘网站
    Monster.com:全球知名的第三方网络招聘服务公司。现在已经在全球

    二十多个国家设立分部或办事处,并且建立了22种不同语言的招聘网站。其已具备国际领先的网路服务经验,以及庞大的个人简历数据库。
    在国内,也有越来越多的网络平台兴起开来,著名的有前程无忧、智联招聘、58同城等。据数据统计,2016年中国互联网招聘市场份额正在逐步增加。其中前程无忧占比29.7%,智联招聘占比26.5%,58赶集合并后共同占比26.3%,其他厂商占比17.5%。与此同时,传统招聘网站的市场份额正在逐渐缩小,2016年,中国互联网招聘公司手机应用软件的使用用户规模达720万人之多,单日人均使用次数为5.5次,单日人均使用时长达15分钟,用户活跃度较去年同期有所增长,手机等移动端的发展趋势较好。
    许多国家的用户已经对网络招聘的方式深谙其道。网络招聘已经成为当代大学毕业生和职员求职应聘的首选方式。在未来的几年里,网络招聘会进一步的发展和完善,受到更多人的青睐。
    1.4 论文结构本论文按照软件工程标准开发流程进行叙述。其主要由以下几个章节构成:

    绪论:对课题的开发背景以及研究价值进行详细的介绍
    相关技术原理和开发工具:对本系统所用到的关键技术及工具进行概述,比如java、Oracle等
    系统可行性研究:主要从技术实现、功能要求方面探讨该系统成功实施的可能性
    系统需求分析:对用户对于本系统的需求进行描述、分析,主要包含用例图的设计、数据流图的设计、数据字典表的描述及数据表实体-关系图的设计
    系统设计:在需求分析的基础上,对系统进行概要设计,主要包系统含类图的设计、系统模块的划分、每个模块的功能概述及数据表的逻辑设计
    系统实现:将系统各个功能模块业务逻辑进行详细描述,再用代码将其具体地实现
    系统测试:通过等价类划分法,设计测试用例,考察系统的缺陷
    结束语:对本系统进行最后的描述以及对未来的展望
    附录:包含有关于网络招聘的外文资料及其翻译 

    2 相关技术原理和开发工具2.1 程序语言的选择2.1.1 Java概述Java是一种面向对象的、可以编写许多跨平台应用软件的第三代程序设计语言。在1995年5月,由美国的Sun公司推出。 Java不再像C语言那样是面向过程的语言,也不像C++拥有众多复杂的机制,难以理解。准确地说,Java是一种纯的面向对象的语言。在Java的世界里,万物皆对象。正是由于这一种思想,开拓了创程序员的思维,从而诞生出了更先进的编程技术。
    2.1.2 Java特点Java的应用范围很广,开发人员可以用Java开发C/S应用程序、B/S应用程序、手机应用软件以及部分小游戏等。它主要具有以下特点:

    面向对象特性:在Java的概念里,任何事物都可看成对象,哪怕是类本身还是类里面的成员变量和成员方法都可以看成对象。Java编写的程序之所以能够轻而易举地扩展,正是由于它是基于对象模型的。在现实生活中,类就是物体共有属性和行为的抽象。而对象则是类的具体实例。比如:一个具体的苹果就是水果类的一个实例
    平台无关性:与许多其它编程语言不同的是,Java代码在被编译完成的时候,它会生成一种二进制的文件(.class文件),这种文件独立于平台,运行在虚拟机(JVM)中。程序不论是在Windows或Linux环境下,都可以被执行,只不过不同平台的虚拟机是不同的
    简单:Java设计的初衷便是简单易学。只要你能够准确、快速地掌握Java面向对象的特性,其他的概念便可以无师自通,遇到的大多数便可迎刃而解。从语言的难易程度看,Java要比 C++简单,C++中许多不容易掌握的概念如多继承、指针等概念都被Java所抛弃。这样的改进,不仅不会降低Java的实用性,反而大大增强了Java的体系架构,使得Java更加精简,可以应用于更广的领域
    安全:正是由于Java中不支持指针的概念,程序员没有机会去直接操作内存空间,这样就有效地防止了程序运行时堆栈溢出等问题,程序不会轻易地崩溃
    持久耐用:Java检测机制比较完善。有编译时错误检查和运行时检查两种方式,这样就能够检测出更多地错误,从而使得开发人员纠正错误,使程序长久稳定地运行
    多线程:所谓多线程,就是在同一段时间内,程序可以完成多个任务。Java的多线程功能,由JVM本身提供,开发人员只要利用JDK中提供的类和接口便可以轻松地实现多线程功能。多线程可以使程序高效地运行,在大型系统或网站中运用十分广泛。多线程的思想是优秀发人员必不可少的品质
    动态:类是Java 程序的基本构成单位。有些类是JDK提供的,有一些是从第三方框架中引入的,再者就是自己编写。又因为类是运行时被动态装载在JVM中的,这就使得 Java 可以在网络环境中动态地维护程序,实时地显示更新后的数据

    总地来说,Java是为了满足新时代开发人员的需要而诞生的。它在C++的基础上,取其精华,去其糟粕,并且高度抽象了现实生活中的物体,从而达到一种简单实用、面向对象、安全可靠、高性能和多线程的状态。
    2.1.3 Servlet简介在这个信息化时代,计算机对数据的处理显得尤为重要。传统的静态网页技术(HTML、CSS等)已经无法解决大数据发展所带来的问题,无法实时地处理上万条乃至上亿条信息。因此,动态网页技术应运而生。Servlet便是其中的佼佼者。
    Servlet不是一个纯粹的新技术,它是在Java的基础上发展而来的。准确的说,Servlet就是使用Java里一些相关的类库开发出来的程序。开发者通过Servlet技术,便可搭建出一个基于B/S架构的系统,它可以动态地处理数据,并将数据返回到浏览器中,用户只需刷新一下网页便可浏览到实时地信息。
    由于Servlet本质上就是Java程序,它具备Java语言的一切特点。除此之外,它还具备额外的一些优点:

    可重用性高:Servlet中可以建立组件,这些组件都可以复用
    模块化:Servlet中把程序划分为许多模块,模块化的好处就在于简洁明了,各司其职,不论是在程序的理解上还是维护上,都显得快捷高效

    Serlvet的运行原理如图2-1所示。

    2.2 Oracle数据库Oracle全称是Oracle关系型数据库管理系统,是甲骨文公司旗下的一款产品。Oracle数据库已经成为世界上最为流行,被众多厂商广泛使用的关系型数据库产品。不论是在小型、中型还是大型计算机中,不论系统是基于客户机/服务器架构,还是基于浏览器/服务器架构,它都可以高效地运行。除此之外,Oracle还在已有的结构性查询语言(SQL)基础上,结合自身产品的特性,创造出了一套符合自身特点的数据库语言。
    2.3 B/S模式2.3.1 B/S架构概述B/S架构(Browser/Server,浏览器/服务器架构),是当下最流行的一种网络架构模式。这种模式的客户端由浏览器充当,这样做的好处之一便是客户端简单易维护。因为浏览器的开发是由各个浏览器厂商负责的,系统开发人员并不需要参与其中,只需要负责服务器端系统的实现便可。除此之外,在服务器端并不需要运行大量的程序,这样做的好处在于可以释放服务器上的大量资源,也减轻了服务器端程序开发以及后期维护的成本。
    对于用户来说使用起来也非常轻松,用户在电脑上只需要安装一个浏览器,如火狐、IE、谷歌等,不需要像QQ一样下载专门的客户端软件,便可轻松地访问需要的系统或网站。
    2.3.2 B/S架构的工作原理用户打开浏览器,在浏览器中的地址栏中输入要访问的地址,即向服务器发送请求。请求发送成功后,服务器对收到的请求进行处理。在处理过程中,主要是对其中的请求信息进行解析,如果这一过程需要访问数据库,服务器便会继续访问数据库从中得到需要的数据,结合服务器内部的逻辑处理程序最终定位到用户需要的资源,返回给用户一个响应。最后用户即可在显示器上看到呈现出来的页面。具体原理如图2-2所示。

    2.3.3 B/S架构与C/S架构的比较C/S架构软件(即客户机/服务器架构)分为客户端和服务器端软件两种。客户端不仅要像B/S架构中的浏览器具备数据接收以及效果呈现的功能,还需要具备一定的业务逻辑处理能力。这就容易导致客户端负载严重,功能复杂。开发的成本也要有所增加。客户端软件的安装更是对用户的电脑配置提出了要求,越先进的软件对软硬件的配置要求越高,很有可能因为用户电脑配置的问题,导致项目的取消。在后期的维护中,除了对服务器维护外,开发人员还要单独对客户端软件进行维护,对不同配置的电脑还要开发出不同的维护版本,复杂度可想而知。
    B/S(浏览器/服务器模式)架构则是为了弥补C/S架构缺陷而产生的。它是对C/S架构的一种改进。在这种架构下,软件的业务逻辑功能完全放在WEB服务器端实现,开发人员不必开发出客户端软件,客户端也仅仅需要接收数据、展示页面即可。这是一种先进的开发理念和开发技术。这种架构已经成为当今软件开发的首选体系架构。企业的管理软件大多采用这种架构。社交功具或一些网络游戏大多采用C/S架构。
    2.4 开发工具2.4.1 建模工具Microsoft VisioMicrosoft Visio是微软旗下的一款具备图形绘制、图表绘制、模型构建等多种功能的大型软件。Visio最大的特点是它自身提供了许多模板供用户选择,而这些模板又涵盖了网络、工程、软件等众多应用领域,这就成为了很多开发人员的不二选择。在应用当中,开发人员只需选好自己需要的模板,将Visio中提供的部件拖拽到自己的项目中即可。
    所谓“一图胜千言”,利用Visio就可以轻而易举的构建出许多一目了然的模型,这样就大大提高了开发效率,减小了项目失败的风险,用户也更加放心。
    Microsoft Visio于2000年被微软收购,在这十几年当中,发布过将近17个版本。在该项目中,使用的是Visio 2013专业版。
    2.4.2 编码工具EclipseEclipse主要是为开发Java项目而搭建的开放平台。除此之外,它还支持C、C++、PHP等语言。Eclipse是一组集成开发环境(IDE),集众多插件于一身,使用起来十分灵活。开发人员可以对Eclipse中的一些插件进行取舍,使得软件高效运行;也可以在Eclipse中切换开发视图,配置一些参数,不必像以前再进行一些繁琐的操作。
    Eclipse于1994年被IBM和OTI两家公司所创建。后来IBM提出Eclipse开源项目的概念,被后来大约150家公司共同开发,以宇宙中星球的名字作为它每一代的版本代号。在该项目中,使用的是Elipse Mars版本。
    2.4.3 数据库连接工具NavicatNavicat是一套数据库管理工具,它可以连接到SQL Server、MySql、Oracle等主流数据库管理系统,简化了数据库的管理,方便了开发人员的操作,降低了数据库管理的成本。
    由于Navicat是基于图形用户界面的,开发人员直接可以通过Navicat提供的功能,不必在命令行中输入SQL语句,便可以直观的操作数据库,管理数据,实现增删改查等操作。Navicat在提供便利的同时,也对安全性加以保障,开发人员并不需要担心数据泄露的风险。
    Navicat也有众多版本,比如Navicat for MySQL、Navicat for Oracle等等。在该项目中,使用的是Navicat Premium版本。
    2.5 开发环境
    电脑型号:惠普242 G1 64位笔记本电脑
    操作系统:Windows10专业版
    数据库版本:Oracle10g XE
    JDK版本:JDK1.8
    服务器版本:apache-tomcat-8.0.24-windows-x64

    3 系统可行性研究3.1 系统可行性研究概述开发者在开发一个项目前,往往要考虑以下几个问题:这个项目有没有做的价值;在现有的条件下以及规定时间内是否可以把它完成;以及在做成之后,这个项目带给整个团队的利益究竟有哪些等等。这一系列要考虑的问题就可以看做对这个项目的可行性研究。
    3.2 系统可行性研究的目的和流程可行性研究的目的就是在确保符合团队利益的基础上,利用手上最精简的资源,探讨这个项目是否可以按规定去完成。除此之外,可行性研究的关键不是提出具体的开发方案,而是探讨解决问题的可能性。
    在系统开发生命周期中,往往会因为系统开发人员对市场的了解不彻底,对技术的掌握不熟练,对项目的风险因素预估不足等原因,导致许多问题都不能在合理的情况下得到解决。如果开发人员能够提前预测到可能出现的问题,并且在经过探讨后,不能得出合理的应对办法,那么就应该取消项目的开发。这样就能够在人力、物力等方面避免不必要的损失。
    系统可行性研究其主要流程为:分析人员对用户提出的项目方案进行简要的需求分析,在此基础上,利用一些作图工具或原型工具得到该系统的逻辑模型,接着利用逻辑模型探索出许多不同的解决办法,最后从这些解决方案中找出代价最小的去进行之后更深入的探讨。
    可行性研究往往可以从经济、技术、操作、法律这四个角度去讨论项目的可行程度,也可以让用户一目了然地了解到项目的整体规范。下面将仔细从这四个方面解析:

    经济可行性:主要从“成本-效益分析”的观点出发,通过对货币的时间价值、投资回收期、纯收入等方面的研究,考量项目成本与收益之间的关系
    技术可行性:从开发人员角度来说,考查的是其是否具备开发这个项目的技术和综合素质;从项目构成来说,考察的是该项目的架构是否合理,将来在开发以及运行的过程中不会出错;从项目运行的条件说,考查是否具备相应的软硬件环境
    操作可行性:项目的操作在其领域内是否行得通
    法律可行性:确保该项目的开发不会触犯政治上或社会上的侵权,不会违反任何一项法律条例。主要是从版权、专利等方面入手

    3.3 项目评估
    项目名称:网上招聘系统的设计与实现
    主要用户:个人和企业
    关键技术:java、servlet、oracle
    运行环境:windows操作系统
    前台功能:为用户呈现出操作界面,且界面美观、布局合理,具备一定的前台验证功能,要对用户的操作具有引导性和提示性
    后台功能:在用户管理方面,包括注册、登录、信息修改等基本功能。除此之外,其他功能围绕“招聘”这一活动行为展开,主要包括各种信息的浏览、简历的投递、简历的接收以及后续对简历的回应等等

    该项目在现有的人力、技术条件下,在符合法律规定的前提下,可以在规定时间内按照上述要求将其实现,并且有充足的时间对其进行测试、调试,保证项目的正确性。总体来看,该项目具备开发的可行性。
    4 系统需求分析需求分析就是在确定系统可以开发的基础上,将客户对系统的口头概述,经由开发人员的分析总结,抽象为具体的需求用例,再形成需求规格说明书的软件开发过程。可行性研究旨在探索目标系统是否值得利用现有的资源去开发,问题是否能够在现有的技术上去解决。而需求分析旨在回答”系统应该具备什么功能”的问题,以确保将来开发出来的系统能够让客户满意。
    4.1 系统功能分析4.1.1 用例图网上人才招聘系统的用户共分为两类:个人用户和企业用户。
    个人用户的用例图如图4-1所示。

    个人用户可以管理自己的信息,管理自己的简历,也可以实时浏览企业发布的招聘信息,按自己的要求筛选出合适的企业从而决定报名,并可以在企业应答之后收到相应的回复。
    企业用户的用例图如图4-2所示。

    企业用户可以管理本公司的登记信息,管理招聘公告,也可以实时浏览求职者的个人信息,决定是否录用,并向其发送回复。
    4.1.2 数据流图个人用户业务的流程如图4-3所示。

    个人用户在使用本系统时,会先进入到系统的登录界面进行登录,如果没有账户可用,则可以点击登录界面上的注册按钮注册信息。在成功登录后,则可以顺利地进入到主界面。个人用户可以在主界面的目录结构中选择相应的提示按钮进行操作。比如:修改人个信息、浏览各企业发布的信息、应聘心仪的企业、打印自己的简历等等。在完成操作后,用户可以点击退出按钮,安全地退出系统。
    企业用户业务的流程如图4-4所示。

    企业用户在使用本系统时,同样也会先经过注册、登录等标准步骤。在成功登录后,企业用户会进入到与个人用户不同的主界面。企业用户可以在其主界面上浏览人才库信息、检索出自己想要的人才信息、管理自己的招聘信息。也可在求职者应聘之后,选择是否同意他的请求。在企业用户进行完一系列操作后,同样可以安全退出系统。
    4.1.3 数据字典数据字典是对数据流图中出现信息的详细描述。它的主要作用是供开发者查阅,并为之后系统的分析、设计以及维护阶段提供详细准确的文档说明。主要由数据流、数据存储、数据基本项和加工条目4部分组成。下面是有关个人业务数据流图的数据字典:
    数据流条目如表4-1所示。



    名称
    组成




    个人信息
    账号+密码+姓名+性别+学校+生日+专业+电子邮件+薪资要求+联系方式+个人评价


    新的个人信息
    姓名+性别+学校+生日+专业+电子邮件+薪资要求+联系方式+个人评价


    登录信息
    账号+密码


    检索信息
    职位类别+薪资范围+截止时间


    企业职位信息
    公司名称+公司地址+职位需求+电子邮箱+联系方式+薪资待遇\
    +公司简介


    应聘信息
    个人信息+企业职位信息



    数据项如表4-2所示。



    名称
    类型
    长度




    账号
    字符型
    {字母}410


    密码
    数字型
    不为零



    数据存储条目如表4-3所示。



    文件名
    组成
    组成方式




    个人信息表
    id+账号+密码+姓名+性别+学校+生日+专业+电子邮件+薪资要求+联系方式 +个人评价
    索引文件,以id为主键


    雇佣表
    id+个人表的id+企业表的id
    索引文件,以id为主键



    加工条目如表4-4所示。



    加工名
    编号
    输入
    输出
    加工逻辑




    注册
    1
    个人信息
    个人信息表
    IF信息合法 THEN录入数据库 ELSE 重新输入新的合法信息 ENDIF


    登录
    2
    登录信息

    IF账号、密码与数据库中的信息匹配 THEN准予登录,并跳转到主页面 ELSE重新输入合法信息 ENDIF


    修改个人信息
    3
    新的个人信息
    个人信息表
    IF信息合法 THEN录入数据库 ELSE 重新输入新的合法信息 ENDIF


    职位查询
    4
    检索信息
    企业职位信息
    IF检索信息不为空 THEN按照相应的检索条件检索企业职位并返回给用户 ELSE按照默认方式排列企业职位信息并返回给用户 ENDIF


    下载简历
    7

    个人信息
    返回当前用户的简历并下载


    向企业应聘
    9
    应聘信息
    应聘表
    根据求职者编号和企业编号录入信息



    4.2 系统数据库需求分析数据库需求分析是整个数据库设计的基础和起点,也是涉及数据库内容的软件进行系统开发工作的重要基础。在需求分析基础上,对新系统中数据的逻辑模型通常采用实体—联系图(ER图)来描述。系统的ER图如图4-5所示。

    该E-R图包括:个人实体、企业实体和雇佣联系这三个组成部分。其中,个人实体主要用来存储个人求职者的信息,包括个人基本资料和自我评价。其目的是在招聘过程中供企业浏览。企业实体则用来存储公司的信息,主要是为了让求职者对公司有详细的了解,从而决定是否应聘该公司。雇佣联系则阐明了二者之间多对多的关系,记录着求职者和企业之间发生过的的招聘行为。
    5 系统设计经过上一步需求分析阶段的工作,通过建立由数据流图,数据字典和一系列算法所描述并且定义的系统逻辑模型,系统必须拥有哪些功能的问题已经被解决了。现在将进入系统设计阶段,目的在于着手实现系统需求,就是要把逻辑模型转变为物理模型。
    5.1 系统类图由于本系统后台使用java作为开发语言,所有的功能都是出现在类中的。在本系统中,类主要分为两种:实体类和业务类。
    实体类如图5-1所示。



    实体类包括个人类、企业类和雇佣类。
    其中,个人类(企业类)的作用是:将前台获取到的个人信息(公司信息)封装到该类中,再按相应的需求决定是否把这些信息录入数据库。此外,也可以将查询到的个人信息(公司信息)封装到该类中,发送给前端页面进行展示。雇佣类则是将每一个招聘行为记录在雇佣表内,p_id和c_id表明这一招聘是发生在哪个求职者和哪个企业之间的,并且也会随着企业用户的操作进行更新。
    业务类如图5-2所示。



    业务类包括个人业务类、公司业务类和雇佣业务类。
    个人业务类中包含的方法及其各自的作用如下所示:

    register():个人用户通过该方法注册个人信息
    login():个人用户通过该方法登录到系统的主界面
    update():对个人信息进行更新操作
    publish():发布个人简历
    deleteResume():撤销个人简历
    listAllPersons():企业用户通过这一方法,可以浏览到所有已经发布的个人简历
    listAllPersonsByParams():通过对该方法中传入参数的识别,可以按需求对个人简历进行筛选,如:专业类别、薪资范围、发布时间
    query():企业用户通过该方法,可以了解某个求职者的具体个人信息

    公司业务类中包含的方法及其各自的作用如下所示:

    register():企业用户通过该方法注册企业信息
    login():企业用户通过该方法登录到系统的主界面,这个界面与个人用户的主界面是不同的
    update():对企业信息进行更新操作
    publish():发布招聘信息
    deleteInfo():撤销招聘信息
    listAllComapnies():个人用户通过这一方法,可以浏览到所有已经发布的招聘信息
    listAllComapniesByParams():通过对该方法中传入参数的识别,可以按需求对企业发布的招聘信息进行筛选,如:职位类别、薪资范围、发布时间
    query():个人用户通过该方法,可以了解某个企业的具体企业信息

    雇佣业务类中包含的方法及其各自的作用如下所示:

    insert():个人用户通过该方法向企业投递简历,并将这一操作记录到雇佣表中
    update():企业用户在对向其投递的简历进行筛选时,会通过此方法将这一操作进行记录。如:同意、拒绝
    candidateQuery():企业用户可以通过此方法,查看到有哪些求职者向其发出了申请
    companyQuery():个人用户可以通过此方法,查看到向不同企业投递的简历的状态。如:通过、未通过、等待中
    query():罗列出所有的招聘记录及其状态

    5.2 系统功能模块划分5.2.1 模块图结合需求分析阶段的数据流图及数据字典,得出了系统的功能模块图。该系统通过对用户类型的区分,分为个人用户管理和企业用户管理两大模块。系统功能的模块图如图5-3所示。

    5.2.2 个人信息管理模块信息管理模块是整个系统中最为基础,但也是最为重要的的一环。因为在之后的模块中,所有的操作都围绕着数据、信息进行。个人信息管理模块的功能就是确保个人用户在使用系统时,个人的信息是完整的、准确的。该模块又划分为以下几个子模块:

    注册模块:个人用户在第一次使用该系统时,需要按照相应的约束填写自己的信息,从而进行注册
    登录模块:判断用户输入的登录信息正确与否,从而决定是否让用户进行后面的操作。除了注册功能外,该系统其他的功能都是建立在成功登录系统的前提下的。所以用户想要进行后续的操作,必须先按照之前注册的信息进行登录
    信息修改模块:该模块可以让用户对自己的个人信息进行更新、维护

    5.2.3 简历管理模块简历管理模块包括个人用户对自己简历管理的所有操作。具体体现在以下几个方面:

    简历发布:用户在成功发布简历后,自己的信息才能被相关企业所看到。每个用户只能发布一份简历
    简历撤销:用户如果由于某些原因,暂时不想参加招聘,则可以选择撤销掉自己的简历,个人信息就不会出现在人才库中,不会被别人所看到。用户如果还没有发布过简历,则不可以进行该操作
    简历下载:该功能可以让个人用户的将自己的简历信息从网页上下载到电脑上,以word格式进行永久保存或打印操作

    5.2.4 求职申请模块求职申请模块是该系统的核心模块。个人用户只有通过使用该模块的一些功能,才能向企业发布求职申请,与企业之间建立联系;企业也才能收到求职者的信息进行后续的操作。个人用户在成功登录系统后,一般会按照下面的步骤进行操作:

    浏览企业信息:在个人用户的主界面上,会显示出所有已被企业发布过的招聘信息的主要内容,如果需要深入了解企业,则可以点击后面附带的按钮查看详细信息
    检索企业信息:该功能可以让个人用户根据不同的检索条件,对企业进行筛选。比如:职位类别、薪资范围、发布时间。用户可以选择其中的一种进行筛选,也可以选择多种进行联合检索
    发出求职申请:个人用户在浏览完各种招聘信息后,可以向一个或多个心仪的企业发出求职申请。但对同一家企业,只能申请一次
    等候通知:用户在每次申请过后,便会生成一条相应的求职记录,它会显示求职者当前申请的状态,让求职者了解到简历是否通过

    5.2.5 企业信息管理模块企业信息管理模块与个人信息管理模块功能类似,它管理的信息与企业相关,与个人无关。例如:公司名称、公司地点、职位需求等等。在该模块中,企业用户也可通过注册、登录、修改的功能,完善企业信息,进行后续操作。
    5.2.6 招聘管理模块企业用户通过该模块可以实现以下几个功能:

    发布招聘信息:招聘信息只有发布,才能被求职者所看到,他们才能向相应的企业发送申请。一个企业只能发布一则招聘信息
    撤销招聘信息:企业如果不再需要招聘,则可以撤销掉招聘信息。其他人都不会浏览到该招聘信息。招聘信息已发布状态,才能被撤销
    筛选人才信息:企业用户成功登陆系统后,会看到所有被发布的求职信息。企业也可根据需要,对求职者的专业、薪资要求、简历发布时间、毕业学校条件进行检索,显示出满足条件的求职者
    发送通知:当有求职者向企业发送申请后,这条求职记录会被企业看到,企业可根据求职者的简历决定是否同意他的请求,从而向他发出通知

    5.3 系统总体设计5.3.1 系统设计思想网上招聘系统的整体设计思想主要表现在以下几个方面:

    整体以Windows环境、B/S架构为基础进行开发
    后台运用Java语言,结合Servlet、Jsp技术,进行主要功能的开发
    前台运用HTML+CSS技术,结合Jquery插件与Ajax技术,编写出用户体验良好的界面
    数据库采用Oracle语言进行建库、建表等操作;应用服务器端则利用MyBatis框架与数据库进行交互

    5.3.2 系统体系架构本系统采用三层架构对其整体进行划分,这样做的好处是:一方面,可以使整个系统结构清晰,功能明确,从而使开发人员对特定功能模块的针对性得到提高,开发效率大大增加。另一方面,也可以大大增强系统后期的可维护性,可扩展性。该系统三层架构的划分如图5-4所示。


    表现层:本系统的表现层是通过serlvet、jsp技术实现的,个人用户和企业用户通过使用表现层,将请求发送到不同的serlvet,servlet接受到不同的请求调用不同的业务逻辑功能,将获取到的数据交给jsp呈现到用户的面前
    业务逻辑层:在本系统中,业务逻辑层为service层,其功能就是使用数据层得到的数据,实现功能模块图中所有的业务逻辑
    数据持久层:在本系统中,数据持久层为dao层。dao层通过MyBatis技术与数据库进行交互,实现对个人信息、企业信息-招聘信息的增、删、改、查操作

    这三层之间是从上到下、层层依赖的关系。表现层要依赖于业务逻辑层进行页面的跳转,业务逻辑层又要依赖于数据持久层得到的数据对业务逻辑进行判断。
    5.4 数据库逻辑结构设计数据库逻辑结构设计是在需求分析阶段得到的E-R图为基础进行的。这一阶段的主要任务就是把数据库概念结构设计阶段设计好的基本E-R图恰当的转换为与选用数据库管理系统(DBMS)所支持的数据模型相符合的逻辑结构。
    5.4.1 关系型数据模型通过E-R图转换后的关系数据模型如下所示。

    个人表(ID,账号,密码,姓名,生日,性别,学校,专业,个人评价,薪资要求,联系方式,电子邮箱,发布时间)
    企业表(ID,账号,密码,公司名称,公司地址,职位需求,联系方式,公司简介,薪资待遇,电子邮箱,发布时间)
    雇佣表(ID,个人ID,企业ID,是否同意录用)

    其中,雇佣表中个人ID对应的是个人表的ID字段;企业ID对应的是企业表中的ID字段。
    5.4.2 数据表设计个人数据表设计如表5-1所示。



    字段名
    数据类型
    长度
    约束
    描述




    ID
    NUMBER

    主键
    个人ID


    USERNAME
    VARCHAR2
    20
    不可为空
    账号


    PASSWORD
    VARCHAR2
    20
    不可为空
    密码


    NAME
    VARCHAR2
    20
    不可为空
    真实姓名


    SEX
    VARCHAR2
    4
    不可为空
    性别


    BIRTHDAY
    VARCHAR2
    20
    不可为空
    生日


    SCHOOL
    VARCHAR2
    20
    不可为空
    学校


    PHONE
    VARCHAR2
    20
    不可为空
    联系方式


    EMAIL
    VARCHAR2
    20

    电子邮箱


    TRADE
    VARCHAR2
    20
    不可为空
    专业


    SALARY
    VARCHAR2
    20
    不可为空
    薪资要求


    TIP
    VARCHAR2
    200

    个人评价


    PUBTIME
    DATE


    发布时间



    个人表用来存储个人用户的信息。其中,ID字段为该表的主键,是每个人身份的唯一标示。pubtime字段存储着个人用户简历发布的时间。其余字段则存储着个人用户的基本信息。
    企业数据表设计如表5-2所示。



    字段名
    数据类型
    长度
    约束
    描述




    ID
    NUMBER

    主键
    企业ID


    USERNAME
    VARCHAR2
    20
    不可为空
    账号


    PASSWORD
    VARCHAR2
    20
    不可为空
    密码


    NAME
    VARCHAR2
    200
    不可为空
    公司名称


    LOCATION
    VARCHAR2
    200
    不可为空
    公司地址


    PHONE
    VARCHAR2
    20
    不可为空
    联系方式


    EMAIL
    VARCHAR2
    20

    电子邮箱


    TRADE
    VARCHAR2
    20
    不可为空
    职位需求


    TIP
    VARCHAR2
    500

    公司简介


    SALARY
    VARCHAR2
    20
    不可为空
    薪资待遇


    PUBTIME
    DATE


    发布时间



    企业表用来存储企业用户的信息。其中,ID字段为该表的主键,是每个企业身份的唯一标示。pubtime字段存储着企业用户招聘信息发布的时间。其余字段则存储着企业的基本信息。
    雇佣表设计如表5-3所示。



    字段名
    数据类型
    约束
    描述




    ID
    NUMBER
    主键
    雇佣关系ID


    P_ID
    NUMBER
    外键
    个人ID


    C_ID
    NUMBER
    外键
    企业ID


    ISAGREED
    NUMBER
    不可为空
    是否同意录用



    雇佣表用来记录个人用户与企业用户的发生过的招聘行为。其中,ID字段为该表的主键,标识着任何记录都是独立的、唯一的。p_id和c_id字段记录着这一行为发生的对象是哪位求职者和哪家公司。isagreed字段记录着招聘是否成功。该字段有三个选项:0、1和-1。0表明这一求职申请正在等待企业的审核,1表明该申请已经通过,-1表明该申请已被拒绝。
    6 系统实现6.1 登录模块登录模块的作用是根据用户输入的登录信息,判断正确与否,并根据传给后台的值,判断是企业还是个人登录,从而跳转到相应的主界面。整个系统的功能都是在用户成功登录的条件下进行的,所以这个模块尤为重要。
    用户按照用户界面提示的信息,输入自己的账号和密码,并勾选用户类型。用户点击提交后,系统会先判断用户勾选的类型,接着再根据用户名和密码进行检索,如果在该类型的用户表中存在这样的用户信息,系统会跳转到相应的主界面。否则,则重新跳转到登录界面,继续登录。
    用户在登录成功后,后台还会添加一个session范围的属性,名为person(company)。这一举措可以保证每个用户对数据的操作只是针对于其个人的,而不影响别人的信息。
    登录模块的活动图如图6-1所示。

    登录模块的关键代码如下所示:
    PersonMapper配置文件:
    <select id="findPersonByNameAndPassword" resultType="Person"> select * from person where username=#{0} and password=#{1}</select>
    Service层部分实现代码:
    //调用DAO层的findPersonByNameAndPassword()方法判读登录信息是否正确,从而决定是否允许登录public Person login(String username, String password) { SqlSession session = MyBatisSqlSessionFactory.getSqlSessionFactory(); IPersonDao personDao = session.getMapper(IPersonDao.class); Person p = personDao.findPersonByNameAndPassword(username, password); if(p!=null){ return p; }else{ return null; }}
    Web层部分实现代码:
    String username = request.getParameter("username");String password = request.getParameter("password");String type = request.getParameter("type");HttpSession session = request.getSession();//从前台获取type参数,判断是个人登录还是企业登录if("个人".equals(type)){ //调用service层的login()方法进行登录 Person person = new IPersonServiceImp().login(username, password); //登录失败跳转到登陆界面进行登录 if(person == null){ response.sendRedirect("login.jsp"); //登录成功跳转到主界面 }else { session.setAttribute("person",person); response.sendRedirect("index.jsp"); }}
    登录界面如图6-2所示。

    6.2 注册模块用户可以通过注册界面填写自己的信息。但是要遵循一定的规则。在用户填写注册信息的同时,系统前台会检查用户输入信息的合法性,比如必填信息是否填全,信息长度是否在规定范围内等。前台检查完毕后,后台会根据用户输入的用户名在数据库中检索,如果该用户名已存在,便让用户重新输入新的用户名;如果不存在,则注册成功,跳转到登陆界面。
    注册模块的关键代码如下所示:
    PersonMapper配置文件:
    <select id="findPersonByName" parameterType="string" resultType="Person"> select * from person where username=#{username}</select>
    Service层部分实现代码:
    //调用DAO层的findPersonByName()方法判断用户名是否存在;如不存在,则继续调用savePerson()进行注册public boolean register(Person person) { SqlSession session = MyBatisSqlSessionFactory.getSqlSessionFactory(); IPersonDao personDao = session.getMapper(IPersonDao.class); Person p = personDao.findPersonByName(person.getUsername()); if(p==null){ personDao.savePerson(person); session.commit(); return true; }else{ return false; } }
    Web层部分实现代码:
    boolean bool = false;PrintWriter out = response.getWriter(); //如果性别选项不为空,则判断是个人注册if(sex!=null){ String birthday = request.getParameter("birthday"); String school = request.getParameter("school"); //将前台获取到的参数传入到person对象 Person person = new Person(username, password, name, sex, birthday, phone, email, school, trade, salary, tip); IPersonServiceImp iPersonServiceImp = new IPersonServiceImp(); //调用service层的register()方法进行注册 bool = iPersonServiceImp.register(person); if(bool == false){ out.write("该用户名已存在!"); }else{ if(isAuto!=null){ person.setPubtime(new Date()); iPersonServiceImp.publish(person); } }}
    注册模块的活动图如图6-3所示。

    个人信息注册界面如图6-4所示。

    6.3 信息修改模块如果用户对自己现在的信息不满意,则可以修改信息。想要成功修改信息,也需要满足几个条件。用户名必须通过前台验证,比如:不能为空、修改后的用户名不得与数据表的用户名重复等等。个别信息也不允许出现为空的现象。
    信息修改模块的关键代码如图6-5所示。

    如图6-6是个人信息修改的界面。

    6.4 查询模块用户成功登录系统后,自动跳转到主页。主页罗列出所有已经发布的简历信息(招聘信息)。个人用户可以在主界面浏览到企业已经发布的招聘信息并进行应聘,也可以根据相应的条件进行检索出自己心仪的企业应聘。
    企业用户则可以浏览到求职者发布的应聘信息。
    罗列出所有信息的关键代码如图6-7所示:

    个人用户主界面如图6-8所示。


    企业用户主界面如图6-9所示。


    6.5 简历管理模块个人用户可以选择发布自己的简历,发布成功后,则可以被其他企业看到自己的求职信息。如果不想其他企业看到自己的求职信息,也可以选择撤销简历,但前提必须是自己的简历已经发布。如果需要导出自己的简历,则可以利用系统提供的模板进行下载。
    简历下载界面如图6-10所示。

    6.6 应聘者管理模块企业用户可以实时地看到有哪些申请者申请了职位,可以浏览到他们的详细信息,从而决定是否录用他们。在这之后,相应的应聘者也会得到是否被录用的信息。
    企业应聘者名单如图6-11所示。


    个人通知的界面如图6-12所示。


    6.7 安全退出当用户操作完毕,需要退出系统时,用户可以点击页面右上角的图形按钮,安全退出系统。用户点击完这个按钮后,会弹出是否确定退出的选项。如果点击确定,系统后台会删除名为person(company)的session属性,以防别人登录自己的账户,保护用户的信息安全。退出界面如图6-13所示。

    7 系统测试由于软件自身是看不见、摸不着的逻辑产品,所以在开发过程中难免会出现一些难以预料的的错误。在系统开发的一系列过程中,为了保证系统运行的正确性和可靠性,需要对其进行测试,目的就在于发现这些潜在的错误,从而对其进行调试改正错误。
    7.1 测试方法系统测试的方法基本上可以分为静态测试和动态测试两种。
    静态测试就是指只对程序源码进行分析的测试方法。这种测试方法并不要求程序在计算机上运行,而是采取人工检测和计算机辅助检测等手段进行测试。这种方法的缺点便是难以直观的找出错误,且工作量较大,效率较低。
    动态测试则相反,它要求程序在计算机上运行,在运行的结果中发现错误。这种测试方法可以直观的找出错误,因此大多数测试都采用动态测试。动态测试又可以细分为白盒测试和黑盒测试两种。
    本系统主要采用的是黑盒测试中的等价类划分法。
    7.2 测试环境本系统在保证其核心功能完整的前提下,对其在服务器上的部署进行了一些简化操作。具体测试环境如下:

    电脑型号:惠普242 G1 64位笔记本电脑
    操作系统:Windows10专业版
    数据库版本:Oracle10g XE
    JDK版本:JDK1.8
    服务器版本:apache-tomcat-8.0.24-windows-x64
    浏览器版本:Mozilla FireFox 53.0.2

    7.3 测试结果在本系统中,前台使用了Jquery技术来对用户输入数据的合法性进行判断。比如:账号密码的长度限制、个别选项输入不能为空等等。以下是一些等价类划分和测试结果。用户注册信息测试的部分等价类划分如表7-1所示。



    输入条件
    有效等价类
    无效等价类




    账号
    ① 4至10位字符
    ② 少于4位字符 ③ 多于10位字符


    密码
    ④ 大于0位字符
    ⑤ 0位字符



    测试数据如表7-2所示。



    wangjiawei
    123456
    注册成功
    ① ④




    Tom
    99163
    注册失败
    ② ④


    Sam3152896
    \
    注册失败
    ③ ⑤



    测试结果如图7-1所示。

    本系统除了需要对用户输入数据的合法性进行测试外,还需要对界面进行测试,界面测试是许多B/S系统开发中的重要一环。界面往往是用户对系统的第一印象,用户觉得界面越舒服、越美观,使用下去的可能性也就越大。可见,界面测试的重要性不言而喻。
    界面测试主要考察系统界面布局是否合理、文字图片是否规范、操作起来是否符合用户的习惯、部分功能是否对用户具有引导性等等。界面测试的结果如表7-3所示。

    7.4 系统评价总体来说,该系统已经达到了预期的目标。在设计方面,逻辑清晰;在编码方面,撰写规范,分层合理;在功能方面,并未检测出较大的错误,对于一些小的缺陷也已改进。整个系统运行后,表现良好,具有稳定性和可靠性。
    8 结束语8.1 结论在这个信息化时代,用户对互联网产品的需求达到了一个前所未有的高度。互联网产品方便快捷,经济高效,对用户生活质量的改善不言而喻。正是在这样的大背景下,形形色色的互联网软件正如雨后春笋般地涌向更多人的日常生活中去,网上人才系统正是其中之一。
    本文对网上招聘系统的各个开发阶段进行了一个详细的介绍。在其开发过程中,我严格按照软件开发的标准流程,并结合Java、Oracle等先进技术,实现了该系统应具备的所有功能。除此之外,该系统编码规范,界面友好,易于后期维护及将来功能的扩展,特点十分鲜明。
    但是由于时间及个人能力的问题,该系统在一些环节上存在缺陷。我希望通过今后不断的改进,能够真正做出一个科学、规范、满足用户实际需要的网上人才招聘系统。
    8.2 展望本课题已经对网上招聘这一流程进行了详细的描述以及对应的实现,满足了应聘人员和招聘人员的一些基本需求。但是,这个项目仅仅是一个演示而已,想要真正正正的进入到用户生活中去还差得很远。
    从功能上来说,整个招聘流程的核心功能功能实现还算完整。但是对于招聘人员和应聘人员来说,并没有为他们提供一个信息交流的功能,双方不能对一些细节方面进行沟通了解,信息传递不够及时,信息掌握不够完善。除此之外,该系统仅仅涵盖招聘过程的开始阶段,即应聘人员发出请求到招聘人员接受请求。对于招聘人员和应聘人员后续的需求并未实现。
    从技术上来说,并没有对系统的安全性进行考虑,不当的操作可能会引起难以想象的后果。系统整个代码稍显冗余,部分设计不合理,导致后期维护起来较难。该系统在数据层方面,采用MyBatis框架,使得系统运行高效。但在web层,并未采用诸如SpringMVC这种框架,全局也并未使用Spring对项目进行管理,对于项目后期的管理更新不太有利。
    随着互联网技术的发展,以及自身个人能力的提高,该系统在技术上、功能上、性能上等方面还会有很大的上升空间,在未来的某一天,争取将系统做到完美的地步,做到服务于人、服务于社会。
    参考文献[1] 张海藩.软件工程(第二版)[M].北京:人民邮电出版社,2006.
    [2] 何玉洁,梁琦.数据库设计教程[M].北京:机械工业出版社,2003.
    [3] 光军,胡波.JSP 应用开发高级教程.北京:北京航空航天出版社,2007.
    [4] 王保罗.Java 面向对象程序设计[M].北京:清华大学出版社,2003.
    [5] 蔡剑,景楠.Java Web 应用开发:J2EE 和 Tomcat[M].北京:清华大学出版社,2004.
    [6] 孙更新,吕婕. Java 毕业设计指南与项目实践. 北京:科学出版社,2008.
    [7] 张峋, 杨三成. 关键技术:JSP与JDBC应用详解[M].中国铁道出版社, 2010,11.
    [8] Bruce Eckel. Thinking in Java[M]. Upper Saddle River, New Jersey, USA:Prentice Hall,2006.
    [9] James Goodwill. Pure Java Server Pages .Indianapolis Ind: Sams, 2000.
    [10] Zoya Ali. Designing Object Oriented Software Applications within the Context of Software Frameworks[D]. Ohio State University,2011
    1 评论 1 下载 2020-08-08 09:50:59 下载需要14点积分
  • 基于JSP实现的网上手机销售系统

    摘 要本文所讲述的是网上手机销售系统的设计与实现。
    本系统实现了会员注册、登录、资料修改,浏览和检索商品、发布留言、看公告,管理员具有修改个人密码、添加手机品牌、增加手机信息、管理会员信息、管理订单信息、修改库存信息、查询财务信息、管理留言信息、添加删除公告。
    无论是互联网的飞速发展,还是手机制造业的日新月异,各式各样的只能手机越来越成为人们生活中不可或缺的一部分,而越来越相近的设计,越来越接近的价位也给人们带来了一丝困惑,该如何选择适合自己的产品?这也是本网上手机销售系统所要解决的.
    通过建立网上手机销售系统,不但减少了经营实体店所要考虑的选址、装修施工等问题,还可以节约很大一部分相关成本,与此同时,商家只需雇佣几名训练有素的客服,即可实现不分地域、不分时间段完成客户订单,如此不仅可以很好地巩固和扩大自己的客户群体,还能很好的增加自己在相关行业的核心竞争力。
    关键词:网上销售系统;互联网;手机销售;客户订单
    AbstractThis paper is about the design and implementation of online sales system for mobile phone.
    The system achieve the membership registration, log in, data modification,browse and search product information, post a message,view the announcement, the administrator has the ability to modity to modity the personal password, add a mobile phone brand, increase phone information ,manage member information ,manage order information, modify the inventory information ,query financial information ,manage message messages ,add delete announcement.
    In both the rapid development of Internet or the quickly change of mobile phone manufacturing industry, various smartphones are becoming the indispensable part of people’s life. But the similarity of the design and price gives people a little confusion. How to select the suitable one? This is exact what the online sales system for mobile phone in our paper is going to deal with.
    Through the establishment of online mobile phone sales system, we can not only avoid the problems like the site selection and decoration of operating a physical sure, but also saving a large part of the related cost. While what we need to do is hiring a few trained customer service, then we can realize the completion of customers order regardless of the area or time. By doing so, we can consolidate and expand our customer base, and also increase our core competitiveness.
    Key words: online sales system; Internet; mobile phone sales; customers order  
    第1章 绪论1.1 课题背景当1973年历史上第一部手机出自Martin Lawrence Cooper和他的团队,人们无法预料到当今的盛况,如果没有一部手机甚至会影响到我们正常的生活,从当初的摩托罗拉“大砖头”到GSM手机、诺基亚的兴起、彩屏手机的出现、滑盖翻盖手机的热销以及iPhone带来的触摸屏手机浪潮使手机越来越成为人们生活的一部分。
    到今天,手机除了原本的移动电话功能,还兼具讯息、游戏、网络、支付系统、个性化应用等功能,极大地方便了人们的生活,也使得如何购买一部性价比高并且适合自己的手机成为人们非常关心的方面。
    我国的互联网产业在沉寂了一段时间后强势兴起,其百花齐放的发展趋势使得人们对于互联网的运用不仅仅局限于网页上各种信息资源的查询浏览下载,各式各样的购物网站也为人们提供着方便,而人们也对网上的一些消费模式提出了自己的新要求,而最为热门的还以淘宝、京东、亚马逊等综合性网络平台为主,通过网络购物平台将相距万里的商家和客户联系在一起,阳澄湖的大闸蟹只需在网上订购,两天之内便可跨越万水千山到达家门口,同时还能保证其鲜活。
    根据中国互联网协会网络营销工作委员会的调查可看出,随着我国国内的产业环境和消费市场的日趋完善,网络购物尤其是以生活用品为代表的网购将在今年实现更大发展。
    根据中国报告网的数据,我国的消费者网络购物的交易规模会随着人均可支配收入的提高而逐年增加, 2011-2016 年的交易额分别为 0.8 万亿、1.2 万亿、1.9 万亿、2.8 万亿、3.8 万亿和 5 万亿,而与其对应的增长率依次为 70.2%、51.30%、59.40%、46.90%、36.20%和 30.70%。
    分析其中的原因我们可得知,首先是信息时代的人们对于新兴的与互联网相关的购物模式的接受程度比较高,而且商业运作模式变得更加可靠、产业链条也变得更加完备以及强劲的发展势头和源源不断的后劲,都会为网上购物的发展提供坚实可靠的保障,这使得网络购物及产品在与其他行业竞争中脱颖而出。
    作为全新的消费模式,网络购物给人们带来的改变不仅仅是购物场所,更多的在于改变了人们的消费习惯和观念,而我所要做的是让网络购物更加趋于定向话和专业化。
    1.2 目的和意义随着互联网及相关行业的兴起,Internet已经成为人们收集或提供信息的最主要的也是最佳的方式,而电子商务也随即强势兴起,越来越多的商家选择在网上建立自己或大或小的在线店铺,向消费者宣扬着另一种新颖而充满活力和前景的新型购物理念。
    网上销售系统是一种具有很强交互功能的商业信息系统,它向客户提供着丰富的信息资源,不仅有与公司相关的简介、业务理念以及管理的相关规章制度,还有随时变化的产品内容、价格以及活动信息等。对于消费者而言,通过网络上
    显示的关于企业以及产品的信息,可以进行比较筛选,最终购买更合适自己的产品。再加上互联网上为网友提供的海量而及时的相关信息,对于其基数庞大到无法计算并且依旧在以一个高速增长的势态的信息量而言,是其他信息类产品所无法达到的,这一特性使用户对于商品信息的需求得到了极大满足。对于其页面转换的便捷性可以从信息页面一步到达商品选购页面,方便了顾客的同时也使商家的销量有了一定的提升。
    随着近年来各家网上销售平台与多种类型媒体所进行的多种形式的合作宣传,而媒体宣传形式也日新月异,越来越吸引眼球,消费者直接或间接的能接收到各种类型的商品信息的宣传,从而或多或少提高了人们的购物频率,而其背后巨大的收益使各家企业更加重视此类销售模式。
    但是在我的看法中,所谓百艺通不如一艺精,人们在产品纷繁复杂的购物平台上,难免会产生眼花缭乱的感觉,而我的系统所要做到的就是专攻手机销售方面,因此可以做的更深入、更专业,通过销量、价格、品牌的多元化比较展示给客户一目了然的推荐,节约客户在不同性能中徘徊的时间,从而人们可以轻松选择更加适合自己的手机。
    对比网上销售模式和传统的销售模式可知其(网上销售模式)优势:

    快速搜索定位:网上销售系统不仅本身具有丰富的信息,其对于信息的检索定位也是十分准确便捷的,想要搜索一件商品不仅局限于其产品名,还有货号、类别、是否特价产品等
    拥有海量信息:其得天独厚的优势就是无法估计的容量可以存储海量产品信息,而且可实现及时更新
    更低的成本、更长久的营业时间以及突破地域限制:网上销售系统的实现令商家只需在网站建立维护上进行一定的花费,省去了大笔的店铺租用、员工雇佣以及店铺装修维护等方面的花费,将多余的资金用作系统维护、界面优化可以使客户有更好的体验,吸引顾客更愿意在自家网站上购物,起到了事半功倍的效果

    对于营业时间而言,雇佣不同时段的客服即可完成全天的营业保障,如此的全天候保障不仅给客户以可靠的印象,更能增加自己的销售额,达到巩固客户与提高销售额的一箭双雕。
    “身在东北的他刚刚收到了昨天在网上订购的大闸蟹,一个个活蹦乱跳”这个例子就是说明了网购平台不受地域限制的情况之一,随着我国物流业的快速进步,无论你身在哪里,我们都能将你在网上订购的东西送到你手上成为了各大平台的宗旨。而无论你在哪里,只要身边有网络,你也可以选购任何网站上的产品而不必在意它的产地和商家在哪里。这使得购物更加方便、广泛,也为各地的厂商提供了更加广泛的客源,也大大的提高了其经济效益。
    1.3 系统设计思想对于本系统,以网页销售模式为主,通过网络平台来达到手机产品的销售,为各大手机商提供了一个综合平台进行产品销售。浏览器作为客户端、手机购买者作为用户、后台管理员有独立的后台管理系统。因为相关手机信息较为综合,所以要处理的数据很多,本网站上的数据流量也将特别大,不仅要做到界面简单易操作,还要保证系统的安全稳定,所以具体要符合以下几点:

    首先也是最要的是整个系统的稳定性和安全性
    对于用户而言,友好的界面将变得非常重要,一个网站如果简单美观,并且在信息查询方面非常便捷,如此一般能抓住用户的心可以使网站访问量大大增加
    首页能将不同品牌手机分类,也便于有某具体手机品牌要求的用户快速检索出自己所需要的手机类型
    首页设置关于排序功能的模块,是本网站可以从销量、售价等方面进行排行使客户一目了然,方便客户选购
    可以实现网上的交易功能,添加/删除购物车内的信息,选择自己意愿的的付款方式以及配送地址
    已注册的会员可以随时从注册界面修改自己的个人信息
    顾客可以随时查看自己的订单,并进行相应操作
    后台管理员可以发布或者删除公告,以用于向到达网页的客户发布商品优惠信息或关于网站停服维护等信息
    已注册的用户可以使用留言板功能,为客户间提供信息沟通平台,不仅可以互相之间提问解答,也可以对已购产品作出评价为后来到的用户选购做一个参考
    对于顾客输入的各种类型数据进行检验,尽可能地排除因为个人疏忽而造成的错误
    在制作该系统是,秉承着尽最大努力实现其易操作性,对于后台工作人员则需让其更易维护

    1.4 本文的结构本文的大致模块有:

    可行性分析
    需求分析
    系统总体设计
    系统详细设计与实现
    系统的测试

    本篇文章意在描述网上手机销售系统的前台与后台的基本组成与结构,大致介绍了该系统的设计的方案,简述了其实现方法以及开发此系统所需要的编程工具和用到的主要技术,并且着重分析了一些环节的编码过程。
    该系统在IE浏览器下分别进行了个别模块的测试以及整体测试,验证了该系统的基本可用性也证实了其可靠性。
    第2章 可行性分析随着淘宝、京东、亚马逊等电商巨头的兴起、网上销售系统已经成为各大企业在销售方面不可错过的巨大机遇,如果能上线一个界面友好的、操作简单的、功能全面的并且后台功能强大,数据库完善而稳定的网上销售平台可以为企业带来不可估量回报。通过现今流行的电商相关网上手机销售平台,不仅为手机制造商们开启了全新的一个销售途径,也通过网上销售系统这个平台对各个手机品牌进行了一定的宣传,不但增加了该手机制造商的知名度也就是将品牌宣传出去,也直接增加了企业效益。总而言之,构建自己的网上销售系统将成为各家企业接下来的必不可少的转型目标。
    2.1 业务流程图分析大多数的同类网上销售平台的运营模式,通过对其业务流程的详细分析,发现了其流程会与信息流动的方向大致相同,简述其具体内容为信息的来源、相应的计算方法、对于信息的处理方法、对于各项业务的处理以及控制信息的流经去向以及这些信息所被提供的时间和形态其具体呈现形式为报告或者是订单等等。
    对于该系统的业务流程图,可以做以下描述:

    对于游客而言,只需通过浏览器即可对网站前台进行各品牌手机的浏览、查询,通过后台数据生成的手机品牌、销售排行榜、特价区域、新品上市等模块的推荐,来选择自己的需要的产品。同时,游客也可以使用关键字查询找到自己心仪的手机型号,并查看其详细信息。除此之外,游客可以查看公告,对本网站当前活动和维护信息有一定得了解
    当游客有了心仪的手机产品并打算购买时,则需要注册本网上手机销售系统的会员,在输入了基本的用户名、密码、再次确认密码、真实姓名、住址、性别、联系方式、E-mail、QQ等基本信息后注册成为本网上手机销售系统的会员,即可进行购物功能和留言板功能,不仅可以将自己的建议意见发送出去,给大家提供借鉴,也可以通过浏览其他用户的留言来解决自己心中的疑惑
    注册成为会员并登陆后,找到自己要购买的手机选择数量并点击购买,即可启用本网上手机销售系统的购物车相关功能,可选择清空购物车、继续购物,当继续购物选择了前期曾选购过的手机并且还未付款,则数量直接在原来的基础上增加,也可在购物车界面直接修改某一产品的数量。其中在登陆状态下可查看该顾客的购物车信息
    在购物车信息完全确认后可点击确认订单按钮,并对送货地址加以填写,选择合适的付款方式,如有任何疑惑均可点击上一步查询订单,点击提交订单即可将所下订单上交至后台管理员,而系统也将自动产生本次购物订单的订单号,等待其受理该订单。即使回到商城首页,只要还保持登陆状态即可随时查询自己的订单状态
    当管理员登陆后台系统后,其可进行的操作首先是修改管理员本身的个人密码,以保证其安全性。其次管理员可进行手机品牌管理,为其增加或删除相应手机品牌,但删除的前提是该品牌下的手机型号都已清空,对于手机品牌的管理,不仅可以删除或者增加手机信息,还可以设置特价商品,对于库存信息管理可以增加入库数量,对于财务信息统计就是记录所选时间段内的销售总额。对于

    管理员后台处理 系统管理员登录后可以查看到已受理和未受理的订单及详细信息。另外,管理员能够对系统的各项信息进行维护处理。此外,系统管理员还具备留言板和公告的审核,公告的发布可直接将优惠信息展示在首页。
    该网上手机销售系统流程图如图2-1所示。

    将网上手机销售系统的概要目标确定以后,就要从三个方面进行分析:

    经济可行性
    技术可行性
    运行可行性

    通过对这三个方面进行分析有助于确定该系统是否能实现原本的目标。
    2.2 经济可行性经济可行性对于网上手机销售系统而言,更多的是该系统在运行后所带来的经济效益和当初开发时公司所投入的资金相比,是否合适,与此同时,该网上手机销售系统能否能给用户带来一定的经济效益,换句话来说就是开发过程中仅需支付很少的开发经费即可满足系统功能的开发所需资金、架设服务器所需的费用以及投入使用后定期维护所花费的资金。
    和传统的实体销售模式相比较,网上手机销售系统节省了房屋租用的成本,而且大量的店员雇佣金也可以省下。
    而且由于本系统简单有效,不需要大量的开发人员,节省了很大一部分开发方面的资金投入,也为经济可行性奠定了坚实的基础。不仅如此,独立设计还提高了个人的设计意识和编码能力,也是一种很有意义的锻炼。
    2.3 技术可行性对于网上手机销售系统的技术可行性而言,不仅需要考虑到本身软件硬件的性能要求和根据环境提出的条件,编码人员和操作人员的水平等方面也需要进行深入的分析和研究;
    为了使网上手机销售系统有很好的技术可行性,首先对于开发模式选择了较为热门而且运用比较广泛的B/S模式,得益于其在各个行业的良好使用,对于编程过程中使用到的HTML、JSP、CSS、SSH框架都为此次开发提供了非常重要的技术支持。
    而开发网上手机销售系统必然离不开开发工具和数据库,软件方面我选择了较为稳定的eclipse neon.3和jdk8.0以及Tomcat8.0,数据库选择了SQL sever2008较为稳定。软件没有选择最新的版本是因为电脑本身原因更适合稳定一点儿的版本,而且介于功能并不是非常复杂,所以之前的版本即可实现。
    综上所述,技术可行性软硬件均可实现。
    2.4 运行可行性随着互联网以及智能手机的普及,人们对于网上购物已经有了很久的适应,淘宝、京东、亚马逊的成功更是表示出了对于网上销售平台人们的认可以及极大热情,而越来越多的企业也注意到了这个商机,争先恐后选择尝试网上销售系统来推广自己的产品和企业名气,而网上销售系统也不负众望为各家企业带来了全新的销售模式、更高的销售额以及更广泛而稳定的客户群,这众多优点使得网上销售系统将会得到企业与客户的双重肯定。
    本网上手机销售系统专门针对各种手机制作的综合销售系统,通过对各类手机信息的收集汇总比较展示,使得大家在选购手机时可以有所借鉴,选择最合适自己的手机,无论是前台浏览购物还是后台的信息维护数据改变操作都极其简单,客服人员经过简单的培训即可熟练操作,所以可以认为该系统在运行可行性方面可实现。
    2.5 本章小结网上手机销售系统的可行性分析,其主要任务是为了确定即将要开发的网上手机销售系统项目有没有开发的必要性以及有没有开发的可行性。本网上手机销售系统通过对整个系统深入而具体地分析,以一个普通用户的视角出发,来探究本系统是否可行,其中,能作为依据的主要是大量的数据以及软件运行环境是否可行。通过三个方面的可行性 :经济可行性、技术可行性以及运行可行性来说明本网上手机销售系统的简单、易操作、易掌握,同时也说明了本网上手机销售系统所采用的技术成熟、完善,其采用的测试手段也较为可靠,在市场中能很快地得到人们的认可并占领一番市场。因为至始至终它追求的都是简单、易学、容易使用,所以具有很好的开发前景和很大的开发价值。
    第3章 需求分析3.1 关于电商的前世今生和目前发展状况在结束了1997年召开的全国信息化工作会议,各省市地区的相关部门开始制订符合各自情况的信息化建设规划,而电子商务相关的也在其中,这便是电商第一次进入人们的视野。也同样是在这一年,CGOS也就是中国商品订货系统开始运行,其中值得一提的是,虚拟“广交会”等同类电商项目的推出也使中国的电商行业正式拉开序幕。继开局良好的1997年后,国内电商行业发展势头更猛,于1998年展开了全国范围内的“首都电子商务工程”,到1999年正式出现的8848网上超市也标志着中国电子商务正式开始进入了突飞猛进的发展时期,中国的电商大业也自此正式进军中国市场。
    根据网上多方的报告显示,2016年全年我国网上零售市场的规模已达4.97万亿元,同比增长为29.6%。其中B2C市场交易达2.73万亿元,同比增速36%。值得一提的是,网上零售市场规模在社会消费品零售总额中的比重已达14.95%,已经成为我国国民经济不可或缺的重要组成部分。尤其是随着2014年各大电商平台百花齐放,比如:京东、淘宝、聚美优品等,对于上一年京东大动作收购比较知名的电商系统1号店并与实体超市沃尔玛达成战略合作、阿里并未落后,随即收购浙江省目前最大的连锁超市之一三江购物,通过电商巨头大举动的纷纷与一些零售实体加速融合,网上零售业开始成为主导此次涉及所有零售业的融合变革。
    可以说,中国电子商务已经由表及里、从虚到实,从宣传、启蒙和推广、务实发展阶段进入到了现在的保持较高的增速,但由于几乎达到成熟所以增速已开始放缓。
    3.1.1 政府推进 环境改善我国政府在看到电商巨大潜力后,尤其是在看到巨大的发展之后依旧毫不犹豫地全面、积极、稳固地支持推进着中国电子商务的发展。从过去的将近二十年来看,政府对于电子商务相关的无论是协调还是支持力度一直只增不减。随着电子商务发展的成熟,国家也出台了一系列相关的包括整体的战略发展规划、发展所需的措施、相关的技术体制标准以及相关的法律法规。我国政府的这一系列作为可以让电子商务在发展的时候可以让其所处的环境更加规范而有序,保证其高速发展的硬性条件。部分地区尤其电子商务发展的比较迅速,当地政府也都把握住机会,为特色企业给予了更多的关注和支持,甚至把电子商务当作地方重要乃至支柱型企业进行扶持和导向。
    3.1.2 制约瓶颈 开始突破物流配送、买卖双方的信用体系、支付方式作为整个电子商务工程中的灵魂却一直以来被视为制约着中国电子商务飞速发展与良好应用的瓶颈。但是随着各方面齐头并进的发展,三个方面都有了长足的进步,随着运输工具的多样化、运输系统的巨大进步,并且多家快递公司的出现,分担了邮政的巨大压力,开始让配送到家的服务越来越普及;各家电子商务网站对于买卖双方启用信用评级评价既约束了买卖双方的商业底线,也为后来的卖家买家一个参考,能从前人的评论中判断这个店铺是否可靠,其产品质量是否得到大多数顾客的好评,而卖家对顾客的评价也可以让人们对于评论区的真假做出判断;经过较长时间的发展,网上银行、支付宝、微信钱包已经渐趋完善,可以达到日常稳定支付,所以也在一定程度上突破了限制,促进了电子商务的发展。
    3.1.3 应用模式日趋多元源于制约网上各种交易模式的物流、支付模式以及买卖双方信用评级的渐渐解决,网上的各种销售模式例如书店和商场等开始增加一些更加丰富的项目让用户体验更加完善,同时也让网站运营更加稳定,网上销售的发展一路高歌;技术的趋于完善使不同种类的网站也如雨后春笋般萌发,网上拍卖的走俏让不少证券业看到了全新的经营模式,操作方便、信息及时让网上炒股成为新的炒股模式,并得到广大对电脑比较熟悉的网民的欢迎。
    即使互联网已经发展迅速到超出人们的预计,并且仍将以日新月异的模式继续发展,但是如何运用好这个利弊兼具的工具,如何将其与我国当前的国情相结合,既能够使互联网在中国不仅得到高速的发展,而且对我国经济、科学都有一定程度的促进,对于我国特殊的经济模式,如果能将电子商务与现今的商务模式很好地合作创新,将会对新型经济发展有一个较为明显的促进。
    3.1.4 内外融合渐成大势由于国外电子商务发展的快速和较提前,很多外国企业看中了地大物博的中国市场,但是并不只是外资企业选择我国的市场,还有的企业可以通过在海外上市来收获更广泛的资金。电子商务本就是先进经营模式,所以往往企业内的投资思想比较先进,他们会尝试将那些在国外有过电子商务相关经验的高级管理人员纳入麾下,通过他们的管理运营将自己的企业走上电子商务的正轨,但是国外的企业并没有静观其变,他们开始直接在中国市场上融入,尤其是中国加入到了世界贸易组织以后,通过INTERNET的世界经济一体化成为定局。
    3.2 商品网上购物系统的需求分析虽然我所做的网上手机销售体统并不类似于现在最大型的几款电子商务系统,但是通过对多家电子商务网站的实质分析,对于自己的系统我设计了以下几个功能:

    首先也是最吸引人的地方,界面一定要简洁大方,至少能给人一目了然的感觉,让人们乐于使用本网站,统一友好的操作界面,保证系统的易用性,方便用户的操作
    具备手机信息的展示功能,方便浏览者对商品信息进行浏览与比较
    根据手机品牌将手机分类,方便顾客根据手机品牌分类查找
    完善的购物车功能与用户结账功能
    设置网站公告信息模块,使浏览者能够及时了解网站的各项动态变化,及销售的新品、特价活动等信息
    商品销售排行功能
    订单信息查询功能、手机的信息查询功能;全面的后台管理功能,不仅有修改管理员自身信息,还可以对手机信息进行相关修改,可添加手机品牌的信息,并在相应品牌下添加具体的手机型号
    可以查看和删除会员信息,为会员信息保存提供可靠保障;对于库存,管理员需要及时添加以保障手机的正常出售,财务统计可显示一段时间的销售额,方便了管理员的统计
    可查看、维护留言板,也可以发布、删除公告

    3.3 数据流图3.3.1 系统总数据流图
    3.3.2 数据字典数据字典的作用是在软件分析和设计的过程中给人提供关于数据的描述信息。它主要是对数据流图中的数据流、处理逻辑、外部实体、数据存储和数据项等方面进行具体的定义。数据流程图配以数据字典,就可以从图形和文字两个方面对系统的逻辑模型进行完整的描述。
    数据项定义



    序号
    名称
    别名
    类型
    长度(字符)




    I01-01
    goods_id
    商品号
    Int
    4


    I01-02
    goods_name
    商品名
    varchar
    50


    I01-03
    goods_miaoshu
    商品描述
    varchar
    5000


    I01-04
    goods_pic
    存放商品图片
    Varchar
    50


    I01-05
    goods_yanse
    商品颜色
    Varchar
    50


    I01-06
    goods_shichangjia
    商品市场价
    int
    4


    I01-07
    goods_tejia
    商品特价
    int
    4


    I01-08
    goods_isnottejia
    普通商品
    varchar
    50


    I01-09
    goods_catelog_id
    商品种类号
    int
    4


    I01-10
    catelog_id
    种类编号
    Int
    4


    I01-11
    catelog_name
    种类名称
    Varchar
    50


    I01-12
    catelog_miaoshu
    种类描述
    Varchar
    5000


    I01-13
    order_id
    订单ID
    Int
    4


    I01-14
    order_bianhao
    订单编号
    Varchar
    50


    I01-15
    order_date
    订单生成日期
    varchar
    50


    I01-16
    order_zhuangtai
    订单状态
    varchar
    50


    I01-17
    order_jine
    总的消费金额
    Int
    4


    I01-18
    order_songhuodizhi
    送货地址
    Varchar
    50


    I01-19
    order_pay
    付款方式
    Varchar
    50


    I01-20
    order_user_id
    用户ID
    Int
    4


    I01-21
    orderItem_id
    订单明细编号
    Int
    4


    I01-22
    order_id
    订单编号
    Int
    4


    I01-23
    goods_id
    商品编号
    Int
    4


    I01-24
    goods_quantity
    购买数量
    Int
    4


    I01-25
    user_id
    用户ID
    Int
    4


    I01-26
    user_name
    用户名
    Varchar
    50


    I01-27
    user_pw
    用户密码
    Varchar
    50


    I01-28
    user_realname
    真实姓名
    Varchar
    50


    I01-29
    user_address
    住址
    Varchar
    50


    I01-30
    user_sex
    性别
    Varchar
    50


    I01-31
    user_tel
    联系电话
    Varchar
    50


    I01-32
    user_email
    用户邮箱
    Varchar
    50


    I01-33
    user_qq
    用户QQ
    Varchar
    50


    I01-34
    userId
    管理员ID
    int
    4


    I01-35
    userName
    管理员名称
    Varchar
    50


    I01-36
    userPw
    管理员密码
    Varchar
    50


    I01-37
    gonggao_id
    公告编号
    Int
    4


    I01-38
    gonggao_title
    公告标题
    Varchar
    50


    I01-39
    gonggao_content
    公告内容
    Varchar
    5000


    I01-40
    gonggao_data
    公告创建时间
    Varchar
    50


    I01-41
    gonggao_fabuzhe
    发布人
    Varchar
    50


    I01-42
    liuyan_id
    留言id
    Int
    4


    I01-43
    liuyan_title
    留言标题
    Varchar
    50


    I01-44
    liuyan_content
    留言内容
    Varchar
    5000


    I01-45
    liuyan_date
    留言时间
    Varchar
    50


    I01-46
    liuyan_user
    留言客户
    Varchar
    50



    数据流定义

    数据流编号:D1-01

    数据流名称:商品基本信息维护数据流来源:系统管理员数据流去向:P1数据流组成:I01-01+I01-02+I01-03+I01-04+I01-05+I01-06+I01-07+I01-08+I01-09
    数据流编号:D1-02

    数据流名称:管理商品信息操作数据流来源:F1、P1数据流去向:P1、F1数据流组成:I01-01+I01-02+I01-03+I01-04+I01-05+I01-06+I01-07+I01-08+I01-09
    数据流编号:D2-01

    数据流名称:订单信息操作数据流来源:系统管理员数据流去向:P2数据流组成:I01-13+I01-14+I01-15+I01-16+I01-17+I01-18+I01-19+I01-20+I01-21+I01-22+I01-23+I01-24
    数据流编号:D2-02

    数据流名称:订单信息数据流来源:F2、P2数据流去向:P2、F2数据流组成:I01-13+I01-14+I01-15+I01-16+I01-17+I01-18+I01-19+I01-20+I01-21+I01-22+I01-23+I01-24
    数据流编号:D3-01

    数据流名称:公告信息维护数据流来源:系统管理员数据流去向:P3数据流组成:I01-37+I01-38+I01-39+I01-40+I01-41
    数据流编号:D3-02

    数据流名称:管理公告信息操作数据流来源:F3、P3数据流去向:P3、F3数据流组成:I01-37+I01-38+I01-39+I01-40+I01-41
    数据流编号:D4-01

    数据流名称:留言信息管理数据流来源:系统管理员数据流去向:P4数据流组成:I01-42+I01-43+I01-44+I01-45+I01-46
    数据流编号:D4-02

    数据流名称:管理留言信息操作数据流来源:F4、P4数据流去向:P4、F4数据流组成:I01-37+I01-38+I01-39+I01-40+I01-41
    数据流编号:D5-01

    数据流名称:客户信息管理数据流来源:系统管理员数据流去向:P5数据流组成:I01-25+I01-26+I01-27+I01-28+I01-29+I01-30+I01-31+I01-32+I01-33
    数据流编号:D5-02

    数据流名称:管理客户信息操作数据流来源:F5、P5数据流去向:P5、F5数据流组成:I01-25+I01-26+I01-27+I01-28+I01-29+I01-30+I01-31+I01-32+I01-33
    数据流编号:D6-01

    数据流名称:用户信息数据流来源:客户数据流去向:P6数据流组成:I01-25+I01-26+I01-27+I01-28+I01-29+I01-30+I01-31+I01-32+I01-33
    数据流编号:D6-02

    数据流名称:管理客户信息操作数据流来源:P6数据流去向:F5数据流组成:I01-25+I01-26+I01-27+I01-28+I01-29+I01-30+I01-31+I01-32+I01-33
    数据流编号:D7-01

    数据流名称:留言信息数据流来源:客户数据流去向:P7数据流组成:I01-42+I01-43+I01-44+I01-45+I01-46
    数据流编号:D7-02

    数据流名称:客户留言信息数据流来源:P7数据流去向:F4数据流组成:I01-42+I01-43+I01-44+I01-45+I01-46
    数据流编号:D8-01

    数据流名称:公告信息数据流来源:P8数据流去向:客户数据流组成:I01-37+I01-38+I01-39+I01-40+I01-41
    数据流编号:D8-02

    数据流名称:公告信息数据流来源:F3数据流去向:P8数据流组成:I01-37+I01-38+I01-39+I01-40+I01-41
    数据流编号:D9-01

    数据流名称:商品信息数据流来源:客户数据流组成:I01-01+I01-02+I01-03+I01-04+I01-05+I01-06+I01-07+I01-08+I01-09
    数据流编号:D9-02

    数据流名称:订单信息数据流来源:P9数据流去向:F2数据流组成:I01-01+I01-02+I01-03+I01-04+I01-05+I01-06+I01-07+I01-08+I01-09
    数据流编号:D10-01

    数据流名称:商品信息数据流来源:P10数据流去向:客户数据流组成:I01-01+I01-02+I01-03+I01-04+I01-05+I01-06+I01-07+I01-08+I01-09
    数据流编号:D10-02

    数据流名称:商品信息数据流来源:F1数据流去向:P10数据流组成:I01-01+I01-02+I01-03+I01-04+I01-05+I01-06+I01-07+I01-08+I01-09

    3.4 本章小结需求分析报告是对系统需求的全面分析,是软件生存周期中最关键的一步,是建立软件开发的基础。经过需求分析要得到系统将要“做什么”,同时理解在做什么的基础上抽取出其“怎么做”的本质。本章首先介绍了电子商务近年来的发展状况,然后具体说明了需求分析的内容,详细描述了数据流图和数据字典的组成,为下一章的总体设计打下基础。
    第4章 总体设计4.1 系统模块总体设计利用层次图来表示系统中各模块之间的关系。层次方框图是用树形结构的一系列多层次的矩形框描绘数据的层次结构。树形结构的顶层是一个单独的矩形框,它代表完整的数据结构,下面的各层矩形框代表各个数据的子集,最底层的各个矩形框代表组成这个数据的实际数据元素(不能再分割的元素)。随着这种结构的精细化,层次方框图对数据结构也描绘得越来越详细,这种模式非常适合于需求分析阶段的需要。从对顶层的信息的分类开始,沿着图中每条路径反复细化,直到确定了数据结构的全部细节为止。
    本系统一共分为前台和后台两大模块,两个模块之间虽然在表面上是相互独立的,但是在对数据库的访问上是紧密相连的,各个模块访问的是同一个数据库,只是所访问的表不同而已。每个模块的功能都是按照在调研中搜集的资料进行编排制作的。依据上述功能分析,系统在两个模块的基础上每一个模块又分为几个模块。
    前台系统功能模块分为:

    商品展台模块:通过新品上架,分页显示特价商品,商品销售排行展示网站的所有商品
    商品查询模块:按商品的类别查询商品的相关信息
    购物车模块:用户添加商品至购物车,查看购物车中的商品,从购物车中移除不满意的商品,清空购物车中的产品,修改所要购买的商品的数量
    收银台模块:用户满意购物车中的产品后进行结账并填写订单信息
    用户维护模块:为用户提供了用户注册、用户登录、用户资料修改以及找回密码的功能
    订单查询模块:用户通过查看订单能够了解到自己的当前订单信息及历史订单记录
    公告浏览模块:用户通过浏览公告信息,能够及时了解到网站最新的各种信息
    留言模块:客户可以进行留言给我们提意见,我们在不断地改进中前进

    4.2 后台系统功能模块分为
    商品管理模块:按类别查看商品,对商品的信息进行维护
    用户管理模块:为了保护用户的信息,此模块与前台用户维护的区别是管理员只能查看用户信息和删除操作
    管理员维护模块:这是对管理员的信息进行维护,可以修改管理员的信息
    订单管理模块:管理员查询订单,查看订单详细信息,删除订单信息,进行订单受理
    公告管理模块:管理员公告浏览,公告信息维护
    留言模块:管理员可以查看客户的留言,对留言进行维护

    系统功能结构图如图4-1所示

    4.2 数据库设计对于一个电子商务网站而言,为了支持较大的访问量带来的数据访问需求,使用桌面型的数据库管理系统是不能满足需要的,而且安全性也没有充分保障。因此,需要使用大型商业化企业级服务用途的数据库管理系统,如SQL Server,Oracle等。本系统采用Microsoft SQL Server 2008 数据库管理系统。
    4.2.1 数据分析对于本系统的数据库的需求而言,由于其主要是用于信息的提供、保存、更新和查询等。因此,需要分析该系统功能所隐含的对数据应用的需求,从而确定数据库的结构。

    用户注册、登录、验证等功能需要对用户信息建立数据表,其中的数据项可能包括用户E_mail、昵称、密码、住址等
    查看商品分类信息和商品详细信息等功能既需要对商品大小类别进行管理,也需要针对每一个商品进行管理,因此至少需要两张数据表
    用户购物后产生的订单需要进行管理,这里也包括订单的基本信息和详细信息等
    订单生成后,在订单处理的过程中,需要出货等,因此可能需要记录订单的发送情况
    需要系统管理员对该系统进行管理,因而需要建立管理员信息数据表,其中的数据项包括管理员ID、密码等
    客户要进行留言,所以必须建立留言表,其中包括留言标题、留言日期等

    这样,至少要创建如下的数据结构和数据项:

    用户信息,包括用户ID,用户名等数据项
    管理员信息,包括管理员ID,密码等数据项
    商品信息,包括商品ID,产品名称、单价、特价等数据项
    商品类别信息,包括电子ID,类别名称等数据项
    订单信息,包括订单ID,用户编号,订货地址等数据项
    订单明细信息,包括订单ID,生活用品ID,订货时间等数据项
    公告信息,包括公告ID,公告名称及内容等数据项
    留言信息,包括留言标题,留言日期,留言内容等

    4.2.2 数据库的详细设计在设计数据库时,应考虑以下事项:

    数据库的用途及该用途将如何影响设计,应创建符合用途的数据库计划
    数据库规范化规则,防止数据库设计中出现错误
    对数据完整性的保护
    数据库和用户权限的安全要求
    应用程序的性能需求,设计数据库时必须利用 Microsoft SQL Server 2005 中能够提高性能的功能。对于性能而言,在数据库大小和硬件配置之间权衡也是很重要的
    数据库维护

    数据库E-R如图4-3所示。

    根据此生活用品网上购物系统的实际情况,本系统的数据库命名为db_wlgw, db_wlgw数据库中共分为8张数据表。
    t_goods(生活用品信息表)
    此表用于记录网站所有生活用品的基本信息,是与商品相关联的商品的类别表。如表4-1所示。



    序号
    名称
    别名
    类型
    长度(字符)




    1
    goods_id
    编号
    Int
    4


    2
    goods_name
    商品名
    varchar
    50


    3
    goods_miaoshu
    商品描述
    varchar
    5000


    4
    goods_pic
    存放商品图片
    varchar
    50


    5
    goods_yanse
    商品颜色
    varchar
    50


    6
    goods_shichangjia
    商品市场价
    int
    4


    7
    goods_tejia
    商品特价
    int
    4


    8
    goods_isnottejia
    普通商品
    varchar
    50


    9
    goods_catelog_id
    商品种类号
    int
    4



    t_catelog(生活用品类别信息表)
    此表用于记录生活用品类别的基本信息,为方便用户查询生活用品和管理员管理生活用品信息而设立。如表4-2所示。



    序号
    名称
    别名
    类型
    长度(字符)




    1
    catelog_id
    种类编号
    Int
    4


    2
    catelog_name
    种类名称
    Varchar
    50


    3
    catelog_miaoshu
    种类描述
    Varchar
    5000



    t_order(订单信息表)
    此表用于记录用户的基本订单信息,使用户方便查看自己的订单信息同时也为管理员出货提供基本订单信息。如表4-3所示。



    序号
    名称
    别名
    类型
    长度(字符)




    1
    order_id
    订单ID
    Int
    4


    2
    order_bianhao
    订单编号
    Varchar
    50


    3
    order_date
    订单生成日期
    varchar
    50


    4
    order_zhuangtai
    订单状态
    varchar
    50


    5
    order_jine
    总的消费金额
    Int
    4


    6
    order_songhuodizhi
    送货地址
    Varchar
    50


    7
    order_fukuangfangshi
    付款方式
    Varchar
    50


    8
    order_user_id
    用户ID
    Int
    4



    t_orderItem(订单明细信息表)
    此表用于记录用户订单的详细信息,为用户提供详细的商品订单信息,同时也为管理员出货提供用户所订的商品的具体信息。如表4-4所示。



    序号
    名称
    别名
    类型
    长度(字符)




    1
    orderItem_id
    订单明细编号
    Int
    4


    2
    order_id
    订单编号
    Int
    4


    3
    goods_id
    商品编号
    Int
    4


    4
    goods_quantity
    购买数量
    Int
    4



    t_user(用户信息表)
    此表用于记录用户的基本信息,是用户购买生活用品的权限基础,为用户维护和管理员管理用户提供信息。如表4-5所示。



    序号
    名称
    别名
    类型
    长度(字符)




    1
    user_id
    用户ID
    Int
    4


    2
    user_name
    用户名
    Varchar
    50


    3
    user_pw
    用户密码
    Varchar
    50


    4
    user_realname
    真实姓名
    Varchar
    50


    5
    user_address
    住址
    Varchar
    50


    6
    user_sex
    性别
    Varchar
    50


    7
    user_tel
    联系电话
    Varchar
    50


    8
    user_email
    用户邮箱
    Varchar
    50


    9
    user_qq
    用户QQ
    Varchar
    50



    t_admin(管理员信息表)
    此表用于记录不同权限管理员的基本信息,可以管理系统的所有信息。如表4-6所示。



    序号
    名称
    别名
    类型
    长度(字符)




    1
    userId
    管理员ID
    int
    4


    2
    userName
    管理员名称
    Varchar
    50


    3
    userPw
    管理员密码
    Varchar
    50



    t_gonggao(公告信息表)
    此表用于记录公告的基本信息,为用户提供系统网站的最新信息。如表4-7所示。



    序号
    名称
    别名
    类型
    长度(字符)




    1
    gonggao_id
    公告编号
    Int
    4


    2
    gonggao_title
    公告标题
    Varchar
    50


    3
    gonggao_content
    公告内容
    Varchar
    5000


    4
    gonggao_data
    公告创建时间
    Varchar
    50


    5
    gonggao_fabuzhe
    发布人
    Varchar
    50



    t_liuyan(留言信息表)
    此表用于记录客户的留言信息,以及对商品的建议等。如表4-8所示。



    序号
    名称
    别名
    类型
    长度(字符)




    1
    liuyan_id
    留言id
    Int
    4


    2
    liuyan_title
    留言标题
    Varchar
    50


    3
    liuyan_content
    留言内容
    Varchar
    5000


    4
    liuyan_date
    留言时间
    Varchar
    50


    5
    liuyan_user
    留言客户
    Varchar
    50



    4.3 本章小结本章介绍了对本系统的总体设计,给出了网上手机销售系统的功能结构图、E-R图等,说明了各子系统的之间的联系。本章完成了系统数据库的数据需求分析的过程,说明了数据库由概念结构设计转换成逻辑结构设计的过程,并把各个物理数据模型结合起来形成了一个整体的关系数据库模型,为系统详细设计作好了充足的准备工作。
    第5章 详细设计与实现5.1 系统运行平台设置本系统的运行平台设置分为硬件环境和软件环境。
    5.2 运行环境系统的软件环境配置为:

    Windows 7操作系统
    SQL Server 2008数据库
    JDK1.8
    Eclipse neon开发工具包
    Tomcat8.5服务器

    5.3 开发工具及技术简介以下内容是对本系统所采用的开发工具和技术进行的简单介绍。
    5.3.1 开发工具简介Eclipse是著名的跨平台的自由集成开发环境(IDE)。最初主要用来Java语言开发,但是目前亦有人通过插件使其作为C++、Python、PHP等其他语言的开发工具。
    Eclipse的本身只是一个框架平台,但是众多插件的支持,使得Eclipse拥有较佳的灵活性。许多软件开发商以Eclipse为框架开发自己的IDE。
    Eclipse的历史
    Eclipse最初是由IBM公司开发的替代商业软件Visual Age for Java的下一代IDE开发环境,2001年11月贡献给开源社区,现在它由非营利软件供应商联盟Eclipse基金会(Eclipse Foundation)管理。 2003年,Eclipse 3.0选择OSGi服务平台规范为运行时架构。 2007年6月,稳定版3.3发布;2008年6月发布代号为Ganymede的3.4版;2009年6月发布代号为Galileo的3.5版;2010年6月发布代号为Helios的3.6版
    Eclipse的架构
    Eclipse的基础是富客户机平台(Rich Client Platform,即RCP)。RCP包括下列组件:

    核心平台(启动Eclipse,运行插件)
    OSGi(标准集束框架)
    SWT(可移植构件工具包)
    JFace(文件缓冲,文本处理,文本编辑器)
    Eclipse工作台(即Workbench ,包含视图(views)、编辑器(editors)、视
    角(perspectives)、和向导(wizards))

    Eclipse采用的技术是IBM公司开发的(SWT),这是一种基于Java的窗口组件,类似Java本身提供的AWT和Swing窗口组件;不过IBM声称SWT比其他Java窗口组件更有效率。Eclipse的用户界面还使用了GUI中间层JFace,从而简化了基于SWT的应用程序的构建。
    Eclipse的插件机制是轻型软件组件化架构。在富客户机平台上,Eclipse使用插件来提供所有的附加功能,例如支持Java以外的其他语言。 已有的分离的插件已经能够支持C/C++(CDT)、PHP、Perl、Ruby,Python、telnet和数据库开发。插件架构能够支持将任意的扩展加入到现有环境中,例如配置管理,而决不仅仅限于支持各种编程语言。
    Eclipse的设计思想是:一切皆插件。Eclipse核心很小,其它所有功能都以插件的形式附加于Eclipse核心之上。Eclipse基本内核包括:图形API (SWT/Jface), Java开发环境插件(JDT),插件开发环境(PDE)等。SQL Server 2008是一个重大的产品版本,它推出了许多新的特性和关键的改进,使得它成为至今为止的最强大和最全面的SQL Server版本。这篇文章详细介绍了Microsoft SQL Server 2008中的新的特性、优点和功能…… 微软的这个数据平台满足这些数据爆炸和下一代数据驱动应用程序的需求,支持数据平台愿景:关键任务企业数据平台、动态开发、关系数据和商业智能。许多因素致使产生了信息存储爆炸。有了新的信息类型,例如图片和视频的数字化,和从RFID标签获得的传感器信息,公司的数字信息的数量在急剧增长。遵守规范和全球化的发展要求信息存储的安全性和在任何时候都可用。
    5.3.2 技术简介本系统采用MVC框架,MVC(Model-View-Controller)是一种设计 模式,它强制性地把应用程序的输入、处理和输出分开。MVC把应用程序分成3个核心:模型层、视图层和控制层,它们分别担负不同的任务。其中视图层向用户显示相关的数据,并能接受用户的输入数据,但是它并不进行任何实际的业务处理。模型层表示业务数据和业务逻辑。控制层接收用户输入并调用模型和视图去完成用户的需求。
    本系统需要用到的Java相关技术有jsp技术、servlet技术、jdbc技术、SSH框架。其中,关键的技术难点在于Struts技术的运用。Struts技术是基于MVC的Web应用框架。在Struts框架中,模型层由实现业务逻辑的JavaBean组件构成,控制层由ActionServlet和Action来实现,视图层由一组JSP文件构成。
    5.4 系统首页设计本系统网站的主界面设计结构采用了三层布局结构,第一层部分为本网上手机销售系统的导航栏部分,其用途为展示本网上手机销售系统的前台基本功能,第二层从左到右依次是用户登录界面,还可通过注册按钮达到新用户注册功能,中间是一个轮播界面,用来展示近期系统内部的一些优惠活动,右边是排行榜,通过客户购物情况进行统计反馈,展示出近期热卖的商品。最下一层用于以手机品牌分类的模式展示手机信息,网站公告用于简介最近活动及相关维护消息,中间是特价商品及其价格的展示,右侧为刚刚上线的商品。
    右侧为界面设计如图5-1所示。

    5.5 系统前台基本功能设计与实现本节对系统前台主要功能设计进行详细的说明。
    5.5.1 用户维护模块设计与实现由于网上购物必须保证用户的正确性、购物的安全性,需要对用户资料进行有效的管理,因此用户管理是电子商务网站的重要内容。它主要包括用户注册、登录和验证、用户注册资料的修改更新和用户注销等功能。
    注册用户单击注册后需要输入密码和确认密码、用户真实姓名、住址、性别、E_mail、QQ。用户只须填写一个Web表单。这里需要用户通过E_mail注册是考虑到两点:第一,用户的E_mail是惟一的;第二,通过用户的E_mail可以很方便快捷的与用户取得联系。用户在提交注册信息后,系统会对注册页面填写的正确性进行检查。对于不符合要求的填写会给出必要的提示,并返回修改;对于符合要求的注册表单,用户提交信息后也要返回相应的欢迎信息,用户提交的正确注册信息将被存入系统的数据库中。
    界面的设计如图5-2所示。


    所属页面名:userReg.jsp
    表单属性:name=”form1” action=”<%=path%>/userReg.action” method=”post”

    页面设计如表5-2所示。



    名称
    类型
    含义




    userName
    Text
    输入用户名称


    password
    Password
    输入密码


    passwordOne
    Password
    输入确认密码


    userRealname
    Text
    输入真实姓名


    userAddress
    Text
    输入住址


    userSex
    radio
    选择性别


    userTel
    Text
    输入联系方式


    E-mail
    Text
    输入E-mail地址


    确定
    Button
    提交用户信息


    取消
    Button
    取消注册



    登录和验证当用户输入用户名和密码后首先要进行身份验证,如果用户存在,则成功登录,反之,如果用户不存在,提示错误信息“输入的用户名或密码不存在,请注册”,返回登录界面重新输入用户名和密码。用户登录的程序流程图如图5-3所示。

    对于本系统的购物过程而言,在用户浏览商品时,可以不进行登录,只有在使用购物车时,才需要登录,以完成整个购物过程。用户登录用于验证用户的用户名和密码,然后决定顾客进入系统进行操作,如进行用户修改的操作,购物车和结帐的操作等。
    界面的设计如图5-4所示。


    所属页面名:index.jsp
    页面设计如表5-3所示。



    名称
    类型
    含义




    userName
    Text
    输入用户名


    password
    Password
    输入密码


    注册
    button
    注册新用户


    登录
    button
    登录网站



    用户修改和注销已注册的用户只要登录本系统后便可以通过单击用户修改按钮进行用户修改操作,在此页面中用户可以更改自己的帐户和详细信息,如可以修改密码、修改Email地址等个人信息。通过点击提交按钮完成修改操作。
    界面的设计如图5-5所示。

    为了保证用户购物的安全性,系统提供了不关闭浏览器而退出商品网上购物系统的功能,注销功能是清除用户在使用或登录系统期间的所有Session信息。

    所属页面名:userXinxi.jsp
    表单属性:action=”<%=path%>/userEdit.action” name=”form1” method=”post”

    页面设计如表5-4所示。



    名称
    类型
    含义




    userName
    Text
    输入用户名称


    续表5-4




    password
    Password
    输入密码


    passwordOne
    Password
    输入确认密码


    userRealname
    Text
    输入真实姓名


    userAddress
    Text
    输入住址


    userSex
    radio
    选择性别


    名称
    类型
    含义


    userTel
    Text
    输入联系方式


    E-mail
    Text
    输入E-mail地址


    确定
    Button
    提交用户信息


    取消
    Button
    取消注册



    5.5.2 生活用品展示模块设计与实现为了方便顾客选购商品,本系统采用了两种展示产品的方式。一种是以类别查询为基础查看商品,另外一种是新品上架、特价产品和销售排行的展台。以销售排行查看生活用品为例,顾客在首页的的销售排行即可查看销售排行,方便顾客查看畅销的生活用品相关信息及详细信息。界面的设计如图5-6所示。


    所属页面名:index.jsp
    通过查询t_orderItem表中按销售额字段goods_quantity降序排列实现。
    5.5.3 购物车模块的设计与实现用户选购商品后添加到购物车中,在购物车中进行查看,同时对不满意的产品可以进行移除,对要购买的产品可以调整数量,移除产品和清空产品。用户决定购买产品后可以去收银台进行结账。
    购物车流程图如图5-7所示。

    用户购买产品的核心功能是购物车和订单提交。购物车模块的设计包括:顾客添加商品到购物车和顾客对购物车的管理,如更新购买的商品数量、清空购物车和将购物车中商品从购物车中移除等。购物车要具有持续性,而且不限制用户购买商品的数量,也就是购物车可以显示很多商品。界面的设计如图5-8所示。

    所属页面名:myCart.jsp
    页面设计如表5-8所示。

    5.5.4 收银台模块的设计与实现用户选择完商品后,需要确认购物车中内容,即结帐,点击下一步,此时页面跳转到结账页面。在结帐页面,需要用户填写联系地址、联系电话、付款方式和送货方式和备注信息,以便生成订单。当完成一次交易所需要的用户方面的信息都已齐全,只须生成订单即可进入配送过程。如果用户所填写的订单信息正确,系统会返回给用户此次交易所产生的订单号码。
    界面的设计如图5-9所示。


    所属页面名:orderQuren.jsp
    表单属性:action=”<%=path%>/orderSubmit.action” name=”f” method=”post”

    页面设计如表5-5所示。



    名称
    类型
    含义




    userName
    Text
    收货人账号


    续表5-5




    userRealname
    Text
    收货人姓名


    userTel
    Text
    收货人联系电话


    userAddress
    Text
    收货人地址


    odderSonghuodizhi
    Text
    送货住址



    5.5.5 查看订单模块的设计与实现用户填写完订单并提交成功后可以通过查看订单按钮看到自己的订单及详细信息。
    界面的设计如图5-10所示。


    所属页面名:myOrder.jsp
    5.5.6 公告浏览模块的设计与实现吸引顾客有很多种宣传措施,本系统采用公告的方式进行宣传。利用类似流动看板的方式显示公告信息。在顾客点击某一条公告信息时,系统可以自动弹出一个页面显示具体的公告信息。界面的设计如图5-11所示。


    所属页面名:gonggaoDetailQian.jsp
    首先使用gonggaoDAO中的save方法,将公告信息添加到数据库中,在用户点击页面中的公告后,通过gonggaoDAO下的findAll方法,将其调出,显示到页面中。
    5.5.7 客户留言模块的设计与实现为了能够了解客户对我们的商品的满意程度,我们设计了留言模块,让用户能够在第一时间将问题反映给我们,以便我们及时改进。
    界面的设计如图5-12所示。


    所属页面名:liuyanAll.jsp
    首先通过判断session中的userName是否为空,如果为空,则只能先登录才能进行留言。如果不为空,则留言人中显示userName,使用获取系统时将来给留言时间赋值。客户在输入标题和内容后,将其存储到数据库中,在客户查看时再将其调出。
    5.6 系统后台管理功能设计与实现本节对系统后台功能设计进行详细的说明。
    5.6.1 基本信息管理设计与实现该功能主要分布在管理员信息、用户信息、商品类别信息,订单信息,公告信息和留言信息的处理。对这些信息操作的主要功能详细设计包括对它们的添加、删除、更新和查询等操作,需要分别在基本信息中的每一个页面中设计这些功能。当对这些基本信息进行添加、删除和更新操作时,需要将这些操作所执行的结果返回到本系统的数据库中,并能够在相应的页面中刷新显示新的结果集。需要用SQL语句将这些信息添加到数据库中。模块的输出是操作信息成功的提示信息。对于在某一页面中的查询功能,此页面要能够刷新显示出此查询结果信息。以客户信息管理理为例。界面的设计如图5-13所示。


    所属页面名:userMana.jsp
    客户管理主要是使用userDAO中下的findById和findAll方法来删除和获取数据库中的数据。进入客户管理界面时通过findAll方法来显示所有用户的信息,点击删除时,通过findById方法获取指定的用户ID,使用sql语句进行操作。
    5.6.2 订单信息管理设计与实现该模块是针对用户订单信息和订单明细信息的管理功能进行的详细设计,主要是对用户订单信息和订单明细信息的查看、删除和受理订单的操作。管理员应该可以查看系统中已处理的订单和未经处理的订单信息,用户订单信息和订单明细信息在不同的页面显示。界面的设计如图5-14所示。


    所属页面名:orderMana.jsp
    订单管理模块使用了buyAction中的方法,当用户提交订单时,订单状态默认为未受理。管理员查看订单时调用了orderMana()方法将订单显示到页面中,点击删除时调用orderDelByAd()方法将通过订单的ID对指定的订单进行那个删除操作,点击受理订单时调用orderShouli()方法将订单状态改为已受理。管理员查看订单明细时通过 orderDetail()方法通过订单ID将指定的订单明细显示到页面中。
    5.6.3 生活用品信息管理设计与实现在商品管理模块中除了基本的信息管理功能外,为了方便顾客浏览到商品的真实外貌,在添加商品模块中增加上传商品图片的功能。
    管理员在商品添加页面中输入添加的商品基本信息,点击提交后进入上传图片页面。在商品信息管理中,我将商品分为特价和非特价商品来管理。此页面中能够显示出已输入的特价商品基本信息,在上传图片位置上添加文件后点击提交,提交成功后有提示信息弹出。在管理员查看商品信息时,将鼠标放到查看图片上就可以查看图片。
    界面的设计如图5-15所示。


    所属页面名:goodsManaYesTejia.jsp
    本模块主要是对商品表进行管理,所以就是一些查询和删除操作,我在做的时候,主要讲商品分为特价和非特价商品,在管理时也是分开管理,主要通过判断goodsIsnottejia来区分是否为特价商品。
    5.6.4 公告信息管理设计与实现在各大热门网站上都有公共的出现,该模块的建立也是为了通过实现发布公告,给顾客提供方便的操作,让客户能够及时的了解商城的活动情况。界面的设计如图5-16所示。


    所属页面名:gonggaoMana.jsp
    在gonggaoAction中,调用gonggaoAdd方法进行添加操作,使管理员能添加一个新公告,管理员查看时则调用了gonggaoMana()方法,来显示所有的公告信息,要进行删除操作就会调用gonggaoDel()方法进行删除。
    5.6.5 留言信息管理设计与实现客户对商城的商品有任何意见,都可以在留言模块中进行留言,方便管理员查看,商城会及时处理问题。
    界面的设计如图5-17所示。


    所属页面名:liuyanMana.jsp
    留言功能,主要先依靠liuyanDAO.findAll方法来获取所有留言,然后调用liuyanMana来显示,管理员的添加操作是调用liuyanAdd方法实现的,留言的时间定义是用获取系统时间的方法来定义的。删除留言时则调用liuyanDel方法来实现。
    5.7 本章小结本章进行了此系统的详细设计的介绍,我们可以对本系统的设计有了一个细致全面的了解。前台模块详细介绍了用户维护、销售排行、购物车、结账、查看订单、留言模块和公告浏览模块的设计和实现的过程,同时后台模块介绍了客户信息管理、订单管理、商品信息管理、公告管理和留言管理的设计和实现的过程。本系统详细设计的原则是采用结构化的设计方法,改善控制结构,降低程序的复杂程度,从而提高程序的可读性、可测试性和可维护性。
    第6章 系统测试与性能分析6.1 软件测试经过需求分析、设计和编码等阶段的开发后,得到了源程序,开始进入到软件测试阶段。然而,在测试之前的各阶段中都可能在软件产品中遗留下许多错误和缺陷,如果不及时找出这些错误和缺陷,并将其改正,这个软件产品就不能正常使用,甚至会导致巨大的损失。目前,程序的正确性证明尚未得到根本的解决,因此软件测试仍是发现软件中错误和缺陷的主要手段。
    系统整体测试步骤:

    单元测试:单元测试是整体测试中的第一步,通常在编码阶段进行。在源程序代码经过编译、评审、确认没有语法错误之后,便可开始进行单元测试
    集成测试:集成测试在单元测试完成之后,将所有的模块概要设计要求组装成系统时进行的测试,主要目标是发现与接口有关的问题
    确认测试:经过集成测试之后,接口错误已经发现被发现并改正了,接下便要进行确认测试。所谓确认测试就是验证所开发软件的功能性及其他特性是否符合软件需求规格说明书的要求。所以,确认测试又被称为有效性测试
    系统测试:系统测试是更大范围内进行测试,它将经过确认测试的软件作为整个基于计算机的系统的一个元素,在实际运行环境下,对系统进行的一系列集成和确认测试

    6.2 本系统测试为了测试系统的正确性和完整性,本节将对系统中重点模块的测试进行介绍。
    6.2.1 前台首页的测试
    查询模块的测试:首先在主页中的查询产品中的文本框中输入要查询的商品关键字,在中间显示菜单中查询到商品,则说明查找成功。通过对系统的反复大量的测试,该模块测试成功
    商品分类浏览模块的测试:测试过程是单击页面左边的商品类别,选中某一类别后,就可以在页面右边显示该类别下的所有商品。通过对该功能的重复大量测试,该模块能够准确地实现此项功能

    6.2.2 购物车模块的测试在本模块中首先对修改数量单元进行了测试,所修改的数量如果是有效数字,则修改所购生活用品数量成功,否则修改失败,系统自动将商品数量重置为“1”。通过随机测试了几组数据,其修改的数量和累计的金额均正确。如果客户购买了同一个商品,则就会进行该商品购买数量的累加,不会重复出现。
    针对购物车应该不限制顾客购买手机的数量这一原则进行测试,通过大量向购物车中添加生活用品来进行测试,测试结果为购物车中可以显示所添加的所有手机信息,测试结果取得了预期的效果。
    6.2.3 用户注册模块的测试在用户注册模块中涉及到了三项数据,项目分别为密码和确认密码、用户真实姓名、住址、性别、E_mail、QQ。测试这个模块准备的数据有:

    123、123、Jamie、山西省太原市、女、1234567、sang@qq.com、12345
    sa、123、12、张三、哈尔滨道外区、男、1234567、sang @123.com、12345
    be、123、123、李四、哈尔滨香坊区、男、1234567、sang @123.com、12345


    首先进入注册页面,输入第一组数据,单击注册按钮系统会提示表单信息不能为空,因为表单信息要全部填写,而用户名没有写值。然后测试第二组数据,可以明显看出所输入的密码与确认密码是不一致的。然后测试第四组数据,其中九项均是系统正确的数据,因此测试通过。在填写用户名时,用户可以查看自己的用户名是否可以使用。
    6.2.4 商品管理模块的测试添加功能的测试
    对手机添加模块准备的手机品牌、手机名称、手机描述、手机图片、市场价格、库存,分别准备的测试数据为:锤子手机、T1、骁龙801四核处理器。
    存储方面采用了2GB RAM+16GB ROM的解决方案,此外还将提供32GB版本摄像头方面采用了有效像素为1278万索尼堆栈式镜头,运行Smartisan OS 1.0系统、2000、100。其中品牌的选择是通过下拉列表框来选择,图片单击上传图片后,找到图片的地址点击确定就可以上传,单击添加按钮,执行添加操作,数据提交后,就完成了手机的添加。之后,进行了几项测试,如漏填了几项数据、上传图片格式不正确,这些数据的操作结果都是失败。

    删除功能的测试
    以编号为4的这条记录为例,通过单击该条记录上的“删除”链接按钮,对生活用品信息进行删除的操作,数据提交后,系统提示“删除商品信息成功”,通过对该模块的浏览,该信息的确已被删除,查无此条记录,说明此模块运行无误,信息删除成功。如果是删除商品类别,假如该类别下还有商品,则会提示不能删除,如果类别下没有商品,则可以进行删除。

    查询功能的测试
    本系统中的查询功能都是通过点击链接实现的。将生活用品管理的编码进行了测试,输入管理员的密码登录后台后点击生活用品设置就可以直接看到查询出的生活用品信息。点击查看产品图片后查询出了手机信息是否上传了图片,系统没有出现错误,查询成功。

    6.1 本章小结软件测试是软件开发中的重中之重,在项目管理过程中,强调的是每个过程的每一个环节都要进行测试,保证系统在每个阶段可以控制。本章着重对前台首页、购物车模块、用户注册模块和商品管理模块进行了详细的测试说明。通过反复大量的测试,每个模块均测试成功。
    参考文献[1] 汪建文.我国零售企业的商务电子化应用商场现代化.2008.(04):56-60
    [2] 胡燕.软件工程与标准化.信息技术与标准化.2004.(12):17-21
    [3] 盛仲飙.JSP中数据库访问的性能优化研究.微型电脑应用.2008,(9):16-17
    [4] 董纪阳.软件设计中的需求分析.电脑知识与技术.2008.(28):56-57
    [5] 林华灵.基于Strut框架技术的Web应用.中国新技术新产品.2008,(14):9-11
    [6] 何玉洁.数据库原理与应用教程.机械工业出版社.2003:23-78
    [7] 杨文红,赵德平,刘柯剑.基于MVC模式Struts框架研究与应用.硅谷.2008.(20):45-46
    [8] 赵蕾,程明定,刘琳.J2EE模型中Struts框架技术的研究和应用.中国博览.2004.(12):25-26
    [9] 桃子.生活用品市场前瞻.微型计算机.2007.(13):89-90
    [10] 周建儒.JSP中自定义标签的实现与部署.科技信息(科学教研).2008.(23):51-53
    [11] Mcleod.Management Information system management in practice.Prentice Hall.1998:43-55
    [12] Raghu Ramakrishnan.Johannes Gehrke.Database Management System.McGraw-Hill Professional. 2007:180-213
    [13] Cassidy A.Information systems strategic planning.Bocaraton.Flrida.St.Luicepress.1998:12-31
    [14] Dionysios Tsichritzis C.Data Base Management Systems.1977:150-53
    [15] hristopher P.Ben light.A critical success factors model for eprimplement.IEEE software.1999:16-30
    0 评论 1 下载 2020-08-08 09:50:49 下载需要13点积分
  • 基于Java的人事档案管理系统

    摘 要随着信息技术的迅速发展,信息资源数字化、网络化的进程进一步加快,档案管理的信息化建设已经成一个备受关注的热点。企业、学校、政府单位等都需要对档案进行信息化管理,来适应当今社会的信息化、网络化发展趋势。档案管理信息化、建设利用数字化、信息存储等技术,将传统纸质文书档案、科技档案、人事档案等转换成数字档案,建立档案目录数据库,通过计算机网络设备的传输,实现信息资源的共享,以期获得最佳的工作效率。电子档案管理系统,是指把当前的档案信息录入电脑,在电脑中构建档案数据库,并把各种档案信息在电脑页面中显示,以方便用户和管理者的查询,实现对档案资源的科学、规范和有效的管理,为管理者提供高效率的档案利用服务。
    在设计中,我们通过分工完成各模块,将其整合,完成该次的课程设计,本次课程设计利用Eclipse平台修改程序,利用java的面向对象的特点,更好的来实现认识档案管理系统。
    关键词:员工管理;企业管理;HR人事;java
    一、开发背景目前,计算机信息技术已经深入到我们生活和工作的方方面面,信息化也成为当前的一个趋势。在企业单位中,档案管理时一项重要的部分。传统的档案管理,操作复杂,流程转换多,查询困难,使用计算机信息技术,可以有效的改善这些问题。档案管理系统的信息化改造,可以简化工作流程,提高工作的效率和准确率,方便和提高档案的管理的查询工作,所以做好本次的开发设计工作具有重要意义。
    二、需求分析本程序是一个小型的人事档案管理系统,主要应用于企业,以使他们能对档案进行简便的管理。程序能方便的管理用户、部门、档案和档案库,包括添加、删除、修改、查询、统计等。
    本程序用的是java开发语言,调试相对简单,当前的计算机硬件配置也完全能满足开发的需求,因此在技术上是绝对可行的。
    三、模块说明3.1 管理者模块
    功能描述:此模块的主要功能是设置管理者登录。管理者通过正确的账号和密码登录系统,查询、统计、打卡、调动等相关功能在此模板上编写
    输入:管理者账号和密码
    输出:系统菜单

    3.2 员工模块
    功能描述:此模板的主要作用是定义公司的人员属性和方法
    输入:员工姓名或编号
    输出:员工信息

    3.3 接口模块
    功能描述:定义相关功能,并在HR类中实现
    输入:各功能对应的数字
    输出:对应功能界面

    3.4 实现系统模板
    功能描述:管理者的登录、系统目录等在该模板上实现
    四、详细设计4.1 管理者类
    类名:HR
    实现接口:

    查询staffSearch打卡staffAdd调动staffChange统计 staffTotal,显示staffShow考查staffExam
    概述:设置管理者的登录账号和密码,编写系统的相关功能
    管理员属性:
    registerNO = // 管理员登陆账号registerSecre // 管理员登陆密码

    4.2 成员类
    类名:Employee
    概述:Employee类是一个抽象类,科研类和销售类需继承本类相关属性和方法
    属性及说明:
    staffNO; // 员工编号staffName; //员工姓名staffSex; // 员工性别staffStatus; // 员工政治面貌staffEduBackground; //员工学历背景staffTel; // 员工电话staffAddress; //员工家庭住址attendenceNum; //出勤次数monthSalary; // 月工资workingTime; // 在职时间
    方法及说明:
    public Employee(String staffNO, String staffName, String staffSex, String staffStatus, String staffEduBackground, String staffTel, String staffAddress, int attendenceNum, int monthSalary, int workingTime);public Employee() { super();} //带参的构造方法Employee

    4.3 科研类
    类名:Scientific
    继承父类:Employee类
    概述:科研类继承成员类的相关属性和方法,并增添特有属性和方法
    属性及说明: duty_Scientific //科研部门职位
    方法及说明:
    public Scientific(String staffNO, String staffName, String staffSex, String staffStatus, String staffEduBackground, String staffTel, String staffAddress, int attendenceNum, int monthSalary, int workingTime, String duty_Scientific);public Scientific() { super();} //带参的构造方法Scientific

    4.4 销售类
    类名:Salesman
    继承父类:Employee类
    概述:销售类继承成员类的相关属性和方法,并增添特有属性和方法
    属性及说明:duty_Salesman //销售部门职位
    方法及说明:
    public Salesman(String staffNO, String staffName, String staffSex, String staffStatus, String staffEduBackground, String staffTel, String staffAddress, int attendenceNum, int monthSalary, int workingTime, String duty_Salesman);public Salesman() { super();} //带参的构造方法Salesman

    4.5 调试类
    类名:Text
    概述:管理者登录、系统功能的实现、程序的运行在此类中进行
    方法及说明:
    public static void main(String[] args) {}

    五、系统实现5.1 管理员登陆主界面
    5.2 查询模块
    5.3 统计模块
    5.4 显示模块
    5.5 统计模块
    5.6 职位调动模块
    总 结通过这次课程设计,我们充分的运用到我们所学的知识,实践到我们所敲的代码之中,设计程序的初衷就是能够通过这么一个简短的时间完成一个作为入门小白的程序员的一个结果。在程序设计的过程中,我们能够将面向对象的几大特性包含在其中,数据的封装,类与类之间的继承关系,接口的多继承与重写,以及通过对象数组实现多态的上下转换。
    参考文献[1] 杨雪. Java面向对象语言的教学探讨[J].家教世界, 2012(6):52-53.
    [2] 黄胜宇. Java面向对象编程的教学思路[J].科技资讯, 2010(17):203-203.
    [3] Dennis Kafura. Java面向对象程序设计教程[M]//JAVA面向对象程序设计教程. 2003.
    [4] 邝砾,于美琪,冯文韬,等.基于层次考核的计算机类课程考试改革研究——以Java面向对象程序设计课程为例[J].计算机教育, 2017(1):62-66.
    [5] 杨晓燕.基于应用的Java面向对象程序设计课程研究与教材建设[J].计算机教育, 2012(3):42-45.
    [6] 黄俊爽,李聪,李相俭,等.浅谈Java面向对象程序设计[J].科技信息, 2010(13):47-47.
    [7] DavidM.Arnow.Java面向对象程序设计:第2版[M]Java面向对象程序设计: 第2版.2004
    [8] 李发致. Java面向对象程序设计教程[M]. 清华大学出版社, 2004.
    [9] Kafura D . JAVA面向对象程序设计教程[M]. 机械工业出版社, 2003.
    [10] DennisKafura. Java面向对象程序设计教程[M]. 机械工业出版社, 2003.
    0 评论 1 下载 2020-08-08 09:50:29 下载需要9点积分
  • 基于WEB的网上购物系统的设计与实现

    摘 要随着计算机网络技术的飞速发展和人们生活节奏的不断加快,电子商务技术已经逐渐融入了人们的日常生活当中,网上商城作为电子商务最普遍的一种形式,已被大众逐渐接受。因此开发一个网上商城系统,适合当今形势,更加方便人们在线购物。
    本网上商城系统以MVC分层思想为原则,使用SSH框架进行整合开发。页面显示使用JSP和HTML,数据库使用MySQL,这些技术目前相对比较成熟,方便系统的维护与扩展。网上商城系统前台包括了用户注册、用户登录、商品查询、商品添加到购物车、删除商品等几大功能;后台管理功能则包括商品的修改、添加、删除、用户管理和订单管理等主要功能。本系统具有操作简单、页面友善、灵活性好、运行稳定等特点。
    与其他使用ASP,PHP语言编写的网上商城系统相比,本系统使用的JSP语言更加方便快捷,开发更加效率。使用SSH框架和JSP相结合的方式,大大降低了系统的耦合度,增强了系统的可维护性、可移植性。本系统使用了数据库连接池技术,有效的防止了因连接数过大而引起系统崩溃局面的发生,并且使用了基于Annotation注解的方式进行开发,使网上商城系统的数据访问更加的快捷。
    关键词:网上购物;MVC;SSH;MySQL
    AbstractWith rapid development of computer network technology and theaccelerating of people lives rhythm,the electronic commerce technology has been gradually into people’s daily life, as the most common form of the e-commerce,online shopping is easy to accept by public. Therefore to develop an online store system for today’s situation,and more convenient for people to shop online.
    This system of online shopping to MVC hierarchical thought principle,using the SSH framework for integrated development.The front display using JSP and HTML page, background database using MySQL,the technology is relatively mature,the system is convenient to maintenance and expansion.Online shopping mall in front of the system including the user registration,user login,commodity information,add commodity to cart, delete commodities,user messages and other major function;the backstage management function includes commodity modification,add,delete,user management,order management and other functions.;The backstage management function includes commodity modification, add,delete,user management,order management and other functions.This system has the advantages of simple operation,friendly interface,good flexibility,the characteristics of stable operation.
    Compared with other online shop to use ASP, PHP language system, the system uses the JSP language more convenient, develop more efficiency.SSH framework and JSP combination of greatly reduced the degree of coupling of the system,and enhance the system’s maintainability,portability.This system uses a database connection pool technique is effective to prevent the occurrence of the number of connections is too large to cause a system crash situation, and use the Annotation annotation-based development, online store system data access is fast.
    Key words:Online Store; MVC; SSH; MySQL
    1 绪论1.1 系统开发背景随着网络对人们生活和工作的影响日益增加,人们对网络的依赖是越来越强烈,不论是个人还是企业,都可以通过网络渠道来进行商品信息交流和买卖流通。网上商城由此产生,慢慢进入了人们的视线当中,越来越多的商家在网上建起在线商城,向消费者提供一种新型的购物方式。网上商城的出现,使消费者网上购物的过程变得简单、方便、快捷。网上商城是一种具有交互功能的商业信息系统,它在网络上建立一个虚拟的购物商城,使购物变得快捷又轻松,因此网上商城近年来发展的异常迅速,网上商城对人们生活的影响也会越来越大。
    不可否认,网上商城将是企业发展和个人生活所不可缺少的重要组成部分,而且在网上商城购物会成为广大群众所能接受的最主要消费方式。
    1.2 开发意义从系统的开发背景来看,开发一个网上商城系统会有以下几项优势:

    投资少,回收快:一项针对中国中小企业的情况调查显示,个人在网下启动销售公司需要大量的资金,而网上商城的成本非常小。在网上筹办一家商店投资费用很小,不用去租店面,不用囤积货品,所需资金不会很多。网上商城比同等规模的门面商铺“租金”要低得多,同时租金不会因为营业面积的增加而增加,商家也不用为延长营业时间而增付额外的费用
    基本不需要占压资金:传统商店的进货资金少则几千元,多则数万元,而网上商城则不需要积压太多的资金
    24小时营业:网上商城延长了传统商店的营业时间,一天24小时、一年365天不停业经营,而且不需要很多专门人员值班
    不受店面空间的限制:哪怕只是街边小店,在网上却可以拥有百货大楼那么大的店面,只要投资者愿意,可以摆上成千上万种商品
    不受地理位置影响:不管客户距离网上商城有多远,也不管顾客是国内还是国外,只要客户可以上网,在网上商城就可以很方便地找到并购买商品

    1.3 国内外现状在美国、欧洲等信息化程度较高的国家,网上商城发展迅速,世界一流零售商,如沃尔玛、梅西百货、家得宝和萨克斯等纷纷跻身于网络销售行列。而在美国的家庭中,人们已经越来越习惯网上购物。网上购物已经成为美国、英国、日本等发达国家的一种消费习惯。
    在我国,网上购物从无到有也不过十几年时间。而在最近几年时间,网上购物变得火热起来,网上购物迅速成为一种购物时尚。目前国内比较大型的网上购物商城如淘宝、京东、唯品会等,发展都是非常迅速,而随着国内计算机信息技术发展,网上购物会更加快速的发展起来,为消费者和商家都提供更加广阔的销售平台。因此,开发一个网上商城系统非常符合当今社会的发展趋势。
    1.4 本系统设计的内容本设计主要通过对现在网上商城发展形势进行分析,对开发工具进行简介,对系统的可行性进行分析、系统需求分析,然后进行系统的总体设计,设计数据库中表的关系和表结构,最后完成系统的总体实现,并对系统进行测试,从而完成整个系统。
    1.5 设计的步骤
    第一章:绪论,主要介绍系统的开发背景、研究意义、国内外现状及设计的内容
    第二章:开发技术,主要介绍了开发系统使用的技术及使用的工具
    第三章:系统分析,主要包括系统的可行性分析,系统的需求分析
    第四章:系统设计,主要对系统功能模块、工作流程和各模块设计进行介绍
    第五章:数据库设计,主要介绍系统所需的数据表信息及表之间联系
    第六章:系统实现,主要介绍了各个模块的实现及关键代码
    第七章:系统测试,对系统进行压力测试,获得测试结果

    2 系统开发技术2.1 动态网页技术JSPJSP(Java Server Pages)是由Sun Microsystems公司(已经被Oracle收购)倡导、许多公司参与建立的一种动态网页技术标准。它在传统的网页HTML文件中插入Java程序段和JSP标记,从而形成JSP文件。JSP技术相比其他技术有以下优势:

    仅编写一次,就可以在其他任何环境中运行:除了系统之外,代码不需要做任何更改
    系统具有多平台支持:JSP技术可以在众多平台上的环境中开发,在任意的环境中进行系统部署和扩展
    功能强大的开发工具支持:已经具有很多优秀的开发工具支持的JSP,其中许多都可以免费得到,并且许多工具可以顺利运行于多种平台下

    2.2 框架SSHSSH是Struts+Hibernate+Spring的集成框架,SSH框架的特点有以下几点:

    Struts降低了系统的耦合度,使系统的逻辑结构更加清晰
    Hibernate是一种开源的对象关系映射框架,它对JDBC进行了轻量级的对象封装,使系统操纵数据库更加的方便
    Spring框架中的IOC和AOP对系统进行最大程度解耦合,使系统的各层之间的耦合度减小,极大地提高了系统开发效率

    系统是集成SSH框架的,它的层次分别为:表示层、业务逻辑层和数据持久层。表示层采用JSP,Struts作为系统的整体基础架构,SSH框架各层次关系如图2-1所示。

    2.3 系统开发工具系统主要开发工具如下:

    MyEclipse:它是一个十分优秀的用于开发Java的Eclipse插件集合,它的功能丰富,并且完全支持JSP、HTML、Struts、Spring、CSS、JS、SQL 、Hibernate,它的9.0版本已经支持了JavaEE6,因此选用MyEclipse9.0进行开发非常的合适
    Tomcat:它是一种具有运行时占用系统资源小,扩展性好,支持负载平衡等功能优点的轻量级应用服务器。它的7.0版本实现了对JSP2.2的支持,而且增加了Web应用内存溢出侦测和预防功能,因此选用Tomcat7.0作为系统服务器
    MySQL:它是一个关系型数据库管理系统,将数据保存到不同的表中,提高了访问速度并提高了灵活性。MySQL数据库速度快、体积小、移植性能好,而且它是开源的,选用MySQL数据库对系统的各方面都有很大好处。MySQL5.7版本提高了MySQL的性能、可用性、可扩展性,因此选用MySQL5.7进行系统的数据库管理

    2.4 系统配置过程系统配置详细过程:

    在MyEclipse中配置安装好的的Java开发包和Tomcat服务器
    安装MySQL5.7,设置账号密码,用于数据库连接,然后安装Navicat for MySQL,使得数据库可以在图形页面下进行操作
    在MyEclipse中新建Web Project项目,项目名为webShopping
    导入Struts2包,Spring包,Hibernate包,其中Struts2的配置文件为Struts.xml,Spring的配置文件为bean.xml,使用bean.xml文件进行数据库连接池的配置
    导入外部的MySQL驱动包,用于数据库连接

    2.5 配置关键性问题的解决上述配置正确后,仅仅可以成功连接,所以还需要解决一些关键问题才能更好的运行程序。
    2.5.1 系统性能调整在对系统性能进行调整后才能更加快速稳定运行系统。主要内容如下:

    禁止Tomcat的自动重载:为了节约开发时间,在开发阶段Tomcat容器提供自动重载功能,方便在修改Java代码后不需要重新启动服务。但是,在生产环境下面,却占用了大量开销,因为进行了完全没有必要的重新载入操作,所以带来了很不好的性能影响。同时,在部分类载入,部分类载入的时候也可能带来各种难以处理的冲突。因此在J2EE的生产环境下关闭自动载入功能可以得到更好的性能
    控制HttpSession:在默认情况下,不要在JSP页面中创建HttpSessions对象,JSP页面默认会自动创建HttpSessions,如果JSP页面中不需要HttpSessions,为了节省一些性能,使用下面的页面指令避免自动创建HttpSessions对象: <%@ page session=”false”%>。

    2.5.2 数据库编码为了处理乱码,数据库应和页面统一使用UTF-8编码处理。在使用Navicat新建数据库时,使用的字符集一项选择:utf8 — UTF-8 Unicode。
    在进行数据库连接时,需要使用参数characterEncoding,参数值为UTF-8,例如连接的数据库为WebShopping,那么在配置数据库连接时,使用的URL应该为: jdbc:mysql://localhost:3306/webShopping?useUnicode=true&characterEncoding=UTF-8。
    2.5.3 页面字符集在每个JSP页面中,都要声明使用UTF-8这一字符集,在每个JSP页面的最上都要加上这一句:<%@ page language=”java” contentType=”text/html;charset=UTF-8”%>,这样才能够保证每个JSP页面中的中文显示正常不出现乱码。
    3 系统分析3.1 可行性分析开发任何一个基于计算机的系统,都会受到时间和资源上的限制。因此,在接受项目之前,必须根据客户可能提供的时间和资源条件进行可行性研究。这样就可以避免人力、物力、财力上的浪费。项目风险越大,开发高质量软件的可行性就越小。
    3.1.1 技术可行性硬件、软件要求不高,目前市场上的一般计算机软硬件都能满足系统开发要求。运用的编程软件主要有MyEclipse9.0,使用JSP和SSH框架技术,数据库采用MySQL。

    当前JSP是一种应用广泛的技术,实现了Html和Java的集成;SSH框架是Struts + Hibernate + Spring的集成框架,是目前流行的一种Web应用程序开源框架
    用JSP开发的Web应用是跨平台的,既可以在Linux下运行,也可以在其他操作系统上运行
    维护工作方便,一般具有一定软件开发经验的人员,都可以在短时间内掌握维护工作

    3.1.2 经济可行性网上商城系统的维护由程序人员即可完成,商家来进行对网上商城的订单、用户的信息来管理,不必使用大量的销售人员与客户面对面的交流,节约了人员工资开支的成本。而在销售业绩上,网上商城并不比实体商店的销售业绩差,因此在经济上是可行的。
    3.1.3 可行性分析结论经过以上对该项目进行各方面问题的分析,开发人员认为此项目的实现可以满足用户对商品的需要,方便用户与商家的交流,减少商家实体店面的开支,减少实体店铺对土地的浪费等,并且在技术和经济等方面均可行,确定本系统可以立项开发。
    3.2 需求分析需求分析指在建立一个新的系统时,确定系统的目的、范围、定义和功能时所要做的所用工作,需求分析是软件工程中的一个关键过程。需求分析阶段的任务是确定系统的功能。
    3.2.1 开发意图本系统适用于商家在网上进行商品销售,实现了商家的上架下架物品,修改商品信息,添加删除商品,用户管理功能等。极大地节省了商家对实体店铺的管理,物品的展示使用图片、视频信息便可。对客户而言,可以实现对商品的浏览,商品价格的了解、下单、购买等功能,方便了商家与客户之间的交流。
    3.2.2 功能需求在需求调查的基础上,结合网上商城系统的总体目标,对用户提出的需求从信息系统目标、业务功能、技术性能等方面分析,最终确定可行的、合理的系统功能需求。
    根据以上分析,确定系统主要功能需求:

    登录功能:用户输入用户名和密码,进行登录验证
    注册功能:可以查询用户名是否已经存在,对注册信息进行验证
    商品浏览:可以查询商品,显示商品详情,提供购买链接
    购物车管理:欲购买商品可以增添到购物车,也可以从购物车删除商品
    订单查询:用户登录后可以下订单,用户登录后也可以查看自己的订单
    商品种类管理:管理员可以对商品种类进行添加、删除操作
    商品管理:管理员可以添加商品、删除商品,查看所有商品
    订单管理:管理员登录后可以对订单进行管理
    用户管理:管理员可以管理注册用户信息

    3.2.3 数据流图数据流图是描述系统中数据流程的图形工具。在本系统中,没有登录的用户提交注册信息、提交登录信息,登录后可以购买商品、提交订单、修改个人信息。管理员可以对商品信息、订单信息、用户信息进行管理。这其中涉及到了对各个数据库的信息处理。对本系统进行分析,可以得到以下几个数据流图:
    网上商城系统顶层数据流图如图3-3所示。

    网上商城系统第一层数据流图如图3-4所示。

    用户信息管理数据流图如图3-5所示。

    商品管理数据流图如图3-6所示。

    3.2.4 数据字典数据字典是关于数据的信息的集合,也就是对数据流图中包含的所有元素的定义的集合。数据字典是数据流图上所有的成分的定义和解释的文字的集合,它最重要的用途是供人查询对不了解的条目的解释。
    数据字典主要的组成有:数据项、数据流、数据结构、数据存储、处理过程。根据对本系统的数据流图的分析,本系统的数据字典的主要内容如下:
    关键部分数据项(仅对关键数据项进行描述)。关键部分数据项如表3-1所示。



    数据项名
    数据项描述




    用户ID
    用户的编号


    用户名
    用户登录账号


    用户密码
    用户登录密码


    用户姓名
    用户的姓名


    邮寄地址
    用户接收商品的地址


    商品名称
    商品的名称


    商品种类
    商品的种类


    商城价格
    商品在商城的售价


    剩余数量
    商品的剩余数量


    商品图片
    商品的图片地址


    订单编号
    订单的编号


    是否付款
    用户是否已经付款


    是否发货
    商城是否已经发货



    数据结构反映了数据之间的组合关系。本系统的主要数据结构如下所示:

    用户信息的数据结构

    数据结构:用户数据项说明:用户的各项信息数据项组成:用户ID+用户名+用户姓名+用户密码+用户性别+用户电话+邮编+邮寄地址+电子邮件
    商品信息的数据结构

    数据结构:商品数据项说明:商品的各项信息数据项组成: 商品编号+商品名称+商品图片+商品种类+商品描述+商品厂商+商品原价+商城价格+商品总量+剩余数量
    订单信息的数据结构

    数据结构:订单数据项说明:订单的信息数据项组成:订单编号+商品信息+用户名+用户备注+提交时间+总金额+是否付款+是否发货+发货时间+订单流水号
    管理员的数据结构

    数据结构:管理员数据项说明:管理员的信息数据项组成:管理员编号+管理员用户名+管理员密码
    商品种类的数据结构

    数据结构:商品种类数据项说明:商品种类的信息数据项组成:商品种类名称+商品种类编号

    数据流是数据结构在系统内的传输路径。本系统的数据流主要有:

    用户登录数据流

    数据流名称:用户登录说明:用户登录输入的账号和密码数据流来源:用户信息表数据流去向:用户信息表组成:用户平均数据量:100次/每小时高峰期流量:400次/每小时(商品优惠活动期间)
    用户注册数据流

    数据流名称:用户注册说明:用户注册信息数据流来源:用户信息表数据流去向:用户信息表组成:用户平均数据量:20次/每小时高峰期流量:50次/每小时
    用户信息更新数据流

    数据流名称:用户信息更新说明:用户更新个人信息数据流来源:用户信息表数据流去向:用户信息表组成:用户平均数据量:10次/每小时高峰期流量:20次/每小时(商品优惠活动期间)
    订单提交数据流

    数据流名称:提交订单说明:用户提交订单信息数据流来源:用户信息表数据流去向:订单信息表组成:订单平均数据量:30次/每小时高峰期流量:50次/每小时(商品优惠活动期间)
    添加商品数据流

    数据流名称:添加商品说明:管理员添加商品信息数据流来源:管理员信息表数据流去向:商品信息表组成:商品平均数据量:20次/每天高峰期流量:50次/每天(进货种类较多时)

    4 系统设计4.1 系统的功能模块设计网上商城系统由前台管理、后台管理两部分组成。
    前台管理:该部分主要是用户对商品的查询等功能,用户没有注册可以实现商品的查询和商品信息的查看;用户注册后就可以进行添加商品到购物车、从购物车删除商品、订单提交、个人信息更新等操作。
    后台管理:该部分主要对商城内的一些基础数据进行有效管理,包括商品管理、会员管理、订单管理等。
    网上商城系统的前台系统框架图如图4-1所示。

    前台主要功能介绍:

    搜索商品:用户不用登录可以输入商品的名称来查看需要查询的商品,而且可以查看商品的详细信息,如生产厂商、剩余数量、介绍等
    分类查询:用户可以按分类来查看该分类的商品
    用户注册:用户可以输入注册信息来注册,用户可以检查用户名是否存在,用户注册信息没有错误则可正确注册(不要使用中文名称来注册)
    用户登录:用户输入登录名和密码进行登录,如果用户名和密码错误则无法登录
    更新信息:用户登录后可以查看个人信息并更新个人信息,还可以修改密码
    购物车:用户登录后就可以购物,可以把商品加入到购物车,或者把商品从购物车删除,如果商品数量为0则无法加入到购物车
    提交订单:用户把商品添加到购物车后即可提交订单,订单提交后用户可以进行付款(本系统为用户模拟了一个账户,用于用户购物,用户账户余额不足则无法付款)
    查看订单:用户可以查看自己的订单

    网上商城系统的后台系统框架图如图4-2所示。

    后台主要功能介绍:

    商品种类管理:管理登录后台后可以对商品种类进行添加、删除。添加时如果商品种类已经存在会提示添加错误
    商品管理:管理员对商品进行添加、删除操作,如果商品已经存在,添加时会提示商品已经存在
    订单管理:管理员可以查询订单,查看所有订单信息
    用户管理:管理员可以查询用户信息,管理用户信息
    系统管理:管理员可以修改登录密码,安全退出

    4.2 系统的工作流程网上商城系统前台的工作流程如图4-3所示。

    网上商城系统后台的工作流程如图4-4所示。

    4.3 系统模块详细设计4.3.1 用户注册用户注册是用户想要购买商品所必须进行的,用户注册需要填写正确的信息,用户账户一旦注册就不能修改,用户的其他信息可以修改。用户填写信息需要正确填写各项信息,如收货地址,用户下订单后用户的收货地址如果是错误的则无法正确发货的。用户注册后,使用用户名和密码登录系统,可以进行购物、下订单、提交留言操作。用户注册的流程图如图4-5所示。

    4.3.2 用户登录用户登录时需要输入用户名和密码,系统对用户输入信息进行验证,如果用户输入信息错误则需要重新输入,用户输入正确则可以成功登录,跳转到首页,显示用户常用操作例如修改密码,修改信息,退出等。用户如果忘记密码可以通过查找密码来重新设置密码。用户登录流程图如图4-6所示。

    4.3.3 用户信息修改用户登录后可以修改个人信息,修改个人信息后需要重新登录才能查看到更新之后的信息。用户登录后可以修改密码,重新登录需要使用修改后的密码才能登录。用户信息修改流程图如图4-7所示。

    用户修改密码流程图如图4-8所示。

    4.3.4 用户找回密码用户如果忘记密码,可以通过输入注册时的信息来重设密码。如果输入的注册信息错误则无法重设密码,只有输入正确的注册信息才能进行密码重设。用户找回密码的流程图如图4-9所示。

    4.3.5 用户查看商品用户不需要登录就可以搜索商品,查看商品详细信息。用户可以通过搜索商品名称来搜索商品,或者商品分类来查看该种类的商品。用户查看商品流程图如图4-10所示。

    4.3.6 添加到购物车用户登录后可以把商品添加到购物车,也可以对购物车商品进行删除。如果商品的剩余数量为0则无法把商品添加到购物车。添加到购物车流程如图4-11所示。

    4.3.7 管理商品管理员登录后台后,可以对商品进行管理,添加、删除商品。添加时如果商品已经存在则无法添加。管理商品流程图如图4-13所示。

    4.3.8 管理商品种类管理员登录后台后,可以对商品种类进行管理,添加和删除商品种类。如果添加时商品种类已经存在则无法添加。管理商品种类流程图如图4-14所示。

    4.3.9 系统管理管理员登录后,可以修改登录密码、退出系统。系统管理流程图如图4-15所示。

    5 数据库设计5.1 数据库概念设计数据库概念设计是根据对系统的分析、系统设计,规划出系统中使用的数据库实体。描述概念模型的工具主要是E-R图。根据对本系统的分析,规划出本系统所需要的实体,具体有:用户、商品、商品种类、管理员、订单。
    5.1.1 实体属性的定义用户实体拥有的属性有用户ID、用户名、用户密码、性别、姓名、电话、邮寄地址和电子邮箱这八个属性。用户实体属性如图5-1所示。

    商品实体拥有的属性有商品ID、商品名称、商品种类、商品图片、商品描述、商品厂商、商城价格、商品原价、总数量和剩余数量这十个属性。商品实体属性如图5-2所示。

    商品种类实体拥有的属性有商品种类和商品种类名称这两个属性。商品种类实体属性如图5-3所示。

    订单实体拥有的属性有订单ID、订单用户名、商品、提交时间、发货时间、总金额、是否发货和是否付款这个八个属性。订单实体属性如图5-4所示。

    管理员实体拥有的属性有管理员ID、管理员用户名和管理员密码这三个属性。管理员实体属性如图5-5所示。

    5.2 数据库逻辑设计5.2.1 用户信息表(users)用于记录用户ID、用户名、用户姓名、用户密码、用户性别、用户电话、商品邮寄地址和用户电子邮件等信息。用户信息表的内容如表6-1所示。



    字段名
    数据类型
    约束条件
    是否可空
    默认值
    注释




    userId
    int(20)
    主键

    1
    用户ID(自增)


    username
    varchar(50)



    用户名


    password
    varchar(50)



    用户密码


    name
    varchar(50)



    用户姓名


    sex
    varchar(50)



    用户性别



    5.2.2 商品信息表(commoditys)用于记录商品编号、商品种类、商品名称、图片商品描述、商品厂商,商品原价格,商城出售价格,商品总数量和商品剩余数量等信息。商品信息表的内容如表6-2所示。



    字段名
    数据类型
    约束条件
    是否可空
    默认值
    注释




    commodityId
    int(20)
    主键

    1
    商品编号(自增)


    commodityClass
    varchar(50)
    外键


    商品种类


    commodityName
    varchar(50)



    商品名称


    manufacturer
    varchar(50)



    商品厂商


    commodityDepict
    varchar(255)



    商品描述


    commodityPrice
    double(20)



    商品原价


    webShopPrice
    double(20)



    商城价格


    commodityAmount
    int(50)



    商品总量


    commodityLeaveNum
    int(50)



    剩余数量


    image
    varchar(255)



    商品图片



    5.2.3 商品种类信息表(commodityclasses)用于记录商品种类的编号,商品种类名称等信息。商品种类信息表的内容如表6-3所示。



    字段名
    数据类型
    约束条件
    是否可空
    默认值
    注释




    commodityId
    int(20)
    主键

    1
    商品种类编号(自增)


    commodityClass
    varchar(50)



    商品种类名称



    5.2.4 订单信息表(orderform)用于记录订单的编号,用户信息,订单提交时间,发货时间,总金额,买家备注,买家是否付款,是否发货等信息。订单信息表的内容如表6-4所示。



    字段名
    数据类型
    约束条件
    是否可空
    默认值
    注释




    orderFormId
    int(20)
    主键

    1
    订单编号(自增)


    username
    varchar(20)
    外键


    用户名


    commodity
    varchar(50)
    外键


    商品信息


    submitTime
    varchar(50)



    提交时间


    consignmentTime
    varchar(50)



    发货时间


    totalPrice
    varchar(50)



    总金额


    remark
    varchar(50)



    用户备注


    isPayoff
    varchar(10)



    是否付款


    isConsignment
    varchar(10)



    是否发货


    orderFormNum
    bigint(20)



    订单流水号



    5.2.5 管理员信息表(admins)用于记录管理员编号,管理员用户名,管理员密码等信息。管理员信息表内容如表6-5所示。



    字段名
    数据类型
    约束条件
    是否可空
    默认值
    注释




    adminId
    int(20)
    主键

    1
    管理员编号(自增)


    adminName
    varchar(255)



    管理员用户名


    adminPassword
    varchar(255)



    管理员密码



    6 系统实现6.1 系统主页面系统主要使用淡色调,颜色不会很刺眼,不会使客户感到反感。系统页面简洁,上方的导航则包括用户登录、用户注册、留言板等信息,下方显示商品种类列表、上架商品、商城公告、用户登录框等信息,用户可以通过左侧导航栏查询每个种类的商品,也可以通过搜索来查找商品。系统主页面如图6-1所示。

    系统主页的商品分类需要通过请求来获取商品种类列表。
    获取商品种类列表的关键代码如下:
    public String execute() throws Exception { Map request = (Map) ActionContext.getContext().get("request"); commodityClasses = commodityClassService.findAllCommodityClasses(); request.put("listCommodityClasses", commodityClasses); //列表信息保存到listCommodityClasses中 return "success"; }
    6.2 非登录用户操作6.2.1 用户注册用户可通过注册成为商城会员,点击用户注册打开用户注册页面,用户注册包括用户名、密码、用户姓名、性别、电话、收货地址、电子邮箱等信息,用户点击每个输入框时后方会提示需填入的内容或注意事项。用户注册页面如图6-2所示。

    用户提交注册信息后,若没有错误的信息,则会提示注册成功,跳转到登录页面。若用户注册信息有错误,则会提示注册失败,返回到注册页面,用户应重新注册。
    用户注册关键代码如下:
    public String execute() throws Exception { String username= user.getUsername(); User user = service.findUserByName(username); //查询该用户名是否存在 if(user==null){ this.service.save(this.user); return "success"; } else{ return "error"; }}
    6.2.2 用户登录用户可以通过右侧的登录框登录,也可通过上方的导航栏打开用户登录页面进行登录。用户登录页面如图6-3所示。

    如果用户名和密码正确,则会提示登录成功,跳转到主页。如果用户名和密码不正确,则会提示登录失败,返回到登录页面,用户需要再次登录。用户登录后可以查看购物车中商品、提交留言、查看自己的订单等。用户可以点击退出按钮退出系统。用户登录成功后页面如图6-4所示。

    用户登录关键代码如下:
    public String login(){ String username= user.getUsername(); String password=user.getPassword(); User user = service.getUserByLoginNameAndPassword(username,password); //搜索是否存在该用户 if(user == null){ ActionContext.getContext().put("message", "用户名或密码错误"); return "login"; }else{ ActionContext.getContext().getSession().put("user", user); return "index"; }}
    6.2.3 找回密码如果用户已经注册过,但是密码输入不正确或者忘记密码,可以通过输入正确的注册信息来重新设置密码。输入找回密码信息页面如图6-5所示。

    用户输入正确的信息后即可进入重新设置密码页面,进行秘密的重置。
    找回密码关键代码如下:
    public String findUser(){ String username= user.getUsername(); String name= user.getName(); String sex= user.getSex(); String post= user.getPost(); String address= user.getAddress(); String phone= user.getPhone(); String email= user.getEmail(); User user=this.service.findUserByinfo(username, name,sex,phone, post, address, email); //查询是否有该用户信息 if(user==null){ ActionContext.getContext().put("findUsernull", "没有该用户信息!"); return "findUsernull"; }else{ ActionContext.getContext().getSession().put("findUser", user); return "findUser";}
    6.2.4 查看商品信息点击商品下的详细按钮,可以查看商品的详细信息,在商品的详细信息中可以看到商品的名称、商品编号、商品生产厂商、价格、数量、上架时间和商品的描述,这项操作用户没有登录也可以进行。商品信息页面如图6-6所示。

    商品详细信息关键代码如下:
    public String findCommodityById(){ int commId= commodity.getCommodityId(); Commodity commodity = this.service.findCommodityById(commId); ActionContext.getContext().getSession().put("commodityById", commodity); return "findCommodityById";}
    6.2.5 搜索商品用户可以通过输入商品的部分关键字进行商品搜索,搜索商品后会显示搜索到的信息,如果没有相关信息会输出没有改商品信息。搜索商品信息结果页面如图6-7所示。

    搜索商品关键代码如下:
    public String findCommodityByName(){ String commodityName= commodity.getCommodityName(); Map request = (Map) ActionContext.getContext().get("request"); request.put("commoditybyName",this.service.findCommodityByName( commodityName)); //保存搜索的信息 ActionContext.getContext().getSession().put("searchnameMessage", commodityName); return "findCommodityByName";}
    6.3 登录用户操作6.3.1 购物车用户只有登录后才能把商品添加到购物车。在每件商品的下方都有添加到购物车按钮,点击添加就可以添加到购物车,添加一次商品,商品剩余数量就减少1,如果商品剩余数量为0,则无法添加到购物车,提示商品无供货。在购物车中可以查看购物车中的物品,商品的简单信息。在购物车中可以移除商品,移除商品时,商品剩余数量会增加1。用户可以在买家备注里输入备注信息,然后点击提交订单进行订单的提交,也可以点击继续购物继续浏览商品。购物车页面如图6-9所示。

    商品添加到购物车关键代码如下:
    public String execute() throws Exception { int commodityId= commodity.getCommodityId(); Map session =(Map) ActionContext.getContext().getSession(); Commodity commoditys = commodityService.findCommodityById (commodityId); //获得商品信息 if(commoditys.getCommodityLeaveNum()==0){ ActionContext.getContext().getSession().put("comnull","商品已无货!"); return "error"; } else{ List<Commodity> car = null; //声明一个购物车 if(session.get("car") == null) { //如果session中不存在购物车 car = new ArrayList<Commodity>(); //新建一个ArrayList实例 } else { car = (List<Commodity>)session.get("car"); //取得购物车 } } commoditys.setCommodityLeaveNum(commoditys.getCommodityLeaveNum()-1); commodityService.update(commoditys); session.put("car", car);//将购物车保存在session中 return "success"; }
    6.3.2 付款用户点击提交订单按钮后,用户的订单就提交到了数据库,然后可以进行付款操作。用户付款时会检查用户金额,如果用户金额不足,会提示余额不足无法付款;用户余额足够才能付款成功。如果用户没有对订单进行付款,商家则不会发货。用户付款页面如图6-10所示。

    6.3.3 更新个人信息用户登录以后可以修改个人信息,修改个人信息时需要输入正确的信息,点击更新个人信息后即可更新个人信息,但是需要用户重新登录之后才会显示更新后的信息。用户也可以修改登录密码。用户更新个人信息页面如图6-12所示。

    修改个人信息关键代码如下:
    public String updateUser(){ this.service.update(user); //更新用户的信息 ActionContext.getContext().put("updatemessage", "您的信息已经更新!"); return "updateUser"; }
    6.4 后台管理6.4.1 后台登录可以通过主页面下方的链接打开后台管理的登录页面,后台登录页面需要输入管理员账号和密码,如果用户名和密码错误则不能登录,只有输入正确的管理员账号和密码才能登录到后台主页面。后台登录页面如图6-13所示。

    6.4.2 后台主页面输入正确的管理员账号和密码后,打开后台关键的主页面,主页上主要显示此网上商城开发工具的介绍,左侧有快捷功能,上方有列表用于选择各个操作。点击退出即可退出后台管理页面返回登录页面。后台主页面如图6-14所示。

    6.4.3 新增商品种类新增商品种类,填写商品种类名称,提交便可增加一种新的商品种类。新增商品种类页面如图6-15所示。

    6.4.4 商品种类列表管理员可以查看商品种类的列表。商品种类列表页面如图6-16所示。

    6.4.5 新增商品新增商品可以填写商品的名称、商品编号、选择商品种类、填写生产厂家、上传图片、添加商品描述、商品原价格、商城销售价格、商品总数量。新增商品页面如图6-17所示。

    新增商品主要代码如下:
    public String addCommodity(){ CommodityClass com= commodityClassService.findCommodityClassByName (commodity.getCommodityClass().getCommodityClassName()); //获得商品种类信息 commodity.setCommodityClass(com); //设置商品种类 List<Commodity> comFindname = this.service.findCommodityByName (commodity.getCommodityName()); //查询该商品是否存在 if(comFindname.size()==0){ this.service.save(this.commodity); //保存商品信息 ActionContext.getContext().put("addComessage", commodity.getCommodityName() +"添加成功"); } else { ActionContext.getContext().put("addComessage", commodity.getCommodity Name() +"已经存在,请重新填写商品信息!"); return "addCommodity"; } }
    6.4.6 商品列表管理员可以查看商品的列表。商品列表页面如图6-18所示。

    6.4.7 订单列表管理员可以查看订单列表,显示的内容包括:订单编号、用户是否已经付款、是否已经发货、总金额、可以进行订单发货操作等。订单列表页面如图6-19所示.

    6.4.8 订单条件查询输入订单的条件可以查询订单,用于管理员来查询符合条件的订单信息。订单条件查询页面如图6-20所示。

    6.4.9 用户列表用户列表包括所有用户的信息,显示的内容有:用户的姓名、联系电话、住址、邮寄地址、删除用户等。用户列表页面如图6-21所示。

    7 系统压力测试7.1 系统压力测试工具及环境本系统测试使用Apache Jmeter工具,这是由Apache组织开发的基于java的测试工具。Apache JMeter是开源而且免费的测试工具,它是可以对利用HTTP或FTP服务器的应用程序进行测试的工具,因此,选用Apache Jmeter作为网上商城系统的测试工具非常适合。下载Jmeter,打开bin目录的JMeter.jar,启动JMeter。JMeter主页面如图7-1所示。

    系统测试环境是系统在何种配置的服务器中进行的测试如表7-1所示。



    操作系统:
    Windows XP Professional SP3




    处理器:
    AMD Sempron(tm) M100


    内存:
    2G


    测试工具:
    Apache Jmeter



    7.2 录制测试过程7.2.1 建立线程组线程组用于指定运行的线程数和等候周期。每个线程模拟一个用户,而Ramp-Up Period(in-seconds)用于指定创建全部线程的时间。设置200个用户同时访问,在5秒之内全部访问登录页面,登录系统。循环次数则代表执行的次数。建立线程组页面如图7-2所示。

    7.2.2 建立HTTP请求默认值在线程组下新建“HTTP请求默认值”同时配置其参数:服务器地址,端口号,访问协议。建立HTTP请求默认值页面如图7-3所示。

    7.2.3 设置代理服务器在工作台下设置HTTP代理服务器,设置Global Settings(端口号),Test plan content(目标控制器)选择上面建立的线程组,添加排除模式,以免在录制过程中录制了不需要的图片,脚本等。工作台设置HTTP代理服务器页面如图7-4所示。

    配置好以后,设置浏览器的HTTP访问代理,用于用户的访问。浏览器设置HTTP代理服务器页面如图7-5所示。

    浏览器端口号一定要与图8-4配置的端口号一致。启动JMeter的脚本录制。打开浏览器,进行一次登录退出操作。在线程组后会显示登录和退出所访问的action。录制完成页面如图7-6所示。

    7.3 测试设置及启动7.3.1 设置登录参数在用户登录的action中,可以为用户名和密码进行参数化设置,测试的用户为testuser1到testuser201,测试之前请确认数据库中的用户表已经有这些用户名信息。用户名和密码进行参数化设置页面如图7-7所示。

    用户名和密码的数据是从本地f盘下的文件login.txt中读取的,用户名和密码格式如图7-8所示。

    7.3.2 启动测试在启动测试前,确认已经添加好监听器:聚合报告、用表格察看结果、图形报告和查看结果树,用于在测试结束后察看结果。然后点击运行按钮,启动测试,等待测试结束。
    7.4 测试结果7.4.1 系统压力测试聚合报告聚合报告是整个测试过程中的数据反映。其中参数说明:Lable是测试项目名称,Samples是多少个访问实例,Average是平均相应时间,Median是相应时间中间值,90%Line指90%的实例的相应时间,Min最小响应时间,Max最大响应时间,Error%出错率,Throughput是每秒完成的实例也就是系统的吞吐量,最后一项为每秒传送的数据量。系统压力测试聚合报告页面如图7-9所示。

    7.4.2 系统压力测试图形结果图形结果可以更加形象并且直观地看到测试的结果。主要参数有:样本数目是总共发送到服务器的请求数。最新样本是代表时间的数字,是服务器响应最后一个请求的时间。吞吐量是服务器每分钟处理的请求数。 平均值是总运行时间除以发送到服务器的请求数。中间值是代表时间的数字,有一半的服务器响应时间低于该值而另一半高于该值。偏离表示服务器响应时间变化、离散程度测量值的大小,也就是数据的分布。
    在这些结果中可以看出,网上商城系统既可以满足一般商家的需要,又可以满足适量的用户同时登录,如果需要满足更多用户的登录,购物等操作,可以根据具体的需要对系统,服务器进行优化配置。总体上本系统是可以满足现有需求的。
    结论这次的毕业设计是先对网络购物系统做需求分析,对需要做出来的功能和目标做了一个阐述,之后进行的设计,最后实现了一个简易的网络购物系统的设计。该设计已Java语言为主,用MyEclipse环境完成,MySQL作为我的数据库,同时用到了Tomcat服务器。这个设计分为两个部分,分别是前台用户模块和后台管理模块。前台用户可以操作的模块如下:查看商品,登录注册,购买商品,操作购物车,修改个人信息;后台管理员可以操作的模块如下:商品种类的增删改查,商品的增删改查,查询和更改用户信息。通过不断调试,运行和测试,系统现在可以正常的运行。因为这是我第一次独立完成开发,系统不免有些简易和不足,还需进一步的改善。
    这个设计是利用网络来进行一些简单的交易,方便大家的生活。这次的毕业设计锻炼了我的实际操作的能力。让我对Java的应用和理解更加透彻。
    在这次毕业设计中,我做了下面一些工作:

    分析并且建设了网络购物系统,探讨了这个应用的背景和开发它的目的
    在软件开发的过程中完成一些开发必须的步骤,例如需求分析,总体设计、详细设计、系统测试等
    在需求分析和总体设计完成后,决定使用什么技术,使用什么语言,使用哪种数据库等等多个问题,最后在制定一个合理的,简单有效的解决方案。此外还考虑到系统的可扩展性,实现整体的灵活性,为以后继续开发或完善提供便利
    在整个开发系统的过程当中,随着不断的深入,依稀相关的数据材料,技术材料也在不停的汇集整合,形成一个完整的资料库,对我以后的开发有很大的意义和影响

    参考文献[1] 程南希. 基于 SSH 架构的在线购物管理系统的设计与实现[D]. 电子科技大学, 2011.
    [2] 萨师煊,王珊.多数据库系统概论[M].北京:高等教育出版社,2006.1-11.
    [3] 王建明.计算机实验室管理系统的设计与实现[J].计算机与信息技术,2007,15(11):74-75.
    [4] 李春葆.Visual Fox Pro 6.0 高级编程[M].北京: 科学出版社,2001.1-70.
    [5] 刘湘晖.多高校计算机实验室综合信息管理系统设计与实现[J].计算机光盘软件与应用,2010,11(12):148.
    [6] 杜波伊斯.MySQL技术内幕[M].第4版.人民邮电出版社,2011年07月.
    [7] 杨海鹰,潘华.实验室信息管理系统[M].北京: 化学工业出版社,2006.1-70.
    [8] AR Hevner,ST Marcb. The Information Systems Research Cycle[J]. IEEE Computer,2003,9 (11):111-113.
    [9] R Sandhu,V Bhamidpati,Q Munawer. The ARBAC 97 model for role-based administration of roles[J]. ACM Transactions on Information and System Security,1999, 8(1):105.
    [10] B Regnell,P Runeson,C Wohlin. Towards integration of use case modeling andusage-based testing[J]. Journal of Systems and Software,2000,12 (2):117-130.
    [11] Young Jin Yu.Backup Metadata As Data: DPC-To Ierance to Commodity File System. Journal of information science and engineering,2011, 27(4):13-15.
    [12] Anonymous. Red Gate Software; Red Gate Software’s SQL Backup 5 Named 2008Editor’s Best Award Winner by SQL Server Magazine,Computer TechnologyJournal 2008, 16(5):22-24.
    0 评论 1 下载 2020-08-08 09:50:42 下载需要13点积分
  • 基于JSP的挖掘机配件营销中心销售系统

    摘 要伴随着中国发展,各个城市的建设速度也快得惊人,随之而来的挖掘机的使用当然是必不可少的,接踵而至的商机也不言而喻,各类零配件的种类也多起来。随着工作量和业务的更加精细化,之前的人工处理方式在业务和财务方面难免出现漏洞,由于现在各类销售系统已逐步走向成熟,因此它的投入使用可以减轻企业员工的劳动强度,提高员工工作效率的同时又方便财务的统计。
    本次的华柳挖掘机配件营销中心销售系统主要采用了JSP语言来进行来开发,所设计的功能有包括库存管理、销售管理、用户管理和查询统计等。从需要分析出发,先进行分析再进行程序开发,完成后的系统界面美观,功能完善,会给华柳企业带来非常大的方便。
    关键词:配件;挖掘机;销售;管理系统
    AbstractAlong with the development of Chinese, each city construction speed is faster, the use of the excavator is of course essential, the ensuing opportunities are self-evident, the kinds of various accessories are also many. With the workload and the business is more refined, artificial processing before inevitably in the business and financial aspects of a loophole, because now all kinds of sales system has been gradually mature, so it can be put into use to reduce the labor intensity of employees, improve work efficiency and convenient financial statistics.
    In the whole system development process, the use of the basic concepts of software engineering, related technologies and methods. And the use of the system life cycle of the structured programming method, which will be the entire system development stage (demand analysis, system design, basic realization) of the basic activities throughout.
    Key Words:Accessories; excavator; sales management system
    1 引言大家都有目共睹,现在的科学技术发展很迅速。而如今,计算机应用已经完全融入到人们的生产和生活当中,特别是企业,现在的企业几乎都是离不开计算机管理的,文档的编辑、图片的制作、表格的统计等等。而另一方面,人们越来越喜欢使用计算机进行信息管理,方便而又快捷。互联网时代的到来,人们获取信息的渠道已不仅仅是报纸或者电视,而是一些高科技电子产品,如手机、电脑等设备。现在的网络购物也特别火热,转而实体店的生意已经越来越不好做。现在,优先利用信息系统的企业,就会在市场中占有绝对的优势。利用信息系统,不仅可以强化管理企业,还可以有效地维护客户信息,扩大经营范围。
    本次毕业设计的课题是华柳挖掘机配件营销中心销售系统,那么首先给大家介绍一下课题背景。据统计,美国是使用信息管理最早的国家,现在80%的管理基本上都是由计算机来完成。可见随着互联网时代的到来,信息管理已成为计算机行业的核心地带。目前我国是挖掘机大国,各个地方都会使用到挖掘机,因此挖掘机配件的生产厂商已不下千家。并且现在我国挖掘机配件的需求量也在增长,整个挖掘机配件行业的竞争还是很激烈的。对于部分配件公司来说,要想在这个领域争得一个席位,那么就一定要与社会相接轨,跟上社会的进步。再谈谈挖掘机配件的业务模式,由于配件本身种类多、维护繁琐,以前都是由人工来对这些进行管理,在时间和人力的成本上投入都比较大。如果运用信息管理系统就完全可以轻松完成这些工作,节约人工成本。并且运用计算机对于企业来说它带来的优势是不言而喻的,比人工更高效,更便于管理,更快捷与透明化。信息管理系统的投入使用,给企业带来极大的便捷的同时也提高了员工的工作质量。因此,挖掘机配件营销中心销售系统的开发是非常有必要的。开发本系统主要解决的问题就是对于配件的管理及配件的销售。这是两个核心部分。我将利用JSP语言与MySQL数据库一起来进行实现。
    2 开发工具及技术华柳挖掘机配件营销中心销售系统是通过myeclipse这款开发工具实现的。环境的搭建采用的是JSP+JDK1.6+TOMCAT6.0+MySQL。服务器是Tomcat,JDK是java所必备的开发环境虚拟机,MySQL是该系统所使用的数据库。
    2.1 JSP简介JSP发展很久了,很多方面都已经非常的完善了。Jsp的全称是JAVA SERVER PAGER,也就是说可以在页面上运行java程序。它的扩展性非常的好。
    2.2 MYSQL介绍Mysql作为数据是一款非常清凉的数据库了。它的占用空间很小,5.0的版本只有区区不到30M。Mysql虽然很小,但他的性能却很好,能很效率的实现关系的查询等操作。使用的时候我们会基于一些第三方插件来对他进行管理,例如sqlyog、navicat等等软件。
    2.3 SQL语句SQL语句作为我们使用mysql数据的基本语句和语法。SQL语句包含增、删、改、查等等基本功能,使用这些命令能完成对数据库的绝大多数数据库操作。
    2.4 AngularJS技术AngularJS 诞生于2009年,它有着诸多特性,最为核心的是:MVC、模块化、自动化双向数据绑定、语义化标签、依赖注入等等。
    3 需求分析“需求分析”,就是分析客户的需求。我们的对象就是使用这个网站的客户,我们要分析的就是她们要使用这个网站想要哪些功能,为她们提供哪些方面的便利。界面怎么设计他们最方便,以前我们要开发这个程序所要涉及到的一些经济等方面的可行性。这就是需求分析。
    3.1 功能需求分析挖掘机配件销售管理系统是根据挖掘机配件销售的过程来分析该系统,系统分为三大模块。

    库存管理模块包括:

    库存查看,在客户进行咨询或者需要购买的时候可以通过库存查询知道当前库存中有没有货配件信息管理,管理系统中所有的配件信息配件进货,根据实际情况,及时更新库存,扩大配件的供应量,增加库存
    销售管理模块包括:

    配件销售,对配件进行销售配件退还,用户不满意或者在退换期内可以进行配件退还操作利润统计,对系统中销售的利润进行统计和查看,也可以导出EXCEL。
    用户管理模块:

    员工信息管理,该部分主要包含管理员和普通员工的信息客户信息录管理,该部分主要管理系统中所有的新老客户信息,方便后期进行跟踪记录和回访等

    3.2 可行性分析3.2.1 技术可行性分析技术的可行性,首先需要介绍的是开发这个系统我所用到的技术。本次用到的开发技术为JSP,JSP相信大家不会陌生,现在它已经非常成熟运用率非常高,现在市场上很大一部程序都是运用这个系统来进行开发的。并且我们在大学所学过JSP技术,图书馆也有很多关于JSP技术的资料,所以在开发技术上来说是非常可行的。
    3.2.2 经济可行性这个程序的资金投入不会太多,前期由于是作为毕业设计,所以由我一个人开发就可以完成,在硬件方面,本人有电脑,所以也不用再单独去购买设备,开发这个系统所涉及到的软件很多也都是可以直接从网上下载,都是免费的,所以它目前不会需要太多的资金,如果后期运用到市场上要开发这样一个系统,运用到的费用也不会太多,算上网站域名和服务器等等的价格,一年可能几千元就能解决。所以综合以上分析,这个系统的经济方面也是可行的。
    3.2.3 操作可行性在一开始的性能分析里面我们有提到系统界面的设计要做到精美并简洁,设计完成的系统也做到了这一点,整个系统的界面非常直观,各个模块的设计也非常清楚,用户登录系统可以非常容易找到他所想了解的模块,并且对于后台来说,只需要管理员会基本的电脑操作就完全可以维护系统了,所以在操作方面来说也遇非常可以行。
    3.3 数据库需求分析本系统涉及到的实体有:订单详情、配件类型信息、配件信息、配件库存信息、订单明细信息、用户信息等。
    订单详情实体E-R图如图1所示:

    配件类型实体E-R图如图2所示:

    配件信息实体E-R图如图3所示:

    配件详情实体E-R图如图4所示:

    用户信息实体E-R图如图5所示:

    订单实体E-R图如图6所示:

    4 总体设计总体设计即是对相关系统进行整体布局的设计,也就是对设计相关系统总的一个处理方案,又称系统概要设计。
    此次系统的总体设计包括功能模块设计和数据库逻辑结构设计。
    4.1 功能模块设计本系统用户主要分普通员工和管理员,管理员主要是增加了一些管理操作,普通员工主要是面向客户的操作。其主要模块包括:配件销售、配件退还、库存查看、客户信息录入、用户管理、配件类型管理、配件信息管理、库存更新和利润统计。
    系统功能模块图如图7所示:

    4.2 数据库逻辑结构设计本系统选用的数据库管理系统为MySql数据库管理系统,MySql数据库为关系型数据库[1]。根据规则,将数据库的概念结构设计转换为的关系模式如下:

    配件信息(ID,名称,价格,数量,备注,生产地址,联系电话,类型)
    配件详情(ID,数量,配件,生产日期,过期日期,编号,价格)
    订单详情(ID,编号,数量,价格,订单)
    订单信息(ID,金额,用户,备注,时间,角色)
    用户信息(ID,用户名,密码,姓名,电话,性别,角色)
    配件类型(ID,类型名称)

    5 详细设计该销售系统的详细设计包括以下内容:数据库的详细设计、界面的详细设计、个人信息模块设计、员工管理模块设计、配件管理模块设计、进货模块设计、配件销售模块设计、退货模块设计、数据统计模块设计。
    5.1 数据库的详细设计本系统使用的数据库管理系统为MySQL,数据库中共有6个表,各表说明如下:
    订单信息表



    列名
    数据类型
    允许空
    说明




    Id
    int(11)

    ID


    Money
    double(200)

    金额


    Fkuid
    int(11)

    用户


    Remaerk
    text(25)

    备注


    Otime
    varchar(200)

    时间


    Status
    int(11)

    角色



    配件信息表



    列名
    数据类型
    允许空
    说明




    Id
    int(11)

    ID


    Pname
    varchar(100)

    名称


    Price
    double(100)

    价格


    Pcount
    int(11)

    数量


    Remark
    text(100)

    备注


    Address
    varchar(100)

    生产地址


    Phone
    varchar(100)

    联系电话


    Typeld
    int(11)

    类型



    配件详情表



    列名
    数据类型
    允许空
    说明




    Id
    int(11)

    ID


    Pdcount
    int(11)

    数量


    Fkpid
    int(11)

    配件


    starTime
    varchar(100)

    生产日期


    endTime
    varchar(11)

    过期日期


    Pno
    varchar(11)

    编号


    Price
    double(100)

    价格



    订单详情表



    列名
    数据类型
    允许空
    说明




    Id
    int(11)

    ID


    Pno
    varchar(100)

    编号


    Pcount
    int(11)

    数量


    Price
    double(100)

    价格


    Fkoid
    int(11)

    订单



    用户信息表



    列名
    数据类型
    允许空
    说明




    Id
    int(11)

    ID


    Username
    varchar(11)

    用户名


    Password
    varchar(11)

    密码


    Nickname
    varchar(100)

    姓名


    Phone
    varchar(11)

    电话


    Sex
    varchar(11)

    性别


    Status
    int(11)

    角色



    配件类型表



    列名
    数据类型
    允许空
    说明




    Id
    int(11)

    ID


    Typename
    varchar(11)

    类型名称



    5.2 界面的详细设计整个系统的界面需要达到整洁、各主体良性交流与互动的要求。
    5.2.1 登录界面设计
    登录界面是打开本系统的初始界面,界面上有用户、密码、验证码3个输入框,输入信息后点击登录会由程序进行验证。
    5.2.2 系统主界面设计通过登录页面登录后系统会自动跳转到系统的主界面的个人资料页面,以下是权限为管理员的操作登录的主界面图例。如图9所示。

    后台主界面采用的是左右布局,左边是我们的菜单栏,右边则是我们的内容页,通过frameset框架进行加载展示。界面是模仿windowsXP文件管理的样式,看起来非常好看。
    5.3 个人信息模块设计5.3.1 个人中心在系统主界面点击左侧操作栏中的“我的资料”就可以进入该页面,个人中心可以修改个人资料。程序效果图如图10所示。

    5.3.2 修改密码用户在系统主界面点击左侧操作栏中的“修改密码”进入该页面,该页面可以修改用户密码。在修改密码的时候angularjs会通过表单验证用户输入的信息是否符合标准。如图11所示。

    5.4 员工管理模块设计5.4.1 员工管理在系统主界面点击员工管理模块下的“员工管理”链接后,右边的内容页就会展示出员工管理列表,该列表通过angularjs的http.get方法进行获取列表数据,通过返回的json数据进行解析然后利用静态分页的原理展示到页面上。在页面上可以根据姓名和角色来进行数据过滤,数据过滤采用的anguljs的filter。程序效果图如图12所示:

    5.4.2 员工添加在系统主界面点击员工管理模块下的“员工添加”链接后,右边的内容页就会展示出员工添加界面。在员工添加界面需要输入各种不同的信息,输入完成之后点击添加按钮表示员工添加成功,该页面如图13所示。

    5.5 配件管理模块设计5.5.1 配件类型管理在系统主界面点击配件管理模块下的“配件类型管理”链接后,右边的页面就会显示出配件类型管理列表。该界面也是采用的angularjs的数据获取以及静态分页效果,同时使用了bootstrap的分页样式表,程序效果图如图14所示。

    5.5.2 配件管理在系统主界面点击配件管理模块下的“配件管理”链接后,右边的页面就会显示出配件管理列表。该界面也是采用的angularjs的数据获取以及静态分页效果,同时使用了bootstrap的分页样式表。在界面上可以根据配件类型、配件名称进行filter过滤,同时可以导出表格中的数据为excel。程序效果图如图15所示。

    5.5.3 配件添加在配件管理界面点击“添加配件”按钮进入配件添加页面。界面上需要填入配件名称、配件类型、销售价格、备注、生产厂家、厂家电话,表单验证采用的是angularjs的表单验证,信息输入无误后点击添加表示添加成功。程序效果图如图16所示。

    5.5.4 库存明细在配件管理界面可以点击每一行后面的库存明细查看进行浏览该配件的库存明细。也可以点击配件管理模块下面的库存明细,这里是展示所有的配件配件库存,可以根据配件编号和配件进行数据过滤。程序效果图如图17所示。

    5.6 进货模块设计5.6.1 填写进货单明细在系统主界面点击进货管理模块下的“填写进货单”链接后,右边的页面就会显示出进货单明细添加页面,依次输入进货数量、配件、生产日期、进价信息,点击添加即可完成进货。程序效果图如图18所示。

    5.6.2 本次进货单明细查看在上一步填写进货单明细后会自动跳转到进货单明细查看界面,该界面可以查看本次进货单所有的配件明细。程序效果图如图19所示。

    5.6.3 进货单登记确认本次所有的进货单明细都填写完毕后,点击进货管理模块下的“进货单登记”链接,右侧内容页会展示出当前进货单的总价,输入备注后点击添加按钮即可完成本次进货单登记的流程。程序效果图如图20所示。

    5.6.4 进货单查看在系统主界面点击配件管理模块下的“进货管理”链接后,右边的内容页就会展示出进货单管理列表,列表中会展示出所有的进货单,可以根据创建时间进行数据过滤。每一条进货单记录右边有查看明细按钮,点击该按钮可以查看该进货单的进货明细数据。程序效果图如图21,22所示。
    进货单查看

    进货单明细

    5.7 配件销售模块设计5.7.1 配件销售设计在系统主界面点击出货管理模块下的“配件销售”链接后,右边的内容页就会展示出配件销售界面。在该销售界面需要填入配件编码和数量,如果不填的话angularjs会进行红色字体提示。填好后点击“添加”按钮,程序会使用angularjs的$http.get函数去后台进行查询,如果编码不对则会提示“没有该编码对应的配件”,如果输入的数量超过了库存则会提示“该配件库存不足了”,添加成功后会调用angularjs的列表刷新函数刷新我们下方的销售列表。需要销售的配件添加完后点击“结账”按钮进行结账,程序会计算该批次销售的配件的总额。程序效果图如图23所示。

    配件销售核心代码如下:
    <script type="text/javascript">var contentApp = angular.module('myApp', []);contentApp.controller('myContent', function($scope, $http) { $scope.delx = function($index){ if($index>=0){ $http.get("orderDetailDel.do?id="+$index).success(function(response) { $scope.loadInfo(); }); } } //添加配件 $scope.addOrderDetail = function(){ if ($scope.loginForm.$valid) { $http.get("angularOrderDetailInsert.do?pno="+$scope.pno+"&pcount="+$scope.pcount).success(function(response) { var obj = angular.fromJson(response.result); if(obj.status=="nocount"){ alert("该配件库存不足了"); }else if(obj.status=="nopno"){ alert("没有找到该编码的配件"); }else if(obj.status=="error"){ alert("系统内部错误"); }else{ $scope.loadInfo(); $scope.pno = ""; $scope.pcount = ""; $scope.loginForm.pno.$dirty = false; $scope.loginForm.pcount.$dirty = false; } }); } else { $scope.loginForm.pno.$dirty = true; $scope.loginForm.pcount.$dirty = true; } } $scope.loadInfo = function(){ $http.get("angularSellList.do").success(function (response) { var obj = angular.fromJson(response.result); //数据源 $scope.data = obj; //分页总数 $scope.pageSize = 5; $scope.pages = Math.ceil($scope.data.length / $scope.pageSize); //分页数 $scope.newPages = $scope.pages > 5 ? 5 : $scope.pages; $scope.pageList = []; $scope.selPage = 1; //设置表格数据源(分页) $scope.setData = function () { $scope.items = $scope.data.slice(($scope.pageSize * ($scope.selPage - 1)), ($scope.selPage * $scope.pageSize));//通过当前页数筛选出表格当前显示数据 } $scope.items = $scope.data.slice(0, $scope.pageSize); //分页要repeat的数组 for (var i = 0; i < $scope.newPages; i++) { $scope.pageList.push(i + 1); } //打印当前选中页索引 $scope.selectPage = function (page) { //不能小于1大于最大 if (page < 1 || page > $scope.pages) return; //最多显示分页数5 if (page > 2) { //因为只显示5个页数,大于2页开始分页转换 var newpageList = []; for (var i = (page - 3) ; i < ((page + 2) > $scope.pages ? $scope.pages : (page + 2)) ; i++) { newpageList.push(i + 1); } $scope.pageList = newpageList; } $scope.selPage = page; $scope.setData(); $scope.isActivePage(page); console.log("选择的页:" + page); }; //设置当前选中页样式 $scope.isActivePage = function (page) { return $scope.selPage == page; }; //上一页 $scope.Previous = function () { $scope.selectPage($scope.selPage - 1); } //下一页 $scope.Next = function () { $scope.selectPage($scope.selPage + 1); }; }); } $scope.loadInfo();});</script>
    5.7.2 出货单管理在系统主界面点击出货管理模块下的“出货单管理”链接后,右边的内容页就会展示出出货单管理列表,列表中会展示出所有的出货单,可以根据创建时间进行数据过滤。每一条出货单记录右边有查看明细按钮,点击该链接可以查看该出货单的出货明细数据。程序效果图如图24所示。

    5.8 退货模块设计5.8.1 配件退货设计在系统主界面点击退货管理模块下的“配件退货”链接后,右边的内容页就会展示出配件退货界面。在该退货界面需要填入配件编码和数量,如果不填的话angularjs会进行红色字体提示。填好后点击“添加”按钮,程序会使用angularjs的$http.get函数去后台进行查询,如果编码不对则会提示“没有该编码对应的配件”,添加成功后会调用angularjs的列表刷新函数刷新我们下方的退货列表。需要退货的配件添加完后点击“退货”按钮进行统一退货。程序效果图如图25所示。

    5.8.2 退货单管理在系统主界面点击退货管理模块下的“退货单管理”链接后,右边的内容页就会展示出退货单管理列表,列表中会展示出所有的退货单,可以根据创建时间进行数据过滤。每一条退货单记录右边有查看明细按钮,点击该按钮可以查看该出货单的退货明细数据程序。效果图如图26所示。

    5.95.9.1 进货统计在系统主界面点击统计管理模块下的“进货统计”链接后,右边的内容页就会展示出进货统计的数据列表。程序效果图如图27所示。

    进货统计的核心代码其实就是sql语句,其核心代码如下:
    String sqlString = "select c.pname,sum(a.pcount) as allcount,sum(a.price*a.pcount) as allprice from t_OrderDetail a left join t_ProductDetail b on a.pno=b.pno left join t_Product c on b.fkpid=c.id left join t_Order d on a.fkoid=d.id where a.id<>0 ";if (null != map.get("status")) { sqlString = sqlString + " and d.status = '" + map.get("status")+ "'";}sqlString = sqlString + " group by c.pname";Query query = ht.getSessionFactory().getCurrentSession().createSQLQuery(sqlString);query.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
    5.9.2 出货统计在系统主界面点击统计管理模块下的“出货统计”链接后,右边的内容页就会展示出出货统计的数据列表。效果图如图28所示。

    6 系统测试6.1 测试目的每一个项目的最后都要经过反复无数次的测试才能放心的投入使用。通过测试我们可以了解到系统存在哪些不足,哪些功能还不能够实现,哪些性能还可以再优化。其实在程序开发的过程中,我们一般也是边写程序边测试的,每做完一个模块,就会刷新页面看是否能实现,这也叫测试。测试的目的就是为了更好的呈现系统,使系统达到我们的预期效果。
    6.2 测试方法说明当然 ,测试的方法有很多种,在大学的课程中,我们听到的最多的就是白盒和黑盒测试,下面对这两种方法进行说明:

    黑盒测试是在程序接口进行的测试,它只检查程序是否能适当的接收输入的数据并产生正确的输出信息,程序运行过程中能否保持外部信息的完整性。黑盒测试又称为功能测试[9]
    白盒测试和黑盒测试相反,它的前提是可以把程序看成装在一个透明的白盒子里,测试者完全知道程序的结构和处理算法。白盒测试又称为结构测试[10]

    6.3 测试用例设计本次介绍的用例是验证用户名和密码错误时,系统是否提示并阻止登录。如果说登录功能都有问题的话,那后面的大块功能则无法正常使用,所以我们进行了这个测试用例的设计。测试表如表7所示。

    6.4 系统测试6.4.1 功能测试
    对用户登录模块的功能测试:用户首先进行登录,登录的时候需要验证用户,每个员工都有自己对应的用户名和密码,只有当用户名和密码都正确时才能登录成功。用户登录时还会有验证码,验证码为2个数字,随机给出
    数据删除测试:点击删除按钮时可以删除数据
    数据编辑测试:点击编辑按钮时可以修改相关数据

    6.4.2 页面交互测试经过页面交互测试,华柳挖掘机配件营销中心销售系统中的所有功能都可以按照要求链接到应当跳转的页面。
    6.4.3 系统性能测试在稳定性方面,采用多人多次登录该系统的方式,每次登录后进行用户及简单应用的扫描,等全部功能的测试。经过多次测试,系统功能总体比较稳定,但由于环境限制,无法测试更多。
    6.5 测试结果分析通过不断的对每一个模块进行测试,还是发现了一些问题,比如有时候提示404,进入不了页面,有时候按钮点击没反应,在发现这一些错误和漏洞后,会及时将这些错误加以修改,并且这些问题解决之后,再对系统进行集成测试。测试结果表明系统可以达到所需要求,各部分测试都能达到理想状态。其实不光是最后的测试,在系统的开发过程中,我也边开发边测试,只要做好了一个功能,都会运行看看,如果有错误就及时修改。通过对这些错误的修改,发现更多的错误来源于对语法的理解不够透彻,所以在以后的开发过程中会尽量避免类似的错误。
    7 结论经过数月程序的开发学习,我把以前在课堂上所学的知识都运用在了系统上,且对数据库也进行了系统的研究,终于完成了我的毕业设计华柳挖掘机配件营销中心销售系统。经过测试,网站已经全部实现了一开始所设计的所有功能,如注册登录、重置密码、销售管理、配件管理和查找统计等。系统性能良好,运行正常,具有较强的可移植性和安全性。通过对华柳挖掘机配件营销中心销售系统的开发,体会了一次完整的项目开发后,使得我对软件开发有了更加真实的感受。
    论文一开始从管理系统的现状出发,再结合目前挖掘机配件销售市场的情况,总结出目前开发这个系统的必要性与它能起到的实际作用。然后通过做需求分析,从多个方面来剖析开发这个系统需要做哪些前期准备,也罗列出了自己的需求分析细节。再次向大家介绍了整个系统的结构,以及数据库怎么设计表的,以及具体到每张表的字段设计。然后再介绍个整个系统的实现,通过各个模块截图的方式向大家进行了展示。最后是测试结果。系统虽然已经完成,但是还是有很多不完善的地方,这在以后还需要继续进修与学习。
    参考文献[1] 肖金秀.JSP程序设计教程[M].冶金工业出版社,2003.9.
    [2] 施伯乐等.数据库实用教程(第二版).清华大学出版社 2003.11.
    [3] 史济民 顾春华等.软件工程——原理、方法与应用(第二版).高等教育出版社,2002.12.
    [4] 飞思科技产品研发中心.JSP应用开发祥解(第二版).电子工业出版社,2004.01.
    [5] 王国立、李国立等.JSP数据库系统开发完全手册.人民邮电出版社,2006.03.
    [6] 林杰斌,刘明德.MIS管理信息系统:交叉与发展[M].北京:清华大学出版社,2006.
    [7] 卫红春,方明.信息系统分析与设计[M].西安:西安电子科技大学出版社,2003,
    [8] 王克宏,郝建文.Java技术教程(基础篇) [M] .北京:清华大学出版社,2002,
    [9] David Flanagan著,林剑、王宇飞译.Java实例技术手册[M].北京:中国电力出版社,2005.
    [10] 汤化平.SQL Server实训教程[M].北京:清华大学出版社,2005.
    0 评论 1 下载 2020-08-07 10:35:00 下载需要12点积分
  • 基于Java的仓库货物管理系统

    摘 要仓库货物管理系统用人工方式进行管理不仅效率低下,且易出错,安全性差。导致了管理费用增加,服务质量难以得到保证。本人设计该系统,就是为了解决以上这些问题。其目的在于实现仓库货物信息管理和出入库记录的快速高效检索,使操作简单安全,提供工作效率和质量.
    进入本系统后,用户可进行相应的功能操作。管理员可对各货物信息以及入库、出库信息等的修改和查询,进行进货管理、出货管理、统计操作等现代化的仓库货物管理。通过此系统,可以全面对仓库、货物信息进行录入、查询、修改等.
    关键词:货物信息管理(Staff);进出货管理及记录(Ruku、Chuku);统计(Statistics);查询(Inquire)
    一、开发背景在计算机飞速发展的今天,将计算机这一高效的信息处理工具应用于仓库的日常管理已是势在必行,而且这也将为仓库管理带来前所未有的改变,它可以带来意想不到的效益,同时也会为企业的飞速发展提供无限潜力。采用计算机管理信息系统已成为仓库管理科学化和现代化的重要标志,它给企业管理来了明显的经济效益和社会效益.
    二、需求分析在实施一个项目之前,首先要对将要实施的项目进行可行性分析,确定项目是否值得进行。并不是所有的问题都有简单明显的解决办法,事实上,许多问题不可能在预定的系统规模之内解决。如果问题没有可行解的话,那么花费在这项工程上的任何时间、资源、人力和经费都是浪费的。

    管理可行性:信息化的仓储管理在如今的信息时代是大势所趋,而且随着现代管理理念、方法和途径 的发展,仓储信息化管理手段日渐成熟,也必定会突飞猛进,所以从长远利益出发,主管领导对该项目的开发与实施会大力支持
    技术可行性:本系统数据库选用开发JDE选择MyEclipse8
    经济可行性:采用仓储管理信息系统可取代原系统的单据手工传递工作,减少人工开支,节省资金,并且可大大提高信息量的取得,缩短信息处理周期,规划企业资源,使企业管理质量更上一个台阶
    营运可行性:本系统操作简单,易于理解,只需通过简单熟悉,上手较快,库管人员均能进行操作,营运环境要求低。面对于系统设计还应该以“标准性、安全性、兼容性、高效性、保密性、可维护性”为标准,在着眼于当前实用的基础上,为将来系统的扩展,升级留有余地。软件的开发应能在较长时间内满足学校的发展需要。 通过可行性分析研究,认为系统的开发方案切实可行,可进行开发 .

    三、模块说明将系统的各个功能分成不同的模块,从而可以方便各个模块的管理和修改,提高系统的简洁、便利和实用性能。
    3.1 用户登录模块
    功能描述:此模块的主要功能是实现用户登录
    输入:用户对象
    输出:对应用户

    3.2 普通员工模块
    功能描述:此模块的主要功能是实现对商品的出入库管理,查询功能
    输入:入库货物的信息,出库货物的信息,查询商品的关键字
    输出:查询的货物属性

    3.3 管理员模块
    功能描述:此模块的的主要功能是实现对商品的统计,修改功能
    输入:统计的商品关键字,修改的商品的关键字
    输出:符合统计关键字的所有信息,修改后的商品属性

    四、详细设计仓库管理系统主要管理货物商品的进出,有出入库记录,对商品的参数修改和商品的查询,以及对出入库和商品的统计。
    4.1 商品(Commodity)类
    类名:Commodity
    继承父类:无
    实现接口:无
    概述:主要是包含商品的属性
    属性及说明:
    private String name; //品名private String guiGe; //规格private String chanDi; //产地private String texturn; / /材质private int total; //总量
    方法及说明:无

    4.2 员工(Staff)类
    类名:Staff
    继承父类:无
    实现接口:无
    概述:主要是员工的属性、管理商品
    属性及说明:
    public String name;public String ID; int N = 100; //对象可以存放的容量Commodity[] commodity = new Commodity[N];Ruku [] ruku = new Ruku[N];Chuku [] chuku = new Chuku [N];
    方法及说明:无

    4.3 管理员(Administrator)类
    类名:Administrator
    继承父类:Staff
    实现接口:Statistics
    概述:主要实现统计和修改数据
    属性及说明:无
    方法及说明:
    public void statistics() { } //统计public void Amend() { } // 修改功能

    4.4 普通员工(GemeralStaff)类
    类名:GemeralStaff
    继承父类:Staff
    实现接口:EnterOrCome、Inquire
    概述:主要实现入库数出库和查询数据
    属性及说明:无
    方法及说明:
    public void Enter() { } //入库public void Come() { } //出口库public void inquire() { } //查询

    五、系统实现5.1 主界面
    说明:进入系统,选择你的身份,从而进入不同权限的界面进行操作。
    5.2 管理员模块
    说明:管理员界面,可以对商品、入库记录、出库记录进行统计和修改功能。
    5.3 普通员工模块
    说明:普通员工界面,可以对商品进行查询、入库、出库管理。
    参考文献[1] 佚名. Java面向对象程序设计教程[M]. 2004.
    [2] 黄俊爽,李聪,李相俭,等.浅谈Java面向对象程序设计[J].科技信息, 2010(13):47-47.
    [3] 佚名.Java面向对象编程[M]. 2006.
    [4] 佚名.Java面向对象程序设计教程[M].2005.
    [5] 佚名.Java面向对象程序设计实验教程[M].2015.
    [6] 佚名.Java面向对象程序设计与系统开发[M].2015.
    [7] 佚名.Java面向对象程序设计[M].2014.
    [8] 佚名.Java面向对象程序设计 (JDK 1.6)[M]Java面向对象程序设计:JDK 1.6. 2010.
    [9] 佚名.Java面向对象程序设计实践教程[M].2015.
    [10] DavidM.Arnow.Java面向对象程序设计:第2版[M]Java面向对象程序设计: 第2版.2004.
    0 评论 1 下载 2020-08-07 10:34:50 下载需要8点积分
  • 基于Java的员工培训管理系统

    摘 要随着信息技术的迅速发展,信息资源数字化、网络化的进程进一步加快,信息化的管理系统越来越重要。在本次的课程设计中我们小组选择的是员工培训管理系统作为我们课程设计的目标程序,本程序采用的是java计算机语言编写,主要思想为面向对象的思想。这个程序的是个关于员工培训的管理系统,主要功能是注册员工的系统账号,ID,以及密码进行保存于系统中,登入员工账号后可以进行选择培训课程类型和难度,对课程的余量进行查询,对自己信息的修改。
    为完成以上功能我们分出四个类,分别为ManageInformation类,Register类,Test类,TrainRegister类。以组长为小组的核心,两个组员分别负责Register类和
    TrainRegister类,组长负责ManageInformation类和Test类,由组长进行汇总,再由整个小组一起做最后的修改、调整、编译、运行,最后将程序完成。
    在本次的课程设计中,我们通过将整个系统分为各个类分给各个组员完成,并最后将他们整合起来完成了本次的课程设计,在这次的课程设计中我们所用的是Eclipse的编译软件,利用数组等方式大大减少的程序的行数,同时充分的将Java计算机语言中的面向对象的思想融入到程序中。
    关键词:用户;培训;管理;系统;课程;Java;eclipse
    一、开发背景当代社会也就是一个信息时代,人的生活离不开计算机,更加离不开计算机程序。
    由于计算机技术的飞速发展,数据库技术作为数据管理的一种有效的手段,在各行各业中得到广泛的应用。传统的员工培训管理办法已经限制了企业的高速发展,而高效的程序员工培训管理系统能够提高企业整体的科技含量与管理效率,加快企业的信息化建设。该管理系统以JAVA为开发语言,可以满足绝大部分的企业对员工培训管理系统的要求
    二、需求分析本程序是一个小型的员工培训管理系统,主要应用与企业、学校、政府部门等企业单位,以使他们能对档案进行简便的管理。程序能方便的管理用户个人信息和培训课程信息,包括添加、删除、修改、查询等。
    本程序用的是java开发语言,操作界面简单易懂,便于用户的使用,
    三、模块说明3.1 用户注册模块
    功能描述:此模块的主要功能是实现用户注册。系统的用户必须在注册获得合法身份之后才能登录系统进行对应的操作。此外本模块还提供用户登录功能,最后通过一个对象数组把注册用户的信息保存起来,也提供了相应的信息查看功能
    输入:用户账号、用户名、密码
    输出:注册成功
    登录:输入用户账号、密码和对象数组中的信息对比
    用户信息:可以查看指定用户信息,也可以查看所有用户人信息

    3.2 管理用户信息模块
    功能描述:此模块的主要功能是实现对用户信息添加、删除、查找、修改的功能
    添加用户信息:输入用户的ID、user、cold、科目、培训登记,读入到用户注册对象书中,目前该功能只能实现顺序添加,更多的功能期待以后的程序完善
    删除用户信息:输入要删除用户的对象数组下标,如果该位置有人注册了,则对该用户的信息进行删除,删除该用户的信息后,该用户的信息全部置为NULL
    查找用户信息:输入想要查找的对象数组下标号,从对象数组中进行数组对比,有该用户信息则输出用户信息,说明查找成功
    用户信息修改:输入想要修改的对象数组下标号,定位到该位置上,就可以对该用户所有信息进行修改

    3.3 培训课程报名模块
    功能描述:此模块的主要功能让用户选择自己想要培训的课程和相关课程的难度。报名成功后把用户信息存储在用户信息对象数组中。还新增了查看培训用户信息情况功能,该功能更用来提示用户当前课程人数情况。那些是可以选择的,每门课程的最多人数为50人
    输入:想要培训课程,难度
    输出:可选择的课程和相关的难度
    查看培训用户课程情况:在主函数中调用本类中的方法实现

    3.4 测试模块
    功能描述:提供了一个用户界面窗口,主函数通过提示用户输入相应的数据调用方法实现相应的功能
    四、详细设计4.1 Register类
    类名:Register
    继承父类:无
    实现接口:无
    概述:用户信息注册、登录、存储用户信息、查看用户信息
    属性及说明:
    String id; //用户账号String user; //用户名String cold; //用户名String kemu; //用户培训科目String level; //用户培训科目等级
    方法及说明:
    Register()默认构造方法Register(String id, String user, String cold,String kemu,String level){}设置用户信息构造方法 Register(String id, String user, String cold) //用户注册构造方法public void show(Register userInformation[] ,int a) //查看所有用户信息方法public void show1(int y,Register userInformation[] )//查看特定用户信息方法public void land2(Register[] userInformation1, String id,String cold,int a)//用户登录方法

    4.2 ManageInformation类
    类名:ManageInformation
    继承父类:无
    实现接口:无
    概述:用户信息添加、删除、查找、修改
    属性及说明:无
    方法及说明:
    public void add( Register b,Register userInformation1[],int x)//指定位置添加用户信息方法public void del(Register userInformation1[],int x ) //删除指定用户信息方法public void search(Register userInformation1[],int x ) //查找指定位置的用户信息方法public void change(Register userInformation1[],int x)//修改用户指定位置用户信息方法

    4.3 TrainRegister类
    类名:TrainRegister
    继承父类:无
    实现接口:无
    概述:用户科目报名、科目信息查看
    属性及说明:
    String kemu[]={"AI","bigdata","engineer"}; //可以选择的科目String level[]={"basic","medium","high"}; //科目的等级
    方法及说明:
    public void kemuxinxi() //查看可以选择的科目方法public int choosekemu(String name,int x1[]) //选择科目方法public void nandu(String level1) //查看科目等级难度方法TrainRegister(Register userInformation2[],int a1[],int a) //查看科目人数信息构造方法TrainRegister() //默认构造方法

    五、系统实现5.1 主界面
    (说明)主菜单根据用户输入的数字选择不同的功能,输入1可以实现用户注册功能;输入其他的数字可以实现不同的功能。
    5.2 注册功能
    (说明)输入1实现注册功能,用户根据提示输入账号、用户名和密码。
    5.3 登录功能
    (说明)输入2实现登录功能,用户根据系统提示输入账号和密码登录系统。
    5.4 培训报名功能
    (说明)输入3实现培训报名功能,用户根据系统提示输入报名课程、课程难度完成报名
    5.5 显示用户信息功能
    (说明)输入4实现显示用户信息功能,可以查询某一个人的信息和查询所有人的信息,输入1可显示所有人的信息,系统提示显示某一个的信息只需要输入一个0—49的数字即可显示。
    5.6 查询课程情况功能
    (说明)输入5实现查询课程情况功能,会显示每个课程的报名人数以便于用户了解每个课程是否还能进行报名。
    5.7 管理信息功能



    参考文献[1] 邢如意. Java语言中对象的理解与应用[J]. 软件工程, 2017(4).
    [2] 江伟.构建面向计算思维的Java程序设计课程教学模式的研究[J].软件导刊(教育技术), 2018, v.17;No.163(07):80-81.
    [3] 黄艳峰,陈涛.Java构造方法解析[J].河南科技, 2016(3):37-38.
    [4] 黄国华. Java程序设计课程中“类与对象”的教学实践[J].新校园:上旬刊, 2016(5):91-91.
    [5] 周本海.基于面向对象程序设计教学的改革方法研究[J]. 考试周刊, 2015(14):10-10.
    [6] 李茂民.《JAVA语言程序设计》课程教学改革实践探讨[J]. 软件工程师, 2015(5).
    [7] 刘灵敏,谢倩,胡婧, et al.“Java语言程序设计”课程教学改革与实践[J].亚太教育, 2015(12):90-90.
    [8] 宋海洋.基于JAVA的汽车销售订单管理系统[D].
    [9] 宋俊玲.基于jsp+javabean技术的图书管理系统[J]. 电子技术与软件工程, 2014(16):216-216.
    [10] 张泽,雷光波. 基于Java Web的创新创业管理系统设计与实现[J]. 软件导刊, 2017, 16(2):113-115.
    0 评论 1 下载 2020-08-07 10:34:30 下载需要8点积分
  • 基于JAVA着色理论的排课问题研究

    一、绪论1.1 研究背景和意义随着计算机科学技术的不断发展,各个行业信息化、科学化不断推进。高校如何才能提高办学的效率,这是每个高校都会面临的,也是每个高校需要迫切解决的问题。而采用信息化手段来代替传统的教学管理模式是一个重要的途径。在高校各项教学管理工作中,排课一直是最基本的、最重要的工作,其实质就是给教学计划中设置的课程安排合适的时间和地点,保证整个教学工作能够顺利地进行;同时,排课工作也是一项很复杂的工作,排课是一个NP完全问题,就是始终找不到一个最优的方法能够解决的问题,因为这个问题涉及了多种因素进行组合规划,有教师、学生的因素,也有教室的因素,尤其在目前各高校规模不断扩大,教学资源面临紧张,教师总数不足的前提下,排课工作问题更为凸出。
    排课问题是S.Even在1975年证明了的NP难问题,在排课过程中需要综合考虑很多要素,比如年级、课程种类、教室容量、教师类型、上课时间、教师等等,以实现教学资源的合理规划。因此,如何对高校课程进行优化排列,提高学校教师、教室以及配套教学资源的利用率是各个学校追求的目标。排课问题涉及到教学资源的配置问题,更关系到各学校教学目标能否实现,已经成为国内外众多学者关注的焦点。高校排课问题属于时间表问题,该问题的解决不仅可以有效处理高校扩招、学分制推行等改革过程中遇到的资源紧缺问题,还能对其他时间表类问题给予一定的借鉴意义,如教育系统的考试安排问题、行政或商业部门的会议安排问题、交通部门的车辆时刻安排问题等。课程表是编排课程的表。科学的课程安排才能调度全校师生的教学活动,使学校的教学工作有序进行。所以,高校相关机构和人员需要对课程进行合理编排。早先,高校是通过人工的方式进行课程编排,不仅浪费了大量的人力和精力,还可能会由于某种情况考虑不周出现排课冲突。
    1.2 国内外研究现状1.2.1 国外研究现状排课问题是一个多目标有限资源、带有约束条件的组合规划问题。排课系统已经成为国内外众多高校及软件公司的研究课题,取得了许多方面的理论。国外针对排课问题展开的研究较早。1963年Gotlieb在他的文章《The Construction of Class-Teacher Time-Tables》中提出了课表编排的数学模型。虽然之后人们对课表问题的算法等问题做了很多的探索,但是大多是都是在Gotlieb提出的数学模型的基础上简化或者是补充。1976年,Bondy用图的边染色算法来解排课表问题。排课问题被S.Even等人证明具有NP难度,并被理论化。1976年S.Even在其论文《The Complexity of Timetable And Multi Commodity Flow Problem 》中,第一次证明了课表问题是NP完全的。S.Even的论证进一步地将人们对课表问题复杂性的认识提高到理论高度。
    1.2.2 国内研究现状国内对排课问题的研究较晚,开始于20世纪80年代初期,1984年,清华大学在《清华大学学报》上发表了林漳希和林尧瑞在该课题上的实验性研究成果《人工智能技术在课表编排中的应用》。伴随着计算机普及、教务管理信息化的脚步,许多的学校也进行了一些排课自动生成软件的研究,相应的教务管理软件如雨后春笋般地涌出,成型的系统早期的有南京工学院的UTSS (A University Timetable Scheduling System).清华大学的TISER (TimerableSchedu1ER),大连理工大学的智能教学组织管理与课程调度系统以及大连理工大学的课程调度系统等。总体来说,这些排课系统可分为两类,一类适合投课时同相同,单班教学的学校情况,显然,这与很多高校的实际教学不一致,所以不具有大众性。一类适合以“教学班”的形式投课,这一类总体比第一类而言,结合了图论中的调度问题,且多与图论中染色问题有关。第二类排课系统的出现,在当时影响很大,虽然有些没有连具体的模型都没有,但是确实与很多学校的实际情况更接近了一步。其次,各种不同算法的数学模型也相应而生,黄干平等提出使用模拟退火算法求解课表间题,采用该方法对中学排课问题进行了实验,该方案的不足之处在于对“温度”设定单调递减,禁止出现预计中的回火问题。束礼菊提出整数规划模型,该模型根据高校村课系统中各位教师对每门课的乐教度与熟练度,统计出相应的绩效评价系数,在此基础上,列出了排课系统中的六项目标,以实现教师群体最优绩效为总目标,以其他目标为约束条件,采用整数规划模型将指派教师讲授各班级特定的课程这一人文决策过程转化为数学组合问题:来优化高校排课,该模型只把教师群体最优绩效为总目标,没有考虑学生群体的特点,因此模型还须进一步改进,李琪等采用遗传算法对排课系统进行建模,得到各班级的课程安排和时间安排、最后在此基础上通过矩阵运算得到上课地点,不足之处在于对部分约束条件未能完全与算法结合。动态规划理论被应用于高校教学管理当中,得出了教学管理中重要的环节-排课的最优策略,另外,图论算法也被用于排课系统中来设计模型。
    1.3 本文主要任务本文从排课问题的研究背景、意义及研究现状,分析排课问题的必要性,研究探讨了几种解决排课问题的算法,结合实例分析比较它们的优点和缺点,最终结合图论着色理论给出一种排课算法。

    第一章绪论:介绍本文的研究背景及意义、排课问题研究现状和本文研究内容
    第二章图论基本概念和理论:概述图论有关概念以及着色理论,包括图的分类、点染色、边染色和全染色等着色理论
    第三章排课问题算法分析与比较:分析研究几种经典的排课问题算法,比较其优缺点
    第四章排课问题研究:分析排课问题因素和约束条件,并且结合学校排课实例给出图染色排课算法的应用,解决教师、班级、教室的时间冲突现象
    第五章总结与展望:总结本文工作,指出本文研究不足之处,以及下一步要做的进一步研究工作

    二、图论基本概念和理论2.1 图的分类
    无向图:边集E(G)为无方向边的集合,任意一条边都代表u连v,以及v连u,每条边都是双向的。如图1所示
    有向图:边集E(G)为有方向边的集合,每条边都是单向的,即只能由一个点指向另一个点。如图2所示
    带权图:边集E(G)是每条边上有权值的边的集合,同理,带权图也有有向带权图和无向带权图之分,当然,不加权的图可以看成所有边上的权值都是 1。如图3
    完全图:对于图中任意两个顶点都是相邻的,称之为完全图,如图4所示
    无向完全图:在阶无向图中,图中任意两个顶点间都有一条边相连,则该图称为无向完全图,如图4所示
    有向完全图:在阶有向图中,图中任意两个顶点间都有方向相反的边相连,该图称为有向完全图,如图5所示
    二部图:设无向图图中,如果图中顶点集 V 可划分为两个互不相交的非空子集X和Y,并且图中的每条边有一个端点属于子集X,另一个端点属于子集Y,则称图G为一个二部图,如图6所示
    简单图:在无向图中,如果关联一对顶点的无向边多于一条,则称这些边为平行边,平行边的条数称为重数。而自环是两端连接着同一端点的边,那么既无环也无平行边的图就是简单图。如图1所示


    2.2 着色理论2.2.1 图的染色关于图的染色类型有很多,比如图的点染色、边染色、全染色、邻接边染色等,其中最具有代表性的是点染色、边染色和全染色。
    点着色
    给定图G = (V, E),设顶点集 V(G)={v0,v1,..,vn−1}V(G)=\lbrace v_0, v_1, .. , v_{n-1} \rbraceV(G)={v​0​​,v​1​​,..,v​n−1​​} 则其点着色是指将图G中顶点集V(G)中的每个元素进行染色,顶点全部染色之后,要求使每个邻接顶点的颜色不同。换句话说,在给定颜色集C(k) = {1,2, … , k}之后,可以将顶点集划分成多个相互独立的子集形式 V(K)={v1,v2,..,vn−1,vn}V(K)=\lbrace v_1, v_2, .. , v_{n-1}, v_n \rbrace V(K)={v​1​​,v​2​​,..,v​n−1​​,v​n​​} 要求每个子集中的顶点之间无邻接顶点,然后在给定的颜色集合C(k)中选取一种颜色对每个子集进行染色,使每个子集的颜色互不相同,这也被称为图G的正常k-染色。图G的全体正常 k-染色构成的集合通常记为 Cvk(G) C_{vk}(G) C​vk​​(G) 简记为 Ck(G) C_k(G) C​k​​(G) 。若Ck(G)≠∅ C_k(G) \neq \emptyset C​k​​(G)≠∅,即图G中至少有一个正常k-点染色,就称图G是正常k-点可染色,使图G正常k-点可染色的k的最小值称为图G的色数,用x(G)来表示图G的色数,若x(G) = k,则称图G是k-色图。
    那么对于k有没有取值范围呢?若对于完全图G是正常k-点可染色的,很显然,k ≥ x(G),x(G) = ∆(G) + 1, ∆(G)表示图G中的最大度数。1941 年 Brooks 给出了一个重要的结论:若G是一个非完全连通图且∆(G) ≥ 3,则称图G是∆(G)-点可染色的。并且由此结论可以导出另一个结论:若非完全连通图G是k-点可染色的,那么k的取值范围是x(G) ≤ k ≤ ∆(G),但由于对任一平面图,可以构造出顶点度数任意大的平面图,所以该结论的范围太大。
    边着色
    类似于邻接顶点一样,对于图G中也有邻接边的概念:图G中的任意两条边 和 ,若这两条边有且仅有一个公共顶点,则称这两条边是邻接边。若把图G的顶点染色看成是从顶点集V(G)到颜色集C(k)的一个映射,即f:V(G)→C(k),设定∀v1∈V(G),v2∈V(G) \forall v_1 \in V(G), v_2 \in V(G) ∀v​1​​∈V(G),v​2​​∈V(G),并且 v1v_1v​1​​ 和 v2v_2v​2​​ 是邻接结点,那么该映射f需要满足 f(v1)≠f(v2)f(v_1) \neq f(v_2)f(v​1​​)≠f(v​2​​) 。
    仿照这种定义,同样地,我们也可以把图的边染色用映射来定义:把图G的边染色看成是图G的边集E(G)到颜色集C(k)的一个映射f:E(G)→C(k),设定 e1∈E(G),e2∈E(G) e_1 \in E(G), e_2 \in E(G) e​1​​∈E(G),e​2​​∈E(G) ,并且 e1e_1e​1​​ 和 e2e_2e​2​​ 是邻接边,那么该映射f需要满足 f(e1)≠f(e2)f(e_1) \neq f(e_2)f(e​1​​)≠f(e​2​​)。用简记的 Ce(G)C_e(G)C​e​​(G) 来表示图G的正常k-边染色。若 Ce(G)≠∅ C_e(G) \neq \emptyset C​e​​(G)≠∅,即图G中至少存在一条正常k-边染色,则称图G是k-边可染色的。用 x′(G)x^{\prime} (G)x​′​​(G) 来表示图G的边色数,即使图G为k-边可染色的最小值。若 x′(G)=kx^{\prime} (G) = kx​′​​(G)=k ,则称图G是k色图。
    1964 年 Vizing 和 1966 年 Gupta 分别独立研究完成了边色数 x′(G)x^{\prime} (G)x​′​​(G) 的取值范围。
    性质:设在简单图G中, v1v_1v​1​​ 和 v2v_2v​2​​ 是图G中两个不相邻的顶点,γ是G的正常k边染色,若对该染色γ, v1v_1v​1​​ 和 v2v_2v​2​​ 以及与 v1v_1v​1​​ 相邻的点均至少缺少一种颜色,则 G+v1v2G + v_1 v_2G+v​1​​v​2​​ 也是k边染色的。
    定理:若图G是一个简单图,则其边色数 x′(G)=Δ(G)x^{\prime} (G) = \Delta (G) x​′​​(G)=Δ(G) 或者x′(G)=Δ(G)+1x^{\prime} (G) = \Delta (G) + 1 x​′​​(G)=Δ(G)+1。
    全着色
    图的全着色(total coloring)是指给图的顶点和边都分配颜色。
    定义:图G = (V, E)的一个k-全染色是从 V∪EV \cup EV∪E 到C(k) = {1,2, … , k}的一个映射f:假设对 ∀e1,e2∈V∪E \forall e_1, e_2 \in V \cup E∀e​1​​,e​2​​∈V∪E ,其中 e1e_1e​1​​ 和 e2e_2e​2​​ 是两个相邻或相伴的元素(这里 e1e_1e​1​​ 和 e2e_2e​2​​ 并不是表示边,是表示 V∪EV \cup EV∪E 中的元素),有 f(e1)≠f(e2)f(e_1) \neq f(e_2)f(e​1​​)≠f(e​2​​) ,则称f是图G = (V, E)的一个正常全染色。同时,图G的全色数记作 Xγ(G)X_\gamma(G)X​γ​​(G), Xγ(G)X_\gamma(G)X​γ​​(G) 可以用下式表示:
    Xγ(G)=min(k∣exist a k−total coloring)X_\gamma(G)=min(k|exist \space a \space k-total \space coloring)X​γ​​(G)=min(k∣exist a k−total coloring)三、排课问题算法分析与比较早期解决排课问题,更多是使用传统算法和精确算法,包括动态规划法、贪婪算法等等。这类算法在面对规模较小的问题时可以获得较优解,但遇到大规模问题需要花费大量时间,并且不能获得理想的结果。 目前普遍使用的是现代启发式算法,又称为智能算法。在解决复杂优化问题时,启发式算法可以获得令人满意的解,并且花费的时间在可接受范围内。遗传算法、蚁群算法、模拟退火算法都是目前常用的启发式算法。
    3.1 动态规划法动态规划是运筹学领域中一个重要的分支,一般用来解决决策过程的最优化。20 世纪 50 年代初,美国数学家 R.Bellman 等人通过对多阶段决策过程优化问题的研究,提出了“最优化原理”理论。该理论的思想是在解决复杂的多阶段过程问题时,先把复杂问题分解为更小的、相似的子问题,再利用子问题之间的关系逐个求解,解决最优化问题的动态规划法也因此诞生。1957 年 R.Bellman 出版了关于动态规划法的第一本著作《Dynamic Programming》目前,动态规划被广泛应用于多个领域,例如路径规划、资源分配、航天飞机飞行控制等。
    动态规划法解决排课问题,需将问题逐级分解,直至子问题能直接求解为止,在分解后,降低了问题的复杂程度。动态规划法求解排课问题首先需要描述问题的特征,其次递归最优解,并自底向上的计算最优解,最后依据每一步获得的局部最优解,构成全局最优解。
    3.2 模拟退火算法1953年,美国物理学家 N.Metropolis 发表了关于研究计算复杂系统能量分布的文章,在研究中采用蒙特卡罗模拟法计算多分子系统中分子的能量分布在研究中采用蒙特卡罗模拟法计算多分子系统中分子的能量分布。Kirk patrick 等学者借鉴 Metropolis 的方法探讨一种旋转玻璃态系统时,发现其物理系统的能量和组合最优问题的成本函数相当类似,即寻求最低成本相当于寻求最低能量。由此,他们提出以Metropolis 方法为基础的一种新型算法,并用其来求解组合问题的最优解。1982 年,Kirk patrick 等人在《Science》发表文章《Optimization by Simulated Annealing》,该文章中首次提到模拟退火算法。
    模拟退火算法来源于退火原理,退火是指将固体加热到足够高的温度,使分子呈随机排列状态然后逐步降温使之冷却,最后分子以低能状态排列,固体达到某种稳定状态。目前,模拟退火算法在图像识别、神经网络、生产调度问题中得到广泛的应用。模拟退火算法求解排课问题首先要初始化排课问题关联的参数,设计排课约束条件,其次根据约束条件生成初始课表,并采用初始课表作为初始解,然后构建解决问题的目标函数,最后根据目标函数求解极小值。
    3.3 遗传算法1967 年美国 Michigan 大学 John Holland 教授的学生首次在其论文中提出“遗传算法”一词,并在此后几年时间,多次发表关于遗传算法研究的论文。直至 1975 年,J. Holland出版了《Adaptation in Natural and Artificial Systems》,这是第一本讲述遗传算法的专著,因此也把 1975 年作为遗传算法诞生的一年。同年 K.A.DeJong 发表了他的博士论文《An Analysis of the Behavior of a Class of Genetic Adaptive System》该论文将他的实验测试与 J. Holland 的理论结合,对遗传算法解决最优化问题具有重要的意义。近些年我国学者对遗传算法进行了深入的研究,王冠等人提出了使用并行遗传算法解决大规模组合规划问题的方法,与基本遗传算法相比在搜索解的速度上有了提高。牛慧兰等学者在解决背包问题时采用遗传算法,并结合禁忌搜索的思想,试图用遗传算法做全局搜索,禁忌搜索辅助做局部搜索,这一尝试在获取全局最优解方面有了的进展。
    遗传算法是启发式算法的一种,它模拟了生物世界中适者生存、优胜劣汰的自然进化过程。作为成熟的全局优化算法,遗传算法相比于传统算法有更好的优势。主要因为遗传算法拥有更好的自行组织搜索能力,在自适应和自学习能力方面表现突出,并且算法不需要求导或其他辅助知识,寻优的过程中由概率决定,而不是确定性的,同时遗传算法可以直接应用,具有高扩展性。但同时遗传算法也存在不足,体现在以下几方面:遗传算法基本参数的选择与解的质量相关,但目前这些参数的选择大部分是依赖经验,且需要根据具体问题的规模进行实验后才能确定,普遍适用性较差;编码实现过程较为复杂,当获得最优解后还需对其进行解码;问题求解规模较大,遗传算法容易过早收敛于局部最优解。目前,遗传算法更多应用于排课、生产调度、机器学习、图像处理和模式识别等问题。但求解规模过大时遗传算法容易陷入早熟,因此现在也常用遗传算法和其它算法协同使用解决问题。
    3.4 蚁群算法20世纪90年代初,意大利学者 Marco Dorigo 在欧洲人工生命会议上提出一种通过模拟蚂蚁觅食行为的算法——蚁群算法,由此蚁群算法第一次在人们的视线中出现。1996年,Marco Dorigo 等学者发表文章《Ant system:optimization by a colony of cooperating agents》,在文中对蚁群算法的核心思想进行了进一步的阐述,Marco Dorigo 等人还在1988年组织举办了蚁群算法的国际会议,此后会议每两年召开一届。蚁群算法作为正反馈算法,常用于处理优化问题。蚁群算法在问题空间内展开独立的解集搜索,每只蚂蚁在搜索过程中都是一个独立的个体,它们之间只通过信息素进行沟通,因此蚁群算法有优秀的全局搜索能力。蚁群算法自身的优势很多,但是遇到群体规模较大的求解问题时,蚁群算法容易出现早产或者信息素更新停滞的现象,需要花费大量的时间才能找到最优的解。蚁群算法最早用来解决路径规划问题,并取得了一定的成效,目前该算法多用于解决图像边缘检测、网络路由、网络路由和车辆调度问题等。
    3.5 禁忌搜索算法禁忌搜索算法(Tabu Search,简称 TS)在 1986 年由美国科罗拉多大学的 Fred Glover 教授提出。它是一种全新的启发式算法,不再像以往算法一样在局部邻域内搜索,而是在全局范围内开展逐步寻优策略。TS 算法的优点是具有“记忆”功能,在搜索过程中遇到局部循环时,可以依靠禁忌表和特赦操作,准确地跳出局部最优,进而逐步指向全局最优。
    和其它启发式算法相比,TS 算法最大的优点莫过于其较强“爬山”能力,从而能够有效避免局部最优。而能够有效避免局部最优。在每一步搜索时,新的可行解不是随机生成的,通过和禁忌表的对比,能够找到截至目前步骤的最优解,所以 TS 算法的优化能力要强于其它启发式算法。不过,TS 算法也有缺点,在处理较大规模的时间表问题时,TS 算法的时间效率并不高,并且算法很依赖邻域的设计。
    四、排课问题研究4.1 排课问题因素在排课问题中,关系到的因素较多,并且各因素之间相互存在着多种制约,因此增加了排课问题的复杂性。总之,教师、教室、班级、时间和课程是排课问题中要解决的五类重要因素。

    课程因素:课程编排的时候安排时间的一个重要对象就是课程,每个学校对课程有着严格的规定,要严格按照教学计划对课程进行合理的设置,一般来说,每门课程对象都有自身的属性,如:课程号、课程名、学分数、课程类别、课时数等。由于每门课程的各个属性的不相同,因此排课时就会影响到课程安排的最终结果
    教学班因素:教学班是排课设置中的最小单位,在排课的时候是按照教学班为单位进行教师资源、教室资源和时间资源的分配。每个班级有其自身的属性,如班级编号和班级名称。并且班级与学院之间应该是一对多的关系,并且要求在某个具体的时间,每个班级仅能安排一门课程
    教师因素:教师作为课程的主体也是需要全面考虑的重要因素。每个教师都有自己的教工号、姓名、职称等属性,并且教师与课程是一对多的关系,但是对于同一名教师,在某个具体的时间,每个教师只能教授一门课程
    教室因素:教室是完成课程教学的主要场所,教室也分为小班教室、大班教室,机房和实验室等类型。每个教室都有所在楼名称、楼层门牌号和容纳人数等属性。但是,在某一个具体时间段内,每个教室只能安排一门课程,且要求尽量不要资源浪费,如按照授课人数安排合适的教室
    时间因素:在编排课程表时会严格根据教学计划中课程所需课时数的属性,相应的也会涉及到星期,周,学期等时间的概念

    4.2 排课约束条件综上所述,一个合理的排课方案必须满足相应的约束条件,约束条件由两部分组成:硬约束条件和软约束条件。硬约束条件是指在排课过程中必须遵守的条件,也可称其为规则;软约束条件是根据现实情况选择满足的条件。 硬约束条件也是衡量排课方案是否可行的准则,只要其中任意一个条件没有满足,排课工作就无法顺利完成。那么,一般硬约束条件有以下几点:

    同一时间同一教师不能教授一门以上的课程
    同一时间同一教室不能安排一门以上的课程
    同一时间同一班级不能安排一门以上的课程
    教室的座位数不能小于班级人数
    教室所属类型必须与课程类型相匹配

    通常软约束条件包含以下几点:

    一门课程在一周有多节的情况下,上课的间隔时间要合理安排
    当教师或者班级有连续课程时,安排的教室距离不应太远
    专业课或者难度较大的课程最好安排在学生思维活跃的时间段
    体育课应安排在下午或者上午的第二大节,因为体育课后人体疲惫,不适宜安排课程

    在遵循硬约束的前提下,根据学校的现实情况进行软约束条件的选择,这样编排的课表不仅科学合理,而且能满足大部分教师、学生的需求。
    4.3 排课问题的求解目标实际高校排课过程中,教学计划均为已知,也就是班级要上的课程、课程相应的教师也均为已知。所以在排课工作中,每位教师授课课程是固定的,同时每个班级上课课程也是固定的,因此排课问题的决策向量主要由时间和教室两个因素构成。时间方面体现在课程具体上课的时间安排在周几,每周几节课等,教室方面体现在课程被安排的教室类型、座位数等。
    4.4 基于着色理论的排课算法及实例4.4.1 教师与班级建立关系图教师排课管理中时间的安排其实质是指让教师在指定的时间内去给某个班级上课。在这当中,需要满足以下几个要求:

    首先,在同一个时间范围内教师只可以给一个班级上课
    其次,不同班级在同一时间也只能有一个老师教课

    运用图论方法(关系图)来解决这一问题,如:有N个老师,分别是X1,…,XN 另外有M个班级,分别是Y1,….,YM,pij表示教师给xi班级yj上课的次数,其中某个老师要教某个班级就要将这两者用线连接起来,若是一个星期之内某个老师给某个班级上了两次课,则用两条线相连,依次增加。
    例如:如果一天内,有 4 个老师分别给 5 个班的学生上不同的课,则其中Xi (i=1,2,3,4)代表 4 个不同的教师,Yj(j= 1,2,3,4,5)代表 5 个不同的班级,其教师与班级的关系图如图 7所示。

    对应的关系矩阵如图8:

    从这个教师班级关系图中,我们可得到一个顶点集X = {x1,x2,x3,x4}和顶点集Y ={y1,y2,y3,y4,y5},以P 表示教师和班级关联的图,也可以用图9表示关联图,现在可通过图的边染色理论对授课分配时间段。

    4.4.2 边着色理论分配时间众所周知,同一个顶点的边是相邻边。对每条边用不同颜色上色,一种颜色指代一段时间,拿大学为例,大学课程一般为两课时一节课,一天四节,一星期五天,因此在教师排课管理中边色数应为二十,指代的是二十段时间,一样的颜色指代的是一个时间段是由于相同时间当中每个老师只可以去一个班级教课,不同班级在同一时间也只能有一个老师教课。相邻边指代的是老师或学生是相同的,不能安排在同一时间段内上课,这就要求相邻边不可以使用相同颜色标明。
    从图9中我们可以看出该图共有顶点 9 个,若现在用K种颜色对其进行染色以后,使得图中每个顶点相邻的边都染上不同的颜色,我们称之为K-正常边染色。比如在图9中与顶点x1相连的边有三条,分别是x1y1 ,x1y2 ,x1y4,所以在染色以后,这三条边都会被染上不同的颜色,每种颜色表示一种授课关系,且图中最多有三条边相邻,因此,在一张有K(K )个时间段的课表上上课,就可以满足在同一时间段内,每个教师会到不同班级授课的情况,而且在同一个班级内,不会出现多个教师来授课的情况。
    针对上面的例子,假设以 3 个时间段为基础,给出一种基于二部图边染色算法的排课算法:

    先以教师与班级的授课关系,给出一张教师班级关系图,根据教师班级关系图,给出一个表示教师的顶点集为X = {x1,x2,x3,x4}和一个表示班级顶点集为Y ={y1,y2,y3,y4,y5}的二部图,如图9所示,在图9中寻找一条最多只包含3 条边的对集M1,即M1中不能出现任意两条边有相邻的情况,得到M1={ x1y1, x2y3,x3y5},这些边可以用同一种颜色进行染色,即把这些边的授课关系安排在同一时间段内,也就是M1时间段
    把(1)中已经染色的边(M1中的边)删去,得到一个新的关联图,如图10,接下来继续从该图中找一个边数不超过3的对集M2={x1y2,x2y1,x4y3},用第二种颜色对这个对集里的边进行染色,安排在时段M2



    在上图中去掉M2中的边又得到一个新图,如图11,显然去掉M2的边之后就得到第三个时间段的授课关系M3={x1y4,x3y2,x4y5}


    通过以上三步对集的寻找,我们可以得到三个时间段的授课表,如图12,M1={x1y1, x2y3,x3y5},M2={x1y2,x2y1,x4y3},M3={x1y4,x3y2,x4y5}

    4.4.3 实例接下来以大学一天四个课时(上午两个课时,下午两个课时,晚上一般是自习或者选修课)为基础,还是假设有5个老师分别给6个班的学生上不同的课,其中X i(i= 1,2,3,4,5)代表 5个不同的教师,Yj(j= 1,2,3,4,5,6)代表 5 个不同的班级,其教师与班级的关系图如图13所示。

    从这个教师班级关系图中,我们可得到一个顶点集X = {x1,x2,x3,x4,x5}和顶点集Y ={y1,y2,y3,y4,y5,y6},以P 表示教师和班级的关联图,也可以用图 表示关联图,现在可通过图的边染色理论对授课分配时间段。
    从图 14 中我们可以看出该图共有顶点11个。在图14中与顶点x1相连的边有三条,分别是x1y1 ,x1y2 ,x1y4,所以在染色以后,这三条边都会被染上不同的颜色,每种颜色表示一种授课关系,且图中最多有四条边相邻,因此,在一张有K(K )个时间段的课表上上课,可以满足在同一时间段内,每个教师会到不同班级授课的情况,而且在同一个班级内,不会出现多个教师来授课的情况。那么,针对该例子,假设以4个时间段为基础,根据教师班级关系图,给出一个表示教师的顶点集为X = {x1,x2,x3,x4}和一个表示班级顶点集为Y ={y1,y2,y3,y4,y5}的二部图,如图 14 所示,在图 14 中寻找一条最多只包含4条边的对集M1,即M1中不能出现任意两条边有相邻的情况,可得到M1={x1y1,x2y2,x3y3,x4y5},这些边可以用同一种颜色进行染色,即把这些边的授课关系安排在同一时间段内,称作M1时间段。

    把(1)中已经染色的边(M1中的边)删去,得到一个新的关联图,如图15,接下来继续从该图中找一个边数不超过4的对集M2={x1y4,x2y1,x3y6,x4y3},用第二种颜色对这个对集M2里的边进行染色,安排在时段M2。

    在上图中去掉M2中的边又得到一个新图,如图16,显然去掉M2的边之后我们可以得到第三个时间段的授课关系M3={x1y6,x2y3,x3y4,x5y2}。

    同理,在上图16中去掉M3对集里的边得到图17,显然得到了一个第四个时间段的授课关系M4={x2y5,x5y6}。

    通过以上四步对集的寻找,我们可以得到四个时间段的授课表,如图18,M1={x1y1,x2y2,x3y3,x4y5},M2={x1y4,x2y1,x3y6,x4y3},M3={x1y6,x2y3,x3y3,x5y2},M4={x2y5,x5y6}。

    4.4.4 排课模型图的优化按照上文的分析,在进行排课的时候,如果单纯使用边着色理论,只能确保从时间角度教师与班级不发生冲突。无法保证可以满足教学方面的需求。另外,在进行排课的时候还要考虑到一些特殊情况。这样一来,便需要对排课的效果进行优化设计。
    4.4.5 排课模型图的赋值首先应该设计出权值函数,结合教学效果对排课模型图中的一些边赋了权值,选出权值最大加权图,最终得出最优的排课方案。
    五、Java编程实现排课问题的解决5.1 设计过程通过着色图论的分析和设计,可以使用Java编程排课算法来实现排课问题的解决,求从文本文件导入教室情况(大小,数量)、培养方案(课程、学生年级、人数、教师)、约束条件(有些约束从培养方案中可知,如一个教师可以教授两门课不可以安排在同一时间上,其他包括课程先修关系,教师的特殊情况如不能上上午一二节课等),系统最终生成课表或给出无法排课的错误提示。使用多种存储结构,使用多种常用算法,编写复杂系统以此来解决排课问题。
    首先定义一个课程、学期、老师类,这些类包含了课程、班级、教师、教室、星期、周次几个属性。课程、班级、教师是安排好了的,教室、星期、周次是通过对集合对象元素处理的算法来安排,其程序目录如下:


    Class.txt 配置文件说明:每列第一个数为班级id,第二个字符串为年级名称,第三个数为年纪人数。(数据为本班级每学期的教学数据)
    ClassRoom.txt 配置文件说明:每列第一个数为教室id,第二个字符串为教室名称,第三个数为教室容量。(数据为本班级每学期的教学数据)
    Course.txt 配置文件说明:每列第一个数为课程id,第二个字符串为课程名称,第三个数为周课时,之后如果有则为对应的先修课程。(数据为本班级每学期的教学数据)
    Teacher.txt 配置文件说明:每列的第一个数为教室id;第二个字符串为教师姓名;之后字符串为老师所教课程,结尾可输入老师无法上课的时间代号。(数据为本班级每学期的教学数据)

    这个Sequence类用来存储计算课表种群的冲突。当被测试课表冲突为0的时候,这个课表就是个符合规定的课表。冲突检测遵循下面几条规则:

    同一个教室在同一个时间只能有一门课
    同一个班级在同一个时间只能有一门课
    同一个教师在同一个时间只能有一门课

    排课算法核心是集合对象LinkedList双向循环链表和Set集合实现的。队列:先进先出的数据结构。栈:后进先出的数据结构。

    用LinkedList实现队列:队列(Queue)是限定所有的插入只能在表的一端进行,而所有的删除都在表的另一端进行的线性表。表中允许插入的一端称为队尾(Rear),允许删除的一端称为队头(Front)。队列的操作是按先进先出(FIFO)的原则进行的。队列的物理存储可以用顺序存储结构,也可以用链式存储结构
    用LinkedList实现栈:栈(Stack)也是一种特殊的线性表,是一种后进先出(LIFO)的结构。栈是限定仅在表尾进行插入和删除运算的线性表,表尾称为栈顶(top),表头称为栈底(bottom)。栈的物理存储可以用顺序存储结构,也可以用链式存储结构

    利用BufferedReader类从文本文件读取到排课信息数据,然后再将各元素对象存入到LinkedList集合对象中。用循环遍历将LinkedList集合对象中的元素按照约束条件来进行判断。将存放教师与课程的集合对象交集,取出教师和课程的一定次数的随机组合,以此达到最终排课问题的解决。
    程序核心代码
    1. /** 2. * 开始排课 3. */ 4. private static void Arranging() { 5. //contains(),该方法是判断字符串中是否有子字符串。如果有则返回true,如果没有则返回false。 6. for (Course cou : courseList) { // for循环遍历课程集合 7. Teacher tea = null; // 老师实体类初始化 8. Class cla = null; // 班级实体类初始化 9. // 将set对象集合的内容作为条件进行分支判断 10. if (preCouse.contains(cou.getName())) { 11. for (Class x : classList) { //遍历班级对象 12. if (x.getGrade() == 1) { 13. cla = x; 14. break; 15. } 16. } 17. for (Teacher x : teacherList) { //遍历教师对象 18. if (x.teachCourse.contains(cou.getName())) { 19. tea = x; 20. break; 21. } 22. } 23. 24. order(tea, cla, cou); 25. 26. } else if (having_preCourse.contains(cou.getName())) { 27. int max = 0; 28. for (Class x : classList) { //遍历班级对象 29. if (x.getSq().getList().size() > max && x.getGrade() != 1) { 30. cla = x; 31. max = x.getSq().getList().size(); 32. } 33. } 34. for (Teacher x : teacherList) { //遍历教师对象 35. if (x.teachCourse.contains(cou.getName())) { 36. tea = x; 37. break; 38. } 39. } 40. order(tea, cla, cou); 41. } else { 42. int max = 0; 43. for (Class x : classList) { //遍历班级对象 44. if (x.getSq().getList().size() > max) { 45. cla = x; 46. max = x.getSq().getList().size(); 47. } 48. } 49. for (Teacher x : teacherList) { //遍历教师对象 50. if (x.teachCourse.contains(cou.getName())) { 51. tea = x; 52. break; 53. } 54. } 55. //调用排课算法 56. order(tea, cla, cou); 57. } 58. }
    1. } /** 2. * @param te 教师对象 3. * @param cl 班级对象 4. * @param co 课程对象 5. * 排序算法 6. */ 7. @SuppressWarnings("unchecked") 8. private static void order(Teacher te, Class cl, Course co) { 9. temList1 = (LinkedList<String>) (te.getSq().getList().clone()); //temList1存放原教师空闲时间 10. te.getSq().getList().retainAll(cl.getSq().getList()); //求教师与学生时间交集 11. if (te.getSq().getList().size() < co.getTimesWeek()) { 12. JOptionPane.showMessageDialog(null, "老师和同学公共可利用时间不足安排", "安排失败", 1); 13. System.out.println("老师和同学公共可利用时间不足安排" + co.getName()); 14. } 15. temList2 = randList(te.getSq().getList(), co.getTimesWeek()); //temList2存放教师与学生时间交集,取出教师和学生的一定次数的随机组合 16. cl.getSq().getList().removeAll(temList2); //移去被分去的时间 17. te.getSq().setList(temList1); //恢复temList1中时间 18. te.getSq().getList().removeAll(temList2); //移去被分去的时间 19. // System.out.println(cl.getSq().getList().size()); 20. for (String x : temList2) { 21. int max = 1000; 22. ClassRoom selectRoom = null; 23. for (ClassRoom y : classroomList) { //课程教室地点分配,循环遍历教室对象 24. if (y.getSq().getList().contains(x) 25. && y.getCapacity() - cl.getSum() < max 26. && y.getCapacity() - cl.getSum() >= 0) { //将集合内的对象进行比较 27. max = y.getCapacity() - cl.getSum(); 28. selectRoom = y; 29. } 30. } 31. if (selectRoom != null) { 32. selectRoom.getSq().getList().remove(x); 33. } else { 34. System.out.println("教室资源不够。"); 35. JOptionPane.showMessageDialog(null, "教室资源不够。", "提示", 1); 36. return; 37. } 38. //向教师实体类中的数组存入排课后的信息内容 39. te.observed[x.charAt(0) - 'a'] = co.getName() + " " + cl.getName() 40. + " " + selectRoom.getName(); 41. cl.observed[x.charAt(0) - 'a'] = co.getName() + " " + te.getName() 42. + " " + selectRoom.getName(); 43. }
    5.2 效果截图程序主界面

    排课成功界面

    排课成功界面




    五、总结与展望随着计算机技术和人工智能的不断快速发展,图论相关理论和方法也逐渐融入到人们实际生活的很多方面,这意味着图论着色理论的作用也与日俱增,所谓的染色事实上就是对一些对象按照一定的方法进行分类,那么图染色就是指对图中的顶点、边和面等元素按照一定的规则进行分类,我们所制定的对象不同或者规则不同都会导致我们对图的染色方式不同。如今按照规则区分的图染色方式有成百上千种,比如从最初的点染色,边染色、面染色到如今发展到全染色、表染色、领强边染色、子染色、完备染色等等。众所周知,在我们实际生活中,很多问题的数学模型都可以用图的方式来建立,比如学校排课、库存管理、物流分配、通讯频率分配、寄存器分配等等这些数学模型都可以转化为图的形式来建立,因此我们只要能找到合适的染色算法就能帮助我们去很好的解决类似于这类有冲突的问题。
    排课工作是高校教务工作中重要的一项工作内容,本文应用图论着色理论来研究排课问题,首先介绍了相关图论理论以及常见排课算法,其次分析排课问题以及基于着色理论的排课算法。由于时间和能力有限,本文研究内容存在很多不足,比如在本文中, 只适当考虑了某个工作日内的排课情况, 但是在实际应用中, 高校管理员在进行排课的时候需要考虑一周中五个工作日的排课情况, 与此同时还需要考虑一些特殊情况的存在, 比如单双周排课的问题.因此, 为了更好地解决高校排课问题, 还需要进行进一步研究。
    参考文献[1] C.C.Gotlieb. The Construction of Class-Teacher Time Tables. Proceeding IFIP[J].Congress62,1963:73-74.
    [2] S.Even, A. Itai, A.Shamir. On the complexity of timetable andmulticonmmodity flowproblems[J] .SIMA Joumal on Computing ,1976.5[41:691-703.
    [3] J.A.Bondy and U.S.R.Murty.Graph theory with applications Joumal of the Operational Research,1977.
    [4] 王能斌,钱祥根.大学课程表调度系统——UTSS[J].计算机学报,1984(05):383-389.
    [5] 张清绵,徐明,王鸣,吴北雅,王凤兰.智能教学组织管理与课程调度系统[J].大连理工大学学报,1991(02):227-232.
    [6] 张清绵,郜荣春.用电子计算机自动构造高等院校课程表[J].大连工学院学报,1981(04):115-118.
    [7] 林漳希,林尧瑞.人工智能技术在课表编排中的应用[J].清华大学学报(自然科学版),1984(02):1-9.
    [8] 夏鹭平,方潜生.利用人工智能原理实现大学课程表调度——大学课程表调度模型及算法[J].微电子学与计算机,1992(10):46-49.
    [9] 田庆辉.分批加权优化的排课模型[J].湘潭大学自然科学学报,1994(01):143-147.
    [10] 曾志峰,乐光学.高校排课管理系统的设计与实现[J].湖南商学院学报,2001(01):136-137.
    [11] 黄干平,姚自珍,张轶静.使用模拟退火算法解课表问题[J].武汉大学学报(自然科学版),2000(05):559-563.
    [12] 束礼菊.基于整数规划模型的高校排课方法研究[J].市场周刊(理论研究),2012(12):114-115.
    [13] 李琪,陈雯祎.基于改进遗传算法的高校排课系统研究[J].福建电脑,2016,32(04):62-63.
    [14] 杨柳.动态规划在教学管理中的应用[J].运筹与管理,2003(01):46-49.
    [15] 方剑英. 排课问题的理论与算法[D].新疆师范大学,2004.
    [16] 王仲华,卢娇丽.图论在高校排课问题中的应用研究[J].太原师范学院学报(自然科学版),2010,9(01):39-42.
    [17] 李昕怡,苏振华.基于边着色理论的排课问题的应用[J].怀化学院学报,2018,37(05):33-36.
    [18] 蒋正锋,覃韩,吕佩佩,刘溯奇.基于蚁群算法的高校排课问题的应用研究[J].现代计算机,2019(25):22-27.
    0 评论 1 下载 2020-08-07 10:35:07 下载需要13点积分
显示 0 到 15 ,共 15 条
eject