您的当前位置:首页正文

软件设计说明书

来源:独旅网
软件大型实验周——软件设计说明书

1概要设计

1.1开发环境

数据库服务器:mysql服务器 开发语言:java ,c ,sql

开发工具:myeclipese, Ubuntu虚拟机,Android Studio,物联网试验箱 开发系统还环境:windows10,linux

1.2系统功能描述

1.系统综述

宠物店系统致力于实现对店内宠物进行时间段的饮食,水的监控,用户可以通过登陆用户端查看交由宠物店里看管的宠物数据,查看在时间段的疫苗接种情况.

店主端可以通过殿主账号登陆查看所有用户/宠物信息,并对其进行管理操作 2.数据段的接受与发送

服务器打开后向zigbee网络发送请求,传感器将接受到的数据通过 协调器发送给服务器,服务器将数据进行简单数据分类,处理后,把数据存储到数据库中。 3.用户的注册,登陆,修改,查看

系统除店主账号此外在首次使用时都需要注册用户个人信息,登录密码,这是完善用户以实现后续操作的的必须.用户同时可以修改个人信息,对自己寄存在在宠物店的宠物进行数据查看性质的管理。

4.管理员的数据管理,修改,删除,操作执行

管理员账号完成登陆步骤后,可以对所有用户信息进行查看/删除等管理操作,也可以根据用户的查询到用户寄存在宠物点的宠物信息,同时也可以对宠物信息进行增删改查等操作 5 . 手机端操作

Android系统进行管理的手机app,可以通过用户名和密码与数据库信息匹配,并向服务器请求响应数据,实现页面跳转和相应页面的数据回显.

第 0 页 共 29 页

软件大型实验周——软件设计说明书

1。3。1服务端功能模块设计

1.登录模块类图

(1)登录模块类图如图所示

HttpServlet+Httprequest+Httpresponse+DoGet()+DoPost()<>UserDao+fingByName()接口1loginServlet+name+pwd+DoGet()+DoPost()UserDaoImpl-端1**-端2+name+pwd+findByName()

图1-3—1 登录模块类图

(2)登录模块类图说明

表 1-3—1 登录模块类说明表

类名 HttpServlet LoginServlet UserDaoImpl

(3)登录模块类图方法说明

表1-3—1 登录模块类方法表

说明 对数据的请求进行数据处理及反应 对用户输入的用户名密码进行验证返回数据 实现对用户数据的查询返回布尔值 方法名 说明 loginServlet::doget() 从界面获取数据调用从数据库查询的方法 loginServlet::doget() 调用doget方法相应对数据的处理 第 1 页 共 29 页

软件大型实验周——软件设计说明书

UserDaoImpl::findByName() 根据参数从数据库中找到相应数据判断正误

2 。 注册模块类图

(1)注册模块类图如图所示

HttpServlet+Httprequest+Httpresponse+DoGet()+DoPost()<>UserDao+addUser()接口1addUserServlet+name+pwd+phone+email+DoGet()+DoPost()-端3*-端4*+name+pwd+phone+email+addUser()UserDaoImpl

图1-3—2 登录模块类图

(2)注册模块类图说明

表 1—3—3 登录模块类说明表

方法名 说明 httpServlet 对数据的请求进行数据处理及反应 addUserServlet 对输入的数据进行判定,若合理,调用将数据插入数据库的方法 UserDaoImpl 将数据插入数据库中

表 1—3—4 登录模块方法说明表

第 2 页 共 29 页

软件大型实验周——软件设计说明书

方法名 说明 addUserServlet::doget() 从界面获取数据并判定是否合理的方法 addUserServlet::doget() 调用doget方法相应对数据的处理 UserDaoImpl::addUser() 将获取到的数据参数加到数据库对应表中

3 。 硬件获取数据模块类图

(1)注册模块类图如图所示

Thread+run()<>UserDao接口1+insert_timefood()UserDaoImplopenThread-ipaddress-port+run()readThread-ipaddress-port+run()writeThread-ipaddress-port+run()+time-value-tablename+insert_timefood()+creattable()-端6data-特性1+value()-time-value-count+get()work-端5**图1-3—3 硬件获取数据模块类图

(2)注册模块类图说明

表 1-3—5 硬件获取数据模块类说明表

方法名 说明 Thread 线程始类 openThread 控制继电器 第 3 页 共 29 页

软件大型实验周——软件设计说明书

