软件项目详细设计 模板.docx

上传人:b****1 文档编号:15003106 上传时间:2023-06-29 格式:DOCX 页数:37 大小:31.44KB
下载 相关 举报
软件项目详细设计 模板.docx_第1页
第1页 / 共37页
软件项目详细设计 模板.docx_第2页
第2页 / 共37页
软件项目详细设计 模板.docx_第3页
第3页 / 共37页
软件项目详细设计 模板.docx_第4页
第4页 / 共37页
软件项目详细设计 模板.docx_第5页
第5页 / 共37页
软件项目详细设计 模板.docx_第6页
第6页 / 共37页
软件项目详细设计 模板.docx_第7页
第7页 / 共37页
软件项目详细设计 模板.docx_第8页
第8页 / 共37页
软件项目详细设计 模板.docx_第9页
第9页 / 共37页
软件项目详细设计 模板.docx_第10页
第10页 / 共37页
软件项目详细设计 模板.docx_第11页
第11页 / 共37页
软件项目详细设计 模板.docx_第12页
第12页 / 共37页
软件项目详细设计 模板.docx_第13页
第13页 / 共37页
软件项目详细设计 模板.docx_第14页
第14页 / 共37页
软件项目详细设计 模板.docx_第15页
第15页 / 共37页
软件项目详细设计 模板.docx_第16页
第16页 / 共37页
软件项目详细设计 模板.docx_第17页
第17页 / 共37页
软件项目详细设计 模板.docx_第18页
第18页 / 共37页
软件项目详细设计 模板.docx_第19页
第19页 / 共37页
软件项目详细设计 模板.docx_第20页
第20页 / 共37页
亲,该文档总共37页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

软件项目详细设计 模板.docx

《软件项目详细设计 模板.docx》由会员分享,可在线阅读,更多相关《软件项目详细设计 模板.docx(37页珍藏版)》请在冰点文库上搜索。

软件项目详细设计 模板.docx

软件项目详细设计模板

研发生产中心

文档编号

版本

A1

密级

商密A

项目名称

Xx系统

项目来源

QR-RD-022(Ver1.2)

XXX系统

详细设计说明书

(内部资料请勿外传)

编写:

日期:

检查:

日期:

审核:

日期:

批准:

日期:

XX公司

版权所有不得复制

文档变更记录

序号

变更(+/-)说明

作者

版本号

日期

批准

1

2

1.引言4

1.1编写目的和范围4

1.2术语表4

1.3参考资料4

1.4使用的文字处理和绘图工具4

2.1常量5

2.2变量5

2.3数据结构5

3.模块设计5

3.1用例图5

3.2功能设计说明5

3.2.1模块15

3.2.2模块26

4.接口设计7

4.1内部接口7

4.2外部接口7

4.2.1接口说明7

4.2.2调用方式8

5.数据库设计8

6.系统安全保密设计8

6.1说明8

6.2设计8

6.2.1数据传输部分8

6.2.2IP过滤分部8

6.2.3身份验证部分8

7.系统性能设计9

8.系统出错处理9

1.引言

1.1编写目的和范围

说明写这份详细设计说明书的目的。

本详细设计说明书编写的目的是说明程序模块的设计考虑,包括程序描述、输入/输出、算法和流程逻辑等,为软件编程和系统维护提供基础。

本说明书的预期读者为系统设计人员、软件开发人员、软件测试人员和项目评审人员。

1.2术语表

定义系统或产品中涉及的重要术语,为读者在阅读文档时提供必要的参考信息。

序号

术语或缩略语

说明性定义

1

PM

ProjectManager,项目经理

2

1.3参考资料

列出有关资料的名称、作者、文件编号或版本等。

参考资料包括:

a.需求说明书、架构设计说明书等;

b.本项目的其他已发表的文件;

c.引用文件、资料、软件开发标准等。

资料名称

作者

文件编号、版本

资料存放地点

1.4使用的文字处理和绘图工具

文字处理软件:

wordoffice

绘图工具:

Visio

2.全局数据结构说明

本章说明本程序系统中使用的全局数据常量、变量和数据结构。

2.1常量

staticStringSERVER_ADDRESS服务器地址

booleanloginFlag登录状态

2.2变量

