排课系统数据库报告.docx
《排课系统数据库报告.docx》由会员分享,可在线阅读,更多相关《排课系统数据库报告.docx(31页珍藏版)》请在冰豆网上搜索。
排课系统数据库报告
数据库课程设计
题目某中学排课管理系统
专业班级
姓名
学号
完成日期2014-11-24
一、需求分析
学生隶属班级,班级按照课程表上课,课程由老师教授,这些都要有管理人员来管理。
总结出如下需求信息:
1)一个班级有多个学生;
2)一个学生有多门课,一门课对应多个学生;
3)一个教师可以教授多门课,一门课可以由多个教师来教授;
4)一个班级对应一张班级课程表,一个教师也对应一张教师课程表;
5)一个教师可以教授多个班级;
经过对上述系统功能的分析和需求总结,设计总结如下:
1.1数据字典
1)学生信息表
字段名称
数据类型
默认值
允许空
主键
studentID
int
是
name
char(10)
sex
char
(2)
是
birthday
datetime
是
classID
int
是
2)班级信息表
字段名称
数据类型
默认值
允许空
主键
classID
int
是
classname
char(20)
3)教师信息表
字段名称
数据类型
默认值
允许空
主键
teacherID
int
是
name
char(10)
sex
char
(2)
是
age
int
是
courseID
int
是
4)课程信息表
字段名称
数据类型
默认值
允许空
主键
courseID
int
是
classname
char(20)
teacherID
int
是
5)课程表信息表
字段名称
数据类型
默认值
允许空
主键
星期
char(20)
是
第一节
char(20)
是
......
第八节
char(20)
是
班级ID
Int
6)用户信息表
字段名称
数据类型
默认值
允许空
主键
users
varchar(50)
是
password
varchar(50)
1.2全系统的数据项
数据项:
1)学生信息:
学生ID、姓名、性别、出生日期、所属班级。
2)班级信息:
班级ID、所属年级。
3)教师信息:
教师ID、姓名、性别、年龄。
4)课程信息:
课程ID、课程名称、教师ID。
5)课程表信息:
星期、第一节、第二节、第三节、第四节、第五节、第六节、第七节、第八节、班级ID。
1.3数据流图
信息录入排课系统查询
信息文件
二、概念结构设计
2.1E-R图
1)学生实体E-R图
出生日期
2)班级实体E-R图
班级名称
3)教师实体E-R图
4)
课程实体E-R图
5)课程表实体E-R图
班级ID第一节第二节
......
第八节
6)全局E-R图
2.2系统说明书
1)系统要求
某中学的排课管理系统
●实现班级、课程等基本信息的管理;
●实现学生、教师信息的管理;
●实现班级课程及课程的任课教师和排课管理;
●创建存储过程检测指定教师、指定节次是否有课;
●创建存储过程生成指定班级的课程表;
●创建存储过程生成指定老师的课程表;
●建立数据库相关表之间的参照完整性约束。
2)方案和概图
a)设计方案
b)系统概图
用户登录界面
错误提示界面
排课系统主界面
教师信息主界面
教师信息查询
报错
学生信息查询主界面
学生信息查询
报错
课程信息查询主界面
课程信息查询
班级信息查询
报错课表信息查询
班级课程表
教师课程表查询
学生课程表查询
三、逻辑结构设计
3.1关系模型
1)学生(学生ID,姓名,性别,出生日期,班级ID)
主键:
学生ID外键:
班级ID
2)班级(班级ID,班级名称)
主键:
班级ID
3)教师(教师ID,姓名,性别,年龄,)
主键:
教师ID
4)课程(课程ID,课程名称,教师ID)
主键:
课程名称外键:
教师ID
5)课程表1(星期,第一节,第二节,第三节,第四节,第五节,第六节,第七节,第八节)
主键:
星期外键:
第一节,第二节,第三节,第四节,第五节,第六节,第七节,第八节
6)课程表2(星期,第一节,第二节,第三节,第四节,第五节,第六节,第七节,第八节,课程名称)
主键:
星期外键:
第一节,第二节,第三节,第四节,第五节,第六节,第七节,第八节
3.2参照完整性约束条件
学生——班级学生.班级ID=班级.班级ID
教师——课程教师.课程ID=课程.课程ID
课程表——班级课程表.班级ID=班级.班级ID
课程表——教师课程表.教师ID=教师.教师ID
3.3系统结构图
排课管理系统
四、数据库实施
4.1关系模式
1)class表
CREATETABLE[dbo].[class](
[classID][int]NOTNULL,
[classname][nchar](20)NOTNULL,
CONSTRAINT[PK_class]PRIMARYKEYCLUSTERED
(
[classID]ASC
)WITH(PAD_INDEX=OFF,STATISTICS_NORECOMPUTE=OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS=ON)ON[PRIMARY]
)ON[PRIMARY]
2)course表
CREATETABLE[dbo].[course](
[courseID][int]NOTNULL,
[coursename][nchar](20)NOTNULL,
[teacherID][int]NULL,
CONSTRAINT[PK_course]PRIMARYKEYCLUSTERED
(
[coursename]ASC
)WITH(PAD_INDEX=OFF,STATISTICS_NORECOMPUTE=OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS=ON)ON[PRIMARY]
)ON[PRIMARY]
ALTERTABLE[dbo].[course]WITHCHECKADDCONSTRAINT[FK_course_teacher1]FOREIGNKEY([teacherID])
REFERENCES[dbo].[teacher]([teacherID])
ALTERTABLE[dbo].[course]CHECKCONSTRAINT[FK_course_teacher1]
3)student表
CREATETABLE[dbo].[student](
[studentID][int]NOTNULL,
[name][nchar](10)NOTNULL,
[sex][nchar]
(2)NULL,
[birthday][datetime]NULL,
[classID][int]NULL,
CONSTRAINT[PK_student]PRIMARYKEYCLUSTERED
(
[studentID]ASC
)WITH(PAD_INDEX=OFF,STATISTICS_NORECOMPUTE=OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS=ON)ON[PRIMARY]
)ON[PRIMARY]
ALTERTABLE[dbo].[student]WITHCHECKADDCONSTRAINT[FK_student_class]FOREIGNKEY([classID])
REFERENCES[dbo].[class]([classID])
ALTERTABLE[dbo].[student]CHECKCONSTRAINT[FK_student_class]
4)teacher表
CREATETABLE[dbo].[teacher](
[teacherID][int]NOTNULL,
[name][nchar](10)NULL,
[sex][nchar]
(2)NULL,
[age][int]NULL,
CONSTRAINT[PK_teacher]PRIMARYKEYCLUSTERED
(
[teacherID]ASC
)WITH(PAD_INDEX=OFF,STATISTICS_NORECOMPUTE=OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS=ON)ON[PRIMARY]
)ON[PRIMARY]
5)courselist1表
CREATETABLE[dbo].[courselist1](
[第一节][nchar](20)NULL,
[第二节][nchar](20)NULL,
[第三节][nchar](20)NULL,
[第四节][nchar](20)NULL,
[第五节][nchar](20)NULL,
[第六节][nchar](20)NULL,
[第七节][nchar](20)NULL,
[第八节][nchar](20)NULL,
[星期][nchar](20)NULL
)ON[PRIMARY]
ALTERTABLE[dbo].[courselist1]WITHCHECKADDCONSTRAINT[FK_courselist1_course]FOREIGNKEY([第一节])
REFERENCES[dbo].[course]([coursename])
ALTERTABLE[dbo].[courselist1]CHECKCONSTRAINT[FK_courselist1_course]
ALTERTABLE[dbo].[courselist1]WITHCHECKADDCONSTRAINT[FK_courselist1_course1]FOREIGNKEY([第二节])
REFERENCES[dbo].[course]([coursename])
ALTERTABLE[dbo].[courselist1]CHECKCONSTRAINT[FK_courselist1_course1]
ALTERTABLE[dbo].[courselist1]WITHCHECKADDCONSTRAINT[FK_courselist1_course2]FOREIGNKEY([第三节])
REFERENCES[dbo].[course]([coursename])
ALTERTABLE[dbo].[courselist1]CHECKCONSTRAINT[FK_courselist1_course2]
ALTERTABLE[dbo].[courselist1]WITHCHECKADDCONSTRAINT[FK_courselist1_course3]FOREIGNKEY([第四节])
REFERENCES[dbo].[course]([coursename])
ALTERTABLE[dbo].[courselist1]CHECKCONSTRAINT[FK_courselist1_course3]
ALTERTABLE[dbo].[courselist1]WITHCHECKADDCONSTRAINT[FK_courselist1_course4]FOREIGNKEY([第五节])
REFERENCES[dbo].[course]([coursename])
ALTERTABLE[dbo].[courselist1]CHECKCONSTRAINT[FK_courselist1_course4]
ALTERTABLE[dbo].[courselist1]WITHCHECKADDCONSTRAINT[FK_courselist1_course5]FOREIGNKEY([第六节])
REFERENCES[dbo].[course]([coursename])
ALTERTABLE[dbo].[courselist1]CHECKCONSTRAINT[FK_courselist1_course5]
ALTERTABLE[dbo].[courselist1]WITHCHECKADDCONSTRAINT[FK_courselist1_course6]FOREIGNKEY([第七节])
REFERENCES[dbo].[course]([coursename])
ALTERTABLE[dbo].[courselist1]CHECKCONSTRAINT[FK_courselist1_course6]
ALTERTABLE[dbo].[courselist1]WITHCHECKADDCONSTRAINT[FK_courselist1_course7]FOREIGNKEY([第八节])
REFERENCES[dbo].[course]([coursename])
ALTERTABLE[dbo].[courselist1]CHECKCONSTRAINT[FK_courselist1_course7]
6)courselist2表
CREATETABLE[dbo].[courselist2](
[第一节][nchar](20)NULL,
[第二节][nchar](20)NULL,
[第三节][nchar](20)NULL,
[第四节][nchar](20)NULL,
[第五节][nchar](20)NULL,
[第六节][nchar](20)NULL,
[第七节][nchar](20)NULL,
[第八节][nchar](20)NULL,
[星期][nchar](20)NULL
)ON[PRIMARY]
ALTERTABLE[dbo].[courselist2]WITHCHECKADDCONSTRAINT[FK_courselist2_course]FOREIGNKEY([第一节])
REFERENCES[dbo].[course]([coursename])
ALTERTABLE[dbo].[courselist2]CHECKCONSTRAINT[FK_courselist2_course]
ALTERTABLE[dbo].[courselist2]WITHCHECKADDCONSTRAINT[FK_courselist2_course1]FOREIGNKEY([第二节])
REFERENCES[dbo].[course]([coursename])
ALTERTABLE[dbo].[courselist2]CHECKCONSTRAINT[FK_courselist2_course1]
ALTERTABLE[dbo].[courselist2]WITHCHECKADDCONSTRAINT[FK_courselist2_course2]FOREIGNKEY([第三节])
REFERENCES[dbo].[course]([coursename])
ALTERTABLE[dbo].[courselist2]CHECKCONSTRAINT[FK_courselist2_course2]
ALTERTABLE[dbo].[courselist2]WITHCHECKADDCONSTRAINT[FK_courselist2_course3]FOREIGNKEY([第四节])
REFERENCES[dbo].[course]([coursename])
ALTERTABLE[dbo].[courselist2]CHECKCONSTRAINT[FK_courselist2_course3]
ALTERTABLE[dbo].[courselist2]WITHCHECKADDCONSTRAINT[FK_courselist2_course4]FOREIGNKEY([第五节])
REFERENCES[dbo].[course]([coursename])
ALTERTABLE[dbo].[courselist2]CHECKCONSTRAINT[FK_courselist2_course4]
ALTERTABLE[dbo].[courselist2]WITHCHECKADDCONSTRAINT[FK_courselist2_course5]FOREIGNKEY([第六节])
REFERENCES[dbo].[course]([coursename])
ALTERTABLE[dbo].[courselist2]CHECKCONSTRAINT[FK_courselist2_course5]
ALTERTABLE[dbo].[courselist2]WITHCHECKADDCONSTRAINT[FK_courselist2_course6]FOREIGNKEY([第七节])
REFERENCES[dbo].[course]([coursename])
ALTERTABLE[dbo].[courselist2]CHECKCONSTRAINT[FK_courselist2_course6]
ALTERTABLE[dbo].[courselist2]WITHCHECKADDCONSTRAINT[FK_courselist2_course7]FOREIGNKEY([第八节])
REFERENCES[dbo].[course]([coursename])
ALTERTABLE[dbo].[courselist2]CHECKCONSTRAINT[FK_courselist2_course7]
7)用户user表
CREATETABLE[dbo].[users](
[username][varchar](50)NOTNULL,
[password][varchar](50)NOTNULL,
CONSTRAINT[PK_users]PRIMARYKEYCLUSTERED
(
[username]ASC
)WITH(PAD_INDEX=OFF,STATISTICS_NORECOMPUTE=OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS=ON)ON[PRIMARY]
)ON[PRIMARY]
8)创建存储过程生成指定班级的课程表
createprocup_class(@classIDint)
as
select*fromcourselist1wherecourselist1.classID=@classID
executeup_class'1101'
9)创建存储过程生成指定老师的课程表
createprocup_teacher(@teacherIDint)
as
select*fromcourlist1wherecourselist1.teacherID=@teacherID
executeup_teacher'1'
10)创建存储过程检测指定教师、指定节次是否有课
createprocup_teacheer(@teacherIDint,@星期nvarchar(50))
as
select*fromcoueselist1wherecourselist1.teacherID=@teacherIDandcourselist1.星期=@星期
executeup_teacher'1','第一节'
4.2程序编码(C#语言)
添加头文件:
usingSystem.Data.SqlClient;
1)用户登录关键代码
if(textBox1.Text=="")
{
MessageBox.Show("用户名不能为空!
");
return;
}
if(textBox2.Text=="")
{
MessageBox.Show("密码不能为空!
");
return;
}
stringconstr="server=.;database=中学排课系统;uid=sa;pwd=sa";
SqlConnectionconn=newSqlConnection(constr);
conn.Open();
try
{
stringlogin="select*fromuserswhereusername='"+textBox1.Text.Trim()+"'andpassword='"+textBox2.Text+"'";
SqlCommandsqlCmd=newSqlCommand(login,conn);
SqlDataReadersqlReader=sqlCmd.ExecuteReader();
sqlReader.Read();
if(sqlReader.HasRows)
{
sqlReader.Close();
startstart=newstart();
start.Show();
this.Hide();
}
else
{
MessageBox.Show("用户名或密码错误!
");
}
}
catch(Exceptionex)
{
Messa