软件工程课程设计-网上购物.doc

上传人:小小飞 文档编号:3293355 上传时间:2019-08-08 格式:DOC 页数:26 大小:261.51KB
返回 下载 相关 举报
软件工程课程设计-网上购物.doc_第1页
第1页 / 共26页
软件工程课程设计-网上购物.doc_第2页
第2页 / 共26页
软件工程课程设计-网上购物.doc_第3页
第3页 / 共26页
软件工程课程设计-网上购物.doc_第4页
第4页 / 共26页
软件工程课程设计-网上购物.doc_第5页
第5页 / 共26页
点击查看更多>>
资源描述

《软件工程课程设计-网上购物.doc》由会员分享,可在线阅读,更多相关《软件工程课程设计-网上购物.doc(26页珍藏版)》请在三一文库上搜索。

1、 软件工程课程设计报告软件工程课程设计报告 目目 录录 1.设计内容设计内容.1 1.1 问题概述 1 1.2 系统的数据流程图及数据字典 1 1.2.1数据流图1 1.2.2数据字典4 1.3E-R 图 8 2.概要设计概要设计.10 2.1 主要功能 10 2.2 模块定义 10 3.详细设计详细设计.11 3.1 详细设计说明书 11 3.2 数据库设计 12 3.3 程序流程图12 3.4 输入项目 14 4.程序源码程序源码.14 5.程序运行与调试程序运行与调试.21 5.1 模块测试 21 5.2 总体测试 23 6.总结总结.23 7.参考文献参考文献.24 1 1.设计内容设

2、计内容 1.11.1 问题概述问题概述 网上购物是一种具有交互功能的商业信息系统。它向用户提供静态和动态 两类信息资源。所谓静态信息是指那些比经常变动或更新的资源,如公司简介、 管理规范和公司制度等等;动态信息是指随时变化的信息,如商品报价,会议 安排和培训信息等。网上购物系统具有强大的交互功能,可使商家和用户方便 的传递信息,完成电子贸易或 EDI 交易。这种全新的交易方式实现了公司间文 档与资金的无纸化交换。 现在流行的网上购物系统不仅要有漂亮的网页,更要有严谨的规划。每一 个细小的环节都和重要。这样才能使得在电子交易时避免不必要错误发生。本 系统使用 HTML、JSP 等技术来编辑网页,

3、并运用 Hibernate 技术把数据库和动 态网页相关联。传统的管理信息系统信息获取方法是由专业文字录入人员将信 息输入到管理系统的数据库中,这种方法在数据量不大时有很多的应用场合。当 数据量比较大,并且有较强的专业性时,录入的费用和出错的可能性都相应上升。 本文在实际应用开发中解决方案是建立网站, 以及自己的数据库,使得所需商 品信息可以及时的保存、更新。可以更好的及时了解商品买卖的情况。为此我 根据当前的网上购物情况编写了网上购物系统的设计与开发 。 1.21.2 系统的数据流程图及数据字典系统的数据流程图及数据字典 1.2.1 数据流图 矩形表示实体,椭圆表示处理,平行线表示存储,箭头

4、表示数据流系统的数据 流图如下所示: 2 商 家 会 员 管理商品商品信息 个 体 商 家 网上购物系 统 图 1-1 系统顶层数据流程图 定单信息列表 F7 类别信息 F6 用户信息 F1 留言信息 F2 订单信息 F3 新闻信息列表 F12 留言信息列表 F10 商品信息列表 F9 F9 定单信息列表 F7 新闻信息 F4 游戏类别信息 F5 商品信息 F5 用 户 管 理 员 顾 客 新闻信息列表 F12 用户信息列表 F11 留言信息列表 F10 商品信息列表 F9 类别信息列表 F12 管 理 员 网上 购物 系统 网上 购物 系 统 图 1-2 系统顶层数据流程图详细说明 3 商

5、家 会 员 F5 D2 商品信息 个 人 会 员 F1 D1 个人信息 F9 F11 管 理 员 D1 用户信息 P2 商 品信息 P2 商 品管理 P2 会 员管理 P2 用 户管理 图 1-3 一层数据流程图 具体操作 类型对比 累计 P1 商家 管理 P2.1 库 存管理 P2.2 订 单管理 P5 已经 处理 P2.3 已 经处理 2.4 未处 理 图 1-4 二层商家商品管理数据流程图 4 1.2.2 数据字典 1)数据元素 名称:NAME 别名:用户名 描述:用来标示用户和管理员的用户名 数据类型:VRCHAR2 长度:15 名称:DESCRIPTION 别名:留言内容 描述:用来