BlueUserInfo?

用户账户结构体

2.3数据结构

包括数据结构名称,功能说明,具体数据结构说明(定义、注释、取值)等。

3.模块设计

3.1用例图

3.2功能设计说明

3.2.1登录模块

模块1主要分为以下几个子模块:

子模块1、子模块2和子模块N。

3.2.1.1设计图

3.2.1.2功能描述

此模块的主要功能是登录验证功能,保证程序的安全性问题。

用户需要验证用户和密码是否正确才能进行下一部操作。

3.2.1.3输入数据

变量名

类型

说明

userName

String

用户名(必填)

password

String

密码(必填)

STOPSPLASH

int

开场动画标志位

SPLASHTIME

long

消息发送延迟时间

LOGINBUTTON

int

登录按钮是否能够点击标志位

3.2.1.4输出数据

字段

说明

code

结果,0表示失败,1表示成功,2表示该养殖场地不存在,3表示该Rfid已存在

userName

用户名

PassWord

密码

userRoleld

用户权限,1代表系统用户,2代表人事部,3代表育苗场,4代表生产部,5代表加工厂,6代表市场部,7代表捕捞管理员

表现形式为:

code=1

3.2.1.5流程图

3.2.1.6源程序文件说明

3.2.1.7函数说明

对密码进行MD5加密:

md5(密码)

将用户的账号密码暂时保存等下次登录时可以不用再次输入:

saveUserInfo(Activity名,用户名,密码)

3.2.1.8限制条件

必须在有网的条件下能使用登录功能。

3.2.2人员管理

3.2.2.1设计图

3.2.2.2功能描述

通过手持设备扫描员工的RFID号,并在员工工号的输入框手动输入员工工号,并将两条数据上传到服务器中的数据库。

将员工工号与RFID号相互绑定。

3.2.2.3输入数据

变量名

属性

说明

number

string

员工的员工号(必填)

rfid

string

员工的RFID号(必填)如:

E200

在检测数据的有效性是像是判断数据是否为空,当向服务器发送消息时服务器会对数据进行有效性检测,显示判断员工的员工号是否存在,员工的RFID号是否已被其他工作人员应将绑定。

这些数据的获取离不开具有RFID扫描功能的手持设备,对员工的RFID卡进行扫描获取RFID号。

才实现此功能

3.2.2.4输出数据

变量名

属性

说明

number

string

员工的员工号

rfid

string

员工的RFID号

flag

int

数据存储状态的标志位

3.2.2.5业务算法和流程

3.2.2.6数据设计

给出本程序中的局部数据结构说明,包括数据结构名称,功能说明,具体数据结构说明(定义、注释设计、取值)等。

