1引言
1.1编写目的
编写网上书店系统详细设计说明书的目的在于从详细设计的角度明确网上书店项目的业务品种、功能范围,明确与业务主机/终端系统的接口和业务处理模式,使系统开发人员和产品管理人员明确产品功能,可以有针对性的进行系统开发、测试、验收等各方面的工作。
读者:项目经理、概要设计人员,编码人员,测试人员。
1.2背景
说明:
- 待开发软件系统的名称;网上书店系统
b.开发背景:伴随社会的高速发展,即人们对精神文化的追求,现如今人们越来越注重读书,而且随着计算机的普及,越来越多的人通过网络实现购物,购买书籍也在其中,在这样的形式下,网上书店系统应运而生。
1.3定义
开发工具:Dev C++
开发语言:C语言
开发框架:UML
运行环境:Windows7,Windows10.
1.4参考资料
[1]软件工程:理论与实践, (美国)弗莱格 (Pfleeger.S.L.) ,(美国)阿特利 (Atlee.J.M.),高等教育出版社,2006年9月1日
[2] UML建模实例教程, 刘志成,电子工业出版社, 2009年11月1日
2程序系统的结构
3管理员售书模块设计说明
网上书店管理员,主要进行两方面的操作,一是对书店里的图书类型进行增添、删除,同时设定店长推荐的书籍列表。另一方面是对用户的订单尽心管理,例如同意发货,修改物流状态。
3.1程序描述
本程序分为两个模块,一个为编辑书籍模块,一个为订单管理情况。订单管理情况与用户登录模块中用户购书情况类似,以下针对编辑书籍模块进行重点讨论。
管理员处理相关订单:
增添相应书籍:
3.2功能
说明该程序应具有的功能,可采用IPO图(即输入一处理一输出图)的形式。
程序(函数) | 输入 | 处理 | 输出 |
Menu1 | 管理员登录 | 唯一店家 | 进入店家界面 |
Display_book | 书籍信息 | 查询代码中关于书籍信息的内容 | 书籍介绍信息 |
Search_book | 修改书籍信息中的库存 | 库存数量被修改 | 原数字被抹点,储存新库存 |
3.3性能
该程序实际面对两方,一方是用户。一旦库存量小于用户所输入的购买量,订单将无法生成。对于店家来说,当库存不充足时,店家可以对书籍信息中的“库存”属性进行修改,修改过后,即可重新进行正常交易。
3.4,3.5输入项,输出项
由于本次编写未涉及连接数据库,因此无描述输入输出项的内容。
3.6算法
先选择是否对数目
if(getch()=='y')
{
printf("书籍名: ");gets(book_cur->Name);
printf("作者: ");gets(book_cur->Writer);
printf("价格: ");scanf("%lf",&book_cur->Price);
printf("库存: ");scanf("%d",&book_cur->Stock);
printf("销量: ");scanf("%d",&book_cur->Sales);
fflush(stdin);
printf("简介: ");gets(book_cur->Abstract);
printf("分类: ");gets(book_cur->classification);
}
return;
3.7流程逻辑
下图为修改书籍信息的流程图。
3.8接口
程序所存在的层次已在图中说明,参数赋值采用输入的方式,同步调用方式,
3.9存储分配
本程序的存储分配,将修改的数据放在堆栈中。
3.10注释设计
说明准备在本程序中安排的注释,如:
- 加在模块首部,介绍模块功能;
- 加在各分枝点,解释调用的函数;
3.11限制条件
在修改库存信息时,书籍的其余信息还需要重新输入,比较繁琐。
3.12测试计划
在已有图书中,进行书籍信息的修改,选择书籍名称,进入修改页面,输入新的值,测试库存、价格输入非法值后是否报错,以及库存和销量的关系是否合理等。
3.13尚未解决的问题
修改库存是侧面补充库存的一种方式,如果库存大于0,但用户购买量大于库存量,此时订单无法生成,但是库存量正常。所以需要有一个提示,使管理员能够按需及时进行库存补充。
4用户登录模块设计说明
选择买家登录,输入用户名,即为注册新账户。输入用户名后,进入控制台的操作界面,此时可以选择显示书籍,搜索书籍,添加订单,搜索编辑订单,显示订单,店长推荐的功能。其中,用户反馈在编辑订单中体现。以下主要介绍购书操作中的订单操作。
4.1程序描述
购书模块主要分为以下四个部分:
4.2功能
说明该程序应具有的功能,可采用IPO图(即输入一处理一输出图)的形式。
用户购书模块:
程序 | 输入 | 处理 | 输出 |
Menu1 | 会员登陆 | 自动生成新账户,若已存在,则跳转至已有账户 | 进入用户界面 |
Add_order | 添加订单 | 查询已有书籍的信息,并判断 | 书籍介绍信息 |
Search_order | 修改订单 | 根据卖家的物流信息, | 是否收货成功 |
4.3性能
对于店家和用户来说,订单的信息都是自主操作。在用户添加订单之后,店家会获得订单信息,决定发货,决定物流状态,之后用户可以对已有物流信息的订单进行收货处理。确认收货后,完成交易。
4.4、4.5输入项,输出项
由于本次编写未涉及连接数据库,因此无描述输入输出项的内容。
4.6算法
1.搜索订单及对订单的部分后续操作
void Search_Order(_Order order_head,char account[])//搜索和编辑订单
{
int id;
//char choose;
_Order order_cur = order_head;
if(!order_head)
{
printf("当前没有任何订单!!!\n");
Sleep(1500);
return ;
}
printf("输入您要查询或者修改的订单号: "),scanf("%d",&id);//根据id号找订单
while(order_cur)
{
if((!strcmp(order_cur->Account,account))&&id == order_cur->roder_id)
{
printf("订单号:%d\n",order_cur->roder_id);
……
;
fflush(stdin);
if(strstr(order_cur->Status[0],"未付款"))//搜索到的未付款时则提示是否付款
{
printf("是否付款?: y/n");
printf("\n");
if(getch()=='y')
{
printf("付款成功\n");
strcpy(order_cur->Status[0],"已付款");
strcpy(order_cur->Status[1],"未发货");//物流信息
}
else
{
printf("是否删除订单: y/n");//若不付款则提示是否删除订单,以下都是类似
if(getch()=='y')
{
printf("订单已删除!!!\n");
strcpy(order_cur->Account,"");
strcpy(order_cur->Status[0],"交易关闭");
}
}
}
else if(strstr(order_cur->Status[0],"交易关闭")||strstr(order_cur->Status[0],"交易完成"))
4.7流程逻辑![](https://img-blog.csdnimg.cn/1f7a80d3b4864a55aef5fe8897b8a80a.png)
4.8接口
模块关系已经在2—程序结构中,已经体现。函数调用,实现增添订单的功能。
4.9存储分配
本程序的参数遵循动态存储分配,将修改的数据放在堆栈中。
4.10注释设计
在本程序中所安排的注释,如:
- 对输入的内容进行解释说明的注释;
- 对是否完成付款的判定操作的注释
- 对是否输入合法从而成功生成订单的注释。
4.11限制条件
每次购买都需要重新添加收货信息;付款功能未能真正实现,在本程序中是否付款为订单完成的判定之一。
4.12测试计划
当输入的数量不合法或未完成付款操作时,订单均添加失败。
4.13尚未解决的问题
1.物流信息需要由店家来填写,未能和真实情况同步;
2.付款的操作未能和时间联系,在本程序中,取决于买家是否选择付款。