《学生成绩管理系统》课程设计报告_第1页
《学生成绩管理系统》课程设计报告_第2页
《学生成绩管理系统》课程设计报告_第3页
《学生成绩管理系统》课程设计报告_第4页
《学生成绩管理系统》课程设计报告_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、计算机与信息工程系 数据库系统概论课程设计报告学号2014-2015学年 第一学期1208010数据库系统概论课程设计报告题目: 学生成绩管理系统专业:计算机科学与技术班级:12(2)班姓名:XXX学号:12XXX指导教师:CXXX成绩:计算机与信息工程系2014年10月12日1 目录摘要21 需求分析31.1系统需求31.2功能要求31.3安全与完整性要求41.4数据字典42 概念结构设计52.1系统的实体与联系52.2 各个实体E-R图53逻辑结构设计73.1 E-R图转换为关系模型73.2 数据库与表的建立83.3 数据库关系图94物理结构设计104.1 确定关系模型的存取方法104.2

2、数据流图105数据库实施与维护115.1数据库实施115.1.1 插入115.1.2查询135.1.3 创建数据类型145.1.4 向表中添加字段145.1.5 创建视图145.1.6创建存储过程165.1.7触发器185.1.8 自定义函数195.2数据库的维护196 数据库主要运行界面207 小结22致谢23参考文献24附录:25摘要随着学校向全国及至世界范围的持续扩张,学生人数的增加,对于学生的信息管理也越来越复杂,要求也越来越高,因此需要一个全面、详细的信息管理系统,以便完成对学生信息的管理。无纸化的环境是技术时代的一个梦想,也是许多学校和公司越来越意识到的一个真实世界。以前是由学生档

3、案和公告栏来提供各种信息及通告新的变化,而现在这个繁杂的工作已被网站和内部计算机网络所取代。使得学生信息的管理更方便、安全。根据调查得知,现在广大学生进行信息提交的主要方式是基于文件、表格等纸介质的手工处理,学生信息管理部门信息处理工作量大,容易出错,且管理方面因人而异。然而学校网上学生信息管理系统应该覆盖各个所需功能,使各级管理人员和广大教职工在信息系统的辅助下进行工作,提高管理的整体水平。使得学生信息管理更方便。学生信息管理系统,可以用集中的数据库将与人力资源管理相关的信息全面、有机地联系起来,有效地减少了信息更新和查找中的重复劳动,保证了信息的相容性,从而大大地提高了工作效率,还能使原来

4、不可能提供的分析报告成了可能。在采用和实施学生信息管理系统之后,就会将依赖于人的过程改为依赖于计算机系统的过程。学校管理人员只要获取了相应的权限,就可以随时进入系统,直接查阅相应的信息。采用和实施学生信息管理系统不仅仅是为了提高工作效率。为了除掉手工记录的低效率工作方式,运用信息化管理,提高工作效率,开发本系统。应该看到,在实施学生信息管理系统后,经过整合的、较为全面、准确、一致和相容的信息不仅可以让学校领导对本学校学生资源的现状有一个比较全面和准确的认识,同时也可以生成综合的分析报表供学校领导人在决策时参考。1 需求分析1.1系统需求当今社会,计算机的使用已经深入到日常生活和工作的方方面面,

5、它逐渐成为人们学习和工作时必不可少的工具。虽然目前为止已经开发出了成千上万的软件系统,但它们并不能满足用户的各种特殊需要,因此人们不得不开发属于自己的软件,能够满足自己的特殊需求。学生管理系统是教育事业单位必不可少的。它的内容对学校的管理者来说至关重要,学生成绩管理系统应该能够提供快捷的查询功能以及能够及时修改、增添、删除信息等功能。传统的人工管理文件档案的方式存在很多缺点,例如:效率低、保密性差、另外时间一长,信息量的不断扩增,都给查找、更新何维护带来很大困难。使用计算机对学生成绩进行管理,具有手工管理不可比拟的优点。例如:检索迅速、查找方便、存储信息量大、保密性好、及时更新并进行维护等。计

6、算机管理学生成绩能够提高学校的管理效率,是科学化、正规化管理的重要途径,型心计算机管理将不断深入到学校的各项事务的管理当中。1.2功能要求(1)教职工:对学生成绩有一个整体的了解,在今后的教学中能有所改进。同时可以对自己教授的课程进行修改,进一步了解学生的个人情况,便于因材施教。当学生的个人信息发生改变时,老师能够及时进行修改。例如学生转校、后来转到本系、或者毕业生离开学校等,老师能够根据具体情况对学生信息进行添加、修改、删除等。能够管理课程信息,合理安排老师教授的课程,及时为学生提供选课信息。老师能够对课程名、课程编号、学分等进行修改和更新。能够对学生成绩进行发布、修改、删除,清晰地了解学生

