水电缴费管理系统
需求分析与设计
摘要:水电缴费是家庭日常生活的重要内容之一,但是目前水电缴费都是集中管理,用户需要不同的账号进行水电费的查询,非常不方便,因此开发一个能够通过统一账户管理、方便用户查询相关信息的水电缴费系统具有一定的实用价值。系统实现了用户管理、水电费录入、水电费信息查询;用户缴纳水电费、水电费信息查询等功能。本文首先对系统研究背景、目标以及JSP技术进行了简要的描述;之后通过用例图和活动图对系统进行需求分析,并阐述了本系统实施的可行性;然后对系统进行设计、实现和测试。
关键词:管理系统;缴费;数据库
1需求分析
1.1 系统功能概述
本系统主要实现了管理员查询、添加、删除用户信息;水电费录入、查询、修改和删除。用户缴纳水电费和查询水电信息等功能。
其中涉及到的模块有:
(1)登录模块功能:主要是输入的用户名和密码保存并且与数据库中的数据进行比较,只有完全符合才可以登录系统。
(2)管理员模块功能:可以操作水电价格、用户信息和水电录入、缴纳。
①用户信息子模块功能:可以查询、操作用户信息。
②价格子模块功能:主要是对水电费价格的管理。
③水费子模块功能:添加、修改和删除水费缴纳信息。
④电费子模块功能:添加、修改和删除电费缴纳信息。
(3)用户模块:能查看个人信息和缴费信息。
1.1.1 用例图描述
采用用例驱动方法分析需求,首先识别出系统的参与者主要有管理员、用户,每一种参与者都有不同的权限,下面就对整个系统建立用例模型来表达需求:
⑴ 管理员:登录系统后,能够查看和修改个人信息、修改密码、查看修改、添加和删除用户等。
图2-1 用例图—系统管理员
对以上用例图中的用例进一步描述如下:
①登录:利用用户名和密码进行登录,这个功能是系统管理员的基本功能,
②个人信息管理:系统管理员可以对个人信息进行查看和修改。
③个人密码管理:系统管理员可以修改个人密码。
④水电价格管理:管理员可以添加、修改和删除水电费价格。
⑤水电费管理:管理员可以添加、修改、删除和缴纳水电费。
⑥用户管理:管理员能够添加、查看、删除用户信息。
⑵ 用户:登录系统后能够查看和修改个人信息、修改密码
图2-2 用例图—用户
①登录:利用用户名和密码进行登录
②个人信息管理:用户可以对个人信息进行查看和修改。
③个人密码管理:用户可以修改个人密码。
④水费管理:用户可以查询到个人的水费缴纳信息。
⑤电费管理:用户可以查询到个人的电费缴纳信息。
1.1.2 系统活动描述
根据对水电缴费管理系统的设计与实现的需求分析,可以将水电缴费管理系统分为六个模块,登陆模块、管理员模块、用户模块、水电费价格模块、水费模块和电费模块。
⑴ 登录模块,根据自己的用户名和密码选择权限登录,进入相应权限的主页,具体的UML活动图如图2-5所示:
图2-3 登陆模块的UML活动图
⑵管理员模块,管理员进入此模块可以查看和修改个人信息、修改密码、增加、修改和删除用户信息,也可以查看、和修改水电费信息等,具体UML活动图如图2-6所示:
图2-4管理员模块的UML活动图
⑶价格模块,管理员进入此模块可以查看和修改水电费价格,具体UML活动图如图2-7所示:
图2-5 价格模块的UML活动图
⑷水费管理模块,管理员进入此模块可以查看和修改用户水费信息和缴费,具体的UML活动图如图2-8所示:
图2-6 电费管理模块的UML活动图
(5)电费管理模块,管理员进入此模块可以查看和修改用户电费信息和缴费,具体的UML活动图如图2-9所示:
图2-7 电费管理模块的UML活动图
(6)用户模块,用户进入此模块可以修改密码,查看水电费信息和缴纳,具体的UML活动图如图2-9所示:
图2-8用户模块的UML活动图
1.2 可行性分析
软件需求分析也称为需求分析工程,是软件生命期中重要的一步,也是决定性的一步。在可行性分析阶段,对开发新系统的基本思想和过程进行了初步分析和论证,对系统的基本功能、性能及开发时间的限制,人员安排、投资情况等做出了客观的分析。
本系统要求实现水电系统的各项基本功能,从安全性和易维护性考虑,选择了Web实现技术。简单的说就是将系统做成一种B/S模式,可以让用户通过浏览器直接访问位于服务器上的系统。服务器端程序的实现技术也很多,本系统选用了当前比较流行的网络编程技术——JSP作为主要实现手段。JSP作为一种Web实现技术,它的高效并且安全。这一点正好符合了水电系统所要求的实时性。除此之外,作为Java平台的一部分,JSP拥有Java语言“一次编写,各处运行”的特点。所以JSP是实现本系统的最佳技术,它是完全可行的。
1.2.1 开发的必要性
随着计算机应用的不断深入,信息产业的兴起。各行各业几乎都与计算机有着密切的联系。近年来,水电费管理也面临着信息化的发展,传统的水电缴纳需要定时段、定点,而且必须分开缴纳。这完全不符合信息化时代的发展需求,为了方便管理和用户缴纳水电费,开发出新型的水电缴费管理系统势在必行。
1.2.2 开发的可能性
⑴ 技术可行性:使用现如今已经成熟的JSP技术,系统数据库选择Oracle ,在系统中的核心部分使用JSP技术,实现JSP和Oracle的有机集合。
⑵ 经济可行性:开发水电管理系统属于城市的信息化建设,开发过程所需要的经济费用是极其少的,在使用过程中也只需要浏览器的支持,其他环节并不涉及到经济问题,所以其在经济上是非常可行的,可以使缴费过程更高效快捷。
⑶ 用户操作可行性:该系统操作简单,用户只需要按照月份就可以进行缴费。
2 系统设计
2.1 系统结构设计
根据系统需求分析,可以设计出整个水电管理系统的总体结构。
⑴ 管理员的页面结构设计
图3-1 系统管理员页面的结构图
⑵ 用户的页面结构设计
图3-2 用户页面的结构图
2.2概念结构设计
图3-3 ER图
2.3数据表设计
数据库是数据库应用程序的重要组成部分。设计结构合理,功能齐全的数据库对于提高数据库应用程序的开发效率和程序的性能都是非常重要的。数据库的设计过程大致如下:
⑴ 根据用户需求,确定数据库中要保存的数据信息。
对客户需求进行分析是数据库设计的第一个阶段。不断地调查与研究用户需求,了解企业运作流程等系统需求,是设计概念模型的基础。
⑵ 设计数据的概念模型。
概念模型是按用户的观点来对数据建模。它是用于进行信息世界建模的工具,对整个数据库的设计具有深刻的影响。
⑶ 逻辑结构设计。
逻辑结构设计是把概念结构转化为与所采用的数据库管理系统所支持的数据模型相符合的过程。
⑷ 数据库的实施和维护。
数据库的建立和维护是在完成数据库以后对数据库进行一系列的修改、查询、删除、更新等。
根据以上分析可以设计出本系统的数据库,所用到的数据库表说明如下:
表3-4 管理人员表admin
序号 |
字段名称 |
类型 |
长度 |
主键 |
字段说明 |
备注 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
表3-5 用户基本信息表user
序号 |
字段名称 |
类型 |
长度 |
主键 |
字段说明 |
备注 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
表3-6 水表water
序号 |
字段名称 |
类型 |
长度 |
主键 |
字段说明 |
备注 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
表3-7 电表power
序号 |
字段名称 |
类型 |
长度 |
主键 |
字段说明 |
备注 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
表3-8 价格表money
序号 |
字段名称 |
类型 |
长度 |
主键 |
字段说明 |
备注 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3 界面设计
3.1 登录模块
(1)在WEB页面上输入系统首页地址就可以登录到系统。如图4-1所示
图4-1 登录页面
⑵ 如果用户名或者密码输入错误就会进入图4-2错误页面
图4-2 错误页面
3.2 管理员模块
以管理员身份登录系统且输入正确的用户名和密码,则进入图4-3所示的管理员界面,否则进入图4-2错误界面。
图4-3 管理员页面
3.2.1密码管理
(1)点击个人信息里的密码管理进入图所示4-4的界面。
图4-4 密码管理页面
(2)把新密码输入进去,点击提交按钮,密码就更改成功了。还会弹出提示框如图4-5所示。
图4-5 密码修改成功页面
(3)密码如果不匹配,否则警告如图4-6所示。确认密码和新密码不同报错。
图4-6 密码修改失败页面
3.2.2水电价格管理
(1)点击水电价格管理可进入如图4-7所示页面。
图4-7 水电价格管理页面
(2)图4-7显示了各个月份的水电费价格,如果有用户已经缴纳水电费,那么这个月的水电费价格就不能修改。点击修改可修改水电费价格信息。如图4-8所示。
图4-8 水电费价格修改页面
3.2.3 用户信息管理
(1)点击用户信息管理进入用户信息管理页面,如图4-9所示。
图4-9 用户信息管理页面
(2)点击登录名,可以查看用户的详细信息。图4-10所示页面。
图4-10 用户详细信息页面
(3)点击用户信息编辑进入如图4-11所示。其中登录名是不能修改的,不可选。
图4-11 用户信息编辑页面
(4)点击用户删除进入如图4-12所示。第一个用户就被删除了。
图4-12 用户删除辑页面
3.2.4 水费管理
(1)点击水费管理可进入图4-13所示界面。第一个用户已经缴纳,后面的两个用户没有缴纳。他下面会显示应付款和需要填写的实付款。
图4-13 水费管理页面
(2)点击实付款,进入图4-14所示界面。输入的实付款小于应付款也是不能缴费的。
图4-14 缴费错误信息页面
(3)点击输入大于应付款的数值,进入图4-15所示页面。这次可以看见找零也显示出来了。
图4-15 缴费正确页面
(4)点击未交存按钮,进入图4-16所示页面,正确输入后就可以完成缴费。
图4-16 完成页面
(5)点击第三个用户的未交存按钮,如图4-17所示提示实付款不能为空。
图4-17 缴费不能为空页面页面
(6)输入小于应付款,再点击未交存按钮,就进入4-18所示界面。显示错误。
图4-18 缴费错误页面
(5)点击导出exel如图4-19所示页面。
图4-19 导出exel页面
3.2.5 电费管理
电费管理跟水费一样,这里不再赘述。
图4-20 电费管理页面
4.2.6管理员管理
(1)点击管理员进入图所示4-21的界面。默认admin管理员是不能删除的。
图4-21管理员管理页面
(2)点击添加管理员进入图所示4-22的界面。
图4-22 添加页面
(1)点击编辑进入图所示4-23的界面。
图4-23编辑页面
3.3 用户模块
以用户身份登录系统且输入正确的用户名和密码,则进入图4-24所示的用户登录页面,否则进入图4-2错误界面。
图4-24 用户登陆页面
3.3.1 密码管理
点击修改密码进入如图4-25所示页面。
图4-25 用户密码修改页面
3.3.2 水电信息查询
点击水电信息查询进入如图4-26所示页面。显示了用户的缴费信息。
图4-26 水电费信息页面
3.3.3 个人信息查询
点击个人信息查询进入如图4-27所示页面。可以查看个人的基本信息,但是登陆名是不可以修改的。
图4-27 个人信息查询页面
-- 建表 --管理员 create table admin ( a_loginname varchar2(12) not null , a_password varchar2(9) not null , a_username varchar2(15) not null ) ; --注释 comment on column admin.a_loginname is '管理员登录名' ; comment on column admin.a_password is '管理员登录密码' ; comment on column admin.a_username is '管理员姓名' ; --添加主键 alter table admin add constraint pk_admin primary key(a_loginname) ; --建表 --用户信息表 create table userss ( userid varchar2(11) not null , u_loginname varchar(12) not null , u_password varchar(9) not null , u_username varchar(15) not null , address varchar2(30) not null , phone number(11) ) ; --注释 comment on column userss.userid is '用户编号' ; comment on column userss.u_loginname is '用户登录名' ; comment on column userss.u_password is '用户密码' ; comment on column userss.u_username is '用户姓名' ; comment on column userss.address is '用户地址' ; comment on column userss.phone is '用户电话' ; --约束 alter table userss add constraint pk_userss primary key(userid) ; --唯一约束,用户登录名唯一 alter table userss add constraint ck_userss unique(u_loginname) ; --建表 --水表 create table water ( id_w varchar2(11) not null , userid varchar2(11) not null , time_w date not null , count_w number(9,2) not null , u_loginname varchar(12) not null , phone number(11) , u_username varchar(15) not null , status_w number(9,2) not null , priceid_w number(9,2) not null , beforecount_w number(9,2) not null ) ; --注释 comment on column water.id_w is '缴费单号' ; comment on column water.userid is '用户编号' ; comment on column water.time_w is '缴费时间' ; comment on column water.count_w is '本月已用(吨)' ; comment on column water.u_loginname is '用户登录名' ; comment on column water.phone is '用户电话' ; comment on column water.u_username is '用户姓名' ; comment on column water.status_w is '应缴金额' ; comment on column water.priceid_w is '单价' ; comment on column water.beforecount_w is '截至上月共缴金额' ; --约束 alter table water add constraint pk_water primary key(id_w) ; --唯一约束,用户登录名唯一 alter table water add constraint ck_water unique(u_loginname) ; --建表 --电表 create table power ( id_p varchar2(11) not null , userid varchar2(11) not null , time_p date not null , count_p number(9,2) not null , u_loginname varchar(12) not null , phone number(11) , u_username varchar(15) not null , status_p number(9,2) not null , priceid_p number(9,2) not null , beforecount_p number(9,2) not null ) ; --注释 comment on column power.id_p is '缴费单号' ; comment on column power.userid is '用户编号' ; comment on column power.time_p is '缴费时间' ; comment on column power.count_p is '本月已用(吨)' ; comment on column power.u_loginname is '用户登录名' ; comment on column power.phone is '用户电话' ; comment on column power.u_username is '用户姓名' ; comment on column power.status_p is '应缴金额' ; comment on column power.priceid_p is '单价' ; comment on column power.beforecount_p is '截至上月共缴金额' ; --约束 alter table power add constraint pk_power primary key(id_p) ; --唯一约束,用户登录名唯一 alter table power add constraint ck_power unique(u_loginname) ; --建表 --价格表 create table money ( priceid_w number(9,2) not null , priceid_p number(9,2) not null , time_m date ) ; --注释 comment on column money.priceid_w is '水费单价' ; comment on column money.priceid_p is '电费单价' ; comment on column money.time_m is '变价时间' ;
如上述建完表格之后 ,发现水表跟电表 已经完全包含了用户的信息,发现只要查询水电表就可以得到用户信息,根本不用关联用户表,这样就发现用户表多余而如果电表跟水表用户的某些信息不一致就会造成异常,所以再次设计后将水表跟电表里面的用户信息删除只留用户编号,用户表设置用户编号唯一,通过用户编号来关联水表跟电表,进行关联查询。具体如下: