高校教师管理系统的架构分析与设计

高校教师信息数据库需求分析

数据需求分析

目前国家的教育体制正处在不断改革、创新的阶段,我国教育部门充分吸取国外优秀的教学模式,结合国内多年的办学经验,逐步探索出适合中国特色的教学形式,国家教育部面向各级各类学校开展了全面学分制改革。教育部为了实现党的十五大所确定的目标与任务,落实科教兴国战略,特制定了《面向21世纪教育振兴行动计划》,其中讲到“开发高质量教育软件,重点建设全国远程教育资源库和若干个教育软件开发生产基地”。

因此,各院校迫切需要对自己的现有教务管理系统进行改进和提高,根据国内大学的现在管理模式,结合国际新的思想观念,在校园网络环境下建设先进的、与国际水平接轨的信息化管理平台。提高学校管理工作的现代化水平,推广现代教育技术在教学实践中的运用,促进教育整体质量和办学效益的提高。使之成为学校公共信息服务体系的重要组成部分。在这样的大环境下,开发和完善高校教务信息管理系统是目前各高校的迫切需求。

处理需求分析

1、教师基本信息的录入与增加

录入要方便用户把各种数据资料录入到系统将要新建的文本文件中,还要求能进行修改和浏览。这些数据包含教师的工号,姓名,性别,身份证号,婚姻状况,联系方式,家庭住址,政治面貌,所在系id。

2、教师信息的修改

能修改存储在文件中的教师的工号,姓名,性别,身份证号,婚姻状况,联系方式,家庭住址,政治面貌,所在系id。

3、教师信息的查询

能查询存储在文件中的教师的工号,姓名,性别,身份证号,婚姻状况,联系方式,家庭住址,政治面貌,所在系id。

4、教师信息的删除

能存储在文件中的教师的工号,姓名,性别,身份证号,婚姻状况,联系方式,家庭住址,政治面貌,所在系id。

5、院、系号的录入

院、系信息管理包括院、系信息数据的录入,修改与删除等功能。

6、院、系名的查询

能查询在储存在文件中的所在院、系号,院、系名并且查询各个系的老师信息。

7、课程表的录入

输入课程号,课程名,学时,学分,上课教室,所在学期。

8、学生信息表的录入

输入学生的基本信息:学号,姓名,所在系号,上课号。

9、教师所授课程的查询

输入教师id查询该教师所有教授课程以及上课的学生。

数据库与对应scala类的设计

设计局部E-R模型

确定局部结构范围

教师基本信息:工号,姓名,性别,身份证号,婚姻状况,联系方式,家庭住址,政治面貌,所在系id

学院信息:学院id,学院名

系信息:系id,系名,所属学院id

课程信息:课程号,课程名,学时,学分,教室,学期

学生信息:学号,姓名,所属系id,上课号

2.1实体关系图

一名教师可以授多门课,一门课程可由多名教师上;一名学生可以选择多门课程,一门课程可由多名学生选择;一名教师属于一个系,一个系可以有多个教师;一名学生属于一个系,一个系可有多名学生;一个学院有多个系,一个系只能属于一个学院。

定义实体和属性

2.1实体与属性图

实体

属性

教师

工号,姓名,性别,身份证号,婚姻状况,联系方式,家庭住址,政治面貌,所在系id

学院id,学院名

系id,系名,所属学院id

课程

课程号,课程名,学时,学分,学期,教室

学生

学号,姓名,所属系id,上课号

设计与实体相对应的类

2.2实体与类对应关系图

实体

类名

教师

teacher

institute

department

课程

course

学生

student

局部E-R模型的合并

2.2教师E-R图

2.3课程E-R图

2.4院E-R图

图 2.5系E-R图

2.6学生E-R图

设计全局E-R模型

2.7全局E-R图

类图设计

2.8类图

数据库逻辑结构设计与scala类中的属性分析

全局E-R模型转换成关系数据模型

教师(工号,联系方式,姓名,性别,家庭住址,政治面貌,婚姻状况,身份证号,所在系id)主键:工号,外键:所在系id

院(学院id,学院名)主键:学院id

系(id,系名,学院id)主键:系id,外键:学院id

课程(课程号,学时,学分,课程名,教室,学期)主键:课程号

学生(学号,姓名,所属系id,课程号)主键:学号,外键:所属系id,课程号

关系数据模型的优化

消除冲突

1.属性冲突

系实体中的学院id号与院的学院id号属性冲突。

·解决方法:引用外键

2.结构冲突:无

3.命名冲突

学生实体中的课程号与课程实体中课程号命名冲突。

·解决方法:改为课程号和上课号。

关系数据模式优化

教师(工号,联系方式,姓名,性别,家庭住址,政治面貌,婚姻状况,身份证号,所在系id)主键:工号