7、的成绩情况,以便做出总结和改进。(2)学生:能够查询个人的学习成绩和总体学生的成绩,以便做出新的定位。成绩查询:成绩修改、成绩添加、成绩删除等。课程查询:课程修改、课程添加、课程删除等。学生查询:学生信息修改、学生信息添加、学生信息删除等1.3安全与完整性要求建立数据库用户,对其权限进行设置。确定各表主键、索引、参照完整性、用户定义完整性。SQL语句不用拼接字符串(例+sno+)的方法来传递参数,用(例sno)来传递参数,这样可以在一定程度上避免SQL注入,已达到一定程度上的安全。1.4数据字典用户表(用户名,用户等级) 学生表(学号,姓名,性别,系别,学生年龄) 课程表(课程号,课程名,课时

8、,学分)成绩表(课程号,学生号,成绩。)老师表(老师姓名,老师编号,所授课程,联系电话)名字:老师信息描述:学生成绩管理系统中存储的所有老师的信息定义:老师信息=老师姓名+所授课程+教师编号+联系电话名字:学生信息描述:学生成绩管理中存储的所有学生信息定义:学生信息=学生学号+学生姓名+学生性别+学生系别+学生年龄位置:存储 输出供查询名字:课程信息描述:多个必要课程信息组成定义:课程信息=课程号+课程名+课时+学分位置:存储 输出供查询名字:用户表信息描述:用户个人的信息定义:用户信息=用户名位置:存储 输出供查询名字:学生成绩信息输入:学生姓名输出:相应的学生成绩信息名字:查询信息描述:用

9、户提出的具体查询请求定义:查询信息=课程查询信息+学生查询信息位置:课程表 学生表 成绩表名字:添加信息输入:学号、学生姓名、学生性别、系别、学生年龄输出:新输入的学生信息名字:删除信息输入:选中所要删除的学生信息输出:删除完成2 概念结构设计2.1系统的实体与联系由需求分析的结果可知,本系统设计的实体包括:(1)学生基本信息:学号,姓名,学院,班级,年龄,性别。(2)课程基本信息:课程名,课程号,学时。(3)教师基本信息:教师号,教师姓名,职称,年龄,性别,学院(4)学院基本信息:学院名、学院号、院长姓名这些实体间的联系包括:(1)每位学生可以学习多门课程,每门课程可供多位学生学习。(2)每

10、门课可以由多个老师教,每个老师可以教多门课程(3)学生每选一门课就可以得到一个成绩,不选此课就不能取得该课程成绩2.2 各个实体E-R图(1)学生表:性别姓名学号班级学生表出生日期(2)教师表:性别姓名职称部门教师表教师编号(3)课程表:课程表课 程名 称教 师编 号课程号(4)成绩表:成绩表成绩课程号学号(5)总体实体关系图:学生教师 1 N 学教 M课程N M 3逻辑结构设计3.1 E-R图转换为关系模型(1)学生表属性名数据描述数据类型是否为空备注sno学号Char(8)不允许为空主键sname姓名Char(10)不允许为空Ssex性别Char(2)不允许为空sbirth出生日期Date

11、time(8)允许为空class所在班级Char(4)不允许为空typeChar(7)允许为空(2)教师表属性名数据描述数据类型是否为空备注tno教师编号char(5)不允许为空主键tname姓名varchar(10)不允许为空depart部门varchar(8)不允许为空Tsex性别char(2)不允许为空Tbirth出生日期datetime ,允许为空prof职称char(6)允许为空(3)课程表属性名数据描述数据类型是否为空备注cno课程号Char(5)不允许为空主键cname课程名称varchar(10)不允许为空tno教师编号char(3)不允许为空(4)成绩表属性名数据描述数据类型

