用户自服务管理.docx
《用户自服务管理.docx》由会员分享,可在线阅读,更多相关《用户自服务管理.docx(14页珍藏版)》请在冰豆网上搜索。
![用户自服务管理.docx](https://file1.bdocx.com/fileroot1/2023-1/10/b88c944a-db7e-4207-965d-15cc06cfecef/b88c944a-db7e-4207-965d-15cc06cfecef1.gif)
用户自服务管理
用户自服务管理
需求
·用户可通过Internet自查询自己的当前或历史帐单,并能自修改密码。
用户帐务信息自查询
·用户标识信息:
帐单ID,姓名,帐号,状态(正常/暂停/关闭),开通日期。
·帐务信息:
日期,登录时长,本月费用
·服务信息,各种服务信息查询
·服务帮助,提供一个亲切的服务界面
·帐单明细:
登录时间退出时间时长
讨论:
帐单ID和帐号的区别?
数据库表结构
功能
·查询用户信息及用户帐号信息。
修改密码功能;
数据库表:
t_users
Createtablet_users{
user_idnumber(32),
user_namevarchar2(32),
Login_namevarchar2(10),
Login_passwordvarchar2(32),
User_statusnumber
(2),
User_phonevarchar2(32),
User_emailvarchar2(32),
Enroll_datedate,
Close_datedate,
Payment_stylenumber
(2),
Careernumber
(2),
Nationalitynumber
(2),
Sexnumber
(2),
Companyvarchar2(32),
Mail_addressvarchar2(32),
Post_codevarchar2(16),
PrimaryKey(user_id)
};
用户自服务管理流程图
讨论:
开发的流程
·设计项目框架
·书写项目详细文档
·讨论接口设计
·讨论框架的可行性和可扩展性
·编码
·测试
·项目总结
4.5.3管理员管理系统
用户管理功能定义
需求
·用户开通管理:
管理用户登陆OpenLab的帐号,包括帐号开通,暂停(加锁),恢复,删除。
·用户资料管理:
管理用户资料,包括姓名(单位),身份证号码,住址及资费信息等。
用户信息
·ID,姓名,帐务帐号/密码,OpenLab帐号/密码,状态(正常/暂停/关闭),联系电话,Email,开通日期,停止日期,付款方式(现金/邮寄/支票/转帐/电子银行),证件号码,职业(学生/IT从业人员/非IT从业人员),国籍(国国/美国/加拿大/日本/英国/澳大利亚/其他),性别(男/女),单位,联系地址,邮政编码。
注意:
·一个用户对应一个帐号,可以对应多个OpenLab帐号
数据库表信息
表一:
t_users
表二:
数据库表:
t_user_services
Createtablet_user_services{
user_idnumber
(2),
Lab_Login_namevarchar2(10),
Lab_Login_passwordvarchar2(32),
Lab_ipvarchar2(32),
User_statusnumber
(2),
Enroll_datedate,
Close_datedate,
Foreignkey(pricing_id)referencet_pricing(pricing_id)
Foreignkey(user_id)referencest_users(user_id)
};
Createindexl_user_servicesonT_user_service(user_id);
用户管理
·内部接口:
为“帐单管理系统”和“用户自服务系统”提供用户信息。
·输入接口:
从“资费管理系统”中获得资费信息。
外部接口
·在OpenLab实验室中加入帐号.
开发语言
·HTML,javaScript,JSP/Servlet,SQL.
·C++,Socket,TCP/IP
流程图
第五章数据库设计与配置
5.1概述
数据库设计就是针对应用需求和环境,建立合理的数据库模式和存储结构,保证数据的高效存取,并满足应用的任务处理要求。
数据库设计是应用系统建设的核心技术,是数据库应用领域的主要研究课题。
本系统主要采用Oracle数据库,Oracle提供的完整的电子商务产品和服务包括:
用于建立和交付基于Web的Internet平台;综合、全面的具有Internet能力的商业应用;强大的专业服务,帮助用户实施电子商务战略,以及设计、定制和实施各种电子商务解决方案。
而
且它有其他数据库不可替代的优点。
5.2数据库逻辑设计
逻辑结构设计就是把概念结构设计阶段设计好的基本E-R图转换为逻辑结构。
设计逻辑结构时首先将概念结构转换为一般的关系、网状、层次模型,其次将转换来的关系、网状、层次模型向特定的数据模型转换、最后对数据模型进行优化。
根据电信IP用户计费系统中数据信息的特点,将数据的概念模型转换为关系模型。
●用户实体转换为如下关系模式,其中主键编码为用户关系主键。
用户(主键编码、用户姓名、用户账务帐号、用户账务帐号密码、账务帐号状态(0:
开通;1:
暂停;2:
删除)、联系电话、email、开通日期、暂停日期、付款方式(0:
现金;1:
银行转帐;2:
邮局汇款;3:
其他)、职业国籍(系统中在本字段记录省份)、性别、公司名称、地址、邮编)
●管理员实体转换为如下关系模式,其中管理员编码为管理员关系主键。
管理员(管理员编码、管理员姓名、登录名、登录密码、联系电话、E-Mail、注册日期)
●资费实体转换为如下关系模式,其中资费编码是资费关系主键。
资费(资费编码、资费名称、月租费、每小时费用、资费描述)
●用户业务帐号实体转换为如下关系模式,其中主键编码为用户业务帐号关系主键,用户表主键编码和资费编码为外键。
用户业务帐号(主键编码、用户表主键编码、用户业务帐号、用户业务帐号密码、服务器编码、业务帐号状态(0:
正常;1:
暂停;2:
删除)、资费编码、开通日期、暂停日期)
5.3物理设计
本系统的一个主要功能就是相关信息的记录和查询,数据库是相当重要的一部分,其合理的设计将会大大简化程序的设计,提高数据的安全性和准确性。
本系统设计涉及到的表有t_adm、t_module、t_adm_rights、t_pricing、t_users、t_users_services、t_detail_x、t_day_x、tablet_day_x、t_month_x、t_year_x、t_day、t_month、t_year。
●t_adm用于保存管理员信息保存(如表5-1所示)
表5-1t_adm
字段名称
数据类型
备注
id
number
编号(pk)
name
varchar2(32)
姓名
login_name
varchar2(10)
登录名(唯一)
login_password
varchar2(32)
密码
phone
varchar2(32)
电话
email
varchar2(32)
Email
enroll_date
date
注册日期
●t_module用于保存模块信息,控制用户的权限(如表5-2所示)
表5-2t_module
字段名称
数据类型
备注
Id
number
模块编号(pk)
name
varchar2(32)
模块名称
user_flag
char
使用者标记:
0——管理员;1——用户
●t_adm_rights管理员权限表(用于保存管理员对模块的访问权限),adm_id,module_id都为外键(如表5-3所示)
表5-3t_adm_right
字段名称
数据类型
备注
adm_id
number
管理员编码
module_id
number
模块编号
●t_pricing资费表(如表5-4所示)
表5-4t_pricing
字段名称
数据类型
备注
pricing_id
number
资费编码(pk)
pricing_name
varchar2(32)notnullunique
资费名称
base_fee
number(5,2)
月租费
rate_fee
number(4,2)
每小时费用
pricing_desc
varchar2(64)
资费描述
●t_users用户表(用于保存用户账务帐号信息及个人信息)(如表5-5所示)
表5-5t_users
字段名称
数据类型
备注
idnumber(32)
主键编码(PK)
namevarchar2(32)notnull
用户姓名
login_name
varchar2(10)unique
用户账务帐号
login_password
varchar2(32)notnull
用户账务帐号密码
statusnumber
(2)notnull
账务帐号状态(0:
开通;1:
暂停;2:
删除)
phonevarchar2(32)
联系电话
emailvarchar2(32)
emailenroll_datedate
开通日期
close_datedate
暂停日期
payment_stylenumber
(2)
付款方式(0:
现金;1:
银行转帐;2:
邮局汇款;3:
其他)
careervarchar2(32)
职业
nationalityvarchar2(32)
国籍(系统中在本字段记录省份)
gendervarchar2(8)
性别
companyvarchar2(32)
公司名称
addressvarchar2(32)
地址
post_codearchar2(16)
邮编
●t_users_services用户业务帐号表(用于保存用户业务帐号信息)(如表5-6所示)
表5-6t_users_services
字段名称
数据类型
备注
idnumber(32)
主键编码(PK)
user_idnumber(32)
用户表主键编码(referencest_users(id))
lab_login_namevarchar2(10)
用户业务帐号lab_login_passwordvarchar2(32)
用户业务帐号密码lab_ipvarchar2(32)notnull
服务器编码
user_statusnumber
(2)
业务帐号状态(0:
正常;1:
暂停;2:
删除)
pricing_idnumber
资费编码(referencest_pricing(pricing_id))
enroll_datedate
开通日期close_datedate
暂停日期
通过Unix系统中采集到的数据存放t_detail_x中,再通过整和,整和到下面几个表中:
t_day_x、tablet_day_x、t_month_x、t_year_x、t_day、t_month、t_year,这样利于对数据库中的数据查询,在帐单、帐务和用户自服务的几个模块中都用到了,主要存储的数据是用户在登陆时间、退出时间、总计时、服务器IP,将数据有条理化。
t_detail_x:
(x:
月中的第几天,取值范围:
1~31)
原始数据表
t_day_x(x:
月中的第几天,取值范围:
1~31)
用户计费数据日表(统计当天每小时每个服务器上的每个用户的总时长)
每条数据记录的是:
一个服务器上的一个用户某一小时的总时长
对于一个服务器上的一个用户,最多有24条记录
t_month_x(x:
月份,取值范围:
1~12)
用户计费数据月表(统计当月每天每个服务器上的每个用户的总时长)
每条数据记录的是:
一个服务器上的一个用户某一天的总时长
对于一个服务器上的一个用户,最多有31条记录
t_year_x(x:
当前年份)
用户计费数据年表(统计当年每月每个服务器上的每个用户的总时长)
每条数据记录的是:
一个服务器上的一个用户某一月份的总时长
对于一个服务器上的一个用户,最多有12条记录
t_day服务器数据日表(统计当天每小时每个服务器的总时长)
每条数据记录的是:
一个服务器某一小时的总时长
对于一个服务器,最多有24条记录
t_month服务器数据月表(统计当月每天每个服务器的总时长)
每条数据记录的是:
一个服务器当月某一天的总时长
对于一个服务器,最多有31条记录
t_year服务器数据年表(统计当年每月每个服务器的总时长)
每条数据记录的是:
一个服务器当年某月的总时长
对于一个服务器,最多有12条记录
第六章电信IP计费系统的实现
6.1电信IP用户计费系统开发与运行环境
开发环境:
·操作系统:
MicrosoftWindowsXP,Linux;
·程序设计工具:
UltraEdit-32,Eclipse
·程序基于:
Tomcat,JDK1.5
·程序设计语言:
html、javascript、jsp、EL表达式、Struts;
·数据库:
Oracle数据库
运行环境:
·CPU:
主频1.0GHZ以上
·内存:
128M以上
·硬盘:
20G以上
·操作系统:
windows98/2000/XP、Linux
6.2系统实现
登陆:
用户登陆只能有一个功能模块(即:
用户自服务),进入系统后让用户只能看到用户自服务,其实现是通过jsp页面中用EL表达式控制;管理员登陆是要求权限的,其实现也是通过jsp页面控制,控制主流程是通过查询管理员的权限,在V层中的Action中把管理员权限设到session中,管理员有几个权限则就设几个session,在jsp页面中用EL表达式进行判断,如果设到session中的值不为空则显示其功能(注意:
在退出系统的时候要把功能模块的session设为空,防止下次其他用户登陆时的权限);
资费管理:
在此模块中要求的是很多,但实现代码是比较简单的,在这个模块中首先说一下
增加资费:
首先要看资费的名称是否已经用过了,要是用过就不能增加,其实现是通过在V层中的Action调用其业务方法中根据名称查询资费的方法在t_pricing表中进行查询,查找一下这个名字是否已经用过,通过返回值来给用户提示,返回值为空,则没有用过,给用户提示是能用这个资费名称,否则不能用这个名称进行插入操作。
还有就是通过月租费和每小时费用判断是否能进行插入,这个方法是也是通过其Action调用业务方法中的根据每小时费用和月租费在t_pricing中进行查询,提示也是通过返回值在Action中进行判断,返回值不为空能进行增加操作,否则不能进行增加操作。
修改资费信息:
其功能是修改资费信息,资费名称是不能被修改的,在这个方法中也是通过Action调用业务方法中根据资费名称修改资费的方法在t_pricing中进行修改,在Action中首先要得到页面中的各个文本框中的值。
删除资费信息:
其功能是删除所选的资费信息,在删除资费信息的之前是要在Action中先判断一下所选的资费是否有用户用,如果有的用户当前在用此资费则不能删除此资费,否则能成功删除。
在实现中是先要在Action中的调用其查询方法,在方法中是通过资费的pricing_id在t_user_services中进行查询,如果能查到说明还有用户在用这种资费,则给用户提示不能删除这种资费;如果查不到在Action中的方法中调用其根据资费对象删除资费的业务方法(此方法是通过hibernate实现),最后给用户提示。
用户自服务模块:
进入到用户自服务中,首先的页面中显示一个页面,其中有查询资费和修改用户信息的两个连接,功能如下:
修改用户信息:
在这个功能中实现的是用户自己修改自己的信息,修改信息是修改少数的信息,在这个页面中点击修改的时候是通过userself/modifyUser.do发送请求,在解析文件中解析到以后找到Action中的修改用户的方法,在Action中首先得到用户的新信息,存储在User对象中,把User对象传到业务方法中,根据User对象修改用户(此方法是通过hibernate中session的merge方法实现),修改成功提示用户;
帐单查询:
功能是通过用户选择年月,然后在Action中得到其年月,首先调用查询总时长的方法,把年月传过去,再通过年月在t_month_x(现在的年月就是传过来的月)中进行查询,条件是传过来的年,通过遍历ResultSet把所查到的时长累加,返回累加后的结果,在Action中将返回来的值,存到session中便于页面显示。
然后在Action中调用查询总费用的方法,在此方法中要求把用户传过来,先根据User查询用户的业务帐号有几个,根据不同的业务帐号查询不同的资费,然后cost=cost+time*p.getRate_fee()+p.getBase_fee()(cost是总费用),计算出来后把cost返回,在Action中将返回的cost保存到session中便于页面显示。
在所查询的条目后有明细可以通过点击查看详细信息(即:
每天的消费情况),在明细中列出用户在那个服务器(即:
业务帐号)上登陆的时间的详细信息:
首先在Action中查询到User有几个业务帐号(能在几个服务器上登陆),将其保存在集合中,遍历集合,得到每个IP地址,调用详细信息方法,将IP地址,User和年月传到其方法中,从t_detail_x(x为每个月中的天数)查询出登陆时间、退出时间、时长将其查出来结果存放在一个集合中,返回集合;然后调用一个服务器上的总时长的方法,将IP地址,User和年月传到其方法中,在t_detail_x中查询出时长,将其结果累加,返回一个服务器上的总时长;再之,调用一个服务器上计算总费用的方法,将一个服务器上的总时长、User和IP传过去,查询出其业务帐号的资费信息用cost=cost+总时长*资费信息中的每小时费用+资费信息中的月租费,计算出一个服务器上的总消费,将其返回;最后将业务帐号、IP、一个服务器上的总时长、一个服务器上的总费用、用户资费的详细信息(集合)存放在一个自定义的对象中,将其对象保存在集合中,然后将集合保存在session中。
便于页面显示,在页面遍历集合,用EL表达式;
第七章小结
这次项目设计是对自己学习WEB编程的的一个检验,设计系统的过程很辛苦,因为好多东西第一次把他们结合在一起使用,而且主要是因为时间比较仓促,虽然做完了,但很多地方还不完善,把系统无限的接近真实的应用还是有很大一段距离的。
本系统中,我加强了对Hibernate技术的研究,本身对这个比较先进的技术感到很吃力,但是老师就对我们说,技术不是背出来的,是练出来的,尽管好多问题自己很难解决,但是通过不同的方式还是得到解决,不管通过何种方式,我还是从中学到好多,自己还是有点进步的。
毕业设计是大学的最后一门课程,是这几年所学知识的综合运用,也是对我们在大学阶段学习成果的最好检验。
通过本次设计,我深感自己知识的不足,经验的不足。
而通过这一个阶段的设计工作,我也充分锻炼了自己,培养了自己独立思考,分析解决问题的能力,是自己由理论迈向实践的宝贵一步。
致谢
在这次毕业设计即将结束之际,首先要感谢我的指导老师屠立忠老师和张仰飞老师,谢谢他们这四个月来为我们付出的辛勤劳动。
他们经常连晚饭都顾不上,连续给我指导到深夜。
我的每一次进步,都离不开他们的辛勤付出。
在这次的毕业设计中,我得到很多人的帮助,知识面得到了拓宽。
在这段时间内,同学老师们都热心地帮助了我,指导老师每个星期都为我们作指导并关心同学们的进度,同时,很多同学对于我的课题热心地提出了自己的意见。
此外,还有很多在MDI程序设计方面有经验的网友给我提供了很大的帮助。
特别在本次课题的前期给了我很多指导,甚至热心提供相关代码并认真详细的给我讲解,在此,也要衷心感谢他们。
我认为这次的毕业设计对我个人来说是一次四年来所学知识的综合运用,并是对自己自学能力的一次考验。
参考文献
[1]孙卫琴著.Java面向对象编程[M].北京:
电子工业出版社,2006年.
[2]朱喜福著.Java程序设计[M].北京:
清华大学出版社,2004年.
[3]孙卫琴著.精通Hibernate3.0[M].北京:
电子工业出版社,2005年.
[4]孙卫琴著.精通struts基于mvc的JavaWeb设计与开发[M].北京:
电子工业出版社,2004年.
[5]萨师煊,王珊著.数据库系统概论[M].北京:
高等教育出版社,2000年.
[6]李建军,高明著.JSP编程技术与应用[M].北京:
高等教育出版社,2003年.
[7]徐子贵,徐小红著.Java面向对象数据库教程[M].北京:
电子工业出版社,2004年.8.求是科技.VisualC++6.0实效编程百例.人民邮电出版社.2003年
9.周良忠.C算法第一卷.人民邮电出版社.2004年
10.周良忠.C算法第二卷.人民与电出版社.2004年