相关数据库表,数据存储设计(具体说明需要以文件方式保存的数据文件名、数据存储格式、数据项及属性等。

3.2.2.7源程序文件说明

package

import

import

importan

import

import

import

import

import

import

import

import

import

import

import

import

import//引入RFID扫描的开发包

 

/**

*Createdbyzhouxingguoon2015/7/15.

*/

publicclassEmployeeActivityextendsActivity{

privateButtonscan;

privateButtonsaveMessage;//保存员工信息

privateEditTextinputNumber;//员工编号、卡号

privateTextViewinputRfid;//员工RFID信息

privateStringnumber;//获取得到的卡号、编号

privateStringrfid;//获取得到的RFID

privateRfidScanrfidScan;

privateStringrfidget;

 

@Override

publicvoidonCreate(BundlesavedInstanceState){

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_employee);

Util.initSoundPool(this);

init();//获取RFID号和员工工号并保存到本地数据库

}

//初始化控件

privatevoidinit(){

inputNumber=(EditText)findViewById(R.id.input_employee_number);

inputRfid=(TextView)findViewById(R.id.input_employee_rfid);

saveMessage=(Button)findViewById(R.id.save_message_employee);

scan=(Button)findViewById(R.id.scan_rfid);

MyListenerlistener=newMyListener(this);

saveMessage.setOnClickListener(listener);

scan.setOnClickListener(listener);//datareceive=getIntent().getExtras();

//dataflag=datareceive.getInt("dataflag");

////0代表从主界面跳转,1代表从扫描接口跳转

//if(dataflag==0){

//inputRfid.setText("请扫描员工卡号");

//}elseif(dataflag==1){

//rfidget=datareceive.getString("rfid");//0代表从员工录入跳转,1代表从快递跳转

//inputRfid.setText(rfidget);

//}

}

 

privateclassMyListenerimplementsView.OnClickListener{

privateContextcontext;

publicMyListener(Contextcontext){

this.context=context;

}

@Override

publicvoidonClick(Viewview){

switch(view.getId()){

caseR.id.scan_rfid:

rfidScan=newRfidScan();

rfidget=rfidScan.scan();

if(rfidget!

=null){

inputRfid.setText(rfidget);

}

else{

Toast.makeText(getApplicationContext(),R.string.scan_rfid_fail,Toast.LENGTH_SHORT).show();

}

break;

 

caseR.id.save_message_employee:

//保存员工信息按钮到数据库,保存成功之后清空editText

//要保证输入的信息不能全部为空

if(!

TextUtils.isEmpty(inputNumber.getText())&&!

TextUtils.isEmpty(inputRfid.getText())){

number=inputNumber.getText().toString().trim();

rfid=inputRfid.getText().toString().trim();

BlueOceanEmployeeServiceemployeeService=newBlueOceanEmployeeService(context);

BlueOceanEmployeeboe=newBlueOceanEmployee();

intflag=0;//0表示保存到本地数据库,1表示本地数据库数据待删除

boe.setFlag(flag);

boe.setNumber(number);

boe.setRfid(rfid);

employeeService.insert(boe);

inputNumber.setText("");

inputRfid.setText("");

Toast.makeText(getApplicationContext(),R.string.bind_success,Toast.LENGTH_LONG).show();

//开辟一个新线程上传数据

newThread(networkTask).start();

Toast.makeText(getApplicationContext(),R.string.save_success_toast,Toast.LENGTH_LONG).show();

}else{

Toast.makeText(getApplicationContext(),R.string.employee_rfid_number_not_null,Toast.LENGTH_LONG).show();

}

break;

}

}

}

 

RunnablenetworkTask=newRunnable(){

@Override

publicvoidrun(){

//TODO

//在这里进行httprequest.网络请求相关操作

UploadServiceuploadService=newUploadService();

uploadService.upload(getApplicationContext());

}

};

 

}

3.2.2.8函数说明

大扫描RFID就成功时发出提示音:

Util.initSoundPool(activity名称);

程序的主体:

init();

开启数据上传线程:

networkTask

3.2.2.9限制条件

要实现此功能必须要具备可以扫描RFID功能的手持设备,不然无法扫描员工的RFID号。

3.2.3池塘管理

3.2.3.1设计图

3.2.3.2功能描述

此模块主要实现的功能是扫描池塘的RFID,并手动输入池塘编号,并将其保存到本地数据库。

并等到有网的条件下,将此条信息上传到服务器端的数据库。

实现池塘RFID号与池塘编号的绑定。

3.2.3.3输入数据

变量名

属性

说明

number

string

池塘编号(必填)如:

育苗池1

rfid

string

池塘的RFID号(必填):

在检测数据有效性时,需要检测数据是否为空。

这些数据的获取离不开具有RFID扫描功能的手持设备,对池塘的RFID卡进行扫描获取RFID号。

才实现此功能

3.2.3.4输出数据

变量名

属性

说明

number

string

池塘编号

rfid

string

池塘的RFID号

flag

Int

数据存储标志位

3.2.3.5业务算法和流程

3.2.3.6数据设计

给出本程序中的局部数据结构说明,包括数据结构名称,功能说明,具体数据结构说明(定义、注释设计、取值)等。

