学生信息管理系统86018知识分享.docx
《学生信息管理系统86018知识分享.docx》由会员分享,可在线阅读,更多相关《学生信息管理系统86018知识分享.docx(28页珍藏版)》请在冰豆网上搜索。
学生信息管理系统86018知识分享
学生信息管理系统86018
课程设计
课程设计名称:
数据库应用课程设计
专业班级:
计算机应用技术0802
学生姓名:
王慕尊
学号:
200838940206
指导教师:
苏小玲
课程设计时间2011.12.20-2010.12.24
计算机应用技术专业课程设计任务书
学生姓名
王慕尊
专业班级
0802班
学号
200838940206
题目
学生信息管理系统
课题性质
A.工程设计
课题来源
D.自拟课题
指导教师
苏小玲
同组姓名
无
主要内容
通过与学籍管理系统数据库用户的交谈、团队的分析、市场需求等方式,获得了学籍管理系统的数据需求。
·为了保证安全对于每个登陆的用户进行记录,一个用户在不同的时间可能有多个登录信息。
·一个学校有多个院系,一个院系有多个专业,每个专业包含多个班级,每个班级包含多名学生。
·每个专业包含自身的专业课程和全校的公共选修课,其中课程与专业存在多对多的关系。
·每个学生通过一个唯一的学号来标识,学籍管理系统存储学生的各种信息如:
姓名、学号、出生日期等内容,同时每个学生需要学习多门课程,对于有多门课程的成绩。
而每门课程有多名学生学习,所有学生和课程之间存在多对多的关系。
另一方面学籍管理系统还存储着每个学生的平时表现情况,包括奖励、惩罚等内
任务要求
前台开发工具可采用ASP.net或其他开发工具;后台数据库选用SQLServer。
功能模块主要有:
员工基本信息的录入、修改、查询、删除模块,员工假条信息录入、修改、查询、删除模块,员工工资信息的录入,计算,查询等
1.需求分析
1.1数据需求
通过与学籍管理系统数据库用户的交谈、团队的分析、市场需求等方式,获得了学籍管理系统的数据需求。
·为了保证安全对于每个登陆的用户进行记录,一个用户在不同的时间可能有多个登录信息。
·一个学校有多个院系,一个院系有多个专业,每个专业包含多个班级,每个班级包含多名学生。
·每个专业包含自身的专业课程和全校的公共选修课,其中课程与专业存在多对多的关系。
·每个学生通过一个唯一的学号来标识,学籍管理系统存储学生的各种信息如:
姓名、学号、出生日期等内容,同时每个学生需要学习多门课程,对于有多门课程的成绩。
而每门课程有多名学生学习,所有学生和课程之间存在多对多的关系。
另一方面学籍管理系统还存储着每个学生的平时表现情况,包括奖励、惩罚等内容。
同时对于一个奖励或惩罚可能包含多个学生,故此两者之间也存在多对多的关系。
1.2数据字典
以下将对本数据库设计中的各个数据名称进行解释。
清单:
表名
解释
TB_ADMIN
管理员表
TB_CLASS
班级表
TB_COURSE
课程表
TB_DEPARTMENT
系院表
TB_INFORMATION
学生信息表
TB_LOG
登陆日志表
TB_PROFESSIONAL
专业表
TB_RESULT
成绩表
TB_REWARDPUNISHMENT
奖惩表
TB_COUR_INFO
学生课程联系表
TB_INFO_REPU
学生奖惩联系表
TB_INFO_RESU
学生成绩联系表
TB_PROF_COUR
专业课程联系表
表名:
TB_ADMIN解释:
管理员表
TB_ADMIN(tb_Admin)
是否主键
字段名
字段描述
数据类型
长度
可空
约束
缺省值
备注
是
ADMIN_ID
管理员编号
INT
ADMIN_USER
用户名
VARCHAR(10)
10
ADMIN_PASS
用户密码
VARCHAR(20)
20
ADMIN_PERM
用户权限
INT
不同用户拥有不同权限
表名:
TB_CLASS解释:
班级表
TB_CLASS(tb_Class)
是否主键
字段名
字段描述
数据类型
长度
可空
约束
缺省值
备注
是
CLASS_ID
班级编号
INT
CLASS_YEAR
班级年份
VARCHAR(4)
4
是
~Year(getDate())~
CLASS_PRID
班级序号
INT
是
一个专业有多个班级
CLASS_NAME
班级名
VARCHAR(40)
40
是
CLASS_INST
指导员名
VARCHAR(10)
10
是
CLASS_NOTE
备注
VARCHAR(200)
200
是
班级简介
表名:
TB_COURSE解释:
课程表
TB_COURSE(tb_Course)
是否主键
字段名
字段描述
数据类型
长度
可空
约束
缺省值
备注
是
COURSE_ID
课程编号
INT
COURSE_NAME
课程名
VARCHAR(20)
20
是
COURSE_PRNO
先行课
INT
是
COURSE_CREDIT
学分
INT
COURSE_NOTE
备注
VARCHAR(200)
200
是
课程简介
表名:
TB_DEPARTMENT解释:
系院表
TB_DEPARTMENT(tb_Department)
是否主键
字段名
字段描述
数据类型
长度
可空
约束
缺省值
备注
是
DEPART_ID
系院编号
INT
DEPART_NAME
系院名称
VARCHAR(40)
40
DEPART_DIRE
系主任
VARCHAR(10)
10
是
DEPART_NOTE
备注
VARCHAR(200)
200
是
系院简介
表名:
TB_INFORMATION解释:
学生信息表
TB_INFORMATION(tb_Information)
是否主键
字段名
字段描述
数据类型
长度
可空
约束
缺省值
备注
是
INFO_NO
学号
VARCHAR(20)
20
INFO_NAME
姓名
VARCHAR(10)
10
是
INFO_SEX
性别
CHAR
(2)
2
是
男
女
INFO_BIRT
出生日期
VARCHAR(10)
10
是
INFO_NAFA
民族
VARCHAR(8)
8
是
汉族
INFO_BIPL
籍贯
VARCHAR(10)
10
是
湖南省
INFO_ADDR
地址
VARCHAR(50)
50
是
INFO_POST
邮编
CHAR(6)
6
是
INFO_TELE
电话
VARCHAR(20)
20
是
INFO_ID
身份证号
CHAR(18)
18
是
INFO_POLA
政治面貌
VARCHAR(10)
10
是
INFO_PHOT
照片
VARCHAR(100)
100
是
INFO_YEAR
入学年份
VARCHAR(10)
10
是
INFO_DEPA
院系
INT
是
INFO_PROF
专业
INT
是
INFO_CLAS
班级
INT
是
INFO_NOTE
备注
VARCHAR(1000)
1000
是
表名:
TB_LOG解释:
登陆日志表
TB_LOG(tb_Log)
是否主键
字段名
字段描述
数据类型
长度
可空
约束
缺省值
备注
是
LOG_ID
日志编号
INT
LOG_USID
用户编号
INT
是
LOG_TIME
时间
SMALLDATETIME
是
getdate()
LOG_IP
IP
VARCHAR(16)
16
是
用户不同点登录的IP
表名:
TB_PROFESSIONAL解释:
专业表
TB_PROFESSIONAL(tb_Professional)
是否主键
字段名
字段描述
数据类型
长度
可空
约束
缺省值
备注
是
PROF_ID
专业编号
INT
是
PROF_DEID
院系
INT
是
PROF_NAME
专业名
VARCHAR(40)
40
是
PROF_NOTE
备注
VARCHAR(200)
200
是
表名:
TB_RESULT解释:
成绩表
TB_RESULT(tb_Result)
是否主键
字段名
字段描述
数据类型
长度
可空
约束
缺省值
备注
是
RESU_INID
学号
VARCHAR(20)
20
是
RESU_COID
课程号
INT
RESU_YEAR
年份
VARCHAR(4)
4
是
RESU_TERM
学期
CHAR
(2)
2
是
上
下
和年份联系起来指明学生某年某学期的成绩
RESU_SCOR
分数
INT
0
表名:
TB_REWARDPUNISHMENT解释:
奖惩表
TB_REWARDPUNISHMENT(tb_RewardPunishment)
是否主键
字段名
字段描述
数据类型
长度
可空
约束
缺省值
备注
是
REPU_ID
奖惩编号
INT
REPU_TIME
时间
VARCHAR(10)
10
REPU_TYPE
种类
VARCHAR(4)
4
是
奖励
惩罚
用于标明学生获得的是奖励还是惩罚
REPU_NOTE
信息
VARCHAR(1000)
1000
简要记录奖励或惩罚的事情
表名:
TB_COUR_INFO解释:
tb_Cour_Info
TB_COUR_INFO(tb_Cour_Info)
是否主键
字段名
字段描述
数据类型
长度
可空
约束
缺省值
备注
是
INFO_NO
学号
VARCHAR(20)
20
是
COURSE_ID
课程号
INT
表名:
TB_INFO_REPU解释:
tb_Info_RePu
TB_INFO_REPU(tb_Info_RePu)
是否主键
字段名
字段描述
数据类型
长度
可空
约束
缺省值
备注
是
INFO_NO
学号
VARCHAR(20)
20
是
REPU_ID
奖惩编号
INT
表名:
TB_INFO_RESU解释:
tb_Info_Resu
TB_INFO_RESU(tb_Info_Resu)
是否主键
字段名
字段描述
数据类型
长度
可空
约束
缺省值
备注
是
INFO_NO
学号
VARCHAR(20)
20
是
RESU_ID
成绩编号
INT
是
RESU_COID
课程号
INT
表名:
TB_PROF_COUR解释:
tb_Prof_Cour
TB_PROF_COUR(tb_Prof_Cour)
是否主键
字段名
字段描述
数据类型
长度
可空
约束
缺省值
备注
是
COURSE_ID
课程号
INT
是
PROF_ID
专业编号
INT
2概要设计
2.1实体集
本数据库E-R图设计中包含9个实体,其中9个实体都是强实体集。
实体的具体属性可见下表。
学籍管理系统实体集
实体集
属性
tb_Admin
admin_ID、admin_User、admin_Pass、admin_Perm
tb_Log
log_ID、log_UsID、log_Time、log_IP
tb_Department
depart_ID、depart_Name、depart_Dire、depart_Note
tb_Course
course_ID、course_Name、course_PrNo、course_credit、course_Note
tb_Professional
prof_ID、prof_DeID、prof_Name、prof_Note
tb_Class
class_ID、class_Year、class_PrID、class_Name、class_Inst、class_Note
tb_Information
info_No、info_Name、info_Sex、info_Birt、info_NaFa、info_Bipl、info_Addr、info_Post、info_Tele、info_ID、info_PoLa、info_Phot、info_Year、info_Depa、info_Prof、info_Class、info_Note
tb_Result
resu_InID、resu_CoID、resu_Year、resu_Term、resu_Scor
Tb_RewardPunishment
rePu_ID、rePu_Type、rePu_Time、rePu_Note
2.2联系集
本数据库E-R图设计中包含8个联系集,其中有4个多对多的联系集,在后面的设计中将建立相应的联系表,其他4个都为多对一或一对多,建表时可以将其加入到实体集中。
各联系集的具体情况可见下表。
学籍管理系统联系集
联系集
说明
tb_Log_Admi
实体tb_Log和tb_Admin之间的多对一联系
tb_Depa_Prof
实体tb_Department和tb_Professional之间的一对多联系
tb_Prof_Class
实体tb_Professional和tb_Class之间的一对多联系集
tb_Prof_Cour
实体tb_Professional和tb_Course之间的多对多联系集
tb_Clas_Info
实体tb_Class和tb_Information之间的一对多联系集
tb_Resu_Info
实体tb_Information和tb_Result之间的多对多联系集
tb_Info_RePu
实体tb_information和tb_RewardPunishment之间的多对多联系集
tb_Cour_Info
实体tb_Course和tb_Information之间的多对多联系集
2.3E-R图
根据2.1节和2.2节的讨论,我们可以给出学籍管理系统数据库的E-R图(见图1)。
说明:
由于实体的属性比较多,个别实体的部分属性没有画出来。
图1学籍管理系统数据库E-R图
2.4概念模型
由图1的ER图中实体之间的联系,利用powerdesigner工具概念模型。
最终概念模型图如图2所示。
图2学籍管理系统数据库概念模型
3详细设计
3.1物理模型
根据图2的概念模型图,可以利用powerdesigner导出学籍管理系统数据库的物理模型图。
图3学籍管理系统数据库物理模型
3.2关系模式
根据关系模式转换规则,把图1的E-R图转换为关系模式,如下所示(有实下划线的为主码、虚下划线的为外码):
1.实体关系模式:
·tb_Admin=(admin_ID,admin_User,admin_Pass,admin_Perm)
·tb_Log=(log_ID,log_UsID,log_Time,log_IP)
·tb_Department=(depart_ID,depart_Name,depart_Dire,depart_Note)
·tb_Course=(course_ID,course_Name,course_PrNo,course_credit,
·tb_Professional=(prof_ID,prof_DeID,prof_Name,prof_Note)
·tb_Class=(class_ID,class_Year,class_PrID,class_Name,class_Inst,class_Note)
·tb_Information=(info_No,info_Name,info_Sex,info_Birt,info_NaFa,info_Bipl,info_Addr,info_Post,info_Tele,info_ID,info_PoLa,info_Phot,info_Year,info_Depa,info_Prof,info_Clas,info_Note)
·tb_Result=(resu_InID,resu_CoID,resu_Year,resu_Term,resu_Scor)
·tb_RewardPunishment=(rePu_ID,rePu_Type,rePu_Time,rePu_Note)
2.多对多联系关系模式:
·tb_Cour_Info=(info_No,course_ID)
·tb_Info_RePu=(info_No,rePu_ID)
·tb_Info_Resu=(info_No,resu_ID,resu_CoID)
·tb_Prof_Cour=(course_ID,prof_ID)
3.视图关系模式:
·vi_Admin_Log=(UserName,IP,LoginTime)
·vi_Prof_Cour=(Professional,Course,Credit,Note)
·vi_Info_RePu(Sno,Name,Prof,Clas,rePu_Type,rePu_Time,Note)
·vi_Info_Resu(Sno,Name,Prof,Clas,Cour,RYea,Term,Scor)
4测试
4.1建立数据库模式、视图及索引
以下将对数据库进行实现,实现的环境为SQLSERVER2008。
createdatabaseExpulsion
on
(
name=Expulsion,
filename='D:
\Test\SQL\Expulsion\expulsion.mdf',
size=5,
filegrowth=10%,
maxsize=10
)
logon
(
name=expulsion_log,
filename='D:
\Test\SQL\Expulsion\expulsion_log.ldf',
size=5,
filegrowth=10%,
maxsize=10
)
go
useExpulsion
go
--1.建立管理员表
createtabletb_Admin
(
admin_IDintidentity,
admin_Uservarchar(10)notnull,
admin_Passvarchar(20)notnull,
admin_Permintnotnull,
constraintpk_Adminprimarykey(admin_ID)
)
go
--2.登陆日志表
createtabletb_Log
(
log_IDintidentity,
log_UsIDint,
log_TimesmalldatetimedefaultgetDate(),
log_IPvarchar(16),
constraintpk_Logprimarykey(log_ID),
constraintfk_Log_Adminforeignkey(log_UsID)referencestb_Admin(admin_ID),
)
go
--3.院系表
createtabletb_Department
(
depart_IDint,
depart_Namevarchar(40)notnull,--院系名
depart_Direvarchar(10),--系主任
depart_Notevarchar(200),
constraintpk_Departprimarykey(Depart_ID),
)
go
--4.课程表
createtabletb_Course
(
course_IDint,
course_Namevarchar(20),
course_PrNoint,--先行课号
course_creditintnotnull,
course_Notevarchar(200),--备注
constraintpk_Courseprimarykey(course_ID),
constraintfk_Courseforeignkey(course_PrNo)referencestb_Course(course_ID)
)
go
--5.专业表
createtabletb_Professional
(
prof_IDint,
prof_DeIDint,--院系编号
prof_Namevarchar(40),--专业名
prof_Notevarchar(200)
constraintpk_Profprimarykey(prof_ID),
constraintfk_Prof_Departforeignkey(prof_DeID)referencestb_Department(depart_ID)
ondeletecascade
onupdatecascade,
)
go
--6.班级表
createtabletb_Class
(
class_IDint,