readThread 从硬件端获取数据 writeThread 开启硬件段向服务器发送数据 Work 外部类获取void(run)类型方法中数据 UserDaoImpl 将从硬件段获取到的数据存储到数据库中

表 1-3—6 硬件获取数据模块方法说明表

方法名 说明 openThread::run() 从界面获取数据并判定是否合理的方法 readThread::run() 调用doget方法相应对数据的处理 writeThread::run() 将获取到的数据参数加到数据库对应表中 Work::get() 从硬件段获取数据并将数据存储到数据库中 UserDaoImpl::insert_timefood() 将获取到的数据插入数据库中 UserDaoImpl::creattable() 实时每天创建对应表格的方法

5 。 获取数据模块类图

(1)获取数据模块类图如图所示

HttpServlet-Httprequest-Httpresponse+DoGet()+DoPost()UserDaoImpl-端2sendPetsFoood+time+value+findByIdFromtimefood()-端1**-timefood1-timefood2-timefood3-timefood4-timefood5-timefood6-id+findBiIdFromtimefood()接口1UserDao-tablename-id+findByIdFromtimefood()图1-3—4 获取数据模块类图

(2)注册模块类图说明

表 1—3-7 获取数据模块类说明表

第 4 页 共 29 页

软件大型实验周——软件设计说明书

方法名 说明 httpServlet 对数据的请求进行数据处理及反应 send’PetsServlet 调用方法从数据库中获取数据并发送到安卓端 UserDaoImpl 根据传入的时间参数找到相对应的表获取到数据

表 1-3-8 获取数据模块方法说明表

方法名 说明 send’PetsServlet::doget() 从界面获取数据并判定是否合理的方法 send'PetsServlet::doget() 调用doget方法相应对数据的处理 UserDaoImpl:findByIdFromfood() 根据参数id,当前时间值查找到相应List数据

1.3.2安卓短功能模块设计

1.登录模块类图

(1)登录模块类图如图所示

第 5 页 共 29 页

软件大型实验周——软件设计说明书

pets-id-kind-pro-health-petname+get()+set()-端1*-端2*LoadActivity-petes-list-list1-et_name-et_password+LoginThread()*-端5-端3*-端4*users-id-name-pwd-email-pname+get()+set()*-端6NetUtils+sendjson()+getjson()

图1-3-1 登录模块类图

(2)登录模块类图说明

表 1—3-1 登录模块类说明表

类名 说明 LoadActivity 用于用户管理员登录 users 用于对用户登录信息进行封装 pets 用于对宠物信息进行封装 NetUtils 用于android与服务器进行连接

(3)登录模块类图方法说明

第 6 页 共 29 页

软件大型实验周——软件设计说明书

表1—3—1 登录模块类方法表

方法名 说明 LoadActivity::LoginThread 创建线程用于网络通信 Pets与user的get 与set 用于对处理信息进行封装 NetUtils::sendJson 用于向客户端发送信息 NetUtils::getjson 用于接收从客户端发送过来的信息

2.注册模块类图

(1) 注册模块类图如图所示

usersRegisterActivity+registerThread()*-端3-端3*-端4*-id-name-pwd-email-pname+get()+set()*-端4NetUtils+sendjson()+getjson()

第 7 页 共 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 创建线程用于网络通信

第 8 页 共 29 页

软件大型实验周——软件设计说明书

3。主页面模块类图

(1)主页面模块类图如图所示

LoadActivity-petes-list-list1-et_name-et_password+LoginThread()staff_main-user-pets+shark()User_main-user-list-list1+shark()Message+thread()Message_of_user+thread()

图1—3-3 主页面模块类图

(2)主页面模块类图说明

表1—3—3 主页面模块类说明表

类名 说明 LoadActiviy 用于用户登录 Staff_main 管理员主界面 User_main 用户端主界面 Message 管理员消息页面 第 9 页 共 29 页

软件大型实验周——软件设计说明书

Message_of_user 用户消息页面

(3)主页面模块类图方法说明

表1-3—3 主页面模块类方法表

方法名 说明 LoadActivity::LoginThread 创建线程用于网络通信 Staff_main User_main::shark 控制消息灯光闪烁 Message::thread 用于管理员向服务器发送消息 Message_of_user::thread 用于用户向服务器发送已知消息

4.管理员管理用户信息模块类图

第 10 页 共 29 页

软件大型实验周——软件设计说明书

