软件工程课程设计网上购物(共26页)

上传人:4**** 文档编号:55763744 上传时间:2022-02-18 格式:DOC 页数:26 大小:197KB
返回 下载 相关 举报
软件工程课程设计网上购物(共26页)_第1页
第1页 / 共26页
软件工程课程设计网上购物(共26页)_第2页
第2页 / 共26页
软件工程课程设计网上购物(共26页)_第3页
第3页 / 共26页
点击查看更多>>
资源描述
精选优质文档-倾情为你奉上软件工程课程设计报告专心-专注-专业目录 1.设计内容1.1问题概述网上购物是一种具有交互功能的商业信息系统。它向用户提供静态和动态两类信息资源。所谓静态信息是指那些比经常变动或更新的资源,如公司简介、管理规范和公司制度等等;动态信息是指随时变化的信息,如商品报价,会议安排和培训信息等。网上购物系统具有强大的交互功能,可使商家和用户方便的传递信息,完成电子贸易或EDI交易。这种全新的交易方式实现了公司间文档与资金的无纸化交换。现在流行的网上购物系统不仅要有漂亮的网页,更要有严谨的规划。每一个细小的环节都和重要。这样才能使得在电子交易时避免不必要错误发生。本系统使用HTML、JSP等技术来编辑网页,并运用Hibernate技术把数据库和动态网页相关联。传统的管理信息系统信息获取方法是由专业文字录入人员将信息输入到管理系统的数据库中,这种方法在数据量不大时有很多的应用场合。当数据量比较大,并且有较强的专业性时,录入的费用和出错的可能性都相应上升。本文在实际应用开发中解决方案是建立网站, 以及自己的数据库,使得所需商品信息可以及时的保存、更新。可以更好的及时了解商品买卖的情况。为此我根据当前的网上购物情况编写了网上购物系统的设计与开发。1.2系统的数据流程图及数据字典1.2.1数据流图矩形表示实体,椭圆表示处理,平行线表示存储,箭头表示数据流系统的数据流图如下所示:商家会员管理商品商品信息个体商家网上购物系统图1-1系统顶层数据流程图定单信息列表F7类别信息F6用户信息F1留言信息F2订单信息F3新闻信息列表F12留言信息列表F10商品信息列表F9F9定单信息列表F7新闻信息F4游戏类别信息F5商品信息F5用户管理员顾客新闻信息列表F12用户信息列表F11留言信息列表F10商品信息列表F9类别信息列表F12管理员网上购物系统网上购物系 统图1-2系统顶层数据流程图详细说明商家会员F5D2 商品信息个人会员F1D1 个人信息F9F11管理员D1 用户信息P2商品信息P2商品管理P2会员管理P2用户管理图1-3 一层数据流程图具体操作类型对比累计P1商家管理P2.1库存管理P2.2订单管理P5已经处理P2.3已经处理2.4未处理图1-4 二层商家商品管理数据流程图1.2.2数据字典1)数据元素名称:REGISTERED_TIME 别名:上架时间 描述:用来标示商品的录入时间 类型:TIMESTAMP 长度:15 名称:NAME 别名:用户名 描述:用来标示用户和管理员的用户名数据类型:VRCHAR2 长度:15 名称:DESCRIPTION别名:留言内容 描述:用来标示留言的具体内容类型:TEXT 长度:1000名称:TYPE别名:类别 描述:用来标示类别的具体内容 类型:CHAR(1) 长度:15 名称:NUMBER 别名:订单数量 描述:用来标示订单的数量类型:INTEGER 长度:15名称:TITLE 别名:标题 描述:用来标示新闻的主题类型:INTEGER 长度:502)数据存储名字:用户信息描述:纪录用户的个人信息编号:D1组成:用户ID,用户名,密码,用户级别,EMAIL,电话,地址,注册时间,备注名字:商品信息描述:纪录商品的属性信息编号:D2组成:商品ID,商品型号,商品类别,是否新品,查看级别,订货件数,订货次数,入库时间名字:留言信息描述:纪录留言的具体信息编号:D3组成:留言ID,留言主题,留言用户,留言时间,留言内容名字:类别信息描述:纪录类别的设置信息编号:D4组成:类别ID,类别名,所属大区域,该类别商品种类名字:订单信息描述:纪录订单的具体信息编号:D5组成:订单ID,订单号,下订单的客户,订货时间,订货具体内容名字:新闻信息描述:纪录新闻具体信息编号:D6组成:新闻ID,新闻主题,发布时间,具体内容3)数据流名字:用户信息描述:纪录用户的个人信息编号:F1组成:用户ID,用户名,密码,用户级别,EMAIL,电话,地址,注册时间,备注名字:留言信息描述:纪录留言的具体信息编号:F2组成:留言ID,留言主题,留言用户,留言时间,留言内容名字:订单信息描述:纪录订单的具体信息编号:F3组成:订单ID,订单号,下订单的客户,订货时间,订货具体内容名字:新闻信息描述:纪录新闻具体信息编号:F4组成:新闻ID,新闻主题,发布时间,具体内容名字:商品信息描述:纪录商品的属性信息编号:F5组成:商品ID,商品型号,商品类别,是否新品,查看级别,订货件数,订货次数,入库时间名字:类别信息描述:纪录类别的设置信息编号:F6组成:类别ID,类别名,所属大区域,该类别商品种类4)数据处理名字:用户管理描述:管理员对管理员和用户信息的添加,删改等编号:P1输入/输出数据流:用户或管理员基本信息 名字:商品管理描述:管理员对商品信息的添加,删改等编号:P2输入/输出数据流:商品基本信息 名字:留言管理描述:管理员对留言信息的添加,删改等编号:P3输入/输出数据流:留言信息 名字:类别管理描述:管理员对类别信息的添加,删改等编号:P4输入/输出数据流:类别基本信息 名字:订单管理描述:管理员对订单信息的删改等编号:P5输入/输出数据流:订单基本信息 名字:新闻管理描述:管理员对新闻信息的添加,删改等编号:P6输入/输出数据流:新闻基本信息 1.3E-R图 图1-5 前台用户局部E-R图 图1-6 后台管理员局部E-R图2.概要设计2.1主要功能该系统的目标可以实现用户通过网络选购自己喜欢的商品,而且还可以为其进行邮寄。保证产品质量,信息安全,提供最好服务1,系统的主要功能如下:1查看产品信息用户可以根据自己的需求分类查看所有产品信息,选择自己喜欢的产品购买。2查看新闻用户可以查看网站的所有新闻,新闻内容包括商品厂商的信息,以及新产品的发布信息等,以方便用户更直观的了解产品动向及信息。3填写订单用户填写要购买商品的信息到订单中去,并可以删除已填写但最终不想购买的产品。2.2模块定义用户管理自然是每个网站必不可少的,在本系统中,要求这部分管理安全可靠,权限分明,且其在前台和后台的表现不同,下面将分别进行介绍。1)前台表现用户注册,此时要保证系统不受注册机的攻击,要采用验证码技术。要确保权限为普通用户,要有密码保护措施,保证用户设定之后可以找回遗忘的密码。2)后台表现系统管理员可以添加用户。系统管理员可以动态的给用户赋予权限,保证系统信息不外泄。系统管理员可以修改和删除用户信息。系统管理员可以给用户建立备注信息,其仅对具有权限的用户可以进行信息的检查与修改。2.3体系结构设计网上购物系统登录模块新闻发布模块注册模块购物车模块订单模块商品管理模块用户管理模块留言评价模块3.详细设计3.1详细设计说明书网上购物系统 管理员登陆系统客户登陆系统客户注册系统管理员注销物品入库会员管理订单处理会员注销查询选购记录选购物品会员修改资料 3.2数据库设计 物品表(物品编号,物品名,价格),主键为物品编号,符合三范式。客户表(客户编号,姓名,性别,购买记录,购买信誉),主键为客户编号,符合三范式。表3-1 物品表book列名含义长度类型NULLDEFAULTBno物品编号10Char()nonobname物品名称15Char()nonoprice价格8Char()nono表3-2 客户表Member列名含义长度类型NULLDEFAULTMno客户编号15Char()nonoMname客户姓名15Char()nonosex客户性别5Char()nonorecord购买记录15Char()nonoCredit购买信誉15Char()nono3.3 程序流程图 用户登录流程图 物品搜索流程图3.4输入项目输入本系统中的数据如下所示:1)用户信息需要有用户亲自注册,管理员帐号由系统自动生成。2)产品信息需要有管理员手动进行添加。3)留言标题、内容由用户输入,留言者、留言时间由系统自动检验生成。4)新闻标题、英文标题、内容、英文内容由管理员添加,发布时间由系统自动检验生成。 5)订单信息需要由用户填写。4.程序源码import java.util.*;import java.awt.event.*;import java.awt.*;import javax.swing.*;import java.io.*;class 商品 extends PanelString 代号,名称;int 库存;float 单价;商品(String 代号,String 名称,int 库存,float 单价)this.代号=代号;this.名称=名称;this.库存=库存;this.单价=单价;class ShowWin extends JFrame implements ActionListener Hashtable hashtable=null;JTextField 代号文本框=new JTextField(),名称文本框=new JTextField(),库存文本框=new JTextField(),单价文本框=new JTextField(),查询文本框=new JTextField(),查询信息文本框=new JTextField(),删除文本框=new JTextField();JButton 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(显示区);显示区.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(单击添加:);save.add(b_add);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(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=newJSplitPane(JSplitPane.HORIZONTAL_SPLIT,true,split_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);b_xiu.addActionListener(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(单价文本框.getText().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()=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);hashtable.remove(daihao1);tryFileOutputStream file=new FileOutputStream(goods.txt);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);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)商品 a=(商品)hashtable.get(aa);查询信息文本框.setText( 代号:+a.代号+ 名称:+a.名称+ 库存:+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(); /in.close();catch(ClassNotFoundException event)catch(IOException 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;float 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.txt);ObjectOutputStream out=new ObjectOutputStream(file);out.writeObject(hashtable); out.close();catch(IOException event)/else if(e.getSource()=b_show) 显示区.setText(null);tryFileInputStream come_in=new FileInputStream(goods.txt);ObjectInputStream in =new ObjectInputStream(come_in);hashtable=(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.库存+ );显示区.append(商品单价:+te.单价+ );显示区.append(n );public class LinkListFourpublic 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);); 5.程序运行与调试5.1模块测试在模块测试时我们主要从以下几个方面考虑:1. 模块接口;2. 局部数据结构;3. 重要执行通道;4. 出错处理通道;5. 影响上述方面的边界条件。测试时进行代码审查,从数据类型,变量声明,数据结构进行审查,然后进行功能测试,从输入一些简单的数据开始执行一遍,观测运行期间变量的变化,运行中值的变化范围。改变测试方案来变换另一个角度进行测试,发现错误并记录,修改代码,测试条件使程序通过多层分支,判别运行结果从而完成模块测试。部分测试结果如图主界面添加商品查询商品5.2总体测试总体测试是组装软件的系统技术,本系统测试采用渐增集成测试,即测试单一模块,将测试完的模块加入系统中,进行一次系统测试,依次类推将所有模块加入系统中,在具体测试时,采用自顶向下的结合方式,从主控模块开始,沿各控制层向下移动,逐渐把所有模块结合了。在测试过程中使用到调试技术:1. 采用debug调试语句,跟踪数据;2. 嵌入打印语句,输出中间结果;3. 利用Delphi 7.0中调试工具,从调试窗口观测变量的变化;4. 设置断点,观察程序在断点附近的状况。6.总结这次课程设计让我认识到软件工程方法对项目开发的重要性和必要性,知道可以使得软件开发少走弯路,更容易开发出高质量的项目开发。按照软件工程的方法、软件的开发需要严格遵守其开发流程,作好软件设计的每一个流程。 由于以前没有系统的学习过软件工程的相关知识,只学过C/C+语言、数据结构等课程,因此在我的头脑里,做软件就是写代码,水平高的人写大型的、复杂的代码,水平低的人编的简单一些,所以总觉得软件工程没有什么太多实际的价值。然而,在逐步的学习过程中,特别是在结合本门课程和同学一起开发一个较为大型的软件中,我深深感受到了软件工程在开发过程中的指导作用。软件工程,重点在工程两字上,也就是把软件的开发当作一个工程项目运用工程的方法来实施,从可行性分析、需求分析直到最后的测试、交付以及以后的维护,每一个过程都有自己的一套方法。工程经常是和实践联系在一起的,软件工程只有在实际的软件开发中才能更深的体会到它的作用。 由于时间仓促,此系统仍存在一些不足,文档不够详尽,导致标准不统一。设计仍有不太合理处,需要进行完善性维护。衷心感谢老师给予我们这次机会,让我们对软件的开发过程还是对程序的编写步骤都有了更加深刻的认识。7.参考文献1 郑人杰、殷人昆、陶永雷 ,实用软件工程,清华大学出版社 ,2005年5月 2 张海藩 ,软件工程导论,清华大学出版社,2000 年1月3计算机软件工程规范国家标准汇编2003中国标准出版社4项目管理计划、进度和控制的系统方法(第7版)Harold Kerzner(电子工业出版社,杨爱华等译)
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 教学培训


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!