课程设计报告
设计名称:数据库课程设计 姓名: 学号: 专业班级: 系〔院〕: 设计时刻: 设计地点: 指导老师:
程设计目的
课程设计是为数据库原理及应用课程而独立开设的实践性课程,关于稳固数据库知识,加强学生的实际动手能力和提高学生综合素养
以下目的:
养学生具有C/S和B/S/S模式的数据库应用软件系统的设计和开发能力。
练掌握一种数据库系统(如SQLSERVER)的使用。
练掌握一种数据库应用软件开发工具〔如POWERBUILDER、ASP〕的使用。
过设计实际的数据库系统应用课题,进一步熟悉数据库治理系统的操作技术,提高动手能力,提高分析咨询题和解决咨询题的能力。
程设计任务与要求:
:
学生选课系统
描述:
校现有课程假设干门。
程表的信息有课程号、名字、学分、、学期、课时等。 生表的信息有学生号、名字、性不、年龄、。
课表的信息有选修课程号、学生的学号、课程学分。 户表信息有用户名、用户密码、用户权限。
要求:
实现学生表中学生信息的插进、修改、删除。 实现课程表中课程信息的插进、修改、删除。
实现选课表中得选修课程的选课信息查询、进行课程选择。 治理员进行登陆后才能访咨询此数据库。
计一完整的数据库。要求掌握数据库的设计的每个步骤;掌握数据设计各时期的输进、输出、设计环境、目标和方法;熟练的使用S库重要对象的建立、应用和维护。
程设计讲明书
析
据需求
选修信息系统需要完成功能要紧有:
课程全然信息的输进查询、修改、删除,包括课程号、课程名字、学期、课程学分等。
学生全然信息的的输进查询、修改、删除,包括学号、学生姓名、学生性不、学生年龄、系不等。 学生选课的全然信息的选课信息查询、学生进行课程选择。 治理员的全然信息的输进、查询、修改、包括用户名、密码。
务需求
课程信息局部,要求: 够查询课程信息。
够对课程信息进行插进、修改及删除的操作。 学生信息局部,要求: 够查询学生信息:
进行维护,包括插进、修改及删除的操作。 学生选课信息治理局部,要求:。 。 。
用户登录信息治理局部,要求:
够对用户个人信息进行修改、删除维护操作
模式
程类不〔课程编号,课程名、课程学分、学期、课程学时〕 生类不〔学生号,学生姓名,学生性不,学生年龄,学生系不〕
生选课类不(课程号,学生号,学生成绩) 户类不(用户名,用户密码,用户权限)
据流程图〔DFD〕
用户 用户 查询学生查询课程课程信息 分数查询 学生信息治理系统 课程信息 用户 学生信息用户 学生信息分数信息 户 删除修改信息分数信息用户 用户 用户
图1-1顶层数据流图
F5 F4 P2 查询 D2 F1 P1 登录 F3 P3 删除修改 D3D1 P4 F2 治理 D4
图1-2一层数据流图
F 数据流
数据处理 P D 表 表 表 表 信息
5各种选课、学生信息 信息 信息
数据存储
F5.1 P2.2 课程信息查询 D2 5 选择查询 P2.3 F5.2 F7 D3 成绩信息查询 F5.3 学生信息查询 D4
图1-3二层数据流图
F4.1 成绩信息治理 D2 4 选择 F4.2 学生信息治理 D3 F8 F4.3 课程信息治理 D4
图1-4二层数据流图
据字典
据流,数据处理过程,存储过程不能反映其中的数据成,数据工程,数据特性,因此用数据字典来对数据流图中的各成份进行具体
计及以后的实现提供供有关元素一致性定义和具体的描述 据流字典
流名称:读者登录标志符:F1 :无 :用户
:查询处理过程(P)
组成:用户名+密码+用户权限
流名称:学生信息查询标志符: :无 :用户
:查询处理过程(P)
组成:学号+姓名+性不+年龄+系不
流名称:课程信息查询标志符: :无 :用户
:查询处理过程(P)
组成:课程号+课程名+学分+学时+课时
流名称:成绩信息查询标志符: :无 :用户
:查询处理过程(P)
组成:学号+课程号+分数
流名称:学生信息治理标志符: :无 :用户
:查询处理过程(P)
组成:学号+姓名+性不+年龄+系不
流名称:课程信息治理标志符: :无 :用户
:查询处理过程(P)
组成:课程号+课程名+学分+学时+课时
流名称:成绩信息治理标志符: :无 :用户
:查询处理过程(P)
组成:学号+课程号+分数 据存储字典:
存储名称:用户数据库标志符: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
处理名称:治理选择标志符:P 定义:选择治理功能 条件:选择 :F4 :F8
处理名称:成绩治理选择标志符:P4.2 定义:选择治理功能 条件:选择 :F4 :F8
处理名称:学生治理选择标志符:P4.3 定义:选择治理功能 条件:选择 :F4 :F8
处理名称:课程治理选择标志符:P4.4 定义:选择治理功能 条件:选择 :F4 :F8
计
〕实体图及E-R图
所要实现的功能设计,可能建立它们之间的关系,进而实现逻辑结构功能。 系统能够划分的实体有:用户实体,学生实体,课程实体,选课记录实体。 实体图:
用户姓名 用户信息 用户权限 用户密码 用户实体及其属性图
实体图:
学生信息 所在系 生学号
图2-2学生实体及其属性图
实体图
课时 课程编号 课程信息 课程名 学分 学期 实体及其属性图 信息实体图
学生学号 选课信息 成绩 课程编号 记录实体及其属性图
图: n 选修 m 学生信息 程信息 1
1 m m n 1
E-R图
计
表3-1课程表
数据类型 Varchar(10) Varchar(20) int int int 表3-2学生表
数据类型 Varchar(10) varchar(8) varchar(2) int Varchar(20) 表3-3 成绩表
数据类型 Varchar(10) Varchar(10) int 表3-4用户表
数据类型 Varchar(16) Varchar(16) Varchar(8) 可否为空 Notnull(主键) Notnull null 讲明 用户名 密码 用户权限 可否为空 Notnull(主键) Notnull(主键) null 讲明 课程号 学生号 成绩 可否为空 notnull(主键) notnull notnull notnull null 讲明 学生号 姓名 性不 年龄 院系 可否为空 notnull(主键) notnull null null null 讲明 课程号 课程名 学分 学期 课时 中列名 no ame redt mester eriod 中列名 no ame sex age ept 中列名 no no ade 中列名 Name assword urview
4-1
计
据库物理设计时期的任务是依据具体计算机系统(DBMS和硬件等)的特点,为给定的数据库模型确定合理的存储结构和存取方法。含义:一个是要使设计出的物理数据库占用较少的存储空间,另一个对数据库的操作具有尽可能高的速度。要紧表达在后者。 立索引:
课程表在Cno属性列上建立聚拢索引,在Cname,Ccredt,Csemester,Cperiod属性列上建立非聚拢索引。 学生表在Sno属性列上建立聚拢索引,在Sname,Ssex,Sage,Sdept属性列上建立非聚拢索引 成绩表在Cno,Sno属性列上建立聚拢索引,在grade属性列上建立非聚拢索引
用户表在userName属性列上建立聚拢索引,在userPassword,userPurview属性列上建立非聚拢索引 储结构
定数据库的存储结构要紧指确定数据的存放位置和存储结构,包括确定关系、索引、日志、备份等的存储安排及存储结构,以及确。
日志文件和数据库对象(表、索引等)分不放在不同的磁盘能够革新系统的性能。因此系统将日志文件和数据文件存放在不同磁盘上
数据库 selll
ata,filename='E:\\sql\\lll_data.mdf',
MB, 2MB)
og,filename='E:\\sql\\lll_log.ldf',
MB,
20%)
学生信息表 学生表
)primarykey, 10)unique,
)
课程信息表 课程表 ), cno), 10), 10)
erchar(10) char(10)
成绩表 成绩表 ), , nt,
sno,cno),
no)referencesstudent(sno), cno)referencescourse(cno)
用户表 用户表 char(10)
swordchar(20) viewchar(10)
化
生信息表插进数据
生表(Sno,Sname,Ssex,Sage,Sdept)values('11341','李晨','男',20,'cs'); 生表values('11342','刘晨','女',19,'cs'); 生表values('11343','王敏','女',18,'ma'); 生表values('11344','张立','男',20,'is');
程信息表插进数据
程表(CnoCnameCcredtCsemesteCperiod)values('1001','数据库','4',’3’,’80’); 程表values('1002','数学','5’,’2’,’75'); 程表values('1003','信息系统','4’,’2’,’65'); 程表values('1004','操作系统','3’,’3’,’90');
绩表插进数据
绩表(sno,cno,grade)values('11341','1001',92); 绩表values('11342','1002',85); 绩表values('11343','1003',88); 绩表values('11344','1004',90);
户表插进数据
户表(usernameuserPassworduserPurview)values(‘姚春振’,’123’,’超级用户’) 户表values(‘李龙龙’,’123’,’治理员’) 户表values(‘毋康康’,’123’,’一般用户’) 户表values(‘吕斌’,’123’,’治理员’)
权限治理
三种类型的用户 理员:李龙龙,吕斌 级用户:姚春振 般用户:毋康康
触发器,存储过程
----------建立学生信息治理的存贮过程
rocedurestudentmessage
no,snamefromtbl_学生表
dentmessage
----建立课程信息的存贮过程 rocedurecoursemessage
no,snamefromtbl_课程表
ursemessage
----创立触发器score_grade_tri iggerscore_grade_tri insert,update
@score_readint
@score_read=gradefrominserted re_read>=0and@score_read<=100
作完成'
绩输进不合法,请重新输进!' ktransaction
----创立触发器triscsno
tetriggertriscsno forupdate
date(sno) n
are@sno_oldchar(10),@countint ct@sno_old=snofromdeleted
ct@count=count(*)fromstudentwheresno=@sno_old ount>0
backtransaction
现
统功能模块图:
块图如图10-1
学生选课治理系统 登录子系统 学生信息治理子系统 课程信息治理子系统 学生选课信息治理子系统 学生信息修改学生信息删除课程信息添加课程信息修改课程信息删除选课信息的查询进行课程选择的功能如下: 统:
现学生选课系统治理员。 治理子系统:
于治理员对学生信息添加、修改、删除操作,实现学生信息数据的更新。 治理子系统:
用于治理员对选修课程信息的添加、修改、删除治理,实现课程信息数据的更新。 理子系统:
于治理员对选课信息的查询和学生进行选课操作。
询数据库的要紧方式。 据访咨询方式
T的数据存取API提供3种数据访咨询方式:
通过ODBC相连,访咨询支持早期ODBC协议的数据库。
通过OLEDB相连,访咨询SQLServer2005,MicrosoftAccess,Oracle或者其他有提供OLEDB连接能力的数据库 使用SqlConnection直截了当SQLServer2005相连 过程
立数据库连接
T中使用sqlConnection类对SQLServer2005以及更高版本进行连接,那个类的构造函数同意一个可选参数,称为连接字符串,该字符库的类型、位置以及其他信息,这些属性用分号分隔,通常该字符串包含如下信息:①DataSource特性:指定SQLServer数据库所在alog特性:指定连接的SQLServer数据库的名称;③userName和userPassword特性:指定用SQLSERVER登录方式的有效帐户名和密码或ecurity=SSPI设置为Windows登录方式。 数据
图10-1系统功能模块图
据源连接以后,接下来创立数据适配器,适配器在创立过程中需要向其传递两个要素:用于包含结构化查询语句的数据描述和用于描述,创立后可利用Fill方法,将所需的数据填充在一个数据集〔DataSet〕中。 数据库的连接
ataSet采纳是断开连接的方式,因此当把数据填充到数据集后即可断开与数据库的连接。 控件指定数据源
充到数据集后,要在窗体上显示出来,那么必须把相应的数据表绑定到数据控件上。 现代码如下:
;
.Collections.Generic;
.Linq;
.Text;
.Data;
.Data.SqlClient;
.Windows.Forms;
y
DataBase
nnectiondataConnection=newSqlConnection();
taAdapterdataAdapter;
etdataSet=newDataSet();
tr=\"server=PC-20210908TULP;database=mysql;integratedsecurity=SSPI\";
etGetDataFormDB(stringsqlStr)
ion.ConnectionString=connstr;
=newSqlDataAdapter(sqlStr,dataConnection);
ar();
.Fill(dataSet);
ion.Close();
tionex)
Show(ex.Message);
ion.Close();
Tables[0].Rows.Count!=0)
et;
pdateDB(stringsqlStr)
onsqlConn=newSqlConnection(connstr);
mdTable=newSqlCommand(sqlStr,sqlConn);
mmandType=CommandType.Text;
n();
ecuteNonQuery();
se();
tionex)
Show(ex.Message);
;
录系统模块及代码
生成绩治理系统登录界面如图10-2
图10-2学生选课系统登录界面图
:
newDataBase();
ewDataSet();
r=\"selectuserPassword,userPurviewfrom用户表whereuserName='\"+txtuserName.Text.Trim()+\"'\";
taFormDB(sqlStr);
str2,str3;
les[0].Rows[0].ItemArray[0].ToString().Trim();
les[0].Rows[0].ItemArray[1].ToString().Trim();
sWord.Text.Trim();
r2)
mboBox1.Text.ToString().Trim())
m2=newForm2();
nfo[0]=txtuserName.Text.Trim();
nfo[1]=ds.Tables[0].Rows[0].ItemArray[1].ToString();
ow();
;
Show(\"用户权限错误,请重新输进\");
ext=\"\";
ocus();
Show(\"用户名或密码错误,请重新输进\");
.Text=\"\";
.Text=\"\";
.Focus();
Show(\"用户名或密码错误\",\"错误\");
系统主界面如图10-3
略
图10-3学生选课系统主界面
治理界面如图10-4
信息治理界面
生信息的添加、修改、删除操作。
Text.Trim()==\"添加\")
t=\"确定\";
bled=false;
bled=false;
bled=false;
t=\"添加\";
xt.Trim()!=\"\"&&txtName.Text.Trim()!=\"\")
r;
ertinto学生表values('\"+txtID.Text.Trim()+\"','\"+txtName.Text.Trim()+\"','\"+comSex.Text.Trim()+\"','\"+txtAge.Text.Trim()+\"','\"+txtSdept.Te
newDataBase();
DB(sqlStr);
ox.Show(\"添加成功!接着添加吗?\",\"添加学生\",MessageBoxButtons.YesNo,MessageBoxIcon.Question,MessageBoxDefaultButton.Button1)==DialogRe
);
);
ext=\"\";
null,null);
bled=true;
bled=true;
bled=true;
bled=true;
bled=true;
bled=true;
t.Enabled=true;
Show(\"学号和姓名不能为空\");
();
t=\"确定\";
);
tAll();
Text.Trim()==\"修改\")
t=\"确定\";
bled=false;
bled=false;
bled=false;
bled=true;
led=true;
abled=true;
led=true;
us();
t=\"修改\";
bled=true;
bled=true;
bled=true;
r;
ate学生表
+txtName.Text.Trim()+\"',Ssex='\"+comSex.Text.Trim()+\"',Sage='\"+txtAge.Text.Trim()+\"',Sdept='\"+txtSdept.Text.Trim()+\"'whereSno='\"+txtID.
newDataBase();
(sqlStr);
);
tionex)
Show(ex.Message);
Text.Trim()==\"删除\")
t=\"确定\";
bled=false;
bled=false;
bled=false;
t=\"删除\";
bled=true;
bled=true;
bled=true;
r;
etefrom学生表whereSno='\"+txtID.Text.Trim()+\"'\";
newDataBase();
(sqlStr);
);
null,null);
tionex)
Show(ex.Message);
治理界面如图10-5所示:
图10-5课程信息治理界面
选择课程信息的添加、修改、删除操作。
Text.Trim()==\"添加\")
t=\"确定\";
bled=false;
bled=false;
t=\"添加\";
ext.Trim()!=\"\"&&ss.Text.Trim()!=\"\")
r;
ertinto课程表
xtCno.Text.Trim()+\"','\"+txtCname.Text+\"','\"+txtCredit.Text.Trim()+\"','\"+comCsemester.Text.Trim()+\"','\"+txtCperiod.Text.Trim()+\"')\";
newDataBase();
DB(sqlStr);
ox.Show(\"添加成功!接着添加吗?\",\"添加学生\",MessageBoxButtons.YesNo,MessageBoxIcon.Question,MessageBoxDefaultButton.Button1)==DialogRe
null,null);
bled=true;
bled=true;
);
bled=true;
bled=true;
.Enabled=true;
Show(\"课程号和课程姓名不能为空\");
s();
t=\"确定\";
);
ctAll();
Text.Trim()==\"删除\")
t=\"确定\";
bled=false;
bled=false;
t=\"删除\";
bled=true;
bled=true;
r;
etefrom课程表whereCno='\"+txtCno.Text.Trim()+\"'\";
newDataBase();
(sqlStr);
);
null,null);
tionex)
Show(ex.Message);
Text.Trim()==\"修改\")
t=\"确定\";
bled=false;
bled=false;
Enabled=true;
nabled=true;
r.Enabled=true;
ocus();
t=\"修改\";
bled=true;
bled=true;
r;
ate课程表
'\"+txtCredit.Text.Trim()+\"',Csemester='\"+comCsemester.Text.Trim()+\"',Cperiod='\"+txtCperiod.Text.Trim()+\"'whereCno='\"+txtCno.Text.Trim(
newDataBase();
(sqlStr);
);
tionex)
Show(ex.Message);
界面如图10-6所示
图10-6学生选课界面
程号〔cno〕查询选择了该课程的学生信息、能够查询全部学生的选课信息情况、能够进行学生相应的选课操作。
a)
ect*from学生表whereSno='\"+textBox1.Text.Trim()+\"'\";
ect*from学生表whereSname='\"+textBox2.Text.Trim()+\"'\";
ect*from学生表whereSsex='\"+comboBox1.Text.Trim()+\"'\";
ect*from学生表whereSage='\"+textBox3.Text.Trim()+\"'\";
ect*from学生表whereSdept='\"+textBox4.Text.Trim()+\"'\";
newDataBase();
ewDataSet();
taFormDB(sqlStr);
)
Show(\"没有任何记录\");
.DataSource=ds.Tables[0];
tionex)
Show(ex.ToString());
面如图10-7所示
图10-7学生选课系统登录界面图
;
.Collections.Generic;
.ComponentModel;
.Data;
.Drawing;
.Linq;
.Text;
.Windows.Forms;
ivateQQ
alclassForm6:Form
0;
0;
()
omponent();
()
abled=true;
abled=true;
abled=true;
e()
abled=false;
abled=false;
abled=false;
xt=\"\";
xt=\"\";
xt=\"\";
Form6_Load(objectsender,EventArgse)
newDataBase();
ewDataSet();
r=\"select*from成绩表\";
taFormDB(sqlStr);
)
Show(\"没有任何数据\");
w1.DataSource=ds.Tables[0];
w1_RowHeaderMouseClick(null,null);
tionex)
Show(ex.Message);
ata()
r;
newDataBase();
ewDataSet();
ect*from成绩表\";
taFormDB(comStr);
)
w1.DataSource=ds.Tables[0];
Show(\"没有任何学生记录\");
dataGridView1_RowHeaderMouseClick(objectsender,DataGridViewCellMouseEventArgse)
ataGridView1.CurrentCell.RowIndex;
xt=this.dataGridView1[0,n].Value.ToString();
xt=this.dataGridView1[1,n].Value.ToString();
xt=this.dataGridView1[2,n].Value.ToString();
button1_Click(objectsender,EventArgse)
Text==\"插进\")
t=\"确定\";
bled=false;
bled=false;
bled=false;
t=\"插进\";
.Text!=\"\"&&textBox2.Text!=\"\")
r=\"insertinto成绩表values(Sno='\"+textBox1.Text.Trim()+\"',Cno='\"+textBox2.Text.Trim()+\"',grade='\"+textBox3.Text.Trim()+\"')\";
newDataBase();
DB(sqlStr);
ox.Show(\"添加成功!接着添加吗?\添加成绩\
);
);
ext=\"\";
null,null);
bled=true;
bled=true;
bled=true;
bled=true;
bled=true;
bled=true;
w1.Enabled=true;
Show(\"学号和课程号不能为空\");
cus();
t=\"确定\";
button2_Click(objectsender,EventArgse)
Text.Trim()==\"修改\")
t=\"确定\";
bled=false;
bled=false;
bled=false;
abled=true;
t=\"修改\";
bled=true;
bled=true;
bled=true;
r;
ate成绩表setgrade='\"+textBox3.Text.Trim()+\"'whereSno='\"+textBox2.Text.Trim()+\"'\";
newDataBase();
(sqlStr);
);
tionex)
Show(ex.Message);
button3_Click(objectsender,EventArgse)
r=null;
w1.DataSource=null;
Text==\"查询\")
t=\"确定\";
bled=false;
bled=false;
bled=false;
t=\"查询\";
ect*from成绩表whereSno='\"+textBox2.Text.Trim()+\"'\";
ect*from成绩表whereCno='\"+textBox1.Text.Trim()+\"'\";
ect*from成绩表wheregrade='\"+textBox3.Text.Trim()+\"'\";
ak;
newDataBase();
ewDataSet();
taFormDB(sqlStr);
)
Show(\"没有任何记录\");
w1.DataSource=ds.Tables[0];
bled=true;
tionex)
Show(ex.Message);
textBox2_TextChanged(objectsender,EventArgse)
abled=false;
abled=false;
textBox1_TextChanged(objectsender,EventArgse)
abled=false;
abled=false;
textBox3_TextChanged(objectsender,EventArgse)
abled=false;
abled=false;
button4_Click(objectsender,EventArgse)
null,null);
bled=true;
bled=true;
button5_Click(objectsender,EventArgse)
Form2();
;
计心得体会
来,数据库课程设计要紧的目标是利用课程中学到的数据库知识和技术较好的开发设计出数据库应用系统,往解决各行各业信息化
程设计,能够稳固我们对数据库全然原理和根底理论的理解,掌握数据库应用系统设计开发的全然方法,进一步提高我们综合运用所
这组决定做学生选课系统时,我们并没有着手写程序。这对我们来讲是一次尝试和创新的过程,也能够是是一个挑战的过程。尽管
我们依旧缺少经验。我们现在利用自己学到的知识设计并制作了一个学生选课系统,这本身确实是根基一个把知识转化为生产力的
,都不同程度的投进了横高的热情和努力。而是大伙儿一起商量那个系统概述、系统目标、系统需求、业务流程分析、数据流程分
备好了之后,我们进行模块的分工。每个人都有自己的模块设计,而且写出来的代码要求能够实现相应模块的功能,得到理想的效
工做好了,最后会由一个人把这些全部组合搭建在一起。在具有的设计与实施中,我们瞧到并感受到了一个治理系统从无到有的过
路、方法、技巧都有了进一步的了解‘并感受深刻。这次课程设计加深了我们对数据库系统设计相关知识以及SQLSERVER相关功
表、视图、索引、存储、触发器等,都比往常更加熟悉了。并在解决各种咨询题的过程中学到了许多新的知识。
,对阅读和评审本论文的各位专家表示衷心的感谢!
因篇幅问题不能全部显示,请点此查看更多更全内容