《数据库课程设计概要.docx》由会员分享,可在线阅读,更多相关《数据库课程设计概要.docx(32页珍藏版)》请在课桌文档上搜索。
1、 信息工程学院课程设计报告设计名称: 数据库课程设计 姓 名: 学 号: 专业班级: 系 (院): 设计时间: 设计地点: 指导老师: 一课程设计目的数据库课程设计是为数据库原理及应用课程而独立开设的实践性课程,对于巩固数据库知识,加强学生的实际动手能力和提高学生综合素质十分必要。通过本实验达到以下目的:(1) 培养学生具有C/S和B/S/S模式的数据库应用软件系统的设计和开发能力。(2) 熟练掌握一种数据库系统(如SQL SERVER)的使用。(3) 熟练掌握一种数据库应用软件开发工具(如POWERBUILDER 、ASP、VB.NET)的使用。(4) 通过设计实际的数据库系统应用课题,进一
2、步熟悉数据库管理系统的操作技术,提高动手能力,提高分析问题和解决问题的能力。二课程设计任务与要求:1、任务:学生选课系统问题描述:1) 学校现有课程若干门。2) 课程表的信息有课程号、名字、学分、学期、课时等。3) 学生表的信息有学生号、名字、性别、年龄、。4) 选课表的信息有选修课程号、学生的学号、课程学分。5) 用户表信息有用户名、用户密码、用户权限。2、设计要求:1) 实现学生表中学生信息的插入、修改、删除。2) 实现课程表中课程信息的插入、修改、删除。3) 实现选课表中得选修课程的选课信息查询、进行课程选择。4) 管理员进行登陆后才能访问此数据库。5)设计一完整的数据库。要求掌握数据库
3、的设计的每个步骤;掌握数据设计各阶段的输入、输出、设计环境、目标和方法;熟练的使用SQL语言实现数据库以及数据库重要对象的建立、应用和维护。三课程设计说明书1 需求分析(1)数据需求学生选修信息系统需要完成功能主要有:1、课程基本信息的输入查询、修改、删除,包括课程号、课程名字、学期、课程学分等。2、学生基本信息的的输入查询、修改、删除,包括学号、学生姓名、学生性别、学生年龄、系别等。3、学生选课的基本信息的选课信息查询、学生进行课程选择。4、管理员的基本信息的输入、查询、修改、包括用户名、密码。(2)事务需求在课程信息部分,要求:a.可以查询课程信息。b.可以对课程信息进行插入、修改及删除的
4、操作。在学生信息部分,要求:a.可以查询学生信息:b.可以对学生信息进行维护,包括插入、修改及删除的操作。在学生选课信息管理部分,要求:。a.可以学生选课信息。b.可以对学生选课信息进行查询及学生选课操作。在用户登录信息管理部分,要求:a.能够使用用户信息进行登录访问b.可以对用户个人信息进行修改、删除维护操作 (3)关系模式(1)课程类别(课程编号,课程名、课程学分、学期、课程学时)(2)学生类别(学生号,学生姓名,学生性别,学生年龄,学生系别 )(3) 学生选课类别(课程号,学生号,学生成绩)(4) 用户类别(用户名,用户密码,用户权限)(4)数据流程图(DFD)删除修改信息图1-1顶层数
5、据流图图1-2一层数据流图注:D1 用户表D2 课程表 D3 成绩表D4 学生表F1 登录信息F3,F4,F5各种选课、学生信息 F2 用户信息F6各种信息图1-3二层数据流图图1-4二层数据流图(5)数据字典 为了使各数据流,数据处理过程,存储过程不能反映其中的数据成,数据项目,数据特性,所以用数据字典来对数据流图中的各成份进行具体的定义,为系统的分析,设计及以后的实现提供供有关元素一致性定义和详细的描述数据流字典数据流名称:读者登录 标志符:F1别名:无来源:用户去向:查询处理过程(P)数据组成:用户名+密码+用户权限数据流名称:学生信息查询 标志符:F5.3别名:无来源:用户去向: 查询
6、处理过程(P2.3)数据组成: 学号+姓名+性别+年龄+系别数据流名称:课程信息查询 标志符:F5.1别名:无来源:用户去向: 查询处理过程(P2.1)数据组成: 课程号+课程名+学分+学时+课时数据流名称:成绩信息查询 标志符:F5.2别名:无来源:用户去向: 查询处理过程(P2.2)数据组成: 学号+课程号+分数数据流名称:学生信息管理 标志符:F4.2别名:无来源:用户去向: 查询处理过程(P4.2)数据组成: 学号+姓名+性别+年龄+系别数据流名称:课程信息管理 标志符:F4.3别名:无来源:用户去向: 查询处理过程(P4.3)数据组成:课程号+课程名+学分+学时+课时数据流名称:成绩
7、信息管理 标志符:F4.1别名:无来源:用户去向: 查询处理过程(P4.4)数据组成:学号+课程号+分数数据存储字典:数据存储名称:用户数据库 标志符:D1描述:所有用户的信息流入数据流:F1涉及处理:P4 P5数据组成:用户名+密码+用户权限数据存储名称:课程数据库 标志符:D2描述:所有课程信息的详细资料流入数据流:F3涉及处理:P4 P5数据组成:课程号+课程名+学分+学时+课时数据存储名称:成绩数据库 标志符:D3描述:所有用户的成绩数据详细资料流入数据流:F3涉及处理:P4 P5数据组成:学号+课程号+分数数据存储名称:学生数据库 标志符:D4描述:所有学生信息的详细资料流入数据流:
8、F3涉及处理:P4 P5数据组成:学号+姓名+性别+年龄+系别数据处理字典:数据处理名称:用户登录 标志符:P1处理定义:登录系统 激发条件:所输入用户民和密码正确输入:F1输出:F4,F5,F6数据处理名称:查询选择 标志符:P2.1处理定义:选择查询方式 激发条件:已选择查询方式输入:F5输出:F7数据处理名称:学生查询选择 标志符:P2.2处理定义:选择查询方式 激发条件:已选择查询方式输入:F4输出:F7数据处理名称:成绩查询选择 标志符:P2.3处理定义:选择查询方式 激发条件:已选择查询方式输入:F4输出:F7数据处理名称:课程查询选择 标志符:P2.4处理定义:选择查询方式 激发
9、条件:已选择查询方式输入:F4输出:F7数据处理名称:管理选择 标志符:P4.1处理定义:选择管理功能 激发条件:选择输入:F4输出:F8数据处理名称:成绩管理选择 标志符:P4.2处理定义:选择管理功能 激发条件:选择输入:F4输出:F8数据处理名称:学生管理选择 标志符:P4.3处理定义:选择管理功能 激发条件:选择输入:F4输出:F8数据处理名称:课程管理选择 标志符:P4.4处理定义:选择管理功能 激发条件:选择输入:F4输出:F82 概要设计(1)实体图及E-R图所要实现的功能设计,可能建立它们之间的关系,进而实现逻辑结构功能。该选课系统可以划分的实体有:用户实体,学生实体,课程实体
10、,选课记录实体。用户信息实体图: 图2-1 用户实体及其属性图学生信息实体图: 图2-2 学生实体及其属性图课程信息实体图 图2-3 课程实体及其属性图选课记录信息实体图 图2-4 选课记录实体及其属性图mn总的E-R图: m111nm 图2-5 总的E-R图3逻辑设计表3-1课程表表中列名数据类型可否为空说明CnoVarchar(10)not null(主键)课程号CnameVarchar(20)not null课程名Ccredtintnull学分Csemesterintnull学期Cperiodintnull课时表3-2学生表表中列名数据类型可否为空说明SnoVarchar(10)not
11、null(主键)学生号Snamevarchar(8)not null姓名Ssexvarchar(2)not null性别Sageintnot null年龄SdeptVarchar(20)null院系表3-3成绩表表中列名数据类型可否为空说明CnoVarchar(10)Not null(主键)课程号SnoVarchar(10)Not null(主键)学生号gradeintnull成绩 表3-4 用户表表中列名数据类型可否为空说明userNameVarchar(16)Not null(主键)用户名userPasswordVarchar(16)Not null密码userPurviewVarchar
12、(8)null用户权限4 关系图4-15 物理设计 数据库物理设计阶段的任务是根据具体计算机系统(DBMS和硬件等)的特点,为给定的数据库模型确定合理的存储结构和存取方法。所谓的“合理”主要有两个含义:一个是要使设计出的物理数据库占用较少的存储空间,另一个对数据库的操作具有尽可能高的速度。主要体现在后者。(1) 建立索引: 对课程表在Cno属性列上建立聚集索引,在Cname,Ccredt,Csemester,Cperiod属性列上建立非聚集索引。 对学生表在Sno属性列上建立聚集索引,在Sname,Ssex,Sage,Sdept属性列上建立非聚集索引 对成绩表在Cno,Sno属性列上建立聚集索
13、引,在grade属性列上建立非聚集索引 对用户表在userName属性列上建立聚集索引,在userPassword,userPurview属性列上建立非聚集索引(2) 存储结构确定数据库的存储结构主要指确定数据的存放位置和存储结构,包括确定关系、索引、日志、备份等的存储安排及存储结构,以及确定系统存储参数的配置。将日志文件和数据库对象(表、索引等)分别放在不同的磁盘可以改进系统的性能。所以系统将日志文件和数据文件存放在不同磁盘上。6.数据库建立(1)创建数据库create database lllon(name=lll_data,filename=E:sqllll_data.mdf,size=
14、5MB,maxsize=20MB,filegrowth=2MB)log on(name=lll_log,filename=E:sqllll_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 cha
15、r(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)userP
16、urview 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
17、,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)往用
18、户表插入数据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 studentmessageasbegin
19、select sno,sname from tbl_学生表endgoexec studentmessagego-建立课程信息的存贮过程create procedure coursemessageasbeginselect sno,sname from tbl_课程表endgoexec coursemessagego-创建触发器score_grade_tricreate trigger score_grade_trion sc for insert,updateasdeclare score_read intselect score_read=grade from insertedif scor
20、e_read=0 and score_read0rollback transactionEnd10 系统实现(1) 系统功能模块图:系统功能模块图如图10-1图10-1系统功能模块图四个子系统的功能如下:登录子系统: 可以实现学生选课系统管理员。学生信息管理子系统:主要用于管理员对学生信息添加、修改、删除操作,实现学生信息数据的更新。课程信息管理子系统: 主要用于管理员对选修课程信息的添加、修改、删除管理,实现课程信息数据的更新。成绩表管理子系统:主要用于管理员对选课信息的查询和学生进行选课操作。(2) 前台开发平台的选择:VB.NET(3) VB.NET与数据库的连接ADO.NET是VB.N
21、ET访问数据库的主要方式。ADO.NET的数据访问方式ADO.NET 的数据存取API 提供3 种数据访问方式: a) 通过ODBC 相连,访问支持早期ODBC 协议的数据库。b) 通过OLEDB 相连,访问SQL Server2005, MicrosoftAccess, Oracle 或者其他有提供OLE DB 连接能力的数据库c) 使用SqlConnection 直接SQL Server2005 相连VB.NET访问数据库的具体过程a) 创建数据库连接ADO.NET 中使用sqlConnection 类对SQL Server2005 以及更高版本进行连接, 这个类的构造函数接受一个可选参数
22、,称为连接字符串,该字符串用于定义正在连接的数据库的类型、位置以及其他信息,这些属性用分号分隔,通常该字符串包含如下信息:Data Source 特性: 指定SQL Server 数据库所在计算机名称; Initial Catalog 特性: 指定连接的SQL Server 数据库的名称;userName 和userPassword 特性:指定用SQL SERVER登录方式的有效帐户名和密码或设置为:integrated security=SSPI设置为Windows 登录方式。b ) 填充数据创建数据源连接以后, 接下来创建数据适配器,适配器在创建过程中需要向其传递两个要素:用于包含结构化查
23、询语句的数据描述和用于指明数据库连接信息的连接描述,创建后可利用Fill 方法,将所需的数据填充在一个数据集(DataSet)中。c ) 关闭数据库的连接由于DataSet采用是断开连接的方式,所以当把数据填充到数据集后即可断开与数据库的连接。 d) 为控件指定数据源数据填充到数据集后,要在窗体上显示出来,则必须把相应的数据表绑定到数据控件上。具体实现代码如下:using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Data;using System.Data.
24、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-20100908TULP;database=mysql;integrated security=SSPI; public DataS
25、et 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.Tables0.R
26、ows.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(); re
27、turn 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
28、= db.GetDataFormDB(sqlStr); string str1, str2,str3; str1 = ds.Tables0.Rows0.ItemArray0.ToString().Trim(); str3 = ds.Tables0.Rows0.ItemArray1.ToString().Trim(); str2 = txtPassWord.Text.Trim(); if (str1 = str2) if (str3 = comboBox1.Text.ToString().Trim() Form2 ob_Form2 = new Form2(); shuzu.userInfo0 =
29、 txtuserName.Text.Trim(); shuzu.userInfo1 = ds.Tables0.Rows0.ItemArray1.ToString(); ob_Form2.Show(); this.Hide(); else MessageBox.Show(用户权限错误,请重新输入); comboBox1.Text = ; comboBox1.Focus(); else MessageBox.Show(用户名或密码错误,请重新输入); txtuserName.Text = ; txtPassWord.Text = ; txtuserName.Focus(); catch Messa
30、geBox.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(
31、) != & 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.
32、Show(添加成功!继续添加吗?, 添加学生, MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1) = DialogResult.Yes) /Clear(); /ObjClose(); RefresData(); /button1.Text = ; Form3_Load(null, null); button2.Enabled = true; button3.Enabled = true; button4.Enabled = true; else ObjClose(); button2.Enabled = true; button3.Enabled = true; button4.Enabled = true; dgrdvStudent.Enabled = true; else