当前位置:   article > 正文

高校教师管理系统的架构分析与设计_高校教师事务管理系统需求分析

高校教师事务管理系统需求分析

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

数据需求分析

目前国家的教育体制正处在不断改革、创新的阶段,我国教育部门充分吸取国外优秀的教学模式,结合国内多年的办学经验,逐步探索出适合中国特色的教学形式,国家教育部面向各级各类学校开展了全面学分制改革。教育部为了实现党的十五大所确定的目标与任务,落实科教兴国战略,特制定了《面向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驱动数据库的代码

连接数据库

  1. class OperationData {
  2. private val driver="com.mysql.cj.jdbc.Driver" //驱动
  3. private val url="jdbc:mysql://localhost:3306/quotes" //自己的ip地址:端口号/库名
  4. private val username="root" //用户名
  5. private val password="1234" //密码
  6. private var connection:Connection=null
  7. //加载驱动
  8. def getConnection():Unit={
  9. Class.forName(driver)
  10. connection= DriverManager.getConnection("jdbc:mysql://localhost:3306/quotes?user=root&password=1234&serverTimezone=UTC")
  11. println("数据库连接成功")
  12. }

增删改查方法实现

  1. class OperationData {
  2.   val teacher = new teacher
  3.   val departments = new departments
  4.   val institute = new institute
  5.   val student = new student
  6.   var b_course = new b_course
  7.   var x_course = new x_course
  8.   getConnection()
  9. //  增:
  10. //  添加基本信息
  11.   def insert(yuJu: String):Int={
  12.     try{
  13.       val insertSqlString=yuJu
  14.       val statement: PreparedStatement = connection.prepareStatement(insertSqlString)
  15.       val i:Int=connection.createStatement().executeUpdate(insertSqlString)
  16.       println("插入成功")
  17.       i
  18.     }
  19.     finally{
  20.       connection.close()
  21.     }
  22.   }
  23.   //查:
  24.   //查询“LiSi”所在院系名
  25.   def select(yuJu:String):Unit={
  26.     val selectStrSql=yuJu
  27.     try{
  28.       val rs:ResultSet=connection.createStatement().executeQuery(selectStrSql)
  29.       while (rs.next()){
  30.         teacher.id=rs.getInt("id")
  31.         teacher.name=rs.getString("name")
  32.         teacher.sex=rs.getString("sex")
  33.         teacher.id_card = rs.getString("id_card")
  34.         teacher.location = rs.getString("location")
  35.         teacher.tele = rs.getString("tele")
  36.         teacher.politics = rs.getString("politics")
  37.         teacher.marriage = rs.getString("marriage")
  38.         teacher.id_SuozaiXi = rs.getInt("id_SuozaiXi")
  39.         departments.id_Xi=rs.getInt("id_Xi")
  40.         departments.name_Xi=rs.getString("name_Xi")
  41.         departments.id_SuoShuXueyuan = rs.getInt("id_SuoShuXueyuan")
  42.         institute.name_Xueyuan = rs.getString("name_Xueyuan")
  43.         institute.id_Xueyuan = rs.getInt("id_Xueyuan")
  44.         b_course.id_class = rs.getInt("id_b_class")
  45.         b_course.name_class = rs.getString("name_b_class")
  46.         x_course.id_class = rs.getInt("id_x_class")
  47.         x_course.name_class = rs.getString("name_x_class")
  48.         println("查询到"+teacher.name+"信息如下:")
  49.         teacher.outPutInfo()
  50.         departments.outPutInfo()
  51.         institute.outPutInfo()
  52.         b_course.outPutInfo()
  53.         x_course.outPutInfo()
  54.       }
  55.     }
  56.     finally{
  57.       connection.close()
  58.     }
  59. }
  60. //改
  61. // 因学校安排,“张三”调到“logistics management”系(30003)。
  62.   def updata(yuJu:String):Unit= {
  63.     val updataString =yuJu
  64.     try{
  65.       val rs3 = connection.createStatement().executeUpdate(updataString)
  66.       println("更新成功")
  67.     }
  68.     finally{
  69.       connection.close()
  70.     }
  71. }
  72. //删
  73. //“杨铭”因工作调动,不在本学校,将其基本信息删除。
  74.   def deleteDb(name:String):Unit= {
  75.     val sql = "delete from teacher where name= ?"
  76.     try{
  77.       val pstm = connection.prepareStatement(sql)
  78.       pstm.setString(1,name)
  79.       println("删除成功")
  80.     }
  81.     finally{
  82.       connection.close()
  83.     }
  84.   }}

数据库实施、运行及维护

数据库实施

5.1教师数据库表

5.2学院信息数据库表

5.3系信息数据库表

5.4必修课课程表

5.5必修课授课数据库表:

5.6选修课程数据库表

5.7选修课授课数据库表

5.8学生信息数据库表

数据库运行及维护

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

驱动代码:

  1. val Opdata = new OperationData
  2. //    增:向“教师表”中增添 工号为:10000010,姓名为:杨铭,性别:女,身份证号:411527198903025011,家庭住址:新5,
  3. //       联系方式:13782939067,政治面貌:党员,婚姻状况:否,所在系id:30001
  4.     Opdata.insert(
  5.       """insert into teacher
  6.         |values('1000010','YangMing','female','411527198903025011','new department5',13782939067,'member of Communist Party of China','no','30001');
  7.         |""".stripMargin)

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

驱动代码:

  1. //    查询:查询李四所有个人信息
  2.     Opdata.select(yuJu =
  3.       """select *
  4.         |from teacher,departments,institute,b_course,b_shouke,x_course,x_shouke
  5.         |where teacher.name='LiSi' and
  6.         |teacher.id_SuozaiXi = departments.id_Xi and
  7.         |departments.id_SuoShuXueyuan = institute.id_Xueyuan and
  8.         |b_shouke.b_id = teacher.id and
  9.         |b_shouke.b_id_class = b_course.id_b_class and
  10.         |x_shouke.x_id = teacher.id and
  11.         |x_shouke.x_id_class = x_course.id_x_class;
  12.         |""".stripMargin)

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

驱动代码:

Opdata.deleteDb("YangMing")

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

驱动代码:

  1. //    改:因学校安排,“张三”调到“logistics management”系(30003)。
  2.     Opdata.updata(yuJu="""update teacher set id_SuozaiXi=30003
  3.                          |where name = "ZhangSan";
  4.                          |""".stripMargin)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/540690
推荐阅读
相关标签
  

闽ICP备14008679号