Javaweb软件实践课程设计报告书

上传人:ya****h 文档编号:142653886 上传时间:2022-08-25 格式:DOCX 页数:33 大小:1.12MB
返回 下载 相关 举报
Javaweb软件实践课程设计报告书_第1页
第1页 / 共33页
Javaweb软件实践课程设计报告书_第2页
第2页 / 共33页
Javaweb软件实践课程设计报告书_第3页
第3页 / 共33页
亲,该文档总共33页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
南通大学信息科学技术学院Java软件实践课程设计报告册班级姓名学号指导教师设计时间331. 课程设计题目“爱心宠物诊所”2. 课程设计目的通过本项目,学生可以掌握Web程序运行原理;掌握使用JSP技术开发Web系统的一般开发方法;了解服务器与客户端模式软件运行机制,掌握客户端与Tomcat服务器通过进行数据交互的基本原理;通过本项目学生可以对HTML技术、CSS技术、JSP开发技术、JavaBean技术、Servlet技术等知识有一个系统全面的掌握,同时了解现在主流的软件设计思路。3. 课程设计要求具体要求详见附件材料:(1) 附件1-Java软件实践课程设计任务书(2) 附件2-宠物诊所系统需求和需求分析说明书(3) 附件3-宠物诊所系统设计说明书4. 课程设计报告内容4.1系统主要功能设计4.1.1功能描述“爱心”宠物诊所职工查阅信息系统: 职员能完成登录操作:职工输入正确的URL地址,进入登录页面。在登录过程中,可以点击重置按钮将输入信息清空,重新登陆。如果登录成功,则进入兽医信息查询页面;若登陆失败,则展示提示信息,重新登陆; 职工可以在登陆系统后随时退出系统:设置退出系统链接,一旦退出,即删除session信息,再次进入需重新登录; 职工可以浏览兽医信息:包括兽医姓名及专业特长;可以查询兽医对应的多个专业特长,也可以查询相同专业对应的多个兽医; 职工可以浏览宠物信息:包括宠物编号、宠物姓名、宠物生日、宠物种类、宠物主人等信息; 职工可以点击宠物上的超链接查看宠物主人具体信息:包括主人编号、主人姓名、主人地址、所在城市以及电话号码等信息; 职工可以更新、添加宠物主人信息以及宠物信息,并做好主人与宠物之间的联系工作: 职工可以选择添加新客户:添加每个客户的具体信息,存入宠物主人档案,以完成后续添加宠物及宠物的对应工作; 诊所职员可以添加访问信息:包括访问时间及具体问题描述; 诊所职员可以浏览宠物的历史访问记录。4.1.2 功能设计1、整体系统结构设计1)总体描述本次系统的实现主要基于MVC三层架构模型,采用JavaBean技术封装数据库各项数据,调用Java类在servlet接收jsp页面表单输入信息,将Java类实例化。页面的跳转活动都在servlet中定义完成。2)系统整体结构图2、功能模块设计(1) 职工登录模块 职工输入用户名和密码,将表单信息提交至Empservlet中; 在Empservlet中使用request.getParameter()方法接收表单数据,并调用方法verity()将该数据传入EmpDAO中; EmpDAO进行打开数据库操作,在数据库中查找并核对信息,如果信息正确,则返回true值; EmpServlet判断verity返回的值是否为真,若为真,则跳转至正确页面;若为假,则依然处于登录页面,便于职工重新登录。时序图:ivetsearch.j呂pdoPost(req,respj:EmpServletEmpDAOverify(dto)ifkPasE)頁面瞬I职工IJogin.jspStx用尸名丰建码(2) 兽医查询模块 职工输入查询信息,可以输入兽医名,也可以输入专业名; 将表单输入信息传入VetServlet中,servlet接收输入值并调用search()方法,将查询结果存入session; 创建VetDAO,定义search方法,打开数据库查询相关信息,并以表单list形式输出; 在vetsearch_name.jsp中创建list,使用request.getAttribute()方法接收查询出的值,并在table表中以=(VetDTO)list.get(i).get()%形式输出;时序图:(3)宠物查询模块 职工点击链接进入宠物查询页面petsearch.jsp; 输入宠物名或宠物主人名进行查询; servlet接收表单提交的数据,处理查询请求,使用doPost方法调用自身search方法,并处理页面跳转工作; 在PetDAO中定义searchPet方法访问数据库owners表,pets表完成信息查询; 跳转至petsearch_name.jsp页面,使用session方法接收查询信息并显示。时序图:提0单n:FetServletifijsPaEs)aaarchPallpetName.r-i,-udoPost(req,retplsearchipelname,petwne:i转:petMarch_naiTiB-jp:PetDAO(4)添加新宠物模块 职员在petsearch.jsp页面点击添加宠物按钮,由servlet接收并处理请求,将页面跳转至petnew.jsp页面; 职工在添加信息页面填写新用户相关信息并提交表单; 在PetDAO中定义方法addPet,访问数据库pets表,完成新宠物添加工作; 返回至petsearch.jsp页面,此时,添加任务已完成。壬FetStrvlet时序图:SESBs册sKSdoPcstfreq.resp)addPet|jpdto):pet&tarcb-j&p:prtnewjsp职工(mardforwaid(5)添加新客户模块 职员在petsearch.jsp页面点击新增新客户按钮,由servlet接收并处理请求,将页面跳转至newpetowner.jsp页面; 职工在添加信息页面newpetowner.jsp填写新用户相关信息并提交表单,由servlet接收请求信息,并调用DAO中相应方法进行处理; 在PetOwnerDAO中定义方法addPetOwner访问数据库中的owners表,执行相应sql语句,完成新客户信息添加工作; 重新跳转至petsearch.jsp页面,此时客户已经添加成功。时序图:(6) 更新宠物主人信息模块: 在petsearch_name.jsp页面点击宠物主人链接,将页面此时信息传入servlet; 在servlet中接收处理更新请求,并使用doPost()方法调用自身search方法,同时,调用DA0中的相关方法进行查询和输出工作; 使用PetOwnerDAO定义方法viewPetOwner及updatePetOwners,分别进行宠物主人的信息查询和信息更新操作; 在ownerupdate.jsp页面中使用JavaBean技术及session相关方法进行信息的展示。时序图:(7)更新宠物信息模块: 在petsearch_name.jsp页面点击宠物链接,将页面此时信息传入servlet,由servlet将页面跳转至petview_name.jsp页面; 在servlet中接收处理更新请求,并使用doPost()方法调用自身search方法,同时,调用DA0中的相关方法进行查询和输出工作; 职员点击修改按钮,由servlet跳转至宠物信息更新页面petupdate.jsp; 使用PetOwnerDAO定义方法selecPetByld及updatePet,分别进行宠物信息查询和更新指定宠物信息操作; 职员进行宠物信息更新操作,并点击修改按钮提交; 在servlet中使用更新方法完成信息的更新; 在petview_name.jsp页面中使用JavaBean技术及session相关方法进行信息的展示。壬时序图:doPostJreq.resps-elertPetByidCpetldfortivard別第題晦恳点击幡换IB-:lcPost(r&qrresp)forwardforward-_r-updatEP?lSprite;点击劲竝:petupdatejp:petvievx_name.jp:PetSerylnt:PatDAO(8)浏览宠物病例: 职工在petview_name.jsp页面点击浏览病例按钮; 由servlet接收提交信息并完成响应请求的操作; 在PetVisitDAO中定义方法searchPetHistory(petid)方法进行查询操作,并将结果以Arraylist的形式提交给servlet; servlet接收信息后跳转页面至petvisithistory.jsp病例浏览页面。时序图:fpelld)ArrayLlst(9) 添加宠物访问 诊所职员在宠物具体信息页面点击添加新病例按钮,servlet接收请求并将页面跳转至petnewvisit.jsp页面; 诊所职员输入新宠物访问信息并点击提交按钮; servlet接收表单信息并处理; 在DAO中定义方法addNewVisit(pvdto),访问数据库visits完成数据添加操作; servlet调用DAO中定义方法并处理提交数据,完成后跳转至petsearch.jsp页面,并提示病例插入成功信息;时序图:10)浏览宠物主人信息: 职工在petsearch.jsp页面输入查询内容; PetServlet接收表单传入信息,并使用doPost()方法调用自身search方法; 使用PetDAO定义searchPet方法,打开数据库,判断符合条件的信息输出; petsearch_name.jsp页面使用session进行信息的输出。时序图:nsea-chPetfpetiysrrie,:Rt观rchjwp:PetServlet:PetDAQ:ptsearch_namejfpdoPost(req,respseanchtpelnanw,petomer)(11)退出模块 用户点击退出链接; EmpServlet接受用户请求并处理请求; 使用session对象储存用户登录信息,并在退出链接触发后,使用invalidate方法使客户的会话无效; 退出成功后进入login.jsp登陆页面。时序图:一一3、数据库设计employee:存放职工信息,用于职工登录字段名数据类型长度约束能否为空字段含义说明namevarchar20主键否职工姓名passwordvarchar20否职工密码visits:存放访问记录字段名数据类型长度约束能否为空字段含义说明idint20主键否访问记录编号pet_idint20外键否宠物编号visit_datedatetime访问日期descriptionvarchar255访问备注vets:存放兽医相关信息字段名数据类型长度约束能否为空字段含义说明idint20主键否兽医编号namevarchar30兽医姓名specialties:存放兽医专业信息字段名数据类型长度约束能否为空字段含义说明idint20主键否专业编号namevarchar80专业名vet-specialties:存放兽医及其专业的对应关系字段名数据类型长度约束能否为空字段含义说明vet_idint20外键否兽医编号specialtyidint20外键否专业编号pets:存放宠物具体信息字段名数据类型长度约束能否为空字段含义说明idint20主键否宠物编号namevarchar30宠物名birth_datedatetime出生日期type_idint20外键否种类编号owneridint20外键否对应主人编号types:存放宠物种类信息字段名数据类型长度约束能否为空字段含义说明idint20主键否种类编号namevarchar80种类名owners:存放宠物主人具体信息字段名数据类型长度约束能否为空字段含义说明idint20主键否主人编号namevarchar30主人姓名addressvarchar255主人地址cityvarchar80城市名telephonevarchar20联系方式4.2 系统设计与文件清单JavaBean技术的使用文件:文件名文件主要功能及作用DB.java实行打开数据库的操作,并在使用元成后及时释放连接EmpDTO.java封装职工信息,并使用get、set方法便于调用EmpDAO.java定义verify方法访问数据库employee表,查询用户名及对应密码是否付合,符合即返回真PetDTO.java封装龙物信息,并使用get、set方法便于调用PetDAO.java 访问数据库owners、pets表,定义方法查询龙物对应信息,返回查询结果表单; selectPetById方法访问数据库查询指定龙物详细信息; updatePet方法访问pets表元成更新指定龙物信息操作; addPet方法访问pets表完成添加新宠物操作。PetOwnerDTO.java封装龙物主人信息,并使用get、set方法便于调用PetOwnerDAO.java viewPetOwner方法访问owners表查询指定宠物主人信息; updatePetOwner方法访问owners表更新指定宠物主人信息; addPetOwner方法访问owners表添加新用户信息。PetVisitDTO.java封装龙物病例信息,并使用get、set方法便于调用PetVisitDAO.java searchPetVisitHistory方法访问visits表完成查询病例操作; addNewVisit方法访问visits表添加宠物病例。SpecDTO.java封装兽医专业信息,并使用get、set方法便于调用VetDTO.java封装兽医信息,并使用get、set方法便于调用VetDAO.java用于定义search()方法,打开数据库进彳丁兽医匹配查询servlet使用文件:文件名文件主要功能及作用EmpServlet.java用于接收用户登录表单提交信息,调用DAO中方法决定是否跳转页面;用于接收处理职工的退出系统请求。VetServlet.java用于接收处理职工输入的兽医查询请求,使用session传递查询结果信息PetServlet.java 用于接收处理职工输入的宠物查询请求,doPost方法调用自身search方法; 处理职工更新宠物信息请求; 处理职员添加新宠物请求。PetOwnerServlet.java 用于接收处理职工输入的查询、更新宠物主人的请求,doPost方法调用自身search方法; 接受处理职员添加新客户请求。PetVisitServlet.java 接受处理职工访问病例请求; 接受处理添加病例请求。jsp页面使用文件:login.jsp“爱心”诊所的主页面,职工在此页面进行登陆操作;若职工进行退出系统操作,则返回至该页面。vetsearch.jsp登录成功后的跳转页面,用于输入兽医查询信息,包括兽医名及专业特长vetsearch_name.jsp查询完成后的跳转页面,显示兽医查询结果信息,包括兽医及对应专业petsearch.jsp 用于输入宠物查询信息,包括宠物名及主人姓名; 定义按钮用于添加新客户; 定义按钮用于添加新宠物;petsearch_name.jsp查询完成后的跳转页面,显示宠物查询结果,包括宠物名及对应主人姓名ownerupdate.jsp显示查询主人具体信息,可进行修改更新,并及时显示更新完成结果newpetowner.jsp用于接受输入宠物主人添加信息petview_name.jsp 用于显示宠物详细信息; 提供修改按钮; 提供浏览病例按钮。提供增加新病例按钮。petupdate.jsp用于编辑修改宠物信息petnew.jsp用于输入新添加宠物信息petvisithistory.jsp用于显示宠物病例petnewvisit.jsp用于输入宠物新病例4.3 系统代码实现(1)开发主界面截图: login.jsp:初始模块,即用户登录模块vetsearch.jsp:登陆成功,进入兽医信息查询模块vetsearch.jsp页面:宠物查询页面(2)关键代码:登陆实现EmpDAO.java:publicclassEmpDAO/用于打开数据库,进行用户名与密码的匹配publicbooleanverify(EmpDTOdto)DBdb=newDB();/打开数据库操作Statementstmt=db.getStatement();Stringsq=SELECT*fromemployeewherename=/使用sql语言查询数据库+dto.getEmp_name()+andpassword=+dto.getEmp_pwd()+;tryResultSetrs=stmt.executeQuery(sq);if(rs.next()/如果查询到,则返回真值returntrue;catch(SQLExceptione)/TODOAuto-generatedcatchblocke.printStackTrace();db.closeConnection();returnfalse;EmpServlet.java:publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOExceptiondoPost(request,response);/调用自身方法publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOExceptionEmpDTOdto=newEmpDTO();dto.setEmp_name(empname);dto.setEmp_pwd(password);EmpDAOdao=newEmpDAO();booleanisPass=dao.verify(dto);if(isPass)HttpSessionsession=request.getSession();session.setAttribute(abc,empname);response.sendRedirect(vetsearch.jsp);elseSystem.out.print(”信息填写错误,请重新登录);response.sendRedirect(login.jsp);/调用verity方法判断用户名密码是否正确/使用session存储登录信息/完成页面跳转工作/跳转至登陆页面重新进行登录操作Stringempname=request.getParameter(empname);/接收表单传来的数据Stringpassword=request.getParameter(emppassword); 兽医及专业特长信息查询/接收用户提交信息并存储VetServlet.java:Stringvetname=request.getParameter(vetname);Stringvetspecialties=request.getParameter(vetspe);VetDAOvetdao=newVetDAO();ListisPass=vetdao.search(vetname,vetspecialties);/将查询结果以List形式储存if(isPass!=null)/如果结果查询不为空,即查询到结果信息HttpSessionsession=request.getSession();session.setAttribute(vet,vetname);/使用session存储对象,便于在jsp页面调用session.setAttribute(spec,vetspecialties);request.setAttribute(vets,isPass);response.sendRedirect(vetsearch_name.jsp);/跳转至兽医信息展示页面elserequest.getRequestDispatcher(vetsearch.jsp).forward(request,response);vetsearch_name.jsp:进行界面显示%for(inti=0;i兽医编号兽医名专业特长 宠物信息、主人信息查询以及宠物的添加更新工作:PetServlet.java:doPost()方法:RequestDispatcherrd1=null;Stringpetname=newString(request.getParameter(petname).getBytes(ISO-8859-1);/接收表单信息Stringownername=newString(request.getParameter(ownername).getBytes(ISO-8859-1);inttypeid=Integer.parseInt(request.getParameter(type);Stringdate=newString(request.getParameter(date).getBytes(ISO-8859-1);PetDAOpet=newPetDAO();booleanisPass=pet.addPet(ownername,typeid,petname,date);/调用addPet方法,进行数据库添加操作ArrayListpets=(ArrayList)pet.search(petname,ownername);/获取查询到的信息,用于宠物查询界面ArrayListowner=(ArrayList)pet.search(petname,ownername);HttpSessionsession=request.getSession();session.setAttribute(petname,pets);/将查询到的信息装入sessionsession.setAttribute(ownername,owner);request.getRequestDispatcher(petsearch_name.jsp).forward(request,response);/跳转至宠物查询结果页面if(isPass)Stringok=ok;request.setAttribute(check,ok);rd1=request.getRequestDispatcher(petnew.jsp);/增加新宠物页面rd1.forward(request,response);elseStringerror=error;request.setAttribute(check,error);/如果宠物信息添加失败,将失败信息存入“check”rd1=request.getRequestDispatcher(petnew.jsp);rd1.forward(request,response);petsearch_name.jsp页面:宠物名宠物主人%for(inti=0;i判断:如果id信息是否属于查询结果ahref=petview_name.jsp?pid=/id正确,点击宠物姓名则进入相应详情界面/宠物姓名通过DTO的get方法获取,获取的姓名由选定的id号决定 宠物主人具体信息及修改信息实现:PetOwnerServlet.java中的doPost方法:RequestDispatcherrd=null;Stringoname=newString(request.getParameter(ownername).getBytes(ISO-8859-1);Stringaddress=newString(request.getParameter(address).getBytes(ISO-8859-1);Stringcity=newString(request.getParameter(city).getBytes(ISO-8859-1);Stringtelephone=request.getParameter(phone);PetOwnerDAOadd=newPetOwnerDAO();/使用DAO中的add方法添加新用户booleanisPass=add.addPetOwner(oname,address,city,telephone);if(isPass)/如果信息添加成功,则跳转至主人详情页面Stringok=addok;request.setAttribute(check,ok);rd=request.getRequestDispatcher(newpetowner.jsp);rd.forward(request,response);elseStringerror=error;request.setAttribute(check,error);rd=request.getRequestDispatcher(newpetowner.jsp);/添加失败,依然停留在添加页面,重新添加rd.forward(request,response); 病历增加相关实现:RequestDispatcherrd=null;/接受表单传来的数据信息intpet_id=Integer.parseInt(request.getParameter(pid);Stringvisit_date=newString(request.getParameter(visit_date).getBytes(ISO-8859-1);Stringdescription=newString(request.getParameter(description).getBytes(ISO-8859-1);PetVisitDAOadd=newPetVisitDAO();booleanisPass=add.addPetVisit(pet_id,visit_date,description);/定义布尔型isPass,若信息增加成功则继续执行if(isPass)Stringok=addok;request.setAttribute(check,ok);rd=request.getRequestDispatcher(petnewvisit.jsp);rd.forward(request,response);elseStringerror=error;request.setAttribute(check,error);rd=request.getRequestDispatcher(petnewvisit.jsp);rd.forward(request,response);4.4 系统测试4.4.1系统测试数据清单数据库用例:employee:职工登录名及对应密码namepasswordabc123456。wners:宠物主人测试用例,包括姓名、地址、所在城市、联系电话信息idnameaddresscitytelephone1宋玉崇川区南通市123456789012李琦新月社区上海市99999999999pets:宠物具体信息,包含姓名、出生日期、种类、主人ididnameBirth_dateType_idowner_id1柚子2018-10-1712:00:00112never2020-05-1417:07:2922specialities:专业特长及对应的idIdname1牙科2内科3皮肤科4放射科types:宠物种类及其对应idvet_specialities:兽医及其专业的对应vet_idspecialty_is13223111visits:访问记录idpet_idvisit_datedescription122019-11-0510:00:00体外驱虫212019-08-2212:00:00猫藓4.4.2系统测试结果测试用例:具体测试页面截图1)在登录模块输入正确信息,点击提交页面能成功跳转:2)点击重置输入内容清空:3)在兽医查询模块输入“小王”:4)点击查询按钮,页面跳转并显示信息:5)在兽医查询模块输入“牙科”,点击查询按钮,页面跳转并显示信息:6)点击宠物连接进入宠物查询页面,在宠物查询页面输入“柚子”,点击“查询”按钮页面跳转并显示信息:7)在宠物查询页面输入“李琦”,点击“查询”按钮页面跳转并显示信息:退出磁卑世8)点击添加新宠物按钮,进行宠物添加操作:9)信息填写完成点击提交按钮,或点击放弃按钮直接返回:10)添加成功后跳转至宠物查询页面,显示添加成功信息:11)点击添加新客户按钮,跳转至添加页面输入相关信息:退出皱所住風市RII肚64IlLLlllIilil12)添加成功后返回页面并显示添加成功信息:13)点击宠物主人“宋玉”链接,进入宠物主人详情界面:7铀色轴些未干tafia毅IBSAiflilj仙啊114)编辑信息后点击修改按钮,进行宠物信息更新操作:15)点击宠物“柚子”链接,进入宠物详情页面:轴主生拄MMM所柱血问电诂気月址风I伽弁闊删MHza匸*溯酱克港主人稱干16)点击浏览病例按钮,显示宠物病例信息:2019-00-22120000A姓容就诊备注17)点击返回按钮回到宠物详情页面,点击增加新病例按钮,填写就诊信息:18)点击添加按钮,提示成功信息:19)点击退出系统链接,返回登陆页面,处于未登录状态:4.5 系统存在的主要问题及注意事项 在使用session进行数据的传输时,要注意object与其他数据类型的转换问题,必要时可使用强制转换; 该系统在显示宠物信息时缺乏图片等信息,信息查询不够直观,还需完善; 使用数据库语言进行查询操作,输出到jsp页面的表单存在数据冗余现象,同一专业对应多个兽医,同一兽医对应多个专业时,数据冗余现象更加明显,还需要改进。4.6 设计总结及体会本次课程设计中,我们成功完成了“爱心”宠物诊疗系统的设计实现,并灵活使用servlet完成了各个页面的跳转工作。实验中,我使用JavaBean技术封装数据库,大大简化了操作,使得代码更加简洁。实验中出现的各种问题以及问题的解决使我对Java技术的使用以及网页制作方面更加熟练,在追求代码正确的同时也兼顾了网页设计的美观性。通过这次课程设计,我熟练掌握了基于MVC三层架构模型的实现方式,能在jsp页面中使用request.getAttribute的方法接收查询出的信息,多次servlet连接问题的解决也更加坚定了我的信心,为以后再次进行javaweb实现打下基础。参考书目【1】王春明,史胜辉编著,jpsweb技术实验及项目实训教程北京,清华大学出版社,2016.9【2】王春明,史胜辉编著,javaweb技术及应用教程(第二版),清华大学出版社,2018附件(1) 附件1-Java软件实践课程设计任务书,(2) 附件2:宠物诊所系统需求和需求分析说明书,(3) 附件3:宠物诊所系统设计说明书,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业管理 > 商业计划


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!