课程设计报告数据库.docx
《课程设计报告数据库.docx》由会员分享,可在线阅读,更多相关《课程设计报告数据库.docx(49页珍藏版)》请在冰豆网上搜索。
![课程设计报告数据库.docx](https://file1.bdocx.com/fileroot1/2023-1/26/1eb0cf66-8c4d-4c01-884e-3db55ed83741/1eb0cf66-8c4d-4c01-884e-3db55ed837411.gif)
课程设计报告数据库
信息工程学院
课程设计报告
设计名称:
数据库课程设计
姓名:
学号:
专业班级:
系(院):
设计时间:
设计地点:
指导老师:
一.课程设计目的
数据库课程设计是为数据库原理及应用课程而独立开设的实践性课程,对于巩固数据库知识,加强学生的实际动手能力和提高学生综合素质十分必要。
通过本实验达到以下目的:
(1)培养学生具有C/S和B/S/S模式的数据库应用软件系统的设计和开发能力。
(2)熟练掌握一种数据库系统(如SQLSERVER)的使用。
(3)熟练掌握一种数据库应用软件开发工具(如POWERBUILDER、ASP、VB.NET)的使用。
(4)通过设计实际的数据库系统应用课题,进一步熟悉数据库管理系统的操作技术,提高动手能力,提高分析问题和解决问题的能力。
二.课程设计任务与要求:
1、任务:
学生选课系统
问题描述:
1)学校现有课程若干门。
2)课程表的信息有课程号、名字、学分、、学期、课时等。
3)学生表的信息有学生号、名字、性别、年龄、。
4)选课表的信息有选修课程号、学生的学号、课程学分。
5)用户表信息有用户名、用户密码、用户权限。
2、设计要求:
1)实现学生表中学生信息的插入、修改、删除。
2)实现课程表中课程信息的插入、修改、删除。
3)实现选课表中得选修课程的选课信息查询、进行课程选择。
4)管理员进行登陆后才能访问此数据库。
5)设计一完整的数据库。
要求掌握数据库的设计的每个步骤;掌握数据设计各阶段的输入、输出、设计环境、目标和方法;熟练的使用SQL语言实现数据库以及数据库重要对象的建立、应用和维护。
三.课程设计说明书
1需求分析
(1)数据需求
学生选修信息系统需要完成功能主要有:
1、课程基本信息的输入查询、修改、删除,包括课程号、课程名字、学期、课程学分等。
2、学生基本信息的的输入查询、修改、删除,包括学号、学生姓名、学生性别、学生年龄、系别等。
3、学生选课的基本信息的选课信息查询、学生进行课程选择。
4、管理员的基本信息的输入、查询、修改、包括用户名、密码。
(2)事务需求
①在课程信息部分,要求:
a.可以查询课程信息。
b.可以对课程信息进行插入、修改及删除的操作。
②在学生信息部分,要求:
a.可以查询学生信息:
b.可以对学生信息进行维护,包括插入、修改及删除的操作。
③在学生选课信息管理部分,要求:
。
a.可以学生选课信息。
b.可以对学生选课信息进行查询及学生选课操作。
④在用户登录信息管理部分,要求:
a.能够使用用户信息进行登录访问
b.可以对用户个人信息进行修改、删除维护操作
(3)关系模式
(1)课程类别(课程编号,课程名、课程学分、学期、课程学时)
(2)学生类别(学生号,学生姓名,学生性别,学生年龄,学生系别)
(3)学生选课类别(课程号,学生号,学生成绩)
(4)用户类别(用户名,用户密码,用户权限)
(4)数据流程图(DFD)
图1-1顶层数据流图
图1-2一层数据流图
注:
D1用户表
D2课程表
D3成绩表
D4学生表
F1登录信息
F3,F4,F5各种选课、学生信息
F2用户信息
F6各种信息
图1-3二层数据流图
图1-4二层数据流图
(5)数据字典
为了使各数据流,数据处理过程,存储过程不能反映其中的数据成,数据项目,数据特性,所以用数据字典来对数据流图中的各成份进行具体的定义,为系统的分析,设计及以后的实现提供供有关元素一致性定义和详细的描述
①数据流字典
数据流名称:
读者登录标志符:
F1
别名:
无
来源:
用户
去向:
查询处理过程(P)
数据组成:
用户名+密码+用户权限
数据流名称:
学生信息查询标志符:
F5.3
别名:
无
来源:
用户
去向:
查询处理过程(P2.3)
数据组成:
学号+姓名+性别+年龄+系别
数据流名称:
课程信息查询标志符:
F5.1
别名:
无
来源:
用户
去向:
查询处理过程(P2.1)
数据组成:
课程号+课程名+学分+学时+课时
数据流名称:
成绩信息查询标志符:
F5.2
别名:
无
来源:
用户
去向:
查询处理过程(P2.2)
数据组成:
学号+课程号+分数
数据流名称:
学生信息管理标志符:
F4.2
别名:
无
来源:
用户
去向:
查询处理过程(P4.2)
数据组成:
学号+姓名+性别+年龄+系别
数据流名称:
课程信息管理标志符:
F4.3
别名:
无
来源:
用户
去向:
查询处理过程(P4.3)
数据组成:
课程号+课程名+学分+学时+课时
数据流名称:
成绩信息管理标志符:
F4.1
别名:
无
来源:
用户
去向:
查询处理过程(P4.4)
数据组成:
学号+课程号+分数
②数据存储字典:
数据存储名称:
用户数据库标志符:
D1
描述:
所有用户的信息
流入数据流:
F1
涉及处理:
P4P5
数据组成:
用户名+密码+用户权限
数据存储名称:
课程数据库标志符:
D2
描述:
所有课程信息的详细资料
流入数据流:
F3
涉及处理:
P4P5
数据组成:
课程号+课程名+学分+学时+课时
数据存储名称:
成绩数据库标志符:
D3
描述:
所有用户的成绩数据详细资料
流入数据流:
F3
涉及处理:
P4P5
数据组成:
学号+课程号+分数
数据存储名称:
学生数据库标志符:
D4
描述:
所有学生信息的详细资料
流入数据流:
F3
涉及处理:
P4P5
数据组成:
学号+姓名+性别+年龄+系别
③数据处理字典:
数据处理名称:
用户登录标志符:
P1
处理定义:
登录系统
激发条件:
所输入用户民和密码正确
输入:
F1
输出:
F4,F5,F6
数据处理名称:
查询选择标志符:
P2.1
处理定义:
选择查询方式
激发条件:
已选择查询方式
输入:
F5
输出:
F7
数据处理名称:
学生查询选择标志符:
P2.2
处理定义:
选择查询方式
激发条件:
已选择查询方式
输入:
F4
输出:
F7
数据处理名称:
成绩查询选择标志符:
P2.3
处理定义:
选择查询方式
激发条件:
已选择查询方式
输入:
F4
输出:
F7
数据处理名称:
课程查询选择标志符:
P2.4
处理定义:
选择查询方式
激发条件:
已选择查询方式
输入:
F4
输出:
F7
数据处理名称:
管理选择标志符:
P4.1
处理定义:
选择管理功能
激发条件:
选择
输入:
F4
输出:
F8
数据处理名称:
成绩管理选择标志符:
P4.2
处理定义:
选择管理功能
激发条件:
选择
输入:
F4
输出:
F8
数据处理名称:
学生管理选择标志符:
P4.3
处理定义:
选择管理功能
激发条件:
选择
输入:
F4
输出:
F8
数据处理名称:
课程管理选择标志符:
P4.4
处理定义:
选择管理功能
激发条件:
选择
输入:
F4
输出:
F8
2概要设计
(1)实体图及E-R图
所要实现的功能设计,可能建立它们之间的关系,进而实现逻辑结构功能。
该选课系统可以划分的实体有:
用户实体,学生实体,课程实体,选课记录实体。
①用户信息实体图:
图2-1用户实体及其属性图
②学生信息实体图:
图2-2学生实体及其属性图
③课程信息实体图
图2-3课程实体及其属性图
④选课记录信息实体图
图2-4选课记录实体及其属性图
m
n
⑨总的E-R图:
m
1
1
1
n
m
图2-5总的E-R图
3逻辑设计
表3-1课程表
表中列名
数据类型
可否为空
说明
Cno
Varchar(10)
notnull(主键)
课程号
Cname
Varchar(20)
notnull
课程名
Ccredt
int
null
学分
Csemester
int
null
学期
Cperiod
int
null
课时
表3-2学生表
表中列名
数据类型
可否为空
说明
Sno
Varchar(10)
notnull(主键)
学生号
Sname
varchar(8)
notnull
姓名
Ssex
varchar
(2)
notnull
性别
Sage
int
notnull
年龄
Sdept
Varchar(20)
null
院系
表3-3 成绩表
表中列名
数据类型
可否为空
说明
Cno
Varchar(10)
Notnull(主键)
课程号
Sno
Varchar(10)
Notnull(主键)
学生号
grade
int
null
成绩
表3-4用户表
表中列名
数据类型
可否为空
说明
userName
Varchar(16)
Notnull(主键)
用户名
userPassword
Varchar(16)
Notnull
密码
userPurview
Varchar(8)
null
用户权限
4关系图
4-1
5物理设计
数据库物理设计阶段的任务是根据具体计算机系统(DBMS和硬件等)的特点,为给定的数据库模型确定合理的存储结构和存取方法。
所谓的“合理”主要有两个含义:
一个是要使设计出的物理数据库占用较少的存储空间,另一个对数据库的操作具有尽可能高的速度。
主要体现在后者。
(1)建立索引:
1对课程表在Cno属性列上建立聚集索引,在Cname,Ccredt,Csemester,Cperiod属性列上建立非聚集索引。
2对学生表在Sno属性列上建立聚集索引,在Sname,Ssex,Sage,Sdept属性列上建立非聚集索引
3对成绩表在Cno,Sno属性列上建立聚集索引,在grade属性列上建立非聚集索引
4对用户表在userName属性列上建立聚集索引,在userPassword,userPurview属性列上建立非聚集索引
(2)存储结构
确定数据库的存储结构主要指确定数据的存放位置和存储结构,包括确定关系、索引、日志、备份等的存储安排及存储结构,以及确定系统存储参数的配置。
将日志文件和数据库对象(表、索引等)分别放在不同的磁盘可以改进系统的性能。
所以系统将日志文件和数据文件存放在不同磁盘上。
6.数据库建立
(1)创建数据库
createdatabaselll
on
(name=lll_data,filename='E:
\sql\lll_data.mdf',
size=5MB,
maxsize=20MB,
filegrowth=2MB)
logon
(name=lll_log,filename='E:
\sql\lll_log.ldf',
size=1MB,
maxsize=20MB,
filegrowth=20%)
(2)创建学生信息表
createtable学生表
(Snochar(10)primarykey,
Snamechar(10)unique,
Ssexchar(5),
Sageint,
Sdeptchar(8)
);
(3)创建课程信息表
createtable课程表
(Cnochar(10),
Primarykey(cno),
Cnamechar(10),
Ccredtchar(10)
Csemesterchar(10)
Cperiodchar(10)
);
(4)创建成绩表
createtable成绩表
(Snochar(10),
Cnochar(10),
gradesmallint,
Primarykey(sno,cno),
foreignkey(sno)referencesstudent(sno),
foreignkey(cno)referencescourse(cno)
);
(5)创建用户表
createtable用户表
(userNamechar(10)
userPasswordchar(20)
userPurviewchar(10)
)
7.数据初始化
(1)往学生信息表插入数据
insertinto学生表(Sno,Sname,Ssex,Sage,Sdept)values('11341','李晨','男',20,'cs');
insertinto学生表values('11342','刘晨','女',19,'cs');
insertinto学生表values('11343','王敏','女',18,'ma');
insertinto学生表values('11344','张立','男',20,'is');
(2)往课程信息表插入数据
insertinto课程表(CnoCnameCcredtCsemesteCperiod)values('1001','数据库','4',’3’,’80’);
insertinto课程表values('1002','数学','5’,’2’,’75');
insertinto课程表values('1003','信息系统','4’,’2’,’65');
insertinto课程表values('1004','操作系统','3’,’3’,’90');
(3)往成绩表插入数据
insertinto成绩表(sno,cno,grade)values('11341','1001',92);
insertinto成绩表values('11342','1002',85);
insertinto成绩表values('11343','1003',88);
insertinto成绩表values('11344','1004',90);
(4)往用户表插入数据
insertinto用户表(usernameuserPassworduserPurview)values(‘姚春振’,’123’,’超级用户’)
insertinto用户表values(‘李龙龙’,’123’,’管理员’)
insertinto用户表values(‘毋康康’,’123’,’一般用户’)
insertinto用户表values(‘吕斌’,’123’,’管理员’)
8.数据库权限管理
该系统设置三种类型的用户
(1)管理员:
李龙龙,吕斌
(2)超级用户:
姚春振
(3)一般用户:
毋康康
9、建立触发器,存储过程
--------------建立学生信息管理的存贮过程
createprocedurestudentmessage
as
begin
selectsno,snamefromtbl_学生表
end
go
execstudentmessage
go
-------------建立课程信息的存贮过程
createprocedurecoursemessage
as
begin
selectsno,snamefromtbl_课程表
end
go
execcoursemessage
go
-------------创建触发器score_grade_tri
createtriggerscore_grade_tri
onscforinsert,update
as
declare@score_readint
select@score_read=gradefrominserted
if@score_read>=0and@score_read<=100
begin
print'操作完成'
return
end
else
begin
print'成绩输入不合法,请重新输入!
'
rollbacktransaction
end
-------------创建触发器triscsno
createtriggertriscsno
onscforupdate
as
ifupdate(sno)
begin
declare@sno_oldchar(10),@countint
select@sno_old=snofromdeleted
select@count=count(*)fromstudentwheresno=@sno_old
if@count>0
rollbacktransaction
End
10系统实现
(1)系统功能模块图:
系统功能模块图如图10-1
图10-1系统功能模块图
四个子系统的功能如下:
①登录子系统:
可以实现学生选课系统管理员。
②学生信息管理子系统:
主要用于管理员对学生信息添加、修改、删除操作,实现学生信息数据的更新。
③课程信息管理子系统:
主要用于管理员对选修课程信息的添加、修改、删除管理,实现课程信息数据的更新。
④成绩表管理子系统:
主要用于管理员对选课信息的查询和学生进行选课操作。
(2)前台开发平台的选择:
VB.NET
(3)VB.NET与数据库的连接
ADO.NET是VB.NET访问数据库的主要方式。
①ADO.NET的数据访问方式
ADO.NET的数据存取API提供3种数据访问方式:
a)通过ODBC相连,访问支持早期ODBC协议的数据库。
b)通过OLEDB相连,访问SQLServer2005,MicrosoftAccess,Oracle或者其他有提供OLEDB连接能力的数据库
c)使用SqlConnection直接SQLServer2005相连
②VB.NET访问数据库的具体过程
a)创建数据库连接
ADO.NET中使用sqlConnection类对SQLServer2005以及更高版本进行连接,这个类的构造函数接受一个可选参数,称为连接字符串,该字符串用于定义正在连接的数据库的类型、位置以及其他信息,这些属性用分号分隔,通常该字符串包含如下信息:
①DataSource特性:
指定SQLServer数据库所在计算机名称;②InitialCatalog特性:
指定连接的SQLServer数据库的名称;③userName和userPassword特性:
指定用SQLSERVER登录方式的有效帐户名和密码或设置为:
integratedsecurity=SSPI设置为Windows登录方式。
b)填充数据
创建数据源连接以后,接下来创建数据适配器,适配器在创建过程中需要向其传递两个要素:
用于包含结构化查询语句的数据描述和用于指明数据库连接信息的连接描述,创建后可利用Fill方法,将所需的数据填充在一个数据集(DataSet)中。
c)关闭数据库的连接
由于DataSet采用是断开连接的方式,所以当把数据填充到数据集后即可断开与数据库的连接。
d)为控件指定数据源
数据填充到数据集后,要在窗体上显示出来,则必须把相应的数据表绑定到数据控件上。
具体实现代码如下:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Data;
usingSystem.Data.SqlClient;
usingSystem.Windows.Forms;
namespacehcy
{
publicclassDataBase
{
publicSqlConnectiondataConnection=newSqlConnection();
publicSqlDataAdapterdataAdapter;
publicDataSetdataSet=newDataSet();
stringconnstr="server=PC-20100908TULP;database=mysql;integratedsecurity=SSPI";
publicDataSetGetDataFormDB(stringsqlStr)
{
try
{
dataConnection.ConnectionString=connstr;
dataAdapter=newSqlDataAdapter(sqlStr,dataConnection);
dataSet.Clear();
dataAdapter.Fill(dataSet);
dataConnection.Close();
}
catch(Exceptionex)
{
MessageBox.Show(ex.Message);
dataConnection.Close();
}
if(dataSet.Tables[0].Rows.Count!
=0)
{
returndataSet;
}
else
{
returnnull;
}
}
publicboolUpdateDB(stringsqlStr)
{
SqlConnectionsqlConn=newSqlConnection(connstr);
try
{
SqlCommandcmdTable=newSqlCommand(sqlStr,sqlConn);
cmdTable.CommandType=CommandType.Text;
sqlConn.Open();
cmdTable.ExecuteNonQuery();
sqlConn.Close();
returntrue;
}
catch(Exceptionex)
{
MessageBox.Show(ex.Message);
returnfalse;
}
}
}
(4)登录系统模块及代码
a)学生成绩管理系统登录界面如图10-2
图10-2学生选课系统登录界面图
登陆代码为:
try
{
DataBasedb=newDataBase();
DataSetds=newDataSet();
stringsqlStr="selectuserPassword,userPurviewfrom用户表whereuserName='"+txtuserName.Text.Trim()+"'";
ds=db.GetDataFormDB(sqlStr);
stringstr1,str2,str3;
str1=ds.Tables[0].Rows[0].ItemArray[0].ToString().Trim();
str3=ds.Table