




已阅读5页,还剩24页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
学生选课信息管理系统1、需求分析1.1 编写目的使用该文档的使用成员为实现SOIS系统的开发人员以及学校的选课具体组织管理人员。1.2 背景项目名称:学生选课信息管理系统(School Optional information System简称SOIS)。项目提出者:SOIS项目组织人员。项目开发者:SOIS项目开发小组。项目鉴定者:暂无。项目开始时间:-。1.3 定义1.3.1系统数据流程图的一些定义1.4 目标本系统的目标就是实现学生在网上就可完成选课的全过程。其功能如下:学生登陆验证密码功能 为了避免在选课时出现乱选、错选情况,该系统在设计时考虑对学生身份的合法性进行验证,保证合法用户才能选课。 查看可供选择的课程,及上该课程教师的情况 学生能在网上查看课程的情况,如课程的介绍、课程有那些教师上。选择某门课程 学生可查看当前自己已选课程、如果对某门课程不满意,可注销该课程,也以查看当前某门课,某教师有那些学生选。 1.5 需求分析1.5.1 系统总体需求本程序的设计任务就是制作一个可以用于学生选课管理的系统,主要可以进行对本系统、数据的管理、数据查询、常务操作、常用工具、数据库管理和帮助等功能。具体来说就是可以通过管理功能对本系统用户进行用户添加删除以及密码修改和权限的管理;还可以通过数据管理功能对教师、学生、课程、成绩、等信息进行添加、修改和删除等具体的操作;再者,可以通过数据查询功能对教师、学生、课程、成绩等信息的查询;同时本程序还引入常用工具功能,可以在本程序中使用计算器、Word、记事本、Excel、SQL Server和Web等常用工具;最后本程序还加入了数据库的备份、数据库的还原、数据库的压缩、数据的导入和数据的导出等功能方便于数据的整理的存储。教师在本系统的功能:(1) 教师信息管理,包括教师个人的基本情况和任课情况;(2) 根据学校教务处所排课进行班级数及人数的统计,然后根据统计结果进行项目及班数的设定查询学生选课情况、自己任课情况、获取自己所担任课程分班表;(3) 录入及修改成绩学生信息管理,学生在本系统的功能:(1) 查询本人信息、(2) 教师任课信息、选课、选课信息查询、(3) 成绩查询。管理员在本系统的功能:(1) 教师信息管理,学生信息管理, 课程信息管理,管理员信息管理(2) 对系统进行维护和更新(3) 批准课程与否各实体之间的联系(1) 老师与课程的关系(M:N)(2) 学生和专业的关系(N:1)(3) 院系与专业的关系(1:N)(4) 教师与院系的关系(N:1)(5) 学生与课程的关系(N:N)本程序所能达到的功能是:用户的添加删除,数据的添加修改删除,数据的查询,常用工具的使用,数据库的维护等功能。数据流图1. 1.5.3软硬件平台设计(1) 软件平台: windowsXP操作系统、Sql-Server2005数据库(2) 硬件平台:普通微机2、概念模型设计1、实体在我们的数据库系统中只有6个实体:学生、教师、管理员、专业、院系、课程。(1) 学生的属性:学号、姓名、性别、生日、密码(2) 教师的属性:工号、姓名、性别、生日、密码职称(3) 管理员的属性:工号、姓名、性别、生日、密码、权限标志(4) 专业的属性:专业号码、专业名、辅导员、联系方式、专业介绍(5) 院系的属性:系号码、系名称、系主任、联系方式、系介绍(6) 课程的属性:课程号、课程名、学时、学分、课程介绍(7) 学生成绩属性:学号、课程编号、课程名称、成绩(8) 控制设置属性:选课控制,成绩录入控制2、ER图(1) 学生实体E-R图(2) 教师实体E-R图(3) 管理员实体E-R图(4) 专业实体E-R图(5) 系实体E-R图(6) 课程实体的E-R图(7) 数据库系统E-R图3、逻辑数据库设计本次设计的数据库在SQL Server 2000上实现,将概念结构设计中的E-R图转换成SQL Sever 2000支持的关系数据模型后,结合上述分析得到如下数据表:(1)学生基本表Student,如下表:字段名称类 型允许空值主 键说 明SnoChar(10)NOT NULL是学号SnameVarchar(10)NOT NULL姓名SsexChar(2)NOT NULL男或女性别SbirthdatetimeNOT NULL生日SpassVarchar(20)NOT NULL密码(2)教师数据表Teacher,如下表:字段名称类 型允许空值主 键说 明tnoChar(10)NOT NULL是工号tnamevarchar (10)NOT NULL是姓名tsexChar(2)男或女性别tbirthdatetimeNOT NULL生日ttitleChar(20)NOT NULL职称(3)管理员数据表Manager,如下表:字段名称类 型允许空值主 键说 明MnoChar(10)NOT NULL是工号Mnamevarchar (10)NOT NULL是姓名MsexChar(2)男或女性别MbirthdatetimeNOT NULL生日MtitleChar(20)NOT NULL职称(4)专业数据表Major,如下表:字段名称类 型允许空值主 键说 明Major_noChar(10)NOT NULL是专业号码Major _nameChar(20)NOT NULL专业名Major _teacherVarchar(20)NOT NULL辅导员Major _introduceChar(20)专业介绍Major _phoneChar(20)NOT NULL联系方式(5) 院系数据表Department,如下表:字段名称类 型允许空值主 键说 明DnoChar(10)NOT NULL是系号码DnameChar(20)NOT NULL系名称DheadVarchar(20)NOT NULL系主任DintroducedatetimeNOT NUL系介绍DphoneChar(20)NOT NULL联系方式(6) 课程数据表course,如下表:字段名称类 型允许空值主 键说 明CnoChar(10)NOT NULL是课程号CnameChar(20)NOT NULL课程名CscoreChar(20)NOT NULL学分CtimeChar(50)NOT NULL学时Cintroducedatetime课程介绍(7) 成绩数据表Grade,如下表:字段名称类 型允许空值主键说 明Grade_noChar(10)not null是学号Grade_courseChar(20)not null课程编号Grade_namechar(20)not null课程名称Grade_gradeint null成绩(8) 控制设置表Control,如下表:列名数据类型允许空值主键说 明IfTakeCoursechar(1)not null选课控制IfInputGradechar(1)not null是成绩录入控制4、物理数据库设计数据库物理设计阶段的任务是根据具体计算机系统(DBMS和硬件等)的特点,为给定的数据库模型确切合理的存储结构和存取方法。所谓的“合理”主要有两个含义:一个是使设计出的物理数据库占用较少的存储空间,另一个对数据库的操作具有尽可能高的速度。主要体现在后者。一、 建立索引(1)对Student表在Sno属性列上建立聚集索引,在Sname,Ssex,Sbirth,Spass属性列上建立非聚集索引(2)对Teacher表在tno属性列上建立聚集索引,在Tname,tsex,tbirth,ttitle属性列上建立非聚集索引(3)对Manager表在Mno属性列上建立聚集索引,在Mname,Msex ,Mbirth ,Mtitle属性列上建立非聚集索引(4)对Major表在Major_no属性列上建立聚集索引,在Major_name,Major_teacher,Major_introduce,Major_phone 属性列上建立非聚集索引(5)对Department表在Dno属性列上建立聚集索引,在Dname,Dhead,Dintroduce,Dphone属性列上建立非聚集索引(6)对Coure表在Cno属性列上建立聚集索引,在CnameChar(10),Cscore Char(10) ,CtimeChar(50) ,Cintroduce属性列上建立非聚集索引(7)对grade表在grade_no属性列上建立聚集索引,在Cname,grade_name, grade_course,grade_grade属性列上建立非聚集索引二、 存储结构 确定数据库在存储结构主要指确定数据的存放位置和存储结构,包括确定关系、索引、日志、备份等的存储安排及存储结构,以及确定系统存储参数的配置。 将日志文件和数据库对象(表、索引等)分别放在不同的磁盘可以改进系统的性能,所以将日志文件盒数据文件放在不同的磁盘上。5、触发器(1)建立学生添加院系触发器T1,当该表中已存在所对应院系号码的院系时,系统给与错误提示并回滚,其关键代码如下所示:CREATE TRIGGER T1 ON DepartmentFOR INSERT,UPDATEASIF (SELECT COUNT(*) FROM Department,inserted WHERE Department. Dno =inserted. Dno)0BEGIN PRINT 院系号码产生冲突,请核对后重试! ROLLBACKEND(2)建立学生添加专业触发器T2,当专业信息中的院系号不对或者该表中已存在所对应专业号码的专业时,系统给与错误提示并回滚,其关键代码如下所示:CREATE TRIGGER Major ON T2FOR INSERT,UPDATEAS IF(SELECT COUNT(*) FROM Department,inserted WHERE Department. Dno =inserted. Dno)=0BEGIN PRINT 未找到该专业的院系信息,请添加相应院系后重试! ROLLBACKENDELSE IF (SELECT COUNT(*) FROM tb_major,inserted WHERE Major.Major_no=inserted.Major_no)0BEGIN PRINT 院系号码产生冲突,请核对后重试! ROLLBACKEND(3)建立添加学生触发器T3,当学生信息中的专业号不对或者系统中已存在所对应学号的学生时,系统给与错误提示并回滚,其关键代码如下所示:CREATE TRIGGER T3 ON StudentFOR INSERT,UPDATEAS IF(SELECT COUNT(*) FROM Major,inserted WHERE Major.Major_no=inserted.Major_no)=0BEGIN PRINT 未找到该学生的专业信息,请添加相应专业后重试! ROLLBACKENDELSE IF (SELECT COUNT(*) FROM Student,inserted WHERE Student.Sno=inserted.Sno)0BEGIN PRINT 学号产生冲突,请核对后重试! ROLLBACKEND(4)建立学生选课触发器T4,课程选课人数超过80个或者对应学生选课门数超过2门或者当前时间不是选课时间段时,系统给与错误提示并回滚,其关键代码如下所示:CREATE TRIGGER T4 ON StucourseFOR INSERT,UPDATEAS IF(SELECT COUNT(*) FROM Stucourse,inserted WHERE Stucourse.Cno=inserted.Cno)80BEGIN PRINT 所对应课程选课人数不能超过80个! ROLLBACKENDELSE IF (SELECT COUNT(*) FROM Student,inserted WHERE Student.Sno=inserted.Sno)2BEGIN PRINT 对应学生的选课不能超过2门! ROLLBACKENDELSE IF (SELECT IfTakeCourse FROM Control)=0BEGIN PRINT 当前不是选课时间段! ROLLBACKEND6、存储过程(1)建立学生选课存储过程P1,其作用为查询所有的课程,其关键代码如下所示:CREATE PROC P1Cno Char(10)OUT,Cname Char(20)OUT,CtimeChar(50)OUTAs insert into C(Cno, Cname, Ctime)Values(Cno, Cname, Ctime)(2)建立学生选课存储过程P2,其作用为查询所有学生的成绩,其关键代码如下所示:CREATE PROC P2Sno char(10) OUT,Sname varchar(10) OUT,Cname char(20) OUT, Cscore char(20)OUT,Tname char(10) OUTAS SELECT Sno=Student.Sno ,Sname=Student.Sname , Cname=Course.Cname ,Cscore=Course.Cscore , Tname=Teacher.Tname FROM Grade ,Course,Student,Teacher WHERE Grade.Sno=Student.Sno AND Grade.Cno=Course.Cno AND Grade.TeacherNum=Teacher.Tno(3)建立查询教师课程存储过程P3,其作用为查询指定教师所有课程的成绩,其关键代码如下所示:CREATE PROC P3Tno char(10),Sno char(10) OUT,Sname char(10) OUT,Cname varchar(20) OUT,Control char(20) OUT,Tname char(10) OUTAS SELECT Sno=Student.Sno ,Sname=Student.Sname , Cname=Course.Cname , Control =Course. Control , Tname=Teacher.Tname FROM Grade,Course,Student,Teacher WHERE Grade.Sno=Student.Sno AND Grade.Cno=Course.Cno AND Grade.Tno=Teacher.Tno and Teacher.Tno=Tno(4)建立查询学生课程存储过程P4,其作用为查询指定学生所有课程的成绩,其关键代码如下所示:CREATE PROC P3Sno char(10),Sname char(10) OUT,Cname varchar(20) OUT, Control char(20) OUT,Tname char(10) OUTAS SELECT Sno=Student.Sno ,Sname=Student.Sname , Cname=Course.Cname , Control=Course. Control , Tname=Teacher.Tname FROM Grade,Course,Student,Teacher WHERE Grade.Sno=Student.Sno AND Grade.Cno=Course.Cno AND Grade.Tno=Teacher.Tno and Grade.Sno=Sno7 、数据库脚本-数据库初始化工作-set nocount onset dateformat mdygouse mastergoif exists (select * from sysdatabases where name=SIOS) drop database SIOSgo-数据库的建立-CREATE database SOIS ON primary (NAME = SIOS_data, FILENAME = d:databaseSIOS_data.MDF , SIZE = 2, FILEGROWTH =1, MAXSIZE=10) LOG ON (NAME = SIOS_Log, FILENAME = d:databaseSIOS_Log.LDF , SIZE = 1, FILEGROWTH = 1, MAXSIZE=5) GO-表的建立-(1)建立学生信息表use SOISgocreate table Student(Sno char(10) not null primary key,Sname char(20) not null,Ssex char(2) not null,SbirthdatetimeNOT NULL,SpassVarchar(20)NOT NULL);Go插入数据:insert into Student values(2012101,张三,男,1993-6-28,123)insert into Student values(2012102,李四,男,1994-5-26,456)insert into Student values(2012103,王二,女,1993-1-8,789)insert into Student values(2012104,马武,女,1994-12-6,147)(2) 建立教师信息表use SOISgocreate table Teacher(tnoChar(10) not null primary key,tname char(20) not null,tsex char(2) not null,tbirthdatetimeNOT NULL,ttitleChar(20)NOT NULL);Go插入数据:insert into Student values(510,赵一,男,1976-3-4,老师)insert into Student values(511,钱二, 女,1975-5-9,老师)insert into Student values(512,孙三,女,1993-6-7,老师)insert into Student values(513,李四,男,1994-9-12,主任)(3) 建立管理员信息表use SOISgocreate table Manager (Mno Char(10) NOT NULL primary key,Mname varchar(10)NOT NULL,Msex Char(20) NOT NULL,Mbirth datetimeNOT NULL,Mtitle Char(20) NOT NULL);Go插入数据:insert into Student values(610,周五,女,1976-3-4,主任)insert into Student values(611,吴六,男 ,1975-5-9,员工)insert into Student values(612,郑七,男,1993-6-7,员工)insert into Student values(613,王八,女 ,1994-9-12,员工)(4)建立专业信息表建立use SOISgocreate table Major (Major_no Char(10) NOT NULLprimary key,Major_name Char(20) NOT NULL,Major_teacher varchar(20) NOT NULL,Major_introduce Char(20) NOT NULL,Major_phone Char(20) NOT NULL);Go插入数据:insert into Major values(1111,SA,女,萨,861111)insert into Major values(1112,SC,男,市场,861112)insert into Major values(1113,SD,男,说道,861113)insert into Major values(1114,SE,女,数额,861114)insert into Major values(1115,SF,女,收费,861115)(5) 建立院系信息表use SOISgocreate table Department (Dno Char(10) NOT NULL primary key,DnameChar(20) NOT NULL,DheadVarchar(20)NOT NULL,DintroduceChar(20) NOT NULL,Dphone Char(20) NOT NULL);Go插入数据:insert into Department values(5111,xx,女,信息,861111)insert into Department values(5112,cl,男,材料,761112)insert into Department values(5113,jd,男,机电,661113)insert into Department values(5114,sy,女,设院,561114)insert into Department values(5115,gs,女,工商,461115) (6) 建立课程信息表use SOISgocreate table Coure(Cno Char(10)NOT NULL primary key,CnameChar(10) NOT NULL,Cscore Char(10) NOT NULL,CtimeChar(50) NOT NULL,Cintroduce datetime NOT NULL);Go插入数据: insert into Coure values(J001,kD,8,20,快递)insert into Coure values(J002,kF,9,20,开发)insert into Coure values(J003,kG,8,20,开关)insert into Coure values(J004,kY,9,24,考研)insert into Coure values(J005,kU,5,22,库)(7) 建立成绩表use SOISgocreate table grade(grade_no char(10) not null primary key,grade_name char(20) not null,grade_course char(20) not null,grade_grade int null);Go插入数据:insert into grade values(2012101,J001,kD,88)insert into grade values(2012102,J002,kF,99)insert into grade values(2012103,J003,kG,88)insert into grade values(2012104,J004,kY,98)insert into grade values(2012105,J005,kU,95)-建立索引-Create unique index stuSno on student(Sno);Create unique index teatid on teacher(tid);Create unique index clano on class(Cno);-建立触发器T1(当该表中已存在所对应院系号码的院系时,系统给与错误提示并回滚)- -CREATE TRIGGER T1 ON DepartmentFOR INSERT,UPDATEASIF (SELECT COUNT(*) FROM Department,inserted WHERE Department. Dno =inserted. Dno)0BEGIN PRINT 院系号码产生冲突,请核对后重试! ROLLBACKEND (2)-建立触发器T 2(当专业信息中的院系号不对或者该表中已存在所对应专业号码的专业时,系统给与错误提示并回滚)-CREATE TRIGGER Major ON T2FOR INSERT,UPDATEAS IF(SELECT COUNT(*) FROM Department,inserted WHERE Department. Dno =inserted. Dno)=0BEGIN PRINT 未找到该专业的院系信息,请添加相应院系后重试! ROLLBACKENDELSE IF(SELECT COUNT(*) FROM tb_major,inserted WHERE Major.Major_no=inserted.Major_no)0BEGIN PRINT 院系号码产生冲突,请核对后重试! ROLLBACKEND(3)-建立触发器T 3(当学生信息中的专业号不对或者系统中已存在所对应学号的学生时,系统给与错误提示并回滚)-CREATE TRIGGER T3 ON StudentFOR INSERT,UPDATEAS IF(SELECT COUNT(*) FROM Major,inserted WHERE Major.Major_no=inserted.Major_no)=0BEGIN PRINT 未找到该学生的专业信息,请添加相应专业后重试! ROLLBACKENDELSE IF (SELECT COUNT(*) FROM Student,inserted WHERE Student.Sno=inserted.Sno)0BEGIN PRINT 学号产生冲突,请核对后重试! ROLLBACKEND(4)-建立触发器T 4(课程选课人数超过80个或者对应学生选课门数超过2门或者当前时间不是选课时间段时,系统给与错误提示并回滚)-CREATE TRIGGER T4 ON StucourseFOR INSERT,UPDATEAS IF(SELECT COUNT(*) FROM Stucourse,inserted WHERE Stucourse.Cno=inserted.Cno)80BEGIN PRINT 所对应课程选课人数不能超过80个! ROLLBACKENDELSE IF (SELECT COUNT(*) FROM Student,inserted WHERE Student.Sno=inserted.Sno)2BEGIN PRINT 对应学生的选课不能超过2门! ROLLBACKENDELSE IF (SELECT IfTakeCourse FROM Control)=0BEGIN PRINT 当前不是选课时间段! ROLLBAC
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 33191-2025机动车安全技术检测仪器设备计算机控制与通信技术条件
- GB/T 17001.3-2025防伪油墨第3部分:热敏变色防伪油墨
- 应急安全培训系统建设课件
- 秋季腹泻临床典型症状与鉴别诊断要点
- 饮食因素在癌症预防中作用
- 并购中劳务合同(标准版)
- 学校食堂厨师合同(标准版)
- 2025年文化教育职业技能鉴定每日一练试卷含答案详解【轻巧夺冠】
- 2023年度计算机操作员复习提分资料【A卷】附答案详解
- 2025年在线教育平台用户增长与活跃度提升策略报告
- 隆胸病理课件
- T-SXPFS 0004-2024 山西省银行业金融机构转型贷款实施指引(试行)
- 烹饪工艺学(第2版) 课件 单元3干货原料的涨发加工
- 2025中国移动春季校园招聘高频重点模拟试卷提升(共500题附带答案详解)
- 博物馆安防系统设计方案
- 苏州大学《计算机网络与多媒体》2023-2024学年第一学期期末试卷
- 智能制造能力成熟度模型(-CMMM-)介绍及评估方法分享
- 一把手讲合规-
- 2024年云南怒江州州级事业单位选聘工作人员67人管理单位遴选500模拟题附带答案详解
- 《老年康复护理》帕金森康复护理自测题
- 市国资公司信访维稳工作应急预案
评论
0/150
提交评论