(1)管理员管理用户信息模块如图所示

NetUtils+sendjson()+getjson()**-端5-端6pets-id-kind-pro-health-petname+get()+set()users-id-name-pwd-email-pname+get()+set()-端3*-端4*User_Manager-list-flag+thread()+thread1()-端1-端2**Personal_pet_ManagerMyLineChart+personal_pet()+thread1()+thread()+drawChartLine()

图1—4—4 管理员管理用户信息模块类图

(2)管理员管理用户信息模块类说明

表1—4-4 管理员管理用户信息模块类说明表

第 11 页 共 29 页

软件大型实验周——软件设计说明书

类名 说明 NetUtils 用于android与服务器进行连接 users 用于对用户登录信息进行封装 pets 用于对宠物信息进行封装 User_Manager 管理员管理用户界面 Psersonal_pet_Manager 查看某一用户的宠物 MyLineChart 将宠物进食情况用图表描绘出来

(3)管理员管理用户信息模块类方法说明

表1-4—4 管理员管理用户信息模块类方法表

方法名 说明 Pets与user的get 与set 用于对处理信息进行封装 NetUtils::sendJson 用于向客户端发送信息 NetUtils::getjson 用于接收从客户端发送过来的信息 User_Manager::thread 显示所有用户信息的网络线程 User_Manager::thread1 删除某一用户信息 Personal_pet_Manager::personal_pet 显示某一用户的所有宠物信息 Personal_pet_Manager::thread1 查看宠物进食情况 Personal_pet_Manager::thread 删除宠物信息 MyLineChart::drawChartLine 画图方法

第 12 页 共 29 页

软件大型实验周——软件设计说明书

5.管理员管理宠物信息模块类图

(1)管理员管理宠物信息模块如图所示

users-id-name-pwd-email-pname+get()+set()*-端5NetUtils+sendjson()+getjson()*-端1registerpetpets-id-kind-pro-health-petname+get()+set()-端3*-端4**2-端6+getthread()+thread()Pet_Manager-pets+thread()+thread2()add_pet+thread()MyLineChart+drawChartLine()

图1-5—5 管理员管理宠物信息模块类图

(2)管理员管理宠物模块类名

表1-5—5 管理员管理宠物信息模块类说明表

类名 说明 NetUtils 用于android与服务器进行连接 users 用于对用户登录信息进行封装 pets 用于对宠物信息进行封装 Pet_Manager 管理员管理宠物界面 第 13 页 共 29 页

软件大型实验周——软件设计说明书

Registerpet 修改宠物信息界面 Add_pet 增加宠物信息界面 MyLineChart 显示宠物进食情况

(3)管理员管理宠物信息模块类方法说明

表1-5—5 管理员管理用户信息模块类方法表

方法名 说明 Pets与user的get 与set 用于对处理信息进行封装 NetUtils::sendJson 用于向客户端发送信息 NetUtils::getjson 用于接收从客户端发送过来的信息 Pet_Manager::thread 显示所有宠物信息的网络线程 Pet_Manager::thread2 查看某一宠物进食情况 Register_pet_Manager::getthread 回显宠物的所有信息 Register_pet_Manager::thread 修改宠物的信息 Add_pet::thread 新增宠物的信息 MyLineChart::drawChartLine 画图方法

6。用户管理个人信息模块类图

(1)用户管理个人信息模块如图所示

第 14 页 共 29 页

软件大型实验周——软件设计说明书

users-id-name-pwd-email-pname+get()+set()*pets-id-kind-pro-health-petname+get()+set()-端3*-端4**-端1-端2User_refact+thread()-端5user_info+th()**-端6NetUtils+sendjson()+getjson() 图1-6-6 用户管理个人信息模块类图

(2)用户管理个人模块类名

表1-5—5 管理员管理宠物信息模块类说明表

类名 说明 NetUtils 用于android与服务器进行连接 users 用于对用户登录信息进行封装 pets 用于对宠物信息进行封装 User_info 用户产看修改个人信息 User_refact 用户修改个人信息

(3)用户管理个人信息模块类方法说明

第 15 页 共 29 页

软件大型实验周——软件设计说明书

表1—6—6用户管理个人信息模块类方法表

方法名 说明 Pets与user的get 与set 用于对处理信息进行封装 NetUtils::sendJson 用于向客户端发送信息 NetUtils::getjson 用于接收从客户端发送过来的信息 User_info::th 用户查看个人信息线程 User_refact::thread 用户修改个人信息线程

