资源描述
++++大学
毕业论文(设计)
学院: 计算机科学学院
专业:计算机科学与技术年级:2006
题目: 电信增值服务计费管理系统
学生姓名: +++ 学号:++++++
指导教师姓名:+++职称: 教授
2009年5月20日
++++本科毕业论文(设计)原创性声明
本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。本人完全意识到本声明的法律后果由本人承担。
作者签名: 年 月 日
目 录
引言 3
1 系统设计概述 3
1.1 系统功能描述 3
1.2 需求分析 4
1.2.1 问题定义 4
1.2.2 可行性研究 4
1.2.3 电信运营管理系统任务要求 4
1.2.4 技术框架分析 5
1.2.4 软件分析 6
1.3 系统模块划分 6
1.4 系统流程分析 7
1.5 数据库的设计 7
数据库的大致设计过程如下: 7
2 系统功能模块设计 11
2.1 管理员登录界面设计 11
2.2 管理员管理界面设计 12
2.3 资费管理界面设计 12
2.4 账单管理界面设计 13
2.5 账务管理界面设计 14
2.6 权限管理界面设计 14
2.6 用户自服务界面设计 15
3 系统与数据库的连接 16
4 系统架构的设计 16
5 系统的技术特点 17
结论 20
致 谢 21
参考文献 21
电信增值服务计费管理系统
摘要:电信三国是如何建成的:
十几年来,电信运营商似乎走了一段纷繁复杂的征途。电信重组,标志着中国电信业进入一个发展的新时 期。2009年10月新联通成立,中国电信业重组后的格局终于明朗,原来的五家争霸变成了三足鼎立。而年 底3G牌照的发放在即,更是让“新三国”之间的竞争进入白热化的状态。究竟旧貌换新颜的电信运营商们该 如何整合现 有资源和品牌?如何实现基础业务平台与增值业务的结合?眺望前方,09年,三大运营商在 增值业务上的较量会更加激烈。本系统即是对新电信时代的一个增值服务的一个计费管理系统。电信增值 服务是现代电信增值的重要手段,通过用户定制的服务种类与服务时间统计相应的费用,准确快速方便的 计费系统是支持这项服务的重要手段。本系统是是一个强大的基于B/S模式的同时能够提供管理员与普通 用户的系统,争取做到实时更新,快速稳定。本系统的服务器为UNIX服务器(开发时在Linux),数据库 设计是基于MYSQL平台,系统用到了JAVA EE三个开源框架:STRUTS2.1+HIBERNATE3.2+SPRING2.5。本电信 增值服务计费管理系统拥有模块数据采集系统,数据整合模块,用户管理模块, 资费管理模块 ,管理员管理模块 ,账单管理模块, 账务管理模块, 自服务模块 ,权限管理模块。本系统力争做到快速 准确 透明 高效 方便。
关键词:电信增值;开源;数据库;HIBERNATE;ORACLE;J2EE;STRUTS;SPRING
Value-added Telecom Services Management System
Abstract:For several years, the telecommunication operators seem to go for a variety of complex instructions.The telecommunication reorganization, symbolizes that the Chinese telecommunications industry enters a new development period.In the October2009 china unicom is establish.After the Chinese telecommunications industry reorganization's pattern is finally bright,five originally strove for hegemony to turn the tripod to stand.But the end of the year, 3G license plate's is provided.That is lets “the new three countries"competition enter the superheating condition.The telecommunication operators is to be how present existing resources and brand that old appearance to be trade with new appearance.How to realize the foundation service platform and the value-added service union .In future,Three big operator's can be more intense in value-added service contests in 09.This system is a new telecommunication time value-added service cost management system .The telecommunication value-added service is the important means which the modern telecommunication rises in value .Calculate cost through servicing time statistics corresponding expense of users. The fast convenience's cost system is good for supporting this service.This system is one formidable can provide the manager and average consumer's system based on B/S pattern at the same time which achieve the real-time renewal, fast stable.This system's server is the UNIX server (when development in Linux) and database is MySQL.The system used three open source frame(STRUTS2.1+HIBERNATE3.2+SPRING2.5) of JAVA EE.This telecommunication value-added service cost management system has the module Data acquisition module, data integration module, the user management module, tariff management module, the administrator management module, billing module, account management module, from the service module, rights management module. This system achieves fast accurate transparent ,highly effective and convenient.
Key words:Telecommunications value-added;Open-source;Database;JDBC;ORACLE; J2EE; STRUTS;HIBERNATE;SPRING.
引言
对于所有计费系统来说,准确,方便,透明都是最重要的要求【1】,本系统在这些方面做了大量的工作,提供了用户自查询等功能,做到了透明。对服务时间精确到分钟,在数据的整合与采集都有详细的记录,做到了准确。本系统基于B/S模式,方便了查询,不需要下载插件即可实时查询,做到了方便。本系统在用户使用时争取做到与用户的互动,用了大量的AJAX技术以方便用户的互动体验【2】【3】。本系统用了JAVA EE的SSH框架,MVC分层清晰,有良好的扩展性和代码易读性。
1 系统设计概述
1.1 系统功能描述
下面是本系统的整体结构图:
图1-1 系统整体结构图
电信增值服务计费管理系统的主要目标是对电信附加服务进行友好安全的管理,做到对用户负责。对运营商便利,对企业形象提升。具体功能描述如下:
(1)数据采集和整合【4】。(对用户的访问记录文件进行采集整合。)
(2)用户管理模块。(包括拥有该项管理权限的管理员对用户的增删改查。)
(3)资费管理模块。 (包括拥有该项管理权限的管理员对资费的增删改查。)
(4)管理员管理模块。(拥有该项管理权限的管理员对管理员的增删改查,注:admin即超级管 理员不允许删除。)
(5)账单查询,账务查询。(包括拥有该项管理权限的管理员对特定条件的账单账务查询并提供报表输出打印。)
(6)用户自服务。(对普通用户登陆后对自己的消费记录查询,并提供报表打印功能。)
1.2 需求分析
1.2.1 问题定义
定义阶段的主要任务:我们要建立一个电信增值业务计费管理系统,目标是通过该系统有效的服务于用户,该系统的总体业务模型为:
图1-2 总体业务模型图图
1.2.2 可行性研究
这个阶段要解决的是“对上一阶段所确定的问题有无行得通的解决办法”。从而导出系统的逻辑模型,从系统逻辑模块出发找到几种可供选择的系统实现方案[5]。需求分析阶段是软件定义时期的是后一个阶段,中心任务是回答“系统必须做什么?”的问题[6]。通过需求分析应该得出有数据流程图、E-R图等描绘的精确的系统逻辑模型。
1.2.3 电信运营管理系统任务要求
系统的功能要求是对使用该系统的用户的服务类型和服务时间进行统计核算,计算得出得出用户所需付费,对系统的各个模块进行管理。惹怒要求阶段主要考虑以下电信运营管理需求:
(1)用户使用服务在线时长统计。
小时时长=按IP统计采集的特定小时的登录时长
天时长=按IP统计的用户特定年特定月当天24小时登录总和
月时长=按IP统计的特定年当月时长的总和
年时长=按IP统计的当年时长的总和 注:以上均属于数据采集与整合
(2) 计费统计。
用户应缴费用=时长*资费类型数额利率+基本费用
1.2.4 技术框架分析
本系统运用JAVA EE技术实现。Java EE规范定义了一个完善的应用组件技术框架,作为企业级应用系统基本构造模块的组件就是建立在这个框架之上。从简单的Web应用到复杂的分布式企业级应用,几乎所有的业务应用,都可以在此技术框架基础上构造。本文中使用的组件技术主要有一下几种类型:JSP网页、Struts、Spring、Hibernate、JavaBean。
(1)JSP:JSP(Java Server Pages)是由Sun Microsystems 公司倡导、许多公司参与一起建立的一种动态网页技术标准,JSP技术在Servlet技术基础上发展起来的,它正在飞速发展中,现已成为Java服务器编程的重要组成部分。它虽然还未成型,但是它必将和J2EE(Java 2 Enterprise Edition)一起发展。JSP是结合markup(HTML和XML)和Java代码来处理一种动态页面。每一页第一次被调用时,通过JSP引擎自动被编译成Servlet,然后被执行,以后每次调用时,执行编译过的Servlet。JSP提供了多种方式访问Java class、Servlet、Applets和Web Server,因此,Web应用的功能可以分成多个明确定义公用接口的组件,通过JSP将它们结合在一起.
(2)Struts:Struts 框架工具是 Apache 基金会 Jakarta 项目中推出的一个子项目。 Struts 在英文中是支架、支撑的意思,这也体现出 Struts 在开发 Web 应用程序过程所起到的重要作用, Struts 为 Web 应用提供了通用的框架,让开发人员可以把主要精力集中在如何解决实际业务问题上,与此同时 Struts 框架也允许开发人员根据实际需要进行扩展和定制,从而可以更好的适应用户的需求。采用 Struts 可以简化遵循 MVC 设计模式的 Web 应用的开发工作,很好地实现代码重用,使开发人员从一些繁琐的工作中解脱出来,快速开发能够充分发挥 JSP/Servlet 优点、并具有强可扩展性的 Web 应用。总之, Struts 的出现使得 Web 应用的开发过程大大简化,从而能够缩短开发周期、提高开发效率。
Struts 架构一经推出,即受到 Java 开发群体的广泛重视,从 2004 年开始逐渐升温,并日渐成为 Java 创建 Web 应用开发的最流行的框架工具,在目前 Java Web 程序员的招聘要求中,几乎都提出了对 Struts 的要求,精通 Struts 架构已经成为 Java Web 程序员必备的技能。
(3)Spring:传统J2EE应用的开发效率低,应用服务器厂商对各种技术的支持并没有真正统一,导致J2EE的应用没有真正实现Write Once及Run Anywhere的承诺。Spring作为开源的中间件,独立于各种应用服务器,甚至无须应用服务器的支持,也能提供应用服务器的功能,如声明式事务等。 Spring致力于J2EE应用的各层的解决方案,而不是仅仅专注于某一层的方案。可以说Spring是企业应用开发的“一站式”选择,并贯穿表现层、业务层及持久层。然而,Spring并不想取代那些已有的框架,而是与它们无缝地整合。
(4)Hibernate:Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来 操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命 意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。
1.2.4 软件分析
1.由于本系统服务器为类Unix服务器,在数据统计与与整合时也需要类Unix系统,且Linux相对于Windows xp操作系统更加稳定,Linux的很多品牌为免费产品,所以选用Linux系统,在Linux系统中Fedora 是一个开放的、创新的、前瞻性的操作系统和平台,它允许任何人自由地使用、修改和重发布,无论现在还是将来。它由一个强大的社群开发,这个社群的成员以自己的不懈努力,提供并维护自由、开放 源码的软件和开放的标准[7]Fedora 项目由 Fedora 基金会管理和控制,得到了 Red Hat, Inc. 的支持[9]。所以选用较新fedora 12作为开发操作平台。。
2.MySQL是一个小型关系型数据库管理系统,开发者为瑞典MySQLAB公司,在2008年1月16号被Sun公司收购。MySQL 被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多数据库服务选择了MySQL[9]。且它相较Oracle的费用昂贵,而且Mysql的管理能力也能胜任此任务,它为用户提供了一个安全、可靠、易管理和高端的客户/服务器数据库平台。所以我选用Mysql-5.0.22作为此系统的数据库服务器。
3.Eclipse 是一个开放源代码的、基于 Java 的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括 Java 开发工具(Java Development Tools,JDT)[9]。 Eclipse允许在同一IDE中集成来自不同供应商的工具,并实现了工具之间的互操作性,从而显著改变了项目工作流程,使开发者可以专注在实际的嵌入式目标上,利用Eclipse我们可以将高级设计(也许是采用UML)与低级开发工具(如应用调试器等)结合在一起[10]。所以我选择Eclipse3.5作为开发工具。
4.Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现,Tomcat 5 支持最新的Servlet 2.4 和JSP 2.0 规范。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可[11]。成为目前比较流行的Web 应用服务器是一款apache开发的一款功能强大,性能稳定,使用方便,易学易懂的web服务器,他安装简单,轻量,而且完全免费,所以我选择tomcat-6.0.20作为web服务器【1】。
1.2.5 硬件分析
中央处理器(CPU):586以上的处理器
硬 盘:80GB
内 存:512M
显示器:17寸彩显
打印机:Epson LQ-1600K打印机
1.3 系统模块划分
按照功能描述的内容,设计系统的功能模块。如图1-3,1-4所示:
图1-3 管理员功能模块示意图
图1-4 系统功能模块示意图b)
1.4 系统流程分析
本管理系统中,涉及到三大块,具体到九个管理模块(见图1-1)。
1.5 数据库的设计
数据库的大致设计过程如下:
(1)根据系统的需求,确定数据库中要保存的数据信息。
(2)设计数据的概念模型,按照功能模块的划分来对数据建模。
(3)逻辑结构设计,把概念结构转化为与所采用的数据库管理系统所支持的数据模型相符合的过程。
(4)数据库的实施和维护。
(5)E-R图。
1.权限管理,管理员管理,登陆模块相关表E-R图:
在此电信增值服务计费管理系统中,定义了一个名为netctoss的数据库。该数据库中包含的主要表有如下:管理员表、角色表、管理员角色设置表、系统模块表、模块操作表、权限表、角色权限设置表、用户信息表、资费信息表、用户业务表、用户登录时长按用户每天整合表、用户登录时长按用户每月整合表、用户登录时长按用户每年整合表。以下是比较重要的几张表的结构。
. 1模块表modules
字段英文名
字段汉字名
类型
约束条件
说明
id
模块ID
Int
PK
name
模块名称
Varchar(20)
模块名称
2.模块操作表operations
字段英文名
字段汉字名
类型
约束条件
说明
id
操作ID
Int
PK
name
操作名称
Varchar(20)
模块操作名称
3.权限表rights
字段英文名
字段汉字名
类型
约束条件
说明
id
操作ID
Int
PK
name
操作名称
Varchar(20)
权限名称
url
保留
Varchar(30)
权限URL
moduleid
模块ID
Int
权限模块ID
operationid
操作ID
int
权限操作ID
4.角色表roles
字段英文名
字段汉字名
类型
约束条件
说明
id
角色ID
Int
PK
name
角色名称
Varchar(20)
角色名称
5.角色权限设置表rolerights
字段英文名
字段汉字名
类型
约束条件
说明
id
角色权限ID
Int
PK
roleid
角色ID
int
rightid
权限ID
int
6.管理员表admins
字段英文名
字段汉字名
类型
约束条件
说明
id
管理员ID
Int
PK
name
管理员姓名
Varchar(20)
loginname
管理员登录名
Varchar(20)
loginpassword
管理员登录密码
Varchar(20)
phone
管理员电话
Varchar(20)
email
管理员电邮
Varchar(20)
enrolldate
管理员授权日期
Date
7.管理员角色设置表adminroles
字段英文名
字段汉字名
类型
约束条件
说明
id
管理员角色ID
Int
PK
adminid
管理员ID
Varchar(20)
roleid
角色ID
Varchar(20)
8.用户帐务帐号表users
字段英文名
字段汉字名
类型
约束条件
说明
id
用户ID
Int
PK
name
用户名
Varchar(20)
loginname
用户登录名
Varchar(20)
loginpassword
用户登录密码
Varchar(20)
status
用户状态
Int
暂停
phone
用户电话
Varchar(20)
email
用户电邮
Varchar(20)
enrolldate
用户开户日期
Date
closedate
用户注销日期
Date
paymenttype
支付方式
Int
career
职业
Varchar(20)
nationality
民族
Varchar(12)
sex
性别
Tinyint
Company
公司
Varchar(20)
zip
邮编
Varchar(8)
9.资费表pricings
字段英文名
字段汉字名
类型
约束条件
说明
id
资费ID
Int
PK
name
资费名称
Varchar(20)
basefee
基本费用
double
ratefee
费用率
double
description
资费描述
Varchar(50)
暂停
10.用户业务帐号表userservices
字段英文名
字段汉字名
类型
约束条件
说明
id
业务ID
Int
PK
userid
用户ID
Varchar(20)
loginname
用户登录名
Varchar(20)
loginpassword
用户登录密码
Varchar(20)
labip
实验室IP
status
状态
Varchar(20)
priceid
资费ID
Varchar(20)
enrolldate
业务申请日期
Date
closedate
业务停止日期
Date
11.用户登录时长原始明细表details
字段英文名
字段汉字名
类型
约束条件
说明
loginname
登录名
Varchar(20)
loginip
登录IP
Varchar(24)
logintime
登录时间
Timestamp
logouttime
登出时间
Timestamp
labip
实验室IP
Varchar(24)
duration
登录时长
Long
12.用户登录时长按用户每时整合表detaildays_x
字段英文名
字段汉字名
类型
约束条件
说明
loginname
登录名
Varchar(20)
loginip
登录IP
Varchar(24)
logouttime
登出时间
Timestamp
labip
实验室IP
Varchar(24)
duration
登录时长
long
13.用户登录时长按用户每天整合表detailmonths_x(与上同)
字段英文名
字段汉字名
类型
约束条件
说明
loginname
登录名
Varchar(20)
loginip
登录IP
Varchar(24)
logouttime
整合时间
Timestamp
labip
实验室IP
Varchar(24)
duration
登录时长
long
14.用户登录时长按用户每月整合表detailyears_x(与上同)
字段英文名
字段汉字名
类型
约束条件
说明
loginname
登录名
Varchar(20)
Loginip
登录IP
Varchar(24)
logouttime
整合时间
Timestamp
Labip
实验室IP
Varchar(24)
Duration
登录时长
long
15.用户登录时长按实验室每时整合表detaildays
字段英文名
字段汉字名
类型
约束条件
说明
logouttime
整合时间
Timestamp
Labip
实验室IP
Varchar(24)
Duration
登录时长
long
16.用户登录时长按实验室每天整合表detailmonths(与上同)
字段英文名
字段汉字名
类型
约束条件
说明
logouttime
整合时间
Timestamp
Labip
实验室IP
Varchar(24)
Duration
登录时长
Long
17.用户登录时长按实验室每月整合表detailyears(与上同)
字段英文名
字段汉字名
类型
约束条件
说明
logouttime
整合时间
Timestamp
Labip
实验室IP
Varchar(24)
Duration
登录时长
long
2 系统功能模块设计
2.1 管理员登录界面设计
登录界面对一个系统来说是很重要的部分,它对用户体验的第一印象尤其重[12]。本系统的管理员管理为非面向普通用户的门户,所以登录界面力求做到简洁。如图2-1所示:
图2-1 登录界面
2.2 管理员管理界面设计
管理员管理包括超级管理员的信息修改和普通管理员的增删改查与信息修改。如图2-2所示:
图2-2 管理员管理界面
2.3 资费管理界面设计
资费管理模块主要是资费的类型和数额。包括资费的增删改查。如图2-3所示:
1.资费查询:
图2-3 资费管理界面
1.资费修改:
图2-3 资费管理界面界面
2.4 账单管理界面设计
账单管理是针对一个用户在特定时间范围内的资费账单的查询。如图2-4所示:
图2-4 账单管理界面
2.5 账务管理界面设计
账务管理是管理员对使用服务器的用户的信息管理。如图2-5所示:
图2-5 政务管理界面
2.6 权限管理界面设计
权限管理是本系统管理的重要模块,也是分级别管理的重要实现,它分为角色管理和权限管理两部分。角色浏览如图 所示:
图2-6 权限管理界面
2.6 用户自服务界面设计
用户自服务是提供给普通使用的。是一个服务的门户,门户网站就要求要有更好的用户视觉体验[13]。这个模块对普通用户使用服务器的清单有一个公开的展示。登录与查询图如下:
图2-7 自服务界面
3 系统与数据库的连接
JDBC(Java Data Base Connectivity,Java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC为数据库开发人员提供了一个标准的API,据此可以构建更高级的工具和接口,使数据库开发人员能够用纯 Java API 编写数据库应用程序,同时,JDBC也是个商标名[14]。Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来 操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命 意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任[15]。本系统中数据采集与整合采用JDBC技术,其他模块采用Hibernate连接数据库。
4 系统架构的设计
系统架构逻辑如下:
图4-1 系统架构逻辑图
由于MVC具有低耦合高重用等优点[16],故系统采用MVC三层模式开发。如图 4-1 所示[17]:
图4-2 系统架构图
5 系统的技术特点
1.应用的技与服务均为开源免费,降低开发的成本
本系统采用Linux开源免费系统fedora 12作为操作平台,tomcat-6.0.22作为web服务器,mysql作为数据库服务器,采用struts2.1,spring2.5,hibernate3.2三大开源框架开发,使用金山WPS撰写文档,以做到最大可能的减少开发支出,节约成本,支持开源。
2.项目开发流程清晰,开发规范
本系统开发有清晰的开发流程,完全按照企业开发软件的流程,各个阶段思路清晰,文档全面。下面是软件开发简要流程。如图 5-1 所示:
图 5-1 开发流程图
2.低耦合性
(1)面向接口编程
采用面向接口的编程方式,每一层的类都只对它的上一层开放接口,每一层只调用它的下一层的接口而无需知道具体的实现方法。层与层之间只通过接口进行通信,而无需关心其下层的具体实现[18]。
(2)编码时候尽量提取公共信息
为了增加代码的可重用性,在一些公共信息上采取文件配置的提取,hibernate的配置简略如下:
username=root
password=root
driver=com.mysql.jdbc.Driver
url=jdbc\:mysql\://localhost\:3306/netctoss
(3)采用Spring进行管理
对Dao层和service层与action层之间的偶合采用了Spring框架[19],主要用到了IoC的技术降低这三个层之间的偶合。主要配置代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:util="http://www.springframework.org/schema/util"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util-2.5.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-2.5.xsd">
<context:property-placeholder
location="classpath:database.properties" />
<context:component-scan base-package="/"></context:component-scan>
<context:annotation-config />
<bean id="dataSource"
class="mons.dbcp.BasicDataSource">
<property name="driverClassName" value="${driver}" />
<property name="url" value
展开阅读全文