附表2
漳州师范学院计算机科学与工程系
数据库课程设计总结报告
学生学号 | 姓名 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
学生管理系统数据库设计说明书 专 业 | 计算机科学与技术 | 班 级 | 12计师本 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
所属学期 | 2013-2014学年第 一 学期 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1、项目介绍与设计目的 1、项目介绍: 1.1项目名称:学生选课管理系统 1.2随着计算机的飞速发展,计算机应用的快速推广,计算机给我们的学习生活带来了极大的方便。本项目所开发的学生选课系统完成学校对学生的选课信息的统计与管理,减少数据漏掉的情况,同时也节约人力、物力和财力。告别以往的人工统计。 2、设计目的: 方便学生、老师、管理员使用,学生可以查看自己的选课信息,查询选课成绩,修改登入本系统的密码。教师可以,查看个人基本信息,查看所有学生的选课信息,可以查看指定学生的选课信息,为学生进行成绩的录入。管理员可以除具有教师的功能外,还具有添加或删除该学生、教师、以及课程的权限。 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
2、项目环境要求 设备支持: 推荐配置:Windows Xp,512内存 数据库: Microsoft SQL Server 2005 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
3、项目功能模块 数据字典: 学生信息表:学号、姓名、性别、班级号、出生年月、入学年份、用户名、密码 教师信息表:职工号、姓名、所在院系、用户名、密码。 选课信息表:学号、姓名、课程号、课程名、成绩。 课程信息表:课程号、课程名、学分、职工号、教室号、课程容纳人数、上课时间、选修人数 教室信息表:教室号、座位数。 班级信息表:班级号、班级名。 管理员信息表:工号、姓名、电话号码、密码. tb.student
USE xuankeDB CREATE TABLE student --学生信息表 ( stno char(4) primary key, /*该列自动增长,由开始每次增加*/ stname CHAR(8) NOT NULL, stsex char(2) NOT NULL, CONSTRAINT sf_sex CHECK(stsex in ('男','女')), classno char(8), CONSTRAINT s_for FOREIGN KEY (classno)REFERENCES class(classno), stborndate datetime NOT NULL, stenyear datetime NOT NULL, stname1 CHAR(20) NOT NULL, stpassword CHAR(6) NOT NULL, ) tb.teacher
CREATE TABLE teacher ( tno char(5) primary key, tname CHAR(8) NOT NULL, tdepartment VARCHAR(30) NOT NULL, tname1 CHAR(20) NOT NULL, tpassword CHAR(6) NOT NULL, ) tb.course
CREATE TABLE course ( cno char(8) primary key, cname CHAR(30) NOT NULL, ccredit CHAR(2)NOT NULL, tno char(5), CONSTRAINT c_for FOREIGN KEY (tno) REFERENCES teacher(tno), clasroomno char(8), cnum CHAR(5) NOT NULL, ctime CHAR(12) NOT NULL, coursenum int, ) 以下是创建其余各表的语句 CREATE TABLE select_course ( stno varchar(50), stname varchar(50), cno char(8), cname varchar(50), CONSTRAINT sc_is primary key(stno,cno), score INT ) CREATE TABLE manager ( ManagerNum char(8) primary key, ManagerName CHAR(8) NOT NULL, Managertelephone CHAR(11) NOT NULL, Managerpassword CHAR(6) NOT NULL, ) E-R图: 关系模式: 学生信息表(学号、姓名、性别、班级号、出生年月、入学年份、用户名、密码) 教师信息表(职工号、姓名、所在院系、用户名、密码) 选课信息表(学号、课程号、姓名、课程名、成绩) 课程信息表(课程号、课程名、学分、职工号、教室号、课程容纳人数、上课时间、选修人数) 教室信息表(教室号、座位数) 班级信息表(班级号、班级名) 管理员信息表(工号、姓名、电话号码、密码) 系统功能模块 创建约束: ALTER TABLE teacher ADD CONSTRAINT tz_tno CHECK(tno LIKE '[0-9][0-9][0-9][0-9][0-9]'), CONSTRAINT th_psw CHECK(len(tpassword)=6), CONSTRAINT tK_pass CHECK(tpassword LIKE '[0-9][0-9][0-9][0-9][0-9][0-9]') Go ALTER TABLE select_course ADD CONSTRAINT sc_ch CHECK (score>=0 and score<=100) 插入数据: SET NOCOUNT ON --不显示受影响的条数信息 INSERT INTO teacher(tno,tname,tdepartment,tname1,tpassword) VALUES('10001','杜拉拉','计算机科学与工程系','dll','654321') INSERT INTO teacher(tno,tname,tdepartment,tname1,tpassword) VALUES('10002','陈小芳','计算机科学与工程系','cxf','121212') 创建视图: create view 选课成绩 AS select student.stno as 学号,student.stname as 学生姓名,course.cno as 课程号, course.cname as 课程名, select_course.score as 成绩 from student,course,select_course where student.stno=select_course.stno and select_course.cno=course.cno create view 已选课信息 AS select student.stno as 学号,student.stname as 学生姓名, teacher.tno as 教师职工号, teacher.tname as 教师姓名, course.cno as 课程号,course.cname as 课程名,course.ccredit as 学分, course.clasroomno as 上课地点,course.ctime as 上课时间 from student,course,select_course,teacher where (student.stno=select_course.stno and course.cno=select_course.cno and teacher.tno=course.tno) create view 学生信息 AS select stno as 学号,stname as 学生姓名,stsex as 性别, classno as 班级号, stborndate as 出生年月, stenyear as 入学时间, stname1 as 用户名, stpassword as 密码 from student 创建触发器: /*删除学生表的记录时,同时删除选课表中的选课信息*/ create trigger tri_delestudent on student after delete as begin declare @xh char(10) select @xh=stno from deleted delete from select_course where select_course.stno=@xh end delete from student where stno='1002' select*from student select*from select_course /*编写插入触发器,要求每位学生的选课门数不超过2门*/ create trigger check_num on select_course after insert as if(select count(1)from select_course where stno=(select stno from inserted ))>2 begin rollback tran raiserror 50001 N'不能超过2门选课' end /*创建课程选课人数限制的触发器*/ create trigger tri_limitcourse on select_course after insert as if(select count(1) from course where cno=(select cno from inserted ))>50 begin rollback tran raiserror 50001 N'所对应课程选课人数不能超过50个!' End /*创建课程选课人数更新的触发器*/ create trigger tri_sum on select_course after insert,delete as begin declare @t_sum int select @t_sum=sum(1) from select_course where cno=(select cno from inserted) update course set coursenum=@t_sum where cno=(select cno from inserted) end /*在插入、修改、删除教师数据时,会自动显示所有教师信息*/ create trigger print_teacher on teacher for insert,update,delete as select *from teacher create trigger tri_teacher on teacher for insert,update,delete as update teacher set tpassword='120678' where tpassword in(select tpassword where tno='10001') 创建存储器 /*创建学生成绩录入的存储过程*/ create procedure InsertResult /*输入学号,课程号,分数*/ @studentno1 char(7), @cno1 varchar(32), @score1 int as set NOCOUNT ON declare @nCount int SET @nCount=0 declare @ncno int SET @ncno=0 declare @cno2 int set @cno2=0 declare @nExistAchievement int set @nExistAchievement=0 --判断学号是否存在 select @nCount = COUNT(*) from student where student.stno=@studentno1 if @nCount < 1 begin print'学生基本信息表中不存在此学号,请检查后重新输入' return end select /*判断选修课及成绩*/ @cno1=count(*), @nExistAchievement=select_course.score from select_course Group by select_course.score,select_course.cno if @cno1<1 begin print'该学生的选修中没有这门课' return end if @nExistAchievement>0 begin print'此学生的这门课的成绩已经录入,请不要重复录入' return end update select_course set select_course.score=@score1 where select_course.stno=@studentno1 insert into select_course(stno,stname,cno,cname) values('1003','李芳','c03','教师礼仪') EXECUTE InsertResult'1003','c03','99' select*from select_course 执行存储过程后的结果如下所示 /*带参数的存储过程,查询某个同学的基本信息*/ use xuankeDB GO create procedure Getstudent @number char(7) as select *from student where stno=@number GO EXECUTE getstudent'1001' /*添加课程信息*/ create procedure insert_course @t_cno char(7), @t_cname char(8), @t_credit char(4), @t_tno char(8), @clasroomno char(8), @cnum char(4), @time char(8), @t_coursenum char(5), @rtn int output as set NOCOUNT ON declare @cname1 char(20), @cno char(7) if exists(select * from course where cno=@t_cno) begin select @cname1=@t_cname from course where cno=@t_cno if(@cname1=@t_cname) begin set @rtn=0 /*有相同的数据*/ end end else begin insert into course values(@t_cno,@t_cname,@t_credit,@t_tno,@clasroomno,@cnum, @time,@t_coursenum) set @rtn=1 /*没有相同的数据,请进行插入操作*/ End 调用存储过程的执行语句,以及结果 declare @rtn int exec insert_course 'c04','java程序设计','4','10001','励志','50','5-16周','0',@rtn output if @rtn=0 print'已经存在相同的,不能重复输入' else if @rtn=1 print'插入成功' /*创建删除教师的存储过程*/ create procedure dele_teacher @t_no char(7) as set nocount on print'删除成功' delete from teacher where tno=@t_no Go EXECUTE dele_teacher'10003' /*创建修改教师个人信息的存储过程*/ create procedure alter_teacher @t_no1 char(7) as update teacher set tpassword='201314' where tpassword in(select tpassword where tno='10003') EXECUTE alter_teacher'10003' /*按学生的学号查询学生所有课程的成绩*/ create procedure che_score @st varchar(20) as select select_course.cno,select_course.cname,select_course.score from select_course where select_course.stno=@st EXECUTE che_score'1002' | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
四、小组成员名单及分工情况(要求包括小组成员名单、工作分配及小组各成员贡献度)) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
五、程序用户名及密码 管理员:王东成 密码:878787 教师: 杜拉拉 密码:120678 陈小芳 密码:121212 张烨星 密码:201314 学生: 张三 密码:123456 李四 密码:111111 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
6、体会与感想 这次的课程设计,可以说是毕业设计的一次预演。做起来的时候困难重重,去图书馆数据库系统开发的书籍,发现有许多我们没有接触过的知识。甚至有些代码都看不懂。在经过长时间的摸索,以及上网查资料,我学会了许多,也让我明白了数据库的应用性原来这么强。让我产生了进一步深入学习数据库编程的兴趣,同时,让我增强了自学能力。 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
七、指导教师意见 指导教师(签名): 年 月 日 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
注:该表格由学生填写,内容采用小四号宋体。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论