7.用户管理宠物信息模块类图

(1)用户管理宠物信息模块如图所示

NetUtils+sendjson()+getjson()**-端5-端6**-端1-端2-端3-端4**users-id-name-pwd-email-pname+get()+set()pets-id-kind-pro-health-petname+get()+set()pet_of_userinfo+personal_pet()+thread()MyLineChart+drawChartLine()

第 16 页 共 29 页

软件大型实验周——软件设计说明书 图1—7—7 用户管理宠物信息模块类图

(2)用户管理宠物模块类名

表1—7-7 用户管理宠物信息模块类说明表

类名 说明 NetUtils 用于android与服务器进行连接 users 用于对用户登录信息进行封装 pets 用于对宠物信息进行封装 Pet_of_userinfo 查看某一用户的宠物信息 MyLineChart 画出某一用户的信息

(3)用户管理宠物信息模块类方法说明

表1-7—7用户管理宠物信息模块类方法表

方法名 说明 Pets与user的get 与set 用于对处理信息进行封装 NetUtils::sendJson 用于向客户端发送信息 第 17 页 共 29 页

软件大型实验周——软件设计说明书

NetUtils::getjson 用于接收从客户端发送过来的信息 Pet_of_userinfo::person_pet 由于查看该用户的所有宠物 Pet_of_userinfo::thread 查看宠物进食情况 MyLineChart::drawChartLine 将宠物进食情况绘制成表格

1。4 活动图具体设计

管理员端接受处理疫苗信息管理用户信息管理宠物信息 图1.4。1管理员端活动图

第 18 页 共 29 页

软件大型实验周——软件设计说明书

用户端接受处理疫苗信息管理个人信息查看宠物信息

图1.4.2 用户端活动图

第 19 页 共 29 页

软件大型实验周——软件设计说明书

2数据库设计

2.1概念结构设计

注释

表 2。1 用户说明表

数据库唯一性检察 姓名 密码 手机号 邮箱 编号

注释

表 2.2 宠物信息说明表

数据库唯一性检察 编号 姓名 健康 疫苗 种类

表 2.3 用户宠物信息关联说明表

注释 数据库条目 数据库唯一性检察 宠物编号 用户编号

表 2.4 信息交流储存说明表

第 20 页 共 29 页

数据库条目 必须填写(*) 类型 name pwd Phone email Id * * * * * Varchar varchar varchar varchar int 数据库条目 必须填写(*) 类型 Petid PetName PHeal Pro Kind * * * * * int varchar varchar varchar varchar 必须填写(*) 类型 Petid Id * * int Int 软件大型实验周——软件设计说明书

注释 数据库条目 数据库唯一性检察 用户编号 状态 信息 宠物编号

食物表是时间上的逻辑调用生成,起名以timefood+yyyyMMddhhmmss,所以具体表的个数与表的名字为不定值,其中一表的数据内容如下所示:

表 2。5 从硬件端获取是数据信息说明表

注释 数据库条目 数据库唯一性检察 编号 测试1 测试2 测试3 测试4 测试5 测试6

Petid timefood1 timefood2 timefood3 timefood4 timefood5 timefood6 * int varchar varchar varchar varchar varchar varchar 必须填写(*) 类型 Id checksit news petid * * * * int varchar varchar int 必须填写(*) 类型 第 21 页 共 29 页

软件大型实验周——软件设计说明书

NamepwdPetidNamephone用户拥有宠物KindProemail关联Heal关联宠物关联用户 图2。1用户类图

PetidPetidtimefood1timefood2食物timefood3Protimefood4timefood5timefood6Heal关联宠物KindName 图2.2宠物类图

第 22 页 共 29 页

软件大型实验周——软件设计说明书

3详细设计

3.1 系统定名

中文:宠物店; 英文:petsroom

功能定位:为无暇照顾宠物的都市忙人提供看管宠物的功能,并为客户在时间段内提供食物,水方面的数值统计,以及相应疫苗的植入情况。

3。2 .1服务器功能模块设计 1. 账号注册

(1) 注册模块程序流程图如图所示

否录入信息无误选择注册开始是完成注册结束 图3.1注册模块程序流程图

(2) 核心代码

