研讨班管理系统纯数据库课设.docx
《研讨班管理系统纯数据库课设.docx》由会员分享,可在线阅读,更多相关《研讨班管理系统纯数据库课设.docx(15页珍藏版)》请在冰豆网上搜索。
研讨班管理系统纯数据库课设
研讨班管理系统的设计与实现
2011年8月17日
ccut软件学院09级
二、需求分析
1系统需求
1.1功能需求
每个研讨班针对一个或几个研究方向。
每个研讨班由一位或几位教师主持。
在研讨班开设之后,学生可以根据主持教师的姓名和研讨班的方向来选择和参加某个研讨班。
所有的学生必须且只能参加一个研讨班的学习。
研讨班管理系统研讨班时常会开展活动,由教师来决定活动的时间、地点、主题和做报告的学生。
每次活动时,由一位或多位同学围绕活动主题做学习报告,交流自己对新技术的学习心得。
①录入:
把学生的成绩录入到管理系统当中并保存成绩。
②增、删、改、查:
能对录入的成绩进行操作,实现增、删、改、查的功能。
③成绩排序:
按照学生的报告成绩排序,能输出。
④平均分:
能计算学生成绩的品均分,能输出。
⑤信息输出:
能输出最高分、最低分学生的基本信息。
⑥授权:
对用户进行授权。
1.2性能需求
实现信息管理自动化,实现自动统计功能,能长期记录学生成绩,实现管理信息化、自动化。
1.3可靠性、可用性需求
系统有较高的可用性,操作简单,便于用户使用,能是成绩保存,不易被乱更改。
系统具有相对较高的可靠性,这样才能保障可用性,系统的数据一定要可靠,才能保证长期记录学生成绩,并且可靠的记录能方便随时能实现其增、删、改、查的功能。
1.4将来可能提出的需求
进一步改善系统功能具体要求如下:
1、实现信息的打印功能;
2、实现用户分级和不同权限操作;
3、实现多客户端的数据共享和多客户端同时业务操作。
2数据字典
2.1实体信息
需要描述的实体和从联系中抽象出的实体信息如下:
1Student_info:
学生基本信息表
stu_num:
学生学号
stu_name:
学生名字
stu_sex:
学生性别
stu_class:
班级
stu_brityday:
学生生日
2Course:
研讨班方向信息表
Course_id:
课程方向id
Course_name:
课程名称
Course_type:
课程类型
Course_teacher该课程的老师
3Exam:
报告成绩信息表
Exam_id:
成绩id
Stu_num:
学生学号
Stu_name:
学生姓名
Class:
班级
Course_name:
方向名称
Course_type:
课程类型
Result:
成绩
Course_id:
方向Id
Year:
年级
2.2实体联系信息
1学生基本信息:
学生的基本信息存储学生的基本数据,并且与报告成绩表的学生学号建立外键关系,学号是主键,本表可实现基本的插入,删除,更新,查询基本功能。
2研讨班方向:
研讨班方向信息表与报告成绩表建立外键关系,由课程Id建立联系,并且course_id设为主键,教师可以通过此课程表,给报告成绩信息表上成绩记录,本表可实现基本查询课程老师信息基本功能。
3报告成绩信息:
与研讨班方向信息表与学生基本信息表建立外键关系,同时可实现插入,删除,更新,查询基本功能。
三、概要设计
数据库在一个信息管理系统中占有非常重要的地位,数据库结构设计的好坏将直接对应用系统的效率以及实现的效果产生影响。
合理的数据库结构设计可以提高数据存储的效率,保证数据的完整和一致。
同时,合理的数据库结构也将有利于应用系统程序的实现。
在充分需求分析的基础上,经过逐步抽象,概括,分析,充分研讨,可以画出如下反映研讨班销售管理系统数据的整体E-R图.
1研讨班管理系统E-R图
2研讨班实体属性图
3成绩实体属性图
4学生基本信息实体属性图
四、详细设计
1数据库关系模式
按照实体-联系图转化为关系模式的规则,本系统的E-R图可转化为如下有3关系模式:
学生基本信息(学生学号,名字,性别,班级,学校)
研讨班方向基本信息(研讨班id,课程方向,老师)
研讨班成绩基本信息(学生学号,课程方向,成绩,研讨班id)
2数据库及表结构的创建
打开SQLServier2005,新建查询分析,根据已设计的关系模式及各模式的完整性要求,使用Transact-SQL(SQLServer中的SQL命令)建立数据库和表结构。
(1)建立数据库student
createdatabasestudent
on(
name='student_data',filename='g:
\student.mdf',
size=5mb,
maxsize=50mb,
filegrowth=10%
)
logon(name='student-log',filename='g:
\student.log.ldf',
size=5mb,
maxsize=50mb,
filegrowth=10%)
建库结果:
(2)建表学生基本信息表
createtablestudent_info(
stu_numintprimarykeynotnull,
stu_namevarchar(50)notnull,
stu_sexchar
(2)null,
stu_classvarchar(50)null,
stu_britydayvarchar(50)null,
stu_collegevarchar(50)null,
)
建表结果:
(3)研讨班信息表
createtablecourse(
course_idintprimarykeynotnull,
course_namevarchar(50)null,
course_typevarchar(10)null,
course_teachervarchar(50)null,
)
建表结果:
(5)研讨班考试成绩信息表
createtableexam(
exam_idintprimarykeynotnull,
stu_numchar(10)null,
stu_namevarchar(50)null,
classvarchar(50)null,
course_idvarchar(10)null,
course_namevarchar(50)null,
course_typevarchar(10)null,
resultfloat(8)null,
jianyivarchar(100)null,
yearnchar(10)null,
)
建表结果:
3数据库表关系图
数据库名称:
student,创建3张用户表后,表间能形成如下的关系图:
4功能实现操作的T-SQL语句
--创建数据库
/*createdatabasestudent
on(
name='student_data',filename='g:
\student.mdf',
size=5mb,
maxsize=50mb,
filegrowth=10%
)
logon(name='student-log',filename='g:
\student.log.ldf',
size=5mb,
maxsize=50mb,
filegrowth=10%)*/
--建表学生基本信息表
/*createtablestudent_info(
stu_numintprimarykeynotnull,
stu_namevarchar(50)notnull,
stu_sexchar
(2)null,
stu_classvarchar(50)null,
stu_britydayvarchar(50)null,
stu_collegevarchar(50)null,
)*/
--研讨班信息表
/*createtablecourse(
course_idintprimarykeynotnull,
course_namevarchar(50)null,
course_typevarchar(10)null,
course_teachervarchar(50)null,
)*/
--研讨班考试成绩信息表
/*createtableexam(
exam_idintprimarykeynotnull,
stu_numchar(10)null,
stu_namevarchar(50)null,
classvarchar(50)null,
course_idvarchar(10)null,
course_namevarchar(50)null,
course_typevarchar(10)null,
resultfloat(8)null,
jianyivarchar(100)null,
yearnchar(10)null,
)*/
--插入数据
/*insertintostudent_info(stu_num,stu_name,stu_sex,stu_class,stu_brityday,stu_college)
values('01','张三','男','093301','1990-4-2','长春工业大学')*/
/*insertintocourse(course_id,course_name,course_type,course_teacher)values('11','java方向','拓展','王老师')*/
/*insertintoexam(exam_id,stu_num,stu_name,class,course_id,course_name,course_type,result,jianyi
)values('1','01','张三','093301','java方向','11','拓展','1','还待加强')*/
--()实现研讨班的基本情况的录入、修改、删除等基本操作。
--录入
declare@stu_numint
declare@stu_namevarchar(50)
declare@stu_sexchar
(2)
declare@stu_classvarchar(50)
declare@stu_britydayvarchar(50)
declare@stu_collegevarchar(50)
set@stu_num='20083512'
set@stu_name='张'
set@stu_sex='男'
set@stu_class='083305'
set@stu_brityday='1989-8-23'
set@stu_college='长春工业大学'
insertintostudent_info(stu_num,stu_name,stu_sex,stu_class,stu_brityday,stu_college)
values(@stu_num,@stu_name,@stu_sex,@stu_class,@stu_brityday,@stu_college)
--修改
declare@stu_numint
declare@stu_namevarchar(50)
declare@stu_sexchar
(2)
declare@stu_classvarchar(50)
declare@stu_britydayvarchar(50)
declare@stu_collegevarchar(50)
set@stu_num='20083514'
set@stu_name='张'
set@stu_sex='女'
set@stu_class='083306'
set@stu_brityday='1989-5-23'
set@stu_college='长春工业大学'
insertintostudent_info(stu_num,stu_name,stu_sex,stu_class,stu_brityday,stu_college)
values(@stu_num,@stu_name,@stu_sex,@stu_class,@stu_brityday,@stu_college)
--删除
declare@stu_namevarchar(50)
set@stu_name='李四'
deletefromstudent_infowherestu_name=@stu_name
select*fromstudent_info
updatestudent_infosetstu_name='刘七'wherestu_name='刘六'
--()按学生学号以学年分组查询全部参加研讨班信息。
/*selectstu_num,stu_name,course_id,course_name
fromexamgroupbystu_num,stu_name,course_id,course_name*/
select*
fromexamwhereyear='08'orderbystu_num
select*
fromexamwhereyear='09'orderbystu_num
--()按学生学号计算每学年的报告学分。
selectsum(result)fromexamwherestu_num=2
--(4)由高到低排序分数
select*fromexamorderbyresultdesc
--()报告最高、最低成绩的学生基本信息。
selectstu_sex,stu_class,stu_brityday,stu_college,stu_num,stu_namefromstudent_info
wherestu_numin(selectstu_num
fromexam
whereresult=4
orresult=1)
selectstu_sex,stu_class,stu_num,stu_namefromstudent_info
wherestu_numin(selectmax(result)fromexam)
selectstu_sex,stu_class,stu_num,stu_namefromstudent_info
wherestu_numin(selectmin(result)fromexam)
--()平均分
selectavg(result)as平均分fromexam
--在exam表中加入result1,result2字段
selectavg(result+result1+result2)/3as平均分,
stu_nameas姓名fromexamgroupbyexam_id,stu_name
--(7)建立授权
execsp_addlogin'chen','123'
go
execsp_grantdbaccess'chen'
grantselect,insert,updateonexamtochen
五、实现与探讨
1、设计和实现数据库过程中应当考虑实践应用需要,如果把多过程的功能的后续部分过程改为触发器实现,在应用时可以将大部分软件部署在服务器端,减少客户端的负担可提高软件的效率。
2、最终的软件产品一般以易操作的图形界面提交给用户,作为后台的数据库不容忽视,其好坏影响到整个软件的开发,在动手搭建数据库之前,一定要根据需求做好分析和设计,为后续工作的开展打好坚实基础。
六、设计体会与小结
在科学飞速发展的今天,人们的视野越来越广,数据量急剧增加。
过去人们把数据存放在文件柜里,现在人们借助计算机和数据库技术科学地保存和管理大量的复杂数据,以便能方便而充分地利用这些宝贵的信息资源。
数据库技术近年来迅猛发展,对于一个国家来说,数据库的建设规模、数据库信息量的大小和使用频度已成为衡量这个国家信息化程度的重要标志。
作为一名软件工程专业的学生,一定要把这门专业基础课学好,为今后的学习和工作打下坚实的基础,课程设计已经结束了,虽然自己的设计还存在很多不足有待改进,但是在课设过程中真的学到了很多东西,不仅使自己更加深刻的理解了平时学到的理论知识,同时也使自己的动手实践能力得到了锻炼。
同时在课设过程中不断的与同学讨论,不断地向老师请教,对提高与人交往能力和团队协作能力都有帮助,真是受益良多!
课程的结束并不等于学习的结束,通过课设发现了平时学习中很多没有注意到的问题,一定要尽快补上,同时深知还有很多关于数据库的知识要学,自己要走的路还很长,“路漫漫其修远兮,吾将上下而求索!
”加油,努力吧!
七、谢辞
一学期的课程结束了,感谢老师一直以来细致的授课,认真的批改作业,和每次对问题的耐心回答!
感谢老师在课设过程中对我的悉心指导和帮助,通过这次课程设计不仅使平时的知识得到了发挥和应用,还大大提高了动手实践能力,同时是我对数据库、数据库设计和SQL都有了更进一步的了解,感谢您,在这里真诚的向您道一声“谢谢,您辛苦了!
”。