《爱心宠物诊所系统实训报告.pdf》由会员分享,可在线阅读,更多相关《爱心宠物诊所系统实训报告.pdf(43页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、实实 训训 报报 告告实践环节实践环节:软件工程项目实践软件工程项目实践项目名称项目名称:爱心医院宠物诊所爱心医院宠物诊所院(系)院(系):_软件学院软件学院 _ _专业班级专业班级:软件工程(软件开发):软件工程(软件开发)14-01_14-01_学学号号:_0109_0109_学生姓名学生姓名:_何强强何强强_指导教师指导教师:李玉华李玉华学年学期学年学期:_2015-2016_2015-2016 学年第学年第 2 2 学期学期_成成绩:绩:_郑州轻工业学院软件学院实训任务书一、实训名称实践环节软件工程项目实践项目名称爱心医院宠物诊所二、学生信息专业班级 软件开发 14-01 学号 010
2、9 姓名 何强强三、用户需求及约束条件1、功能需求:“爱心”宠物诊所的职员在工作中需要查阅和管理如下信息:诊所的兽医、客户以及客户的宠物。系统的用例图如图 1 所示。2、功能概述:“爱心”宠物诊所的职员需要使用系统提供的如下功能:浏览诊所的兽医以及他们的专业特长;浏览宠物的主人(即诊所的客户)的相关信息;更新宠物的主人的相关信息;向系统中增加一个新客户;浏览宠物的相关信息;更新宠物的相关信息;向系统中增加一个新宠物;浏览宠物的访问历史记录;向宠物的访问历史记录添加一次访问;此外,诊所的职员在使用系统提供的上述功能之前需要进行登录。当职员不需要使用系统的上述功能时,也可退出系统。图 1 系统用例
3、图3、性能需求:应用程序提供友好的图形用户界面。应用程序要具备健壮性、稳定性和好的可移植性。4、应用程序开发要求:选用技术:JSP、Java、SERVLET 等;软件集成开发环境(IDE):NetBeans、Eclipse、MyEclipse 等。四、设计要求、技术参数及设计规格四、设计要求、技术参数及设计规格1、实现 MVC 分离:用 JSP 实现视图层设计,SERVLET 实现控制层设计,使用 DTO(JAVABEAN)、CONNETOR 对象实现 MODEL 层设计。2、数据库设计要求符合第一、第二范式要求,实现对医生表、医生专业特长表数据联合查询要求。3、设计规格:符合 Java、JS
4、P 编码规范。五、工作量五、工作量天天/日日期期1完成业务需求分析和业务分析,找出系统设 需求分析说明书、概要设计计中涉及到的所有业务对象,设计相应的类 说明书提交1详细功能设计:模块结构设计、用例、对象、根据对象类型分析、设计完成具体功能的方法223数据库系统设计:设计出相应的数据库表给出 E-R 图,写出不同表的增删改查 SQL实现初始化类,兽医、专业特长、宠物主人、宠物类型、宠物和宠物等对象的编码实现34测试对象类的正确性实现对数据库的访问类,实现业务逻辑登录模块功能45实现业务逻辑对宠物的查询模块(1)实现业务逻辑对宠物的查询模块(2)任务描述任务描述通过标准通过标准566778899
5、1010实现业务逻辑对医生的查询模块(1)实现业务逻辑对医生的查询模块(2)实现业务逻辑对客户的查询模块(1)实现业务逻辑对客户的查询模块(2)实现业务逻辑对宠物诊疗记录查询模块(1)实现业务逻辑对宠物诊疗记录查询模块(2)系统调优及功能完善系统功能测试实训报告撰写实训报告撰写实训报告撰写项目验收通过完成实训报告提纲完善实训报告内容和格式撰写一个完善的实训报告六、考核形式、考核时间、考核指标及成绩评定实训成绩由下面构成:实训纪律、实训态度和平时表现占 20%;实训结果占 30%;实训报告占 30%;实践操作能力占 20%。考核形式:1)老师每日对学生的考察、评估和考核;2)最后对实训项目完成的
6、质量进行考核和验收。完成期限:2016 年 7 月 8 日指导教师签章:李玉华专业负责人签章:教学院长签章:2016 年 6 月 27 日实训进度日历实训进度日历实践环节项目名称专软件工程(测试学年学期2015-2016 学年第 2 学期业技术)14-01、班14-02级上教师实训任务的指导午/天天下午根据实训指导材料,让业务需求分析和业务分析上1午软件开发综合实训爱心医院宠物诊所指导教师姓名崔霄马军霞实训任务详细描(解决方案、实现步骤、述技术路线、难点提示)通过标准学生先对项目有一个整体的了解,对系统的需求分析进行讲解。需求分析说明书提交分析系统设计中涉及到的所有业根据实训指导材料,分概要设
7、计说明书提交务对象,设计相应析总结系统业务对象的类详细功能设计:模按照 MVC 思想设计系统下1午例、对象设计例块结构设计、用框架,规范设计系统用详细功能设计:根据对象类型分析、按照面向对象的方法设设计完成具体功能的方法数据库系统设计:计类和方法分析系统数据,进根据数据库设计的范式上2午行数据库概念模型设计要求进行设计数据库系统设计:根据选择的数据库系数据库和测试数据设计出相应的数据库表画出 E-R 图统,利用图形界面工具准备完成完成设计下2午写出不同表的增删改查 SQL实现初始化类,兽医、专业特长等对上3午象的编码实现实现宠物主人、宠物类型、宠物等对象的编码实现下3午测试初始化类,兽医、专业
8、特长等对象类的正确性测试宠物主人、宠物类型、宠物等对象类的正确性实现对数据库的上4午访问类,实现业务逻辑登录模块功能实现业务逻辑对宠物的查询模块下4午实现业务逻辑对宠物的查询模块(1)实现业务逻辑对宠物的查询模块上5午(1)(2)实现业务逻辑对宠物的查询模块(2)5下实现业务逻辑对午医生的查询模块(1)实现业务逻辑对医生的查询模块(1)实现业务逻辑对医生的查询模块上6午(2)实现业务逻辑对医生的查询模块(2)实现业务逻辑对客户的查询模块下6午(1)实现业务逻辑对客户的查询模块(1)实现业务逻辑对上7午客户的查询模块(2)实现业务逻辑对客户的查询模块(2)实现业务逻辑对宠物诊疗记录查下7午实现业
9、务逻辑对宠物诊疗记录查询模块(1)实现业务逻辑对宠物诊疗记录查上8午询模块(1)询模块(2)实现业务逻辑对宠物诊疗记录查询模块(2)下8午上9午系统调优系统功能完善系统功能测试(1)系统功能测试(2)实训报告撰写总结实训内容和过程,项目验收通过下9午实训报告撰写理清思路撰写实训报告提纲上10午实训报告撰写实训报告撰写实训报告撰写完善实训报告内容完善实训报告内容完成实训报告大纲完善实训报告内容完善实训报告格式下10午实训报告撰写和格式文档格式正确、内容无误制订教师:李玉华目录1 系统需求分析功能需求功能需求:“爱心”宠物诊所的职员在工作中需要查阅和管理如下信息:诊所的兽医、客户以及客户的宠物。功
10、能说明登录诊所职员打开浏览器,输入正确的 URL 地址,即可跳转到系统的登录页面。职员需要输入、密码、验证码后,提交页面。系统验证职员提交的信息,若输入为空,系统会提示该项不能为空;若输入信息与数据库信息不匹配,系统会提示对应项出错;用户可以重新输入。若输入信息正确,系统跳转到爱心宠物诊所的主页面,职员可以使用其他的功能。退出职员点击“退出系统”后,系统会结束本次对话,提示退出成功的信息,并返回到登录页面上。职员可以选择重新登录,或者关闭登录页面。浏览兽医及其专业特长职员点击兽医后即可进入查找兽医及专业的页面。在文本框中输入兽医的名称,点击查询按钮即可浏览该兽医所擅长的专业,点击下方的重新查询
11、,即可返回到查询页面。若不清楚兽医名称,可通过输入想了解的专业获取与该专业相关的兽医。此查询页面支持模糊查询,输入相关文字即可获得信息。若输入为空或信息不存在,系统会给出相应的提示信息。浏览宠物主人的信息职员点击宠物后进入宠物及其主人的查询页面。在文本框中输入宠物主人的全名或者名字中的部分字后,点击查询提交页面。系统给出主人及其所拥有的宠物,点击宠物主人的链接,即可查看该宠物主人的电话、所在城市和详细的地址。职员可以选择对主人信息进行修改或重新查询。若所查询的宠物主人不存在,系统提示该客户不存在。更新宠物主人的信息职员在宠物主人信息页面点击修改信息后,系统跳转到修改信息的页面,可以对宠物主人所
12、在城市、地址和电话等信息进行修改。职员将所需修改的信息修改完毕后点击确认修改的按钮,系统会对宠物主人的信息进行修改,提示修改成功,并显示修改后的信息。添加新客户职员点击添加新客户后,系统跳转到客户添加的页面。职员对客户名称、地址、城市、电话号码等信息进行填写,并提交页面。系统将信息添加到客户信息表中,提示添加成功,自动跳转到查看信息的页面。浏览宠物信息职员输入宠物名称后点击“查询”按钮,系统查找出符合条件的宠物,呈现一个查询结果页面给职员以便浏览其相关的信息,职员不仅可以浏览宠物的信息,还可以浏览该宠物主人的信息。职员点击所需查找的宠物链接,便可浏览该宠物的详细信息:名称、类型、出生日期和主人
13、名称等更新宠物信息职员在浏览宠物的详细信息时,可以通过点击修改信息按钮进入到修改信息的页面。职员可以修改宠物的类型、出生日期和主人等信息。点击修改按钮,系统将更新数据库中的相关信息,呈现修改过后的宠物信息,并给用户提示信息“修改信息成功”。添加一次宠物的访问职员在宠物信息页面点击增加病例,系统跳转到增加病例页面。职员填写求诊日期和病例描述后,进行确认增加或者取消增加的操作。病例增加成功后,系统提示病例增加成功浏览宠物的访问历史记录职员在浏览宠物详细信息时,点击阅读病例,可以浏览宠物的求诊记录,包括每次的求诊日期及病例描述添加新宠物职员输入宠物的名称,从下拉列表选择中宠物的主人和类型,点击选择日
14、期的文本框选择宠物的出生日期,点击添加按钮。系统成功添加了宠物的信息后,提示用户“添加成功”,并跳转到宠物的详细信息页面,职员可以选择修改其信息或者继续添加新的宠物。2 系统设计系统总体结构设计系统设计时基于 MVC 设计模型,采用三层架构,如图 2-1 所示。图 2-1“爱心宠物诊所”系统的体系结构关键抽象从需求中可以得出系统的如下关键抽象:兽医、专业特长、宠物主人、宠物类型、宠物和宠物的访问。这些实体可以设计为 JavaBean 类,例如宠物需要获得这些信息:名称、标识 ID、类型 ID 和出生日期等。宠物主人和宠物之间具有如下关系:一个宠物主人可以拥有多个宠物,每一个宠物属于一个主人;每
15、一个宠物可能到诊所多次就诊;每个兽医具有多项专长,而同一专长可能有多个兽医。图 2-2 描述了系统的关键抽象,他们为系统的模型。图 2-2 系统模型用例设计使用面向对象设计时,关键在于描述那些对象如何交互完成用例的功能,通常将对象发送消息的相互调用过程画成时序图。下面将逐一画出用例的时序图。登录的时序图,如图 2-3图 2-3 登录的时序图浏览兽医及其专业特长的时序图,如图 2-4图 2-4 浏览兽医及其专业特长浏览宠物主人的信息的时序图,如图 2-5图 2-5 浏览宠物主人的信息更新主人信息的时序图,如图 2-6图 2-6 更新主人信息添加新客户的时序图,如图 2-7图 2-7 添加新客户浏
16、览宠物信息的时序图,如图 2-8图 2-8 浏览宠物信息更新宠物信息的时序图,如图 2-9图 2-9 更新宠物信息添加新宠物的时序图,如图 2-10图 2-10 添加新宠物浏览宠物病例的时序图,如图 2-11图 2-11 浏览宠物病例增加病例的时序图,如图 2-12图 2-12 增加病例数据库设计逻辑设计系统的 E-R 图如图 2-13 所示:图 2-13 系统 E-R 图数据库设计1.表设计表名vetsspecialtiesvet_specialtiestypesownerspets宠物的类型表宠物的主人存储宠物信息兽医与专业特长的关联表存储兽医信息存储兽医的专业特长信息功能说明visits
17、employee存储宠物的访问信息存储职员信息 vets 表表名列名vets数据类型(精度范围)idINTNOT NULLIDENTITY(1,1)PRIMARY KEYvname补充说明空/非空约束条件其它说明VARCHAR(30)specialties 表表名列名specialties数据类型(精度范围)idINTNOT NULLIDENTITY(1,1)PRIMARY KEYsname补充说明空/非空约束条件其它说明VARCHAR(80)vet_specialties 表表名列名vet_specialties数据类型(精度范围)空/非空约束条件其它说明vet_idINTNOT NULLf
18、oreignkeyREFERENCESvets(id)specialty_idINTNOT NULLforeignkeyREFERENCESspecialties(id)补充说明 types 表表名列名types数据类型(精度范围)idINTNOT NULLIDENTITY(1,1)PRIMARY KEYname补充说明空/非空约束条件其它说明VARCHAR(80)owners 表表名列名owners数据类型(精度范围)空/非空约束条件其它说明idINTNOT NULLIDENTITY(1,1)PRIMARY KEYonameaddresscitytelephone补充说明VARCHAR(30
19、)VARCHAR(255)VARCHAR(80)VARCHAR(20)pets 表表名列名pets数据类型(精度范围)idINTNOT NULLIDENTITY(1,1)PRIMARY KEYpnamebirth_datetype_idVARCHAR(30)DATETIMEINT空/非空约束条件其它说明NOT NULLforeignkeyREFERENCEStypes(id)owner_idINTNOT NULLforeignkeyREFERENCESowners(id)补充说明 visits 表表名列名visits数据类型(精度范围)idINTNOT NULLIDENTITY(1,1)PRI
20、MARY KEYpet_idINTNOT NULLforeignkeyREFERENCESpets(id)visit_datedescription补充说明空/非空约束条件其它说明DATETIMEVARCHAR(255)employee 表表名列名employee数据类型(精度范围)空/非空约束条件其它说明namepassword补充说明VARCHAR(20)VARCHAR(20)NOT NULLPRIMARY KEYNOT NULL3 系统功实现登录功能实现在页面中(如图 3-1 所示),选择一张图片作为背景,主体部分中建立表格,表格分为用来输入信息的文本区域和提交页面的按钮部分。当用户输入
21、信息点击“确定”时,将表格中的信息提交到文件中,并将信息与数据库 employee表中内容进行匹配,匹配成功则跳转到页面。图 3-1 登录页面系统框架在中,用 frameset 将整个系统分为上面的 top 部分和下方的 bottom 部分。top 部分为固定的界面,提供跳转到兽医和宠物部分的超链接及退出系统的功能,bottom 部分用来实现其它功能浏览兽医及其专业特长在页面中,建立表格并使其位于中心,在表格中添加对应的提示信息和文本框,取消可以清空文本框的内容,查询将表单中的信息提交到文件。在Servlet 中判断输入兽医及特长是否同时为空,若同时为空则提示出错。若不同时为空,则执行对应的
22、SQL 语句,并判断是否有符合 SQL 语句的信息,若不符合提示出错,符合则将查询结果显示在页面中关键代码如下:rs=(sql);();int m=();();if(m=0)();elseHttpSession session=();ArrayList wordlist=new ArrayList();while()LookVetBean mm=new LookVetBean();(1);(2);(mm);浏览宠物及其主人页面与页面非常相似,不同的是在下方加入两个按钮,分别用来增加新宠物、增加新客户。输入信息后点击查询按钮,表单中的信息提交到文件中。首先通过判断获取信息的字符长度来判断宠物名称
23、和宠物主人是否同时为空,若同时为空则提示需要输入查询条件,若不同时为空则执行相应的 SQL 语句。执行结果为空分为三种情况,第一种:该宠物不存在;第二种:客户不存在或者该客户还未拥有宠物;第三种:宠物和宠物主人都存在,将信息保存在 session中。前两种情况将错误类型传递给页面,并在该页面提示相应的错误。第三种情况将页面跳转到页面,在该页面获取session 中保存的宠物和主人信息,为其添加指向详细信息的超链接后显示在表格中。查询结果如图 3-2 所示。图 3-2 查询宠物及其主人浏览修改宠物主人的详细信息点击主人链接时,将主人的名字发送到文件中,根据传送过来的名字,使用 SQL 语句从 o
24、wners 表中获取与名字对应的地址、城市和电话号码,并将其保存在 session 中。在页面中,建立表格。在表格中添加标签和对应的信息,信息从 session 中获取。表格下方提供修改信息和重新查询的超链接,若选择重新查询,则返回到页面。选择修改信息,则跳转到文件中,在修改信息页面中,宠物主人的详细信息仍从 session 中获取,但是 address、city、telephone等信息变为可以改变信息的文本框,如图 3-3 所示。表格中含有确认修改和取消修改两个按钮,若选择取消修改则删除修改后的信息显示默认信息。点击确认修改,表单中的信息提交到文件中。在Servlet 中,使用SQL 更新
25、语句更新owners 表中的信息,并用查找语句将修改后的休息保存在 session 中,将修改后的信息发送到页面,使修改后的信息显示在该页面中。关键代码如下:String sql=update owners setaddress=+address+,city=+city+,telephone=+telephone+where oname=+oname+;(sql);String sql2=select*from owners where oname=+oname+;rs=(sql2);LookOwnerBean mm=new LookOwnerBean();while()(oname);(ad
26、dress);(city);(telephone);图 3-3 修改宠物主人的详细信息浏览修改宠物的详细信息点击宠物链接时,将宠物的名字发送到文件中,根据传送过来的名字,使用 SQL 语句从 pets 表中获取与名字对应的 birth_date、type_id、owner_id。pets 表中的 owner_id 与 owners 表中 id 是外键链接的,可以用 select 语句找出其主人名字 oname,同理可获取其类型,并将生日、类型、主人名字等信息保存在 session 中。在页面中,建立表格。在表格中添加标签和对应的信息,信息从 session 中获取。表格下方提供阅读病例、增加病
27、例、修改信息和重新查询的超链接,若选择重新查询,则返回到页面,如图 3-4 所示。图 3-4 浏览宠物的详细信息选择修改信息,则跳转到文件中,在修改信息页面中,宠物的名字仍从session 中获取并设置为只读属性,birth_date 初值为原来的生日可以改变。宠物主人和类型从数据库中存在的客户和类型中进行选取,如图 3-5 所示。表格中含有确认修改和取消修改两个按钮,若选择取消修改则删除修改后的信息显示默认信息。点击确认修改,表单中的信息提交到文件中。在 Servlet 中,使用 SQL 更新语句更新 pets 表中的信息,并用查找语句将修改后的休息保存在 session 中,将修改后的信息
28、发送到页面,使修改后的信息显示在该页面中。图 3-5 修改宠物的详细信息增加病例在页面中选择增加病例,页面跳转到页面。在此页面嵌入文件。宠物名称、类型、出生日期、宠物主人等信息设为与页面相同的固定值,求诊日期点击后选择日历的方法是调用文件的 HS_setDate(this)方法,病例描述需要职员进行填写,下方有确认增加、取消增加和返回三个按钮。如图3-6 所示。点击取消增加则清空所填写的内容,点击返回则回到页面,点击确认增加则提交表单信息到文件中。在 Servlet 文件中根据宠物名字,用 SQL 语句获取宠物表 pets的 id。而 pets 中的 id 与 visits 表中的 pet_i
29、d 通过外键联系,获得 pet_id后将求诊日期和病例描述加入 visits 表中,返回到中并提升添加成功。关键代码如下:String sql2=select from pets where pname=+pname+;rs=(sql2);LookPetBean mm=new LookPetBean();while()(id);(mm);petid=();String sql3=select*from visits;/rs=(sql3);();int k;k=()+1;String sql=insert into visitsvalues(+k+,+petid+,+date+,+descrip
30、tion+);(sql);图 3-6 增加病例阅读病例在页面选择阅读病例,将宠物的名称传递给文件,Servlet 文件通过宠物的名字获取宠物 id,进而获得 visits 中的 pet_id。用 select 语句获取 pet_id与宠物 id 相同的病例保存在 session 中,通过判断获取信息的字符长度来判断该宠物是否有病例,若没有就在页面提醒该宠物没有病例。若该宠物有病例将页面转到中。中有两个表格,上方的表格用来显示宠物的信息,与中表格相似。下方的表格用来显示宠物的病例信息,具体信息从session 中获取,如图3-7 所示。关键代码:while()(wordlists,wordlis
31、ts);LookPetBean nn=new LookPetBean();(visit_date);(description);(nn);vt=(visit_date);ds=(description);/();();();if()=0&()=0)();else();图 3-7 阅读病例添加新客户在页面中选择添加新客户,页面跳转到。此页面只有一个简单的表格,需要职员在文本框中填入客户的名称、地址、城市和电话等信息,下方有增加和放弃两个按钮,如图 3-8 所示。当职员点击放弃按钮后会清空文本框中的内容,点击增加按钮则将文本框中的信息提交到文件中。在Servlet 文件中,先用select 语句获
32、取 owners 表中的信息,取得表中行数,进而得知新客户的 id,然后使用 insert 语句将新客户的信息添加到 owners 表中。再次使用 select语句获取新客户的信息,将他们保存在session 中。在页面提示新客户添加成功,显示新客户的信息。下方提供继续添加和修改信息的方法。职员可以选择对客户信息进行修改或继续添加新客户。图 3-8 添加新客户添加新宠物在页面点击添加新宠物,系统会进入文件。在Servlet 中使用 SQL 语句获取 types 表中的宠物类型 name 和 owners 表中的主人名称 oname,将信息保存在 session 中,显示页面。在页面中,使用 J
33、SP 的 include 的动作调用文件。职员通过下拉框选择宠物主人和宠物类型,点击选择日期完善宠物的出生日期。该页面也提供了增加和放弃两个按钮,如图3-9 所示。点击放弃按钮则清空信息,点击增加按钮后将表单信息提交到文件中。在Servlet 文件中,用已知的宠物类型获得与 types 表中 id。types 表中的 id 与 pets 表中的 type_id通过外键相连,即获得了 pets 表的 type_id。同理可获取 types 表的 owner_id。判断pets表的信息数得到新宠物对应的 id值,用insert语句将信息填入 pets表中。将新宠物的信息保存在 session 中,
34、使页面跳转到页面,提示新宠物添加成功,显示新宠物的信息。下方提供继续添加和修改信息的方法。职员可以选择对宠物信息进行修改或继续添加新宠物。图 3-9 添加新宠物4 实训感想“纸上得来终觉浅,绝知此事要躬行!”在这短短的时间里,让我深深的感觉到自己在实际应用中所学专业知识的匮乏。仅靠书本上那些有限的知识根本满足不了工作的需要,让我真真领悟到“学无止境”这句话的涵义。对于老师所说的课堂上培养不出高级程序员的观点,我表示深刻的赞同,这次的实训也恰好证明了这一点。课堂上大家纸上谈兵积极性不高,也没有碰到什么实际的问题,对自己能力提升帮助不大。在这次实训中,几乎每天都在敲代码,碰到各种各样的问题,通过求
35、助同学百度搜索解决问题的同时,也是自己能力提升的过程。随着实训的进行,从遇到问题一脸懵逼到学会查找程序中的错误代码及程序中的逻辑错误,享受到了编程的乐趣。因为前期基础差进度慢,所以很多同学都选择了晚上来加班,虽然学校没有要求。这次实训中,大家学习的积极性空前高涨。在寝室除了讨论游戏以外,也开始讨论程序的逻辑问题,打游戏的时间明显减少了很多。印象最深的是一个奇葩同学,晚上快十二点了还抱着电脑去我们寝室问问题,虽然很欣赏他的态度,但是真的不赞同他的做法。感谢学校为我们提供了这次实训的机会和环境,感谢崔老师为我们提供的实训资源,感谢李老师在实训期间对我们的照顾。实训对我们的帮助比无聊的文化课强多了,真心希望学校能多提供一些这样的机会。