6、标示留言的具体内容 类型:TEXT 长度:1000 名称:TYPE 别名:类别 描述:用来标示类别的具体内容 类型:CHAR(1) 长度:15 名称:REGISTERED_TIME 别名:上架时间 描述:用来标示商品的录入时间 类型:TIMESTAMP 长度:15 5 名称:NUMBER 别名:订单数量 描述:用来标示订单的数量 类型:INTEGER 长度:15 名称:TITLE 别名:标题 描述:用来标示新闻的主题 类型:INTEGER 长度:50 2)数据存储 名字:用户信息 描述:纪录用户的个人信息 编号:D1 组成:用户 ID,用户名,密码,用户级别,EMAIL,电话,地址,注册时间,

7、备注 名字:商品信息 描述:纪录商品的属性信息 编号:D2 组成:商品 ID,商品型号,商品类别,是否新品,查看级别,订货件数,订货次数,入库 时间 名字:留言信息 描述:纪录留言的具体信息 编号:D3 组成:留言 ID,留言主题,留言用户,留言时间,留言内容 6 名字:类别信息 描述:纪录类别的设置信息 编号:D4 组成:类别 ID,类别名,所属大区域,该类别商品种类 名字:订单信息 描述:纪录订单的具体信息 编号:D5 组成:订单 ID,订单号,下订单的客户,订货时间,订货具体内容 名字:新闻信息 描述:纪录新闻具体信息 编号:D6 组成:新闻 ID,新闻主题,发布时间,具体内容 3)数据

8、流 名字:用户信息 描述:纪录用户的个人信息 编号:F1 组成:用户 ID,用户名,密码,用户级别,EMAIL,电话,地址,注册时间,备注 名字:留言信息 描述:纪录留言的具体信息 编号:F2 组成:留言 ID,留言主题,留言用户,留言时间,留言内容 名字:订单信息 描述:纪录订单的具体信息 编号:F3 7 组成:订单 ID,订单号,下订单的客户,订货时间,订货具体内容 名字:新闻信息 描述:纪录新闻具体信息 编号:F4 组成:新闻 ID,新闻主题,发布时间,具体内容 名字:商品信息 描述:纪录商品的属性信息 编号:F5 组成:商品 ID,商品型号,商品类别,是否新品,查看级别,订货件数,订货

9、次数,入库 时间 名字:类别信息 描述:纪录类别的设置信息 编号:F6 组成:类别 ID,类别名,所属大区域,该类别商品种类 4)数据处理 名字:用户管理 描述:管理员对管理员和用户信息的添加,删改等 编号:P1 输入/输出数据流:用户或管理员基本信息 名字:商品管理 描述:管理员对商品信息的添加,删改等 编号:P2 输入/输出数据流:商品基本信息 8 名字:留言管理 描述:管理员对留言信息的添加,删改等 编号:P3 输入/输出数据流:留言信息 名字:类别管理 描述:管理员对类别信息的添加,删改等 编号:P4 输入/输出数据流:类别基本信息 名字:订单管理 描述:管理员对订单信息的删改等 编号

10、:P5 输入/输出数据流:订单基本信息 名字:新闻管理 描述:管理员对新闻信息的添加,删改等 编号:P6 输入/输出数据流:新闻基本信息 1.3E-R1.3E-R 图图 9 图 1-5 前台用户局部 E-R 图 图 1-6 后台管理员局部 E-R 图 10 2.概要设计概要设计 2.12.1 主要功能主要功能 该系统的目标可以实现用户通过网络选购自己喜欢的商品,而且还可以为 其进行邮寄。保证产品质量,信息安全,提供最好服务1,系统的主要功能如 下: 1 查看产品信息 用户可以根据自己的需求分类查看所有产品信息,选择自己喜欢的产品购 买。 2 查看新闻 用户可以查看网站的所有新闻,新闻内容包括商