12、是否为空备注sno学号Char(8)不允许为空主键cno课程号Char(5)不允许为空主键degree成绩Float(8)不允许为空3.2 数据库与表的建立1.创建数据库: create database sshon( name=ssh, filename=e:databasessh.mdf, size=1)log on( name=ssh1, filename=e:databasessh1.ldf, size=1)2.创建数据表(1) student表use sshcreate table student( sno char(8) primary key,sname char(10) not

13、 null,Ssex char(2) not null, Sbirth datetime,class char(4) not null semail varchar(20)(2) score表create table score(sno char(8) not null,cno char(4) not null, degree float not null)(3) course表create table course(cno char(5) not null primary key,cname varchar(10) not null, tno char(3) not null )(4) te

14、acher表 create table teacher(tno char(5) not null primary key, tname varchar(10) not null, depart varchar(8) not null, Tsex char(2) not null, Tbirth datetime , prof char(6) )3.3 数据库关系图4物理结构设计4.1 确定关系模型的存取方法在将概念模型转换成物理模型之后,我们可以对物理模型进行设计,双击物理模型的关系,可以对该关系的名称、注释等信息进行查询。可对该关系的属性列进行设计,可分别设置其名称、码、数据类型以及主码、是

15、否为空等。在实际设计中最常用的存取方法是索引发,使用索引可以大大减少数据的查询时间,在建立索引时应遵循:在经常需要搜索的列上建立索引; 在主关键字上建立索引;在经常用于连接的列上建立索引,即在外键上建立索引;在经常需要根据范围进行搜索的列上创建索引,因为索引已经排序,其指定的范围是连续的等规则。才能充分利用索引的作用避免因索引引起的负面作用。4.2数据流图该数据流图主要体现教职工对学生信息、课程信息和学生成绩的管理,然后存储的信息作用于查询系统。在学生能够操作的只有成绩查询,如图所示:录入学生信息学生录入课程信息课程教职工成绩录入学生成绩查询学生成绩学生图1-1 功能流图5数据库实施与维护5.

16、1数据库实施5.1.1 插入(1)向学生表插入信息insert into student values(101,李明,女,1983-09-18,11)insert into student values(102,王二,男,1984-01-01,11)insert into student values(103,李开,男,1984-01-01,11)insert into student values(104,章浪,女,1984-11-11,11)insert into student values(105,生命,男,1984-12-05,13)insert into student value

17、s(106,无悔,女,1984-11-01,13)insert into student values(107,历史,女,1984-10-01,12)insert into student values(108,风尘,男,1985-9-08,11)insert into student values(109,活着,男,1985-12-12,12)insert into student values(110,傻瓜,女,1985-08-28,12) 查看记录 Select * from student(2)向成绩表中添加insert into score values(101,01,88)inse

18、rt into score values(101,02,85)insert into score values(102,02,80)insert into score values(101,03,88)insert into score values(102,02,85)insert into score values(102,03,80)insert into score values(103,01,83)insert into score values(103,02,85)insert into score values(103,03,90)insert into score values

19、(104,01,60)查看记录 Select * from score(3)向教师表中添加数据insert into course values(01,计算机,11)insert into course values(02,网络管理,12)insert into course values(03,专业英语,13)insert into course values(04,软件工程,14)查看记录 Select * from course(4)向课程表中添加数据insert into teacher values(11,无意,计算机系,男,1973-4-5,教授)insert into teach

20、er values(12,生活,计算机系,女,1975-12-1,副教授)insert into teacher values(13,没有,管理系,女,1975-3-3,副教授)insert into teacher values(14,离开,英语系,男,1973-5-5,教授)查看记录 Select * from teacher5.1.2查询(1) 查询成绩大于学号为101的学生的课程为02的成绩的所有列。select * from score where degree(select degree from score where sno=101 and cno=02)(2) 查询课程号01

21、大于课程号02的最大值、并以分数降序排序的成绩表中所有列select * from score s where o=01 and s.degree=(select max(degree) from score y where o=02 ) order by degree descgoselect max(degree) as 02max from score where cno=02(3) 查询性别为男的学号,姓名,班级,课程号和成绩的学生select student.sno,student.sname,student.class,o,score.degree from student,sco

22、re where student.sno=score.sno and ssex=男(4) 查询成绩在60到80之间的所有列select * from score where degree between 60 and 80(5) 查询score表中至少有5名学生选修的并以0开头的课程的平均分select avg(degree) as 平均分,cno from score where cno like 0% group by cno having count(*)=55.1.3 创建数据类型创建一个email自定义数据类型 exec sp_addtype email, varchar(20) ,

23、 null修改student表中的semail数据类型为email类型alter table student alter column semail email5.1.4 向表中添加字段向student表添加type,semail,b并且邮件地址有check约束alter table student add type char(7)alter table student add semail varchar(20) null constraint ck_sem check (semail like %)alter table teacher add tel varchar(15)5.1.5 创

24、建视图(1) 创建所有11班的学生信息的视图create view student11as select * from student where class=11查看视图中的记录select * from student11(2) 创建视图course_degree其中的内容是选修计算机课程的学生信息,包括(sno,sname,cno,cname,degree),创建时加上with check optioncreate view course_degree(sno,sname,cno,cname,degree)as select score.sno,sname,o,cname,degree

25、from course ,student, score where o=o and student.sno=score.sno and cname=计算机with check option查看视图中的记录select * from course_degree(3) 创建一个视图,其中的内容是成绩表中每门课程的create view averageas select avg(degree) as 平均分 from score group by cno查看视图中的记录select * from average (4) 创建视图其中的内容是所有男教师和男学生的name,sex,birthcreate

26、 view man as select sname as name,ssex as sex,sbirth as birth from student where ssex=男union select tname,tsex,tbirth from teacher where tsex=男查看视图中的记录select * from man5.1.6创建存储过程 (1) 创建一个存储过程。来显示成绩表中的课程号在课程表中并且所任教师性别为男、所在部门是计算机系的成绩表中的列create proc student_11as select * from score where cno in (selec

27、t cno from course ,teacher where course.tno=teacher.tno and depart=计算机系 and tsex=男)调用此存储过程Execstudent_11 (2) 创建一个带输入参数的存储过程。调用此存储过程时,给出一个学生名,显示出此学生的学号,姓名,所学课程号,课程名称和对应的成绩create proc student_namesname varchar(10)as select student.sno,sname,o,degree cname from student,score,course where student.sno=sc

28、ore.sno and o=o and sname=sname调用此存储过程,(此例是输出姓名为历史的学生的信息)exec student_name 历史(3) 创建一个存储过程,传递一个学生姓名。先判断此学生是否有邮箱,如果有,则显示此学生的姓名,邮箱地址,学号,班级;如果没有的话,输出此句话the semail is emptycreate proc student_emailsname varchar(10)asbeginif (select semail from student where sname=sname) is nullbeginprintthe semail is emp

29、tyendelseselect sname,semail,sno,class from student where sname=snameend调用此存储过程exec student_email super5.1.7触发器(1) 创建一个触发器。来检查学生的邮箱地址是否相同,如果相同,输出inserting fail,并且回滚事务;如果不相同,则插入成功。create trigger studentinserton studentafter insertas if (select semail from inserted where semail in (select semail from

30、student) is not nullbeginprint inserting failrollback transactionendelseprintinsering succeed向学生信息表中插入一条记录,检验是否成功插入insertintostudent values(114,lengbing,女,1985-12-12,11,lengbingssh,一般 )(2) 在成绩表中建立一个触发器,当向表中添加记录时,此学生的成绩都乘以1.2create trigger scoreupdate on scoreafter insertas update score set degree=de

31、gree*1.2 from score where sno in (select sno from inserted )向表中插入一条记录,检验触发器是否有用。insert into score values(108,01,56)5.1.8 自定义函数 (1) 创建一个用户自定义函数,输出与指定的学生同班的学生个数create function studentcount(sno char(5)returns intbegindeclare counter intselect counter=count(*) from student where class=(select class from

32、 student where sno=sno)return counterend调用此自定义函数(本例是查找与学号102同班的学生个数)declare a intset a=dbo.studentcount(102)print convert(char(3),a)(2) 创建一个用户自定义函数,用于输出同一个班级中的学生信息create function studentclass(class char(5)returns tablereturn(select * from student where class=class)调用自定义函数(本例是输出12班的学生信息)select * from

33、 studentclass(12)5.2数据库的维护当试运行数据库合格后,数据库开发设计的工作就基本完成了,接下来就是正式运行中的调试,应为该系统比较简单,数据量小,数据库中几乎不会发生什么大的变化,但是还是需要做好数据的备份,在sqlserver中我们可以利用备份数据库的功能对已经设计好的数据做备份,如果数据库受到破坏或系统故障,我们便可轻松的利用备份文件恢复数据库的数据。当然也可以利用其他各种方法进行数据维护。6 数据库主要运行界面(1) 登录界面:(2) 成绩查询界面: (3) 课程查询界面: 7 小结通过这次的课程设计,使我了解了更多数据库原理与应用这门课程,对以前不太理解和熟悉的内容

34、有更多的掌握,在我设计的学生成绩管理系统中,虽然一开始我对这个系统怎样设计完完全全没有概念。但是如果仔细的想一下,还是可以找到出发点的。首先要建立一个完整的管理系统,就必须明白这个系统所包含的基本内容、处理一些怎样的信息等。最主要的是画出他们的ER图,便可直观的看出他们关系。在设计的时候,有时候也会感到没有思路了,或许是只有一点点的头绪,可经过对图的分析和认真观察他们的关系后,便有了新的思路和闪光点。最后根据自己的整理资料将每一步都运用SQL语言执行出来,并且看以下是否符合结果要求。我想经过这次课程设计可以更好的将所学知识运用到实际中去。也让我加深了对数据库知识的认识和了解。在这次实践设计过程

35、中,我懂得了如何将所学的理论知识运用到实际中去,使得所学的知识能够融会贯通。同时,在课程设计过程中,我懂得了许多知识,增加了我对数据库的兴趣 ,今后一定努力的学习,在实践中增加自己的学习乐趣,让自己更加充实。设计过程中我也遇到了一些问题,如下:(1)操作视图查询,编写代码时发现,一个表中的主键必须是另一个表的外键时才可以对另一个表进行引用。(2)在设计表时应注意使用正确的字段类型。(3)在建表语句中,如果这个表的主键是多个属性的组合主键,则必须作为表级完整性进行定义。致谢在这次数据库课程设计中,感谢我的老师和同学们给了我及大的帮助。特别是我的指导老师兼授课教师陈磊老师,在此,我对他们表示感谢。

36、感谢他们在我面对困难时给了我帮助和支持,也感谢那些给我帮助的所有同学。参考文献1肖永顺 刘韬 李生海等.delphi程序设计M.北京.人民邮电出版社.2000.12储启明 周旭.delphi7典型实例开发篇(基础开发篇)M.北京.清华大学出版社.2003.93段来盛 郑城荣.delphi实战演练M.北京:人民邮电出版社.2000.114岳付强 罗明英 韩德.SQL Server从实战到入门M.北京:清华大学出版社.2009.95王珊 萨师煊.数据库系统概论M.北京:高等教育出版社.2006.56赛奎春,高春艳,李俊民.Visual Basic工程应用与项目实践.北京:机械工业出版社,2005年

37、7东方人华.SQL Server2000与Visual Basic数据库入门与提高.北京:联华大学出社,2002年附录:源代码:#include stdafx.h#include StudentScore.h#include Course.h#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE_;/ CCourseIMPLEMENT_DYNAMIC(CCourse, CRecordset)CCourse:CCourse(CDatabase* pdb): CRecordset(pdb)/AF

38、X_FIELD_INIT(CCourse)/AFX_FIELD_INITm_nDefaultType = snapshot;CString CCourse:GetDefaultConnect()return _T(ODBC;DSN=);CString CCourse:GetDefaultSQL()return _T();void CCourse:DoFieldExchange(CFieldExchange* pFX)/AFX_FIELD_MAP(CCourse)pFX-SetFieldType(CFieldExchange:outputColumn);/AFX_FIELD_MAP/ CCour

39、se diagnosticsvoid CCourse:AssertValid() constCRecordset:AssertValid();void CCourse:Dump(CDumpContext& dc) constCRecordset:Dump(dc);/ MainFrm.h : interface of the CMainFrame classclass CMainFrame : public CFrameWndprotected: / create from serialization onlyCMainFrame();DECLARE_DYNCREATE(CMainFrame)/

40、 Attributespublic:/ Operationspublic:/ Overrides/ ClassWizard generated virtual function overrides/AFX_VIRTUAL(CMainFrame)virtual BOOL PreCreateWindow(CREATESTRUCT& cs);/AFX_VIRTUAL/ Implementationpublic:virtual CMainFrame();protected: / control bar embedded members/CStatusBar m_wndStatusBar;/CToolB

41、ar m_wndToolBar;/ Generated message map functionsprotected:/AFX_MSG(CMainFrame)afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);afx_msg void OnPassword();afx_msg void OnUser();afx_msg void OnStudent();afx_msg void OnTeach();afx_msg void OnTeacher();afx_msg void OnScore();afx_msg void OnQueryTeach

42、();afx_msg void OnQueryScore();afx_msg void OnCourse();/AFX_MSGDECLARE_MESSAGE_MAP();/AFX_INSERT_LOCATION/ Microsoft Visual C+ will insert additional declarations immediately before the previous line./ CScoreAddDlg dialogCScoreAddDlg:CScoreAddDlg(CWnd* pParent /*=NULL*/): CDialog(CScoreAddDlg:IDD, p

43、Parent)/AFX_DATA_INIT(CScoreAddDlg)/AFX_DATA_INITvoid CScoreAddDlg:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);/AFX_DATA_MAP(CScoreAddDlg)DDX_Control(pDX, IDC_SCORE_STUDENT, m_cStudent);DDX_Control(pDX, IDC_SCORE_SCORE, m_cScore);DDX_Control(pDX, IDC_SCORE_COURSE, m_cCourse);/AFX_DATA_MAPBEGIN_MESSAGE_MAP(CScoreAddDlg, CDialog)/AFX_MSG_MA

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论