相关数据库表,数据存储设计(具体说明需要以文件方式保存的数据文件名、数据存储格式、数据项及属性等。

3.2.3.7源程序文件说明

package

import

import

import

import;

import

import

import

import

import

import

import

import

import

import

import

import

 

/**

*Createdbyzhouxingguoon2015/7/15.

*/

publicclassPondActivityextendsActivity{

privateButtonscanPond;//点击扫描池塘

privateButtonbindPond;//绑定池塘编号和RFID信息

privateEditTextpondNumber;//池塘编号、卡号

privateTextViewpondRfid;//池塘RFID信息

privateStringnumber;//获取得到的卡号、编号

privateStringrfid;//获取得到的RFID

privateRfidScanrfidScan;

privateStringrfidget;

 

@Override

publicvoidonCreate(BundlesavedInstanceState){

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_pond);

Util.initSoundPool(this);

init();

}

//初始化控件

privatevoidinit(){

pondNumber=(EditText)findViewById(R.id.input_pond_number);

pondRfid=(TextView)findViewById(R.id.input_pond_rfid);

scanPond=(Button)findViewById(R.id.scan_pond_rfid);

bindPond=(Button)findViewById(R.id.bind_pond);

MyListenerlistener=newMyListener(this);

scanPond.setOnClickListener(listener);

bindPond.setOnClickListener(listener);

}

 

privateclassMyListenerimplementsView.OnClickListener{

privateContextcontext;

publicMyListener(Contextcontext){

this.context=context;

}

@Override

publicvoidonClick(Viewview){

Log.d("aa","进入点击");

switch(view.getId()){

caseR.id.scan_pond_rfid:

rfidScan=newRfidScan();

rfidget=rfidScan.scan();

if(rfidget!

=null){

pondRfid.setText(rfidget);

}

else{

Toast.makeText(getApplicationContext(),R.string.scan_rfid_fail,Toast.LENGTH_SHORT).show();

}

break;

 

caseR.id.bind_pond:

//保存员工信息按钮到数据库,保存成功之后清空editText

//要保证输入的信息不能全部为空

if(!

TextUtils.isEmpty(pondNumber.getText())&&!

TextUtils.isEmpty(pondRfid.getText())){

number=pondNumber.getText().toString().trim();

rfid=pondRfid.getText().toString().trim();

BlueOceanPondServicepondService=newBlueOceanPondService(context);

BlueOceanPondboe=newBlueOceanPond();

intflag=0;//0表示保存到本地数据库,1表示本地数据库数据待删除

boe.setFlag(flag);

boe.setNumber(number);

boe.setRfid(rfid);

pondService.insert(boe);

pondNumber.setText("");

pondRfid.setText("");

Toast.makeText(getApplicationContext(),R.string.bind_success,Toast.LENGTH_LONG).show();

//开辟一个新线程上传数据

newThread(networkTask).start();

}

else{

Toast.makeText(getApplicationContext(),R.string.pond_rfid_number_not_null,Toast.LENGTH_LONG).show();

}

break;

}

}

}

 

RunnablenetworkTask=newRunnable(){

@Override

publicvoidrun(){

//TODO

//在这里进行httprequest.网络请求相关操作

UploadServiceuploadService=newUploadService();

uploadService.upload(PondActivity.this);

}

};

 

}

3.2.3.8函数说明

当扫描RFID就成功时发出提示音:

Util.initSoundPool(activity名称);

程序的主体:

init();

开启数据上传线程:

networkTask

3.2.3.9限制条件

要实现此功能必须要具备可以扫描RFID功能的手持设备,不然无法扫描员工的RFID号。

3.2.4育苗管理

3.2.4.1设计图

3.2.4.2功能描述

本功能主要是对员工对育苗池的操作进行记录,显示扫描员工RFID、池塘RFID。

还要扫描海产品的批次二维码,当员工对池塘进行操作时,需要记录操作类型,并且记录池塘的温度。

经这些信息记录到本地数据库。

3.2.4.3输入数据

变量名

属性

说明

rfidgetUser

string

员工的RFID(必填)如:

rfidgetPool

string

池塘的RFID号(必填)如:

Batch

String

批次二维码(必填)com/show.html?

id

=18FC90BE5B8124AF983421D29BFC4352

getEvenType

String

操作类型(必填),包括:

喂食、换水、测温、入池、投放

temp

String

温度(非必填)如:

10℃

time

String

在检测数据有效性时,需要检测rfidgetUser与rfidgetPool两个输入变量是否为空。

这些数据的获取离不开具有RFID扫描功能及二维码扫描的手持设备,对池塘的RFID卡进行扫描并获取RFID号并且对池塘上的产品批次二维码进行扫描,获取产品批次二维码。

3.2.4.4输出数据

变量名

属性

说明

rfidgetUser

s

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2