(图放不上去呀 我自己做的E-R图)
计算机科学与信息学院
课程设计报告
课程名称: 数据库概论课程设计
专 业: 网络方向
班 级: ====
学 号: ===
姓 名: 闫娟
题 目: 网上购书系统
指导教师: 肖淑芬
2011年6月
目录
一、课程设计的背景来源 3
二、网上购书系统调查及前景 4
三、网上购书设计思想 4
1、前台系统工作流程 5
2、后台系统工作流程 6
四、网上书店工作过程的内容 6
五、数据库设计 7
1、数据项 7
2、 数据结构 8
3、关系模式的设计 8
4、视图的设计 9
六、网上购书E-R图 10
六、系统的源程序 15
七、系统评价及心得体会 20
一、课程设计的背景来源
1,其实写这个课程设计写得比较匆忙,马上其他可就要考试了,本想找个男的题目来挑战下自己,后来还是因为时间需要,所以选了个相对来说我们生活比较容易接近的
2,随着现在社会的发展,网络已经成为一个市场很大的交易平台,很多人由于时间需要或者各方面原因都把网上购物作为一种消费方式,有时我们在书店要花很长时间去找一本书,有时还找不到,记得有次在孝感学院图书馆找一本概率论辅导书,花了很长很长时间呀,所以我深有体会,还是感觉在网上购书比较简单,方便。
3,班上有很多同学都从事网上购物,我刚好想利用自己的专业知识来学习下这方面的知识,自己查查资料,把这个课程设计做好。
二、网上购书系统调查及前景
人们喜欢通过阅览书籍拓展自己的知识视野,可在实际生活的购书过程中人们却遇到了不少麻烦,比如购书人多,挑书难,搬书重等,因此既方便又快捷的网络购书便成为了一种很有潜力的购书消费方式。信息时代,电子商务已经成为我们现实生活中不可缺少的一个重要组成部分,同时它以一种特殊的方式改变着我们的生活。根据调查结果显示,网民上网以获取信息为主要目的占5 31%。目前我国上网购物的群体中,绝大多数是年轻人, 他们大多数是收入稳定、文化水平较高的中青年,网上消费已经日益成为他们生活中的一种重要的消费方式,他们成为了最有潜力的未来网上消费者。
三、网上购书设计思想
首先网上购书系统听起来是个很杂的程序,因为有很多很多书,也有很多很多人来买,但是其实我们简单的可以把它分为两个模块,这样我们就能很好的理解了,网上书店主要由前台会员管理模块和后台管理员模块两部分组成。
前台功能模块主要用于实现会员注册,登录,修改个人信息,分类查看书目信息、购书、管理购物车、结帐、查看各种服务条款等功能。
后台管理模块主要用于实现后台管理人员对会员,商品,物流,订单和系统的管理等功能。
1、前台系统工作流程
首先当我们用户登陆这个网站时,一开始就会出现让你登陆,如果是你会员,你可以直接登录,如果你不是会员,你要注册个账号。
1、 当你是会员时,你可以查看你的各项服务,比如说上次你收藏了什么书籍,以及你喜欢的书的种类,在可以看下前几次你购买书的情况,在可以修改个人信息,修改密码等,你也可以查看自己网上交易情况,看下自己买的书的情况,以及看上什么书了,可以把它放回购物车,方便自己购买。
2、 当你是非会员时,你要先进行注册,填写自己的基本信息,当你填好后,你也是其中一员了,你也同样可以向会员那样找自己的书了,相对来说比较方便。
3、 还有人不注册,只是进来逛下网站,看看自己是否有必要买一些书。
2、后台系统工作流程
后台系统工作流程主要用于实现后台管理人员对会员,商品,物流,订单和系统的管理等功能,他要对会员的登记进行统计,以及购物等方面的内容管理
四、网上书店工作过程的内容
1、管理员信息,包括数据项有:管理员编号、管理员账号、管理员密码。
2、会员信息,包括数据项有:会员账号、会员密码、会员昵称、会员E-mail、会员级别(管理员设定)。
3、图书信息,包括数据项有:图书编号、图书名称、作者、出版社编号、出版日期、图书类别编号、图书简介。
(⑴出版社信息,包括数据项有:出版社编号、出版社名称。
⑵图书类别信息,包括数据项有:图书类别编号、图书类别名称。)
4、图书订单,包括数据项有:会员账号、下定单日期、收货地址、收货地址邮编、收货人姓名、收货人****、送货方式编号、总费用、图书名称、现已售出量情况。
5、购物车,包括数据项有:会员账号、每种图书名称、每种图书市场价格、每种图书网站价格、每种图书数量、每种图书的价格、图书总价。
五、数据库设计
1、数据项
数据项
数据项名 数据类型 长度 别名 取值范围
会员编号 字符型 15 会员的编号
姓名 文本型 20 会员的姓名
密码 文本型 20 会员的密码
电话 字符型 12 会员的电话
地址 文本型 50 会员的地址
商品编号 字符型 15 商品的编号
类型 文本型 10 商品的类型
名称 文本型 20 商品的名称
价格 整型 6 商品的价格
简介 文本型 500 商品的简介
型 商品的
购物车编号 字符型 10 购物车的编号
商品数量 整型 10 购买商品的数量
订单编号 字符型 15 购物时生成的订单
订单日期 时间型 10 购买商品的时间
2、 数据结构
系统需求数据结构
数据结构名 含义说明 组成
会员 记录会员的基本信息 会员编号、姓名、密码、电话、地址
商品 记录销售商提供的商品信息 商品编号、类型、名称、价格、简介、
订购 记录会员的购物信息 会员编号、商品编号、订单编号、订单日期
购物车 存储会员需要购买的商品 会员编号、商品编号、购物车编号、商品数量
3、关系模式的设计
会员
数据项名 数据类型 长度 别名 是否为空 主外键
会员编号 字符型 15 会员编号 否 主键
姓名 文本型 20 姓名 否
密码 文本型 20 密码 否
电话 字符型 12 电话 否
地址 文本型 50 地址 否
商品
数据项名 数据类型 长度 别名 是否为空 主外键
商品编号 字符型 15 商品编号 否 主键
类型 字符型 15 类型 否
名称 字符型 20 名称 否
价格 整型 10 价格 否
简介 文本型 500 简介
image型 100
订购
数据项名 数据类型 长度 别名 是否为空 主外键
会员编号 字符型 15 会员编号 否 外键 主键
商品编号 字符型 10 商品编号 否 外键
订单编号 字符型 10 订单编号 否
订单日期 日期型 10 订单日期 否
购物车
数据项名 数据类型 长度 别名 是否为空 主外键
会员编号 字符型 15 会员编号 否 主键
商品编号 字符型 15 商品编号 否
购物车编号 字符型 15 购物车编号 否
商品数量 整型 6 商品数量 否
4、视图的设计
搜索商品视图
数据项名 数据类型 长度 别名 是否为空
名称 字符型 10 名称 否
类型 字符型 10 类型 否
价格 整型 10 价格 否
简介 文本型 4 简介 否
六、网上购书E-R图
否 是
网上书店系统业务流程:
网上书店前台管理功能结构图:
六、系统的源程序
ackage cart;
import javautilVector;
public class Cart {
Vector v = new Vector();
String act = null;
String item = null;
private void addItem(String id) {
vaddElement(id);
}
private void removeItem(String id) {
vremoveElement(id);
}
public void setItem(String id) {
item = id;
}
public void setAct(String s) {
act = s;
}
public String[] getItems() {
String[] s = new String[vsize()];
vcopyInto(s);
return s;
}
public void processRequest() {
if (actequals("add"))
addItem(item);
else if (actequals("remove"))
removeItem(item);
// reset at the end of the request
reset();
}
// reset
private void reset() {
act = null;
item = null;
}
public void clearAll(){
vremoveAllElements();
}
}
现实页面信息,提示等 *** 作的设计:
package spage;
import javasql;
public class ShowPage
{
private String str = "";
//显示页号为p的一页(user)
public String printPage(ResultSet rs, int p, int size)
{
str = "";
//将访问游标定位到页号为p的页要显示的第一条记录的位置
try {
for(int k=0;k<(p-1)size;k++)
rsnext();
}
catch(SQLException e) { }
for(int iPage=1; iPage<=size; iPage++) {
str += printRow(rs,iPage,p);
try {
if(!rsnext()) break;
}
catch(Exception e) { }
}
return str;
}
//显示单行记录(user)
public String printRow( ResultSet rs ,int i,int p)
{
String temp = "";
try {
int id=rsgetInt("userid");
temp+="<tr align='center' bgcolor='#FFFAF7'>";
temp+="<td><a href='javaScript:seeUser("+id+")'>"+rsgetString("name")+"</a></td>";
temp+="<td>"+rsgetString("sex")+"</td>";
temp+="<td>"+rsgetString("phone")+"</td>";
temp+="<td>"+rsgetString("address")+"</td>";
temp += "<td><a href='updateuserjspupdateid="+id+"'>修改</a></td>";
temp += "<td><a href='dealdeleteuserjspdelid="+id+"'>删除</a></td>";
temp += "</tr>";
}
catch(SQLException e) { }
return temp;
}
//显示页号为p的一页(book)
public String bookPage(ResultSet rs, int p, int size,boolean f)
{
str = "";
//将访问游标定位到页号为p的页要显示的第一条记录的位置
try {
for(int k=0;k<(p-1)size;k++)
rsnext();
}
catch(SQLException e) { }
for(int iPage=1; iPage<=size; iPage++) {
str += bookRow(rs,iPage,p,f);
try {
if(!rsnext()) break;
}
catch(Exception e) { }
}
return str;
}
//显示单行记录(book)
public String bookRow( ResultSet rs ,int i,int p,boolean f)
{
String temp = "";
try {
int id=rsgetInt("bookid");
temp+="<tr align='center'>";
temp+="<td><a href='detailjspdetailid="+id+"'>"+rsgetString("bookname")+"</a></td>";
temp+="<td>"+rsgetString("author")+"</td>";
temp+="<td>"+rsgetString("pubhouse")+"</td>";
temp+="<td>"+rsgetString("price")+"</td>";
if(f)
{
temp+="<td>"+rsgetString("salenum")+"</td>";
temp+="<td><a href='updatebookjspupdateid="+id+"'>修改</a></td>";
temp+="<td><a href='dealdeletebookjspdelid="+id+"'>删除</a></td>";
}
else
temp+="<td><a href='dealcartjspdealid="+id+"&act=add'>加入购物车</a></td>";
temp += "</tr>";
}
catch(SQLException e) { }
return temp;
}
//显示页号为p的一页(order)
public String orderPage(ResultSet rs, int p, int size,boolean f)
{
str = "";
//将访问游标定位到页号为p的页要显示的第一条记录的位置
try {
for(int k=0;k<(p-1)size;k++)
rsnext();
}
catch(SQLException e) { }
for(int iPage=1; iPage<=size; iPage++) {
str += orderRow(rs,iPage,p,f);
try {
if(!rsnext()) break;
}
catch(Exception e) { }
}
return str;
}
//显示单行记录(order)
public String orderRow( ResultSet rs ,int i,int p,boolean f)
{
String temp = "";
try {
String orderid=rsgetString("orderid");
temp+="<tr align='center'>";
temp+="<td><a href='detailorderjspdetailid="+orderid+"'>"+orderid+"</a></td>";
temp+="<td>"+(rsgetString("orderdate"))substring(0,10)+"</td>";
temp+="<td>"+rsgetString("orderstate")+"</td>";
if(f)
{
temp += "<td><a href='javaScript:seeUser("+rsgetString("userid")+")'>"+rsgetString("username")+"</a></td>";
temp += "<td><a href='dealdeleteorderjspdelid="+orderid+"'>删除</a></td>";
}
temp+="</tr>";
}
catch(SQLException e) { }
return temp;
}
}
七、系统评价及心得体会
1、了解很多关于网上购书程序上的知识,要写这个课程设计,我把有关网上购书的概论也看了下,发现不知道是这个设计太简单还是怎么回事,网上出现很多此样的版本,很有有更新,可能我们对数据库设计的程序还不是很了解吧。
2,要写数据库E-R图,发现很难画啊,还要把线段连来连去,觉得在画图上面花了很多时间
3,一定要先了解数据情况,要先熟悉了网上购书的基本 *** 作,在开始研究,最好自己去试一下网上购书,我就自己亲自去点击了下网上购书网,然后才下手写的课程设计。
数据库表单设计实验目的及意义是为了配合数据库原理及应用开发而设置的,是计算机科学与技术、网络工程、信息安全、物联网工程、软件工程等专业集中实践的教学环节,是将关系数据库理论知识转化为解决实际问题能力的重要环节。数据库系统课程设计目的在于加深对关系数据库理论知识的理解,通过使用具体的 DBMS,掌握一种实际的数据库管理系统并掌握其 *** 作技术,熟练掌握使用数据库前端开发工具(如 VB、 C++、 Java、 Delphi、 PowerBuilder等),进一步提高同学们运用数据库技术解决实际问题的能力。
持续一个月的数据库实训,让我参与了软件工程化的开发过程
其中体会最深的便是我们这个实训网的几个之最:一.项目最大:项目大是因为我们这个事业起点网站涉及到用户众多-高校,企业,学生,老师,专家,第二个原因是网站的功能多-用户管理,网上实习,网上竞赛,毕业实习设计,项目管理,人才库管理,人才推荐,搜索
项目大很容易造成系统范围的泛滥,在我们的开发初期,由于需求不太明确,功能实现没有重点,造成了需求范围的扩大,给项目开发进度造成了严重的滞后性
然后我们召开了会议讨论了这个问题,一致认同先把项目的基本功能实现,将网站的基本架构搭建起来,最后再在这个基础上继续增加我们网站的其他功能
因此在这个过程中,我深刻体会到了软件工程初期阶段的需求分析以及概要设计的重要性,这两个文档是指导我们后期开发的最重要的依据
二.数据库表最多:如此庞大的系统,就需要庞大的数据库来支持,所以项目大的直接后果就是我们的数据库表特别多,而且表与表之间的依赖关系也复杂,实体类之间的关系众多,设计起来有一定的难度
数据库的另外一个问题是-数据表的属性,数据表属性的设计完全是依赖于我们刚开始做的需求分析文档,如果需求分析不完整的话,就会造成数据库表属性的缺失,从用户的角度看,就会觉得你的系统提供的数据不够全面,信息量小
三.开发团队最大:我们团队一共有十四个人,这个对于我们的项目经理来说,是一个相当严峻的问题,毕竟十四个人的团队相当于其他几个小组加起来的人数总和,管理起来有相当大的难度
对于我们这些小组成员来说,由于沟通渠道太多,造成了我们项目中遇到问题,不知道去跟哪个小组成员沟通
为了解决这个问题,我们在团队中又选出了三个小组长,小组成员遇到问题,先去咨询小组长,然后小组长提供反馈信息
四.项目各个模块间藕合度高:网站涉及的各个功能模块之间的联系紧密,模块之间的接口设计的好坏是项目最终集成成功与否的最重要因素
用户管理这一个部分要为每个模块提供接口,主要是用户的编号以及用户的类型等
每个页面之间的链接也是其中重要的模块接口
这个问题由于我们前期做好了充分的沟通以及按照概要设计中的接口说明去设计自己的模块,所以后期的模块整合没有遇到什么太大的不兼容性等问题
接下来就谈谈我这一个月中的工作:需求分析阶段:需求分析阶段我完成了网上竞赛模块的需求分析,其中遇到的主要问题是阅读材料后发现网上实习,网上竞赛,毕业设计指导这几个模块的功能是类似的,提取需求分析后不够明确,经过几次跟汤老师的交流后,确定了这几个模块之间的具体差别,网上竞赛模块的基本需求也大致确定了,网上竞赛模块的基本功能就是学生通过网站报名参加竞赛,企业审核通过后,专家对作品进行评分,排名
概要设计阶段:在需求分析的基础上,对网上竞赛模块进行了比较具体的概要设计,流程图(IPO图以及用例图);这个阶段的主要难点是对网上竞赛业务流程的描述,如何实现学生报名,企业发布,专家评审的步骤 *** 作,与及跟其他模块对该模块的限制
数据库设计阶段:我负责整合初步数据库设计说明书,分配组员按照各自的功能模块的具体需求设计自己模块需要的数据表,然后对这些数据表进行整合
在这个过程中遇到的问题就是数据库实在是太大了,最后下来一共有30多张表,表与表之间的关系复杂,关联性大,需要设置的外键较多,很难将所有的属性字段给提取出来,属性的类型设置也是一个问题,采用数值型还是采用字符串性在数据库设计中尤为重要,因为在后台搜索方面,数值型比较快捷,而在数据显示方面,字符串型又有直接读出不用转换的好处
每个表的主键我们采用了用实体的编号去标记它,因为这样实体间关联起来会更加简单
数据库的设计关键是要对整个项目的整体的把握,并且要细化对每个实体类的具体属性要求
详细设计阶段:我觉得是最重要的一个方面,一个完整的详细设计说明应该可以帮助程序员完成具体的实现,程序员可以不用考虑模块之间的耦合问题,只需要将单一的功能按照逻辑顺序编写出来就可以了
网站整体构架搭好了,我们就可以在里面填充自己的功能了
但是因为时间太仓促了,我们这个阶段也就缩水了,带来后面的问题就是后期代码编写的时候比较混乱,函数接口较难统,界面风格多样化
这个阶段,我的主要工作是跟队友一起设计出了网上竞赛模块的学生,企业,管理员,高校以及专家的界面
编码阶段:我们是用ASP
net开发的,主要任务就是从工具中选出你想要的控件,然后在控件响应函数中填充代码,完成相应的事件响应
这里遇到的最大问题是页面的排版问题,因为自己是第一次开发网站,造成了自己设计的界面风格单调,不太美观,现在就尽量做到页面的整齐
这个阶段主要做的就是:写代码→编译→调试→写代码
这一个月中我学到了很多东西,技术方面就是学会了用ASP
Net编写网站,最重要的是让我经历了软件工程化的所有阶段,让我对整个软件工程有了感性的认识,而且将大学三年所学到的知识进行了一次系统的串联,更重要的是学会了如何跟项目团队中的成员沟通问题,这是一个宝贵的实践经验
数据库中的外码
1外码是另外⼀个表的主码;
2插⼊数据是必须先给所关联外码的那个表插⼊数据;
3报错的原因是插⼊的某个属性在所关联外码表中找不到。
外码的意义是:保证两个表之间的数据的⼀致性,例如:职⼯表中的部门号,必须在部门表中存在。create table 部门(
部门号 char(20) primary key not null,
名称 char(20) constraint UK_dName unique not null ,
经理名 char(20),
第 1 页
污水处理器设备找瑞谱斯环保
最近60分钟前有人拨打电话咨询问题
点击立即咨询,了解更多详情
咨询
贵州瑞谱斯环保科技 广告
地址 varchar(20),
电话号码 char(20)
)
drop table 部门
create table 职⼯(
职⼯号 char(20) primary key,
姓名 char(20) not null,
年龄 smallint check (年龄>=18 and 年龄<=60),
职务 char(20),
⼯资 int not null check(⼯资>=800),
部门号 char(20)
第 2 页
FOREIGN KEY (部门号) REFERENCES 部门(部门号)--直接建⽴外码
)
drop table 职⼯
--新增关系表属性
--新增表的外码
--⽅法⼆:
alter table 职⼯
add constraint S_worker
foreign key(部门号)
references 部门(部门号)
第 3 页
百度文库
搜索
数据库调动部门但有外码
展开全文
免费读数据库中的外码全文
APP
打印
导出为WORD
导出为PDF
发送至微信
APP打开
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
页数说明:当前展示页数为百度文库重新排版后结果,原始文档共1页
相关文档
数据库添加外码
免费获取全文
书目数据库中3种常用代码的取码方法
免费获取全文
区块链中数据库哈希码的延迟更新[发明专利]
免费获取全文
1数据库系统的外模式在SQL中称为
免费获取全文
实验一空间数据库的创建与数据导入
免费获取全文
国有企业风险框架和风控数据库指导手册模版
106人正在看
超详细的MySQL工作原理体系结构
53人正在看
TCGA数据分析系列:GEPIA2数据库
137人正在看
数据库实验报告(全)
56人正在看
查看更多
为您精选
数据库中的外码
会员文档328篇
人气好文
数据库添加外码
2717人阅读
书目数据库中3种常用代码的取码方法
1396人阅读
热门TOP
区块链中数据库哈希码的延迟更新[发明专利]
2323人阅读
1数据库系统的外模式在SQL中称为
1544人阅读
立即开通VIP
基于你的浏览为你整理资料合集
数据库调动部门但有外码
文件夹
数据库添加外码 - 百度文库
42分 3717阅读 值得一读
数据库设置外码实例 - 百度文库
40分 1487阅读 本周下载TOP
mysql创建表里主码和外码_SQL语言创建表时候怎么定义主码和外码
45分 2320阅读
剩余16篇精选文档
APP内一键获取全部合集
4901人已获取
工具
收藏
以上就是关于100分求一份数据库原理课程设计的实验报告全部的内容,包括:100分求一份数据库原理课程设计的实验报告、数据库表单设计实验目的及意义、数据库实验心得体会等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)