电信用户自助服务系统课程设计报告 第3页
close_date date
暂停日期
payment_style number(2)
付款方式(0:现金;1:银行转帐;2:邮局汇款;3:其他)
career varchar2(32)
职业
nationality varchar2(32)
国籍(系统中在本字段记录省份)
gender varchar2(8)
性别
company varchar2(32)
公司名称
address varchar2(32)
地址
post_code archar2(16)
邮编
●t_users_services用户业务帐号表(用于保存用户业务帐号信息)(如表5-6所示)
表5-6 t_users_services
字段名称
数据类型
备注
id number(32)
主键编码(PK)
user_id number(32)
用户表主键编码(references t_users(id))
lab_login_name varchar2(10)
用户业务帐号 lab_login_password varchar2(32)
用户业务帐号密码 lab_ip varchar2(32) not null
服务器编码
user_status number(2)
业务帐号状态(0:正常;1:暂停;2:删除)
pricing_id number
资费编码(references t_pricing(pricing_id))
enroll_date date
开通日期 close_date date
暂停日期
通过Unix系统中采集到的数据存放t_detail_x中,再通过整和,整和到下面几个表中:t_day_x、table t_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用户计费系统开发与运行环境
开发环境:
•操作系统: Microsoft Windows XP,Linux;
• 程序设计工具:UltraEdit-32,Eclipse
• 程序基于:Tomcat,JDK 1.5
•程序设计语言:html、javascript、jsp、EL表达式、Struts;
• 数据库:Oracle数据库
运行环境:
• CPU:主频1.0GHZ以上
• 内存:128M以上
• 硬盘:20G以上
• 操作系统:windows 98/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表达式;
上一页 [1] [2] [3] [4] 下一页
电信用户自助服务系统课程设计报告 第3页下载如图片无法显示或论文不完整,请联系qq752018766