作业内容:本周我们组根据老师的要求对需求分析说明书进行了第二版的修改。此外我们小组进行编写了概要设计说明书。以下是我这周的项目工作的成果。
我主要负责概要设计书的系统数据结构设计。
一、逻辑结构设计要点
根据整个作业管理系统的设计,画出了如下E-R图(使用word画的简略图)
1、教师信息表
教师(教工号,姓名,所属院系,联系方式,邮箱地址)
2、学生信息表
学生(学号,姓名,所属院系,联系方式,邮箱地址)
3、课程信息表
课程(课程ID,课程教工号,授课班级,作业存放地址,上传作业的目录)
4、课程作业信息表
作业(作业ID,教师教工号,学生学号,作业状态,作业下载地址,批阅作业下载地址,成绩)
二、物理结构设计要点
给出本系统内所使用的每个数据结构中的每个数据项的存储要求,访问方法、存取单位、存取的物理关系(索引、设备、存储区域)、设计考虑和保密条件。
- 教师信息表
教师信息表主要用于存放教师的基本信息,包括教工号、姓名、所属学院、联系方式和E-mail地址。
字段名 |
字段含义 |
数据类型 |
是否为空 |
varID |
教师教工号 |
varchar(20) |
否 |
varName |
教师姓名 |
varchar(20) |
否 |
varDepartment |
教师所属院系 |
varchar(50) |
否 |
varPhoneNum |
教师联系方式 |
varchar(30) |
是 |
varEmail |
教师邮箱地址 |
varchar(100) |
是 |
表5-2-1教师信息表
2.学生信息表
学生信息和语教师信息表一样,存放学生的基本信息,包括学生的学号、姓名、专业或学院、联系方式、E-mail地址
字段名 |
字段含义 |
数据类型 |
是否为空 |
varID |
学生学号 |
varchar(20) |
否 |
varName |
学生姓名 |
varchar(20) |
否 |
varDepartment |
学生所属院系 |
varchar(50) |
否 |
varPhoneNum |
学生联系方式 |
varchar(30) |
是 |
varEmail |
学生邮箱地址 |
varchar(100) |
是 |
表5-2-2学生信息表
3.课程信息表
课程信息表存放所有的课程信息,信息包括课程代码、课程名、教师教工号、教师名、课程的时间、课程的地点,课程对应的学生作业在服务器内存放目录。
字段名 |
字段含义 |
数据类型 |
是否为空 |
varCourseID |
课程ID |
varchar(20) |
否 |
varName |
课程名 |
varchar(50) |
否 |
varTeacher |
课程教工号 |
varchar(20) |
否 |
varClass |
授课班级 |
varchar(100) |
否 |
varRequest |
作业存放地址 |
varchar(255) |
是 |
varDirectory |
上传作业的目录 |
varchar(255) |
否 |
表5-2-3课程信息表
4.课程作业信息表
课程名单表存放所有课程的所有名单,即课程和学生的对应关系。根据需求分析,理论上的课程名单表只需要有课程唯一确定号、教工号、学生学号就能够标识课程和学生的对应关系,但是这样会造成教师或学生的信息需要从其他表导出,这样会增加数据库的读取次数。为了减少这样的次数,我们以增加硬盘占用空间作为代价增加几个冗余属性——课程名、课程代码、教师姓名、学生姓名。 除了基本的对应信息之外,学生上传的作业、教师上传的批阅作业、教师上传的作业要求的存放地址也存放于这个表中。其他信息包括课程作业状态、成绩、分组信息、组内角色亦存放于此表。
字段名 |
字段含义 |
数据类型 |
是否为空 |
varCourseID |
课程号 |
varchar(50) |
否 |
varTeacher |
教师教工号 |
varchar(20) |
否 |
varStudentID |
学生学号 |
varchar(20) |
否 |
varStatus |
作业状态 |
varchar(255) |
是 |
varFinalFile |
作业下载地址 |
varchar(255) |
是 |
varFileAmended |
批阅作业下载地址 |
varchar(255) |
是 |
intMart |
成绩 |
Int |
是 |
表5-2-4课程作业信息表
三、数据结构与程序的关系
数据结构为关系型数据库,所以在程序中可以用标准的SQL语句与数据结构进行交互,交互过程中采用通用的数据反问接口。为了保持良好的程序架构,对数据库访问采用DAO设计模式实现,提高维护性和扩张性。