院(学院id,学院名)主键:学院id

系(id,系名,所属院id)主键:系id,外键:所属院id

课程(课程号,学时,学分,课程名,教室,学期)主键:课程号

学生(学号,姓名,所属系id,上课号)主键:学号,外键:所属系id,上课号

设计各数据表中数据所对应scala设计类中的属性

people类:

图 3.1people类属性

teacher类:

3.2teacher类属性

student类:

3.3student类属性

institute类:

图 3.4institute类属性

departments类:

3.5departments类属性

course类:

3.6course类属性

数据库物理结构设计与scala驱动数据库的代码说明

确定记录的存储格式及设计完整性和安全性

4.1教师表

teacher

列名

类型

备注

id(工号)

int

primary key

name(姓名)

varchar

not null

sex(性别)

varchar

check 约束‘男’‘女’

id_card(身份证号)

varchar

not null and unique

location(家庭住址)

varchar

not null

tele(联系方式)

varchar

not null

politics(政治面貌)

varchar

not null and check

marriage(婚姻状况)

varchar

check 约束‘是’‘否’

id_SuozaiXi(所在系id)

int

not null

表 4.2院信息表

institute

列名

类型

备注

id_Xueyua(学院id)

int

primary key

name_Xueyua(学院名)

varchar

not null

表 4.3系信息表

departments

列名

类型

备注

id_Xi(系id)

int

primary key

name_Xi(系名)

varchar

not null

id_SuoShuXueyuan(所属学院id)

int

not null

表 4.4必修课课程表

b_course

列名

类型

备注

id_b_class(课程号)

int

primary key

name_b_class(课程名)

varchar

not null

b_xueshi(学时)

int

not null

b_score(学分)

int

not null

b_classroom(教室)

varchar

not null

b_term(学期)

varchar

check 约束 ‘1’‘2’

表 4.5选修课课程表

x_course

列名

类型

备注

id_x_class(课程号)

int

primary key

name_x_class(课程名)

varchar

not null

x_xueshi(学时)

int

not null

x_score(学分)

int

not null

x_classroom(教室)

varchar

not null

x_term(学期)

varchar

check 约束 ‘1’‘2’

表 4.6学生信息表

学生信息表

列名

类型

备注

学号

int

primary key

姓名

varchar

not null

所属系id

int

not null

上课号

int

not null

scala驱动数据库的代码

连接数据库

class OperationData {
  private val driver="com.mysql.cj.jdbc.Driver"  //驱动
  private val url="jdbc:mysql://localhost:3306/quotes"  //自己的ip地址:端口号/库名
  private val username="root"   //用户名
  private val password="1234"  //密码

  private var connection:Connection=null

  //加载驱动
  def getConnection():Unit={
    Class.forName(driver)
    connection=  DriverManager.getConnection("jdbc:mysql://localhost:3306/quotes?user=root&password=1234&serverTimezone=UTC")
        println("数据库连接成功")
}

增删改查方法实现

class OperationData {

  val teacher = new teacher

  val departments = new departments

  val institute = new institute

  val student = new student

  var b_course = new b_course

  var x_course = new x_course

  getConnection()

//  增:

//  添加基本信息

  def insert(yuJu: String):Int={

    try{

      val insertSqlString=yuJu

      val statement: PreparedStatement = connection.prepareStatement(insertSqlString)

      val i:Int=connection.createStatement().executeUpdate(insertSqlString)

      println("插入成功")

      i

    }

    finally{

      connection.close()

    }

  }

  //查:

  //查询“LiSi”所在院系名

  def select(yuJu:String):Unit={

    val selectStrSql=yuJu

    try{

      val rs:ResultSet=connection.createStatement().executeQuery(selectStrSql)

      while (rs.next()){

        teacher.id=rs.getInt("id")

        teacher.name=rs.getString("name")

        teacher.sex=rs.getString("sex")

        teacher.id_card = rs.getString("id_card")

        teacher.location = rs.getString("location")

        teacher.tele = rs.getString("tele")

        teacher.politics = rs.getString("politics")

        teacher.marriage = rs.getString("marriage")

        teacher.id_SuozaiXi = rs.getInt("id_SuozaiXi")

        departments.id_Xi=rs.getInt("id_Xi")

        departments.name_Xi=rs.getString("name_Xi")

        departments.id_SuoShuXueyuan = rs.getInt("id_SuoShuXueyuan")

        institute.name_Xueyuan = rs.getString("name_Xueyuan")

        institute.id_Xueyuan = rs.getInt("id_Xueyuan")

        b_course.id_class = rs.getInt("id_b_class")

        b_course.name_class = rs.getString("name_b_class")

        x_course.id_class = rs.getInt("id_x_class")

        x_course.name_class = rs.getString("name_x_class")

        println("查询到"+teacher.name+"信息如下:")

        teacher.outPutInfo()

        departments.outPutInfo()

        institute.outPutInfo()

        b_course.outPutInfo()

        x_course.outPutInfo()

      }

    }

    finally{

      connection.close()

    }

}

//改

// 因学校安排,“张三”调到“logistics management”系(30003)。

