版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
.4系统流程分析使用者在使用系统时,首先要在登录页面上,键入使用者的用户名和密码。当数据无误后,使用者便能顺利地进入到系统的功能页面。但是,一旦输入的数据不正确,使用者就不能登录,并会出现一个错误提示。系统流程图如图3-4所示: 否 是 图3-4系统流程图
第4章系统设计4.1功能结构设计以对功能需求进行分析为依据,按照高内聚低耦合的原则,将其分为了管理员管理,教练管理,用户管理,会员卡类型管理,课程分类管理,工作人员管理,会员消费管理,预约管理,课程评价管理,系统管理。其功能结构图如图4-1:图4-1系统功能结构图4.2数据库设计4.2.1数据库需求分析通常数据都有自己的存储规则,利用相对成熟的一些管理工具,由此可使开发效率大大的提高。对于基于JSP的健身俱乐部会员管理系统而言,需要设计一个包含用户信息、会员卡类型信息、会员消费信息、教练信息和管理员信息的数据库。4.2.2数据库概念结构设计概念结构的实现是非常之必要的,能让机器语言得以在现实中所表达,直观并且完整的体现出实体及实体两者间的关联,且可以轻松地转换成各种数据模型。
1、管理员信息实体图:图4-2管理员信息实体图2、会员卡类型信息实体图:图4-3会员卡类型信息实体图3、教练信息实体图:图4-4教练信息实体图4、用户信息实体图:图4-5用户信息实体图5、会员消费实体图:图4-6会员消费实体图
6、系统总ER图: 1 n 1 n n n图4-7系统总ER图
4.2.3数据库逻辑结构设计按照系统功能设计和功能模块划分的要求,每个表都要有属于自己表的主键,一般设置为自增模式,这样的好处是可以让每条数据都可以从自己的主键上面进行了区分。一个字段是否为空,表名称和字段名称尽量不要使用中文来进行描述,字段可以在数据库表里面进行中文的描述和备注,只要牵扯到数据定义的就不要使用中文。下面是每个基本数据库表的设计结构以及是否创建数据库表。(1)管理员表admin是用来记录管理员信息的。如表4.1所示。表4.1管理员表:admin字段序号字段名称字段类型字段长度主键字段说明1idint11是ID2lnamevarchar50用户名3Passwordvarchar50登陆密码4flagvarchar50标识(2)会员卡类型表card是用来记录会员卡类型信息的。如表4.2所示表4.2会员卡类型表:card字段序号字段名称字段类型字段长度主键字段说明1idint11是编号2levelvarchar50会员卡类型3minmoneyvarchar50消费额度(低)4maxmoneyvarchar52消费额度(高)5zkdouble8折扣6contentsvarchar500说明
(3)教练表trainer是用来记录教练信息的。如表4.3所示表4.3教练表:trainer字段序号字段名称字段类型字段长度主键字段说明1Tnovarchar50是教练编号2upasswordvarchar50登陆密码3tnamevarchar50姓名4usexvarchar10性别5uphonevarchar50手机号码6uemailvarchar100电子邮箱7addressvarchar100联系地址(4)用户表users是用来记录用户信息的。如表4.4所示表4.4用户表:users字段序号字段名称字段类型字段长度主键字段说明1Useridvarchar50是用户名2Upasswordvarchar50登陆密码3usernamevarchar50姓名4Usexvarchar10性别5Staturevarchar50身高6weightvarchar50体重7Uphonevarchar50手机号码8uemailvarchar100电子邮箱9addressvarchar100联系地址10Cardnovarchar50会员编号
(4)会员消费表orders是用来记录会员消费信息的。如表4.5所示表4.5会员消费表:orders字段序号字段名称字段类型字段长度主键字段说明1orderidvarchar50是编号2Courseidvarchar50课程3Moneydouble8金额4Useridvarchar50用户5Addtimevarchar50缴费时间6Pjvarchar500用户评价7replyvarchar500管理员回复(5)预约信息表booking是用来记录课程预约信息的。如表4.6所示表4.6预约信息表:orders字段序号字段名称字段类型字段长度主键字段说明1bookingvarchar50是编号2Courseidvarchar50课程3Classvarchar100课时4Useridvarchar100预约人5Tnovarchar50预约教练6Addtimevarchar50预约时间
第5章系统实现5.1实现环境开发语言:Java框架:MvcJDK版本:JDK1.8服务器:Tomcat7数据库:Mysql数据库工具:Navicat11开发软件:MyEclipse5.2管理员管理管理员界面,可添加用户名以及登录密码。如图5-1所示。图5-1管理员管理实现该功能的关键代码如下。publicStringadminAdd(Adminadmin,HttpServletRequestreq)throwsException{ Adminad=newAdmin(); ad.setLname(admin.getLname()); List<Admin>list=adminService.queryAdminList(ad,null); if(list!=null&&list.size()>0){ req.setAttribute("alert","该用户名已存在,请重新输入"); }else{ adminService.insertAdmin(admin); req.setAttribute("message","操作成功"); req.setAttribute("path","adminToAdd.action"); } return"common/succeed.jsp"; }5.3教练管理管理员可以添加、删除和教练信息。实现界面如图5-2所示。图5-2教练管理实现该功能的关键代码如下。publicStringtrainerAdd(Trainertrainer,HttpServletRequestreq)throwsException{ Trainertr=newTrainer(); tr.setTno(trainer.getTno()); List<Trainer>list=trainerService.queryTrainerList(tr,null); if(list!=null&&list.size()>0){ req.setAttribute("alert","该教练编号已存在,请重新输入"); }else{ trainerService.insertTrainer(trainer); req.setAttribute("message","操作成功"); req.setAttribute("path","trainerToAdd.action"); } return"common/succeed.jsp"; }publicStringtrainerDel(HttpServletRequestreq)throwsException{ Stringid=req.getParameter("id"); trainerService.deleteTrainer(id); req.setAttribute("message","操作成功"); req.setAttribute("path","trainerList.action"); return"common/succeed.jsp"; }5.4用户管理用户可以添加用户名、登录密码、身高体重以及手机号码联系地址等。管理员可以添加用户信息,并可以进行编辑和删除等操作。用户管理界面如图5-3所示。图5-3用户管理实现界面实现该功能的关键代码如下。publicStringusersAdd(Usersusers,HttpServletRequestreq)throwsException{ Usersus=newUsers(); us.setUserid(users.getUserid()); List<Users>list=usersService.queryUsersList(us,null); if(list!=null&&list.size()>0){ req.setAttribute("alert","该用户名已存在,请重新输入"); }else{ Dated=newDate(); SimpleDateFormatdf=newSimpleDateFormat("yyyyMMddHHmmss"); Stringatime=df.format(d); users.setCardno(atime); users.setJf("0"); usersService.insertUsers(users); req.setAttribute("message","操作成功"); req.setAttribute("path","usersToAdd.action"); } return"common/succeed.jsp"; } //删除用户 @RequestMapping(value="/usersDel") publicStringusersDel(HttpServletRequestreq)throwsException{ Stringid=req.getParameter("id"); usersService.deleteUsers(id); req.setAttribute("message","操作成功"); req.setAttribute("path","usersList.action"); return"common/succeed.jsp"; }5.5会员卡类型管理用户可以选择办理不同类型的会员卡,有相应的消费额度和折扣。会员卡类型的实现界面如图5-4所示。图5-4会员卡类型实现该功能的关键代码如下。publicStringcardAdd(Cardcard,HttpServletRequestreq)throwsException{ Cardca=newCard(); ca.setLevel(card.getLevel()); List<Card>list=cardService.queryCardList(ca,null); if(list!=null&&list.size()>0){ req.setAttribute("alert","该编号已存在,请重新输入"); }else{ cardService.insertCard(card); req.setAttribute("message","操作成功"); req.setAttribute("path","cardToAdd.action"); } return"common/succeed.jsp"; }5.6课程分类管理用户和教练都可以看到不同的课程以及课程图片。管理员可以添加课程分类信息,并可以管理课程分类。课程分类管理的实现界面如图5-5所示。图5-5课程分类管理实现该功能的关键代码如下。publicStringtypesList(Typesser,HttpServletRequestreq)throwsException{ intoffset=0; intcounts=0; try{ offset=Integer.parseInt(req.getParameter("pager.offset")); }catch(Exceptione){ } PageBeanpage=newPageBean(offset); counts=typesService.getCount(ser); List<Types>typesList=typesService.queryTypesList(ser,page); req.setAttribute("typesList",typesList); /**分页代码k开始**/ req.setAttribute("itemSize",counts); intpage_count=counts%PageBean.PAGE_IETM==0?counts/PageBean.PAGE_IETM:counts/PageBean.PAGE_IETM+1; req.setAttribute("pageItem",PageBean.PAGE_IETM); req.setAttribute("pageTotal",page_count); /**分页代码结束**/ return"/admin/types/types_Manage.jsp"; } //跳转到添加页面 @RequestMapping(value="/typesToAdd") publicStringtypesToAdd(HttpServletRequestreq)throwsException{ return"/admin/types/types_Add.jsp"; } //添加课程分类 @RequestMapping(value="/typesAdd") publicStringtypesAdd(Typestypes,HttpServletRequestreq)throwsException{ Typesty=newTypes(); ty.setTypename(types.getTypename()); List<Types>list=typesService.queryTypesList(ty,null); if(list!=null&&list.size()>0){ req.setAttribute("alert","该分类名称已存在,请重新输入"); }else{ typesService.insertTypes(types); req.setAttribute("message","操作成功"); req.setAttribute("path","typesToAdd.action"); } return"common/succeed.jsp"; } //删除课程分类 @RequestMapping(value="/typesDel") publicStringtypesDel(HttpServletRequestreq)throwsException{ intid=Integer.parseInt(req.getParameter("id")); typesService.deleteTypes(id); req.setAttribute("message","操作成功"); req.setAttribute("path","typesList.action"); return"common/succeed.jsp"; }5.7工作人员管理管理员可以添加、管理工作人员信息。工作人员管理界面如图5-6所示。图5-6工作人员管理实现该功能的关键代码如下。publicStringworkerAdd(Workerworker,HttpServletRequestreq)throwsException{ workerService.insertWorker(worker); req.setAttribute("message","操作成功"); req.setAttribute("path","workerToAdd.action"); return"common/succeed.jsp"; } //删除工作人员 @RequestMapping(value="/workerDel") publicStringworkerDel(HttpServletRequestreq)throwsException{ Stringid=req.getParameter("id"); workerService.deleteWorker(id); req.setAttribute("message","操作成功"); req.setAttribute("path","workerList.action"); return"common/succeed.jsp"; } 5.8会员消费管理用户可以查看自己的消费金额以及消费时间,管理员可以查看会员消费信息。如图5-7所示。图5-7会员消费管理实现该功能的关键代码如下。publicStringordersList(Ordersser,HttpServletRequestreq)throwsException{ intoffset=0; intcounts=0; try{ offset=Integer.parseInt(req.getParameter("pager.offset")); }catch(Exceptione){ } PageBeanpage=newPageBean(offset); counts=ordersService.getCount(ser); List<Orders>ordersList=ordersService.queryOrdersList(ser,page); req.setAttribute("ordersList",ordersList); req.setAttribute("coursesList",coursesService.queryCoursesList(null,null)); req.setAttribute("usersList",usersService.queryUsersList(null,null)); /**分页代码k开始**/ req.setAttribute("itemSize",counts); intpage_count=counts%PageBean.PAGE_IETM==0?counts/PageBean.PAGE_IETM:counts/PageBean.PAGE_IETM+1; req.setAttribute("pageItem",PageBean.PAGE_IETM); req.setAttribute("pageTotal",page_count); /**分页代码结束**/ return"/admin/orders/orders_Manage.jsp"; }5.9预约管理预约管理,用户可以预约课程,选择时间地点以及预约时间,教练可以查看预约。管理员可以查看预约管理。其预约界面如图5-8~5-12所示。图5-8课程报名图5-9支付课程图5-10我的课程图5-11预约课程图5-12管理预约5.10课程评价管理用户在课程结束后,可以对课程进行评价,教练以及管理员可以对评价进行回复。如图5-13~5-15所示。图5-13选择课程评价图5-14课程评价图5-15管理课程评价实现该功能的关键代码如下。publicStringordersEdit2(Ordersorders,HttpServletRequestreq)throwsException{ ordersService.updateOrders(orders); req.setAttribute("message","操作成功"); req.setAttribute("path","ordersList2.action"); return"common/succeed.jsp"; }5.11系统管理用户可以修改密码。如图5-16所示。图5-16系统管理实现该功能的关键代码如下。publicStringadminPass(HttpServletRequestreq)throwsException{ HttpSessionsession=req.getSession(); Stringpwd1=req.getParameter("txt_pwd"); Stringpwd2=req.getParameter("txt_pwd2"); Stringpwd3=req.getParameter("txt_pwd3"); if(!pwd2.equals(pwd3)){ req.setAttribute("alert","新密码和确认密码不一致,请重新输入"); }else{ Stringrole=(String)session.getAttribute("role");//用户角色 if(role.equals("管理员")) { IntegerAid=(Integer)session.getAttribute("adminId");//用户ID Adminadmin=newAdmin(); admin.setAid(Aid); admin.setPassword(pwd1);}第6章系统测试6.1测试目的之所以测试,是因为代码是手动编写出来的,难免会出现差错,而在开发的过程中,毫无疑问是一个漫长的编程之旅,其过程错综复杂,稍不注意就会一发不可收拾,错误是常有的事情,假设你对这些错误搁置,那它们的存在极大的影响系统运行,如果不及时查漏补缺,后期是很不好控制的。不仅仅是系统停滞,而且其他各个反面也会出现难缠的问题。其多次测试,则是在能够控制的状态下减少类似问题,加强对系统的测验,才得以高枕无忧的让用户使用此系统。6.2测试过程对其测试系统的方式方法有多种,分为黑盒测试,白盒测试及常见测试。其中,“黑盒子”测试是基于使用者的观点,“白盒子”测试是基于开发者的观点。测试如下性能测试主要是从数据读写并发来进行,检测其占用量最多及最少的程序处理,以此来查看系统响应,对其进行针对性测试。(2)模块测试,先把程序划分成模块测试数据传递,然后再整个程序全部流程测试一遍,就能测试出是某个模块出现的问题还是模块连接出现的问题。(3)白盒测试侧重于对软件的内部逻辑和执行情况的检测。(4)黑盒测试,会在程序的接口处进行测试,通常用这种方法来验证程序中的数据是否可靠以及运行是否正常。表6.1展示了其健身俱乐部会员管理系统中的登录测试。表6.1登录测试用例表试用计划测试数据预期结果使用正确的密码登录管理员:admin密码:1登录成功使用无效密码登录现有帐户用户名:1密码:1登录失败使用不存在的帐户登录用户名:admin密码:12345登录失败帐号或密码为空不要输入用户名和密码登录失败表6.2展示了其健身俱乐部会员管理系统会员卡类型管理测试。表6.2会员卡类型测试用例表试用计划测试数据预期结果添加会员金卡在添加会员卡类型页面选择会员金卡添加成功修改会员卡类型在管理会员卡类型页面进行会员卡类型修改修改成功查看会员卡详情在管理会员卡类型页面点击详细查看成功删除会员金卡在管理会员卡类型页面点击删除按钮删除成功表6.3展示了其健身俱乐部会员管理系统课程管理模块测试。表6.3添加课程测试用例表试用计划测试数据预期结果添加课程在添加课程分类页面进行课程添加添加成功修改课程在管理课程分类页面进行课程修改修改成功查看课程在管理课程分类页面查看课程查看成功删除课程在管理课程分类页面删除课程删除成功6.3测试结果故障排除就是找出问题所在并加以修复,从测试过程中,调整了部分结构,运行步骤规范,数据类型不同,测试方法也有所不同。运用多用户多角色来登录,以此查看结果,功能完备,测试结果符合设计要求。
结论开发健身俱乐部会员管理系统,从选题开始,确定功能,搜集四面八方的资料,设计其方案,相对来讲,其工作量是较多的,假设商业化来讲,将有单独的开发编码人员,以及测试人员等等。那么,个人来进行开发编码整个项目,是让我感叹体会到多么的困难,在我不懈奋斗的分分秒秒,我还是完成了毕业设计。通过毕业作品的制作,我可以在实践中实践计算机科学,同时也大大提高了我的动手能力和脑力。这些问题更可能在手动生产过程中表现出来,我们尽量减少手动测试,自动化测试是最理想的。因此,我们将在未来的工作中改进自动化测试并帮助完成问题本地化过程。必须严格制定和执行测试计划。你不能急于考试,你必须放松你的日程安排,达到高水平的测试。在测试过程中发现了一些问题,注意到这一点是对未来开发的一种学习进展,因为之前在其他地方的更改会影响这个模块。
参考文献[1]陈煜,李园园,苏继斌,高利虹.基于jsp健身房预约系统的设计与实现[J].科学技术创新,2022(20):66-69.[2]陈晓刚.计算机数据库技术在信息管理中的应用[J].无线互联科技,2022,19(13):123-125.[3]蒋知廷.基于JSP的健身教练预约系统设计[J].电脑编程技巧与维护,2022(06):32-35.DOI[4]黄美益.基于JavaWeb技术的教学资源库系统设计[J].电子技术与软件工程,2022(01):229-232.[5]李雅琴.Java编程语言的优势及其应用实践研究[J].互联网周刊,2021(24):60-62.[6]张蒙蒙,曹成茂.基于MVC框架的会员管理系统的设计与实现[J].滁州学院学报,2021,23(05
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 10077-2026锂原电池分类、型号命名及基本特性
- 2026二上数学获奖情境课件
- 放射医生述职报告(范文3篇)
- 2026北师大二下一分有多长动画课件
- 山东省枣庄市实验学校2025−2026学年七年级下学期6月期末数学试题(含答案)
- 4.数学归纳法-物理一轮微专题(思维篇)
- 七年级语文下册第二单元8木兰诗教学课件新人教版
- 软件开发过程、业务、数据库、Linux交流
- 伺服电磁制动器需求升级打开增长新空间
- 线管预埋施工技术标准
- 寄宿制学校一日常规管理规范
- T∕CACM 1318.3-2019 消化系统常见病中医诊疗指南 第3部分:胃食管反流病(基层医生版)
- 浙教版初中信息技术七年级上册全册教学设计
- 诗经《七月》详细教案
- 2025年宿迁市公需考试试题
- 《磷酸生产工艺培训》课件
- 2024广西贺州市招聘统计协管员(协统员)拟聘用人员历年高频500题难、易错点模拟试题附带答案详解
- NB/T 11440-2023生产煤矿储量估算规范
- 2024年数字安徽有限责任公司招聘笔试参考题库附带答案详解
- GB/T 43815-2024建筑用硬聚氯乙烯(PVC-U)绝缘电工套管及配件
- 氧动力雾化吸入课件
评论
0/150
提交评论