一、 需求分析:
1. 达到的功能
1.1 用户角度:可以注册、登录、登录后可以对自己的任课老师进行投票、可在界面上看到教师的排名、以及班级的参与率
1.2 开发人员角度:可以修改 用户注册、登录、投票信息、可以根据需求,调用、修改学生投票的理由选项
二、 数据库实现
2.1数据库:育英好课堂
2.2数据表:
2.2.1班级表(class)
列名 | 数据类型 | 允许null值 |
Classnum(班级编号) | nchar(10) | 否 |
Classname(班级姓名) | nchar(10) | 是 |
Branch(隶属分院) | nchar(10) | 是 |
Start(开学日期) | date | 否 |
Place(班级地点) | nchar(10) | 是 |
Term(第几学期) | date | 是 |
2.2.2注册表(login)
列名 | 数据类型 | 允许null值 |
Stuid(学号) | nchar(10) | 是 |
wid(微信) | nchar(10) | 否 |
Phone(电话) | nchar(11) | 否 |
2.2.3学生信息表(stu)
列名 | 数据类型 | 允许null值 |
Name(姓名) | nchar(10) | 是 |
Classnum(所属班级编号) | nchar(10) | 是 |
Sex(性别) | nchar(2) | 是 |
Branch(隶属分院) | nchar(10) | 是 |
Phone(电话) | nchar(11) | 是 |
Stuid(学号) | nchar(10) | 否 |
2.2.4课程表(course)
列名 | 数据类型 | 允许null值 |
Counum(课程编号) | nchar(10) | 否 |
Couname(课程名称) | nchar(10) | 是 |
Classnum(班级编号) | nchar(10) | 是 |
2.2.5教师表(teacher)
列名 | 数据类型 | 允许null值 |
Tname(教师姓名) | nchar(10) | 是 |
Teachid(教师编号) | nchar(10) | 否 |
Sex(性别) | nchar(10) | 是 |
Branch(隶属分院) | nchar(10) | 是 |
Phone(手机号) | nchar(10) | 是 |
2.2.6投票表(vote)
列名 | 数据类型 | 允许null值 |
Renum(投票编号) | nchar(10) | 否 |
[content](投票内容) | nchar(50) | 是 |
Mark(投票标记) | int | 是 |
2.2.7投票信息表(votemess)
列名 | 数据类型 | 允许NULL值 |
Classnum(班级编号) | nchar(10) | 是 |
Time(投票时间) | date | 是 |
Renum(理由编号) | nchar(10) | 是 |
Teachid(教师编号) | nchar(10) | 是 |
Counum(课程编号) | nchar(10) | 是 |
Stuid(学生学号) | nchar(10) | 是 |
2.3约束
2.3.1注册表中手机号Check约束为11位
2.3.2学生表中手机号Check约束为11位
2.3.3学生表已经教师表的性别 非男即女
2.3.4投票表中的Mark标记非1即2
2.3.5注册表的微信号只能出现一次
2.4.视图
2.4.1视图
2.4.1.1
名称:班级投票(class_vote)
功能:根据投票的 教师编号、教师姓名、投票编号、课程姓名、班级姓名、投票时间、班级名称、学生姓名、学生学号整合投票信息
代码:
create view [dbo].[class_vote]
as
select teacher.teachid,teacher.tname,votemess.renum,course.couname,class.classnum,votemess.time,class.classname,stu.name,stu.stuid
from teacher,votemess,course,class,stu
where votemess.teachid=teacher.teachid and votemess.counum=course.counum and votemess.classnum=class.classnum and votemess.st
2.4.1.2
名称: 班级成员表(member)
功能:统计班级的人员人数
代码:create view [dbo].[member]
as
select class.classname,class.classnum,count(stuid) as mem
from stu,class
where stu.classnum=class.classnum
group by class.classname,class.classnum
2.4.1.3
名称: 教师投票表(teacher_vote)
功能:根据 隶属分院、教师姓名、教师编号、课程编号、课程姓名分组计算获得的投票率
代码: create view [dbo].[teacher_vote]
as
select teacher.branch,teacher.tname,teacher.teachid,course.counum,course.couname,COUNT(votemess.teachid)*1.0/COUNT(member.mem) as rate
from teacher,course,votemess,member
where votemess.teachid=teacher.teachid and votemess.counum=course.counum and member.classnum=course.classnum
group by teacher.branch,teacher.teachid,course.counum,teacher.tname,course.couname
2.4.1.4
名称:教师排名表(teacher_rank)
功能:根据教师的投票率降序排序、显示隶属分院、教师姓名、教师编号、课程编号、课程姓名、投票率
代码: create view [dbo].[teacher_rank]
as
select ROW_NUMBER()over(order by rate desc) as rank,*
from teacher_vote
2.4.2存储过程
2.4.2.1
名称:班级投票率(class_rate)
功能:根据输入的班级编号、开始时间、结束时间来统计计算班级的投票率
代码: create procedure[dbo].[class_rate]
@classnum char(4),
@start smalldatetime,
@end smalldatetime
as
select COUNT(distinct stuid)*1.0/member.mem
from class_vote,member
where member.classnum=class_vote.classnum and @classnum=class_vote.classnum and class_vote.time>=@start and class_vote.time<=@end
group by member.mem
2.4.2.2
名称:教师排名(t_rank)
功能:根据输入的教师编号、课程编号、分院名称统计教师的排名
代码: create procedure [dbo].[t_rank]
@teachid nchar(10),
@counum nchar(10),
@branch nchar(10)
as
select teacher_rank.rank,teacher_rank.teachid,teacher_rank.tname,teacher_rank.branch,teacher_rank.couname
from teacher_rank
where teacher_rank.teachid=@teachid and teacher_rank.counum=@counum and @branch=teacher_rank.branch
三、 小结
3.1
自我评价:逻辑清晰、但是可能会有所遗漏、缺乏实际的数据检测数据库是否能符合要求
3.2
改进方向:可以收集信息录入数据库、再根据数据库视图、存储过程、功能、要求进行优化、修改