随着人们生活水平的不断提高和生活节奏的加快,不少供水用户的超表与缴费越来越多,而精力、时间却越来越少,于是各种自来水公司管理应用应运而生。自来水公司管理的规模也是越来越大,以前单纯的文本记录人工管理方式不仅效率低下,且易出错,直接导致管理费用的增加,服务质量的下降。由于这种人工管理方式不能完全适应自来水公司管理的发展,因此需要一个功能强大的管理系统对自来水公司水费进行管理,实现对区域信息管理、用户资料管理、营业信息管理、水费管理、账目管理,用户管理等功能
如今,随着全国的信息化建设程度越来越高,互联网开始在人们的生活发挥着越来越为重要的作用,网络技术可以将各种不同的设施连接起来,进行统一的管理,目前缴费业管理状况要满足快速增长的缴费量,是远远不够的,因为当前自来水公司管理多采用手工或半手工处理自来水公司管理业务流程,多用人工方式在前台接送缴费并半手工进行水表信息管理,效率十分低下。自来水公司管理业务主要是超表缴费、账目管理、客户信息管理、水表信息管理等。以上这些自来水公司管理内部业务如果用计算机来进行管理的话,能大大节约大型自来水公司管理工作人员和管理人员的时间,提高工作效率。
本文从系统架构、实现方法、从整体到部分,逐个模块、逐个部分对系统设计、实现过程进行了详细介绍。其中第二章需求分析主要对系统的功能需求、性能需求、数据库需求进行了分析;第三章总体设计主要介绍了系统的功能模块设计、数据库设计;第四章介绍了系统的详细设计,对数据库、界面、各个模块进行了详细说明;第五章测试,主要介绍了本系统的测试方法、测试用例、测试结果分析。
在软件工程中,需求分析指的是在建立一个新的或改变一个现存的电脑系统时描写新系统的目的、范围、定义和功能时所要做的所有的工作。需求分析是软件工程中的一个关键过程。在这个过程中,系统分析员和软件工程师确定顾客的需要。只有在确定了这些需要后他们才能够分析和寻求新系统的解决方法。
本系统所做的需求分析包括功能需求分析、性能需求分析、数据库需求分析。
该系统集基础信息设置、抄表、收费、票据打印、数据查询和统计分析于一体,具体包含了水费管理部门对用水户的资料管理、抄表收费管理以及收费情况用水量情况统计查询等,有助于各水管部门获取决策信息,提高社区自来水收费人员的工作效率。
一、区域信息管理模块
1、社区区域信息管理
参考行政区划,添加本自来水分公司所辖社区信息;
2、修改社区区域信息
3、删除社区区域信息
4、查询社区区域信息
二、用户资料管理
1、添加用户信息
按照社区区域划分添加用户信息资料;
自动生成用户编号(用户编号具有唯一性【结合门牌号生成】)
2、修改、删除用户信息
对用户信息进行修改、删除操作;
其中,用户编号不能修改。
3、查询用户信息资料
三、营业信息处理模块
1、用户收费信息维护
1.1 添加用户自来水水表收费参数
为用户添加水表,设置该水表的收费参数:水表编号、水费单价(从系统基础数据中获取,不可修改)、上月水费记录、是否缴费等信息。
用户可以添加多块水表。
1.1 设置水表结算方式
设置用户下水表的结算方式:月结、季结、年结等类型;
2、水费计算接口设计
2.1 接收移动终端传递的用户编号、水表编号、本次抄表数值。
2.2 计算本次用水量、单表用水金额、缴费金额等数值,返回给调用接口缴费金额。
2.3 注意处理:逐月缴纳、次月补缴、季结、年结等类型的处理中的差异性。
3、移动终端(web页面模拟)抄表计费
输入用户编号,输入本次抄表数值,移动终端远程读取数据库获取用户上次缴费数据值记录,计算本次应缴费用,提供缴费小票。
(注:在本系统开发设计中,设计完成移动终端调用接口,移动终端操作界面由web页面模拟完成)
4、账单查询打印
4.1 发票账单打印
用户凭缴费小票,打印发票。
4.2 缴费账单查询
按用户编号、水表编号、时间(月份、季度)等条件查询用户缴费账单信息
5、账单金额小写与大写转换功能
四、账目管理模块
1、提供所有历史帐票信息的查询功能。
2、为查询提供多元化复合条件。
3、提供历史帐票的补打功能。
4、分类统计功能
提供对选定范围的用水进行分类统计的功能,为节约水资源的决策提供数据支持。
五、操作员管理模块
1、系统管理员(经理)添加管理员
2、系统管理员(经理)修改、删除管理员信息
3、系统管理员(经理)查询管理员信息
4、系统管理员(经理)重置管理员密码
六、系统管理模块:
1、数据安全管理
1.1 数据备份:将当前系统中的数据进行备份操作;
1.2 数据还原:将以前备份的数据可以还原到当前数据库中;
2、水表结算类型维护
设置水表结算类型基础数据:月结、季结、年结等。
3、水费单价信息维护
设置水费单价价格。
开发任何一个系统,都会受到时间和资源上的限制。因此,在每一个领证开发之前,都要进行可行性分析,可以减少领证的开发风险,避免人力、物力和财力的浪费。下面就技术、经济、操作和法律四个方面来介绍
(1)经济性
如今是信息化时代,信息化管理可以使驾驶员管理行管理工作更加系统化、快速化、全面化。在提高工作效率的基础上,可以考虑减少管理人员的数量,本系统对计算机配置的要求不高,网吧机房更换下来的低配置电脑都可以完全满足需要,再者,网吧在管理工作上的高效率和便捷性远远超过了开发本系统的成本,再者,服务器端的安装简洁明了,交费机无需再装任何软件,通过浏览器就可以直接访问,可以直接接入Internet,无论您身在何处,只要您可以访问Internet都可以使用本系统。所以在经济上具有完全的可行性
(2)技术性
本系统开发工具是MyEclipse和MYSQL数据库,开发语言是Java,主要使用了J2EE的技术,java是一种面向对象编程语言,简单易学而且灵活方便。大三时就学习了java课程,大学期间也系统的了解了J2EE的知识,华苑社区自来水分公司水费管理系统的总体上开发难度不高,数据库的设计和操作是本系统设计的核心。在大学期间学习过软件工程,软件测试,UML统一建模语言等课程,每个学期也会完成对应的课程设计,具备一定的系统分析、设计和测试能力。因此,完成系统实现在技术上完全具有可行性
(3)操作性
本系统操作简单,输入信息页面大多数都是下拉框的选择形式,在某些页面,信息可以自动生成,无需输入,时间的输入也是用的日历控件,操作简便,对操作人员的要求很低,只需对WINDOWS操作熟练,加之对本系统的操作稍加管理即可工作,而且本系统可视性非常好,所以在技术上不会有很大难度。
(4)法律性
本华苑社区自来水分公司水费管理系统的是自行开发的管理系统,是很有实际意义的系统,开发环境软件和使用的数据库都是开源代码,开发这个系统不同于开发普通的系统软件,不存在侵权等问题,即法律上是可行的。
综上所述,开发一个华苑社区自来水分公司水费管理系统的与人工记录的方式相比具有速度更快,操作更准确,节省开支等有利之处,因此,建立一个华苑社区自来水分公司水费管理系统的是必要可行的。
Tomcat是一个小型的轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。可以这样认为,当在一台机器上配置好Apahce服务器,可利用它响应对HTML页面的访问请求。实际上Tomcat 部分是Apache 服务器的扩展,但它是独立运行的,所以当运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。
Mysql使用C和C++编写,并使用了多种编译器进行测试,保证源代码的可移植性;支持AIX、FreeBSD、HP-UX、Linux、Mac OS、NovellNetware、OpenBSD、OS/2 Wrap、Solaris、Windows等多种操作系统;为多种编程语言提供了API;支持多线程,充分利用CPU资源;提供TCP/IP、ODBC和JDBC等多种数据库连接途径;可以处理拥有上千万条记录的大型数据库。对于一般的个人使用者和中小型企业来说,Mysql提供的功能已经绰绰有余,而且由于Mysql是开放源码软件,因此可以大大降低总体拥有成本。
JSP是java server page 的缩写,是java语言实现服务器开发的技术,HTML程序和穿插在内部的Java程序可以构建JSP网页。java字节码在tomcat中运行。JSP的设计关键是Servlet,通常大型的Web应用程序的设计成果也通过Java Servlet和JSP的协作。JSP既拥有了方便快捷的Java程序,又统统的面向用户,既实现了平台的无关性危险还比较小,可以具备互联网的全部优势。JSP技术的优点:
(1)一次编写,到处运行。
(2)系统的多平台支持。基本上可以在所有平台上的任意环境中开发,在任意环境中进行系统部署,在任意环境中扩展。相比ASP/.net的局限性是显而易见的。
(3)强大的可伸缩性。java代码客户很好的得到扩展,可以实现分布式集群等等。
(4)多样化和功能强大的开发工具支持。Java已经有了许多非常优秀的开发工具,而且许多可以免费得到,并且其中许多已经可以顺利的运行于多种平台之下
(5)支持服务器端组件。web应用需要强大的服务器端组件来支持,开发人员需要利用其他工具设计实现复杂功能的组件供web页面调用,以增强系统性能。java可以运行在很多容器下。
内部对象说明:request 客户端请求,此请求会包含来自GET/POST请求的参数; response 网页传回客户端的响应;pageContext 网页的属性是在这里管理; session 与请求有关的会话; application servlet正在执行的内容;out 用来传送响应的输出流; config 代码片段配置对象;page JSP网页本身; exception 针对错误网页,未捕捉的例外。
目前主流的开发模式有C/S模式,B/S模式两种主流的开发模式。前文概述中已经论述了,B/S,就是浏览器和服务器模式,只要有网络,就可以直接使用。这种模式对宣传和信息传播的角度而言,的确有很大的便捷性。它跟C/S模式对比呢,C/S本身就是需要客户端支持,而且对跨平台有很多的局限性。同时,C/S模式,就是客户端和服务器模式,受众范围不好。最终开发模式的选择上,从受众群体广度很深度,从使用的便捷性,还是决定采用B/S模式开发。
总体设计即对有关系统全局问题的设计,也就是设计系统总的处理方案,又称系统概要设计。它包括:系统模块结构设计、数据库和文件设计、代码设计以及系统可靠性与内部控制设计等内容。
本系统的总体设计包括功能模块设计和数据库设计。
一、区域信息管理模块
1、社区区域信息管理
参考行政区划,添加本自来水分公司所辖社区信息;
2、修改社区区域信息
3、删除社区区域信息
4、查询社区区域信息
二、用户资料管理
1、添加用户信息
按照社区区域划分添加用户信息资料;
自动生成用户编号(用户编号具有唯一性【结合门牌号生成】)
2、修改、删除用户信息
对用户信息进行修改、删除操作;
其中,用户编号不能修改。
3、查询用户信息资料
三、营业信息处理模块
1、用户收费信息维护
1.1 添加用户自来水水表收费参数
为用户添加水表,设置该水表的收费参数:水表编号、水费单价(从系统基础数据中获取,不可修改)、上月水费记录、是否缴费等信息。
用户可以添加多块水表。
1.1 设置水表结算方式
设置用户下水表的结算方式:月结、季结、年结等类型;
2、水费计算接口设计
2.1 接收移动终端传递的用户编号、水表编号、本次抄表数值。
2.2 计算本次用水量、单表用水金额、缴费金额等数值,返回给调用接口缴费金额。
2.3 注意处理:逐月缴纳、次月补缴、季结、年结等类型的处理中的差异性。
3、移动终端(web页面模拟)抄表计费
输入用户编号,输入本次抄表数值,移动终端远程读取数据库获取用户上次缴费数据值记录,计算本次应缴费用,提供缴费小票。
(注:在本系统开发设计中,设计完成移动终端调用接口,移动终端操作界面由web页面模拟完成)
4、账单查询打印
4.1 发票账单打印
用户凭缴费小票,打印发票。
4.2 缴费账单查询
按用户编号、水表编号、时间(月份、季度)等条件查询用户缴费账单信息
5、账单金额小写与大写转换功能
四、账目管理模块
1、提供所有历史帐票信息的查询功能。
2、为查询提供多元化复合条件。
3、提供历史帐票的补打功能。
4、分类统计功能
提供对选定范围的用水进行分类统计的功能,为节约水资源的决策提供数据支持。
五、操作员管理模块
1、系统管理员(经理)添加管理员
2、系统管理员(经理)修改、删除管理员信息
3、系统管理员(经理)查询管理员信息
4、系统管理员(经理)重置管理员密码
六、系统管理模块:
1、数据安全管理
1.1 数据备份:将当前系统中的数据进行备份操作;
1.2 数据还原:将以前备份的数据可以还原到当前数据库中;
2、水表结算类型维护
设置水表结算类型基础数据:月结、季结、年结等。
3、水费单价信息维护
设置水费单价价格。
数据库的概念结构设计就是将需求分析得到的用户需求抽象为信息结构即概念模型的过程。E-R图是表现数据库概念模型的一种方式。
根据数据库的需求分析得到数据库E-R图,如图3.3所示。
图3.3 E-R图
数据库表结构
数据库名:db_shuifeimm_g
表名:t_admin
序号 |
列名 |
数据类型 |
长度 |
小数位 |
标识 |
主键 |
外键 |
允许空 |
默认值 |
说明 |
1 |
id |
int |
11 |
是 |
否 |
|||||
2 |
username |
varchar |
50 |
是 |
||||||
3 |
userpwd |
varchar |
50 |
是 |
||||||
4 |
identity |
varchar |
50 |
是 |
表名:t_gonggao
序号 |
列名 |
数据类型 |
长度 |
小数位 |
标识 |
主键 |
外键 |
允许空 |
默认值 |
说明 |
1 |
id |
int |
11 |
是 |
是 |
否 |
auto_increment |
|||
2 |
biaoti |
varchar |
255 |
是 |
||||||
3 |
neirong |
varchar |
8000 |
是 |
||||||
4 |
shijian |
varchar |
50 |
是 |
||||||
5 |
type |
int |
11 |
是 |
表名:t_jiesuantype
序号 |
列名 |
数据类型 |
长度 |
小数位 |
标识 |
主键 |
外键 |
允许空 |
默认值 |
说明 |
1 |
id |
int |
11 |
是 |
是 |
否 |
auto_increment |
|||
2 |
name |
varchar |
50 |
是 |
表名:t_quyu
序号 |
列名 |
数据类型 |
长度 |
小数位 |
标识 |
主键 |
外键 |
允许空 |
默认值 |
说明 |
1 |
id |
int |
11 |
是 |
是 |
否 |
auto_increment |
|||
2 |
no |
varchar |
50 |
是 |
||||||
3 |
name |
varchar |
50 |
是 |
||||||
4 |
detail |
varchar |
100 |
是 |
表名:t_shoufei
序号 |
列名 |
数据类型 |
长度 |
小数位 |
标识 |
主键 |
外键 |
允许空 |
默认值 |
说明 |
1 |
id |
int |
11 |
是 |
是 |
否 |
auto_increment |
|||
2 |
userno |
varchar |
50 |
是 |
||||||
3 |
shuibiaono |
varchar |
50 |
是 |
||||||
4 |
shijian |
varchar |
50 |
是 |
||||||
5 |
shuijia |
int |
11 |
是 |
||||||
6 |
jiesuantype |
varchar |
50 |
是 |
||||||
7 |
shuifeimoney |
int |
11 |
是 |
||||||
8 |
beizhu |
varchar |
500 |
是 |
||||||
9 |
status |
int |
11 |
是 |
||||||
10 |
shuifeivalue |
int |
11 |
是 |
表名:t_shuibiao
序号 |
列名 |
数据类型 |
长度 |
小数位 |
标识 |
主键 |
外键 |
允许空 |
默认值 |
说明 |
1 |
id |
int |
11 |
是 |
是 |
否 |
auto_increment |
|||
2 |
userId |
int |
11 |
是 |
||||||
3 |
biaono |
varchar |
50 |
是 |
||||||
4 |
jiesuantype |
varchar |
50 |
是 |
||||||
5 |
biaovalue |
int |
11 |
是 |
||||||
6 |
beizhu |
varchar |
500 |
是 |
||||||
7 |
status |
int |
11 |
是 |
表名:t_shuifeijiage
序号 |
列名 |
数据类型 |
长度 |
小数位 |
标识 |
主键 |
外键 |
允许空 |
默认值 |
说明 |
1 |
id |
int |
11 |
是 |
是 |
否 |
auto_increment |
|||
2 |
jiage |
int |
11 |
是 |
表名:t_user
序号 |
列名 |
数据类型 |
长度 |
小数位 |
标识 |
主键 |
外键 |
允许空 |
默认值 |
说明 |
1 |
id |
int |
11 |
是 |
是 |
否 |
auto_increment |
|||
2 |
loginname |
varchar |
50 |
是 |
||||||
3 |
pwd |
varchar |
50 |
是 |
||||||
4 |
realname |
varchar |
50 |
是 |
||||||
5 |
address |
varchar |
50 |
是 |
||||||
6 |
tel |
varchar |
50 |
是 |
||||||
7 |
bumen |
varchar |
50 |
是 |
||||||
8 |
status |
varchar |
50 |
是 |
详细设计是软件工程中软件开发的一个步骤,就是对概要设计的一个细化,就是详细设计每个模块实现算法,所需的局部结构。
本系统的详细设计包括以下内容:数据库的详细设计、界面的详细设计、系统用户设计、系统登录设计、用户模块设计、超表模块设计模块设计。
整个系统的界面可以达到简洁、易交互性的要求。
图4.1 系统登录界面
系统主页由一个框架构成,包含3个页面:网站LOGO、目录导航、欢迎页面。
图4.5 系统主页面
系统的导航目录使用div+css+javascrpt实现。如图4.3所示。
图4.6 系统导航目录
用户管理模块可以实现用户的信息管理,可以对用户信息查询等,程序效果图如图4.7所示。
图4.7 用户管理
区域信息管理程序效果图如图4.8所示。
图4.8 区域信息管理
水表信息的管理主要包括水表信息的添加、删除、修改等,程序效果图如图4.9所示。
图4.9 水表信息管理
水费信息管理模块实现对水费的查询,小票打印等操作,程序效果图如图4.10所示。
4.10 水费管理模块
手机端登陆界面,程序效果图如图4.11所示。
4.11 手机登陆模块
手机端超表界面,程序效果图如图4.12所示。
4.12 手机端超表模块
测试任何软件产品都有两种方法:如果已经知道了产品应该具有的功能,通过测试来检验是否每个功能都能正常使用;如果知道产品内部工作过程,通过测试来检验产品内部动作是否按规定正常进行。前一种方法称为黑盒测试,后一种方法称为白盒测试。系统测试是系统开发过程的重要组成部分,是用来确认一个系统的品质或性能是否符合开发之前所提出的一些要求。系统测试就是在系统投入运行前,对系统需求分析、设计规格说明和编码的最终复审,是系统质量保证的关键步骤。系统测试是为了发现错误而执行程序的过程。系统测试是在系统开发完成后必须完成的一个阶段,这个阶段又漫长,而且又重要,系统的稳定性和可靠性,主要是通过系统测试进行来检测,是系统上线后的最后一道防线。
系统测试,主要是为了发现很多系统功能是否有错误,是否有bug,增加软件的稳定性和可靠性。最主要的目标就是为了检测这个系统的可用性,做的是否完整。测试阶段主要分三种测试:模块测试,主要是通过单独模块中功能的实现,进行测试, 组装测试,主要用来测试是否有隐藏bug。确认测试,主要测试软件是否满足用户功能和性能的要求。根据系统的需求分析来进行黑盒测试,对整个西餐厅进行测试,目的就是为了验证系统是否满足要求规格。找出隐藏bug。
安全测试是用于检测网站防范各种非法入侵的能力的测试。通过测试人员扮演非法入侵者,去检查出网站可能存在的安全漏洞,从而提高网站安全防范等级。本系统安全测试主要从以下几点完成:
(1)网站登陆安全测试。华苑社区自来水分公司水费管理系统在登录时,无论是何种等级的用户都必须使用正确的账号和密码登录,无效的账号或密码是无法登陆网站的。
(2)网站管理权限安全测试。通过分别使用管理员级、用户账号进行网站操作,没发现有任何越权或权限混乱现象。
(3)网站数据安全性。本系统对所有的账号和密码数据都进行了加密处理。对数据库进行了伪文件处理,具有良好的数据库备份和恢复机制。
可用性测试用于检测网站的可理解性、可操作性和学习性等方面内容。具体测试方面如表5-2所示。
表5-2 网站可用性测试
测试项 |
测试人员的评价 |
窗口移动、改变大小、关闭等操作是否正常 |
是 |
操作模块是否友好 |
是 |
模块和提示内容等文字描述是否正确 |
是 |
模块布局是否合理、协调 |
是 |
模块的状态是否正确(对选中项能否发生对应切换) |
是 |
键盘、鼠标操作是否支持 |
是 |
所需的数据项是否正确显示 |
是 |
操作流程是否合理 |
是 |
是否提供帮助信息 |
是 |
性能测试主要通过模拟系统运行环境,测试系统性能是否符合客户需求。性能测试的重要技术指标就是:系统运行速度、网络响应时间和支持并发节点数。
1)系统运行速度:通过在不同计算机上试运行本系统,没有发现有任何迟滞、停顿现象。
2)网络响应时间:网络响应时间主要包括网络最小响应时间、平均响应时间、最大响应时间三个参数。经过测试,在网络运营良好状态下,校园局域网内响应时间三参数为:1/2/6s,校园外网响应时间三参数为3/7/12s,符合客户需求,属于用户心理可承受范围。
3)支持并发节点数:经过模拟环境测试,本系统在并发节点达46个时,网络运营速度会发生较大波动,延迟时间10秒左右,符合客户需求
表5.1 登录模块及权限控制测试用例
用户名 |
密码 |
用户类型 |
测试结果 |
admin |
admin |
管理员 |
登录成功,权限为管理员 |
11111 |
111111 |
空 |
登录失败,提示:用户名或密码错误 |
通过单元测试,发现了系统中存在的一些错误和漏洞,将这些问题解决后,又对系统进行了集成测试。测试结果表明系统能达到所需要求,各部分测试都能达到理想结果。
本人在大学期间学习了java 和数据库和sql语句等技术,在本次毕业设计的过程中得到了很好的实用,技术上得到了很大的提升,尤其是编程动手能力,得到了飞速的发展,在这段时间,通过图书馆和网站查询更多的资料,来完成和设计这个华苑社区自来水分公司水费管理系统,实现数据库的设计,实现SSH框架的搭建,实现Mysql数据库表结构的设计等。
在系统代码编写的过程中,本人运用到了B/S模式进行开发,通过SSH技术,和Mysql数据库技术,大大提高了整个系统的性能。在论文中比较详细的设计了整个公司流程,整个系统的完整性。本系统还存在很多缺点和不完善的地方,例如有些细节上做的还不够完善,有些功能模块还需要加强。在今后的日子里,能够对这些不足进行改善。
通过这次毕业设计课程设计,在技术上得到了很大的提升,增强了自己的学习能力,和学校到了很多课堂中学习不到的技术和方法,通过这次编码毕业设计代码,更加深入的了解了软件开发过程中的每个环节和步奏,为未来从事软件开发,做为一个优秀的程序员,打好了稳定的基础。