11、品厂商的信息,以及新产 品的发布信息等,以方便用户更直观的了解产品动向及信息。 3 填写订单 用户填写要购买商品的信息到订单中去,并可以删除已填写但最终不想购 买的产品。 2.22.2 模块定义模块定义 用户管理自然是每个网站必不可少的,在本系统中,要求这部分管理安全 可靠,权限分明,且其在前台和后台的表现不同,下面将分别进行介绍。 1)前台表现 用户注册,此时要保证系统不受注册机的攻击,要采用验证码技术。要确 保权限为普通用户,要有密码保护措施,保证用户设定之后可以找回遗忘的密 码。 2)后台表现 系统管理员可以添加用户。系统管理员可以动态的给用户赋予权限,保证 系统信息不外泄。系统管理员可

12、以修改和删除用户信息。系统管理员可以给用 户建立备注信息,其仅对具有权限的用户可以进行信息的检查与修改。 11 2.32.3 体系结构设计体系结构设计 网上购物系统 登 录 模 块 新 闻 发 布 模 块 注 册 模 块 购 物 车 模 块 订 单 模 块 商 品 管 理 模 块 用 户 管 理 模 块 留 言 评 价 模 块 3.详细设计详细设计 3.13.1 详细设计说明书详细设计说明书 网上购物系统网上购物系统 客客 户户 注注 册册 系系 统统 客户登陆系统客户登陆系统 选选 购购 物物 品品 查查 询询 选选 购购 记记 录录 会会 员员 注注 销销 管理员登陆系统管理员登陆系统 订

13、订 单单 处处 理理 会会 员员 管管 理理 物物 品品 入入 库库 管管 理理 员员 注注 销销 会会 员员 修修 改改 资资 料料 12 3.23.2 数据库设计数据库设计 物品表(物品编号,物品名,价格) ,主键为物品编号,符合三范式。 客户表(客户编号,姓名,性别,购买记录,购买信誉) ,主键为客户编号, 符合三范式。 表 3-1 物品表 book 表 3-2 客户表 Member 3.33.3 程序流程图程序流程图 用户登录流程图 列名列名含义含义长度长度类型类型 NULLNULLDEFAULTDEFAULT Bno 物品编号 10Char()nono bname 物品名称 15Ch

14、ar()nono price 价格 8Char()nono 列名列名含义含义长度长度类型类型 NULLNULLDEFAULTDEFAULT Mno 客户编号 15Char()nono Mname 客户姓名 15Char()nono sex 客户性别 5Char()nono record 购买记录 15Char()nono Credit 购买信誉 15Char()nono 13 物品搜索流程图 14 3.43.4 输入项目输入项目 输入本系统中的数据如下所示: 1)用户信息需要有用户亲自注册,管理员帐号由系统自动生成。 2)产品信息需要有管理员手动进行添加。 3)留言标题、内容由用户输入,留言者

15、、留言时间由系统自动检验生 成。 4)新闻标题、英文标题、内容、英文内容由管理员添加,发布时间由 系统自动检验生成。 5)订单信息需要由用户填写。 4.程序源码程序源码 import java.util.*; import java.awt.event.*; import java.awt.*; import javax.swing.*; import java.io.*; class 商品 extends Panel String 代号,名称;int 库存;float 单价; 商品(String 代号,String 名称,int 库存,float 单价) this.代号=代号;this.名称

16、=名称;this.库存=库存;this.单价=单价; class ShowWin extends JFrame implements ActionListener Hashtable hashtable=null; JTextField 代号文本框=new JTextField(), 名称文本框=new JTextField(), 15 库存文本框=new JTextField(), 单价文本框=new JTextField(), 查询文本框=new JTextField(), 查询信息文本框=new JTextField(), 删除文本框=new JTextField(); JButton

17、b_add=new JButton(“添加商品“), b_del=new JButton(“删除商品“), b_xun=new JButton(“查询商品“), b_xiu=new JButton(“修改商品“), b_show=new JButton(“显示商品清单“); JTextArea 显示区=new JTextArea(25,10); ShowWin() super(“仓库管理窗口“); hashtable=new Hashtable(); Container con=getContentPane(); JScrollPane pane=new JScrollPane(显示区); 显

