版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
电信资费系统的设计与实现摘要随着计算机技术的快速发展,计算机已经逐步融入我们生活的每一部分,包括电信资费,它知足了人的需要,是计算机信息时代的一个产物。在这种情况下,电信资费平台就应运而生。针对电信资费系统在系统需求分析的基础之上,逐步设计了系统的开发流程,并实现了各功能模块的需求。系统以框架(spring,boot)为基础,采用B,s设计模式,代码在IDEA环境平台下编写,优先采用Java语言,连接了Mysql数据库,利用该数据库传送平台数据,获取数据,改数据等,而在设计实现前端页面时,选择html技术实现本地功能,借助脚本语言JavaScript。系统主要功能有用户登陆,人物管理,资费管理,账户管理,票据管理等,功能齐全,界面清晰简单,操作方便。为完成本系统的开发,验证上述办法的可行性,实用性和有效果性,简化关税流程具有重大含义。本文主要简介了电信资费系统的开发过程及相关界面显示,包括用户操作和管理员管理的设计与实现。关键词:电信收费,B,s,管理电脑,数据库,账户使用目录TOC\o"1-3"\h\u21033摘要 I19622第一章.绪论 1318151.1课题来源和意义 193371.2国内外发展现状 2115361.3工作目标 2236731.4论文结构 219618第二章.电信资费系统需求分析 4130912.1系统粗略需求 410542.1.1系统流程图 4182782.1.2数据流图 4204372.1.3数据字典 584212.1.4用例图 6273672.1.5部署图 7122102.1.6可行性研究 7268382.2系统详细需求 8267642.2.1系统功能模块 8253332.2.2实体联系图 10220932.2.3状态转换图 109982第三章.电信资费系统设计模式 12321093.1系统的总体设计 1216763.1.1类图 12244143.2系统的详细设计 1216223.2.1概述 12141183.2.2活动图 13317453.2.3序列图 1321983.3数据库表设计 14322263.3.1表结构设计 1414149第四章.电信资费系统评测 1715964.1编程实现 1749004.1.1基础信息模块 1754844.1.2角色管理模块 23307124.1.3管理员模块 26148614.1.4资费管理模块 28292634.1.5账务账号管理模块 30232944.1.6业务账号模块 3314754.1.7账单管理模块 36193084.1.8报表模块 3628714.2测试结果 38126614.3调试结果 3815464.3.1缺陷统计 3825094.4维护方法 39132294.4.1改正错误 39106304.4.2适应环境 39298904.4.3完善功能 39141204.4.4预防性维护 40175004.5管理方法 4075464.5.1任务网络 40220444.5.2任务周期 41198894.5.3资源层次 41312854.5.4质量保证 415077第五章.结论 4278425.1工作总结 4260495.2工作展望 4216156参考文献 43PAGEPAGE15第一章.绪论课题来源和意义电脑网络技术的发展及其在当代时代的广泛应用,加快了现代社会信息近现代化的步伐。与此一起,电信的关税也随信息化的趋势而出现。这种方式开创了新的运行方式,使社会经济发展方式发生了重大变化。能说,它占有重要的地位。本课题的研究主要源于现实生活的需要。如今,经济飞速发展对人们的生活和其他方面都有很大的影响。能想象,人类的生活越来越忙碌,大部分时候都花在工作上,所以说其他方面的时间就会减少,而电信业务的越来越简便,更加方便了人们的生活。与传统模式相比,这种新的电信业务具有以下优势:(1)降低了时间成本,降低了电信业务成本。一起,网络带来的强大流量大大降低了其局限性;(2)它比传统的交易方式更快,更方便,让用户在家能享受这种便利。另一方面,因为减少了中间流通环节,利用互联网进行整个交易活动过程就不受专卖店的限制,气象等自然因素对其影响不大;(3)相对于传统方式来说,该业务方式使得信息更加立体和全面。通过互联网,有很多方式可供选择,任何方式都能给用户更好的视觉体验,对于商家来说,也能更轻松地维护自己的形象;(4)电信业务的运营模式,对人们的生活和其他方面来说,都有极大的改变。电信的资费业务涉及网上支付,网络安全等行业,从另一方面从而带动新兴产业的发展,大大增加了人们的就业机会,促进了城市GDP的成长。国内外发展现状当代时代,在电信业务领域,其工作模式主要包括B2B(Business-to-Business)、B2C(Business-to-Customer)和C2C(Customer-to-Customer)。B2B适应的群体是商家和商家之间,他们使用因特网技术,在线完成交易,非常典型的有移动,电信,联通等平台。B2C就是直接面向消费者,这种更适合大众。C2C是消费者之间运用的电子模式。作为这些模式的关键原因,电信收费系统从用户体验的角度出发,从根本上决定着电脑开发团队的成败。本文以B2C模型为基础,探究了电信关税体系的建设。随着欧美国家的快速发展,借助发达的计算机网络技术很容易达到降成本的效果。生产和采购成本大大降低。一起,结合公司自身经营情况,提升了服务质量,提升了行业竟争力。发展形势十分可观。比如,创建于十九世纪七十年的美国的的一家公司,名为AT&T公司,主要营业内容为电信业务。在当时曾位居第二大做移动电信业务公司,在当时一直操纵America的本地和长途电话市场。这家公司在近100多年中,经历过很多次拆分和组合。对比国内电信资费业务和国外电信资费业务的发展状况,可以看出西欧等国际的技术发展起步比较早,而在中国,在电信业务方面发展相对来说比较晚一点。所以说,可能存在一些问题,比如技术熟练人员太少,拥有高技术的人才不能够满足当前企业的需求,互联网管理和对用户的服务体验系统并不怎么完善,以及诚实守信问题,物流不畅通问题,以及业务支付时可能存在安全隐患等一系列的问题,这些都是我们今后在研究时应该重点关注的地方。但是,虽然存在些许问题,我们国家全国的电信资费业务的发展的速度依旧超过了很多人心里的预期。在近几十年的,像移动,电信,联通,这些电信业务公司已经快速发展。总而言之,当今时代的商业模式已经发生了天翻地覆的变化,人类的生活方法也在改变,而且对于大部分来说,选择电信业务,不仅仅因它方便快捷,而且在当前快节奏的年代,电信的业务对一些工作族来说更为方便。工作目标首先,对国外电信业务和国内电信业务进行分析,进行可行性探究。然后,根据电信业务平台的特点和用户需求进行分析,对该电信资费平台作出一定的评估。再然后,对系统进行总体设计,这个时候就需要确定该电信资费系统的各模块由什么部分构成,从而记录相关的规范,并生成相关的文档。最后,根据系统设计来编写代码,进行功能开发,实现系统并在IDEA开发环境下进行测试和维护。。论文结构本文由左右五章组成:第一章绪论。本章节中主要简介了本文的研究意义,并对电信资费平台的发展进行了一个大致的分析和认识。此外,还探讨了本文的研究重点,起到了一定的指导功效。第二章是需求分析。在这一章节中将详细介绍系统需求分析,主要分为分为粗需求分析和细需求分析两部分。通过系统的粗略需求流程图,数据流图用例图,部署图分别简单分析了系统的总体工作流程和模块工作内容,可行性研究说明了开发本系统的可行性,详细要求通过绘制E,R图和状态转换图的系统来显示详细信息。第三章是设计模式。本章建立了系统设计的总体思路,将系统分为三个模块,第一个模块为总体设计,第二个模块为详细设计,第三个模块为数据库设计。在总体设计这一部分中主要描述了总体设计概况,主要给出了类图。详细设计从系统的活动图和功能图开始。在数据库设计这一部分中,给出了数据库表的定义和表之间的关系。第四章是制度实施。本章是在前期工作的基础上,对系统的具体实施进行了研究,现阶段将给出相应的系统运行效果图,以验证系统的实施效果。第五章是结论。总结发展经验和需要改进的地方,以及今后的发展规划。第二章.电信资费系统需求分析本章包括系统的粗需求分析和细需求分析,采取传统的构造化方法和UML方法进行分析,方便最两种方式的优点缺点。系统粗略需求该系统的一个简单要求是允许用户用游览器来用所开发的系统,并通过身份认证进入核心部分的身份信息,如对收费等一系列数据的请求。这些请求将被发到服务器,等待办后的数据返回到接口。基于B,S构造的系统能搭建这样一个平台,然后服务器通过引入SpringBoot框架编写逻辑实现代码。2.1.1系统流程图图2-1系统流程图系统登录过程:首先,adminr登陆。任何与人物不对应的操作都将被服务器拒接。如果验证正确,它将跳转到相应的接口。如果验证为不对,将重新输登录信息。2.1.2数据流图图2-2顶层图2.1.3数据字典下面是这个系统中的数据词典列表,详细描写了每一个元素在数据流程图的含义,这将对程序员和其他需要参考的人有很大的帮助。首先,我需要识别系统中的每一个对象以及它与别的对象之间的关系。这是一个高山过程。名字:account别名:帐户描述:标记每一个账户,记录账户的登陆账户,并授予角色权限定义:用户名:用户名名+用户名密码+用户名实名+账户身份证:注册登录位置:账务账号名字:bill别名:账单信息描述:关联账单和账户信息定义:账单=账单id+账户id+账单时间+账单套餐位置:账单管理名字:cost别名:套餐信息描述:所有套餐的信息定义:套餐=套餐id+套餐名字+套餐资费位置:资费管理名字:admin别名:账户管理员描述:区别每一个管理员定义:管理员=管理员id+administrator登陆名+administrator登陆密码位置:登录管理员名字:role别名:角色描述:角色信息定义:角色=角色id+角色名字位置:角色管理2.1.4用例图用例图是用来解决系统需求设计问题的。在用例图中,读者能够清晰地认识到该电信资费系统有哪些功能,以及可以该系统大致的工作方式。用例图描述的系统功能是需要用户从浏览器等进行登录,然后才可以为使用者提供相应的服务功能。图2-3显示了电信资费系统的用例图。图2-3用例图前端有管理员登录、资费浏览选择、资费增加、资费删除、报表等。在系统中管理员登录作为进入系统的前提,然后才可以对系统进行各种操作,如:角色的新增,修改,管理员的新增,修改,资费的新增,修改,业务账号新增,修改,电信业务新增,修改等一系列操作。后端有逻辑判断,通过查找数据库来进行各种操作的实现。2.1.5部署图图2-4部署图首先,我们可以看到是界面是浏览器显示给我们的,在浏览器中的地址输入所要访问的地址(这个地址是我们自己已经设置好的),然后浏览器才会跳转到我们的登陆界面,在登陆界面中,用户根据提示输入相应的内容,这些内容作为请求数据,向服务器发送请求,这时在后端中,Service层接收请求数据,在Controller层有与数据库与交互的代码逻辑,根据逻辑判断用户所输入的数据是否满足要求,这一阶段展示了与数据库之间的信息对比,然后从数据库中查找到所需要的数据再传入前端浏览器界面,这个时候用户就能看到从底层传过来的信息提示,再根据提示做出相应的操作等等。这中间看似很简单,实则数据需要经过层层传输,处理之后,才能得到我们看到的结果,在这个过程中任意环节都不能出错,否则就会导致数据丢失或者其他问题。2.1.6可行性研究1.技术可行性分析(1)IDEA网的编辑程序软件基于Java的,一个可扩展的大家常用的开发平台。开发环境是安全的,内部要求在语法上是严格的。如果检测到无用,无效,错误的代码,IDEA能发出警告,直到语法正确为止。它是一个很好的开发软件。(2)J2EE是一种具有很多优缺点的体系结构。它利用alpine平台简化了企业开发的方法,能解决很多管理问题。上述优点,如JDBCAPI方便访问数据库,为了可以更好的保护在应用中的各种数据,这个时候安全模式就起到了关键作用,与此同时,也可以提供强大的技术支持,这对的EJB(Enterprise,JavaBeans),Java,Servlet(s,API),JSP(Java,Server,Pages)和XML来说是非常友好的。(3)MySQL数据库主要功能就是用于存储海量数据,在该数据库中我们可以可以查询到我们所需要的数据源并显示到它自带的可见页面。它使用SQL语言,这语言本身最常用的标准语言之一。我们使用时只需要配置了数据库,就可以使用其他软件,比如IDEA,再或者我们常用的NavicatPremium,就可以很容易地连接到数据库上。而数据库本身自带的SQLyogEnt的图形界面,本身就是一个很小的软件,操作简单,界面一目了然,简单明了。(4)隆美伊通过其标签使网页具有不同的显示方式,具有以下特点:操作简单,可扩展性,平台无关性,多功能性。2.经济可行性分析在该系统的设计与实现的过程中使用的主要软件工具包括IDEA,MySQL和Tomcat等。IDEA能在其官网上根据自己的电脑配置下载免费软件,MySQL数据库的软件也是免费的,Tomcat服务器能直接免费下载到Apache官网。另外,系统采用B,S结构,在B,S构造基础上开发的系统,不论是其系统的稳定性,还是系统的可维护性都比较高。这样系统在设计和实现的过程中也就无形中降低了晚期维护系统的成本。因此,在整个系统的开发过程中,没有实际的成本,除了自己本身开发系统和实现系统所需要的时间之外。然而,与电信资费系统设计实现之后为以后在该电信资费方面发展所带来的经济效益相比,花费的时间和精力已经很少了。综上所述,电信资费系统在经济上是可行的。3.社会因素可行性分析电信资费系统的开发完全是我自己设计和开发的,用的工具和技术也是合法的。在此期,笔者参考了一些差不多软件产品的首页布局,但这并不影响系统的自主知识产权。另外,该系统开发后,不存在非法商品交易,经得起法律的检验。系统的操作也非常简单,用户不需要经过任何形式的“培训”就能像使用自己的肢体一样,熟练的操作本系统。系统详细需求系统功能模块本系统主要分为以下8个模块:1.注册登录模块:打开登录页面,输入用户名和密码,验证验证码,登录到平台。2、角色管理模块:对于角色来说,它是多个由很多个权限的集合组成的,通过给用户安排一定的角色,这样的操作就可以使用户权限的管理变得更加简单。例如,在拥有“账号管理员”这个权限的时候,意味着它拥有“帐务账号”和“业务账号”这两大不同模块的权限。在这个基础上,当用户角色设置为账号管理员的时候,代表用户可以同时操作两个模块的内容,分别为“账号业务”这一模块和“业务账号”模块。3.管理员模块:普通管理员由超级管理员在输入并确定角色配置权限后创建。一般管理员一旦被赋予特定的角色,就可以操作系统中相应的功能模块来执行系统管理功能。。4.资费管理模块。这一模块的主要功能是介绍运营商对用户服务的收费标准。运营商可以定义各种不用的收费标准,供用户选择。例如,如果用户在一个月内使用30小时,则成本为66元。但是如果客户使用时间超过30个小时,那么在超过以后每分钟0.01元。在该模块中还可以修改费用,但是必须具有该权限的管理员。5、账务管理模块:对客户而言,客户收取的账户数与自然人相符,如果客户必须使用运营商设置的服务,则客户第一次使用身份证开户,用户支出信息由账户管理。记录付款方式、申请账户等信息,每个客户只能开立一个账户。6.业务账户管理模块:业务账户客户开户后,可以申请开立所需业务。客户开户后,可以开立多个业务账户,每个业务账户代表一个单独的业务。因此,有必要开设和使用不同的商业账户。例如,如果客户必须使用服务器30上的远程访问服务电缆,他必须开设一个业务帐户。如果他还必须使用服务器25上的电缆访问服务,他必须开设另一个业务帐户。每个业务帐户都包含一个费率类别,-用于计算每笔业务的费用。7.账单管理模块:即费用查询。客户成本是其账户下所有业务账户的总成本,具有“发票管理”权限的管理员可以查询客户所有业务(即业务账户)的总成本;您也可以在账号下查询每笔业务的费用和明细。8.报表模块:统计报表。实体联系图为了清晰地描述数据,我需要建一个定义性的数据模型(E,R图)。E,R图包含实体,实体属性和实体间的联系:实体:在矩形表示实体名,图中有五种实体:管理员,帐单,账户,角色,资费属性:在椭圆里写上实体的属性,用无方向的连线将其与对应的实体相连联系:在菱形里写上两个实体之间存在的联系,并用无方向的连线相连这5种实体之间存在着一定的关系,具体如下图2-5所示图2-5实体-联系图状态转换图状态即它代表了一种行为。当案被触发时,电脑的设置姿势将发生。每一个阶段都会有一个状态。这是任何能观察到的模式。状态图中概念的主要状态由三部分组成,第一部分为初始状态,第二部分为中间状态,第三部分为最终状态。图2-6会员登录状态转换图这里给出电信资费系统中从未登录到登录状态转换图。图2-6显示了管理员从登录到登出的全过程,如图给出了一种登录失败的情况:登录时候管理员输入的信息验证失败。
第三章.电信资费系统设计模式本章包括系统设计的三部分,第一部分为总体设计,第二部分为详细设计,第三部分为数据库表设计。系统的总体设计3.1.1类图图3-1系统类图系统类图显示了类和类中的字段,以及实现功能的方法,系统的静态结构和类之间的联系。将这些内容逐一列出,有利于系统的开发和管理,属于结构化设计。系统的详细设计概述1.如何从数据库中查阅数据并传递给用户,怎么将数据插入数据库并保存,如何在不丢失重要信息的情况下动态更新接口信息,以及如何实现这里的具体逻辑需要研究和设计。2.关税是一个重要问题。我们需要知道我们需要什么样的技术支持和接口。3.系统采用B,S结构Boot和SpringBoot的集成框架。Struts对MVC负责。控制界面跳转。数据访问层与Mysql互动获取数据。表示层是背景数据,通过vue与前端交互。最后,Spring管理着所有的控制。活动图活动图(activity,diagram)从字面上描述了系统中某个模块通过此活动和另一个活动的控制流,其中记录了系统中某个操作或方式的逻辑。直观地描写活动的顺序是UML的一种重要的图形表现形式,它象征了事物的行为和状态。下图提示了系统活动图,基本工作流是管理员登陆到操作数据流程。图3-2系统活动图序列图序列图(也称为序列图)。图中的对象通常是类的实例或其他实例。当生成用例的行为时,图中的每条消息对应于一个行操作。生活是一条垂直的点线。每个物体下面都有一条点线。它用于指示对象在序列图中存在的阶段。长方形的长度决定了激活时候和完成时候的范围。综上所述,序列图总结如下:图3-3系统序列图数据库表设计表结构设计管理用户表:表3.1管理用户表admin_info序号字段名称数据类型数据长度字段描述、说明1admin_idint11标识id2admin_codevarchar30用户名3admin_passwordvarchar32用户登录密码4admin_namevarchar30姓名5admin_telephonevarchar30手机号码6admin_emailvarchar50邮件用户表用户的信息,与账户表account存在关联。账单表:表3.2账单表bill序号字段名称数据类型数据长度字段描述、说明1bill_idint11账单标识id2account_idint255账户标识id3bill_monthvarchar255月份4bill_costdouble花费5pay_modechar255支付类型6pay_statechar255状态所有账单的信息全都存在这张账单表中。账户表:表3.3账户表account序号字段名称数据类型数据长度字段描述、说明1account_idint11账户标志id2account_recommender_idInt11推荐人标志id3account_login_namevarchar255登录名4account_login_passwdvarchar255密码5account_statusvarchar1状态6account_real_namevarchar20真实名字7account_idcard_novarchar50身份证8account_birthdatevarchar50生日9account_telephonevarchar50手机号码10account_emailvarchar50邮件该表记录账户,账户的id,推荐人id,登录名,密码,身份证,手机等等信息。资费表:表3.4资费表cost序号字段名称数据类型数据宽度字段描述、说明1cost_idint11资费标识id2cost_namevarchar50资费名称3cost_base_durationvarchar50基础套餐时间4cost_base_costdouble7,2基础套餐花费5cost_unit_costdouble7,2超出套餐花费6cost_statuschar1状态7cost_descrvarchar100描述角色表:表3.5角色表role序号字段名称数据类型数据宽度字段描述、说明1role_idint11角色标志id2role_namevarchar255角色名字
第四章.电信资费系统评测本章系统评测包括编码实现、测试、调试、维护。编程实现基础信息模块图4-1登录部分基础信息模块主要由三部分组成,其中第一部分为登录部分,第二部分为修改密码,第三部分为查看修改个人信息部分。登录部分为管理员登录,管理员在进入登陆界面时,应通过比较数据库数据来检查用户名和密码的准确性。用户登录必须通过验证代码。如果用户填写了账号和正确的密码,则可以进入浏览主界面,否则返回登录界面。登录部分核心代码如下:ServiceService层://查找管理员信息的方法AdminInfoselectOne(AdminInfoadminInfo);Controller层@GetMapping("/toLogin")
@ResponseBody
publicResulttoLogin(StringadminCode,StringadminPassword,Stringcode,HttpSessionsession){
Resultresult;
StringcheckCode=(String)session.getAttribute("checkCode");
AdminInfologinAdmin=null;
if(checkCode!=null&&checkCode.equals(code)){
AdminInfoadminInfo=newAdminInfo();
adminInfo.setAdminCode(adminCode);
adminInfo.setAdminPassword(adminPassword);
loginAdmin=adminInfoService.selectOne(adminInfo);
if(loginAdmin!=null){
loginAdmin.setAdminPassword(null);
session.setAttribute("loginAdmin",loginAdmin);
result=newResult(true,"登录成功",loginAdmin);
}else{
result=newResult(false,"用户名或者密码错误",null);
}
}else{
result=newResult(false,"验证码错误",null);
}
returnresult;
}图4-2登录部分代码letvm=newVue({letvm=newVue({
el:'.login_box',
data:{
path:'/code.jpg',
adminCode:'',
adminPassword:'',
code:'',
tag:[],
},
methods:{
changeCode:function(){
this.path='/code.jpg?'+newDate();
},
toLogin:function(){
axios({
method:'get',
url:"/common/toLogin",
params:{
"adminCode":this.adminCode,
"adminPassword":this.adminPassword,
"code":this.code
}
}).then(res=>{
console.log(res.data)
if(res.data.success){
sessionStorage.setItem("loginAdmin",JSON.stringify(res.data.obj));
for(leti=0;i<10;i++){
this.tag[i]=false;
}
this.tag[0]=true;
sessionStorage.setItem("tag",JSON.stringify(this.tag));
location.href='/common/index';
}else{
layer.msg(res.data.msg);
this.code='';
this.path='/code.jpg?'+newDate();
}
}).catch(error=>{
layer.msg(error.message);
})
}
}
})图4-3前端vue校验登录时涉及到验证码的校验,生成验证码登录时涉及到验证码的校验,生成验证码的核心代码如下:@Bean
publicServletRegistrationBean<KaptchaServlet>kaptchaServlet(){
//设置验证码的路径
ServletRegistrationBean<KaptchaServlet>registrationBean=newServletRegistrationBean<>(newKaptchaServlet(),"/code.jpg");
registrationBean.addInitParameter("kaptcha.textproducer.char.length","4");
registrationBean.addInitParameter("kaptcha.image.width","110");
registrationBean.addInitParameter("kaptcha.image.height","35");
registrationBean.addInitParameter("kaptcha.textproducer.font.color","black");
registrationBean.addInitParameter("kaptcha.background.clear.from","yellow");
registrationBean.addInitParameter("kaptcha.background.clear.to","green");
registrationBean.addInitParameter("kaptcha.noise.color","white");
registrationBean.addInitParameter("kaptcha.session.key","checkCode");
registrationBean.addInitParameter("kaptcha.textproducer.font.size","28");
registrationBean.addInitParameter("kaptcha.textproducer.char.string","1234567890");
registrationBean.addInitParameter("s","Monospaced");
registrationBean.addInitParameter("kaptcha.obscurificator.impl","com.google.code.kaptcha.impl.ShadowGimpy");
returnregistrationBean;
}图4-4验证码代码管理员登陆后,可以修改个人的登录密码,如图4-5所示。对录入的旧密码和新密码进行合法性验证,旧密码正确,新密码符合规则,则提示修改成功,否则为修改失败。图4-5修改密码修改密码修改密码的核心代码如下:Service层:@PutMapping("/doUpdate")
publicResultdoUpdate(@RequestBodyAccountaccount){
inti=accountService.doUpdateById(account);
if(i==0){
returnnewResult(false,"保存失败,旧密码错误!",null);
}
returnnewResult(true,"保存成功",null);
}Controller层@PutMapping("/doUpdate")
publicResultdoUpdate(@RequestBodyAccountaccount){
inti=accountService.doUpdateById(account);
if(i==0){
returnnewResult(false,"保存失败,旧密码错误!",null);
}
returnnewResult(true,"保存成功",null);
}图4-6修改密码代码管理员登录后,可以查看修改管理员个人信息,如图4-7所示。图4-7修改个人信息查看修改个人信息的查看修改个人信息的核心代码如下:Service层:intupdateByPrimaryKeySelective(AdminInfoadminInfo);Controller层:@PutMapping("/doUpdate")
publicResultdoUpdate(@RequestBodyAdminInfoadmin){
returnnewResult(true,"跟新成功",adminInfoService.updateByPrimaryKeySelective(admin));
}图4-8修改个人信息代码角色管理模块图4-9角色管理模块管理员模块可以浏览,增加,修改,删除角色。角色浏览:输入其管理员后,单击角色的方向并跳转到“方向”页以查看其角色ID、角色名称和权限。角色浏览角色浏览核心代码如下:Service层:@Override
publicList<Privilege>selectPri(){
returnprivilegeMapper.selectAllRes();
}Controller层:@RequestMapping("/toList")
publicModelAndViewtoList(){
returnnewModelAndView("role/role_list");
}图4-10角色浏览代码角色增加角色增加核心代码如下:Service层:@Override
publicList<Privilege>selectPri(){
returnprivilegeMapper.selectAllRes();
}Controller层:@RequestMapping("/toList")
publicModelAndViewtoList(){
returnnewModelAndView("role/role_list");
}角色修改核心代码如下:Service层:publicintupdateById(Rolerole){
intresult=0;
/*Rolerole=newRole();
if(params.containsKey("roleId")){
role.setRoleId((Integer)params.get("roleId"));
}
if(params.containsKey("roleName")){
role.setRoleName((String)params.get("roleName"));
}*/
result+=roleMapper.updateByPrimaryKeySelective(role);
List<Integer>privilegeIds=role.getPrivilegeIds();
List<Privilege>oldPrivileges=role.getPrivileges();
List<Integer>oldPrivilegeIds=oldPrivileges.stream().map(Privilege::getPrivilegeId).collect(Collectors.toList());
if(privilegeIds.size()==oldPrivilegeIds.size()&&privilegeIds.containsAll(oldPrivilegeIds)){
result+=0;
}else{
roleMapper.deleteRolePrivilegeByRid(role.getRoleId());
result+=roleMapper.insertRolePrivilege(role.getRoleId(),privilegeIds);
}
returnresult;
}图4-11角色增加,修改,删除代码1ControllerController层:@RequestMapping("/toAdd")
publicModelAndViewtoAdd(){
returnnewModelAndView("role/role_add");
}角色删除核心代码如下:Service层:@Override
publicintdelete(Integerrid){
intresult=0;
result+=roleMapper.deleteByPrimaryKey(rid);
result+=roleMapper.deleteRolePrivilegeByRid(rid);
returnresult;
}Controller层:@DeleteMapping("/doDelete/{rid}")
publicResultdoDelete(@PathVariable("rid")Integerrid){
returnnewResult(true,"删除成功",roleService.delete(rid));
}图4-12角色增加,修改,删除代码2管理员模块图4-13管理员模块管理员模块主要有这几部分组成,其中管理员数量的增加,管理员数量的修改,删除等,以及查看所有的管理员等功能。管理员登陆后,可以查看所有管理员的信息。管理员浏览管理员浏览核心代码如下:Service层:@Override
publicPageInfo<AdminInfo>selectPage(IntegerpageNum,IntegerpageSize){
PageHelper.startPage(pageNum,pageSize);
returnnewPageInfo<>(adminInfoMapper.selectPage());
}Controller层:@RequestMapping("/toList")
publicModelAndViewtoList(){
returnnewModelAndView("/admin/admin_list");
}图4-14管理员浏览代码增加管理员增加管理员核心代码如下:Service层:@Override
publicintinsert(AdminInfoadminInfo){
returnadminInfoMapper.insert(adminInfo);
}Controller层:@PostMapping("/doSave")
publicResultdoSave(@RequestBodyAdminInfoadminInfo){
adminInfo.setAdminEnrolldate(newDate());
returnnewResult(true,"用户添加成功",adminInfoService.insertSelective(adminInfo));
}修改管理员核心代码如下:Service层:@Override
publicintupdateByPrimaryKeySelective(AdminInfoadminInfo){
returnadminInfoMapper.updateByPrimaryKeySelective(adminInfo);
}Controller层:@PutMapping("/doUpdate")
publicResultdoUpdate(@RequestBodyAdminInfoadmin){
returnnewResult(true,"跟新成功",adminInfoService.updateByPrimaryKeySelective(admin));
}删除管理员核心代码如下:Service层:@Override
publicintdelete(Integerrid){
returnadminInfoMapper.deleteByPrimaryKey(rid);
}Controller层:@DeleteMapping("/delete/{aid}")
publicResultdelete(@PathVariable("aid")Integeraid){
returnnewResult(true,"删除成功",adminInfoService.delete(aid));
}图4-15管理员增加,删除,修改代码资费管理模块图4-16资费管理模块资费管理模块主要功能为主要功能是浏览、添加、修改、删除和启动资费。资费浏览资费浏览核心代码如下:Service层:@Override
publicPageInfo<AdminInfo>selectPage(IntegerpageNum,IntegerpageSize){
PageHelper.startPage(pageNum,pageSize);
returnnewPageInfo<>(adminInfoMapper.selectPage());
}Controller层:@RequestMapping("/toList")
publicModelAndViewtoList(){
returnnewModelAndView("/fee/fee_list");
}图4-17资费浏览代码增加资费增加资费核心代码如下:Service层:@Override
publicintinsertSelective(Costcost){
cost.setCostCreattime(newDate());
cost.setCostStarttime(newDate());
cost.setCostStatus("1");
cost.setCostType("3");
returncostMapper.insertSelective(cost);
}Controller层:@RequestMapping("/toSave")
publicModelAndViewtoSave(){
returnnewModelAndView("/fee/fee_add");
}修改资费核心代码如下:Service层:@Override
publicintupdateById(IntegercostId){
returncostMapper.updateById(costId);
}Controller层:@RequestMapping("/toUpdate")
publicModelAndViewtoUpdate(){
returnnewModelAndView("/fee/fee_modi");
}删除资费核心代码如下:Service层:@Override
publicintdeleteById(IntegercostId){
returncostMapper.deleteById(costId);
}Controller层:@DeleteMapping("/delete/{costId}")
publicResultdelete(@PathVariable("costId")IntegercostId){
returnnewResult(true,"删除成功",costService.deleteById(costId));
}图4-18资费增加,修改,删除代码账务账号管理模块图4-19账务账号管理模块账务管理模块主要功能为浏览账户、添加账户、修改账户、删除账户、暂挂账户等。账务账号浏览账务账号浏览核心代码如下:Service层:@Override
publicPageInfo<Account>selectPage(IntegerpageNum,IntegerpageSize,Accountaccount){
PageHelper.startPage(pageNum,pageSize);
returnnewPageInfo<>(accountMapper.selectPage(account));
}Controller层:@RequestMapping("/toList")
publicModelAndViewtoList(){
returnnewModelAndView("/account/account_list");
}图4-20账务账号浏览代码账务账号增加账务账号增加核心代码如下:Service层:@Override
publicintdoSave(Accountaccount){
account.setAccountStatus("0");
account.setAccountCreateDate(newDate());
returnaccountMapper.insertSelective(account);
}Controller层:@RequestMapping("/toAdd")
publicModelAndViewtoAdd(){
returnnewModelAndView("/account/account_add");
}账务账号修改核心代码如下:Service层:@Override
publicintdoUpdate(Accountaccount){
intresult=0;
ctoss.model.Serviceservice=newctoss.model.Service();
if("0".equals(account.getAccountStatus())){
account.setAccountPauseDate(null);
}else{
service.setAccountId(account.getAccountId());
service.setServiceStatus("1");
service.setServicePauseDate(newDate());
account.setAccountPauseDate(newDate());
result+=serviceMapper.updateByAid(service);
}
result+=accountMapper.updateByPrimaryKey(account);
returnresult;
}Controller层:@RequestMapping("/toUpdate")
publicModelAndViewtoUpdate(){
returnnewModelAndView("/account/account_modi");
}图4-21账务账号增加,修改,删除代码1账务账号删除账务账号删除核心代码如下:Service层:@Override
publicintdoDelete(Accountaccount){
intresult=0;
account.setAccountCloseDate(newDate());
ctoss.model.Serviceservice=newctoss.model.Service();
service.setAccountId(account.getAccountId());
service.setServiceStatus("2");
service.setServiceCloseDate(newDate());
result+=accountMapper.updateByPrimaryKey(account);
result+=serviceMapper.updateByAid(service);
returnresult;
}Controller层:@RequestMapping("/toDetail")
publicModelAndViewtoDetail(){
returnnewModelAndView("/account/account_detail");
}图4-22账务账号增加,修改,删除代码2业务账号模块图4-23业务账号模块业务账号模块的主要功能为添加您的业务帐户并更改您的业务帐户。删除你的商业账户,并开设、暂停你的业务等。查看业务账号查看业务账号核心代码如下:Service层:@Override
publicPageInfo<Account>selectPage(IntegerpageNum,IntegerpageSize,Accountaccount){
PageHelper.startPage(pageNum,pageSize);
returnnewPageInfo<>(accountMapper.selectPage(account));
}Controller层:@RequestMapping("/toList")
publicModelAndViewtoList(){
returnnewModelAndView("/account/account_list");
}图4-24查看业务账号代码增加业务账号增加业务账号核心代码如下:Service层:@Override
publicPageInfo<Account>selectPage(IntegerpageNum,IntegerpageSize,Accountaccount){
PageHelper.startPage(pageNum,pageSize);
returnnewPageInfo<>(accountMapper.selectPage(account));
}Controller层:@RequestMapping("/toSave")
publicModelAndViewtoSave(){
returnnewModelAndView("/service/service_add");
}修改业务账号核心代码如下:Service层:@Override
publicintupdateByPrimaryKey1(IntegerserciceId,Characterstatus){
returnserviceMapper.updateBySid(serciceId,status);
}Controller层:@RequestMapping("/toUpdate")
publicModelAndViewtoUpdate(){
returnnewModelAndView("/service/service_modi");
}图4-25增加修改业务账号代码删除业务账号删除业务账号核心代码如下:Service层:@Override
publicintdoDelete(Accountaccount){
intresult=0;
account.setAccountCloseDate(newDate());
ctoss.model.Serviceservice=newctoss.model.Service();
service.setAccountId(account.getAccountId());
service.setServiceStatus("2");
service.setServiceCloseDate(newDate());
result+=accountMapper.updateByPrimaryKey(account);
result+=serviceMapper.updateByAid(service);
returnresult;
}Controller层:@DeleteMapping("/doDelete")
publicResultdoDelete(@RequestBodyAccountaccount){
returnnewResult(true,"删除成功",accountService.doDelete(account));
}图4-26删除业务账号代码账单管理模块图4-27账单管理模块账单管理模块功能主要是账单浏览和账单查询。由于该系统未上线,用户较少,所以该功能还并未完善。希望在不久的将来该系统有更多的用户,功能更加完善。报表模块图4-28报表模块报表模块功能主要是报表浏览。由于该系统未上线,用户较少,所以该功能还并未完善,只有原有数据可以下载。希望在不久的将来该系统有更多的用户,功能更加完善。报表浏览报表浏览核心代码如下:Service层:publicPageInfo<Account>selectPage(IntegerpageNum,IntegerpageSize,Integertag){
PageHelper.startPage(pageNum,pageSize);
returnnewPageInfo<>(accountMapper.selectReportPage(tag));
}Controller层:@RequestMapping("/toList")
publicModelAndViewtoList(){
returnnewModelAndView("/report/report_list");
}
@GetMapping("/selectPage/{pageSize}/{pageNum}")
publicResultselectPage(@PathVariable("pageSize")IntegerpageNum,
@PathVariable("pageNum")IntegerpageSize,
Integertag){
returnnewResult(true,"查询成功",reportService.selectPage(pageNum,pageSize,tag));
}报表下载核心代码:Service层:publicvoiddownload(ServletOutputStreamoutputStream){
EasyExcel.write(outputStream,Account.class).sheet().doWrite(accountMapper.selectReportPage(0));
}Controller层:@GetMapping("/download")
publicvoiddownload(HttpServletResponseresponse)throwsIOException{
/**
*1.设置响应头,告诉浏览器以附件的方式下载到客户端(content-disposition:attachment;filename='xxx')
*2.读取数据,写入到excel
*3.获取response的输出流,将excel放入输出
*/
StringfileName=newString("报表.xlsx".getBytes(),"iso-8859-1");//解决文件名乱码
response.setHeader("content-disposition","attachment;filename="+fileName);
reportService.download(response.getOutputStream());
}图4-29报表浏览,报表下载代码测试结果表4.1测试用例1输入等价类有效等价类预计输出无效等价类预计输出用户名和密码密码输入无误登录成功1.已经注册但密码输入错误2.尚未注册报错误信息,还是在登录界面验证码验证正确登录成功1.验证码有误2.或未输入验证码提示验证码未填写正确表4.2测试用例2输入等价类有效等价类预计输出无效等价类预计输出角色管理增加角色,各项输入无误角色增加成功部分信息未输入,不按照格式输入增加失败表4.3测试用例3输入等价类有效等价类预计输出无效等价类预计输出管理员增加管理员,各项输入正确管理员增加成功部分信息未输入,不按照格式输入增加失败修改管理员,各项输入正确管理员修改成功部分信息未输入,不按照格式输入修改失败删除管理员管理员删除成功调试结果缺陷统计目前系统中还有部分功能尚不完善:1.管理员搜索功能中,由于用户较少,以及涉及到智能搜索提示的问题,暂时还未完善;2.在资费管理过程中,目前只做到了增加资费类型,并没有进一步完善,比如废弃/删除资费类型等;3.账单管理和报表功能并未完善,由于该系统并未上线,用户较少,所以暂时不需要该功能,希望在不久的将来有更多的用户,系统功能更加完善;4.页面比较单调,需要后期进行页面的美化,存在代码冗余的现象;5.对用户注册要求不高,比如并没有限制用户名的长度,没有用正则表达式规范手机号码的格式;6.管理员登录的设计不完美,需要后期调整。维护方法改正错误1.用户注册成功后显示的内容除了数字外全是问号归纳出如下几个可能的原因:前端界面会员名及会员信息全都显示了问号,可能是浏览器本身设置有问题有可能是开发环境的语言未设置成UTF-8,因此可能导致乱码的情况由于注册成功后会把数据插入到数据库,浏览器再从数据库获取数据,查看一下数据库中的数据是否是问号2.图片无法显示本系统中的图片是从本地通过获取路径的方式显示的,归纳出如下几个原因:图片已经被删除,或者被移了位置写路径的时候使用此种写法:取绝对路径:${pageContext.request.contextPath},是否是这边出了问题适应环境一个系统的好坏不仅在于其开发出来的功能的强大与否,而且在于其是否能够适应环境的变化。此阶段是系统的一个维护阶段,维护的目的通俗一点来说就是为了让这个系统能够长时间的运行下去,能够不断的更新,适应整个计算机发展的速度,保证不出现不可挽回的灾难性错误。系统的是否可适应,取决于开发人员是否对它进行很好地后期维护,维护和不维护,会有很大的差别,系统一运行就能看出来。如果在运行过程或者维护期间出现bug,必须完整的记录bug的原因,调试
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 齐齐哈尔市富裕县2025届四年级数学下学期期末综合测试试题(含解析)
- 黑龙江省黑河市嫩江县2025-2026学年四下数学期末调研模拟试题含答案解析
- 2025广东广州机场建设发展投资有限公司招聘13人笔试历年常考点试题专练附带答案详解
- 2025年蚌埠自贸区城发人力资源有限公司第六期招聘11名笔试历年常考点试题专练附带答案详解
- 2025年福建省晋江文旅集团有限公司及其权属子公司招聘12人笔试历年难易错考点试卷带答案解析
- 2025年浙商银行成都分行暑期实习生招聘笔试历年典型考题及考点剖析附带答案详解
- 黑龙江省鸡西市梨树区2025年数学四年级下学期期末检测模拟试题含答案
- 营养科医护人员医院膳食考核试题
- 2026电信实操考试题库及答案
- 2026电驱制造考试题及答案
- 铁路信号工考试题库(附答案)
- 博睿测控 B系列智能型电动执行器安装使用手册D21A-211213
- 2025年青海省格尔木市检察官、法官入员额考试真题(附答案)
- 物流公司总经理责任制度
- 拉沙热培训课件
- 地下管线智能化监测施工方案
- 注塑模具浇口设计
- 高校计算机基础期末模拟试卷
- 单位员工餐厅整体保障服务方案
- 消防维保安全文明施工措施
- 备战2026年高考语文考试(新高考)易错点25 对“意义”与“用法”概念区分不清(语言文字运用之词语比较题)(原卷版)
评论
0/150
提交评论