




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数据库课程设计报告-教学管理系统摘要:本报告详细介绍了教学管理系统的数据库设计与实现。该系统旨在提高学校教学管理的效率,实现对学生信息、教师信息、课程信息、成绩信息等的有效管理。通过需求分析、数据库设计、功能模块实现等步骤,完成了一个功能较为完善的教学管理系统数据库。关键词:教学管理系统;数据库设计;课程设计
一、引言随着教育信息化的不断发展,教学管理系统在学校管理中发挥着越来越重要的作用。一个高效的教学管理系统能够方便地管理学生、教师、课程以及成绩等信息,为教学决策提供有力支持。本课程设计旨在开发一个教学管理系统的数据库,以满足学校教学管理的实际需求。
二、需求分析2.1用户需求1.学生管理:能够存储学生的基本信息,包括学号、姓名、性别、出生日期、专业等,并且可以方便地进行查询、修改和删除操作。2.教师管理:记录教师的基本信息,如教师编号、姓名、性别、职称、所在院系等,同时支持对教师信息的维护。3.课程管理:管理课程信息,包括课程编号、课程名称、学分、授课教师编号等,能够进行课程的添加、修改和删除。4.成绩管理:记录学生的课程成绩,包括学号、课程编号、成绩等,方便进行成绩的录入、查询和统计。
2.2功能需求1.信息查询功能:可以根据不同条件查询学生、教师、课程和成绩信息。例如,按学号查询学生信息,按课程编号查询课程信息等。2.信息修改功能:能够对学生、教师、课程的相关信息进行修改。3.信息删除功能:可以删除不再需要的学生、教师、课程记录。4.成绩录入与统计功能:方便教师录入学生成绩,并能够对成绩进行统计分析,如平均分、最高分、最低分等。
三、数据库设计3.1概念结构设计通过对需求分析的结果进行抽象,得到如下的ER图:1.学生实体:包括学号、姓名、性别、出生日期、专业等属性,具有唯一的学号作为主键。2.教师实体:包含教师编号、姓名、性别、职称、所在院系等属性,教师编号为主键。3.课程实体:有课程编号、课程名称、学分、授课教师编号等属性,课程编号是主键,授课教师编号为外键关联教师实体。4.成绩实体:由学号、课程编号、成绩组成,学号和课程编号共同作为主键,分别为外键关联学生实体和课程实体。
学生实体与课程实体通过成绩实体建立多对多的联系,即一个学生可以选修多门课程,一门课程可以被多个学生选修。教师实体与课程实体是一对多的联系,即一个教师可以教授多门课程。
3.2逻辑结构设计根据ER图,将其转换为关系模型:1.学生表(Student)|字段名|数据类型|长度|是否主键|描述||||||||Sno|Char|10|是|学号||Sname|Varchar|20|否|姓名||Ssex|Char|2|否|性别||Sbirthday|Date|否|出生日期||Sdept|Varchar|20|否|专业|
2.教师表(Teacher)|字段名|数据类型|长度|是否主键|描述||||||||Tno|Char|8|是|教师编号||Tname|Varchar|20|否|姓名||Tsex|Char|2|否|性别||Ttitle|Varchar|10|否|职称||Tdept|Varchar|20|否|所在院系|
3.课程表(Course)|字段名|数据类型|长度|是否主键|描述||||||||Cno|Char|6|是|课程编号||Cname|Varchar|20|否|课程名称||Ccredit|Smallint|否|学分||Tno|Char|8|否|授课教师编号(外键)|
4.成绩表(Score)|字段名|数据类型|长度|是否主键|描述||||||||Sno|Char|10|是|学号(外键)||Cno|Char|6|是|课程编号(外键)||Grade|Smallint|否|成绩|
3.3物理结构设计1.存储结构:采用关系型数据库管理系统(如MySQL),每个表对应一个数据库文件。2.索引设计:为提高查询效率,在学生表的学号字段、教师表的教师编号字段、课程表的课程编号字段以及成绩表的学号和课程编号组合字段上创建索引。
四、功能模块实现4.1数据库连接模块使用MySQL提供的JDBC驱动程序来建立与数据库的连接。在Java代码中,通过以下方式实现:```javaimportjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.SQLException;
publicclassDBConnection{privatestaticfinalStringURL="jdbc:mysql://localhost:3306/teaching_management";privatestaticfinalStringUSER="root";privatestaticfinalStringPASSWORD="123456";
publicstaticConnectiongetConnection()throwsSQLException{returnDriverManager.getConnection(URL,USER,PASSWORD);}}```
4.2学生信息管理模块1.添加学生信息```javaimportjava.sql.Connection;importjava.sql.PreparedStatement;importjava.sql.SQLException;
publicclassStudentDAO{publicstaticvoidaddStudent(Studentstudent)throwsSQLException{Stringsql="INSERTINTOStudent(Sno,Sname,Ssex,Sbirthday,Sdept)VALUES(?,?,?,?,?)";try(Connectionconn=DBConnection.getConnection();PreparedStatementpstmt=conn.prepareStatement(sql)){pstmt.setString(1,student.getSno());pstmt.setString(2,student.getSname());pstmt.setString(3,student.getSsex());pstmt.setDate(4,newjava.sql.Date(student.getSbirthday().getTime()));pstmt.setString(5,student.getSdept());pstmt.executeUpdate();}}}```2.查询学生信息```javaimportjava.sql.Connection;importjava.sql.PreparedStatement;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.util.ArrayList;importjava.util.List;
publicclassStudentDAO{publicstaticList<Student>queryStudents(Stringcondition)throwsSQLException{List<Student>students=newArrayList<>();Stringsql="SELECT*FROMStudent";if(condition!=null&&!condition.isEmpty()){sql+="WHERE"+condition;}try(Connectionconn=DBConnection.getConnection();PreparedStatementpstmt=conn.prepareStatement(sql);ResultSetrs=pstmt.executeQuery()){while(rs.next()){Studentstudent=newStudent();student.setSno(rs.getString("Sno"));student.setSname(rs.getString("Sname"));student.setSsex(rs.getString("Ssex"));student.setSbirthday(rs.getDate("Sbirthday"));student.setSdept(rs.getString("Sdept"));students.add(student);}}returnstudents;}}```3.修改学生信息```javaimportjava.sql.Connection;importjava.sql.PreparedStatement;importjava.sql.SQLException;
publicclassStudentDAO{publicstaticvoidupdateStudent(Studentstudent)throwsSQLException{Stringsql="UPDATEStudentSETSname=?,Ssex=?,Sbirthday=?,Sdept=?WHERESno=?";try(Connectionconn=DBConnection.getConnection();PreparedStatementpstmt=conn.prepareStatement(sql)){pstmt.setString(1,student.getSname());pstmt.setString(2,student.getSsex());pstmt.setDate(3,newjava.sql.Date(student.getSbirthday().getTime()));pstmt.setString(4,student.getSdept());pstmt.setString(5,student.getSno());pstmt.executeUpdate();}}}```4.删除学生信息```javaimportjava.sql.Connection;importjava.sql.PreparedStatement;importjava.sql.SQLException;
publicclassStudentDAO{publicstaticvoiddeleteStudent(Stringsno)throwsSQLException{Stringsql="DELETEFROMStudentWHERESno=?";try(Connectionconn=DBConnection.getConnection();PreparedStatementpstmt=conn.prepareStatement(sql)){pstmt.setString(1,sno);pstmt.executeUpdate();}}}```
4.3教师信息管理模块与学生信息管理模块类似,分别实现教师信息的添加、查询、修改和删除功能。
4.4课程信息管理模块1.添加课程信息```javaimportjava.sql.Connection;importjava.sql.PreparedStatement;importjava.sql.SQLException;
publicclassCourseDAO{publicstaticvoidaddCourse(Coursecourse)throwsSQLException{Stringsql="INSERTINTOCourse(Cno,Cname,Ccredit,Tno)VALUES(?,?,?,?)";try(Connectionconn=DBConnection.getConnection();PreparedStatementpstmt=conn.prepareStatement(sql)){pstmt.setString(1,course.getCno());pstmt.setString(2,course.getCname());pstmt.setInt(3,course.getCcredit());pstmt.setString(4,course.getTno());pstmt.executeUpdate();}}}```2.查询课程信息```javaimportjava.sql.Connection;importjava.sql.PreparedStatement;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.util.ArrayList;importjava.util.List;
publicclassCourseDAO{publicstaticList<Course>queryCourses(Stringcondition)throwsSQLException{List<Course>courses=newArrayList<>();Stringsql="SELECT*FROMCourse";if(condition!=null&&!condition.isEmpty()){sql+="WHERE"+condition;}try(Connectionconn=DBConnection.getConnection();PreparedStatementpstmt=conn.prepareStatement(sql);ResultSetrs=pstmt.executeQuery()){while(rs.next()){Coursecourse=newCourse();course.setCno(rs.getString("Cno"));course.setCname(rs.getString("Cname"));course.setCcredit(rs.getInt("Ccredit"));course.setTno(rs.getString("Tno"));courses.add(course);}}returncourses;}}```3.修改课程信息```javaimportjava.sql.Connection;importjava.sql.PreparedStatement;importjava.sql.SQLException;
publicclassCourseDAO{publicstaticvoidupdateCourse(Coursecourse)throwsSQLException{Stringsql="UPDATECourseSETCname=?,Ccredit=?,Tno=?WHERECno=?";try(Connectionconn=DBConnection.getConnection();PreparedStatementpstmt=conn.prepareStatement(sql)){pstmt.setString(1,course.getCname());pstmt.setInt(2,course.getCcredit());pstmt.setString(3,course.getTno());pstmt.setString(4,course.getCno());pstmt.executeUpdate();}}}```4.删除课程信息```javaimportjava.sql.Connection;importjava.sql.PreparedStatement;importjava.sql.SQLException;
publicclassCourseDAO{publicstaticvoiddeleteCourse(Stringcno)throwsSQLException{Stringsql="DELETEFROMCourseWHERECno=?";try(Connectionconn=DBConnection.getConnection();PreparedStatementpstmt=conn.prepareStatement(sql)){pstmt.setString(1,cno);pstmt.executeUpdate();}}}```
4.5成绩信息管理模块1.录入成绩```javaimportjava.sql.Connection;importjava.sql.PreparedStatement;importjava.sql.SQLException;
publicclassScoreDAO{publicstaticvoidaddScore(Scorescore)throwsSQLException{Stringsql="INSERTINTOScore(Sno,Cno,Grade)VALUES(?,?,?)";try(Connectionconn=DBConnection.getConnection();PreparedStatementpstmt=conn.prepareStatement(sql)){pstmt.setString(1,score.getSno());pstmt.setString(2,score.getCno());pstmt.setInt(3,score.getGrade());pstmt.executeUpdate();}}}```2.查询成绩```javaimportjava.sql.Connection;importjava.sql.PreparedStatement;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.util.ArrayList;importjava.util.List;
publicclassScoreDAO{publicstaticList<Score>queryScores(Stringcondition)throwsSQLException{List<Score>scores=newArrayList<>();Stringsql="SELECT*FROMScore";if(condition!=null&&!condition.isEmpty()){sql+="WHERE"+condition;}try(Connectionconn=DBConnection.getConnection();PreparedStatementpstmt=conn.prepareStatement(sql);ResultSetrs=pstmt.executeQuery()){while(rs.next()){Scorescore=newScore();score.setSno(rs.getString("Sno"));score.setCno(rs.getString("Cno"));score.setGrade(rs.getInt("Grade"));scores.add(score);}}returnscores;}}```3.成绩统计```javaimportjava.sql.Connection;importjava.sql.PreparedStatement;importjava.sql.ResultSet;importjava.sql.SQLException;
publicclassScoreStatistics{publicstaticdoublegetAverageScore(Stringcno)throwsSQLException{doubleaverage=0.0;Stringsql="SELECTAVG(Grade)FROMScoreWHERECno=?";try(Connectionconn=DBConnection.getConnection();PreparedStatementpstmt=conn.prepareStatement(sql)){pstmt.setString(1,cno);try(ResultSetrs=pstmt.executeQuery()){if(rs.next()){average=rs.getDouble(1);}}}returnaverage;}
publicstaticintgetMaxScore(Stringcno)throwsSQLException{intmax=0;Stringsql="SELECTMAX(Grade)FROMScoreWHERECno=?";try(Connectionconn=DBConnection.getConnection();PreparedStatementpstmt=conn.prepareStatement(sql)){pstmt.setString(1,cno);try(ResultSetrs=pstmt.exe
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 广告场地服务合同范本
- 工程机器转让合同范本
- 辽宁省葫芦岛市2025届九年级上学期期末数学试卷(含答案)
- 物流房租门面合同范本
- 私营公司工程合同范本
- 酒店管理转让合同范本
- 锅炉安装合同范本
- 第08讲 一元一次不等式(组)的解法及其应用(4考点+19题型)2025年中考数学一轮复习讲练测(广东专用)
- 2025典当行借款合同书
- 预应力混凝土结构课程设计知到课后答案智慧树章节测试答案2025年春青岛理工大学
- 2025年中国工业X射线检测设备行业市场集中度、企业竞争格局分析报告-智研咨询发布
- 职工维权知识培训课件
- 2024银行春招招聘解析试题及答案
- 2025陕西核工业工程勘察院有限公司招聘21人笔试参考题库附带答案详解
- 2024中国核工业集团公司招聘(300人)笔试参考题库附带答案详解
- 第15课《青春之光》课件-2024-2025学年统编版语文七年级下册
- 初中网络安全教育
- 浙江省杭州市金丽衢十二校2024-2025学年高三下学期(3月)第二次联考数学试题 含解析
- 直流斩波电路-升压斩波电路(电力电子技术课件)
- 2024年上海杨浦区社区工作者笔试真题
- 2025年1月浙江省高考物理试卷(含答案)
评论
0/150
提交评论