资源描述
数据库课程设计概要
信息工程学院
课程设计报告
设计名称: 数据库课程设计
姓 名:
学 号:
专业班级:
系 (院):
设计时间:
设计地点:
指导老师:
一.课程设计目的
数据库课程设计是为数据库原理及应用课程而独立开设的实践性课程,对于巩固数据库知识,加强学生的实际动手能力和提高学生综合素质十分必要。经过本实验达到以下目的:
(1) 培养学生具有C/S和B/S/S模式的数据库应用软件系统的设计和开发能力。
(2) 熟练掌握一种数据库系统(如SQL SERVER)的使用。
(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顶层数据流图
登 录
P1
F1
P3
删除修改
查询
P2
管理
P4
D2
D3
D4
D1
F2
F3
F5
F4
图1-2一层数据流图
P
数据流
数据处理
D
数据存储
F
注:
D1 用户表
D2 课程表
D3 成绩表
D4 学生表
F1 登录信息
F3,F4,F5各种选课、学生信息
F2 用户信息
F6各种信息
P2.1
选择查询
F5.1
P2.2
课程信息查询
P2.3
成绩信息查询
P2.5
学生信息查询
D3
D2
D4
F7
F5.3
F5.2
F5
图1-3二层数据流图
P4.1
选择
P4.3
学生信息管理
P4.4
课程信息管理
P4.2
成绩信息管理
D3
D2
D4
F4
F4.1
F4.2
F4.3
F8
图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
涉及处理:P4 P5
数据组成:用户名+密码+用户权限
数据存储名称:课程数据库 标志符:D2
描述:所有课程信息的详细资料
流入数据流:F3
涉及处理:P4 P5
数据组成:课程号+课程名+学分+学时+课时
数据存储名称:成绩数据库 标志符:D3
描述:所有用户的成绩数据详细资料
流入数据流:F3
涉及处理:P4 P5
数据组成:学号+课程号+分数
数据存储名称:学生数据库 标志符:D4
描述:所有学生信息的详细资料
流入数据流:F3
涉及处理:P4 P5
数据组成:学号+姓名+性别+年龄+系别
③数据处理字典:
数据处理名称:用户登录 标志符: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)
not null(主键)
课程号
Cname
Varchar(20)
not null
课程名
Ccredt
int
null
学分
Csemester
int
null
学期
Cperiod
int
null
课时
表3-2学生表
表中列名
数据类型
可否为空
说明
Sno
Varchar(10)
not null(主键)
学生号
Sname
varchar(8)
not null
姓名
Ssex
varchar(2)
not null
性别
Sage
int
not null
年龄
Sdept
Varchar(20)
null
院系
表3-3 成绩表
表中列名
数据类型
可否为空
说明
Cno
Varchar(10)
Not null(主键)
课程号
Sno
Varchar(10)
Not null(主键)
学生号
grade
int
null
成绩
表3-4 用户表
表中列名
数据类型
可否为空
说明
userName
Varchar(16)
Not null(主键)
用户名
userPassword
Varchar(16)
Not null
密码
userPurview
Varchar(8)
null
用户权限
4 关系图
4-1
5 物理设计
数据库物理设计阶段的任务是根据具体计算机系统(DBMS和硬件等)的特点,为给定的数据库模型确定合理的存储结构和存取方法。所谓的”合理”主要有两个含义:一个是要使设计出的物理数据库占用较少的存储空间,另一个对数据库的操作具有尽可能高的速度。主要体现在后者。
(1) 建立索引:
① 对课程表在Cno属性列上建立聚集索引,在Cname,Ccredt,Csemester,Cperiod属性列上建立非聚集索引。
② 对学生表在Sno属性列上建立聚集索引,在Sname,Ssex,Sage,Sdept属性列上建立非聚集索引
③ 对成绩表在Cno,Sno属性列上建立聚集索引,在grade属性列上建立非聚集索引
④ 对用户表在userName属性列上建立聚集索引,在userPassword,userPurview属性列上建立非聚集索引
(2) 存储结构
确定数据库的存储结构主要指确定数据的存放位置和存储结构,包括确定关系、索引、日志、备份等的存储安排及存储结构,以及确定系统存储参数的配置。
将日志文件和数据库对象(表、索引等)分别放在不同的磁盘能够改进系统的性能。因此系统将日志文件和数据文件存放在不同磁盘上。
6.数据库建立
(1)创立数据库
create database lll
on
(name=lll_data,filename='E:\sql\lll_data.mdf',
size=5MB,
maxsize=20MB,
filegrowth=2MB)
log on
(name=lll_log,filename='E:\sql\lll_log.ldf',
size=1MB,
maxsize=20MB,
filegrowth=20%)
(2)创立学生信息表
create table 学生表
(Sno char(10) primary key,
Sname char(10) unique,
Ssex char(5),
Sage int,
Sdept char(8)
);
(3)创立课程信息表
create table 课程表
(Cno char(10),
Primary key (cno),
Cname char(10),
Ccredt char(10)
Csemester char(10)
Cperiod char(10)
);
(4)创立成绩表
create table 成绩表
(Sno char(10),
Cno char(10),
grade smallint,
Primary key(sno,cno),
foreign key(sno) references student(sno),
foreign key(cno) references course(cno)
);
(5)创立用户表
create table 用户表
(userName char(10)
userPassword char(20)
userPurview char(10)
)
7.数据初始化
(1)往学生信息表插入数据
insert into 学生表(Sno,Sname,Ssex,Sage,Sdept)values('11341','李晨','男',20,'cs');
insert into学生表values('11342','刘晨','女',19,'cs');
insert into学生表values('11343','王敏','女',18,'ma');
insert into 学生表values('11344','张立','男',20,'is');
(2)往课程信息表插入数据
insert into课程表(Cno Cname Ccredt Csemeste Cperiod)values('1001','数据库','4',’3’,’80’);
insert into课程表values('1002','数学','5’,’2’,’75');
insert into课程表values('1003','信息系统','4’,’2’,’65');
insert into 课程表 values('1004','操作系统','3’,’3’,’90');
(3)往成绩表插入数据
insert into 成绩表(sno,cno,grade)values('11341','1001',92);
insert into成绩表values('11342','1002',85);
insert into成绩表values('11343','1003',88);
insert into成绩表values('11344','1004',90);
(4)往用户表插入数据
insert into 用户表(username userPassword userPurview)values(‘姚春振’,’123’,’超级用户’)
insert into 用户表values(‘李龙龙’,’123’,’管理员’)
insert into 用户表values(‘毋康康’,’123’,’一般用户’)
insert into 用户表values(‘吕斌’,’123’,’管理员’)
8.数据库权限管理
该系统设置三种类型的用户
(1) 管理员:李龙龙,吕斌
(2) 超级用户:姚春振
(3) 一般用户:毋康康
9、建立触发器,存储过程
--------------建立学生信息管理的存贮过程
create procedure studentmessage
as
begin
select sno,sname from tbl_学生表
end
go
exec studentmessage
go
-------------建立课程信息的存贮过程
create procedure coursemessage
as
begin
select sno,sname from tbl_课程表
end
go
exec coursemessage
go
-------------创立触发器score_grade_tri
create trigger score_grade_tri
on sc for insert,update
as
declare @score_read int
select @score_read=grade from inserted
if @score_read>=0 and @score_read<=100
begin
print '操作完成'
return
end
else
begin
print '成绩输入不合法,请重新输入!'
rollback transaction
end
-------------创立触发器triscsno
create trigger triscsno
on sc for update
as
if update(sno)
begin
declare @sno_old char(10),@count int
select @sno_old=sno from deleted
select @count=count(*) from student where sno=@sno_old
if @count>0
rollback transaction
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 相连,访问SQL Server , MicrosoftAccess, Oracle 或者其它有提供OLE DB 连接能力的数据库
c) 使用SqlConnection 直接SQL Server 相连
②VB.NET访问数据库的具体过程
a) 创立数据库连接
ADO.NET 中使用sqlConnection 类对SQL Server 以及更高版本进行连接, 这个类的构造函数接受一个可选参数,称为连接字符串,该字符串用于定义正在连接的数据库的类型、位置以及其它信息,这些属性用分号分隔,一般该字符串包含如下信息:①Data Source 特性: 指定SQL Server 数据库所在计算机名称;② Initial Catalog 特性: 指定连接的SQL Server 数据库的名称;③userName 和userPassword 特性:指定用SQL SERVER登录方式的有效帐户名和密码或设置为:integrated security=SSPI设置为Windows 登录方式。
b ) 填充数据
创立数据源连接以后, 接下来创立数据适配器,适配器在创立过程中需要向其传递两个要素:用于包含结构化查询语句的数据描述和用于指明数据库连接信息的连接描述,创立后可利用Fill 方法,将所需的数据填充在一个数据集(DataSet)中。
c ) 关闭数据库的连接
由于DataSet采用是断开连接的方式,因此当把数据填充到数据集后即可断开与数据库的连接。
d) 为控件指定数据源
数据填充到数据集后,要在窗体上显示出来,则必须把相应的数据表绑定到数据控件上。
具体实现代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using System.Windows.Forms;
namespace hcy
{
public class DataBase
{
public SqlConnection dataConnection = new SqlConnection();
public SqlDataAdapter dataAdapter;
public DataSet dataSet = new DataSet();
string connstr = "server=PC- 0908TULP;database=mysql;integrated security=SSPI";
public DataSet GetDataFormDB(string sqlStr)
{
try
{
dataConnection.ConnectionString = connstr;
dataAdapter = new SqlDataAdapter(sqlStr, dataConnection);
dataSet.Clear();
dataAdapter.Fill(dataSet);
dataConnection.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
dataConnection.Close();
}
if (dataSet.Tables[0].Rows.Count != 0)
{
return dataSet;
}
else
{
return null;
}
}
public bool UpdateDB(string sqlStr)
{
SqlConnection sqlConn = new SqlConnection(connstr);
try
{
SqlCommand cmdTable = new SqlCommand(sqlStr,sqlConn);
cmdTable.CommandType = CommandType.Text;
sqlConn.Open();
cmdTable.ExecuteNonQuery();
sqlConn.Close();
return true;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
return false;
}
}
}
(4) 登录系统模块及代码
a) 学生成绩管理系统登录界面如图10-2
图10-2学生选课系统登录界面图
登陆代码为:
try
{
DataBase db = new DataBase();
DataSet ds = new DataSet();
string sqlStr = "select userPassword,userPurview from 用户表 where userName='" + txtuserName.Text.Trim() + "'";
ds = db.GetDataFormDB(sqlStr);
string str1, str2,str3;
str1 = ds.Tables[0].Rows[0].ItemArray[0].ToString().Trim();
str3 = ds.Tables[0].Rows[0].ItemArray[1].ToString().Trim();
str2 = txtPassWord.Text.Trim();
if (str1 == str2)
{
if (str3 == comboBox1.Text.ToString().Trim())
{
Form2 ob_Form2 = new Form2();
shuzu.userInfo[0] = txtuserName.Text.Trim();
shuzu.userInfo[1] = ds.Tables[0].Rows[0].ItemArray[1].ToString();
ob_Form2.Show();
this.Hide();
}
else
{
MessageBox.Show("用户权限错误,请重新输入");
comboBox1.Text = "";
comboBox1.Focus();
}
}
else
{
MessageBox.Show("用户名或密码错误,请重新输入");
txtuserName.Text = "";
txtPassWord.Text = "";
txtuserName.Focus();
}
}
catch
{
MessageBox.Show("用户名或密码错误","错误");
}
②学生选课系统主界面如图10-3
略
图10-3学生选课系统主界面
③学生信息管理界面如图10-4
图10-4学生信息管理界面
能够进行学生信息的添加、修改、删除操作。
代码如下:
try
{
if (button1.Text.Trim() == "添加")
{
button1.Text = "确定";
ObjOpen();
Clear();
button2.Enabled = false;
button3.Enabled = false;
button4.Enabled = false;
}
else
{
button1.Text = "添加";
if (txtID.Text.Trim() != "" && txtName.Text.Trim() != "")
{
string sqlStr;
sqlStr = "insert into 学生表 values('" + txtID.Text.Trim() + "','" + txtName.Text.Trim() + "','" + comSex.Text.Trim() + "','" + txtAge.Text.Trim() + "','" + txtSdept.Text.Trim() + "')";
DataBase db = new DataBase();
bool b;
b = db.UpdataDB(sqlStr);
if (b == true)
{
if (MessageBox.Show("添加成功!继续添加吗?", "添加学生", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1) == DialogResult.Yes)
{
//Clear();
//ObjClose();
RefresData();
//butto
展开阅读全文