软件大型实验周——软件设计说明书第1页共29页1概要设计1.1开发环境数据库服务器:mysql服务器开发语言:java,c,sql开发工具:myeclipese,Ubuntu虚拟机,AndroidStudio,物联网试验箱开发系统还环境:windows10,linux1.2系统功能描述1.系统综述宠物店系统致力于实现对店内宠物进行时间段的饮食,水的监控,用户可以通过登陆用户端查看交由宠物店里看管的宠物数据,查看在时间段的疫苗接种情况。店主端可以通过殿主账号登陆查看所有用户/宠物信息,并对其进行管理操作2.数据段的接受与发送服务器打开后向zigbee网络发送请求,传感器将接受到的数据通过协调器发送给服务器,服务器将数据进行简单数据分类,处理后,把数据存储到数据库中。3.用户的注册,登陆,修改,查看系统除店主账号此外在首次使用时都需要注册用户个人信息,登录密码,这是完善用户以实现后续操作的的必须。用户同时可以修改个人信息,对自己寄存在在宠物店的宠物进行数据查看性质的管理。4.管理员的数据管理,修改,删除,操作执行管理员账号完成登陆步骤后,可以对所有用户信息进行查看/删除等管理操作,也可以根据用户的查询到用户寄存在宠物点的宠物信息,同时也可以对宠物信息进行增删改查等操作5.手机端操作Android系统进行管理的手机app,可以通过用户名和密码与数据库信息匹配,并向服务器请求响应数据,实现页面跳转和相应页面的数据回显。软件大型实验周——软件设计说明书第2页共29页1.3.1服务端功能模块设计1.登录模块类图(1)登录模块类图如图所示+DoGet()+DoPost()+name+pwdloginServlet+DoGet()+DoPost()+Httprequest+HttpresponseHttpServlet+findByName()+name+pwdUserDaoImpl-端1*-端2*接口1+fingByName()interfaceUserDao图1-3-1登录模块类图(2)登录模块类图说明表1-3-1登录模块类说明表类名说明HttpServlet对数据的请求进行数据处理及反应LoginServlet对用户输入的用户名密码进行验证返回数据UserDaoImpl实现对用户数据的查询返回布尔值(3)登录模块类图方法说明表1-3-1登录模块类方法表方法名说明loginServlet::doget()从界面获取数据调用从数据库查询的方法loginServlet::doget()调用doget方法相应对数据的处理软件大型实验周——软件设计说明书第3页共29页2.注册模块类图(1)注册模块类图如图所示+DoGet()+DoPost()+name+pwd+phone+emailaddUserServlet+DoGet()+DoPost()+Httprequest+HttpresponseHttpServlet+addUser()+name+pwd+phone+emailUserDaoImpl接口1+addUser()interfaceUserDao-端3*-端4*图1-3-2登录模块类图(2)注册模块类图说明表1-3-3登录模块类说明表表1-3-4登录模块方法说明表UserDaoImpl::findByName()根据参数从数据库中找到相应数据判断正误方法名说明httpServlet对数据的请求进行数据处理及反应addUserServlet对输入的数据进行判定,若合理,调用将数据插入数据库的方法UserDaoImpl将数据插入数据库中软件大型实验周——软件设计说明书第4页共29页3.硬件获取数据模块类图(1)注册模块类图如图所示+run()-ipaddress-portwriteThread+insert_timefood()+creattable()+time-value-tablenameUserDaoImpl接口1+insert_timefood()interfaceUserDao+run()-ipaddress-portopenThread+run()-ipaddress-portreadThread+run()Thread+get()-time-value-countwork+value()-特性1data-端5*-端6*图1-3-3硬件获取数据模块类图(2)注册模块类图说明表1-3-5硬件获取数据模块类说明表方法名说明addUserServlet::doget()从界面获取数据并判定是否合理的方法addUserServlet::doget()调用doget方法相应对数据的处理UserDaoImpl::addUser()将获取到的数据参数加到数据库对应表中方法名说明Thread线程始类openThread控制继电器软件大型实验周——软件设计说明书第5页共29页表1-3-6硬件获取数据模块方法说明表5.获取数据模块类图(1)获取数据模块类图如图所示+findByIdFromtimefood()+time+valuesendPetsFoood+DoGet()+DoPost()-Httprequest-HttpresponseHttpServlet+findBiIdFromtimefood()-timefood1-timefood2-timefood3-timefood4-timefood5-timefood6-idUserDaoImpl+findByIdFromtimefood()-tablename-idUserDao接口1-端1*-端2*图1-3-4获取数据模块类图(2)注册模块类图说明表1-3-7获取数据模块类说明表readThread从硬件端获取数据writeThread开启硬件段向服务器发送数据Work外部类获取void(run)类型方法中数据UserDaoImpl将从硬件段获取到的数据存储到数据库中方法名说明openThread::run()从界面获取数据并判定是否合理的方法readThread::run()调用doget方法相应对数据的处理writeThread::run()将获取到的数据参数加到数据库对应表中Work::get()从硬件段获取数据并将数据存储到数据库中UserDaoImpl::insert_timefood()将获取到的数据插入数据库中UserDaoImpl::creattable()实时每天创建对应表格的方法软件大型实验周——软件设计说明书第6页共29页表1-3-8获取数据模块方法说明表1.3.2安卓短功能模块设计1.登录模块类图(1)登录模块类图如图所示方法名说明httpServlet对数据的请求进行数据处理及反应send'PetsServlet调用方法从数据库中获取数据并发送到安卓端UserDaoImpl根据传入的时间参数找到相对应的表获取到数据方法名说明send'PetsServlet::doget()从界面获取数据并判定是否合理的方法send'PetsServlet::doget()调用doget方法相应对数据的处理UserDaoImpl:findByIdFromfood()根据参数id,当前时间值查找到相应List数据软件大型实验周——软件设计说明书第7页共29页+LoginThread()-petes-list-list1-et_name-et_passwordLoadActivity+get()+set()-id-name-pwd-email-pnameusers+get()+set()-id-kind-pro-health-petnamepets+sendjson()+getjson()NetUtils-端1*-端2*-端3*-端4*-端5*-端6*图1-3-1登录模块类图(2)登录模块类图说明表1-3-1登录模块类说明表类名说明LoadActivity用于用户管理员登录users用于对用户登录信息进行封装pets用于对宠物信息进行封装NetUtils用于android与服务器进行连接(3)登录模块类图方法说明软件大型实验周——软件设计说明书第8页共29页表1-3-1登录模块类方法表方法名说明LoadActivity::LoginThread创建线程用于网络通信Pets与user的get与set用于对处理信息进行封装NetUtils::sendJson用于向客户端发送信息NetUtils::getjson用于接收从客户端发送过来的信息2.注册模块类图(1)注册模块类图如图所示+registerThread()RegisterActivity+get()+set()-id-name-pwd-email-pnameusers-端3*-端4*+sendjson()+getjson()NetUtils-端3*-端4*软件大型实验周——软件设计说明书第9页共29页图1-3-2注册模块类图(2)注册模块类图说明表1-3-2注册模块类说明表类名说明RegisterActivity用于处理新用户的信息users用于对用户登录信息进行封装NetUtils用于android与服务器进行连接(3)登录模块类图方法说明表1-3-2登录模块类方法表方法名说明user的get与set用于对处理信息进行封装NetUtils::sendJson用于向客户端发送信息NetUtils::getjson用于接收从客户端发送过来的信息RegisterActivity::registerThread创建线程用于网络通信软件大型实验周——软件设计说明书第10页共29页3.主页面模块类图(1)主页面模块类图如图所示+LoginThread()-petes-list-list1-et_name-et_passwordLoadActivity+shark()-user-petsstaff_main+shark()-user-list-list1User_main+thread()Message+thread()Message_of_user图1-3-3主页面模块类图(2)主页面模块类图说明表1-3-3主页面模块类说明表类名说明LoadActiviy用于用户登录Staff_main管理员主界面User_main用户端主界面Message管理员消息页面软件大型实验周——软件设计说明书第11页共29页Message_of_user用户消息页面(3)主页面模块类图方法说明表1-3-3主页面模块类方法表方法名说明LoadActivity::LoginThread创建线程用于网络通信Staff_mainUser_main::shark控制消息灯光闪烁Message::thread用于管理员向服务器发送消息Message_of_user::thread用于用户向服务器发送已知消息4.管理员管理用户信息模块类图软件大型实验周——软件设计说明书第12页共29页(1)管理员管理用户信息模块如图所示+thread()+thread1()-list-flagUser_Manager+personal_pet()+thread1()+thread()Personal_pet_Manager+get()+set()-id-kind-pro-health-petnamepets+get()+set()-id-name-pwd-email-pnameusers-端1*-端2*-端3*-端4*+sendjson()+getjson()NetUtils-端5*-端6*+drawChartLine()MyLineChart图1-4-4管理员管理用户信息模块类图(2)管理员管理用户信息模块类说明表1-4-4管理员管理用户信息模块类说明表软件大型实验周——软件设计说明书第13页共29页类名说明NetUtils用于android与服务器进行连接users用于对用户登录信息进行封装pets用于对宠物信息进行封装User_Manager管理员管理用户界面Psersonal_pet_Manager查看某一用户的宠物MyLineChart将宠物