电子商务系统需求分析说明书
1. 引言1
1.编写目的1
2. 定义1
2. 任务概述2
1.目标2
2. 用户的特点2
3. 系统功能示例2
3. 需求细则2
1. 对功能的规定2
2. 对性能的规定5
3. 对排版的规定5
4. 对可维护性的规定6
5. 对个性的规定6
6. 对项目过程的规定6
引言
1.编写目的
通过与多位软件使用者进行全面深入地探讨和分析,并完成《电子商务系统》市场的前期调查后,提出了这份软件需求分析说明书。
此需求分析说明书对《电子商务系统》软件做了全面细致的用户需求分析,明确所要开发的软件应具有的功能、性能与界面,使系统分析人员及软件开发人员能清楚地了解用户的需求,并在此基础上进一步提出概要设计说明书和完成后续设计与开发工作。
本说明书的预期读者为客户、业务或需求分析人员、测试人员、用户文档编写者、项目管理人员。
2. 定义
需求:用户解决问题或达到目标所需的条件或功能;系统或系统部件要满足合同、标准,规范或其它正式规定文档所需具有的条件或权能。而且其很强的交互性及简单易行性,可以让人在很短时间内熟悉它的操作方法,不论用户文化水平如何,都会很轻松的学会使用它。
任务概述
1.目标
2. 用户的特点
由于本程序简单易操作,交互性好,对用户没什么特别要求。一般用户经过几分钟练习都可以熟悉本系统的规则。
3. 系统功能示例
需求细则
对功能的规定
分必选项和任选项,其中,必选项是必须完成的,属于项目答辩的入口条件,所有人都要做,未完成者取消答辩资格;任选项不是入口条件,但每完成一项都会加分,对于完成必选项的同学,尽可能多的完成一些任选项,以期获得更高的答辩成绩。如果所有项(包括必选和任选)都完成,那么功能分就是满分。如果设计思路、界面效果、代码组织等方面有个性(或和别人的不同),则获得附加分。
- 信息定义
- 用户信息定义
属性:必选
描述:用户信息必须包含如下项(包括但不限于):
- 用户名(要求全局唯一)
- 密码
- 金额
- 用户状态(买家/卖家)
- 买家级别(随着总消费金额的改变,级别不断提升,可根据不同级别打折)
- 商品信息定义
属性:必选
描述:商品信息必须包含如下项:
- 商品编号
- 商品名
- 商品单价
- 商品数量
- 所属卖家(必须是卖家中存在的)
- 订单信息定义
属性:必选
描述:订单信息必须包含如下项:
- 订单号(全局唯一)
- 订单日期(字符串——可以使用函数localtime和 sprintf)
- 购买信息定义
属性:必选
描述:购买信息必须包含如下项:
- 商品名
- 商品单价
- 购买数量
- 所属卖家(必须是卖家中存在的)
- 所属买家(必须是买家中存在的)
- 订单编号(必须是单号中存在的)
- 服务器(管理员)功能
注释:管理员账户:admin 密码:123456
- 查询
属性:必选
- 查看所有买家信息
- 查看所有卖家信息
- 查看所有商品信息
- 查看个别卖家商品信息(可选)
- 查看个别卖家购买信息(可选)
- 修改
属性:必选
- 修改个别用户密码
- 退出
属性:必选
- 退出自动保存所有用户信息
- 卖家功能
- 注册登录
属性:必选
描述:卖家能够注册并登录到服务器。如果是新用户则注册(注册密码要有再一次确认),如果已有用户则登陆(登陆要有账号、密码验证和验证码,密码、账号或者验证码输错三次退出系统)。 - 查看
- 注册登录
属性:必选
- 查看个人信息(用户名、金额)
- 查看自己所有商品信息(商品名、商品单价、商品数量)
- 查看自己销售商品信息(商品名(当时商品名)、销售单价(当时用户购买单价)、销售数量、销售日期、购买人、订单号)
- 修改密码
属性:必选
- 检验旧密码是否正确,如不正确提示重新输入旧密码;
- 如果正确,检验两次输入的新密码是否一致,如不一致,提示重新输入密码,如一致,用新密码覆盖旧密码;
1.3.4 商品管理
属性:必选
- 添加新商品
- 修改现有商品(商品名、商品单价、商品数量)
- 商品下架(根据商品名删除商品)
- 买家功能
- 注册登录
属性:必选
描述:卖家能够注册并登录到服务器。如果是新用户则注册(注册密码要有再一次确认),
如果已有用户则登陆(登陆要有账号、密码验证和验证码,密码、账号或者验证码输错三次退出系统)。 - 个人信息
- 注册登录
属性:必选
- 查看个人信息(用户名、金额、等级)
- 修改密码
属性:必选
- 修改个人密码
- 用户充值
属性:必选
- 用户可以充值
- 订单管理
属性:必选
- 查看购买历史(购买商品名、购买单价、购买数量、购买日期、订单号)
- 未提交订单(可选)
- 淘宝
属性:必选
- 查看所有商品
- 能够添加和删除购物车中的商品(包含购买数量)
- 下订单(把购物车中所有商品提交购买、扣除用户金额、减少对应商品数量、清空购物车)
- 退出系统
属性:必选
- 自动保存用户所有操作
- 密码隐藏
属性:任选
描述:登陆时,用户输入的密码对外不可见,例如全部用“******”显示。 - 界面友好
属性:必选
描述:用户的一些操作前后做出一些必要的提示或确认。所有完成的功能都需要友好,例如:
- 增加失败提示;
- 删除失败和成功提示、删除前的确认;
- 修改失败和成功提示、修改前/后的确认;
- 查找失败提示、查找成功的确认;
- 退出系统时,如果有修改要提示是否保存;
- 其它方面的界面问题;
对性能的规定
本系统在设计方面本着方便、实用的宗旨,性能方面应遵循如下原则: - 执行效率(时间):软件运行应该尽量高效;避免没有必要的循环处理、重复处理;
- 资源损耗(空间):设计尽量节约资源(内存、数组、链表等);不用的资源要及时释放;
- 初始化: 变量、数组、内存块、链表节点(其next要置NULL)等都要初始化;
- 健壮性:不能出现野指针、内存泄露、数组越界访问等等:
- 申请内存之后,应该立即检查指针值是否为NULL;动态内存的申请与释放必须配对,防止内存泄漏。释放了内存之后,立即将指针设置为NULL,防止产生“野指针”;
- 函数的入参必须进行有效性判断;
- switch-case一定要有default;if--else if等后要有else;
- 不允许出现goto语句;
- 数组的下标不要发生“多1”或者“少1”操作。
对排版的规定
- 缩进要对齐;
- 长行拆分;
- 二元操作符的前后应当加空格,包括如下操作符:
赋值操作符、比较操作符、算术操作符、逻辑操作符、位域操作符,如"="、"+=" ">="、"<="、"+"、"*"、"%"、"&&"、"||"、"<<", "^" 等; - 空行:
- 结构体声明之后、每个函数定义结束之后都要加2行空行;
- 逻揖上密切相关的语句之间不加空行,其它地方应加空行分隔;
- 一行代码只做一件事情;
- "if"、"for"、"while"、"do"等语句自占一行,执行语句不得紧跟其后。不论执行语句有多少都要加 "{ }";
对可维护性的规定
对可维护性的最终要求:别人能够轻松上手你的代码。
- 结构清晰:
- 模块化:对界面(显示)、菜单管理、逻辑管理、文件操作等等代码要独立;
- 封装:一个函数只做一件事,函数功能要单一;一个函数不能超过100行;
避免重复、冗余代码; - 代码块清晰。
- 变量命名规范,变量名应该具有自明性:
- 常量,枚举和宏定义命名
常量名,宏和枚举值由全大写字母组成,单词间通过下划线来界定; - 函数的命名:
使用"动词"或者"动词+名词"(动宾词组)的形式,由一个或多个单词组成且以小写字母开头,以后每个单词的首字母要大写便于界定 - 变量的命名与定义
应当使用"名词"或者"形容词+名词",由一个或多个单词组成且以小写字母开头,以后每个单词的首字母要大写便于界定。
- 注释充分:变量、函数(包括功能、参数、返回值)、代码功能块、一些复杂算法……等都需要清晰地说明;
对个性的规定
把项目做出个性出来。下列各项中有和别人不同之处、或很有创意,即可认为有个性。独立设计的软件,一般都会出现一些个性。参考、抄袭不会出现个性。 - 设计思路:包括软件的整体架构、功能块的设计思路、函数封装等;
- 功能实现:从用户的角度,使用上发现与众不同的地方;
- 其它方面;
对项目过程的规定
本着紧张但不急躁、不参考、不拷贝的原则进行。
- 紧张但不慌张
项目周期只有一周,包括项目答辩时间。所以项目时间比较紧张,但不能慌张。要有自己明确的设计思路,一步步沿着思路走下去,以此来巩固自己所学,锻炼自己的独立工作能力。 - 能自己做,绝不参考别人
自己还没有做,还没有想,就去看别人的,这样尽管功能做出来,但却没有什么意义,真正面试时还是不会。作者和读者,天壤之别。
如果自己实在无法搞定,一个问题卡了快一天,则可以咨询一下别人的想法,再行编码;尽量不直接看别人代码。 - 不拷贝