18、示区.setEditable(false); JPanel save=new JPanel(); save.setLayout(new GridLayout(8,2); save.add(new Label(“输入代号:“); save.add(代号文本框); save.add(new Label(“输入名称:“); save.add(名称文本框); save.add(new Label(“输入库存:“); save.add(库存文本框); save.add(new Label(“输入单价:“); save.add(单价文本框); save.add(new Label(“单击添加:“); sa

19、ve.add(b_add); 16 save.add(new Label(“单击修改:“); save.add(b_xiu); save.add(new Label(“输入查询代号:“); save.add(查询文本框); save.add(new Label(“单击查询:“); save.add(b_xun); JPanel del=new JPanel(); del.setLayout(new GridLayout(2,2); del.add(new Label(“输入删除的代号:“); del.add(删除文本框); del.add(new Label(“单击删除:“); del.add

20、(b_del); JPanel show=new JPanel(); show.setLayout(new BorderLayout(); show.add(pane,BorderLayout.CENTER); show.add(b_show,BorderLayout.SOUTH); JSplitPane split_one,split_two; split_one=new JSplitPane(JSplitPane.VERTICAL_SPLIT,save,del); split_two=new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,true,split

21、_one,show); con.add(split_two,BorderLayout.CENTER); JPanel xun=new JPanel(); xun.add(new Label(“所得信息:“); xun.add(查询信息文本框); xun.setLayout(new GridLayout(2,1); con.add(xun,BorderLayout.SOUTH); b_add.addActionListener(this); b_del.addActionListener(this); b_xun.addActionListener(this); 17 b_xiu.addActi

22、onListener(this); b_show.addActionListener(this); public void actionPerformed(ActionEvent e) if(e.getSource()=b_add) String daihao=null,mingcheng=null;int kucun=0;float danjia=0.0f; daihao=代号文本框.getText();mingcheng=名称文本框.getText(); kucun=Integer.parseInt(库存文本框.getText(); danjia=Float.valueOf(单价文本框.g

23、etText().floatValue(); 商品 goods=new 商品(daihao,mingcheng,kucun,danjia); hashtable.put(daihao,goods); tryFileOutputStream file=new FileOutputStream(“goods.txt“); ObjectOutputStream out=new ObjectOutputStream(file); out.writeObject(hashtable); out.close(); catch(IOException event) else if(e.getSource()

24、=b_del) String daihao1=删除文本框.getText(); tryFileInputStream come_in=new FileInputStream(“goods.txt“); ObjectInputStream in=new ObjectInputStream(come_in); hashtable=(Hashtable)in.readObject(); / in.close(); catch(ClassNotFoundException event) catch(IOException event) 商品 temp=(商品)hashtable.get(daihao1

25、); hashtable.remove(daihao1); tryFileOutputStream file=new FileOutputStream(“goods.txt“); 18 ObjectOutputStream out =new ObjectOutputStream(file); out.writeObject(hashtable);/ out.close(); catch(IOException event) / else if(e.getSource()=b_xun) String aa; aa=查询文本框.getText(); 查询信息文本框.setText(null); t

26、ryFileInputStream come_in=new FileInputStream(“goods.txt“); ObjectInputStream in =new ObjectInputStream(come_in); hashtable=(Hashtable)in.readObject(); / in.close(); catch(ClassNotFoundException event) catch(IOException event) 商品 a=(商品)hashtable.get(aa); 查询信息文本框.setText(“ 代号:“+a.代号+“ 名称:“+a.名称+“ 库存:

27、 “+a.库存+“ 单价:“+a.单价); / else if(e.getSource()=b_xiu) String bb; bb=代号文本框.getText(); tryFileInputStream come_in=new FileInputStream(“goods.txt“); ObjectInputStream in=new ObjectInputStream(come_in); hashtable=(Hashtable)in.readObject(); / 19 in.close(); catch(ClassNotFoundException event) catch(IOExc

28、eption event) 商品 temp=(商品)hashtable.get(bb); hashtable.remove(bb); tryFileOutputStream file=new FileOutputStream(“goods.txt“); ObjectOutputStream out =new ObjectOutputStream(file); out.writeObject(hashtable);/ out.close(); catch(IOException event) String daihao1=null,mingcheng1=null;int kucun1=0;flo

29、at danjia1=0.0f; daihao1=代号文本框.getText();mingcheng1=名称文本框.getText(); kucun1=Integer.parseInt(库存文本框.getText(); danjia1=Float.valueOf(单价文本框.getText().floatValue(); 商品 goods1=new 商品(daihao1,mingcheng1,kucun1,danjia1); hashtable.put(daihao1,goods1); tryFileOutputStream file=new FileOutputStream(“goods.t

30、xt“); ObjectOutputStream out=new ObjectOutputStream(file); out.writeObject(hashtable); out.close(); catch(IOException event) / else if(e.getSource()=b_show) 显示区.setText(null); 20 tryFileInputStream come_in=new FileInputStream(“goods.txt“); ObjectInputStream in =new ObjectInputStream(come_in); hashta

31、ble=(Hashtable)in.readObject(); / catch(ClassNotFoundException event) catch(IOException event) Enumeration Enumeration = hashtable.elements(); while(Enumeration.hasMoreElements() 商品 te=(商品)Enumeration.nextElement(); 显示区.append(“商品代号:“+te.代号+“ “); 显示区.append(“商品名称:“+te.名称+“ “); 显示区.append(“商品库存:“+te.

32、库存+“ “); 显示区.append(“商品单价:“+te.单价+“ “); 显示区.append(“n “); public class LinkListFour public static void main(String args) ShowWin win=new ShowWin(); win.setSize(400,350); win.setVisible(true); win.addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) System.exit(0);); 21 5.程序

33、运行与调试程序运行与调试 5.15.1 模块测试模块测试 在模块测试时我们主要从以下几个方面考虑: 1. 模块接口; 2. 局部数据结构; 3. 重要执行通道; 4. 出错处理通道; 5. 影响上述方面的边界条件。 测试时进行代码审查,从数据类型,变量声明,数据结构进行审查,然后 进行功能测试,从输入一些简单的数据开始执行一遍,观测运行期间变量的变 化,运行中值的变化范围。改变测试方案来变换另一个角度进行测试,发现错 误并记录,修改代码,测试条件使程序通过多层分支,判别运行结果从而完成 模块测试。 部分测试结果如图部分测试结果如图 主界面主界面 22 添加商品添加商品 查询商品查询商品 23

34、5.25.2 总体测试总体测试 总体测试是组装软件的系统技术,本系统测试采用渐增集成测试,即测试 单一模块,将测试完的模块加入系统中,进行一次系统测试,依次类推将所有 模块加入系统中,在具体测试时,采用自顶向下的结合方式,从主控模块开始, 沿各控制层向下移动,逐渐把所有模块结合了。 在测试过程中使用到调试技术: 1. 采用 debug 调试语句,跟踪数据; 2. 嵌入打印语句,输出中间结果; 3. 利用 Delphi 7.0 中调试工具,从调试窗口观测变量的变化; 4. 设置断点,观察程序在断点附近的状况。 6.总结总结 这次课程设计让我认识到软件工程方法对项目开发的重要性和必要性,知 24

35、道可以使得软件开发少走弯路,更容易开发出高质量的项目开发。按照软件工 程的方法、软件的开发需要严格遵守其开发流程,作好软件设计的每一个流程。 由于以前没有系统的学习过软件工程的相关知识,只学过 C/C+语言、 数据结构等课程,因此在我的头脑里,做软件就是写代码,水平高的人写大型 的、复杂的代码,水平低的人编的简单一些,所以总觉得软件工程没有什么太 多实际的价值。然而,在逐步的学习过程中,特别是在结合本门课程和同学一 起开发一个较为大型的软件中,我深深感受到了软件工程在开发过程中的指导 作用。软件工程,重点在工程两字上,也就是把软件的开发当作一个工程项目 运用工程的方法来实施,从可行性分析、需求

36、分析直到最后的测试、交付以及 以后的维护,每一个过程都有自己的一套方法。工程经常是和实践联系在一起 的,软件工程只有在实际的软件开发中才能更深的体会到它的作用。 由于时间仓促,此系统仍存在一些不足,文档不够详尽,导致标准不统一。 设计仍有不太合理处,需要进行完善性维护。 衷心感谢老师给予我们这次机会,让我们对软件的开发过程还是对程序的编写 步骤都有了更加深刻的认识。 7.参考文献参考文献 1 郑人杰、殷人昆、陶永雷 , 实用软件工程 ,清华大学出版社 ,2005 年 5 月 2 张海藩 , 软件工程导论 ,清华大学出版社,2000 年 1 月 3计算机软件工程规范国家标准汇编 2003中国标准出版社 4项目管理计划、进度和控制的系统方法 (第 7 版)Harold Kerzner(电 子工业出版社,杨爱华等译)

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

当前位置:首页 > 研究报告 > 信息产业


经营许可证编号:宁ICP备18001539号-1