  def updata(yuJu:String):Unit= {

    val updataString =yuJu

    try{

      val rs3 = connection.createStatement().executeUpdate(updataString)

      println("更新成功")

    }

    finally{

      connection.close()

    }

}

//删

//“杨铭”因工作调动,不在本学校,将其基本信息删除。

  def deleteDb(name:String):Unit= {

    val sql = "delete from teacher where name= ?"

    try{

      val pstm = connection.prepareStatement(sql)

      pstm.setString(1,name)

      println("删除成功")

    }

    finally{

      connection.close()

    }

  }}

数据库实施、运行及维护

数据库实施

5.1教师数据库表

5.2学院信息数据库表

5.3系信息数据库表

5.4必修课课程表

5.5必修课授课数据库表:

5.6选修课程数据库表

5.7选修课授课数据库表

5.8学生信息数据库表

数据库运行及维护

(1)向“教师表”中增添:工号为:10000010,姓名为:杨铭,性别:女,身份证号:411527198903025011,家庭住址:新5,联系方式:13782939067,政治面貌:党员,婚姻状况:否,所在系id:30001

驱动代码:

val Opdata = new OperationData

//    增:向“教师表”中增添 工号为:10000010,姓名为:杨铭,性别:女,身份证号:411527198903025011,家庭住址:新5,

//       联系方式:13782939067,政治面貌:党员,婚姻状况:否,所在系id:30001

    Opdata.insert(

      """insert into teacher

        |values('1000010','YangMing','female','411527198903025011','new department5',13782939067,'member of Communist Party of China','no','30001');

        |""".stripMargin)

(2)查询“李四”个人全部信息

驱动代码:

//    查询:查询李四所有个人信息

    Opdata.select(yuJu =

      """select *

        |from teacher,departments,institute,b_course,b_shouke,x_course,x_shouke

        |where teacher.name='LiSi' and

        |teacher.id_SuozaiXi = departments.id_Xi and

        |departments.id_SuoShuXueyuan = institute.id_Xueyuan and

        |b_shouke.b_id = teacher.id and

        |b_shouke.b_id_class = b_course.id_b_class and

        |x_shouke.x_id = teacher.id and

        |x_shouke.x_id_class = x_course.id_x_class;

        |""".stripMargin)

(3)“杨铭”因工作调动,不在本学校,将其基本信息删除。

驱动代码:

Opdata.deleteDb("YangMing")

(4)因学校安排,“张三”调到“logistics management”系(30003)

驱动代码:

//    改:因学校安排,“张三”调到“logistics management”系(30003)。

    Opdata.updata(yuJu="""update teacher set id_SuozaiXi=30003

                         |where name = "ZhangSan";

                         |""".stripMargin)

  • 22
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Java教师工作量管理系统是一个用于计算每个老师在一个学期中所教课程的总工作量的系统。该系统采用Java编程语言开发,旨在帮助教师有效管理工作量,合理安排课程,提高工作效率。 首先,系统需要记录每个老师所执教的课程信息。每个课程包括课程名称、授课班级、上课时间和课程学时等信息。教师可以通过系统的界面进行课程管理,包括添加新课程、修改课程信息和删除课程等操作。 接着,系统需要建立一个工作量计算的模块,用于根据教师所执教课程的学时和权重计算出总工作量。每门课程的权重可以根据实际情况进行设置,例如可以根据课程难度和教学任务量来确定。系统可以提供默认的权重设置,也可以允许教师自行调整。 在系统的界面中,教师可以一目了然地查看自己所执教课程的总工作量。系统会自动将所有课程的工作量相加得出结果,并显示在界面上。同时,系统也可以提供导出功能,将工作量结果导出为Excel或PDF等格式,方便教师进行后续的工作量评估和统计分析。 除了计算总工作量,系统还可以提供其他有用的功能,如课程时间冲突检测和工作量计划生成等。教师可以通过系统设置自己的可用时间段,系统会检测课程时间是否有冲突,并提醒教师进行调整。此外,系统还可以根据教师的工作量情况,自动生成工作量计划,帮助教师更好地安排自己的工作。 总之,Java教师工作量管理系统是一个实用的工具,可以帮助教师高效地管理工作量,合理安排课程,并提供相关的统计和分析功能,从而提升教师的工作效率和教学质量。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值