从安卓界面以json形式发生到服务器的user对象,加载进入到addUserServlet调用UserDaoImpl中的addUser()进行验证,若用户输入的信息不存在问题,注册用户的信息成功 否则失败,注册成功的用户会被数据库以自增加的方式分配id编号。服务器会根据id编号进行判定身份,并跳转相对应的页面。 2 。 账号登录

(1) 登录模块程序流程图如图所示

第 23 页 共 29 页

软件大型实验周——软件设计说明书

结束注册否是是否注册开始登录信息无误否是登录成功结束 图3。2登录模块程序流程图

(2)核心代码

从安卓界面以json形式发生到服务器的user对象,加载进入到loginServlet调用UserDaoImpl中的indBiName()找到相对应的密码与其进行匹配,完成登录操作,根据根据权限声明,区分为两类管理员与普通用户,而后拥有的权限与进入的页面也完全不同。 3. 硬件获取数据

(1) 从硬件端获取数据模块程序流程图如图所示

否j结束存入到数据库是接收数据成功发送开始传输信息开始图3。3从硬件端获取数据模块程序流程图

(2)核心代码块

通过调用writeThread()的run()方法开启硬件端向服务器发生数据的程序,并用readThread()类的run()方法接受来自硬件端的数据,在用外部类的方式获取到run()方法中获取到的节点数值字符串,进行简单处理后,调用来自UserDaoImpl的insert_timefood()

第 24 页 共 29 页

软件大型实验周——软件设计说明书

方法,在这个过程中,调用相应名称的表不存在的情况时,采用timefood+yyyyMMddhhmmss为表名的方式灵活创建表,已完成获取到的数据的插入操作.

4 。获取数据库数据模块

(1) 获取数据库数据模块程序流程图如图所示

否生成信息是前后无数据加载数据到集合中是获取当天数据成功开始否是判定表是否存在生成信息一起加载到json并传输结束图3.4获取数据库数据模块程序流程图

(2)核心代码

将数据加载到数据库之后,当安卓端需要将数据制成曲线图时,安卓连接服务器的sendpetsFood中进行加载,对安卓端的请求做出两种操作。1。调用findByIdFromTimefood方法找到安卓端需要显示在曲线中的数据,2.调用querytable方法查询到所有表的名字,并与其进行匹配,根据表名确定前后一天的数据是否存在以便于确定当天的数据是否拥有前后的扩展性。

3。2.2 安卓端功能模块设计 1.账号注册

(1) 注册模块程序流程图如图所示

第 25 页 共 29 页

软件大型实验周——软件设计说明书

否录入信息无误选择注册开始是完成注册结束 图3。5注册模块程序流程图

(2)核心代码

通过onClick()方法来设置监听“注册”按钮,来获取注册用户填写的账号,信息通过Gson工具将用户注册信息组装成用户对象,发送给服务器,服务器自动生成其ID号以识别其身份 进入相应的页面(用户页面与管理员页面)

2.管理员模块设计

(1) 管理员模块程序流程图如图所示

第 26 页 共 29 页

软件大型实验周——软件设计说明书

管理员开始接受处理疫苗消息管理用户信息管理宠物信息结束 图3。6管理员模块程序流程图

(2)核心代码

通过ID识别不同用户权限进入不同的界面,管理员主要有三个功能,消息处理,用户信息管理,宠物信息管理,消息模块主要通过json将管理员ID号发送给服务器,并接受该管理员的所有消息,当某一宠物注射过疫苗后,向服务器发送宠物ID,并重新刷新页面,可见该消息消失。用户信息管理模块通过GSON将所有用户信息转换成list〈user〉发送给ANDROID端android进行相应显示点击查看宠物可查看相应用户的拥有宠物信息,发送方法与上类似,点击某一宠物信息时,会将宠物的进食情况信息通过list〈string〉形式加以gson工具发送过来,Android通过MyLineCharta activity绘制图表加以显示查看宠物按钮与查看某一用户拥有宠物类似信息

第 27 页 共 29 页

软件大型实验周——软件设计说明书

3.用户模块设计

(1) 用户模块程序流程图如图所示

用户端开始接受处理疫苗消息管理个人信息管理个人信息结束

图3。7管理员模块程序流程图

(2)核心代码

通过ID将该用户信息回显给android端支持修改

宠物信息一样通过gson将宠物信息以宠物链表形式发送 并以图表或折线图加以显示

第 28 页 共 29 页

因篇幅问题不能全部显示,请点此查看更多更全内容