软件工程课程设计网上购物Word格式.docx
- 文档编号:19380080
- 上传时间:2023-01-05
- 格式:DOCX
- 页数:23
- 大小:174.73KB
软件工程课程设计网上购物Word格式.docx
《软件工程课程设计网上购物Word格式.docx》由会员分享,可在线阅读,更多相关《软件工程课程设计网上购物Word格式.docx(23页珍藏版)》请在冰豆网上搜索。
REGISTERED_TIME
别名:
上架时间
描述:
用来标示商品的录入时间
类型:
TIMESTAMP
长度:
15
NAME
用户名
用来标示用户和管理员的用户名
数据类型:
VRCHAR2
DESCRIPTION
留言内容
用来标示留言的具体内容
TEXT
1000
TYPE
类别
用来标示类别的具体内容
CHAR
(1)
NUMBER
订单数量
用来标示订单的数量
INTEGER
15
TITLE
标题
用来标示新闻的主题
50
2)数据存储
名字:
用户信息
纪录用户的个人信息
编号:
D1
组成:
用户ID,用户名,密码,用户级别,EMAIL,电话,地址,注册时间,备注
商品信息
纪录商品的属性信息
D2
商品ID,商品型号,商品类别,是否新品,查看级别,订货件数,订货次数,入库时间
留言信息
纪录留言的具体信息
D3
留言ID,留言主题,留言用户,留言时间,留言内容
类别信息
纪录类别的设置信息
D4
类别ID,类别名,所属大区域,该类别商品种类
订单信息
纪录订单的具体信息
D5
订单ID,订单号,下订单的客户,订货时间,订货具体内容
新闻信息
纪录新闻具体信息
D6
新闻ID,新闻主题,发布时间,具体内容
3)数据流
F1
F2
F3
F4
F5
F6
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
列名
含义
长度
NULL
DEFAULT
Bno
物品编号
10
Char()
no
bname
物品名称
price
价格
8
表3-2客户表Member
Mno
客户编号
Mname
客户姓名
sex
客户性别
5
record
购买记录
Credit
购买信誉
3.3程序流程图
用户登录流程图
物品搜索流程图
3.4输入项目
输入本系统中的数据如下所示:
1)用户信息需要有用户亲自注册,管理员帐号由系统自动生成。
2)产品信息需要有管理员手动进行添加。
3)留言标题、内容由用户输入,留言者、留言时间由系统自动检验生成。
4)新闻标题、英文标题、内容、英文内容由管理员添加,发布时间由系统自动检验生成。
5)订单信息需要由用户填写。
4.程序源码
importjava.util.*;
importjava.awt.event.*;
importjava.awt.*;
importjavax.swing.*;
importjava.io.*;
class商品extendsPanel
{String代号,名称;
int库存;
float单价;
商品(String代号,String名称,int库存,float单价)
{this.代号=代号;
this.名称=名称;
this.库存=库存;
this.单价=单价;
}
classShowWinextendsJFrameimplementsActionListener
{Hashtablehashtable=null;
JTextField代号文本框=newJTextField(),
名称文本框=newJTextField(),
库存文本框=newJTextField(),
单价文本框=newJTextField(),
查询文本框=newJTextField(),
查询信息文本框=newJTextField(),
删除文本框=newJTextField();
JButtonb_add=newJButton("
添加商品"
),
b_del=newJButton("
删除商品"
b_xun=newJButton("
查询商品"
b_xiu=newJButton("
修改商品"
b_show=newJButton("
显示商品清单"
);
JTextArea显示区=newJTextArea(25,10);
ShowWin()
{super("
仓库管理窗口"
hashtable=newHashtable();
Containercon=getContentPane();
JScrollPanepane=newJScrollPane(显示区);
显示区.setEditable(false);
JPanelsave=newJPanel();
save.setLayout(newGridLayout(8,2));
save.add(newLabel("
输入代号:
"
));
save.add(代号文本框);
输入名称:
save.add(名称文本框);
输入库存:
save.add(库存文本框);
输入单价:
save.add(单价文本框);
单击添加:
save.add(b_add);
单击修改:
save.add(b_xiu);
输入查询代号:
save.add(查询文本框);
单击查询:
save.add(b_xun);
JPaneldel=newJPanel();
del.setLayout(newGridLayout(2,2));
del.add(newLabel("
输入删除的代号:
del.add(删除文本框);
单击删除:
del.add(b_del);
JPanelshow=newJPanel();
show.setLayout(newBorderLayout());
show.add(pane,BorderLayout.CENTER);
show.add(b_show,BorderLayout.SOUTH);
JSplitPanesplit_one,split_two;
split_one=newJSplitPane(JSplitPane.VERTICAL_SPLIT,save,del);
split_two=new
JSplitPane(JSplitPane.HORIZONTAL_SPLIT,true,split_one,show);
con.add(split_two,BorderLayout.CENTER);
JPanelxun=newJPanel();
xun.add(newLabel("
所得信息:
xun.add(查询信息文本框);
xun.setLayout(newGridLayout(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);
publicvoidactionPerformed(ActionEvente)
{if(e.getSource()==b_add)
{Stringdaihao=null,mingcheng=null;
intkucun=0;
floatdanjia=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);
try{("
goods.txt"
ObjectOutputStreamout=newObjectOutputStream(file);
out.writeObject(hashtable);
out.close();
catch(IOExceptionevent){}
elseif(e.getSource()==b_del)
{Stringdaihao1=删除文本框.getText();
try{come_in=new("
ObjectInputStreamin=newObjectInputStream(come_in);
hashtable=(Hashtable)in.readObject();
//////
in.close();
catch(ClassNotFoundExceptionevent){}
商品temp=(商品)hashtable.get(daihao1);
{hashtable.remove(daihao1);
ObjectOutputStreamout=newObjectOutputStream(file);
//
out.close();
elseif(e.getSource()==b_xun)
{Stringaa;
aa=查询文本框.getText();
查询信息文本框.setText(null);
ObjectInputStreamin=newObjectInputStream(come_in);
////
商品a=(商品)hashtable.get(aa);
查询信息文本框.setText("
代号:
+a.代号+"
名称:
+a.名称+"
库存:
+a.库存+"
单价:
+a.单价);
elseif(e.getSource()==b_xiu)
{Stringbb;
bb=代号文本框.getText();
商品temp=(商品)hashtable.get(bb);
{hashtable.remove(bb);
Stringdaihao1=null,mingcheng1=null;
intkucun1=0;
floatdanjia1=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);
elseif(e.getSource()==b_show)
{显示区.setText(null);
EnumerationEnumeration=hashtable.elements();
while(Enumeration.hasMoreElements())
{商品te=(商品)Enumeration.nextElement();
显示区.append("
商品代号:
+te.代号+"
"
商品名称:
+te.名称+"
商品库存:
+te.库存+"
商品单价:
+te.单价+"
\n"
publicclassLinkListFour
{publicstaticvoidmain(Stringargs[])
{ShowWinwin=newShowWin();
win.setSize(400,350);
win.setVisible(true);
win.addWindowListener(newWindowAdapter()
{publicvoidwindowClosing(WindowEvente)
{System.exit(0);
}});
}
5.程序运行与调试
5.1模块测试
在模块测试时我们主要从以下几个方面考虑:
1.模块接口;
2.局部数据结构;
3.重要执行通道;
4.出错处理通道;
5.影响上述方面的边界条件。
测试时进行代码审查,从数据类型,变量声明,数据结构进行审查,然后进行功能测试,从输入一些简单的数据开始执行一遍,观测运行期间变量的变化,运行中值的变化范围。
改变测试方案来变换另一个角度进行测试,发现错误并记录,修改代码,测试条件使程序通过多层分支,判别运行结果从而完成模块测试。
部分测试结果如图
主界面
添加商品
查询商品
5.2总体测试
总体测试是组装软件的系统技术,本系统测试采用渐增集成测试,即测试单一模块,将测试完的模块加入系统中,进行一次系统测试,依次类推将所有模块加入系统中,在具体测试时,采用自顶向下的结合方式,从主控模块开始,沿各控制层向下移动,逐渐把所有模块结合了。
在测试过程中使用到调试技术:
1.采用debug调试语句,跟踪数据;
2.嵌入打印语句,输出中间结果;
3.利用Delphi7.0中调试工具,从调试窗口观测变量的变化;
4.设置断点,观察程序在断点附近的状况。
6.总结
这次课程设计让我认识到软件工程方法对项目开发的重要性和必要性,知道可以使得软件开发少走弯路,更容易开发出高质量的项目开发。
按照软件工程的方法、软件的开发需要严格遵守其开发流程,作好软件设计的每一个流程。
由于以前没有系统的学习过软件工程的相关知识,只学过C/C++语言、数据结构等课程,因此在我的头脑里,做软件就是写代码,水平高的人写大型的、复杂的代码,水平低的人编的简单一些,所以总觉得软件工程没有什么太多实际的价值。
然而,在逐步的学习过程中,特别是在结合本门课程和同学一起开发一个较为大型的软件中,我深深感受到了软件工程在开发过程中的指导作用。
软件工程,重点在工程两字上,也就是把软件的开发当作一个工程项目运用工程的方法来实施,从可行性分析、需求分析直到最后的测试、交付以及以后的维护,每一个过程都有自
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 课程设计 网上 购物