数据库课设题目,数据库课程设计实例
大家好,今天给各位分享数据库课设题目的一些知识,其中也会对数据库课程设计实例进行解释,文章篇幅可能偏长,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在就马上开始吧!
数据库课程设计实例
数据库课程设计
题目:小型超市管理系统
1、项目计划
1.1系统开发目的
(1)大大提高超市的运作效率;
(2)通过全面的信息采集和处理,辅助提高超市的决策水平;
(3)使用本系统,可以迅速提升超市的管理水平,为降低经营成本,提高效益,增强超市扩张力,提供有效的技术保障。
1.2背景说明
21世纪,超市的竞争也进入到了一个全新的领域,竞争已不再是规模的竞争,而是技术的竞争、管理的竞争、人才的竞争。技术的提升和管理的升级是超市业的竞争核心。零售领域目前呈多元发展趋势,多种业态:超市、仓储店、便利店、特许加盟店、专卖店、货仓等相互并存。如何在激烈的竞争中扩大销售额、降低经营成本、扩大经营规模,成为超市营业者努力追求的目标。
1.3项目确立
针对超市的特点,为了帮助超市解决现在面临的问题,提高小型超市的竞争力,我们将开发以下系统:前台POS销售系统、后台管理系统,其中这两个子系统又包含其它一些子功能。
1.4应用范围
本系统适应于各种小型的超市。
1.5定义
(1)商品条形码:每种商品具有唯一的条形码,对于某些价格一样的商品,可以使用自定义条形码。
(2)交易清单:包括交易的流水账号、每类商品的商品名、数量、该类商品的总金额、交易的时间、负责本次收银的员工号。
(3)商品积压:在一定时期内,远无法完成销售计划的商品会造成积压。
(4)促销:在一定时期内,某些商品会按低于原价的促销价格销售。
库存告警提示:当商品的库存数量低于库存报警数量时发出提示。
(5)盘点:计算出库存、销售额、盈利等经营指标。
1.6参考资料
《数据库原理及设计》陶宏才编清华大学出版社
《SQL Server 2000实用教程》范立南编清华大学出版社
《SQL Server 2000编程员指南》李香敏编北京希望电子出版社
《轻松搞定 SQL Server 2000程序设计》Rebecca M.Riordan编
《软件工程规范》Watts S.Humphrey编清华大学出版社
《软件工程理论与实践》 Shari Lawrence Pfleeger编清华大学出版社
《软件需求分析》 Swapna Kishore编机械工业出版社
《软件工程思想》林锐编
2、逻辑分析与详细分析
2.1系统功能
(1)、零售前台(POS)管理系统,本系统必须具有以下功能:
商品录入:根据超巿业务特点制定相关功能,可以通过输入唯一编号、扫描条形码、商品名称等来实现精确或模糊的商品扫描录入。该扫描录入方法可以充分保证各种电脑操作水平层次的人员均能准确快速地进行商品扫描录入。
收银业务:通过扫描条形码或者直接输入商品名称(对于同类多件商品采用一次录入加数量的方式)自动计算本次交易的总金额。在顾客付款后,自动计算找零,同时打印交易清单(包括交易的流水账号、每类商品的商品名、数量、该类商品的总金额、交易的时间、负责本次收银的员工号)。如果顾客是本店会员并持有本人会员卡,则在交易前先扫描会员卡,并对所购物品全部实行95折优惠,并将所购物品的总金额累计到该会员的总消费金额中。会员卡的有效期限为一年,满一年未续卡者,该会员卡将被注销。
安全性:OS登陆、退出、换班与操作锁定等权限验证保护;断电自动保护最大限度防止意外及恶意非法操作。
独立作业:有的断网收银即在网络服务器断开或网络不通的情况下,收银机仍能正常作业
(2)、后台管理系统,本系统必须具备以下功能
进货管理:根据销售情况及库存情况,自动制定进货计划(亦可手工制定修改),可以避免盲目进货造成商品积压。按计划单有选择性地进行自动入库登记。综合查询打印计划进货与入库记录及金额。
销售管理:商品正常销售、促销与限量、限期及禁止销售控制。综合查询各种销售明细记录、各地收银员收银记录以及交结账情况等。按多种方式统计生成销售排行榜,灵活察看和打印商品销售日、月、年报表。
库存管理:综合查询库存明细记录。库存状态自动告警提示。如库存过剩、少货、缺货等。软件为您预警,避免库存商品积压损失和缺货。库存自动盘点计算。
人员管理:员工、会员、供货商、厂商等基本信息登记管理。员工操作权限管理。客户销售权限管理。
(3)系统结构
系统总体结构
模块子系统结构
功能商品录入子系统要求能快速录入商品,因此必须支持条形码扫描。
功能收银业务子系统能计算交易总额,打印交易清单,并根据会员卡打折。
功能进货管理子系统可以根据库存自动指定进货计划,进货时自动等级,以及提供查询和打印计划进货与入库记录的功能。
功能销售管理子系统可以控制某商品是否允许销售,查询每种商品的销售情况并产生年、月、日报表,同时可以生成销售排行榜。
功能库存管理子系统提供查询库存明细记录的基本功能,并根据库存的状态报警,以及自动盘点计算。
功能人员管理子系统提供基本信息登记管理,员工操作权限管理,客户销售权限管理的功能。
2.2、流程图
前台管理系统
顶层DFD图
第0层DFD图
第1层DFD图
2.3、户类型与职能
(1)、员工(营业员):
通过商品条形码扫描输入商品到购买清单
操作软件计算交易总金额
操作软件输出交易清单
对会员进行会员卡扫描以便打折
(2)、:超市经理
操作软件录入商品,供货商,厂商
操作软件制定进货计划
查询打印计划进货与入库记录
操作软件控制商品销售与否
查询打印销售情况
操作软件生成销售排行榜
查询库存明细记录
根据软件发出的库存告警进行入货
操作软件进行盘点计算
(3)、总经理:
基本信息登记管理
员工操作权限管理
客户销售权限管理
2.4、统开发步骤
确定参与者和相关的用况
为每个用况设计过程
建立顺序图,确定每个脚本中对象的协作
创建类,确定脚本中的对象
设计,编码,测试,集成类
为过程编写系统测试案例
运行测试案例,检验系统
2.5、系统环境需求
系统模式
本系统采用C/S模式作为开发模式
硬件环境
服务器端:
高性能的计算机一台,
普通的双绞线作为连接。
客户端:普通的计算机或者工作站,
普通的双绞线作为连接。
软件环境
服务器端:安装SQL Server 2000的服务器版本,
安装windows 2000服务器版本,
配置了诺顿等必须的防毒软件。
客户端:安装SQL Server2000的服务器版本,
安装了VB等可视化开发工具软件,
安装windows2000服务器版本。
2.6、系统安全问题
信息系统尽管功能强大,技术先进,但由于受到自身体系结构,设计思路以及运行机制等限制,也隐含许多不安全因素。常见因素有:数据的输入,输出,存取与备份,源程序以及应用软件,数据库,操作系统等漏洞或缺陷,硬件,通信部分的漏洞,企业内部人员的因素,病毒,“黑客”等因素。因此,为使本系统能够真正安全,可靠,稳定地工作,必须考虑如下问题:为保证安全,不致使系统遭到意外事故的损害,系统因该能防止火,盗或其他形式的人为破坏。
系统要能重建
系统应该是可审查的
系统应能进行有效控制,抗干扰能力强
系统使用者的使用权限是可识别的
3、基于UML的建模
3.1语义规则
用例模型(use cases view)(用例视图)的基本组成部件是用例(use case)、角色(actor)和系统(system)。用例用于描述系统的功能,也就是从外部用户的角度观察,系统应支持哪些功能,帮助分析人员理解系统的行为,它是对系统功能的宏观描述,一个完整的系统中通常包含若干个用例,每个用例具体说明应完成的功能,代表系统的所有基本功能(集)。角色是与系统进行交互的外部实体,它可以是系统用户,也可以是其它系统或硬件设备,总之,凡是需要与系统交互的任何东西都可以称作角色。系统的边界线以内的区域(即用例的活动区域)则抽象表示系统能够实现的所有基本功能。在一个基本功能(集)已经实现的系统中,系统运转的大致过程是:外部角色先初始化用例,然后用例执行其所代表的功能,执行完后用例便给角色返回一些值,这个值可以是角色需要的来自系统中的任何东西。
UML:是一种标准的图形化建模语言,它是面向对象分析与设计的一种标准表示;它不是一种可视化的程序设计语言而是一种可视化的建模语言;不是工具或知识库的规格说明而是一种建模语言规格说明是一种表示的标准;不是过程也不是方法但允许任何一种过程和方法使用它。
用例(use case):
参与者(actor):
3.2、UML模型
3.21、系统UML模型
3.22、子系统UML模型
(1)零售前台(POS)管理系统用例视图
(2)后台管理系统用例视图
3.3、系统实现图
4、超市销售系统概念设计文档
(1)、系统ER图
(2)、系统ER图说明
1)商店中的所有用户(员工)可以销售多种商品,每种商品可由不同用户(员工)销售;
2)每个顾客可以购买多种商品,不同商品可由不同顾客购买;
3)每个供货商可以供应多种不同商品,每种商品可由多个供应商供应。
(3)、视图设计
1)交易视图(v_Dealing)——用于查询交易情况的视图;
2)计划进货视图(v_PlanStock)——用于查询进货计划的视图;
3)销售视图(v_Sale)——用于查询销售明细记录的视图;
4)入库视图(v_Stock)——用于查询入库情况的视图。
5、逻辑设计文档
(1)、系统关系模型
a)商品信息表(商品编号,商品名称,价格,条形码,促销价格,促销起日期,促销止日期,允许打折,库存数量,库存报警数量,计划进货数,允许销售,厂商编号,供货商编号)
b)用户表(用户编号,用户名称,用户密码,用户类型)
c)会员表(会员编号,会员卡号,累积消费金额,注册日期)
d)销售表(销售编号,商品编号,销售数量,销售金额,销售日期)
e)交易表(交易编号,用户名称,交易金额,会员卡号,交易日期)
f)进货入库表(入库编号,入库商品编号,入库数量,单额,总额,入库日期,计划进货日期,入库状态)
g)供货商表(供货商编号,供货商名称,供货商地址,供货商电话)
h)厂商表(厂商编号,厂商名称,厂商地址,厂商电话)
(2)、系统数据库表结构
数据库表索引
表名中文名
MerchInfo商品信息表
User用户表
Menber会员表
Sale销售表
Dealing交易表
Stock进货入库表
Provide供货商表
Factory厂商表
商品信息表(MerchInfo)
字段名字段类型长度主/外键字段值约束对应中文名
MerchID int 4 P Not null商品编号
MerchName Varchar 50 Not null商品名称
MerchPrice Money 4 Not null价格
MerchNum Int 4 Not null库存数量
CautionNum Int 4 Not null库存报警数量
PlanNum Int 4 null计划进货数
BarCode Varchar 50 Not null条形码
SalesProPrice Money 4促销价格
SalesProDateS Datetime 8促销起日期
SalesProDateE Datetime 8促销止日期
AllowAbate Int 4 Not null允许打折
AllowSale Int 4 Not null允许销售
FactoryID Varchar 10 F Not null厂商编号
ProvideID Varchar 10 F Not null供货商编号
用户表(User)
字段名字段类型长度主/外键字段值约束对应中文名
UserID varchar 10 P Not null用户编号
UserName Varchar 25 Not null用户名称
UserPW Varchar 50 Not null用户密码
UserStyle Int 4 Not null用户类型
会员表(Menber)
字段名字段类型长度主/外键字段值约束对应中文名
MemberID Varchar 10 P Not null会员编号
MemberCard Varchar 20 Not null会员卡号
TotalCost Money 4 Not null累积消费金额
RegDate Datetime 8 Not null注册日期
销售表(Sale)
字段名字段类型长度主/外键字段值约束对应中文名
SaleID Varchar 10 P Not null销售编号
MerChID Varchar 10 F Not null商品编号
SaleDate Datetime 8 Not null销售日期
SaleNum Int 4 Not null销售数量
SalePrice Money 4 Not null销售单额
交易表(Dealing)
字段名字段类型长度主/外键字段值约束对应中文名
DealingID Varchar 10 P Not null交易编号
DealingPrice Money 4 Not null交易金额
DealingDate Money 4 Not null交易日期
MemberID Varchar 10会员卡号
UserName Varchar 10 F Not null用户名称
入库纪录表(Stock)
字段名字段类型长度主/外键字段值约束对应中文名
StockID Varchar 10 P Not null入库编号
MerchID Varchar 10 F Not null入库商品编号
MerchNum Int 4 Not null入库数量
MerchPrice Money 4 Not null单额
TotalPrice Money 4 Not null总额
StockDate Datetime 8 Datetime入库日期
PlanDate Datetime 8 Datetime计划进货日期
StockState Int 4 Not null入库状态
供货商表(Provide)
字段名字段类型长度主/外键字段值约束对应中文名
ProvideID varchar 10 P Not null供货商编号
ProvideName Varchar 50 Not null供货商名称
ProvideAddress Varchar 250供货商地址
ProvidePhone Varchar 25供货商电话
厂商表(Provide)
字段名字段类型长度主/外键字段值约束对应中文名
FactoryID varchar 10 P Not null厂商编号
FactoryName Varchar 50 Not null厂商名称
FactoryAddress Varchar 250厂商地址
FactoryPhone Varchar 25厂商电话
6、物理设计文档
/*----------创建数据库----------*/
create database SuperMarketdb
on primary
(
name=SuperMarketdb,
filename='C:\Program Files\Microsoft SQL Server\MSSQL\Data\SuperMarketdb.mdf',
size=100MB,
maxsize=200MB,
filegrowth=20MB
)
log on
(
name=SuperMarketlog,
filename='C:\Program Files\Microsoft SQL Server\MSSQL\Data\SuperMarketdb.ldf',
size=60MB,
maxsize=200MB,
filegrowth=20MB
)
go
/*----------创建基本表----------*/
use [SuperMarketdb]
go
/*创建交易表*/
CREATE TABLE Dealing(
DealingID int identity(1,1) Primary key,
DealingDate datetime NOT NULL,
DealingPrice money NOT NULL,
UserName varchar(25) NULL,
MemberCard varchar(20) NULL
)
GO
/*创建厂商表*/
CREATE TABLE Factory(
FactoryID varchar(10) Primary key,
FactoryName varchar(50) NOT NULL,
FactoryAddress varchar(250) NULL,
FactoryPhone varchar(50) NULL
)
GO
/*创建会员表*/
CREATE TABLE Member(
MemberID varchar(10) Primary key,
MemberCard varchar(20) NOT NULL,
TotalCost money NOT NULL,
RegDate datetime NOT NULL
)
GO
/*创建商品信息表*/
CREATE TABLE MerchInfo(
MerchID int identity(1,1) Primary key,
MerchName varchar(50) Unique NOT NULL,
MerchPrice money NOT NULL,
MerchNum int NOT NULL,
CautionNum int NOT NULL,
PlanNum int NOT NULL,
BarCode varchar(20) Unique NOT NULL,
SalesProPrice money NULL,
SalesProDateS datetime NULL,
SalesProDateE datetime NULL,
AllowAbate int NOT NULL,
AllowSale int NOT NULL,
FactoryID int NOT NULL,
ProvideID int NOT NULL
)
GO
/*创建供应商表*/
CREATE TABLE Provide(
ProvideID varchar(10) Primary key,
ProvideName varchar(50) NOT NULL,
ProvideAddress varchar(250) NULL,
ProvidePhone varchar(25) NULL
)
GO
/*创建销售表*/
CREATE TABLE Sale(
SaleID int identity(1,1) Primary key,
MerChID int NOT NULL,
SaleDate datetime NOT NULL,
SaleNum int NOT NULL,
SalePrice money NOT NULL
)
GO
/*创建入库表*/
CREATE TABLE Stock(
StockID int identity(1,1) Primary key,
MerchID int NOT NULL,
MerchNum int NOT NULL,
MerchPrice money NULL,
TotalPrice money NULL,
PlanDate datetime NULL,
StockDate datetime NULL,
StockState int NOT NULL
)
GO
/*创建用户表*/
CREATE TABLE User(
UserID varchar(10) Primary key,
UserName varchar(25) NOT NULL,
UserPW varchar(50) NOT NULL,
UserStyle int NOT NULL,
)
GO
/*----------创建表间约束----------*/
/*商品信息表中厂商编号、供应商编号分别与厂商表、供应商表之间的外键约束*/
ALTER TABLE MerchInfo ADD
CONSTRAINT [FK_MerchInfo_Factory] FOREIGN KEY
(
[FactoryID]
) REFERENCES Factory(
[FactoryID]
),
CONSTRAINT [FK_MerchInfo_Provide] FOREIGN KEY
(
[ProvideID]
) REFERENCES Provide(
[ProvideID]
)
GO
/*销售表中商品编号与商品信息表之间的外键约束*/
ALTER TABLE Sale ADD
CONSTRAINT [FK_Sale_MerchInfo] FOREIGN KEY
(
[MerChID]
) REFERENCES MerchInfo(
[MerchID]
) ON DELETE CASCADE
GO
/*入库表中商品编号与商品信息表之间的外键约束*/
ALTER TABLE Stock ADD
CONSTRAINT [FK_Stock_MerchInfo] FOREIGN KEY
(
[MerchID]
) REFERENCES MerchInfo(
[MerchID]
) ON DELETE CASCADE
GO
/*----------创建索引----------*/
/*在交易表上建立一个以交易编号、交易日期为索引项的非聚集索引*/
CREATE nonclustered INDEX IX_Dealing ON Dealing(DealingID, DealingDate)
GO
/*在商品信息表上建立一个以商品编号为索引项的非聚集索引*/
CREATE nonclustered INDEX IX_MerchInfo ON MerchInfo(MerchID)
GO
/*在销售表上建立一个以销售编号、销售日期为索引项的非聚集索引*/
CREATE nonclustered INDEX IX_Sale ON Sale(SaleID, SaleDate)
GO
/*在入库表上建立一个以入库编号、入库日期、商品编号为索引项的非聚集索引*/
CREATE nonclustered INDEX IX_Stock ON Stock(StockID, StockDate, MerchID)
GO
/*----------创建视图----------*/
/*创建用于查询交易情况的视图*/
CREATE VIEW v_Dealing
AS
SELECT DealingDate as交易日期,
UserName as员工名称,
MemberCard as会员卡号,
DealingPrice as交易金额
FROM Dealing
GO
/*创建用于查询进货计划的视图*/
CREATE VIEW v_PlanStock
AS
SELECT Stock.StockID as SID,
MerchInfo.MerchName as商品名称,
MerchInfo.BarCode as条形码,
Factory.FactoryName as厂商,
Provide.ProvideName as供货商,
Stock.MerchNum as计划进货数量,
Stock.PlanDate as计划进货日期
FROM Stock,MerchInfo,Provide,Factory
Where Stock.MerchID= MerchInfo.MerchID
and Provide.ProvideID=MerchInfo.ProvideID
and Factory.FactoryID=MerchInfo.FactoryID
and Stock.StockState=0
GO
/*创建用于查询销售明细记录的视图*/
CREATE VIEW v_Sale
AS
SELECT MerchInfo.MerchName as商品名称,
MerchInfo.BarCode as条形码,
MerchInfo.MerchPrice as商品价格,
Sale.SalePrice as销售价格,
Sale.SaleNum as销售数量,
Sale.SaleDate as销售日期
FROM Sale INNER JOIN
MerchInfo ON Sale.MerChID= MerchInfo.MerchID
GO
/*创建用于查询入库情况的视图*/
CREATE VIEW v_Stock
AS
SELECT MerchInfo.MerchName as商品名称,
MerchInfo.BarCode as条形码,
Factory.FactoryName as厂商,
Provide.ProvideName as供货商,
Stock.MerchPrice as入库价格,
Stock.MerchNum as入库数量,
Stock.TotalPrice as入库总额,
Stock.StockDate as入库日期
FROM Stock,MerchInfo,Provide,Factory
Where Stock.MerchID= MerchInfo.MerchID
and Provide.ProvideID=MerchInfo.ProvideID
and Factory.FactoryID=MerchInfo.FactoryID
and Stock.StockState=1
GO
7、小结
和传统管理模式相比较,使用本系统,毫无疑问会大大提高超市的运作效率,辅助提高超市的决策水平,管理水平,为降低经营成本,提高效益,减少差错,节省人力,减少顾客购物时间,增加客流量,提高顾客满意度,增强超市扩张能力,提供有效的技术保障。
由于开发者能力有限,加上时间仓促,本系统难免会出现一些不足之处,例如:
本系统只适合小型超市使用,不能适合中大型超市使用;
超市管理系统涉及范围宽,要解决的问题多,功能复杂,实现困难,但由于限于时间,本系统只能做出其中的一部分功能;
对于以上出现的问题,我们深表歉意,如发现还有其它问题,希望老师批评指正。
请采纳。
急!求个数据库课程的设计!!
《数据库原理及应用》课程设计
数据库原理课程设计任务书
一、目的
1.掌握计算机管理信息系统设计的一般方法,主要包括系统分析、系统设计的组织和实施。
2.关系型数据库管理系统的编程技术,并能独立完成一般小系统的程序设计、调试运行等工作。
3.培养把所学知识运用到具体对象,并能求出解决方案的能力。
二、任务(任选其一)
A.运用关系型数据库管理系统,实现本院图书馆管理信息系统。具体要求如下:
—图书、资料的登记、注销和查询。
—借书证管理,包括申请、注销借书证,查询借书证持有人等。
—借还图书、资料的登记、超期处理,超期拒借等。
—图书、资料查询,借、还图书和资料情况查询。
—图书、资料借阅情况的统计分析,拒此作为图书馆图书、资料订够的依据之一。(本项不作为基本要求)
B.运用关系型数据库管理系统,实现服务电话管理系统
向客户现场派技术人员的服务公司可以用服务电话管理系统跟踪客户、员工、工作订单、发票、付款等等。
要求:
数据库要存储以下信息:
—客户信息
—客户工需单信息
—完成工需单所需人工
—完成工需单所需部件
—部件信息
—付款信息
—雇员信息
完成的功能:
—输入/查看客户工需单信息
—输入/查看部件、雇员等其它信息
—付款
—打印发票等
三、结果形式
1.设计报告:含E-R图、数据字典、关系模式、关系实例、查询描述、关系代数、SQL实现的查询语言及查询结果。
2.上机实现。
四、考核
1.课程设计态度(20分)。
2.递交的书面材料(40分)。
3.上机运行情况(40分)
目录
1.问题描述 2
1.1背景 2
1.2数据需求 2
1.3事物需求 3
1.4关系模式 3
2.方案图表设计 3
2.1 E-R图 3
2.2数据流程图 8
2.3数据字典 9
2.4关系图: 11
3.数据库源代码 12
3.1数据库建立 12
3.2数据初始化 14
4.结果数据处理 17
4.1单表查询 17
4.2超期处理 19
4.3还书操作 20
4.4借书操作 22
4.5书籍状态 24
4.6读者状态 24
5.结束语 26
5.1课程设计心得 26
1.问题描述
1.1背景
随着图书馆规模的不断扩大,图书数量也相应的增加,有关图书的各种信息量也成倍增加,面对着庞大的信息量,传统的人工方式管理会导致图书馆管理上的混乱,人力与物力过多浪费,图书馆管理费用的增加,从而使图书馆的负担过重,影响整个图书馆的运作和控制管理,因此,必须制定一套合理、有效,规范和实用的图书管理系统,对图书资料进行集中统一的管理。
另一方面,IT产业和Internet获得了飞速发展,计算机应用已渗透到了各个领域,引起信息管理的革命,实现了信息的自动化处理,提高了处理的及时性和正确性。
提高图书管理工作效率,作到信息的规范管理,科学统计和快速查询,让图书馆更好的为学校,社会服务。
1.2数据需求
图书馆管理信息系统需要完成功能主要有:
1.读者基本信息的输入,包括借书证编号、读者姓名、读者性别。
2.读者基本信息的查询、修改,包括读者借书证编号、读者姓名、读者性别等。
3.书籍类别标准的制定、类别信息的输入,包括类别编号、类别名称。
4.书籍类别信息的查询、修改,包括类别编号、类别名称。
5.书籍库存信息的输入,包括书籍编号、书籍名称、书籍类别、作者姓名、出版社名称、出版日期、登记日期。
6.书籍库存信息的查询,修改,包括书籍编号、书籍名称、书籍类别、作者姓名、出版社名称、出版日期登记日期等。
7.借书信息的输入,包括读者借书证编号、书籍编号、借书日期。
8.借书信息的查询、修改,包括借书证编号、读者编号、读者姓名、书籍编号、书籍名称、借书日期等。
9.还书信息的输入,包括借书证编号、书籍编号、还书日期。
10.还书信息的查询和修改,包括还书读者借书证编号、读者姓名、书籍编号、书籍名称、借书日期、还书日期等。
11.超期还书罚款输入,还书超出期限包括超出期限还书的读者借书证号,书籍编号,罚款金额。
12.超期还书罚款查询,删除,包括读者借书证编号、读者姓名、书籍编号、书籍名称,罚款金额等
1.3事物需求
(1)在读者信息管理部分,要求:
a.可以查询读者信息。
b.可以对读者信息进行添加及删除的操作。
(2)在书籍信息管理部分,要求:
a.可以浏览书籍信息,要求:
b.可以对书籍信息进行维护,包括添加及删除的操作。
(3)在借阅信息管理部分,要求:。
a.可以浏览借阅信息。
b.可以对借阅信息进行维护操作。
(4)在归还信息管理部分,要求:
a.可以浏览归还信息
b.对归还信息可修改维护操作
(5)在管理者信息管理部分,要求:
a.显示当前数据库中管理者情况。
b.对管理者信息维护操作。
(6)在罚款信息管理部分,要求:
a.可以浏览罚款信息
b.对罚款信息可以更新
1.4关系模式
(一)书籍类别(种类编号,种类名称)
(二)读者(借书证编号,读者姓名,读者性别,读者种类,登记时期)
(三)书籍(书籍编号,书籍名称,书籍类别,书记作者,出版社名称,出版日期,登记日期)
(四)借阅(借书证编号,书籍编号,读者借书时间)
(五)还书(借书证编号,书籍编号,读者还书时间)
(六)罚款(借书证编号,读者姓名,借书证编号,书籍编号,读者借书时间)
以上通过关系代数方法的进行运算得到所需要的结果,在实验结果中可以看到。
2.方案图表设计
2.1 E-R图
根据1)所要实现的功能设计,可能建立它们之间的关系,进而实现逻辑结构功能。
图书管理信息系统可以划分的实体有:书籍类别信息实体、读者信息实体、书籍信息实体、借阅记录信息实体,归还记录信息实体。用E-R图一一描述这些实体。
2.1.1类别实体E-R图:
图2-1类别实体E-R图
2.1.2读者信息实体E-R图:
图2-2读者信息实体E-R图
2.1.3信息实体E-R图:
图2-3信息实体E-R图
2.1.4.记录信息实体E-R图:
图2-4记录信息实体E-R图
2.1.5记录信息实体E-R图:
图2-5记录信息实体E-R图
2.1.6罚款信息实体E-R图:
图2-6罚款信息实体E-R图
2.1.6总的信息实体E-R图:
图2-7总的信息实体E-R图
2.2数据流程图
D5
归还信息录入基本信息录入
D2
D1
基本信息录入基本信息录入
D3
D4
借阅信息录入
读者信息返回书籍信息返回
图2-7系统的数据流程图
2.3数据字典
表2-1 book_sytle书籍类别信息表
表中列名数据类型可否为空说明
bookstyleno varchar not null(主键)种类编号
bookstyle Varchar not null种类名称
表2-2 system_readers读者信息表格
表中列名数据类型可否为空说明
readerid varchar not null(主键)读者借书证号
readername varchar not null读者姓名
readersex varchar not null读者性别
readertype varchar null读者种类
regdate datetime null登记日期
表2-3 system_book书籍信息表
表中列名数据类型可否为空说明
bookid Varchar Not null(主键)书籍编号
bookname Varchar Not null书籍名称
bookstyle Varchar Not null书籍类别
bookauthor Varchar Not null书籍作者
bookpub Varchar Null出版社名称
bookpubdate Datetime Null出版日期
bookindate Datetime Null登记日期
isborrowed Varchar Not Null是否被借出
表2-4 borrow_record借阅记录信息表
表中列名数据类型可否为空说明
readerid Varchar Not null(外主键)读者借阅证编号
bookid Varchar Not null(外主键)书籍编号
borrowdate Varchar Not null读者借书时间
表2-5 return_record借阅记录信息表
表中列名数据类型可否为空说明
readername Varchar Not null(外主键)读者借阅证编号
readerid Varchar Not null(外主键)书籍编号
returndate datetime Not null读者还书时间
表2-6 reader_fee罚款记录信息表
readerid varchar Not null读者借书证编号
readername varchar Not null读者姓名
bookid varchar Not null(外主键)书籍编号
bookname varchar Not null书籍名称
bookfee varchar Not Null罚款金额
borrowdate datetime Not Null借阅时间
2.4关系图:
图2-8数据库存表关系图
3.数据库源代码
3.1数据库建立
3.1.1创建数据库
USE master
GO
CREATE DATABASE librarysystem
ON
( NAME= librarysystem,
FILENAME='d:\librarysystem.mdf',
SIZE= 10,
MAXSIZE= 50,
FILEGROWTH= 5)
LOG ON
( NAME='library',
FILENAME='d:\librarysystem.ldf',
SIZE= 5MB,
MAXSIZE= 25MB,
FILEGROWTH= 5MB)
GO
3.1.2书本类别表建立
create table book_style
(
bookstyleno varchar(30) primary key,
bookstyle varchar(30)
)
3.1.3创建书库表
create table system_books
(
bookid varchar(20) primary key,
bookname varchar(30) Not null,
bookstyleno varchar(30) Not null,
bookauthor varchar(30),
bookpub varchar(30),
bookpubdate datetime,
bookindate datetime,
isborrowed varchar(2),
foreign key(bookstyleno) references book_style(bookstyleno),
)
3.1.4借书证表建立
create table system_readers
( readerid varchar(9)primary key,
readername varchar(9)not null,
readersex varchar(2) not null,
readertype varchar(10),
regdate datetime
)
3.1.5借书记录表建立
create table borrow_record
( bookid varchar(20) primary key,
readerid varchar(9),
borrowdate datetime,
foreign key(bookid) references system_books(bookid),
foreign key(readerid) references system_readers(readerid),
)
3.1.6还书记录表建立
create table return_record
( bookid varchar(20) primary key,
readerid varchar(9),
returndate datetime,
foreign key(bookid) references system_books(bookid),
foreign key(readerid) references system_readers(readerid)
)
3.1.7罚款单表建立*/
create table reader_fee
( readerid varchar(9)not null,
readername varchar(9)not null,
bookid varchar(20) primary key,
bookname varchar(30) Not null,
bookfee varchar(30),
borrowdate datetime,
foreign key(bookid) references system_books(bookid),
foreign key(readerid) references system_readers(readerid)
)
3.2数据初始化
3.2.1将书籍类别加入表book_style中
insert into book_style(bookstyleno,bookstyle)values('1','人文艺术类')
insert into book_style(bookstyleno,bookstyle)values('2','自然科学类')
insert into book_style(bookstyleno,bookstyle)values('3','社会科学类')
insert into book_style(bookstyleno,bookstyle)values('4','图片艺术类')
insert into book_style(bookstyleno,bookstyle)values('5','政治经济类')
insert into book_style(bookstyleno,bookstyle)values('6','工程技术类')
insert into book_style(bookstyleno,bookstyle)values('7','语言技能类')
3.2.2将已有的图书加入system_books表中(定义相同的作者出版社的书本编号不一样)
insert
into system_books(bookid,bookname, bookstyleno,bookauthor,bookpub,bookpubdate, bookindate, isborrowed)
values('00125415152','计算机组成原理','6','王爱英','清华大学出版社','2001-01-03','2003-11-15','1');
insert
into system_books(bookid,bookname, bookstyleno,bookauthor,bookpub,bookpubdate, bookindate, isborrowed)
values('00125415153','计算机组成原理','6','王爱英','清华大学出版社','2001-01-03','2003-11-15','1');
insert
into system_books(bookid,bookname, bookstyleno,bookauthor,bookpub, bookpubdate,bookindate, isborrowed)
values('00456456','数据库原理','6','萨师煊','高等教育出版社','2007-07-02','2007-09-15','1');
insert
into system_books(bookid,bookname, bookstyleno,bookauthor,bookpub,bookpubdate, bookindate, isborrowed)
values('12215121','C程序设计','6','谭浩强','清华大学出版社','2002-04-02','2004-03-14','1');
insert
into system_books(bookid,bookname, bookstyleno,bookauthor,bookpub, bookpubdate,bookindate, isborrowed)
values('9787308020558','计算机体系结构','6','石教英','浙江大学出版社','2004-10-03','2006-11-15','1');
insert
into system_books(bookid,bookname, bookstyleno,bookauthor,bookpub, bookpubdate,bookindate, isborrowed)
values('45456141414','数据结构(C语言版)','6','吴伟民,严蔚敏','清华大学出版社','2002-06-28','2004-01-21','1');
insert
into system_books(bookid,bookname, bookstyleno,bookauthor,bookpub, bookpubdate,bookindate, isborrowed)
values('5455515','中华历史5000年','1','吴强','北京大学出版社','2005-04-03','2006-05-15','1');
insert
into system_books(bookid,bookname, bookstyleno,bookauthor,bookpub, bookpubdate,bookindate, isborrowed)
values('015115','古代埃及','3','赵文华','北京大学出版社','2001-02-02','2002-09-15','1');
insert
into system_books(bookid,bookname, bookstyleno,bookauthor,bookpub, bookpubdate,bookindate, isborrowed)
values('1514514','日本文化','1','吴小鹏','北京大学出版社','2002-04-02','2004-03-14','1');
insert
into system_books(bookid,bookname, bookstyleno,bookauthor,bookpub, bookpubdate,bookindate, isborrowed)
values('15154656','微观经济学','5','李小刚','北京大学出版社','2000-10-03','2001-11-15','1');
insert
into system_books(bookid,bookname, bookstyleno,bookauthor,bookpub, bookpubdate,bookindate, isborrowed)
values('5658','影视文学','4','苏庆东','北京大学出版社','1999-02-28','2000-01-21','1');
insert into
system_books(bookid,bookname, bookstyleno,bookauthor,bookpub, bookpubdate,bookindate, isborrowed)
values('565800020','探索宇宙奥秘','2','苏庆东','北京大学出版社','1999-02-28','2000-01-21','1');
3.2.3将已有图书证的读者加入system_readers表中*/
insert into system_readers(readerid,readername,readersex,readertype,regdate)
values('X05620207','陈远鹏','男','学生','2005-9-23 14:23:56')
insert into system_readers(readerid,readername,readersex,readertype,regdate)
values('X05620206','陈特','男','学生','2005-09-30 13:24:54.623')
insert into system_readers(readerid,readername,readersex,readertype,regdate)
values('X05620204','赵铭静','女','学生','2005-09-27 11:24:54.123')
insert into system_readers(readerid,readername,readersex,readertype,regdate)
values('X05620202','潘虹','女','学生','2005-09-30 13:24:54.473')
insert into system_readers(readerid,readername,readersex,readertype,regdate)
values('008415','蒋伟','男','教师','2004-04-30 09:24:54.478')
insert into system_readers(readerid,readername,readersex,readertype,regdate)
values('001456','李叶风','女','教师','2004-04-30 09:24:54.478')
3.2.4添加已借书读者的记录,同时将在已借出的借阅标记置0*/
insert into borrow_record(bookid,readerid,borrowdate)
values('00125415152','X05620202','2007-09-27 11:24:54.123')
update system_books
set isborrowed=0
where bookid='00125415152'
insert into borrow_record(bookid,readerid,borrowdate)
values('00125415153','X05620206','2007-12-27 08:26:51.452')
update system_books
set isborrowed=0
where bookid='00125415153' and isborrowed='1'
insert into borrow_record(bookid,readerid,borrowdate)
values('5455515','X05620207','2007-12-27 08:26:51.452')
update system_books
set isborrowed=0
where bookid='5455515' and isborrowed='1'
insert into borrow_record(bookid,readerid,borrowdate)
values('015115','X05620204','2007-10-21 12:11:51.452')
update system_books
set isborrowed=0
where bookid='015115' and isborrowed='1'
insert into borrow_record(bookid,readerid,borrowdate)
values('15154656','001456','2007-12-28 14:11:51.312')
update system_books
set isborrowed=0
where bookid='15154656' and isborrowed='1'
insert into borrow_record(bookid,readerid,borrowdate)
values('565800020','008415','2007-08-28 15:11:31.512')
update system_books
set isborrowed=0
where bookid='565800020' and isborrowed='1'
4.结果数据处理
4.1单表查询
4.1.1表book_style中查询演示:
图4-1表book_style中内容
4.1.2表system_books中查询演示:
图4-2表system_books中内容
4.1.3将已有图书证的读者加入system_readers表中结果查询:
图4-3表system_readers中内容
4.1.4借书纪录表borrow_record结果查询:
图4-4表borrow_record中内容
4.2超期处理
4.2.1现在对已有借书证的读者进行查询借书是否超期(这里归定30天):
说明:当前的getdate()以日期为2008年1月6日计算
图4-4选出借出超过30天的读者
4.2.2同时也可以用语句超过天数的读者进行罚款,加入到罚款单里面,一天以0.3元扣除计算:
SQL语言:
insert into reader_fee(readerid,readername,bookid,bookname,bookfee,borrowdate)
select system_readers.readerid读者借书证编号,readername读者姓名,
system_books.bookid书籍编号,bookname书名,
0.3*(Datediff(day,convert(smalldatetime,borrowdate),getdate())-30)超过时间天数,
borrowdate借书时间
from borrow_record,system_readers,system_books
where system_readers.readerid=borrow_record.readerid
and system_books.bookid=borrow_record.bookid
and Datediff(day,convert(smalldatetime,borrowdate),getdate())>=30
(所影响的行数为 3行)
select readerid书读者借书证编号,readername读者姓名,
bookid书籍编号,bookfee超期罚款
from reader_fee
形成各本书对应的罚款金额,按0.3元每天算
图4-5查看罚款单
4.3还书操作
4.3.1现在对某一读者进行还书操作:
1.首先还书要在还书纪录中添加一条还书纪录
2.其次删除相应书本的借阅纪录
3.最后在书库中标记该本书为1,表示归还了未借,可供其他读者借阅
说明:学号为X05620207姓名为陈远鹏借阅的565800020书籍编号进行归还。
SQL语言:
insert into return_record(bookid,readerid,returndate)
select bookid,readerid,getdate()
from borrow_record
where bookid='565800020'
(所影响的行数为 1行)
delete
from borrow_record
where bookid='565800020'
(所影响的行数为 1行)
update system_books
set isborrowed=1
where bookid='565800020'
(所影响的行数为 1行)
三个表的结果如图:
图4-6增加了565800020纪录
图4-7 565800020这本书在借书纪录里没有了
图4-8标记设为了‘1’
说明:这本书重新回到未被借出标记为1(注,相同的书其编号是不同的)
其结果为还书成功,相应的各表都有变化,对于罚款单通过借阅记录表borrow_record中更新。
4.4借书操作
4.4.1查询未被借出的书本:
图4-9
4.4.2查询已被借出的书本:
图4-10
4.4.3申请借书证:
SQL语言:
Insert into system_readers(readerid,readername,readersex,readertype,regdate)
values('X05620211','小华','男','学生',getdate())
图4-11
说明:查询相应的纪录增加了小华这样一个读者的借书证纪录:
4.4.4注销借书证:
说明:
1.在注销之前执行所有的还书过程,就是上面写到的所述SQL语句,然后执行
delete from system_readers where readerid=' X05620211',
2.小华借书证纪录就被删除了,同时要删除和小华归还纪录的内容
delete from return_record where readerid=' X05620211',
4.4.5查询所有书所对应的类别:
图4-12
4.5书籍状态
4.5.1查询所有工技术类的书:
图4-13
4.5.2查询清华大学出版社出版的书:
图4-14
4.6读者状态
4.6.1查询什么人借了什么书:
SQL语言:
select readername读者姓名,bookname书籍名称
from borrow_record,system_books,system_readers
where system_readers.readerid=borrow_record.readerid
and system_books.bookid=borrow_record.bookid
图4-15
4.6.2指定潘虹借了什么书:
SQL语言:
select readername读者姓名,bookname书籍名称
from borrow_record,system_books,system_readers
where system_readers.readerid=borrow_record.readerid
and system_books.bookid=borrow_record.bookid
and readername='潘虹'
图4-16
5.结束语
5.1课程设计心得
通过此次数据库的课程设计,真正达到了学与用的结合,增强了对数据库方面应用的理解,对自己今后参与开发数据库系统积累了不少经验,在实验过程中,从建立数据开始,对灵据库设计理念及思想上有更高的认识,从需求分析,到概念设计和逻辑设计,E-R图的表示,数据字典的创建,懂得了不少有关数据库开发过程中的知识,在实验中建表,及其关系模式,关系代数的建立及理解,将SQL语的查询语句用得淋漓尽致,增强了自己在数据库中应用SQL语言的灵活性,其中包括,插入、删除、修改、查询,牵涉表和表之间的联系,主建与外主键的定义,约束项的设置,使逻辑更严密,在学习过程中,我也能过上网查了不少资料,也看了一些别人设计的图书馆管理信息系统的设计报告,学以致用,自我创新,独立完成了这份自己的报告,从中在学到用,从用又到学,不断修改,系统更新。虽然不能达到完善系统,但也做到了尽善尽美,加强理论学习对完善系统会有很多帮助,不管怎么说,对这次做的课程设计自己觉得还算满意。
谁可以帮忙做下这个题目呀 数据库课程设计
数据库课程设计报告
计网0831数据库课程设计
1、数据的导入和导出今天是数据库实习的第一天,对于我们来说数据库虽然是今年刚刚学过的课程,但是我们已经考试完一段时间了,所以也很久没有翻书本了,很多知识在刚刚做的时候还是很陌生的,不得不翻一下书本,下面就是在第一天实习中所产生的问题报告和分析结果。
在做实训前,老师先给我们讲了数据库如何导入EXCL表,在老师的指导下我们学会了,为创建表提供了方便。
首先我们是建立了一个新的KCSJ数据库,建立的数据语句如下:
用SQL语句在D:\KCSJ下创建课程设计数据库(KCSJ)
(一)CREATE DATABASE KCSJ
ON
(NAME=KCSJ_DATA,
FILENAME='D:\KCSJ_DATA.MDF')
LOG ON
(NAME=KCSJ_LOG,
FILENAME='D:\KCSJ_LOG.LDF')
将KCSJ.XLS文件中的数据导入KCSJ数据库中。导入后在数据库中将生成以下五个基本表:
学生(学号,姓名,性别,年龄,入学成绩,班级,籍贯)
成绩(学号,课程号,成绩)
课程(课程号,课程名,教师名)
三角形(a,b,c,s)
回文数(A1,A2)
其中:a>学生、成绩、课程、三角形、回文数是表的名字。
b>学号、姓名、性别、班级、籍贯、课程名和教师名为字符型,长度分别为10、10、2、6、8、20、10;
c>入学成绩为整型。
d>年龄、课程号和成绩为整型或微整型。
e> A1为整型;A2为字符型,长度为2。
f> a、b、c为float类型,代表三角形的三边,s为float类型,代表三角形的面积。
在导入数据库中KCSJ.XLS文件的数据导入的时候是在所有任务--导入数据—数据源为excel97-2000-文件位置—导入表中的数据—修改类型和长度最后确定。
用企业管理器创建数据库(JW0831),将KCSJ数据库中的五个表导入该数据库中。
打开所有任务导入数据源选择KSCJ数据库下一步再选择jw0831数据库选择所有确定就可以将KCSJ数据库中的五个表导入该数据库中。
简单的结构化查询
--(1)查询学生的详细记录
select*from学生
--(2)查询学生表中前两个班级(班级名称不能重复)
select top 2班级 from学生
group by班级
在做本题的时候,由于想的比较复杂,外加题意有点模糊,所以转了很大一个圈,并在老师的侧外指导下通过group by分组才把本题做了出来。
--(3)显示把成绩表中各科学生的成绩加 20分后的信息
select*from成绩
where成绩='成绩'+20
在做本题的时候,由于题意理解错误,所以我先用updata语句来进行更新,但是在做到其它题的时候,听到老师在指导其它同学的时候,把题意一说,我才恍然大悟,自己的方向又错了。然后又重新思考,接着就做出了上面的答案。
--(4)查询来自逗宁波地学生的学号、姓名、籍贯
select学号,姓名,籍贯 from学生
where籍贯='宁波'
--(5)查询选修4号课程且考试成绩在70分以上的学生的学号以及所选修的课程号和成绩,显示前3条结果记录
select top 3*from成绩
where成绩>=70 and课程号='4'
--(6)查询入学成绩在 300-400分之内的学生的详细情况,并按入学成绩降序排序(用两种方法完成)
select* from学生
where 300<入学成绩 and入学成绩<400 order by入学成绩 desc
select* from学生
where入学成绩 between 300 and 400 order by入学成绩 desc
--(7)统计学生表中的学生人数
select count(*)from学生
对于今天的题目做的多了,忽然发现很多题的类型都差不多,都是运用基本的书本知识,然后融会贯通,举一反三,然后不费吹灰之力就做出来了,我说的不费吹灰之力是简单的,但是有些还是费了好大一番功夫的。
--(8)查询学生表中姓李,姓名列包含两个字的学生的基本情况
select* from学生
where姓名 like'李_'
--(9)查询名字中第 2个字为‘北'的学生的基本信息
select* from学生
where姓名 like'_北%
在做这几道题的时候,我解决了并也明白了—和%得区别和用途
--(10)查询选修 4号课程,成绩在 80-90分之间的学生学号和成绩
select*from成绩
where 80<=成绩 and成绩<90 and课程号='4'
--(11)查询 JW0831班和 JW0551班学生的姓名、性别及班级(用谓词查询 in)
select姓名,性别,班级 from学生 where班级 in('JW0831','JW0551')
group by姓名,性别,班级
对于本道题拿到的时候,还是愣了一下的,因为我忽然不知道什么是,对于用谓词查询 in,自己不会用,在翻书翻了一遍并且询问了同学才发现如何去用它。
--(12)查询缺少成绩的学生的学号和相应的课程号
select学号,课程号 from成绩
where成绩 is NULL
--(13)统计选修了4号课程学生人数
SELECT COUNT(*)AS'人数' FROM成绩 where课程号='4'
--(14)查询JW0831班家在河北学生的学号、姓名、性别
select学号,姓名,性别 from学生
where籍贯='河北'and班级='JW0831'
--(15)检索刘志生老师所授课程的课程号和课程名。
select课程号,课程名 from课程
where教师名='刘志生'
---(16)检索年龄大于23岁的男学生的学号和姓名。
select学号,姓名 from学生
where性别='男' and年龄>23
--(17)查询学生表中姓李的学生的基本情况
select*from学生
where姓名 like'李%'
--(18)统计学生表中所有学生逗入学成绩地的平均分、最高分、最低分
select AVG(入学成绩) as'平均成绩',max(入学成绩) as'最高分',min(入学成绩) as'最低分'from学生
--(19)查询选修了1号或者3号课程,成绩及格的学生的学号和成绩
select学号,成绩 from成绩
where成绩>=60 and课程号 in(1,3)
--(20)统计学生表中所有男女生人数
SELECT性别, COUNT(性别)AS'人数' FROM学生
group by性别
对于今天的题除了自己不太熟悉课本知识和同学讨论出来的那些分析外,对于其他的题已经没有什么问题了,因为我把今天的题做完之后,把报告写完的同时,对于明天的题我也进行了一番思考,并且还帮助其他同学解决了一些不会的问题。
星期二天气冷心情 good
3、复杂的结构化查询
--(1)检索至少选修刘志生老师所授课程中一门课程的女学生姓名。
select学生.学号,姓名,性别,课程.课程号 from学生,成绩,课程
where性别='女' and课程.课程号 in(select课程号 from课程 where教师名='刘志生')and学生.学号=成绩.学号
and课程.课程号=成绩.课程号
对于今天的课程设计不是像昨天一样那么简单了,简直是提高了一个很大的层次,简直是一步三晃啊!不容易啊!就像本题一样,在查询的时候要用一个子查询和三个条件才能把它做出来!
--(2)检索吴计算同学不学的课程的课程号。
select课程号 from课程 where课程号 not in(select成绩.课程号 from成绩,学生where姓名='吴计算' and成绩.学号=学生.学号)
在本题中,用的方法还真是一波三折啊!因为如果要查不学的课程,要先查出他学的课程,然后再排掉学过的!充分运用了not in这个语法
--(3)检索至少选修四门课程的学生学号。
select学号, count(成绩.学号)as'门数' from成绩,课程 where成绩.课程号=课程.课程号
group by成绩.学号
having count(成绩.学号)>=4
对于本题的用的是count做统计这个数据语句,外加可以用在group by语句后的having条件语句。通过本题的联系,可以很好的运用count和having语句
--(4)检索全部学生都选修的课程的课程号与课程名。
select课程.课程名,课程.课程号 from成绩,课程
where成绩.课程号=课程.课程号
group by课程.课程名,课程.课程号
having count(成绩.学号) in(select count(学生.学号)from学生)
--(5)检索选修课程包含刘志生老师所授课的学生学号。
select学号 from成绩,课程
where教师名='刘志生'and成绩.课程号=课程.课程号
--(6)统计有学生选修的课程门数。
select学号, count(成绩.学号)as'门数' from成绩,课程 where成绩.课程号=课程.课程号
group by成绩.学号
--(7)求选修4号课程的学生的平均年龄。
select AVG(年龄)as'平均年龄',成绩.课程号 from学生,成绩
where课程号='4' and学生.学号=成绩.学号
group by成绩.课程号
--(8)求刘志生老师所授课程的每门课程的学生平均成绩。
select avg(成绩.成绩)as'平均成绩',课程.课程号 from成绩,课程
where教师名='刘志生' and成绩.课程号=课程.课程号
group by课程.课程号
--(9)统计每门课程的学生选修人数(超过6人的课程才统计)。要求输出课程号和选修人数,查询结果按人数降序排列,若人数相同,按课程号升序排列。
select成绩.课程号, count(成绩.学号)as'人数' from成绩,课程
where成绩.课程号=课程.课程号
group by成绩.课程号
having count(成绩.学号)>=6
order by count(成绩.学号) asc
--(10)检索学号比陆力利同学大,而年龄比他小的学生姓名。
select学号,姓名 from学生
where学号>(select学号 from学生 where姓名='陆力利') and年龄<(select年龄 from学生 where姓名='陆力利'
--(11)求年龄大于女同学平均年龄的男学生姓名和年龄。
select姓名,年龄 from学生
where性别='男'and年龄>(select avg(年龄)as'平均年龄'from学生 where性别='女')
--(12)统计学生人数超过 5人的班级名称和对应的人数
select班级,count(学生.学号)as'人数'from学生
group by班级
having count(学生.学号)>=5
--(13)检索课程号和选修人数,查询结果按人数升序排列,若人数相同,按课程号降序排列。
select成绩.课程号, count(成绩.学号)as'人数' from成绩,课程
where成绩.课程号=课程.课程号
group by成绩.课程号
order by count(成绩.学号) asc,成绩.课程号 desc
这道题运用很多知识点,不但用了count统计还用了 group by分组外加排序
--(14)查询选修课程学生的学号、姓名、所选课程号、取得的成绩
select学生.学号,学生.姓名,成绩.课程号,成绩.成绩 from学生,成绩
where学生.学号=成绩.学号
--(15)查询学生的学号、课程号和成绩等级
select学号,课程号,成绩,(
CASE
WHEN成绩>=90 and成绩<=100 THEN'A'
WHEN成绩>=80 and成绩<90 THEN'B'
WHEN成绩>=70 and成绩<80 THEN'C'
WHEN成绩>=60 and成绩<70 THEN'D'
ELSE'E'
END) as等级
from成绩
本题运用了一个新的知识点,这个知识点是在老师的ppt课件上找到的,利用这个语句何以很好很方便的为管理系统中的成绩分等级,所以在本体中一定要记住本语句的语法如:case when……and then……else end
今天小结,通过今天一天的课程设计,我觉得我收获了很多,因为它让我以前学的不太好的知识点全部都巩固了一遍,尤其是成绩、课程、学生这些表与表的链接,每次不是这里连不上就是那里连不上,但是现在不但可以连上了,还可以帮助其他同学检查出来错误,真是一笔不小的收获,虽然今天做的题比较难,但是每一次在自己的努力下做出来都会有不小的成就感……
3、复杂的结构化查询
星期三天气冷心情 good
外面飘着雪花,美好的一天又已经开始了!实习已经到了一半,离回家的日子也近了很多,所以心情也是越实习越好了!今天的工作当然也完成的比较顺利!虽然有的还挺难的!但是相信自己一定就会成功!嘿嘿……看看自己的劳动成果就知道了!
3、复杂的结构化查询
--(16)查询选修了英语的学生的姓名和成绩;
select学生.姓名,成绩.成绩 from成绩,学生,课程
where课程.课程名='英语'and学生.学号=成绩.学号 and课程.课程号=成绩.课程号
group by学生.姓名,成绩.成绩
--(17)分别统计每个班级的男女人数(要求显示出班级、性别、对应的人数)
SELECT班级,性别, COUNT(性别)AS'人数' FROM学生
group by班级,性别
--(18)求年龄大于所有女同学年龄的男学生姓名和年龄。
select姓名,年龄 from学生
where性别='男'and年龄>(select max(年龄) from学生 where性别='女')
group by姓名,年龄
--(19)计算选修了1号课程的学生的平均成绩(要求显示出课程号和对应的平均成绩)
select课程号,avg(成绩)as'平均成绩'from成绩
where课程号='1'
group by课程号
--(20)查询选修课程学生的学号、姓名、所选课程名、取得的成绩
select学生.学号,姓名,课程.课程名,成绩.成绩 from学生,成绩,课程
where学生.学号=成绩.学号 and课程.课程号=成绩.课程号
--(21)查询学生的学号、姓名、性别及所选修各门课程的成绩(要求每位学生用一个数据行显示这些信息)
SELECT学生.学号,学生.姓名,学生.性别,
(select成绩 from成绩 where课程号='1' and学生.学号=学号) as'数学',
(select成绩 from成绩 where课程号='2' and学生.学号=学号) as'英语',
(select成绩 from成绩 where课程号='3' and学生.学号=学号) as'计算机基础',
(select成绩 from成绩 where课程号='4' and学生.学号=学号) as'数据库',
(select成绩 from成绩 where课程号='5' and学生.学号=学号) as'政治',
(select成绩 from成绩 where课程号='6' and学生.学号=学号) as'体育'
FROM学生 INNER JOIN成绩 ON学生.学号=成绩.学号
GROUP BY学生.学号,学生.姓名,学生.性别
--(22)查询李路路所学的课程名和对应的成绩,并按照成绩升序排列。
select姓名,课程名,成绩 from学生,课程,成绩
where姓名='李路路'and课程.课程号=成绩.课程号 and学生.学号=成绩.学号
order by成绩
--(23)查询平均成绩大于 75分的课程,要求显示课程名和平均成绩。
select课程名,avg(成绩)as'平均成绩' from课程,成绩
where课程.课程号=成绩.课程号
group by课程名
having avg(成绩)>=75
--(24)查询所选课程平均成绩前三名的那些学生的姓名和平均成绩。
select top 3学生.学号,姓名,avg(成绩.成绩)as'平均成绩'from成绩,学生 where学生.学号=成绩.学号 group by学生.学号,姓名 order by avg(成绩.成绩) desc
--(25)查询和李工业在同一个班级的学号和姓名
select学号,姓名 from学生
where班级 in(select班级 from学生 where姓名='李工业')
--(26)查询JW0831班中入学成绩比李里高的学生的姓名
select姓名 from学生
where班级='JW0831' and入学成绩>(select入学成绩 from学生 where姓名='李里')
--(27)在学生表中查询高于入学成绩平均分的学生学号、姓名、班级、入学成绩
select学号,姓名,班级,入学成绩 from学生
where入学成绩>(select avg(入学成绩)as'平均成绩'from学生)
--(28)查询没有选修课程的学生的学号和姓名
select学生.学号,学生.姓名 from学生
where学号 not in(select学号 from成绩 group by学号)
--(29)查询选修了 5(含5)门以上课程的学生的姓名。
select姓名 from学生,成绩,课程 where成绩.课程号=课程.课程号 and学生.学号=成绩.学号
group by成绩.学号,姓名
having count(成绩.学号)>=5
--(30)查找同名同姓的学生信息。
select a1.* from学生 a1,学生 a2
where a1.姓名=a2.姓名 and a1.学号<>a2.学号
星期四天气冷心情 good
数据管理
--(1)利用学生表创建一个新表(不含数据):优秀(学号,姓名,性别),
--然后在学生表中检索每一门课程成绩都大于等于80分的学生学号、姓名和性别,
--并把检索到的值送往优秀表中。
select学号,姓名,性别 into优秀 from学生
where 5>6
insert into优秀 select学号,姓名,性别 from学生 where学号 in(select学号 from成绩 group by学号 having min(成绩)>=80)
--(2)把李路路同学的选课和成绩全部删去。
delete from成绩
where成绩 in(select成绩 from学生,成绩 where学生.学号=成绩.学号 and姓名='李路路')
--(3)把低于总平均成绩的女同学成绩提高5%。
UPDATE成绩 SET成绩=成绩*(1+0.05) WHERE成绩<(select avg(成绩.成绩)as'平均成绩'from成绩) and学号 in(select学号 from学生 where性别='女')
--(4)把选修数学课不及格的成绩全改为空值。
UPDATE成绩 SET成绩=null WHERE成绩<60 AND课程号=(select课程号 from课程 where课程名='数学')
--(5)在成绩表修改4号课程的成绩,若成绩小于等于75分时提高5%,若成绩大于75分时提高4%(用两个UPDATE语句实现)。
UPDATE成绩 SET成绩=成绩*0.5 WHERE成绩<=75 and课程号='4'
UPDATE成绩 SET成绩=成绩*0.4 WHERE成绩>75 and课程号='4'
--(6)将选修4号课程且成绩没有及格的学生的成绩调整为 60分。
UPDATE成绩 SET成绩=60 WHERE成绩<60 AND课程号='4'
自定义函数的使用
编写一函数(hws),判断一个整数是否为回文数,若是函数值为逗是地,否则为逗否地,利用该函数判断回文数基本表中A1列的整数是否为回文数,若是,则A2列的值为逗是地,否则为逗否地。
create function hws(@A1 int)
returns char(2)
as
begin
declare@y int,@r int,@c char(2),@z int
select@y=0,@z=@A1
while@A1!=0
select@r=@A1%10,@y=@y*10+@r,@A1=@A1/10
if@y=@z
set@c='是'
else
set@c='否'
return@c
end
update回文数 set A2=dbo.hws(A1)。
星期五天气冷心情 good
游标的使用
利用游标可以访问单独数据行的特点,逐一对三角形基本表中的数据行(三条边)进行处理,求三角形的面积。
Declare yb cursor
For
Select*from三角形
Declare@a float,@b float,@c float,@p float,@s float
Open yb
Fetch next from yb into@a,@b,@c,@s
While@@fetch_status=0
Begin
If@a+@b>@c and@a+@c>@b and@b+@c>@a
select@p=(@a+@b+@c)/2.0,@s=round(sqrt(@p*(@p-@a)*(@p-@b)*(@p-@c)),2)
else
set@s=null
update三角形 set s=@s where current of yb
fetch next from yb into@a,@b,@c,@s
end
close yb
deallocate yb
心得体会
时光匆匆,一个星期的实习已经接近尾声了,对于本次的实习心情就是轻松加愉快,收获也是硕果累累,在老师的安排下,实习的过程是根据每天老师给的任务,按时完成作业然后再把报告写完根据规划每天都有条不絮的干着自己的事情,对于我是一个不会安排时间的人,生活中重来没有规划,所以事情每次干完不是紧一阵就是松一阵的,所以通过这次实习中在老师的安排下,自己也懂得了安排时间的重要性,也从中吸取到了一些经验。
在本次实习中我不仅把本学期学习的数据库基本知识进行了点到点的复习,也把它进行了巩固,在原来没有学好的地方通过本次的实习学的比以前学的更好,不仅如此,我们在做课程设计的时候还学会了独自的思考和协作,有些知识点我们运用的不是很好,但是后面再老实的帮助和在同学的探讨下,最后都把它解决了出来。除此之外,我也感觉到实习并不是因为完成任务而实习,它是为了让我们更好的掌握知识,并把知识运用到生活中去的,就像艺术一样,源于生活,而应用于生活一样。数据库的学习,也是为了以后生活中方便自己方便他人而学习的。
由于每天紧张的课程,一路都是匆匆来匆匆去,所以一个班同学的交流也是很少的,通过实习所以同学之间交流的机会也就比较多了一点,比才的感觉也因此增进了不少,以上就是本次在实习中所得到的心得,至于没有感受到的,将在以后的生活中再次的吸取生活中的经验。来进行学习中的总结。
好了,本文到此结束,如果可以帮助到大家,还望关注本站哦!